通过解析文件为包的元素赋值

Assigning values to the elements of a bundle by parsing a file

免责声明:以下问题将出现在 Chisel-2 语义中,因为我们的代码库仍处于过渡阶段。

我正在尝试在 Scala/Chisel 中实现一个脚本,它将从文本文件中读取一些配置数据并将其分配给适当的包。

假设捆绑包是这样的:

class b1 extends Bundle{
  e1 = UInt(width=x)
  e2 = UInt(width=y)
  e3 = new b2            // b2 is another bundle with elements f1,f2 
}

并且文本文件可以通过以下方式包含配置数据:

b1.e2    = 2
b1.e1    = 3
b1.e3.f1 = 5
b1.e3.f2 = 6

我打算逐行读取文件,用正则表达式先找到对应的bundle,再找到bundle里面的元素赋值。

为此,我需要某种束图(在本例中为 b1 和 b2)。一旦我确定了它是哪个包,那么我还需要确定我必须将值分配给哪个元素。

那么,我的问题是:

有没有办法为 Chisel 中的捆绑包获取这样的地图?

而且,有没有人尝试过做与我想要实现的类似的事情?

Bundle 有一个字段 elements returns ListMap[String, Data],其中键是字段的名称,值是 Chisel Data 元素.您不仅可以使用此映射来检查 Bundle 的字段是什么,还可以连接到其中的一些字段,例如

b1.elements("e3").elements("f1") := 5.U