邏輯綜合 優化電路

2021-10-13 02:59:58 字數 2029 閱讀 7915

對進行時序路徑、工作環境、設計規則等進行約束完成之後,dc就可以進行綜合、優化時序了,dc在優化過程中主要的策略將在下面進行說明。然而,當普通模式下不能進行優化的,就需要我們進行編寫指令碼來改進dc的優化來達到時序要求。

dc進行優化的目的是權衡timing和area約束,滿足使用者對功能、時序和面積的要求。

dc優化有很多策略,包括對資料通道的優化,對狀態機的優化,對布林邏輯的優化等。

預設情況下,dc根據不同的時鐘劃分path group。但如果設計中存在複雜的時鐘,複雜的時序要求或者複雜的約束,使用者可以將所關心的幾條關鍵路徑劃分為乙個path group,指定dc專注於改組路徑的優化。也可以對不同的路徑組設定不同的權重,權重值從0到100。

預設情況下,dc只優化關鍵路徑,即負slack最差的路徑,如果在關鍵路徑附近指定乙個範圍,那麼dc會優化指定範圍內的路徑。由於優化的路徑越多,dc執行時間越長。一般範圍設定為時鐘週期的10%。

high-effort compile能夠讓dc更加努力地達到所約束地目標,該措施在關鍵路徑上進行重新綜合,同時對關鍵路徑周圍地邏輯進行了restructure和remap。

high-effort指令有兩種:

此外,incremental指令也可以提高電路優化的效能。如果電路在compile之後不滿足約束,通過incremental也許能夠達到要求的結果。incremental指令只進行門級的優化,而不是邏輯功能級,會導致大量的計算時間,但是對於將最差的負slack減為0,這是最有效的辦法。 

為了在使用incremental指令時,減少dc的運算時間,可以將滿足時序要求的模組設定為dont_touch屬性。

dont_touch noncritical_blocks

對於有很多違例邏輯模組的設計,通常incremental最有效。

ungrouping 取消設計中的層次,移除層次的邊界,並且允許dc ultra通過減少邏輯級數改進時序,以及用過共享資源減小面積。常見指令如下:compile_ultra,compile -auto_ungroup

compile會提供兩種策略,包括:delay-based auto-ungrouping, area-based auto-ungrouping。

如果在邏輯綜合過程中發現設計的流水線劃分不平衡,就可以使用retiming策略,在時序路徑上前後移動暫存器,以提高電路的時序效能

由上圖所示,retiming可能會對面積產生影響,則如果有違例的路徑,則調整暫存器的位置;如果沒有違例的路徑,則可以用來減少暫存器的數量。

dc在移動暫存器的優化中,只能對有相同約束的暫存器進行調整,如果兩個暫存器約束不同,則不能一起移動。移動後的暫存器在網表中的名字通常帶有乙個r的字首和乙個系列號。

retiming的策略不能和compile_ultra的以下option一起使用:-incremental -top -only_design_rule

組合邏輯電路 時序邏輯電路

邏輯電路根據是否包含記憶元件,分為組合邏輯電路和時序邏輯電路。組合邏輯電路不包含記憶元件,某時間點的輸出 邏輯函式值 僅取決於當時的輸入。含有記憶元件的邏輯電路被稱為時序邏輯電路。在組合邏輯電路中,當前的輸出只取決於當前的輸入。而在時序邏輯電路中,只知道當前的輸入並不足以確定當前的輸出。也就是說,時...

組合邏輯電路和時序邏輯電路

組合邏輯電路可以有若個輸入變數和若干個輸出變數,其每個輸出變數是其輸入的邏輯函式,其每個時刻的輸出變數的狀態僅與當時的輸入變數的狀態有關,與本輸出的原來狀態及輸入的原狀態無關,也就是輸入狀態的變化立即反映在輸出狀態的變化。時序邏輯電路任意時刻的輸出不僅取決於該時刻的輸入,而且還和電路原來的狀態有關。...

邏輯閘電路 邏輯運算

閘電路又稱為邏輯閘電路。1 ttl全稱transistor transistor logic,即bjt bjt邏輯閘電路,是 數字電子技術 中常用的一種邏輯閘電路 2 cmos 邏輯閘電路功耗極低,成本低,電源電壓範圍寬,邏輯度高,抗干擾能力強,輸入阻抗高,扇出能力強。邏輯閘電路按其內部 有源器件 ...