chisel - 什么机制可以在 chisel3 详细说明中显示组件 ID
问题描述
Chisel 引发异常,并带有详细说明错误消息。下面以我的代码结果为例。
chisel3.core.Binding$ExpectedHardwareException: data to be connected 'chisel3.core.Bool@81' must be hardware, not a bare Chisel type. Perhaps you forgot to wrap it in Wire(_) or IO(_)?
这个异常消息很有趣,因为81
后面chisel3.core.Bool@
看起来像 ID,而不是哈希码。实际上,数据类型扩展HasId
了具有_id
字段的特征,并且
_id
字段似乎为每个组件生成了一个唯一的 ID。
我认为数据类型会覆盖toString
以生成具有 的字符串type@ID
,但它不会覆盖。这就是为什么$node
在下面的代码中不能使用 ID。
throw Binding.ExpectedHardwareException(s"$prefix'$node' must be hardware, " +
"not a bare Chisel type. Perhaps you forgot to wrap it in Wire(_) or IO(_)?")
代替toString
,toNamed
方法存在于数据中。但是,调用此方法似乎是为了生成 firrtl 代码,而不是将组件转换为字符串。
为什么Data type可以显示它的ID?
如果不是ID,而是hashcode,这个问题是我的误解。
解决方案
我认为你应该看看Chisel PR #985。它改变了 Data 的 toString 方法的实现方式。我不确定它是否直接回答了您的问题,但这可能会使错误的含义和位置更清楚。如果不是,您应该对此发表评论。
推荐阅读
- python - ""TypeError: 'Axes3D' 对象不可下标"" 用于来自数据的 3d 动画
- ffmpeg - 在 ffmpeg 命令行中,如何在编码前显示所有过滤器设置及其参数?
- ampl - 有没有办法让 AMPL 做更少的迭代?我希望我的代码在某个点停止运行(在最终优化之前,但有些完成))
- reactjs - 导航时未执行脚本,仅在我刷新页面时才有效
- python - 使用正则表达式宣布函数参数?
- java - Maven 在 jar 或 war 文件名中编译版本
- ruby-on-rails - 找不到stimulus_reflex NPM 包| “npm”通过“npm install -D webpack-cli”安装 CLI
- machine-learning - 梯度下降的波动
- c++ - 从键盘输入并使用 GLUT 增加/减少形状的边
- mitmproxy - 如何在 mitmproxy 上设置节流?