如何在凿子中打印或打印?

时间:2018-11-26 13:26:54

标签: chisel

我正在尝试执行以下代码:

val num1 = 10.U
printf(p"num1 = $num1")

在示例类中运行此代码时,出现以下错误。

[error] (run-main-8) chisel3.internal.ChiselException: Error: No implicit clock and reset.
[error] chisel3.internal.ChiselException: Error: No implicit clock and reset.

我正在使用test:runMain <package.class>

运行代码

我尝试了https://github.com/freechipsproject/chisel3/wiki/Printing-in-Chisel中的其他选项 使用printf,但没有一个起作用。

还尝试了C样式的打印printf("num1 = %d",num1),这会导致相同的错误。

2 个答案:

答案 0 :(得分:1)

以下应该起作用。 withClockAndReset提供了 触发printf所需的时钟。这里有些挑剔,因为withClock或withClock和嵌套的withReset无法使用。

class Hello extends RawModule {
  val io = IO(new Bundle {
    val out = Output(UInt(8.W))
    val myClock = Input(Clock())
    val myReset = Input(Bool())
  })

  withClockAndReset(io.myClock, io.myReset) {
      printf("out is %d\n", io.out)
  }
  io.out := 42.U
}

答案 1 :(得分:0)

有一种解决方法。借助包装在peek()中的println()函数,可以从Chisel PeekPokeTester打印UInt类型的信号。

println(peek(module_name.io.signal_name).toString(16))

还没有找到直接打印实际信号module_name.io.signal_name的方法,UInt类型甚至没有toString函数,所以我不确定是否可以做到这一点。