開始
先建立目錄并將PrimeTime本身所帶的一個例子拷到新建的目錄下,在下面的內(nèi)容中將要用到這個例子。
mkdir primetime
cd primetime
cp –r $SYNOPSYS/doc/pt/tutorial .
cd tutorial
運(yùn)行PrimeTime:pt_shell后面的命令都是在這個shell之下運(yùn)行的1. 編譯時序模型 (這1節(jié)中的操作并非對所有的設(shè)計都是必需的)1.1編譯 Stamp ModelStamp model 是針對于復(fù)雜模塊--例如 DSP核心或者RAM--而建立的靜態(tài)時序模型。它一般是為晶體管級的設(shè)計而創(chuàng)建的,在設(shè)計中沒有門級的網(wǎng)表。
一個 Stamp model 包括兩個源文件:1).mod 文件,包含對 pin-to-pin 的 arc的描述(不包括延時)。2).data 文件,包括.mod 文件中描述的每一個 arc的延遲數(shù)據(jù)。例如,對于 AM2910 設(shè)計中的 Y 模塊(見圖 2-2),編譯其Stamp model:
compile_stamp_model -model_file Y.mod -data_file Y.data-output Y
其中 Y.mod 和 Y.data 是源文件,編譯后生成了兩個.db文件:Y_lib.db 和 Y.db。其中 Y_lib.db 是一個庫文件,其中包括一個被稱為 core的單元;而 Y.db 是一個設(shè)計文件,是 Y_lib.db 中的單元 core的例化。正是由于它們之間的這種關(guān)系,為了在鏈接時能夠正確地例化 Y.db,庫 Y_lib.db必須要加入到鏈接路徑(link_path)中去。
1.2編譯快速時序模型對于設(shè)計中的某些未完工的模塊--比如說,該模塊的HDL,或者完整的stamp model沒有完成--你可以創(chuàng)建一個快速時序模型來進(jìn)行分析??焖贂r序模型是一個臨時性的模型,可以提供進(jìn)行時序分析而需要的時序信息。實際上,快速時序模型是包含一系列 pt_shell命令的文件,而不是語言。這樣比使用 Stamp mo-del 的語言去寫一個模型花費(fèi)的時間更少。例如為 AM2910 中的 STACK模塊創(chuàng)建一個快速時序模型:source -echostack.qtm.ptreport_qtm_model;save_qtm_model -output STACK -formatdb其中 stack.qtm.pt是一個腳文件,描述了建立快速時序模型所需要的所有pt_shell 命令,所以在這里直接 source就可以了。它的具體內(nèi)容參見附錄[1]。創(chuàng)建好之后,用 save_qtm_model 命令把該模型保存為.db格式的文件。同其他類型的模型一樣,PrimeTime 也創(chuàng)建了兩個.db文件,STACK_lib.db 和 STACK.db。
進(jìn)入正題:作一些基本的環(huán)境設(shè)置和準(zhǔn)備工作設(shè)置查找路徑:set search_path "." 這里“.”代表當(dāng)前目錄設(shè)置鏈接路徑:set link_path "* pt_lib.dbSTACK_lib.db Y_lib.db"讀入設(shè)計文件:read_db AM2910.db (還支持read_verilogread_edif read_vhdl 等)鏈接頂層設(shè)計:link_design AM2910(顯示當(dāng)前已載入的設(shè)計: pt_shell>list_designs得到當(dāng)前載入單元的信息: pt_shell>report_cell)設(shè)置操作條件和線上負(fù)載/端口驅(qū)動負(fù)載等set_operating_conditions -library pt_lib -min BCCOM -maxWCCOM
set_wire_load_mode topset_wire_load_model -library pt_lib -name 05x05 -minset_wire_load_model -library pt_lib -name 20x20 -max
set_driving_cell -lib_cell IV-library pt_lib [all_inputs]set_capacitance 0.5 [all_outputs] 對所有的輸出端設(shè)置50pf的電容負(fù)載。對有關(guān)時鐘的參數(shù)進(jìn)行設(shè)置create_clock -period 30 [get_portsCLOCK]set clock [get_clock CLOCK]set_clock_uncertainty 0.5$clockset_clock_latency -min 3.5$clockset_clock_latency -max 5.5$clockset_clock_transition -min 0.25$clockset_clock_transition -max 0.3$clock
當(dāng)然也可以這樣設(shè)置:create_clock-period 30 -waveform [0 15] clkset_clock_uncertainty0.5[get_clocksclk]set_clock_latency -min 3.5[get_clocksclk]set_clock_latency -max 5.5[get_clocksclk]set_clock_transition -min0.25[get_clocksclk]set_clock_transition -max0.3[get_clocksclk]

設(shè)置時鐘-門校驗(clock-gating checks)設(shè)定時鐘-門的建立和保持時間的數(shù)值,以及最小的脈沖寬度。set_clock_gating_check -setup 0.5 -hold0.1 $clockset_min_pulse_width 2.0$clock
在開始靜態(tài)時序分析之前,注意要執(zhí)行下面的指令進(jìn)行檢查:check_timing該命令會檢查該設(shè)計的結(jié)構(gòu)和約束,給出可能存在的時序問題,如果存在問題的話則給出 errors 或者 warnings。
設(shè)置端口延遲并檢驗時序?qū)τ谒信c時鐘相關(guān)的端口,都要設(shè)置輸入、輸出的延遲。set_input_delay 0.0[all_inputs] -clock $clockset_output_delay 2.0[get_port INTERRUPT_DRIVER_ENABLE] -clock$clockset_output_delay 1.25[get_port MAPPING_ROM_ENABLE] -clock $clockset_output_delay 0.5[get_port OVERFLOW] -clock $clockset_output_delay 1.0[get_port PIPELINE_ENABLE] -clock $clockset_output_delay 1.0[get_port Y_OUTPUT] -clock $clock
或者最簡單的:(相當(dāng)于時序約束)set_input_delay 15.0-clock clk[all_inputs]set_output_delay 15.0-clock clk[all_inputs]
保存以上的設(shè)置使用 write_script命令將所作的設(shè)置保存到一個腳文件中,這樣在下一次運(yùn)行的時候可以直接通過該文件來完成所有的設(shè)置。該命令可以生成三種格式的文件:write_script -format dctc1 -outputAM2910.tc1write_script -format dcsh -outputAM2910.dcshwrite_script -format ptsh -outputAM2910.pt
運(yùn)行基本的分析:得到約束報告report_constraint如果在命令中加入-verbose 參數(shù),將在 report中得到更詳細(xì)的細(xì)節(jié)。如果加入-all_violators 參數(shù),在 report中會列出對于每一項約束,設(shè)計中違反最嚴(yán)重的端點。report_constraint-all_violators
得到基于路徑的時序分析report_timing在沒有任何命令參數(shù)時,在 report 中列出的是對于每個 pathgroup,該設(shè)計中最長的最大路徑。如果需要的是該設(shè)計中最短的最小路徑的話,可以在命令中加上-delay min 參數(shù)?;蛘呒右恍﹨?shù)report_timing-to [all_outputs]當(dāng)然在分析前也可以添加時序例外后,再進(jìn)行約束報告和時序分析。
注意: 讀寫SDF
對于起初的靜態(tài)時序分析,估計網(wǎng)絡(luò)的延時信息是基于一個連線負(fù)載模式。 實際上延時是與設(shè)計中單元和網(wǎng)絡(luò)的布局布線有關(guān)的。
一個布局器或一個布線器提供更詳細(xì)和更精確的延時信息,可以用來提供給PrimeTime作更精確的分析。這個過程被稱作反標(biāo)(back-annotation)。反標(biāo)信息經(jīng)常是以標(biāo)準(zhǔn)延時格式StandardDelay Format(SDF)提供的。
所以, 在布局布線后,現(xiàn)在的網(wǎng)表中已經(jīng)包括了實際的時鐘數(shù)信息。所以上面關(guān)于
對有關(guān)時鐘的參數(shù)進(jìn)行設(shè)置
create_clock-period 30 -waveform [0 15] clkset_clock_uncertainty0.5[get_clocksclk]set_clock_latency -min 3.5[get_clocksclk]set_clock_latency -max 5.5[get_clocksclk]set_clock_transition -min0.25[get_clocksclk]set_clock_transition -max0.3[get_clocksclk]這一段,,在布局布線后可以直接改為create_clock -period 30 -waveform [0 15]clkset_propagated_clock [get_clocksclk]
set_propagated_clock命令可以根據(jù)時鐘數(shù),自動計算時鐘信號到達(dá)終點的延時和偏移。
愛華網(wǎng)



