2017-02-24 10 views
0

我需要在ROCKET-CHIP項目中獨立實例化最新版本的ICache。我能夠使用6個月的版本來測試這個實例化。不過,我面臨着其「MEM」端口的麻煩在最近版本:TLClientNode連接

val node = TLClientNode(TLClientParameters(sourceId = IdRange(0,1))) 
..... 
val mem = outer.node.bundleOut 

根據我的瞭解,火箭芯片項目開始使用特殊類型的節點,其中兩個源宿節點應該連接上一個使用'TLXbar'類的酒吧。我試圖遵循http://stackissue.com/ucb-bar/rocket-chip/tilelink2-245.html中的代碼,但它似乎已經過時。任何人都可以指向我如何連接此端口?

回答

1

最近,我成功地創建一個平凡TileLink2節點(只是路過的輸入到輸出有一些掩模)和l1backend.nodeTileNetwork.masterNodes.head之間插入它。所以我認爲我的經驗可能會有所幫助。

火箭芯片的diplomacy包擴展鑿子的Module層次結構。它主要由兩部分組成:LazyModuleLazyModuleImp,其中LazyModuleImp是鑿子世界真正的Module

節點總是在LazyModule中創建,而node.bundleIn/Out應在LazyModuleImpl內引用。我們應該使用LazyModule中的節點通過:=互相連接。

另一件可能有用的事情是,在LazyModuleImp的內部,我們只能在來自直接屬於對應的LazyModule的節點的IO捆綁中引用bundleIn/Out

例如,如果您有一個包含節點的XXXCrossing的子延遲模塊。您最好不要將其bundleIn/Out用作您當前的懶惰模塊的IO捆綁軟件。否則,鑿子代碼可能會成功編譯,但firrtl結果包含未聲明的符號。