我有一个包含2D vec的Bundle类型:
def myBundle extends Bundle {
val v = Vec(4, Vec( 4, UInt()))
// etc ...
}
字符串
我想定义一个硬件生成函数,它对myBundle
进行操作,并返回一个myBundle
,如下所示:
def elementwise_add(x: myBundle, y: myBundle): MyBundle {
val result = new MyBundle
for(i <- 0 until 4)
for(j <- 0 until 4)
result.v(i)(j) = x.v(i)(j) + y.v(i)(j)
return result
}
型
但是,如果我定义了这个,Chisel会在编译过程中抛出一个错误:“值更新不是chisel3.Vec[chisel3.UInt]的成员,您的意思是更新了吗?“
我应该如何定义这个函数(以及其他类似的函数),以便它生成我在这里试图生成的硬件?
(Note:这里的Vec在本例中很重要,因为我希望能够用硬件信号寻址myBundle.v)
1条答案
按热度按时间avwztpqn1#
变更:
字符串
致:
型
(use chisel assign(:=)操作符而不是Scala =)并确保您使用的是Chisel 5.0或更高版本(我使用的是3.5.6),并且此代码可以按预期工作。