在凿子中,如果我这样定义一个模块的捆绑包。
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。 我怎么知道不查看verilog就不会生成像tmp这样的包。
答案 0 :(得分:1)
这是因为编写代码的方式。您实际上只是创建了另一个类来发送输入和接收tmp模块的输出。因此,Chisel将tmp的输入和输出优化为一堆由q模块的输入和输出引脚驱动的电线。如果您想保留tmp模块,那么我建议您不要驱动任何其他类的模块的io引脚。而是保持这种方式,一旦生成Verilog,您就可以编写一个测试平台来驱动tmp模块的io引脚。