【发布时间】:2014-03-13 11:44:54
【问题描述】:
我想使用Chisel 从我拥有的 XML 格式 (PMML decision trees) 的 if-then 语句树生成电路。像
这样的简单拆分class Mod extends Module {
val io = new Bundle {
val x1 = UInt(INPUT, 8)
val x2 = UInt(INPUT, 8)
val choice = UInt(INPUT, 1)
val y = UInt(OUTPUT, 8)
}
when (io.choice === UInt(0)) {
io.y := io.x1
} otherwise {
io.y := io.x2
}
}
是人类可读的,任何复杂的表达式都可以在测试套件中使用特定值进行评估。但是,由于我将从大型 XML 文件以编程方式生成嵌套拆分,因此如果我可以检查由 Chisel 生成的电线树,以确保它具有相同的结构,将会有所帮助。
我原以为我可以通过Node 的inputs 和consumers 字段检查图表。使用上面的示例,我会认为
val mod = new Mod
println(mod.io.x1.inputs, mod.io.x1.consumers)
println(mod.io.y.inputs, mod.io.y.consumers)
会向我展示代表when ... otherwise 拆分和:= 连接的中间节点,我可以从x1 到y 或从y 到x1 进行跟踪。但是,所有这些调用都返回空的 ArrayBuffers。当我在测试框架中运行类似的电路时,它的评估结果是正确的,所以当我在 REPL 中检查它时,大概测试框架正在调用一些函数来构建尚未调用的图(或者我正在寻找在错误的领域)。我需要做什么才能查看图表数据?
我可能会问是否有任何工具可以从 Chisel 接线或 Verilog 输出生成示意图。但是,我更愿意亲自处理数据,以便我可以用它做更多事情(生成 SVG 文件,或者可能将其转换为 GraphML 并使用强制导向的图形查看器......)
【问题讨论】:
标签: chisel