我在设计中将Chiffre
作为故障注入的选项进行了研究,并注意到一些包含printf
的when
语句。
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]