將復雜的記錄(基于鍵值對的捆綁)作為 UInt 傳遞并使用 asUInt() 和 asTypeOf(...) 將 UInt 轉換回記錄時,我得到了錯誤的“CombLoopException”。
在不經過UInt轉換步驟直接連接兩個Record時,不會出現CombLoopException。我花了幾天時間試圖解決/重現這個問題。這就是為什么我很確定應該沒有 CombLoopException。
不幸的是,我無法提供小代碼片段來重現該錯誤,因為我正在對 Rocket Chip Generator 進行自定義修改,并且該問題僅在對 Bundle 進行復雜修改時出現。
我的問題:如何使用“--no-check-comb-loops”選項來避免 CombLoopException?有沒有辦法在 build.sbt 中添加這個選項?
如果想要幫助解決這個罕見的問題,我還想詳細描述這個特殊情況: 禁用檢查組合回圈的 FIRRTL pass
uj5u.com熱心網友回復:
這顯然取決于您的特定代碼,但我仍然建議盡量避免創建錯誤的組合回圈。這很可能是一個錯誤的回圈,但像 Verilator 這樣的工具也可能會遇到這種情況。
話雖如此,您可以通過傳遞--no-check-comb-loops到編譯的 FIRRTL 步驟(也稱為 Verilog 生成步驟)來禁用檢查。在rocket-chip中,這取決于您正在執行的模擬目錄,但在vsim它是here,在模擬器中它是here。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/450952.html
