邏輯綜合
定義:
將RTL源代碼轉換成門級網表,將HDL語言描述的電路轉換為工藝庫器件構成的網絡表的過程。在綜合過程中,優化進程嘗試完成庫單元的組合,是組合成的電路能最好的滿足設計的功能、時序和面積的要求。
邏輯綜合組成:
電路的綜合一般分為三個步驟,分別是轉化(Translation)、邏輯優化(Logic Optimizaion)和映射(Mapping)。
轉化(Translation):把描述RTL級的HDL語言,在約束下轉化成DC內部的同意用門級描述的電路(Generic Boolean Gates).
邏輯優化(Logic Optimization):把統一用門級描述的電路進行優化,改善路徑和門。
映射(Mapping):把優化了的統一門級描述。以DC為例,DC使用工藝庫將電路映射出來,得到.ddc文件,該文件包含如映射的門電路信息與網表,.v格式的網標,延時信息(sdf),工作約束(sdc)等信息。.ddc中包含的網標是實際意義上的網表文件,.v的網表是用於進行后仿的文件。

綜合過程中的約束:
約束對於綜合而言非常重要,如果不施加約束,綜合工具會產生非優化的網表,無法滿足要求。
綜合是約束驅動(Constraint driven)的,給定的約束是綜合的目標,約束一般是在對整個系統進行時序分析得到的,綜合工具會對電路進行優化以滿足約束的要求。
綜合以時序路徑為基礎進行優化。
綜合過程中時序與面積的關系:
下圖為綜合過程中時序與面積的關系,面積和延遲存在折中關系。綜合工具以約束為指導,在滿足時序的情況下獲得最小面積。

綜合的基本流程:
- 准備RTL代碼,經過前端仿真后才能用於綜合;
- 定義庫,設定好所需要用到的綜合庫等多種庫;
- 讀入設計,綜合工具讀入RTL代碼並進行分析;
- 定義設計環境,設定設計的工作環境、端口的驅動和負載、線負載模型等;
- 設置設計約束(關鍵),主要是定義時鍾和I/O的約束,約束要適當,只有正確的約束才能得到正確的結果;
- 設置綜合策略,top-down和bottom-up兩種策略,根據需求進行選擇;
- 優化設計,綜合工具可以根據約束對電路進行優化,也可認為加入命令改變優化方法;
- 分析和解決設計的問題,在設計綜合后,根據報告分析設計中出現的問題,並修訂問題;
- 保存設計數據,綜合結束后,保存各種數據以供后續布局布線使用(需先通過驗證)。

常用綜合工具:
Synopsys 的Design Compiler;
Candance的Enconter RTL Compiler。
Design Compiler
啟動Design Compiler方式:
- 在命令行輸入dc_shell啟動終端控制,再在dc_shell>后輸入start_gui打開圖形界面(Design Vision),可以輸入-help查看啟動選項。在命令行輸入dc_shell -gui可以進入dc_shell並打開圖形界面;
- 使用design_vision,通過design_vision -help查看DC的啟動選項;
- .Batch mode,上面兩種方式只啟動DC,需要通過source命令開始進行編譯;使用Batch mode在啟動過程中開始執行腳本,如:dc_shell -topo -f run.tcl | tee -i run.log:意思是:使用拓撲模式啟動DC,啟動的同時執行run.tcl腳本文件,並且把啟動過程中顯示在終端的信息記錄到run.log中。| tee -i就是寫進信息的管道命令,講dc_shell -topo -f run.tcl 執行后顯示的信息(輸出結果),流入到run.log文件中。這樣子是為了在DC啟動失敗的時候,通過查看啟動信息,進而排除錯誤。
工作模式有兩種:
一種是Tcl模式;
另一種是圖形模式;
DC工具組成:

參考文獻:
《Tcl與Design Compiler (二)——DC綜合與Tcl語法結構概述》https://www.cnblogs.com/IClearner/p/6617207.html
