在 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
与您在普通软件程序中所期望的含义不同。再次检查训练营
是否可以在 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
与您在普通软件程序中所期望的含义不同。再次检查训练营