
DC綜合操作流程-設置流程
29頁總流程1:庫的設置2:設計的讀入3:設置環(huán)境屬性(1)set_operating_conditions(2)set_wire_load_model和set_wire_load_mode(3)set load(4)set_drive或者set_driving_cell4:設計規(guī)則約束(1)set_max_transtion(2)set_max_capacitance(3)set_max_fanout5:優(yōu)化約束(1)create_clock(2)set_clock_uncertainty(3)set_clock_latency(4)set_input_delay(5)set_output_delay(6)set_false_path(7)set_multicycle_path(8)set_max_delay和set_min_delay(9)set_max_area7:一些編譯命令及DC的輸出格式注意:1:在前端設計中一般不做hold_time的約束,hold_time的約束可以在后端修復!??!總流程:1:對庫進行基本設置,如下:設置完成后應該查看.synopsys_dc.setup里面庫的設置和軟件application setup處的設置是否一樣!DC的初始化文件.synopsys.dc.setup需要用ls –a顯示,命令:more .synopsys.dc.setup查看文件內容!2:讀入設計,兩種方法:read和analyze+elaborateAnalyzer是分析HDL的源程序并將分析產(chǎn)生的中間文件存于work(用戶可以自己指定)的目錄下;Elaborate則在產(chǎn)生的中間文件中生成verilog的模塊或者VHDL的實體缺省情況下,elaborate讀取的是work目錄中的文件3:設置環(huán)境定義:如果不指定operating_conditions,DC自動搜索link_library中的第一個庫的工作環(huán)境作為優(yōu)化時使用的工作環(huán)境。
1) set_operating_conditions:工作條件包括三方面—溫度、電壓以及工藝;工作條件一般分三種情況:best case, typical case, worst case圖形界面:#1:先進入the symbol view of the top界面,選擇top模塊#2:attributes—operating environment—operating conditions命令方式:#1:可通過report_lib libraryname命令來查看,如下圖查看的是slow.db庫的工作條件,則使用命令:report_lib slow,右邊是report_lib fast另外一個例子,只是為了說明庫中的library name必須是用report_lib命令得到下面圖形中的conditions里面的庫的name:(******自己想的******)#2:一般綜合時候只需考慮最差和最好兩種情況即可,最差情況用于做建立時間(setup time)的時序分析,最好情況用于做保持時間(hold time)的時序分析最差情況-max下使用slow.db庫,最好情況-min下使用fast.db庫;{最差和最好情況和溫度以及電壓有很大關系,溫度越大,延時越大;電壓越大,延時越??;不過溫度對延時的作用更大} 所以: ##1: 做建立時間分析時候用最差情況,命令: set_operating_conditions –max “slow” ##2: 如果既要分析建立時間,又要分析保持時間,則需要兩條命令: set_min_library slow.db –min_version fast.db set_operating_conditions –min fast –max slow首先通過命令set_min_library同時設置worst-case和best-case的library,然后通過set_operating_conditions命令指定不同環(huán)境下使用的庫模型;上面的命令指定的是:fast庫用于對hold time優(yōu)化,slow庫用于對setup time進行優(yōu)化。
set_operating_conditions –min fast –max slow命令中的–min fast和–max slow可以互換2) set_wire_load_model和set_wire_load_mode命令方式:#1:set_wire_load_model: 設置連線負載模型, 為了估計模塊輸出的時序—transition time;DC默認輸出負載為0負載模型可以通過report_lib libraryname命令下查看線的模型種類,如下圖是fast.db庫中的幾種線的模型在布局布線前應使用較悲觀的模型,對最壞的情況做綜合,線負載模型由目標庫提供max –min選項指定該模型用于估計最大路徑延遲和最小路徑延遲例如:(寫一個即可)set_wire_load_model -name tsmc13_wl40 -min set_wire_load_model -name smic13_wl50 –max :最壞情況或者可以直接設置負載模型: set_wire_load_model -name tsmc13_wl40 -library slow表示使用的是slow庫里的tsmc13_wl40線模型。
2:自己不清楚如何選擇的話,則讓DC自動選擇 set auto_wire_load_selection true#3:上面的設置完成后,需要對負載模塊的使用位置加以說明,三種模式,命令如下:set_wire_load_mode top 或set_wire_load_mode enclosed 或set_wire_load_mode segmented 關系如下:top?: 指定模塊互連線延遲的估計使用頂層模塊的線負載模型enclosed: 指定模塊互連線延遲的估計使用包含該連線的最小模塊的線負載模型segmented: 將連線按模型邊界分段,各段的延遲分別按照各自模塊的線負載模型估計延遲,然后把估計結果相加得到該連線的延遲一般情況下使用的是:set_wire_load_mode top圖形界面:上圖中的第一步指的是先選擇top模塊,然后設置top模塊下的環(huán)境屬性附加:還可以給某個模塊設置負載模型:(下面設置timer模塊)*** set current_design timer ***先轉到timer模塊下***set_wire_load_model -name tsmc13_wl40 或者下面的:(3) set load:設置輸出負載 比較精確地計算輸出電路的延遲,DC需要知道輸出電路驅動的所有負載。
該命令有兩種用法:一種是直接給端口賦一個具體的值,另一種是結合命令load_of指出它的負載相當于工藝庫中哪個單元的負載值命令方式:#1:set_load 5 [get_ports OUT1] #2:set_load [load_of my_lib/and2a0/A] [get_ports OUT1]說明OUT1端口接的負載值地my_lib中and2a0單元的A管腳的負載值3:把上面命令set_load [load_of my_lib/and2a0/A] [get_ports OUT1]中的get_ports OUT1換為all_outputs就可以給全部輸出端口賦值其中l(wèi)oad_of命令可以算出某個引腳的負載電容值電路負載的大小會影響到它的延遲,而且負載越大,延遲越大,DC在缺省情況下認為端口的負載電容都是0,因此具有無窮大的驅動能力圖形界面:必須先選中全部的輸出負載然后再設置負載值?。。。?!***********具體如何找這個負載不清楚!?。。。。。。。。?!****************(4) set_drive或者set_driving_cell:設置輸入驅動為了更加準確估計模塊的輸入時序,為了更加準確的估計輸入電路的延遲,DC需要知道信號到達輸入端口的過渡時間(transition time)。
默認下,DC認為輸入驅動的驅動能力無限大,即transition time=0;Set_drive使用確定的值來估計輸入端的輸入電阻,從而得到輸入端口的延遲;set_driving_cell是假定一個實際的外部驅動單元來估計輸入的transition time;該命令用于設置輸入端口或者雙向端口上的電阻值,該電阻值是用于驅動輸入端口的單元的輸入電阻,因此,該值越大,就說明輸入端口的驅動能力越弱,連線的延遲也就越大更常用的是set_driving_cell命令,以庫中某個單元電路的引腳驅動能力為基準來模擬輸入端口的驅動能力例1:首先通過drive_of指定具體的驅動單元電阻值,得到驅動單元電阻后,通過:set_drive+值+[get_ports clk] 命令給輸入端口clk賦值下圖是給除了clk以外的其它輸入端口驅動:4:設計規(guī)則約束約束(DRC:design_rule_constraint)DRC規(guī)則的優(yōu)先級: transition>fanout>capacitance(1) set_max_transtion:設置最大傳輸時間連線的轉換時間是其驅動引腳的邏輯電平變化的時間,包括rising time和falling,從10%的VDD變化到90%的VDD所需的時間。
設定最大的轉換時間set_max_transtion,這個值一般設為周期的10%例如:set_max_transtion 1.8 [current_design] 一般情況下current_design指的是top2) set_max_capacitance:輸出管腳可以驅動的最大電容值定義輸出管腳可以驅動的最大電容值 例:set_max_capacitance 1.5 [get_ports out1] 或者set_max_capacitance 1.5 [get_designs top](3) set_max_fanout:設置最大扇出負載連線的最大扇出負載指的是它所驅動的所有輸入引腳的扇出負載的總和扇出負載不同于負載,它是個無量綱的數(shù)值max_fanout經(jīng)驗值一般設為20,即一個門的輸出最多驅動20個輸入引腳(如果每個引腳的輸出負載是1的話)計算fanout值,如下*******或者: set_max_fanout 3.0 [all_outputs]圖形界面:在attributes-optimization constraints-design constraints5:優(yōu)化約束Optimization Constraints(1) create_clock: 用于定義時鐘的周期和波形(duty及起始沿)du。
