DC學習(2)綜合的流程
一:邏輯綜合的概述
synthesis = translation + logic optimization + gate mapping
1:Translation
主要把描述RTL級的HDL語言,在約束下轉換成DC內部的同意用門級描述的電路,以GTECH或者沒有映射的ddc形式展現
2:logic optimization
邏輯優化,就是把統一用門級描述的電路進行優化,例如把路徑調整一下,門改一下。
3:Gate mapping
門級映射;DC用別的廠商的工藝庫把電路給映射出來,得到一個ddc文件;包括映射的門電路信息與網表,.v格式的網表,延時信息(sdf),工作約束(sdc)
延時信息的得出:線負載模型、拓撲結構模型(現在)。
二:DC啟動方式
1:dc_shell
DC以命令行的格式啟動
2:design_vision
DC圖形界面啟動
3:Batch_mode
批處理模式。前面兩種方式只是把DC啟動起來,沒有真正的工作。需要通過source命令把腳本寫進去以後,DC讀取才真正工作;這種批處理模式是,在啟動的同時,告訴DC執行哪些腳本
例如:$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啟動失敗的時候,通過查看啟動信息,進而排除錯誤
三:基本流程概述
1:高層次設計流程圖
①在設計之前,準備好庫,verilog代碼,約束條件
② 完成 RTL 源碼設計之後,應讓設計開發與功能仿真並行進行:
·在設計開發階段,我們使用DC來實現特定的設計目標,以及執行默認選項的初步綜合
·如果設計開發結果未能在10%的偏差範圍內滿足時序目標,則需要修正HDL代碼,然後重復設計開發和功能驗證的過程。
③ 使用 DC 完成設計的綜合並滿足設計目標.這個過程包括三個步驟,即綜合=翻譯+邏輯優化+映射,首先將 RTL 源代碼轉化為通用的布爾等式,然後設計的約束對電路進行邏輯綜合和優化,使電路能滿足設計的目標或者約束,最後使用目標工藝庫的邏輯單元映射成門級網表,在將設計綜合成門級網表之後,要驗證此時的設計是否滿足設計目標。如果不能滿足設計目標,此時需要產生及分析報告確定問題及解決問題。
④當設計滿足功能、時序以及其他的設計目標的時候,需要執行物理層設計最後分析物理層設計的性能,也就是使用DC的拓撲模式,加入floorplan的物理信息後進行綜合分析設計的性能。如果結果未能滿足設計目標,應返回第三步.如果滿足設計目標,則本部分設計周期完成.
2:流程圖與相應的命令
①準備設計文件,DC 的設計輸入文件一般為 HDL 文件。
②指定庫文件,需要指定的庫文件包括:
鏈接庫(link library) 、目標庫(target library) 、符號庫(symbol library)、綜合庫(synthetic library)
工藝庫文件的配置放在三個地方,裝DC目錄,user目錄,操作目錄。前兩個目錄是早已配置好,最好不要動的;第三個目錄放在工作目錄下的隱藏目錄:.synopsys_dc.setup,通過ls -al才能看到此文件。
一般有兩種文件,後綴名為lib(人看,可轉化為db文件)和db(工具讀)
例如:set target_library 22nm.db
set_app_var target_library 22nm.db #對於DC內部原變量,最好使用第二種方法,set_app_var會檢查變量拼寫是否為內部變量,若拼寫錯誤,則出現error。
下面是庫的解釋,具體的解釋在後面有說,這裏先進行簡單地概述一下:
Link library 和 target library 統稱為 technology library(即工藝庫,習慣稱之為綜合庫),technology library 由半導體制造商提供,包含相關 cell 的信息及設計約束標準,其中:
Target library: 在門級優化及映射的時候提供生成網表的 cell,即DC 用於創建實際電路的庫。
Link library:設置裏面不僅有Target library,還有其他東西,例如IP核。
symbol library:Symbol library 提供 Design Vision GUI 中設計實現的圖形符號,如果你使用腳本模式而不使用 GUI,此庫可不指定 Symbol library。
③讀入設計:
設計的讀入過程是將設計文件載入內存,並將其轉換為 DC 的中間格式,即GTECH 格式,GTECH 格式由“soft macros” 如 adders, comparators 等組成,這些組件來自 synopsys 的 synthetic lib,每種組件具有多種結構。讀入設計有兩種實現方法實現方法:read 和 analyze & elaborate(實際上read 是 analyze 與 elaborate 的打包操作 ),下面介紹二者在使用中的區
別:
從中可以看到,analyze & elaborate 可以自由指定設計庫,並生成 GTECH中間文件前生成.syn 文件存儲於 work 目錄下,便於下次 elaborate 節省時間,我們一般選擇 analyze & elaborate 的方法讀入設計。
④定義設計環境:
定義對象包括工藝參數(溫度、電壓等),I/O 端口屬性(負載、驅動、扇出), 統計 wire-load 模型,設計環境將影響設計綜合及優化結果。
⑤設置設計約束:
設計約束包括設計規則約束和優化約束,設計規則約束(design rule constraint)由工藝庫決定,在設計編譯過程中必須滿足,用於使電路能按功能要求正常工作。設計優化約束定義了 DC 要達到的時序和面積優化目標,該約束由用戶指定,DC 在不違反設計規則約束的前提下,遵循此約束綜合設計。
⑥選擇編譯策略:
對於層次化設計,DC 中有兩種編譯策略供選擇,分別為 top down 和 bottom up。在 top down 策略中,頂層設計和子設計在一起編譯,所有的環境和約束設置針對頂層設計,雖然此種策略自動考慮到相關的內部設計,但是此種策略不適合與大型設計,因為 top down 編譯策略中,所以設計必須同時駐內存,硬件資源耗費大。在 bottom up 策略中,子設計單獨約束,當子設計成功編譯後,被設置為 dont_touch 屬性,防止在之後的編譯過程中被修改,所有同層子設計編譯完成後,再編譯之上的父設計,直至頂層設計編譯完成。Bottom up 策略允許大規模設計,因為該策略不需要所有設計同時駐入內存。
⑦編譯:
用 Compile 命令執行綜合與優化過程,還可以利用一些選項指導編譯和優化過程。
⑧分析及解決設計中存在的問題
DC 可以產生一些報告以反應設計的綜合和優化結果,如:時序、面積、約束等報告,這些報告有助於分析和解決設計中存在的問題以改善綜合結果,我們還可以利用 check_design 命令檢驗綜合的設計的一致性。
⑨存儲設計數據
DC 不會自動存儲綜合後的設計結果,因而需要在離開 DC 時手動存儲設計數據。比如存儲網表、延時信息等數據文件,ddc文件。
四:例子
DC學習(2)綜合的流程