如何在生成的 Verilog 中的凿子向量中使用所选元素的 val 名称
How to to use the val name of selected element in a chisel Vector in the generated Verilog
我试图在生成的 Verilog 中保留信号的 Val 名称。 Val 是从凿子 Vector(Vec) 中动态选择的元素。下面是我的测试用例代码:
val myVec = Reg(Vec(10,UInt(32.W)))
val selected = myVec(io.sel).suggestedName("selected")
我可以在生成的 verilog 中看到从 myVec 中获取选择元素的 Mux。但是,它有一个随机名称 _T 的东西。 suggestName()
没有帮助。我也试过 @chiselName
没有任何改进。
我希望这个信号有一个有意义的名字的原因是为了调试目的(功能上是正确的)
这是一个已知错误,对 confusion/frustration 表示抱歉。掩盖一些细节,Chisel 很难区分动态索引作为 right-hand 值(读取)与 left-hand 值(写入)之间的区别,这使得它很难命名。
您可以通过将动态索引的输出连接到 Wire
:
来解决这个问题
val myVec = Reg(Vec(10,UInt(32.W)))
val selected = WireInit(myVec(io.sel))
Wire
将通过正常机制命名,因此 @chiselName
、suggestName
或标准反射命名将起作用。
使用 Chisel v3.3.2 的可执行示例:https://scastie.scala-lang.org/UWYCtq37ReaVcRrNBxRlOA
我试图在生成的 Verilog 中保留信号的 Val 名称。 Val 是从凿子 Vector(Vec) 中动态选择的元素。下面是我的测试用例代码:
val myVec = Reg(Vec(10,UInt(32.W)))
val selected = myVec(io.sel).suggestedName("selected")
我可以在生成的 verilog 中看到从 myVec 中获取选择元素的 Mux。但是,它有一个随机名称 _T 的东西。 suggestName()
没有帮助。我也试过 @chiselName
没有任何改进。
我希望这个信号有一个有意义的名字的原因是为了调试目的(功能上是正确的)
这是一个已知错误,对 confusion/frustration 表示抱歉。掩盖一些细节,Chisel 很难区分动态索引作为 right-hand 值(读取)与 left-hand 值(写入)之间的区别,这使得它很难命名。
您可以通过将动态索引的输出连接到 Wire
:
val myVec = Reg(Vec(10,UInt(32.W)))
val selected = WireInit(myVec(io.sel))
Wire
将通过正常机制命名,因此 @chiselName
、suggestName
或标准反射命名将起作用。
使用 Chisel v3.3.2 的可执行示例:https://scastie.scala-lang.org/UWYCtq37ReaVcRrNBxRlOA