Chisel 在凿子中,如何判断模块包是否实际生成为verilog

Chisel 在凿子中,如何判断模块包是否实际生成为verilog,chisel,Chisel,在凿子中,如果我这样定义一个模块的包 class tmp extends Module{ val io = IO(new Bundle { val enable = Input(Bool()) val data = Input(UInt(4.W)) val out = Output(UInt(4.W)) val tmp = Output(UInt(32.W)) }) io.out := RegEnable(io.data, io.enable)

在凿子中,如果我这样定义一个模块的包

class tmp extends Module{
  val io  = IO(new Bundle  {
    val enable = Input(Bool())
    val data = Input(UInt(4.W))
    val out = Output(UInt(4.W))
    val tmp = Output(UInt(32.W))
  })
  io.out := RegEnable(io.data, io.enable)
  io.tmp := RegEnable(!io.data, io.enable)
}
然后我在上面的模块中调用它

class q extends Module{
  val io  = IO(new Bundle{
    val in = Input(UInt(4.W))
    val out = Output(UInt(32.W))
})
  val q = Module(new tmp)
  q.io.enable := true
  q.io.data := io.in
  io.out := q.io.out
}
tmp模块的tmp包将不会生成为verilog。
我怎么知道像tmp这样的捆绑包是在没有查看verilog的情况下生成的。

这是因为您的代码编写方式。实际上,您只是创建了另一个类来发送输入并接收tmp模块的输出。因此,凿子将tmp的输入和输出优化为一束由q模块的输入和输出引脚驱动的导线。如果您想保留tmp模块,那么我建议您不要从任何其他类别驱动模块的io引脚。相反,只要保持这种方式,一旦生成verilog,您就可以编写一个测试台来驱动tmp模块的io引脚