我想使用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中檢查它時(或者我正在尋找在錯誤的領域)。我需要做什麼來查看圖表數據?
我可能問過是否有任何工具可以用鑿子接線或Verilog輸出生成原理圖。但是,我更願意親手參與數據本身,以便我可以做更多工作(生成SVG文件,或者將其轉換爲GraphML並使用強制指定圖形查看器...)