在 CHISEL 中打印 UInt 和 SInt 值

Printing UInt and SInt values in CHISEL

是否可以在 CHISEL 中打印 UInt 和 SInt 值?

我在模块中有以下代码。

  val foo = 0.S(2.W)
  var min : SInt = -2.S 
  println(s"DEEEEBUG Values of foo: $foo min: ${min.toString()}")
  min= min + 1.S
  println(s"min: ${min.toString()}") 

但是最后一行没有打印出正确的最小值。这是输出

DEEEEBUG Values of foo: SInt<2>(0) max: SInt<2>(-2)
min: SInt<2>(OpResult in TwoLevelBpred)

加完后如何打印min的值?

简单的回答是你应该这样做。

class MyCircuit extends MultiIOModule {
  val foo = 0.S(2.W)
  var min : SInt = -2.S
  printf(s"DEEEEBUG Values of foo: %d min: %d\n", foo, min)
  val sum = min + 1.S
  printf(s"sum: %d\n", sum) 
}

Chisel 是一种电路发生器。当您的代码被编译并且 运行 时,电路就会构建。 Println 是仅在电路构造期间发生的 scala 构造。构建的电路必须由某种模拟器执行。 Printf 可用于在仿真期间从电路打印值。我建议您通读 Chisel Bootcamp 以了解有关凿子工作原理的更多信息。

我在您的示例中引入了新的 variable/wire 总和,因为 min = min + 1.S 与您在普通软件程序中所期望的含义不同。再次检查训练营