我正在调查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/