chisel - 如何在生成的 Verilog 中使用凿子向量中选定元素的 val 名称
问题描述
我试图在生成的 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
没有任何改善。我希望此信号具有有意义的名称的原因是出于调试目的(在功能上它是正确的)
解决方案
这是一个已知的错误,很抱歉造成混乱/挫折。忽略一些细节,Chisel 很难区分动态索引作为右手值(读取)与左手值(写入)之间的区别,这使得它很难命名。
您可以通过将动态索引的输出连接到 a 来解决此问题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
推荐阅读
- javascript - 用文件填充 FormData 对象期间的问题
- html - Angular 6 使用数据表
- conemu - 如何从命令行获取 ConEmu 选项卡索引?
- php - 从一条路线返回多个小部件,例如视图
- javascript - 在 Sanctuary 管道中间执行 Fluture 任务
- ajax - 如何在 Wordpress 中的 ajax 调用文件中使用 require
- python - 在 Python 中使用多列读取 tex 文件
- excel - 使用 plink(Putty 的命令行)的 VBA telnet - 将命令发送到 plink.exe
- scenekit - 如何将 Blender 物理动画转换为 Collada?
- java - 如何修复spring-boot中的CORS Cross Origin错误?