2014-02-14 56 views
0

我想使用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生成的導線樹,以確保它具有相同的結構,將會有所幫助。

我原以爲我可以通過Nodeinputsconsumers字段檢查圖形。使用上面的例子,我會想到

val mod = new Mod 
println(mod.io.x1.inputs, mod.io.x1.consumers) 
println(mod.io.y.inputs, mod.io.y.consumers) 

會顯示我表示when ... otherwise分裂和:=連接,這我可以遵循從x1y或從yx1中間節點。但是,所有這些調用都會返回空ArrayBuffers。當我在測試框架中運行類似的電路時,它的評估結果是正確的,所以大概測試框架調用了一些函數來構建尚未被調用的圖形,當我在REPL中檢查它時(或者我正在尋找在錯誤的領域)。我需要做什麼來查看圖表數據?

我可能問過是否有任何工具可以用鑿子接線或Verilog輸出生成原理圖。但是,我更願意親手參與數據本身,以便我可以做更多工作(生成SVG文件,或者將其轉換爲GraphML並使用強制指定圖形查看器...)

回答

0

I相信有一個可視化後端(「--backend dot」),它將生成電線原理圖的pdf。你可以試試看看它如何處理圖表,甚至可以將它擴展爲自己的用途。

我不知道鑿子目前有你的要求。或者至少,它可能需要在後端大量戳動(從hcl.scala開始)。在TODO列表上是讓鑿子吐出一個IR,然後可以根據需要對其進行分析和轉換,但那還沒有。

對於短期,我建議吐出Verilog代碼並使用您最喜歡的工具來分析結果Verilog。