通过解析文件为包的元素赋值
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
免责声明:以下问题将出现在 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