【问题标题】:Chisel memory write mask凿子内存写掩码
【发布时间】:2017-01-17 04:26:09
【问题描述】:

我正在尝试在凿子 3 中为 Mem 使用写入掩码,如下所示。

chipMem.write(data_idx, wdata, wmask)

我正在生成 wmask(写掩码)如下,

val wmask = write_mask.toBools

因为 write_mask 是一个 UInt 并且 write 函数需要一个 Bool 序列作为 write mask 参数。但是,这会产生以下错误。

Cannot prove that chisel3.core.UInt <:< chisel3.core.Vec[_].
[error]              chipMem.write(data_idx, wdata, wmask)
[error]                           ^
[error] one error found

我真的不明白错误消息的内容。我创建 wmask 的方式有问题吗?

【问题讨论】:

    标签: chisel


    【解决方案1】:

    编译器抱怨它无法证明 Chisel UInt 是 Chisel Vec 的子类型(因为它不是)。

    查看documentation for Mem.write,它指出“仅当内存的元素数据类型为 Vec 时才允许这样做。”这可能会更好一点,但基本上 Chisel 不假设写入掩码如何对应于数据。如果你想使用写掩码,你的 Mem 的数据类型 必须 是 Vec。另请注意,写入掩码 Vec 必须与数据类型 Vec 具有相同数量的条目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2014-12-08
      • 1970-01-01
      相关资源
      最近更新 更多