




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PrimeTime是Synopsys的一個單點的全芯片、門級靜態時序分析器。它能分析大規模、同步、數字ASICS的時序。PrimeTime工作在設計的門級層次,并且和Synopsys其它工具整合得很緊密。基本特點和功能:時序檢查方面:建立和保持時序的檢查(Setupandholdchecks)重新覆蓋和去除檢查(Recoveryandremovalchecks)時鐘脈沖寬度檢查(Clockpulsewidthchecks)時鐘門鎖檢查(Clock-gatingchecks)設計檢查方面:沒有時鐘端的寄存器沒有時序約束的結束點(endpoint)主從時鐘分離(Master-slaveclockseparation)有多哥時鐘的寄存器對層次敏感的時鐘(Level-sensitiveclocking)組合電路的反饋環(Combinationalfeedbackloops)設計規則檢查,包括最大電容(maximumcapacitance)、最大傳輸時間(maximumtransition)和最大扇出(maximumfanout)PrimeTime時序分析流程和方法:在時序分析之前需要做的步驟:1、 建立設計環境-建立搜索路徑(searchpath)和鏈接路徑(linkpath)-讀入設計和庫-鏈接頂層設計-建立運作條件、連線負載模型、端口負載、驅動和傳輸時間2、 說明時序聲明(約束)-定義時鐘周期、波形、不確定性(uncertainty)和滯后時間(latency)-說明輸入、輸出端口的延時3、 說明時序例外情況(timingexceptions)-多周期路徑(multicyclepaths)-不合法路徑(falsepaths)-說明最大和最小延時、路徑分割(pathsegmentation)和失效弧(disabledarcs)4、 進行分析和生成報告-檢查時序-生成約束報告-生成路徑時序報告開始先建立目錄并將PrimeTime本身所帶的一個例子拷到新建的目錄下,在下面的內容中將要用到這個例子。mkdirprimetimecdprimetimecp-$SYNOPSYS/doc/pt/tutorial.cdtutorial確認目錄中有以下這些文件:AM2910.dbThedesign.dbforthetop-levelofthedesign
AM2910.dbCONTROL.dbREGCNT.dbUPC.dbY.dataY.modY_lib.dbSTACK_lib.dbpt_lib.dbstack.qtm.ptCONTROL.dbREGCNT.dbUPC.dbY.dataY.modY_lib.dbSTACK_lib.dbpt_lib.dbstack.qtm.ptoptimize.dcshtiming.dcshtutorial.ptreference.Thedesign.dbfortheREGCNTblockThedesign.dbfortheUPCblockTheStampdatafilefortheYblockTheStampmodelfilefortheYblockThelibrary.dbfortheYblockThelibrary.dbfortheSTACKblockThetechnologylibrary.dbThequicktimingmodelscriptforthestackblockThedc_shelloptimizationscriptAnexampleDCshelltimingscriptfortranslationThecompletePrimeTimetutorialscriptforyour例子是一個AM2910微處理器,如圖所示模塊圖。運行PrimeTime:pt_shell定義搜索路徑和鏈接路徑:pt_shell>setsearch_path".”Pt_shell>setlink_path“*pt_lib.dbSTACK_lib.dbY_lib.db”*pt_lib.dbSTACK_lib.dbY_lib.db讀入設計:PrimeTime支持以下設計格式:.Synopsysdatabasefiles(.db)(Usetheread_dbcommand).Verilognetlistfiles(Usetheread_verilogcommand).ElectronicDesignInterchangeFormat(EDIF)netlistfiles(Usetheread_edifcommand.).VHDLnetlistfiles(Usetheread_vhdlcommand.)讀入AM2910的頂層設計文件:pt_shell>read_dbAM2910.dbLoadingdbfile'/u/joe/primetime/tutorial/AM2910.db'1鏈接設計:pt_shell>link_designAM2910Loadingdbfile'/u/joe/primetime/tutorial/pt_lib.db'Loadingdbfile'/u/joe/primetime/tutorial/STACK_lib.db'Loadingdbfile'/u/joe/primetime/tutorial/Y_lib.db'LinkingdesignAM2010...Loadingdbfile'/u/joe/primetime/tutorial/STACK.db'...DesignsusedtolinkAM2910:CONTROL,REGCNT,STACK,UPC,YLibrariesusedtolinkAM2910:STACK_lib,Y_lib,pt_libDesign'AM2910'wassuccessfullylinked顯示當前已載入的設計:pt_shell>list_designs得到當前載入單元的信息:pt_shell>report_cell編譯一個標記模型(StampModel):標記模型是一個諸如像DSP或RAMS那樣復雜模塊的靜態時序模型。標記模型與.lib模型共存,而不能代替它們。-建立標記模型是用在晶體管層次的設計上,在這個層次上沒有門級網表。-標記模型語言是一種源代碼語言,被編譯成Synopsys的.db文件格式,可以被PrimeTime或DesignCompiler使用。-標記模型包含弓I腳到引腳的時序弧、建立和保持時間數據、模式信息、引腳的電容和驅動能力等等。標記模型還能保存屬性(面積等等)。-三態輸出、鎖存器和內部生成的時鐘都可以被建模。一個標記模型包括兩種源代碼文件格式:-.mod文件僅包含引腳到引腳的弧的描述(沒有延時數據)。.data文件包含.mod文件中每條弧的延時數據。標記模型可以有多個.data文件來描述不同運作條件下的時序。兩種文件格式都需要編譯成一個.db模型。編譯AM2910中Y模塊的標記模型(標記源代碼文件是Y.mod和Y.data):pt_shell>compile_stamp_model-model_fileY.mod\-data_fileY.data-outputYWrotemodellibrarycoreto‘./Y_lib.db’Wrotemodelto‘./Y.db’PrimeTime生成兩個.db文件:Y_lib.db:一個庫文件,包含一個單元(cell)。這個單元叫做核(core)。Y.db:一個設計文件,引用Y_lib.db中的單元核。編譯一個快速時序模型(QuickTimingModel):可以為設計中還沒有完成的模塊建立一個快速時序模型,以使得完整的時序分析能夠進行。通常的情形是:-模塊的HDL代碼還沒有完成時-為了劃分設計,在評估階段為實際設計進行時序預測、約束估計時-模塊的標記模型還沒有完成時一個快速時序模型是一組PrimeTime命令,而不是一種語言。為了方便和文檔化可以將它們寫在一個腳本文件中,然后保存為.db的格式。在PrimeTime和DesignCompile中快速時序模型很有用處。還可以將快速時序模型保存為標記模型,這是開始一個復雜標記模型的一種便利的方法。例子中STACK模塊的快速時序模型腳本文件是stack.qtm.pt,建立這個模型:pt_shell>source-echostack.qtm.ptpt_shell>report_qtm_model;...pt_shell>save_qtm_model-outputSTACK-formatdbWrotemodellibrarycoreto'./STACK_lib.db'Wrotemodelto'./STACK.db'進行時序分析配置運作環境讀入并鏈接AM2910設計:pt_shell>setsearch_path”.”pt_shell>setlink_path"*pt_lib.dbSTACK_lib.dbY_lib.db"pt_shell>read_dbAM2910.dbpt_shell>link_designAM2910鏈接了AM2910會導致其它已經鏈接的設計變為不鏈接的狀態。在內存里只允許有一個鏈接的設計。當一個設計不鏈接所有時序信息將被去除并會出現警告這和DesignCompiler不同。如果需要保存所標注的信息,可以在鏈接一個新的設計之前用write_script命令。如果以后重新鏈接這個設計,只要運行這個腳本就可以了。建立運作條件和連線負載模型:PrimeTime在生成建立時序報告(setuptimingreports)時使用最大(Maximum)運作條件和連線負載模型;在生成保持時序報告(holdtimingreports)時使用最小(Minimum)運作條件和連線負載模型。pt_shell>set_operating_conditions-librarypt_lib-minBCCOM-maxWCCOMpt_shell>set_wire_load_modetoppt_shell>set_wire_load_model-librarypt_lib-name05x05-minpt_shell>set_wire_load_model-librarypt_lib-name20x20max如果運作條件在兩個不同的庫中,用set_min_library命令來在最大庫和最小庫中建立聯系。得到一張庫的列表:pt_shell>list_librariesLibraryRegistry:STACK_lib/home/gray/primetime/tutorial/STACK_lib.db:STACK_libY_lib/home/gray/primetime/tutorial/Y_lib.db:Y_lib*pt_lib/home/gray/primetime/tutorial/pt_lib.db:pt_lib得到一個庫的詳細信息:pt_shell>report_libpt_lib基本聲明:pt_shell>create_clock-period30[get_portsCLOCK]pt_shell>setclock[get_clockCLOCK]pt_shell>set_clock_uncertainty0.5$clockpt_shell>set_clock_latency-min3.5$clockpt_shell>set_clock_latency-max5.5$clockpt_shell>set_clock_transition-min0.25$clockpt_shell>set_clock_transition-max0.3$clock時鐘門鎖檢查(Clock-GatingChecks):pt_shell>set_clock_gating_check-setup0.5-hold0.1$clockpt_shell>set_min_pulse_width2.0$clock如果設計被反標過,PrimeTime用SDF的建立和保持時間值,以及時鐘脈沖寬度說明。得到一個時序摘要:pt_shell>report_design■■■pt_shell>report_reference■檢查時序聲明和設計的結構:在進行時序分析之前運行check_timing命令是關鍵。這個命令能夠檢查到所有可能的時序問題。在這個例子中將會出現警告,原因是存在沒有約束條件的端口。運行時序分析設置端口延時并檢查時序:pt_shell>set_input_delay0.0[all_inputs]-clock$clockpt_shell>set_output_delay2.0[get_portINTERRUPT_DRIVER_ENABLE]-clock$clockpt_shell>set_output_delay1.25[get_portMAPPING_ROM_ENABLE]-clock$clockpt_shell>set_output_delay0.5[get_portOVERFLOW]-clock$clockpt_shell>set_output_delay1.0[get_portPIPELINE_ENABLE]-clock$clockpt_shell>set_output_delay1.0[get_portY_OUTPUT]-clock$clockpt_shell>set_driving_cell-lib_cellIV-librarypt_lib[all_inputs]pt_shell>set_capacitance0.5[all_outputs]pt_shell>check_timing保存設置:將所設置的時序信息保存為腳本文件可以確保在接下去的運行中保留一個時序環境的復本。使用write_script命令,這個命令將以下這些信息保存到一個命令文件中:Clocks Names,waveforms,latency,anduncertaintyExceptionsFalseandmulticyclepaths,minimumandmaximumdelays,andpathgroupsDelaysInputandoutputdelays,alldelayannotations,andtimingchecksNetandportattributesCapacitance,resistance,andfanoutDesignenvironmentWireloadmodel,operationcondition,drive,drivingcell,andtransitionDesignrulesMinimumandmaximumcapacitance,minimumandmaximumfanout,andminimumandmaximumtransitionwrite_script命令可以將腳本寫成DesignCompiler格式(dcshordctclmode)或者PrimeTime格式(ptsh)。不能用PrimeTime寫一個被標注設計的.db文件,因為PrimeTime只能寫時序模型的.db文件。以腳本為主要方式是為了和DesignCompiler傳遞數據。pt_shell>write_script-formatdctcl-outputAM2910.tclpt_shell>write_script-formatdcsh-outputAM2910.dcshpt_shell>write_script-formatptsh-outputAM2910.pt運行基本的分析:.得到AM2910的約束報告:pt_shell>report_constraint檢查報告中的時序違規(timingviolations)和約束違規(constraintsviolations).到更多關于違規的信息:pt_shell>report_constraint-all_violators. 檢查這份報告:這里有多少違規的結束點(endpoints)?報告基于路徑的時序信息:pt_shell>report_timing設置時序例外情況:因為PrimeTime直到進行完整的時序升級(timingupdate)之前才檢查時序例外情況的正確性,所以要運行report_exceptions以確定它們的正確性。聲明AM2910的時序例外情況。設置一條兩個時鐘周期的路徑,其中建立時間為2,保持時間為1:pt_shell>set_false_path-fromU3/OUTPUT_reg/CP\-toU2/OUTPUT_reg/Dpt_shell>set_multicycle_path-setup2-from\INSTRUCTION-toU2/OUTPUT_reg?pt_shell>set_multicycle_path-hold1-from\INSTRUCTION-toU2/OUTPUT_regpt_shell>update_timingpt_shell>report_exceptionspt_shell>report_exceptions-ignored評估時序例外情況結果:1? 得到另外一個約束報告并評估違規情況:pt_shell>report_constraintall_violators檢查這份約束報告確信所設置的例外情況是否能夠使得設計中的違規顯現比以前更少。設計中最差余量(theworstslack)是什么?pt_shell>report_timing檢查這份詳細的時序報告。看其它的違規路徑。從這份約束報告中選擇一個結束點,并鍵入:pt_shell>report_timing-toendpoint檢查這份報告。提取一個子設計的邊界時序特性信息:一個子設計的相關時序特性信息的提取是基于它相關的上級設計環境。這些信息有兩個主要用途:—個主要用途是PrimeTime將這些相關特性信息提供給DesignCompiler作為約束信息。這是DC中從芯片級分析到模塊級優化主要的紐帶,與只是作分析的單點工具相比提供了更佳的整合性。提取了相關特性信息之后,命令PrimeTime寫一個包含子設計或模塊時序信息的腳本。在提取時序特性的同時,要注意:1.特性信息提取不能夠預計子設計的時序狀況;2.特性信息提取沒有最大或最小這兩種工作模式。所以在做這步工作之前要設置單一的、正確的運作條件。對于PrimeTime而言,相關時序信息允許作層次化的時序分析,并觀察芯片層次的時序約束;對于DesignCompiler而言,相關時序信息允許在綜合或邏輯優化時設置時序約束。在DesignCompiler中設置綜合或優化約束的步驟是:1. 在PrimeTime中讀入頂層設計2.確認需要優化的子設計.提取每一個子設計的特性信息. 為每一個子設計生成一個DesignCompiler的腳本. 將這些子設計讀到DesignCompiler中將步驟4中生成的腳本引入進來進行模塊級的優化僅將需要優化的子設計讀入到DC中去,這樣DC運行起來可以效率高一些。優化完這些模塊之后,再將它們讀入到PrimeTime中去作新一輪的時序分析。在這個例子中,從時序報告中可以看出模塊U3(REGCNT)和U2(UPC)可以進一步優化,也許能消除一些違規情況。因為要糾正建立時序違規,所以要配置最差情況的運行條件。pt_shell>set_operating_conditions-librarypt_libWCCOMpt_shell>characterize_context{U2U3}pt_shell>write_contextU2-outputUPC.char.dcsh\-formatdcshpt_shell>write_contextU3-outputREGCNT.char.dcsh\-formatdcshpt_shell>write_script-formatptsh-outputAM2910.new.pt%dc_shelldc_shell>includeoptimize.dcsh■■■dc_shell>quitpt_shell>read_db{REGCNT.opt.dbUPC.opt.db}pt_shell>current_designAM2910pt_shell>swap_cellU3{REGCNT.opt.db:REGCNT}pt_shell>swap_cellU2{UPC.opt.db:UPC}pt_shell>sourceAM2910.new.ptpt_shell>check_timingpt_shell>report_constraint-all_violatorspt_shell>report_constraint-all_violatorsverbose看新生成的報告,違規情況是不是比原來少了?高級分析情形分析(CaseAnalysis):PrimeTime允許將設計中的端口設置成邏輯1或邏輯0,并使其像實際中那樣生效,恰當地使時序弧有效或無效。這叫做情形分析(caseanalysis)或常量傳播(constantpropagation)。情形分析能沿著電路正向地使所指定的邏輯常量生效,但是逆向不行。PrimeTime可以這樣做是因為它知道門的邏輯功能。PrimeTime不能使邏輯常量通過RAMs或其他黑箱單元傳播。黑箱單元是沒有定義功能的單元。可以使用標記時序模型有條件地定義被情形分析影響到的時序弧。使用情形分析,可以在不同的條件下進行時序分析,例如,測試模式的開或關。PrimeTime自動使一直高或一直低的信號生效。如圖所示使用情形分析時的常量傳播。如果將Sel端口設置成邏輯0,PrimeTime只跟蹤INa到U3的路徑;如果將Sel端口設置成邏輯1,PrimeTime只跟蹤INb到U3的路徑;如果將U2的B引腳設置成邏輯0,PrimeTime將不跟蹤到U3/Ten的路徑。作為情形分析的范例,完成以下一些步驟:, 在設計中的一個端口上設置一個情形分析邏輯常量,觀察時序弧受到的影響pt_shell>set_case_analysis0[get_portsCONDITION_CODE]pt_shell>report_case_analysispt_shell>report_disable_timingreport_disable_timing命令顯示所有因為情形分析而無效的時序弧。.看時序的改變pt_shell>report_constraintpt_shell>report_timing.檢查報告在這種情況下,將CONDITION_CODE端口設置成0改變了時序,所以關鍵路徑也不一樣了。. 將CONDITION_CODE設置成1,觀察結果. 去除剛才所設置的邏輯常量pt_shell>remove_case_analysis[get_portsCONDITION_CODE]模式分析(ModeAnalysis):一些復雜的設計可能會有好多種功能模式,在每種模式種時序路徑和特性完全不同。在PrimeTime中可以定義和說明這些模式的時序,然后再為每種模式分別進行分析。這樣做可以去除許多不合法的時序違規現象,因為那些路徑被設置成是無效的。例如,一個RAM的寫地址和讀地址路徑是不同的。一個時序報告可能會顯示一條RAM的寫地址路徑,但是這條路徑只有在RAM工作在讀模式時才有效。有兩種方法定義模式:.在標志模型中將模式和時序弧聯系起來.為一條特殊的路徑定義一種模式在定義了模式之后,可以用一部分或所有定義的模式來進行時序分析。1. AM2910的Y模塊有模式功能,因為在它的標記模型中已經定義了。在Y.mod文件中查看已定義的模式:pt_shell>report_mode2.看設置了模式之后時序的改變:pt_shell>set_case_analysis0[get_pinsU4/OPERATION]pt_shell>set_modedataU4/corept_shell>report_modept_shell>report_timing-toY_OUTPUT*pt_shell>set_modestackU4/corept_shell>report_modept_shell>report_timing-toY_OUTPUT*.將所定義的模式復位:pt_shell>reset_mode報告合法路徑(TruePaths):PrimeTime能夠自動探測到設計中存在的一些不合法路徑。這些路徑可能是功能不合法路徑或是延時不合法路徑。下圖所示一條功能不合法路徑,因為它永遠也不敏感sensitize)。PrimeTime還可以用自動生成測試模式automatictest-patterngeneration(ATPG)方法在需要測試的時序路徑上生成測試向量來進行分析。用戶不用自己去說明這些向量,PrimeTime會自動生成并使其生效。如果PrimeTime能夠生成一個向量,它會認為這條路徑是合法的,否則是不合法的。PrimeTime不能在包含有黑箱單元的部分使用合法路徑分析,因為它無法推算ATPG向量經過不知道功能的黑箱單元之后將是什么樣的輸出。report-timing命令有三個選項可以用來作合法路徑報告:-justify對于所需分析的路徑,報告每一條是合法還是不合法。如果合法,PrimeTime顯示一條可以使其敏感的輸入向量。將這個選項用在違規路徑上查看潛在不合法違規。加上-nworst和-max_paths選項檢查多條路徑。-true啟用一種搜索算法尋找最長的合法路徑。使用這個選項在某些設計中會使CPU的運行時間延長。-false只報告不合法的路徑。僅在生成報告時使用合法路徑分析。它不是PrimeTime的一種時序模型。在例子中用合法路徑報告來驗證路徑:pt_shell>report_timing-truept_shell>report_timing-justify-toMAPPING_ROM_ENABLEpt_shell>report_timing-false-max_paths5提取一個時序模型:時序模型提取是從一個門級網表生成一個.db文件。PrimeTime和DC都能夠使用這種提取得到的.013文件。供應商(Vendors)用提取的方法提供時序模型。設計者可以用提取的方式生成一個完全與其他模塊不相關的時序模型(可以被多次引用)。提取是自動地從網表中提取時序模型并把信息保存為兩個.db文件,類似于編譯標記模型時的輸出。用這種方法提取一個時序模型:1. 讀入要提取的網表2.定義時鐘. 反標延時和電容(如果可行的話).設置連線負載模型(如果可行的話).去除內部的例外情況(這些不保存到模型中). 進行時序檢查并改正任何錯誤. 設置提取時的環境變量. 在所有需要的運作條件下提取模型.交換(Swap)提取的時序模型現在UPC設計已經優化了,提取它的一個時序模型,用到芯片級的時序分析中去。pt_shell>link_designUPCpt_shell>create_clock-period30[get_portsCLOCK]pt_shell>set_wire_load_mo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于數字孿生的制造業智能化升級策略探討
- 微咸水灌溉:濱海鹽堿土水鹽調控與金銀花生長的協同效應探究
- 干旱區典型內陸河流域徑流過程模擬與不確定性分析:以具體流域為例
- 小組合作學習:開啟大學生自主學習能力培養的新路徑
- 小學低年級英語口語作業設計的現狀、問題與突破路徑研究
- 實習經歷對大學畢業生初次就業質量的影響:基于多維度視角的剖析
- 多維協同視角下蘭州大學研究生創新能力培養模式的探索與實踐
- 2025年一建《機電工程管理與實務》考試真題剖析及備考策略解析試卷
- 2025年醫保知識考試題庫及答案:醫保患者權益保障法律法規解讀與應用試題
- 醫院信息科數據管理優化方案計劃
- 公司合伙人管理制度
- 婚介所個人資料登記表格
- 整形醫院雙眼皮培訓課件
- Meta分析很全的課件
- 電商倉庫流程及診斷
- 靜脈治療課件
- NPUAP壓瘡指南更新的解讀
- 2020年華為采購物料環保規范?V4
- IPQC制程檢驗流程圖
- 進料檢驗報告單
- 2022年江蘇省南京市中考歷史試題(含答案)
評論
0/150
提交評論