【发布时间】:2019-01-23 02:15:53
【问题描述】:
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,而不是哈希码。
实际上,数据类型扩展了具有_id 字段的HasId 特征,并且
_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(_)?")
Data 中存在 toNamed 方法而不是 toString。但是,调用此方法似乎是为了生成 firrtl 代码,而不是将组件转换为字符串。
为什么Data type可以显示它的ID?
如果不是ID,而是hashcode,这个问题是我的误解。
【问题讨论】:
标签: chisel