chisel - 在chisel中,如何判断一个模块的Bundle是否实际生成为verilog
问题描述
在凿子中,如果我像这样定义模块的捆绑包。
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 这样的包。
解决方案
这是因为您的代码的编写方式。您实际上只是创建了另一个类来发送输入并接收 tmp 模块的输出。因此,Chisel 将 tmp 的输入和输出优化为一组由 q 模块的输入和输出引脚驱动的线。如果您想保留 tmp 模块,那么我建议您不要从任何其他类驱动模块的 io 引脚。而是保持这种方式,一旦生成了verilog,您就可以编写一个测试平台来驱动tmp模块的io引脚。
推荐阅读
- visual-studio - Xamarin.Forms 以百分比形式编辑小数
- python - 在python / pandas数据框中垂直计算日期之间的时间间隔
- prolog - 我怎样才能使这更合乎逻辑?
- python - Py 3.8.2 点缺失
- javascript - 如何知道所选单元格是否是 CSS 网格中的矩形?
- swiftui - SwiftUI - 搜索栏
- xforms - XForms 是如何使用的?
- genexus - 为什么无法从 Genexus .Net 使用某些外部 REST API?
- css - 在材质 UI 中,如何将 Button 置于 Grid 项目的中间?
- javascript - 检查 TypeScript 中的全局或窗口对象上是否存在属性