做的最少的網(wǎng)站百度免費(fèi)優(yōu)化
? ? ? PrimeTime是Synopsys的一個(gè)單點(diǎn)的全芯片、門級靜態(tài)時(shí)序分析器。它能分析大規(guī)模、同步、數(shù)字ASICS的時(shí)序。PrimeTime工作在設(shè)計(jì)的門級層次,并且和Synopsys其它工具整合得很緊密。
? 基本特點(diǎn)和功能:
? 時(shí)序檢查方面:
建立和保持時(shí)序的檢查(Setup and hold checks)
重新覆蓋和去除檢查(Recovery and removal checks)
時(shí)鐘脈沖寬度檢查(Clock pulse width checks)
時(shí)鐘門鎖檢查(Clock-gating checks)
? 設(shè)計(jì)檢查方面:
沒有時(shí)鐘端的寄存器
沒有時(shí)序約束的結(jié)束點(diǎn)(endpoint)
主從時(shí)鐘分離(Master-slave clock separation)
有多個(gè)時(shí)鐘的寄存器
對層次敏感的時(shí)鐘(Level-sensitive clocking)
組合電路的反饋環(huán)(Combinational feedback loops)
設(shè)計(jì)規(guī)則檢查,包括最大電容(maximum capacitance)、最大傳輸時(shí)間(maximum transition)和最大扇出(maximum fanout)
PrimeTime 時(shí)序分析流程和方法:
? ? ? 在時(shí)序分析之前需要做的步驟:
1、 ? 建立設(shè)計(jì)環(huán)境
- ? 建立搜索路徑(search path)和鏈接路徑(link path)
- ? 讀入設(shè)計(jì)和庫
- ? 鏈接頂層設(shè)計(jì)
- ? 建立運(yùn)作條件、連線負(fù)載模型、端口負(fù)載、驅(qū)動(dòng)和傳輸時(shí)間
2、 ? 說明時(shí)序聲明(約束)
- ? 定義時(shí)鐘周期、波形、不確定性(uncertainty)和滯后時(shí)間(latency)
- ? 說明輸入、輸出端口的延時(shí)
3、 ? 說明時(shí)序例外情況(timing exceptions)
- ? 多周期路徑(multicycle paths)
- ? 不合法路徑(false paths)
- ? 說明最大和最小延時(shí)、路徑分割(path segmentation)和失效弧(disabled arcs)
4、 ? 進(jìn)行分析和生成報(bào)告
- ? 檢查時(shí)序
- ? 生成約束報(bào)告
- ? 生成路徑時(shí)序報(bào)告
開始
? ? ? 先建立目錄并將PrimeTime本身所帶的一個(gè)例子拷到新建的目錄下,在下面的內(nèi)容中將要用到這個(gè)例子。
mkdir primetime
cd primetime
cp –r $SYNOPSYS/doc/pt/tutorial .
cd tutorial
確認(rèn)目錄中有以下這些文件:
AM2910.db ? ? ? ? ? ? The design .db for the top-level of the design
CONTROL.db ? ? ? ? The design .db for the CONTROL block
REGCNT.db ? ? ? ? ? ?The design .db for the REGCNT block
UPC.db? ? ? ? ? ? ? ? ? ? The design .db for the UPC block
Y.data? ? ? ? ? ? ? ? ? ? ? ?The Stamp data file for the Y block
Y.mod? ? ? ? ? ? ? ? ? ? ? The Stamp model file for the Y block
Y_lib.db? ? ? ? ? ? ? ? ? ?The library .db for the Y block
STACK_lib.db ? ? ? ? The library .db for the STACK block
pt_lib.db? ? ? ? ? ? ? ? ? ?The technology library .db
stack.qtm.pt ? ? ? ? ? ? The quick timing model script for the stack block
optimize.dcsh ? ? ? ? ? The dc_shell optimization script
timing.dcsh? ? ? ? ? ? ? An example DC shell timing script for translation
tutorial.pt? ? ? ? ? ? ? ? ?The complete PrimeTime tutorial script for your
reference.
例子是一個(gè)AM2910微處理器,如圖所示模塊圖。
運(yùn)行PrimeTime:
pt_shell
定義搜索路徑和鏈接路徑:
pt_shell>set search_path “.”
Pt_shell>set link_path “* pt_lib.db STACK_lib.db Y_lib.db”
* pt_lib.db STACK_lib.db Y_lib.db
? 讀入設(shè)計(jì):
PrimeTime支持以下設(shè)計(jì)格式:
. Synopsys database files (.db) (Use the read_db command)
. Verilog netlist files (Use the read_verilog command)
. Electronic Design Interchange Format (EDIF) netlist files (Use the read_edif command.)
. VHDL netlist files (Use the read_vhdl command.)
讀入AM2910的頂層設(shè)計(jì)文件:
pt_shell> read_db AM2910.db
Loading db file '/u/joe/primetime/tutorial/AM2910.db'
1
鏈接設(shè)計(jì):
pt_shell> link_design AM2910
Loading db file '/u/joe/primetime/tutorial/pt_lib.db'
Loading db file '/u/joe/primetime/tutorial/STACK_lib.db'
Loading db file '/u/joe/primetime/tutorial/Y_lib.db'
Linking design AM2010 ...
Loading db file '/u/joe/primetime/tutorial/STACK.db'
...
Designs used to link AM2910:
CONTROL, REGCNT, STACK, UPC, Y
Libraries used to link AM2910:
STACK_lib, Y_lib, pt_lib
Design 'AM2910' was successfully linked
顯示當(dāng)前已載入的設(shè)計(jì):
pt_shell>list_designs
得到當(dāng)前載入單元的信息:
pt_shell>report_cell
編譯一個(gè)標(biāo)記模型(Stamp Model):
標(biāo)記模型是一個(gè)諸如像DSP或RAMS那樣復(fù)雜模塊的靜態(tài)時(shí)序模型。
標(biāo)記模型與.lib模型共存,而不能代替它們。
- ? 建立標(biāo)記模型是用在晶體管層次的設(shè)計(jì)上,在這個(gè)層次上沒有門級網(wǎng)表。
- ? 標(biāo)記模型語言是一種源代碼語言,被編譯成Synopsys的.db文件格式,可以被PrimeTime或Design Compiler使用。
- ? 標(biāo)記模型包含引腳到引腳的時(shí)序弧、建立和保持時(shí)間數(shù)據(jù)、模式信息、引腳的電容和驅(qū)動(dòng)能力等等。標(biāo)記模型還能保存屬性(面積等等)。
- ? 三態(tài)輸出、鎖存器和內(nèi)部生成的時(shí)鐘都可以被建模。
一個(gè)標(biāo)記模型包括兩種源代碼文件格式:
- ? .mod文件
僅包含引腳到引腳的弧的描述(沒有延時(shí)數(shù)據(jù))。
- ? .data文件
包含.mod文件中每條弧的延時(shí)數(shù)據(jù)。
標(biāo)記模型可以有多個(gè).data文件來描述不同運(yùn)作條件下的時(shí)序。
兩種文件格式都需要編譯成一個(gè).db模型。
編譯AM2910中Y模塊的標(biāo)記模型(標(biāo)記源代碼文件是Y.mod和Y.data):
pt_shell> compile_stamp_model -model_file Y.mod \
-data_file Y.data -output Y
Wrote model library core to ‘./Y_lib.db’
Wrote model to ‘./Y.db’
PrimeTime生成兩個(gè).db文件:
Y_lib.db:一個(gè)庫文件,包含一個(gè)單元(cell)。這個(gè)單元叫做核(core)。
Y.db:一個(gè)設(shè)計(jì)文件,引用Y_lib.db中的單元核。
編譯一個(gè)快速時(shí)序模型(Quick Timing Model):
可以為設(shè)計(jì)中還沒有完成的模塊建立一個(gè)快速時(shí)序模型,以使得完整的時(shí)序分析能夠進(jìn)行。通常的情形是:
- ? 模塊的HDL代碼還沒有完成時(shí)
- ? 為了劃分設(shè)計(jì),在評估階段為實(shí)際設(shè)計(jì)進(jìn)行時(shí)序預(yù)測、約束估計(jì)時(shí)
- ? 模塊的標(biāo)記模型還沒有完成時(shí)
一個(gè)快速時(shí)序模型是一組PrimeTime命令,而不是一種語言。為了方便和文檔化可以將它們寫在一個(gè)腳本文件中,然后保存為.db的格式。在PrimeTime和Design Compile中快速時(shí)序模型很有用處。
還可以將快速時(shí)序模型保存為標(biāo)記模型,這是開始一個(gè)復(fù)雜標(biāo)記模型的一種便利的方法。
例子中STACK模塊的快速時(shí)序模型腳本文件是stack.qtm.pt,建立這個(gè)模型:
pt_shell> source -echo stack.qtm.pt
...
pt_shell> report_qtm_model;
...
pt_shell> save_qtm_model -output STACK -format db
Wrote model library core to './STACK_lib.db'
Wrote model to './STACK.db'
進(jìn)行時(shí)序分析
配置運(yùn)作環(huán)境
讀入并鏈接AM2910設(shè)計(jì):
pt_shell> set search_path "."
pt_shell> set link_path "* pt_lib.db STACK_lib.db Y_lib.db"
pt_shell> read_db AM2910.db
pt_shell> link_design AM2910
鏈 接了AM2910會(huì)導(dǎo)致其它已經(jīng)鏈接的設(shè)計(jì)變?yōu)椴绘溄拥臓顟B(tài)。在內(nèi)存里只允許有一個(gè)鏈接的設(shè)計(jì)。當(dāng)一個(gè)設(shè)計(jì)不鏈接,所有時(shí)序信息將被去除,并會(huì)出現(xiàn)警告, 這和Design Compiler不同。如果需要保存所標(biāo)注的信息,可以在鏈接一個(gè)新的設(shè)計(jì)之前用write_script命令。如果以后重新鏈接這個(gè)設(shè)計(jì),只要運(yùn)行這個(gè) 腳本就可以了。
建立運(yùn)作條件和連線負(fù)載模型:
PrimeTime在生成建立時(shí)序報(bào)告(setup timing reports)時(shí)使用最大(Maximum)運(yùn)作條件和連線負(fù)載模型;在生成保持時(shí)序報(bào)告(hold timing reports)時(shí)使用最小(Minimum)運(yùn)作條件和連線負(fù)載模型。
pt_shell> set_operating_conditions -library pt_lib -min BCCOM -max WCCOM
pt_shell> set_wire_load_mode top
pt_shell> set_wire_load_model -library pt_lib -name 05x05 -min
pt_shell> set_wire_load_model -library pt_lib -name 20x20 –max
如果運(yùn)作條件在兩個(gè)不同的庫中,用set_min_library命令來在最大庫和最小庫中建立聯(lián)系。
得到一張庫的列表:
pt_shell> list_libraries
Library Registry:
STACK_lib /home/gray/primetime/tutorial/
STACK_lib.db:STACK_lib
Y_lib /home/gray/primetime/tutorial/Y_lib.db:Y_lib
* pt_lib /home/gray/primetime/tutorial/
pt_lib.db:pt_lib
得到一個(gè)庫的詳細(xì)信息:
pt_shell>report_lib pt_lib
基本聲明:
pt_shell> create_clock -period 30 [get_ports CLOCK]
pt_shell> set clock [get_clock CLOCK]
pt_shell> set_clock_uncertainty 0.5?clock
ptshell>setclocklatency?min3.5clock
ptshell>setclocklatency?min3.5clock
pt_shell> set_clock_latency -max 5.5?clock
ptshell>setclocktransition?min0.25clock
ptshell>setclocktransition?min0.25clock
pt_shell> set_clock_transition -max 0.3 $clock
時(shí)鐘門鎖檢查(Clock-Gating Checks):
? pt_shell> set_clock_gating_check -setup 0.5 -hold 0.1?clock
ptshell>setminpulsewidth2.0clock
ptshell>setminpulsewidth2.0clock
如果設(shè)計(jì)被反標(biāo)過,PrimeTime用SDF的建立和保持時(shí)間值,以及時(shí)鐘脈沖寬度說明。
得到一個(gè)時(shí)序摘要:
pt_shell>report_design
…
pt_shell>report_reference
…
檢查時(shí)序聲明和設(shè)計(jì)的結(jié)構(gòu):
在進(jìn)行時(shí)序分析之前運(yùn)行check_timing命令是關(guān)鍵。這個(gè)命令能夠檢查到所有可能的時(shí)序問題。
在這個(gè)例子中將會(huì)出現(xiàn)警告,原因是存在沒有約束條件的端口。
運(yùn)行時(shí)序分析
設(shè)置端口延時(shí)并檢查時(shí)序:
pt_shell> set_input_delay 0.0 [all_inputs] -clock?clock
ptshell>setoutputdelay2.0[getport INTERRUPTDRIVERENABLE]?clock clock
ptshell>set outputdelay 2.0 [getport INTERRUPTDRIVERENABLE] ?clock clock
pt_shell> set_output_delay 1.25 [get_port MAPPING_ROM_ENABLE] -clock?clock
ptshell>set outputdelay 0.5 [getport OVERFLOW] ?clock clock
ptshell>set outputdelay 0.5 [getport OVERFLOW]?clock clock
pt_shell> set_output_delay 1.0 [get_port PIPELINE_ENABLE] -clock?clock
ptshell>set outputdelay1.0 [getport YOUTPUT]?clock clock
ptshell>set outputdelay 1.0 [getport YOUTPUT]?clock clock
pt_shell> set_driving_cell -lib_cell IV -library pt_lib [all_inputs]
pt_shell> set_capacitance 0.5 [all_outputs]
pt_shell> check_timing
保存設(shè)置:
將所設(shè)置的時(shí)序信息保存為腳本文件可以確保在接下去的運(yùn)行中保留一個(gè)時(shí)序環(huán)境的復(fù)本。使用write_script命令,這個(gè)命令將以下這些信息保存到一個(gè)命令文件中:
Clocks ? ? ? ? ? ? Names, waveforms, latency, and uncertainty
Exceptions ? ? ? ? False and multicycle paths, minimum and maximum
delays, and path groups
Delays ? ? ? ? ? Input and output delays, all delay annotations, and
timing checks
Net and port attributes ? Capacitance, resistance, and fanout
Design environment ? Wire load model, operation condition, drive, driving cell,
and transition
Design rules ? ? ? ? Minimum and maximum capacitance, minimum and
maximum fanout, and minimum and maximum transition
write_script命令可以將腳本寫成Design Compiler格式(dcsh or dctcl mode)或者PrimeTime格式(ptsh)。
不能用PrimeTime寫一個(gè)被標(biāo)注設(shè)計(jì)的.db文件,因?yàn)镻rimeTime只能寫時(shí)序模型的.db文件。以腳本為主要方式是為了和Design Compiler傳遞數(shù)據(jù)。
pt_shell> write_script -format dctcl -output AM2910.tcl
pt_shell> write_script -format dcsh -output AM2910.dcsh
pt_shell> write_script -format ptsh -output AM2910.pt
運(yùn)行基本的分析:
1. ? 得到AM2910的約束報(bào)告:
pt_shell>report_constraint
2. 檢查報(bào)告中的時(shí)序違規(guī)(timing violations)和約束違規(guī)(constraints violations)
3. ? 到更多關(guān)于違規(guī)的信息:
pt_shell> report_constraint -all_violators
4. ? 檢查這份報(bào)告:
這里有多少違規(guī)的結(jié)束點(diǎn)(endpoints)?
報(bào)告基于路徑的時(shí)序信息:
pt_shell>report_timing
設(shè)置時(shí)序例外情況:
因?yàn)镻rimeTime直到進(jìn)行完整的時(shí)序升級(timing update)之前才檢查時(shí)序例外情況的正確性,所以要運(yùn)行report_exceptions以確定它們的正確性。
聲明AM2910的時(shí)序例外情況。設(shè)置一條兩個(gè)時(shí)鐘周期的路徑,其中建立時(shí)間為2,保持時(shí)間為1:
pt_shell> set_false_path -from U3/OUTPUT_reg
- /CP \
-to U2/OUTPUT_reg - /D
pt_shell> set_multicycle_path -setup 2 -from \
INSTRUCTION - -to U2/OUTPUT_reg
pt_shell> set_multicycle_path -hold 1 -from \
INSTRUCTION- -to U2/OUTPUT_reg
pt_shell> update_timing
pt_shell> report_exceptions
pt_shell> report_exceptions -ignored
評估時(shí)序例外情況結(jié)果:
1. ? 得到另外一個(gè)約束報(bào)告并評估違規(guī)情況:
pt_shell>report_constraint –all_violators
2. ? 檢查這份約束報(bào)告
3. ? 確信所設(shè)置的例外情況是否能夠使得設(shè)計(jì)中的違規(guī)顯現(xiàn)比以前更少。設(shè)計(jì)中最差余量(the worst slack)是什么?
pt_shell>report_timing
4. 檢查這份詳細(xì)的時(shí)序報(bào)告。
5. 看其它的違規(guī)路徑。從這份約束報(bào)告中選擇一個(gè)結(jié)束點(diǎn),并鍵入:
? ? pt_shell> report_timing -to endpoint
6. 檢查這份報(bào)告。
提取一個(gè)子設(shè)計(jì)的邊界時(shí)序特性信息:
一個(gè)子設(shè)計(jì)的相關(guān)時(shí)序特性信息的提取是基于它相關(guān)的上級設(shè)計(jì)環(huán)境。這些信息有
兩個(gè)主要用途:
一個(gè)主要用途是PrimeTime將這些相關(guān)特性信息提供給Design Compiler作為約束信息。這是DC中從芯片級分析到模塊級優(yōu)化主要的紐帶,與只是作分析的單點(diǎn)工具相比提供了更佳的整合性。
提取了相關(guān)特性信息之后,命令PrimeTime寫一個(gè)包含子設(shè)計(jì)或模塊時(shí)序信息的腳本。
在提取時(shí)序特性的同時(shí),要注意:
1. ? 特性信息提取不能夠預(yù)計(jì)子設(shè)計(jì)的時(shí)序狀況;
2. ? 特性信息提取沒有最大或最小這兩種工作模式。所以在做這步工作之前要設(shè)置單一的、正確的運(yùn)作條件。
對于PrimeTime而言,相關(guān)時(shí)序信息允許作層次化的時(shí)序分析,并觀察芯片層次的
時(shí)序約束;對于Design Compiler而言,相關(guān)時(shí)序信息允許在綜合或邏輯優(yōu)化時(shí)設(shè)置時(shí)序約束。
在Design Compiler中設(shè)置綜合或優(yōu)化約束的步驟是:
1. ? 在PrimeTime中讀入頂層設(shè)計(jì)
2. ? 確認(rèn)需要優(yōu)化的子設(shè)計(jì)
3. ? 提取每一個(gè)子設(shè)計(jì)的特性信息
4. ? 為每一個(gè)子設(shè)計(jì)生成一個(gè)Design Compiler的腳本
5. ? 將這些子設(shè)計(jì)讀到Design Compiler中
6. ? 將步驟4中生成的腳本引入進(jìn)來
7. ? 進(jìn)行模塊級的優(yōu)化
僅將需要優(yōu)化的子設(shè)計(jì)讀入到DC中去,這樣DC運(yùn)行起來可以效率高一些。優(yōu)化完這
些模塊之后,再將它們讀入到PrimeTime中去作新一輪的時(shí)序分析。
在這個(gè)例子中,從時(shí)序報(bào)告中可以看出模塊U3(REGCNT)和U2(UPC)可以進(jìn)一步優(yōu)化,也許能消除一些違規(guī)情況。
因?yàn)橐m正建立時(shí)序違規(guī),所以要配置最差情況的運(yùn)行條件。
pt_shell> set_operating_conditions -library pt_lib WCCOM
pt_shell> characterize_context {U2 U3}
pt_shell> write_context U2 -output UPC.char.dcsh \
-format dcsh
pt_shell> write_context U3 -output REGCNT.char.dcsh \
-format dcsh
pt_shell> write_script -format ptsh -output AM2910.new.pt
? % dc_shell
dc_shell> include optimize.dcsh
...
dc_shell> quit
pt_shell> read_db {REGCNT.opt.db UPC.opt.db}
pt_shell> current_design AM2910
pt_shell> swap_cell U3 {REGCNT.opt.db:REGCNT}
pt_shell> swap_cell U2 {UPC.opt.db:UPC}
pt_shell> source AM2910.new.pt
pt_shell> check_timing
pt_shell> report_constraint -all_violators
pt_shell> report_constraint -all_violators –verbose
看新生成的報(bào)告,違規(guī)情況是不是比原來少了?
? ? ? ? 高級分析
情形分析(Case Analysis):
PrimeTime允許將設(shè)計(jì)中的端口設(shè)置成邏輯1或邏輯0,并使其像實(shí)際中那樣生效,恰當(dāng)?shù)厥箷r(shí)序弧有效或無效。這叫做情形分析(case analysis)或常量傳播(constant propagation)。
情形分析能沿著電路正向地使所指定的邏輯常量生效,但是逆向不行。PrimeTime可以這樣做是因?yàn)樗篱T的邏輯功能。PrimeTime不能使邏輯常量通過RAMs或其他黑箱單元傳播。黑箱單元是沒有定義功能的單元。
可以使用標(biāo)記時(shí)序模型有條件地定義被情形分析影響到的時(shí)序弧。使用情形分析,可以在不同的條件下進(jìn)行時(shí)序分析,例如,測試模式的開或關(guān)。
PrimeTime自動(dòng)使一直高或一直低的信號(hào)生效。如圖所示使用情形分析時(shí)的常量傳播。
如果將Sel端口設(shè)置成邏輯0,PrimeTime只跟蹤INa到U3的路徑;
如果將Sel端口設(shè)置成邏輯1,PrimeTime只跟蹤INb到U3的路徑;
如果將U2的B引腳設(shè)置成邏輯0,PrimeTime將不跟蹤到U3/Ten的路徑。
作為情形分析的范例,完成以下一些步驟:
1. ? 在設(shè)計(jì)中的一個(gè)端口上設(shè)置一個(gè)情形分析邏輯常量,觀察時(shí)序弧受到的影響
pt_shell> set_case_analysis 0 [get_ports CONDITION_CODE]
pt_shell> report_case_analysis
pt_shell> report_disable_timing
report_disable_timing命令顯示所有因?yàn)榍樾畏治龆鵁o效的時(shí)序弧。
2. ? 看時(shí)序的改變
pt_shell> report_constraint
pt_shell> report_timing
3. ? 檢查報(bào)告
在這種情況下,將CONDITION_CODE端口設(shè)置成0改變了時(shí)序,所以關(guān)鍵路徑也不一樣了。
4. ? 將CONDITION_CODE設(shè)置成1,觀察結(jié)果
5. ? 去除剛才所設(shè)置的邏輯常量
pt_shell> remove_case_analysis [get_ports CONDITION_CODE]
模式分析(Mode Analysis):
一些復(fù)雜的設(shè)計(jì)可能會(huì)有好多種功能模式,在每種模式種時(shí)序路徑和特性完全不同。
在 PrimeTime中可以定義和說明這些模式的時(shí)序,然后再為每種模式分別進(jìn)行分析。這樣做可以去除許多不合法的時(shí)序違規(guī)現(xiàn)象,因?yàn)槟切┞窂奖辉O(shè)置成是無 效的。例如,一個(gè)RAM的寫地址和讀地址路徑是不同的。一個(gè)時(shí)序報(bào)告可能會(huì)顯示一條RAM的寫地址路徑,但是這條路徑只有在RAM工作在讀模式時(shí)才有效。
有兩種方法定義模式:
. 在標(biāo)志模型中將模式和時(shí)序弧聯(lián)系起來
. 為一條特殊的路徑定義一種模式
在定義了模式之后,可以用一部分或所有定義的模式來進(jìn)行時(shí)序分析。
1. ? AM2910的Y模塊有模式功能,因?yàn)樵谒臉?biāo)記模型中已經(jīng)定義了。在Y.mod文件中查看已定義的模式:
pt_shell>report_mode
2. ? 看設(shè)置了模式之后時(shí)序的改變:
? ? pt_shell> set_case_analysis 0 [get_pins U4/OPERATION]
pt_shell> set_mode data U4/core
pt_shell> report_mode
pt_shell> report_timing -to Y_OUTPUT*
pt_shell> set_mode stack U4/core
pt_shell> report_mode
pt_shell> report_timing -to Y_OUTPUT*
3. ? 將所定義的模式復(fù)位:
pt_shell>reset_mode
報(bào)告合法路徑(True Paths):
PrimeTime能夠自動(dòng)探測到設(shè)計(jì)中存在的一些不合法路徑。這些路徑可能是功能不合法
路徑或是延時(shí)不合法路徑。
下圖所示一條功能不合法路徑,因?yàn)樗肋h(yuǎn)也不敏感(sensitize)。
PrimeTime還可以用自動(dòng)生成測試模式automatic test-pattern generation(ATPG)方法在需要測試的時(shí)序路徑上生成測試向量來進(jìn)行分析。用戶不用自己去說明這些向量,PrimeTime會(huì)自動(dòng)生成并使其生效。
如果PrimeTime能夠生成一個(gè)向量,它會(huì)認(rèn)為這條路徑是合法的,否則是不合法的。
PrimeTime不能在包含有黑箱單元的部分使用合法路徑分析,因?yàn)樗鼰o法推算ATPG向量經(jīng)過不知道功能的黑箱單元之后將是什么樣的輸出。
report-timing 命令有三個(gè)選項(xiàng)可以用來作合法路徑報(bào)告:
-justify
對于所需分析的路徑,報(bào)告每一條是合法還是不合法。如果合法,PrimeTime顯示一條可以使其敏感的輸入向量。將這個(gè)選項(xiàng)用在違規(guī)路徑上查看潛在不合法違規(guī)。加上-nworst和-max_paths選項(xiàng)檢查多條路徑。
-true
啟用一種搜索算法尋找最長的合法路徑。使用這個(gè)選項(xiàng)在某些設(shè)計(jì)中會(huì)使CPU的運(yùn)行時(shí)間延長。
-false
只報(bào)告不合法的路徑。
僅在生成報(bào)告時(shí)使用合法路徑分析。它不是PrimeTime的一種時(shí)序模型。
在例子中用合法路徑報(bào)告來驗(yàn)證路徑:
pt_shell> report_timing -true
pt_shell> report_timing -justify -to MAPPING_ROM_ENABLE
pt_shell> report_timing -false -max_paths 5
提取一個(gè)時(shí)序模型:
時(shí)序模型提取是從一個(gè)門級網(wǎng)表生成一個(gè).db文件。PrimeTime和DC都能夠使用這種提取得到的.db文件。
供應(yīng)商(Vendors)用提取的方法提供時(shí)序模型。設(shè)計(jì)者可以用提取的方式生成一個(gè)完全與其他模塊不相關(guān)的時(shí)序模型(可以被多次引用)。
提取是自動(dòng)地從網(wǎng)表中提取時(shí)序模型并把信息保存為兩個(gè).db文件,類似于編譯標(biāo)記模型時(shí)的輸出。
用這種方法提取一個(gè)時(shí)序模型:
1. ? 讀入要提取的網(wǎng)表
2. ? 定義時(shí)鐘
3. ? 反標(biāo)延時(shí)和電容(如果可行的話)
4. ? 設(shè)置連線負(fù)載模型(如果可行的話)
5. ? 去除內(nèi)部的例外情況(這些不保存到模型中)
6. ? 進(jìn)行時(shí)序檢查并改正任何錯(cuò)誤
7. ? 設(shè)置提取時(shí)的環(huán)境變量
8. ? 在所有需要的運(yùn)作條件下提取模型
9. ? 交換(Swap)提取的時(shí)序模型
現(xiàn)在UPC設(shè)計(jì)已經(jīng)優(yōu)化了,提取它的一個(gè)時(shí)序模型,用到芯片級的時(shí)序分析中去。
pt_shell> link_design UPC
pt_shell> create_clock -period 30 [get_ports CLOCK]
pt_shell> set_wire_load_model -name 20x20 -library pt_lib UPC
pt_shell> check_timing; # Unconstrained outputs are OK
pt_shell> set extract_model_tolerance 0.05
pt_shell> set extract_model_transition_limit 5.0
pt_shell> set extract_model_capacitance_limit 64
pt_shell> set extract_model_min_resolution 0.1
pt_shell> set extract_model_min_delay_threshold 0.5
pt_shell> set extract_model_conservative true
pt_shell> extract_model -operating_conditions {WCCOM NOM BCCOM} -output UPC.ext
pt_shell> set link_path "$link_path UPC.extr_lib.db"
pt_shell> read_db UPC.extr.db
pt_shell> link_design AM2910
pt_shell> swap_cell U2 {UPC.extr.db:UPC}
pt_shell> source AM2910.new.pt
pt_shell> report_cell; # Note UPC is now marked as a model
pt_shell> report_constraint -all
檢查結(jié)果。
反標(biāo)標(biāo)準(zhǔn)延時(shí)格式文件(SDF):
PrimeTime支持以下版本的SDF文件:
讀:1.0, 2.0, 2.1;
寫:1.0, 2.1。
當(dāng)PrimeTime用SDF進(jìn)行延時(shí)標(biāo)注時(shí),它假定與負(fù)載相關(guān)的延時(shí)部分被包含到單元延時(shí)中。如果SDF在連線延時(shí)中包含了負(fù)載相關(guān)延時(shí),在read_sdf命令中用-load_delay net選項(xiàng)。
寫一個(gè)AM2910的最大和最小延時(shí)SDF文件:
pt_shell> set_operating_conditions -library pt_lib -min BCCOM -max WCCOM
pt_shell> write_sdf -version 2.1 AM2910.sdf
將這個(gè)SDF文件讀回PrimeTime中:
pt_shell> read_sdf -min_max AM2910.sdf
pt_shell> report_timing
檢查報(bào)告。注意每一個(gè)反標(biāo)延時(shí)都被標(biāo)上了*號(hào)。
讀寄生參數(shù)文件:
PrimeTime支持以下幾種寄生參數(shù)文件:
Reduced Standard Parasitic Format (RSPF)
Detailed Standard Parasitic Format (DSPF)
Standard Parasitic Exchange Format (SPEF)
命令格式為:
pt_shell> read_parasitics filename
https://www.cnblogs.com/zeushuang/archive/2013/03/11/2954322.html