啟動環境設置
在啟動DC之前,首先要配置DC啟動環境,指定工藝庫和綜合庫。
DC的啟動配置文件.synopsys_dc.setup,配置了DC啟動過程中要執行的庫等信息。
.synopsys_dc.setup,這個文件名不能更改,必須是.synopsys_dc.setup,這個文件存在于3個位置:
synopsys的安裝目錄下,基本不需要動這個文件;$SYNOPSYS/admin/setup(/opt/Synopsys/dc/admin/setup/.synopsys_dc.setup)
用戶目錄下,基本不需要動這個文件;~user(/home/IC/.synopsys_dc.setup)
當前工作目錄下,(/home/IC/dc/DC_work/work/.synopsys_dc.setup)
配置DC的啟動環境,就是在啟動的目錄創建.synopsys_dc.setup文件并進行修改。
當啟動DC時,首先會在當前啟動位置尋找.synopsys_dc.setup文件并加載,如果沒有找到則回到當前用戶主目錄下尋找,若還沒有找到則加載DC安裝路徑下的.synopsys_dc.setup。
新建并修改.synopsys_dc.setup文件:
.synopsys_dc.setup
其中:
設置工程路徑
DC運行時的工作路徑(WORK_PATH);
DC軟件安裝路徑(DC_PATH);
指定設計和庫的工作路徑:define_design_lib ?work ?-path $WORK_PATH
指定四個相關庫路徑:
鏈接工藝庫(link library):鏈接庫是target_library一樣的單元庫或者IP核。
*號表示開辟一塊單獨的內存空間給DC使用;
目標工藝庫(target library):DC將RTL級的HDL描述映射到實際的門級電路時所需要的標準單元庫。是工藝廠商提供的工藝庫。
圖形化符號庫(symbol_library)(SYMBOL_PATH):指定符號庫的路徑,關聯圖形化庫,使用GUI界面的時候,可以看到綜合得到的門級網表的圖形化界面。
文件位置:工藝庫SMIC_180下
?
?
/opt/Foundary_Library/SMIC_180/smic_180/SM00LB501-FE-00000-r0p0-00rel0/aci/sc-m/symbols/synopsys
文件位置
?
?
綜合庫(synthetic_library) :也叫IP庫,synopsys做映射自帶的庫:DesignWare library優化算術器件DW_ foundation.sldb和標準單元庫standard.sldb;
文件位置:dc安裝目錄下
?
?
/opt/Synopsys/Synplify2015/libraries/syn
文件位置
?
?
上面的庫設置僅僅適用于邏輯綜合,也就是非拓撲模式下的綜合;
拓撲模式下,需要用到物理庫,或者相關的物理布局等信息;
create_mw_lib :主要使用DC的物理綜合的時候,需要生成物理庫;
set與set_app_var區別:
set: 自己自定義的一些變量;
set_app_var :定義DC內部的系統變量等,如果不是合法的名字set_app_var會報錯。
主要指定有:search_path、synthetic_library、target_library、link_library、symbol_library 以及其他的一些命令開關等。
DC啟動的三種方式
1、design_vision(GUI)
?
?
design_vision?&
design_vision?-topographical_mode?&
?
?
使用拓撲結構啟動時必須提供相關的物理約束和物理庫;
2、dc_shell(shell)
?
?
dc_shell?|?tee?-i?run.log
?
?
3、batch mode
前面兩種方式只是將DC啟動起來,還沒有開始工作,需要通過source命令把腳本寫進去以后DC讀取才開始工作。
而這種批處理模式,在啟動的同時,DC執行run.tcl腳本即可工作,其中包括約束要求等:
?
?
dc_shell?-topo?-f?run.tcl?|?tee?-i?run.log
?
?
-topo 使用拓撲模式啟動DC,啟動的同時執行run.tcl腳本,并且把啟動過程顯示在終端并打印到run.log中。
綜合流程實操
DC綜合流程:
1.準備好文件
2.啟動DC
3.讀入設計前的檢查
4.讀入設計和查看設計及庫
5.約束設計
6.綜合
7.綜合后檢查與優化
8.保存優化后的設計
工程目錄:
config: DC的配置文件
rtl:rtl代碼
scripts:腳本
unmapped:DC轉換后的GTECH文件或unmapped.ddc文件
mapped:編譯后的網表文件
report: 綜合后的報告
work:運行DC的工作夾
啟動DC和檢查庫
1.啟動DC
?
?
dc_shell?|?tee?-i?run.log
?
?
可以看到log位置,說明庫加載ok:
?
?
start?load?.synopsys_dc.setup?file????? end?of?load?.synopsys_dc.setup?file
?
?
2.讀入設計前檢查:
查看設置的庫文件:
?
?
printvar?target_library????? printvar?link_library???? 或者 get_app_var?target_library???? get_app_var?link_library????
?
?
檢查邏輯庫信息:
?
?
check_library
?
?
3.讀入設計文件:
?
?
read_verlog?[list?TOP.v] 或者 read_vhdl?[list?TOP.vhd]
?
?
或者
?
?
analyze?-format?verilog?[list?TOP.v]?//讀入設計 elaborate?-architecture?verilog?TOP???//設置頂層
?
?
dc會自己尋找庫文件和rtl文件:
執行鏈接命令:查看當前要綜合的設計是否缺少子模塊
?
?
link
?
?
查看設計文件,*代表當前設計頂層 :
?
?
list_designs
?
?
顯示當前設計頂層 :
?
?
current_design
?
?
更改當前設計頂層:
?
?
current_design?COUNT
?
?
檢查設計:如果返回0,表明當前設計存在問題,無法綜合;
?
?
check_design
?
?
4.檢查庫
查看工藝庫和synopsys庫文件:
?
?
list_libs
?
?
查看庫內容(需要安裝Library Compiler):
?
?
report_lib?ss_1v62_125c
?
?
5.以ddc的格式保存未映射的設計:
?
?
write?-hierarchy?-format?ddc?-output?../unmapped/TOP.ddc
?
?
其他:查看命令解釋:
?
?
man?set_app_var???? set_app_var?-help
?
?
設置約束
?
?
source?TOP.con
?
?
檢查時序:檢查有無路徑沒有約束
?
?
check_timing
?
?
綜合
?
?
compile
?
?
綜合后,進行檢查約束是否違例:
?
?
report_constraint?-all_violators
?
?
查看最差路徑時序
?
?
report_timing?-delay_type?max
?
?
保存綜合后的設計
保存網表:
?
?
write?-format?verilog?-output?../mapped/TOP_netlist.v
?
?
以ddc的格式保存綜合后的設計:
?
?
write?-hierarchy?-format?ddc?-output?../mapped/TOP.ddc
?
?
DC腳本運行
?
?
dc_shell?-f?../scripts/run_1.tcl?|?tee?-i?run.log
run_1.tcl
編輯:黃飛
?
評論
查看更多