chisel - chisel3的printf在模拟发出的verilog时是否生成终端输出?

标签 chisel

我正在调查Chiffre作为我设计中错误注入(inject)的一个选项,并注意到一些when带有 printf 的语句在他们之中。

 when (enabled && RegNext(!enabled)) {
    printf(s"""|[info] $name enabled
               |[info]   - seed: 0x%x
               |[info]   - difficulty: 0x%x
               |""".stripMargin, seed, difficulty)
  }

  when (!enabled && RegNext(enabled)) {
    printf(s"[info] $name disabled\n")
  }

我发现这有点奇怪,所以开始调查。到目前为止,我知道chisel3有一个printf函数,文档称它“在模拟中打印一条消息”。这是否适用于 verilog 模拟、scalaland 模拟或两者?如果我使用chisel3的printf这会导致 $display verilog 中的语句?

最佳答案

(非常令人兴奋的)答案是肯定的。虽然不是 $display 语句,但生成的 verilog 包含 $fwrite

此处 $fwrite 的 Scastie 示例 https://scastie.scala-lang.org/Hajn4b1sTDmcxk5sBHw7pQ

[在某个时候我会学习新的 firrtl 注释来禁用 rand]

关于chisel - chisel3的printf在模拟发出的verilog时是否生成终端输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70355312/

相关文章:

Chisel:嵌套向量中丢失的解耦方向性

scala - 是否有一个如何从 Chisel3 模块生成 verilog 的简单示例?

chisel - 检索 RegInit 的重置值

chisel - 定义 IO 时如何创建向量的向量

scala - 为什么 chisel UInt(32.W) 不能取 bit[32] 恰好为 1 的无符号数?

chisel - 当设计中有未连接的 IO 时收到警告

chisel - 使用动态索引时如何显示我的线路名称?

verilog - 如何在Chisel3中进行门级仿真?

chisel - 如何做一个模块向量?

scala - 如何在 Chisel 中将 Seq 与 Cat 一起使用?