chisel3 的 printf 在模拟发出的 verilog 时会生成终端输出吗?



我在设计中将Chiffre作为故障注入的选项进行了研究,并注意到一些包含printfwhen语句。

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 disabledn")
}

我觉得这有点奇怪,所以开始调查。到目前为止,我知道conging3有一个printf函数,文档中说它";在模拟中打印消息"这适用于verilog模拟、scalaland模拟还是两者都适用?如果我使用了conging3的printf,这会在verilog中产生$display语句吗?

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

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

[在某个时候,我将学习新的firrtl注释以禁用rand]

最新更新