我想使用Chisel从我拥有的 XML 格式的 if-then 语句树(PMML 决策树)生成电路。简单的拆分像
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
'sinputs
和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
拆分和连接的中间节点,我可以从to或 from to:=
遵循这些节点。但是,所有这些调用都返回空的 ArrayBuffers。当我在测试框架中运行类似的电路时,它的评估结果是正确的,所以当我在 REPL 中检查它时(或者我正在寻找),大概测试框架正在调用一些函数来构建尚未调用的图在错误的领域)。我需要做什么才能查看图表数据?x1
y
y
x1
我本可以问是否有任何工具可以从 Chisel 接线或 Verilog 输出生成示意图。但是,我更愿意亲自处理数据,以便可以使用它做更多事情(生成 SVG 文件,或者将其转换为 GraphML 并使用强制导向的图形查看器......)