源自:微信公眾號 「數字晶元實驗室」
即便是功能模擬相同的RTL代碼,不同的代碼風格也會得出不同的綜合結果。我們不能僅僅依賴於綜合工具來fix代碼風格糟糕的設計!
下面針對Design Compiler邏輯綜合工具談談代碼風格:
在上面的演算法中,在for循環中執行「ADDR = ADDR+ OFFSET[I]」,因此是加法器邏輯重複8次! 此外,由於for循環以IRQ的LSB開始,需要標誌附加邏輯。由於IRQ輸入事先不知道,所以必須使用8個加法器構建的硬體才能處理任何情況的輸入。
下面是部分verilog代碼和模擬綜合結果。可見,從input到output路徑,延時0.24ns,面積消耗55.74um2
我們對演算法進行優化:
在for循環之外執行「ADDR = BASE_ADDR + TEMP_OFFSET 」可以節省7個加法器的面積和延遲! 從MSB而不是LSB開始循環,利用了IF語句的優先順序特性,進一步消除DONE標誌相關的附加邏輯。
也就是說,假設這個模塊的輸入和輸出都被寄存器鎖存。性能會提高100%,硬體開銷降低12.68%
伴隨著數字晶元設計工具逐漸智能化和自動化的趨勢,作為一個IC Designer,又該如何適應技術發展,而不被工具代替?
最後,祝願大家都不會被 不刷知乎抖音,不玩農藥吃雞,高效率低成本的智能化EDA工具替代!
?數字晶元實驗室
願陪你走過數字IC學習中