引言
在電路設計自動化的時代,綜合工具的作用不言而喻,通過綜合,設計人員能夠獲得自己所設計模塊的規模、時序性能和關鍵路徑等有用信息,進而指導自己優化設計結構。本文就來說說綜合工具DC工作的全流程,希望對設計人員和DC的初級使用者有所啟發。
DC (Design compiler) 是Synopsys 公司綜合核心工具,內嵌六種工具:DC Explorer、HDL Compiler、Library Compiler 、Power Compiler,DFT Compiler and DFTMAX 和Design Vision,在綜合的不同階段DC調用相應的工具實現所需的功能。DC包含以下功能技術:DC Expert,DC Ultra 和DC Graphical。DC Expert 能夠進行功耗、面積和時序的優化,采用線性負載模型計算延時;DC Ultra所采用的優化算法也更先進,且DC Ultra提供拓計算技術,即在拓撲模式下不采用線性負載模型而是采用Synopsys的布局優化技術,以保證綜合結果和最終物理設計更好的相關性;DC Graphical具有DC Expert和DC ultra 所有特性,并且能夠優化multicorner-multimode 設計、減少布線擁堵和進行初步floorplan。
DC Expert:啟動命令dc_shell,綜合命令compile。
DC Ultra:拓撲模式啟動命令dc_shell -topo,綜合命令complie_ultra。
DC Graphical:啟動命令dc_shell -topo,綜合命令complie_ultra -spg。
Synopsys對綜合的定義十分形象Synthesis=Translation + Logic Optimization +Gate Mapping,這正好表示出使用DC綜合的過程,將RTL設計translate成GTECH門級網表,再根據施加的約束對電路優化并向特定工藝庫映射。本文力求解釋清楚綜合過程,不涉及具體綜合腳本和施加約束方法。
DC是調用HDL Compiler來將讀取的設計轉換成不依賴于工藝的GTECH門級網表的。這里需要說明的是GTECH網表中不僅僅只有與非門、異或門這種門電路符號,還有時序器件符號SEQGEN,如果設計中使用加、減、乘和比較等運算,GTECH會將其提取出來并用以帶有OP標識的符號表示,這方便后續進行高級別電路優化;另外,設計中避免不了使用選擇邏輯,如不特別聲明,DC在這一階段對選擇邏輯用SELECT_OP表示,且在后續的映射階段并不一定將SELECT_OP映射成多路選擇器,而是采用與非門電路來實現其功能,如果想要映射成多路選擇器,那么需要在RTL中聲明synopsys infer_mux。
接下來DC根據綜合人員設置的約束對GTECH網表進行優化,可分為組合優化和時序優化。
組合邏輯優化是先對組合邏輯設計進行工藝無關的邏輯級優化,從GTECH門電路提取出布爾表達式集合,這樣可以對通過對布爾表達式的化簡和變形實現對電路結構的化簡和變形;
再向工藝庫映射,映射的過程中根據速度和面積的目標選擇適合的電路結構;
最后在對工藝依賴的門電路進行門級優化,這一階段DC主要進行延時優化、功耗優化、DRC修正和面積優化。
時序優化分為兩步,第一步向工藝庫中的時序器件進行映射,此時組合邏輯還沒有完成映射,也就沒有具體的延時信息,時序器件的選擇也不就不是最優的,時序優化是在映射后進行的,且進行時序器件替換時是將時序電路附近的組合邏輯一起考量的。
具體來說DC的優化流程是如圖1所示的12步完成的,其中星號表示 DC Expert不支持。
1)如果使用compile_ ultra,默認首先自動進行ungroup操作,ungroup操作會將設計展平,展平設計必然會對內部信號重命名,這一操作會為后仿調試帶來困難,所以建議先關閉這一功能,首次綜合compile_ultra –no_auto_ungroup后,如果時序確實很緊張再打開這一功能,或者使用set_ungroup命令來實現局部ungroup操作。
2)high-level optimization是在時序和面積的約束下進行的資源提取和共享。如果使用DC Ultra工具,那么還可以對 datapath進行加減等運算operator進行提取優化。
3)Multiplexer Mapping and Optimization,即將組合邏輯中多路選擇標識首先映射成單個多路選擇器或者多路選擇樹,且為了能夠共享多路選擇樹、減少面積,DC會重新調整選擇信號的順序。
4)Sequential Mapping階段,DC將 SEQGEN代表的時序單元映射到 target Library中實際的時序器件。
5)Structuring and Mapping,即將設計中可以析出的子函數或者說子表達式作為中間變量,通過復用多次使用的中間變量可以減少面積,并將組合邏輯對工藝庫進行映射。
6)Automatic uniquification,這個操作相當于綜合人員使用了uniquify命令,該命令通過對多次例化的子設計進行復制和重命名的方式,實現每一個instance都有唯一設計與之對應,從而解決同一子設計多次例化問題。
7)implementing Synthetic Parts,在高級別優化階段,類似+或者*這樣的operator將其用一個抽象符號代表,稱為Synthetic Part,此時將這些 Synthetic Part映射為具體不同結構的加法器或者乘法器等。
8)timing-driven combinational optimization,此步驟DC對關鍵路徑再次進行重構,即增加總變量和復制中間變量等操作來提升速度,并且對關鍵路徑再次進行operator的Implementing,比如將串行加法器替換為行波進位加法器。
9)Register Retiming,該步驟僅DC Ultra支持,該操作簡單說就是對寄存器的移位、合并或者拆散復制等操作來減少違例。如果使用 optimize registers命令,那么寄存器的 retiming 更適合 pipelined designs;如果在 compile_ultra命令后帶- retime選項,DC會自動進行局部 retiming操作,這更適合通用的non- pipeline design。
10)Delay and Leakage Optimization這一步驟,DC試圖修復延時違例,DC再次對關鍵路徑的電路結構進行評估,如果不滿足約束,那么再次進行結構選擇并進行替換;至于leakage優化,DC是將非關鍵路徑的庫單元替換為庫中leakage更低的單元,比如選擇庫中高閾值電壓單元。
11)Design Rule Fixing,DC 通過插入buffer或者 resize gate進行設計規則違例修正。
12)Area Optimization,此過程DC 默認是在不影響延時性能進行的。如果使用DC Ultra工具,綜合人員可以使用 compile_ultra 命令后,再施加optimize_ netlist -area命令,在不影響時序性能的前提下進一步提升面積優化效果。
四、總結
另外,如果想要獲得更好的QoR,從RTL code中提取數據路徑塊是十分重要,設計人員可以在compile_ultra前使用analyze_datapath_extraction命令來查看設計中算術內容并得到設計建議反饋。若想以html格式顯示報告,帶-html選項即可,HTML格式文件里面可以直接鏈接到RTL代碼,便于檢閱和修改。有時候觀測一下設計的最小面積和時序性能的極限很有意義,不加任何約束,compile_ultral會綜合出面積最小的情況;使用set_cost_priority -delay命令,將延時優化的優先級提前到DRC優先級前,可觀測設計時序性能的極限。
審核編輯:湯梓紅
-
電路設計
+關注
關注
6589文章
2333瀏覽量
197398 -
HDL
+關注
關注
8文章
324瀏覽量
47130 -
DC
+關注
關注
8文章
3571瀏覽量
678169 -
RTL
+關注
關注
1文章
382瀏覽量
59185 -
時序
+關注
關注
5文章
359瀏覽量
37013
原文標題:一文讓你理解DC綜合全過程!
文章出處:【微信號:芯司機,微信公眾號:芯司機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論