ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:23.63KB ,
资源ID:6686936      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6686936.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PrimeTime 时序分析流程和方法.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PrimeTime 时序分析流程和方法.docx

1、PrimeTime 时序分析流程和方法PrimeTime 时序分析流程和方法PrimeTime是Synopsys的一个单点的全芯片、门级静态时序分析器。它能分析大规模、同步、数字ASICS的时序。PrimeTime工作在设计的门级层次,并且和Synopsys其它工具整合得很紧密。基本特点和功能:时序检查方面:建立和保持时序的检查(Setup and hold checks)重新覆盖和去除检查(Recovery and removal checks)时钟脉冲宽度检查(Clock pulse width checks)时钟门锁检查(Clock-gating checks)设计检查方面:没有时钟端的

2、寄存器没有时序约束的结束点(endpoint)主从时钟分离(Master-slave clock separation)有多哥时钟的寄存器对层次敏感的时钟(Level-sensitive clocking)组合电路的反馈环(Combinational feedback loops)设计规则检查,包括最大电容(maximum capacitance)、最大传输时间(maximum transition)和最大扇出(maximum fanout)PrimeTime 时序分析流程和方法:在时序分析之前需要做的步骤:1、 建立设计环境- 建立搜索路径(search path)和链接路径(link pa

3、th)- 读入设计和库- 链接顶层设计- 建立运作条件、连线负载模型、端口负载、驱动和传输时间2、 说明时序声明(约束)- 定义时钟周期、波形、不确定性(uncertainty)和滞后时间(latency)- 说明输入、输出端口的延时3、 说明时序例外情况(timing exceptions)- 多周期路径(multicycle paths)- 不合法路径(false paths)- 说明最大和最小延时、路径分割(path segmentation)和失效弧(disabled arcs)4、 进行分析和生成报告- 检查时序- 生成约束报告- 生成路径时序报告开始先建立目录并将PrimeTime

4、本身所带的一个例子拷到新建的目录下,在下面的内容中将要用到这个例子。mkdir primetimecd primetimecp r $SYNOPSYS/doc/pt/tutorial .cd tutorial确认目录中有以下这些文件:AM2910.db The design .db for the top-level of the designCONTROL.db The design .db for the CONTROL blockREGCNT.db The design .db for the REGCNT blockUPC.db The design .db for the UPC b

5、lockY.data The Stamp data file for the Y blockY.mod The Stamp model file for the Y blockY_lib.db The library .db for the Y blockSTACK_lib.db The library .db for the STACK blockpt_lib.db The technology library .dbstack.qtm.pt The quick timing model script for the stack blockoptimize.dcsh The dc_shell

6、 optimization scripttiming.dcsh An example DC shell timing script for translationtutorial.pt The complete PrimeTime tutorial script for yourreference.例子是一个AM2910微处理器,如图所示模块图。运行PrimeTime:pt_shell定义搜索路径和链接路径:pt_shellset search_path “.”Pt_shellset link_path “* pt_lib.db STACK_lib.db Y_lib.db”* pt_lib.d

7、b STACK_lib.db Y_lib.db读入设计:PrimeTime支持以下设计格式:. 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.)读入AM29

8、10的顶层设计文件:pt_shell read_db AM2910.dbLoading db file /u/joe/primetime/tutorial/AM2910.db1链接设计:pt_shell link_design AM2910Loading db file /u/joe/primetime/tutorial/pt_lib.dbLoading db file /u/joe/primetime/tutorial/STACK_lib.dbLoading db file /u/joe/primetime/tutorial/Y_lib.dbLinking design AM2010 .Lo

9、ading db file /u/joe/primetime/tutorial/STACK.db.Designs used to link AM2910:CONTROL, REGCNT, STACK, UPC, YLibraries used to link AM2910:STACK_lib, Y_lib, pt_libDesign AM2910 was successfully linked显示当前已载入的设计:pt_shelllist_designs得到当前载入单元的信息:pt_shellreport_cell编译一个标记模型(Stamp Model):标记模型是一个诸如像DSP或RAMS

10、那样复杂模块的静态时序模型。标记模型与.lib模型共存,而不能代替它们。- 建立标记模型是用在晶体管层次的设计上,在这个层次上没有门级网表。- 标记模型语言是一种源代码语言,被编译成Synopsys的.db文件格式,可以被PrimeTime或Design Compiler使用。- 标记模型包含引脚到引脚的时序弧、建立和保持时间数据、模式信息、引脚的电容和驱动能力等等。标记模型还能保存属性(面积等等)。- 三态输出、锁存器和内部生成的时钟都可以被建模。一个标记模型包括两种源代码文件格式:- .mod文件仅包含引脚到引脚的弧的描述(没有延时数据)。- .data文件包含.mod文件中每条弧的延时数

11、据。标记模型可以有多个.data文件来描述不同运作条件下的时序。两种文件格式都需要编译成一个.db模型。编译AM2910中Y模块的标记模型(标记源代码文件是Y.mod和Y.data):pt_shell compile_stamp_model -model_file Y.mod -data_file Y.data -output YWrote model library core to ./Y_lib.dbWrote model to ./Y.dbPrimeTime生成两个.db文件:Y_lib.db:一个库文件,包含一个单元(cell)。这个单元叫做核(core)。Y.db:一个设计文件,引用

12、Y_lib.db中的单元核。编译一个快速时序模型(Quick Timing Model):可以为设计中还没有完成的模块建立一个快速时序模型,以使得完整的时序分析能够进行。通常的情形是:- 模块的HDL代码还没有完成时- 为了划分设计,在评估阶段为实际设计进行时序预测、约束估计时- 模块的标记模型还没有完成时一个快速时序模型是一组PrimeTime命令,而不是一种语言。为了方便和文档化可以将它们写在一个脚本文件中,然后保存为.db的格式。在PrimeTime和Design Compile中快速时序模型很有用处。还可以将快速时序模型保存为标记模型,这是开始一个复杂标记模型的一种便利的方法。例子中S

13、TACK模块的快速时序模型脚本文件是stack.qtm.pt,建立这个模型:pt_shell source -echo stack.qtm.pt.pt_shell report_qtm_model;.pt_shell save_qtm_model -output STACK -format dbWrote model library core to ./STACK_lib.dbWrote model to ./STACK.db进行时序分析配置运作环境读入并链接AM2910设计:pt_shell set search_path .pt_shell set link_path * pt_lib.d

14、b STACK_lib.db Y_lib.dbpt_shell read_db AM2910.dbpt_shell link_design AM2910链接了AM2910会导致其它已经链接的设计变为不链接的状态。在内存里只允许有一个链接的设计。当一个设计不链接,所有时序信息将被去除,并会出现警告,这和Design Compiler不同。如果需要保存所标注的信息,可以在链接一个新的设计之前用write_script命令。如果以后重新链接这个设计,只要运行这个脚本就可以了。建立运作条件和连线负载模型:PrimeTime在生成建立时序报告(setup timing reports)时使用最大(Max

15、imum)运作条件和连线负载模型;在生成保持时序报告(hold timing reports)时使用最小(Minimum)运作条件和连线负载模型。pt_shell set_operating_conditions -library pt_lib -min BCCOM -max WCCOMpt_shell set_wire_load_mode toppt_shell set_wire_load_model -library pt_lib -name 05x05 -minpt_shell set_wire_load_model -library pt_lib -name 20x20 max如果运作

16、条件在两个不同的库中,用set_min_library命令来在最大库和最小库中建立联系。得到一张库的列表:pt_shell list_librariesLibrary Registry: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_shellreport_lib pt_lib基本声明

17、:pt_shell create_clock -period 30 get_ports CLOCKpt_shell set clock get_clock CLOCKpt_shell set_clock_uncertainty 0.5 $clockpt_shell set_clock_latency -min 3.5 $clockpt_shell set_clock_latency -max 5.5 $clockpt_shell set_clock_transition -min 0.25 $clockpt_shell set_clock_transition -max 0.3 $clock时

18、钟门锁检查(Clock-Gating Checks):pt_shell set_clock_gating_check -setup 0.5 -hold 0.1 $clockpt_shell set_min_pulse_width 2.0 $clock如果设计被反标过,PrimeTime用SDF的建立和保持时间值,以及时钟脉冲宽度说明。得到一个时序摘要:pt_shellreport_designpt_shellreport_reference检查时序声明和设计的结构:在进行时序分析之前运行check_timing命令是关键。这个命令能够检查到所有可能的时序问题。在这个例子中将会出现警告,原因是存

19、在没有约束条件的端口。运行时序分析设置端口延时并检查时序:pt_shell set_input_delay 0.0 all_inputs -clock $clockpt_shell set_output_delay 2.0 get_port INTERRUPT_DRIVER_ENABLE -clock $clockpt_shell set_output_delay 1.25 get_port MAPPING_ROM_ENABLE -clock $clockpt_shell set_output_delay 0.5 get_port OVERFLOW -clock $clockpt_shell

20、set_output_delay 1.0 get_port PIPELINE_ENABLE -clock $clockpt_shell set_output_delay 1.0 get_port Y_OUTPUT -clock $clockpt_shell set_driving_cell -lib_cell IV -library pt_lib all_inputspt_shell set_capacitance 0.5 all_outputspt_shell check_timing保存设置:将所设置的时序信息保存为脚本文件可以确保在接下去的运行中保留一个时序环境的复本。使用write_s

21、cript命令,这个命令将以下这些信息保存到一个命令文件中:Clocks Names, waveforms, latency, and uncertaintyExceptions False and multicycle paths, minimum and maximumdelays, and path groupsDelays Input and output delays, all delay annotations, andtiming checksNet and port attributes Capacitance, resistance, and fanoutDesign env

22、ironment Wire load model, operation condition, drive, driving cell,and transitionDesign rules Minimum and maximum capacitance, minimum andmaximum fanout, and minimum and maximum transitionwrite_script命令可以将脚本写成Design Compiler格式(dcsh or dctcl mode)或者PrimeTime格式(ptsh)。不能用PrimeTime写一个被标注设计的.db文件,因为Prime

23、Time只能写时序模型的.db文件。以脚本为主要方式是为了和Design Compiler传递数据。pt_shell write_script -format dctcl -output AM2910.tclpt_shell write_script -format dcsh -output AM2910.dcshpt_shell write_script -format ptsh -output AM2910.pt运行基本的分析:1 得到AM2910的约束报告:pt_shellreport_constraint2. 检查报告中的时序违规(timing violations)和约束违规(con

24、straints violations)3 到更多关于违规的信息:pt_shell report_constraint -all_violators4 检查这份报告:这里有多少违规的结束点(endpoints)?报告基于路径的时序信息:pt_shellreport_timing设置时序例外情况:因为PrimeTime直到进行完整的时序升级(timing update)之前才检查时序例外情况的正确性,所以要运行report_exceptions以确定它们的正确性。声明AM2910的时序例外情况。设置一条两个时钟周期的路径,其中建立时间为2,保持时间为1:pt_shell set_false_pa

25、th -from U3/OUTPUT_reg /CP -to U2/OUTPUT_reg /Dpt_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_timingpt_shell report_exceptionspt_shell report_exceptions -ignored评估时序例外情况结果:1 得到另外一个约束报告

26、并评估违规情况:pt_shellreport_constraint all_violators2 检查这份约束报告3 确信所设置的例外情况是否能够使得设计中的违规显现比以前更少。设计中最差余量(the worst slack)是什么?pt_shellreport_timing4. 检查这份详细的时序报告。5. 看其它的违规路径。从这份约束报告中选择一个结束点,并键入: pt_shell report_timing -to endpoint6. 检查这份报告。提取一个子设计的边界时序特性信息:一个子设计的相关时序特性信息的提取是基于它相关的上级设计环境。这些信息有两个主要用途:一个主要用途是Pr

27、imeTime将这些相关特性信息提供给Design Compiler作为约束信息。这是DC中从芯片级分析到模块级优化主要的纽带,与只是作分析的单点工具相比提供了更佳的整合性。提取了相关特性信息之后,命令PrimeTime写一个包含子设计或模块时序信息的脚本。在提取时序特性的同时,要注意:1 特性信息提取不能够预计子设计的时序状况;2 特性信息提取没有最大或最小这两种工作模式。所以在做这步工作之前要设置单一的、正确的运作条件。对于PrimeTime而言,相关时序信息允许作层次化的时序分析,并观察芯片层次的时序约束;对于Design Compiler而言,相关时序信息允许在综合或逻辑优化时设置时序

28、约束。在Design Compiler中设置综合或优化约束的步骤是:1 在PrimeTime中读入顶层设计2 确认需要优化的子设计3 提取每一个子设计的特性信息4 为每一个子设计生成一个Design Compiler的脚本5 将这些子设计读到Design Compiler中6 将步骤4中生成的脚本引入进来7 进行模块级的优化仅将需要优化的子设计读入到DC中去,这样DC运行起来可以效率高一些。优化完这些模块之后,再将它们读入到PrimeTime中去作新一轮的时序分析。在这个例子中,从时序报告中可以看出模块U3(REGCNT)和U2(UPC)可以进一步优化,也许能消除一些违规情况。因为要纠正建立时

29、序违规,所以要配置最差情况的运行条件。pt_shell set_operating_conditions -library pt_lib WCCOMpt_shell characterize_context U2 U3pt_shell write_context U2 -output UPC.char.dcsh -format dcshpt_shell write_context U3 -output REGCNT.char.dcsh -format dcshpt_shell write_script -format ptsh -output AM2910.new.pt% dc_shelldc_shell include optimize.dcsh.dc_shell quitpt_shell read_db REGCNT.opt.db UPC.opt.dbpt_shell current_design AM2910pt_shell swap_cell U3 REGCNT.opt.db:REGCNTpt_shell swap_cell U2 UPC.opt.db:UPCpt_shell source AM2910.new.ptpt_shell check_ti

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1