收藏 分享(赏)

PrimeTime使用说明(中文).pdf

上传人:精品资料 文档编号:9526693 上传时间:2019-08-12 格式:PDF 页数:40 大小:369.36KB
下载 相关 举报
PrimeTime使用说明(中文).pdf_第1页
第1页 / 共40页
PrimeTime使用说明(中文).pdf_第2页
第2页 / 共40页
PrimeTime使用说明(中文).pdf_第3页
第3页 / 共40页
PrimeTime使用说明(中文).pdf_第4页
第4页 / 共40页
PrimeTime使用说明(中文).pdf_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、摘要: 本文介绍了数字集成电路设计中静态时序分析(Static Timing Analysis)和形式验证(Formal Verification)的一般方法和流程。这两项技术提高了时序分析和验证的速度,在一定程度上缩短了数字电路设计的周期。本文使用Synopsys公司的PrimeTime进行静态时序分析,用Formality进行形式验证。由于它们都是基于Tcl(Tool Command Language)的工具,本文对Tcl也作了简单的介绍。 关键词: 静态时序分析 形式验证 PrimeTime Formality Tcl 目 录 第一章 绪论 (1) 1.1 静态时序分析 1.2 时序验证

2、技术 第二章 PrimeTime 简介 (3) 2.1 PrimeTime的特点和功能 2.2 PrimeTime进行时序分析的流程 2.3 静态时序分析中所使用的例子 2.4 PrimeTime的用户界面 第三章 Tcl与pt_shell的使用 (6) 3.1 Tcl中的变量 3.2 命令的嵌套 3.3 文本的引用 3.4 PrimeTime中的对象 3.4.1 对象的概念 3.4.2 在PrimeTime中使用对象 3.4.3 针对collection的操作 3.5 属性 3.6 查看命令 第四章 静态时序分析前的准备工作 (12) 4.1 编译时序模型 4.1.1 编译Stamp Mod

3、el 4.1.2 编译快速时序模型 4.2 设置查找路径和链接路径 4.3 读入设计文件 4.4 链接 4.5 设置操作条件和线上负载 4.6 设置基本的时序约束 4.6.1 对有关时钟的参数进行设置 4.6.2 设置时钟门校验 4.6.3 查看对该设计所作的设置 4.7 检查所设置的约束以及该设计的结构 第五章 静态时序分析 (18) 5.1 设置端口延迟并检验时序 5.2 保存以上的设置 5.3 基本分析 5.4 生成path timing report 5.5 设置时序中的例外 5.6 再次进行分析 第六章 Formality 简介 (22) 6.1 Formality的基本特点 6.2

4、 Formality在数字设计过程中的应用 6.3 Formality的功能 6.4 验证流程 第七章 形式验证 (27) 7.1 fm_shell命令 7.2 一些基本概念 7.2.1 Reference Design和Implementation Design 7.2.2 container 7.3 读入共享技术库 7.4 设置Reference Design 7.5 设置Implementation Design 7.6 保存及恢复所作的设置 7.7 验证 第八章 对验证失败的设计进行 Debug (32) 8.1 查看不匹配点的详细信息 8.2 诊断程序 8.3 逻辑锥 8.3.1 逻

5、辑锥的概念 8.3.2 查看不匹配点的逻辑锥 8.3.3 使用逻辑锥来Debug 8.3.4 通过逻辑值来分析 诸 论 1第一章 绪论 我们知道,集成电路已经进入到了 VLSI 和 ULSI 的时代,电路的规模迅速上升到了几十万门以至几百万门。而 IC 设计人员的设计能力则只是一个线性增长的曲线,远远跟不上按照摩尔定律上升的电路规模和复杂度的要求。这促使了新的设计方法和高性能的 EDA 软件的不断发展。 Synopsys 公司的董事长兼首席执行官 Aart de Geus 曾经提到,对于现在的 IC设计公司来说,面临着三个最大的问题:一是设计中的时序问题;二是验证时间太长;三是如何吸引并留住出

6、色的设计工程师。他的话从一个侧面表明了,随着 IC设计的规模和复杂度的不断增加,随着数百万系统门的设计变得越来越普遍,时序分析和设计验证方面的问题正日益成为限制 IC 设计人员的瓶颈。 对于这些问题,设计者们提出的策略有:创建物理综合技术、开发更快更方便的仿真器,使用静态时序分析和形式验证技术、推动 IP 的设计和应用等等。本文将着重于探讨其中的静态时序分析和形式验证两项技术,在集成电路设计日益繁复的背景下,它们为 IC 产品更快更成功地面对市场提供了可能。 1.1 静态时序分析 一般来说,要分析或检验一个电路设计的时序方面的特征有两种主要手段:动态时序仿真(Dynamic Timing Si

7、mulation)和静态时序分析(Static Timing Ana -lysis)。 动态时序仿真的优点是比较精确,而且同后者相比较,它适用于更多的设计类型。但是它也存在着比较明显的缺点:首先是分析的速度比较慢;其次是它需要使用输入矢量,这使得它在分析的过程中有可能会遗漏一些关键路径(critical pat -hs),因为输入矢量未必是对所有相关的路径都敏感的。 静态时序分析的分析速度比较快,而且它会对所有可能的路径都进行检查,不存在遗漏关键路径的问题。我们知道,IC 设计的最终目的是为了面对竞争日益激诸 论 2烈的市场,Time-to-market 是设计者们不得不考虑的问题,因此对他们

8、来说,分析速度的提高,或者说分析时间的缩短,是一个非常重要的优点。 1.2 形式验证技术 我们知道,验证问题往往是 IC 产品开发中最耗费时间的过程之一,而且它需要相当多的计算资源。开发一个带有相应的测试向量的测试平台是很费时的工作,而且它要求开发者必须对设计行为有很好的很深入的理解。而形式验证技术,简单地说就是将两个设计或者说一个设计的两个不同阶段的版本进行等效性比较的技术,由于能够很有效地缩短为了解决关键的验证问题所花费的时间,正在逐渐地被更多的人接受和使用。这方面的工具有 Synopsys 公司的 Formality 和 Verp -lex 公司的 Conformal LEC 等。 本文

9、将讨论使用 Synopsys 的工具 PrimeTime 和 Formality 进行静态时序分析和形式验证的一般方法和流程。本文的第二章简要介绍了 PrimeTime 的基本功能和特点。第三章介绍了 Tcl 在 PrimeTime 中的基本使用,重点是关于对象和属性的操作。第四章介绍了在进行静态时序分析之前要作的准备工作。第五章介绍了对一个具体例子进行静态时序分析的过程。第六章介绍了 Formality 的基本特点和验证流程。第七章介绍了对一个具体例子进行形式验证的过程。第八章介绍了对验证失败的设计进行 Debug 的各种技巧。 PrimeTime简介 3第二章 PrimeTime简介 正如

10、本文前面所提到的,静态时序分析方法由于有着更快的分析速度等优点,正在被更多的设计者们所重视。PrimeTime是Synopsys的静态时序分析软件,常被用来分析大规模、同步、数字ASIC。PrimeTime适用于门级的电路设计,可以和Synopsys公司的其它EDA软件非常好的结合在一起使用。 这一章将简要介绍PrimeTime的基本功能和特点,以及使用PrimeTime进行静态时序分析的一般过程。 2.1 PrimeTime的特点和功能 作为专门的静态时序分析工具,PrimeTime可以为一个设计提供以下的时序分析和设计检查:? 建立和保持时间的检查(setup and hold check

11、s) 时钟脉冲宽度的检查 时钟门的检查(clock-gating checks) recovery and removal checks unclocked registers 未约束的时序端点(unconstrained timing endpoints) master-slave clock separation multiple clocked registers 组合反馈回路(combinational feedback loops) 基于设计规则的检查,包括对最大电容、最大传输时间、最大扇出的检查 等。 PrimeTime具有下面的特点: 1)PrimeTime是可以独立运行的软件,

12、它不需要逻辑综合过程中所必需的各种数据结构,而且它对内存的要求相对比较低。 2)PrimeTime特别适用于规模较大的、SOC(system-on-chip)的设计。 PrimeTime简介 4在数字集成电路设计的流程中,版图前、全局布线之后已经版图后,都可以使用PrimeTime进行静态时序分析。 2.2 PrimeTime进行时序分析的流程 使用PrimeTime对一个电路设计进行静态时序分析,一般要经过下面的步骤: 1)设置设计环境 在可以进行时序分析之前,首先要进行一些必要的设置和准备工作。具体来说包括了: 设置查找路径和链接路径 读入设计和库文件 链接顶层设计 对必要的操作条件进行设

13、置,这里包括了线上负载的模型、端口负载、驱 动、以及转换时间等 设置基本的时序约束并进行检查 2)指定时序约束 (?timing assertions/constraints) 包括定义时钟周期、波形、不确定度(uncertainty)、潜伏性(latency),以及指明输入输出端口的延时等。 3)设置时序例外(?timing exceptions): 这里包括了: 设置多循环路径(multicycle paths) 设置虚假路径(false paths) 定义最大最小延时、路径的分段(path segmentation)以及无效的arcs 4)进行时序分析: 在作好以上准备工作的基础上,可以

14、对电路进行静态时序分析,生成constra -int reports和path timing reports。 以上仅仅是PrimeTime进行静态时序分析的简单流程,在本文以下的部份中将会有更详细的叙述。 PrimeTime简介 52.3 静态时序分析中所使用的例子 在本文中,进行静态时序分析时所用的例子是微处理器AMD 2910,图2-2给出了它的顶层的电路图。 Figure2-2 AMD 2910 微处理器 2.4 PrimeTime的用户界面 PrimeTime提供两种用户界面,图形用户界面GUI(Graphical User Interf -ace)和基于Tcl的命令行界面pt_sh

15、ell,其运行方式分别是: PrimeTime pt_shell 退出的命令是quit、exit或者d。事实上,在GUI界面中通过菜单进行的每一个操作,都对应着相应的pt_shell的命令。因此,本文以下的章节都只针对于pt_ shell来完成。 Tcl与pt_shell的使用 6第三章 Tcl与pt_shell的使用 Tcl是Tool Command Language的缩写,由于PrimeTime的命令语言是基于Tcl标准的,所以在这一章里我想大致介绍一下Tcl在PrimeTime中的基本使用。除了一些最常用的Tcl命令之外,主要介绍了pt_shell中有关对象和属性的操作。 事实上,大多数

16、synopsys公司的EDA工具都是基于Tcl标准的。例如在第二章的图2-1中可以看到的综合软件Design Compiler也是。由于都基于Tcl标准,PrimeTime中的大多数命令以及命令参数都和Design Compiler中是相同的。 3.1 Tcl中的变量 我们可以把Tcl看作是一种比较高级的语言,它很容易理解和使用,所以这里对它的介绍也是很简单的。 与变量有关的有下列操作: 1)定义变量:set 变量名 变量值 例如: set clock_period 10 2)引用变量:$变量名 例如: echo $clock_period 3)删除变量:unset 变量名 4)打印变量:pr

17、intvar 变量名(无变量名时打印所有变量) 或者: echo $变量名 举个例子,在使用PrimeTime之前,我们可以把它设置成分页显示,以便于浏览在运行时生成的信息,此时可以使用如下的命令: set sh_enable_page_mode true 如果希望每次运行时PrimeTime总是分页显示,可以到.synopsys_pt.setup文件中去更改sh_enable_page_mode变量的设置。 Tcl与pt_shell的使用 73.2 命令的嵌套 在使用PrimtTime的过程中,命令的嵌套经常会被用到。嵌套命令时,用方括号()分隔开每一层的命令,例如: 命令1 命令2 命令3

18、 在这样一个例子中,命令3首先被执行,它的结果将被作为命令2的一个参数,然后依次执行下去。 3.3 文本的引用 在Tcl中,可以使用两种方法来引用文本或者说字符串: 1)弱引用:使用双引号来引用文本。在双引号里出现的变量、命令和反斜杠不会被转义,仍然保持特殊意义。 2)强引用:使用大括号来引用文本。大括号中的字符串将按照字面上被引用。 例如:set mydelay 10 echo “The value of mydelay is $mydelay“ 得到的结果将是:The value of mydelay is 10,而 echo The value of mydelay is $mydela

19、y 得到的结果将是:The value of mydelay is $mydelay。 除此之外,可以使用反斜杠来转义一个单一的特殊字符,以及使用expr命令来得到算术表达式的值。 3.4 PrimeTime中的对象 3.4.1 对象的概念 在IC设计中,“对象(object)”是一个常用的概念。一般来说,一个设计会包含以下的对象:Design、Cell、Port、Pin、Net、Clock等。在分析和验证的过程中,也经常要跟这些对象打交道。因此搞清楚这些概念,才不会在使用软件的过程中遇到不必要的障碍。 Tcl与pt_shell的使用 8Design:有一定逻辑功能的电路描述,它可以是独立的,

20、也可以包含有其他的子设计。虽然严格地来说子设计只是设计的一部份,但是Synopsys也把它看作是一个design。 Cell:在Synopsys的术语中,cell和instance被认为是同样的概念,都是design中例化的一个具体元件。 Port:指主要的input、output或者design的I/O管脚。 Pin:对应于设计中的cell的input、output或者I/O管脚。 Reference:cell或者instance参考的源设计的定义。 Net:是指信号的名字,即通过连接ports与pins或者pins与pins而把一个设计连接在一起的金属线的名字。 Clock:作为时钟源的p

21、ort或者pin。 下面的例子是用VHDL语言描述的一个电路,包含了上面所说的各种对象: Figure3-1 3.4.2 在PrimeTime中使用对象 PrimeTime提供了一个命令来选中这些对象,或者更准确地说是建立一个这些对象的collection,命令的形式为: get_objtype 其中objtype是这种对象的类型,可以使用“help get_*”来查看。这个命令与Design Compiler中的find命令有点类似。 值得注意的是,这个命令并不是返回被选中对象的列表,而是建立一个指向被选中对象的collection。这种方法比在memory中保存一个庞大的列表要节省时间和资

22、源。要列举所选中的对象,可以用query_objects命令。通常可以把建立的collection设置为变量,以方便使用,例如: set data_ports get_ports D* query_objects $data_ports 另外,也可以用all_objtype命令来建立某种对象的collection,例如:all_clocks、all_inputs、all_outputs、all_instances、all_registers、Tcl与pt_shell的使用 9all_connected等。其中all_connected的作用是列出与某对象连接的所有pin、port或者net,例

23、如要得到所有连接到CLOCK的对象,可以: query_objects all_connected get_nets CLOCK 3.4.3 针对collection的操作 1)foreach_in_collection 顾名思义,这个命令的作用是对一个collection中的所有的对象进行某种操作,其形式为 foreach_in_collection variable collection body 例如,要打印出端口总线Y_OUTPUT的电容: foreach_in_collection outpin get_ports Y_OUTPUT* ? set maxcap get_attribu

24、te $outpin wire_capacitance_max ? set pinnname get_attribute $outpin full_name ? echo “Max capacitance of port $pinname is $maxcap“ ? 说明:问号表示命令尚未结束,出现在引号,大括号和中括号里。 这个命令比较复杂,它的执行过程是这样的:执行get_ports命令得到collection;依次定义三个新的变量:outpin、maxcap以及pinname;然后对于collection中的每一项,依次执行echo命令。 foreach_in_collection命令是

25、针对于collection的,对于一般的列表可以使用Tcl中的标准命令foreach。 2)从collection中增加或删除对象 add_to_collection collection object remove_from_collection collection object 其中的object表示要增加或者删除的对象,这两个命令将返回一个新的collection。 3)collection的过滤 Tcl与pt_shell的使用 10根据一定的条件对collection进行过滤,可以使用filter_collection命令,它将在collection中寻找符合条件的对象,并返回一个新

26、的collection,如果没有匹配的对象的话将返回空的字符串。也可以collection命令中使用-filter参数。 filter命令中的条件表达式可以使用以下的运算符:=,!=,=,=,= 例如,要列出名字是ND2,ND21,ND3,ND4p诸如此类的cells: query get_cells * -hier -filter “ref_name = ND*“ 说明:在使用PrimeTime时可以使用缩略的命令,这里就使用了query来代替query_objects。 3.5 属性 属性(arritubes)可以是PrimeTime预定义的,也可以是从综合软件如Design Compil

27、er继承下来的(例如时钟周期、输入延迟、net的电容等),也可以是由用户定义的。 与属性相关的命令有: list_arritubes get_arritube report_arritube define_user_arritube set_user_arritube remove_user_arritube 利用这些命令可以很方便地了解设计,例如想知道AM2910设计中的最大电压,可以: get_attribute get_designs AM2910 voltage_max 3.6 查看命令 与Unix相似,可以使用help或者man来查看命令的用法。例如查看与clock相关的命令可以:

28、Tcl与pt_shell的使用 11help *clock 查看命令的参数可以用如下的命令: help -verbose 其他的命令这里就不再赘述了,在后面的章节中使用到时再一一作介绍。 静态时序分析前的准备工作 12第四章 静态时序分析前的准备工作 从第二章里的时序分析流程可以看到,在对一个设计进行静态时序分析之前,首先要作一些基本的环境设置和准备工作,包括: 设置查找和链接路径; 读入并链接所要分析的设计; 设置操作条件和线上负载模型(wire load model?); 设置基本的时序约束(?timing assertions); 检查所设置的约束以及该设计的结构。 这一章将依次介绍这些

29、内容。 4.1 编译时序模型 4.1.1 编译Stamp Model Stamp model是针对于复杂模块例如DSP(digital signal processing)的核心或者RAM而建立的静态时序模型。它一般是为晶体管级的设计而创建的,在设计中没有门级的网表。Stamp model中可以包含的时序信息有:pin-to-pin的arcs(?)、建立和保持时间、pin的电容和负载、以及三态输出、锁存器、内建时钟等。 一个Stamp model包括两个源文件: 1).mod文件,包含对pin-to-pin的arc的描述(不包括延时)。 2).data文件,包括.mod文件中描述的每一个arc

30、的延迟数据。 例如,对于AM2910设计中的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是一个设计文件,是Y_lib.db中的单元core的例化。正是由于它们之间的这种关系,为了在链接时能够正确地例化Y.db,库Y_lib.db必须要加入到链接路径(link 静态时序分析前的准备工作

31、13_path)中去。 4.1.2 编译快速时序模型 对于设计中的某些未完工的模块?比如说,该模块的HDL,或者完整的stamp model没有完成你可以创建一个快速时序模型来进行分析。快速时序模型是一个临时性的模型,可以提供进行时序分析而需要的时序信息。实际上,快速时序模型是包含一系列pt_shell命令的文件,而不是语言。这样比使用Stamp mo -del的语言去写一个模型花费的时间更少。 例如为AM2910中的STACK模块创建一个快速时序模型: source -echo stack.qtm.pt report_qtm_model; save_qtm_model -output STA

32、CK -format db 其中stack.qtm.pt是一个脚本文件,描述了建立快速时序模型所需要的所有pt_shell命令,所以在这里直接source就可以了。它的具体内容参见附录1。 创建好之后,用save_qtm_model命令把该模型保存为.db格式的文件。同其他类型的模型一样,PrimeTime也创建了两个.db文件,STACK_lib.db和STACK .db。 最后需要说明的是,4.1节中的操作并非对所有的设计都是必需的,所有我没有把它加入到本章开头的流程中去。 4.2 设置查找路径和链接路径 查找路径和链接路径在PrimeTime中对应着两个变量:search_path和li

33、nk_path,用set命令对它们进行设置。 设置查找路径:set search_path “.“ 设置链接路径:set link_path “* pt_lib.db STACK_lib.db Y_lib.db“ 我是在存放AMD 2910的设计文件的目录下运行PrimeTime的,所以把search _path设置成当前目录“.”。 静态时序分析前的准备工作 14link_path中的符号“*”的意思是,当PrimeTime在链接时,它会使用内存中的设计文件和库文件。pt_lib.db、STACK_lib.db、Y_lib.db是该设计中用到的库文件。 4.3 读入设计文件 下面的表格给出了

34、PrimeTime可以接受的文件类型,以及读入每一种类型的设计时,所使用的不同命令。 PrimeTime可以接受的文件类型 命令 Synopsys数据库文件(.db) read_db Verilog网表文件 read_verilog EDIF网表文件 (Electronic Design Interchange Format) read_edif VHDL网表文件 read_vhdl 本文中分析的例子使用的是第一种格式,这是大部份Synopsys工具都支持和共享的一种公用的中间结构,它是描述文本数据的二进制已编译表格式。例子中顶层的设计文件是AM2910.db,所以这样读入该设计: read_

35、db AM2910.db 4.4 链接 链接过程就在库文件中寻找到设计中所需要的元件,并将该设计例化的过程。PrimeTime首先调用link_path中指定的所有的库文件,然后进行链接,该设计中的五个子模块CONTROL、REGCNT、STACK、UPC、Y会依次被读入进来。可以看到,我们在定义link_path的时候,一定要把所有的技术库(pt_lib.db)和模型库文件(STACK_lib.db、Y_lib.db)都写在里面,否则会导致链接的失败。 链接使用如下的命令: 静态时序分析前的准备工作 15link_design AM2910 说明: 1)在上面的例子中,我没有把子模块的设计文

36、件读入到Memory,因为在链接的时候PrimeTime可以自动读入它们。但是注意这样做的前提是PrimeTime能够在search_path中找到所有的子设计文件。 2)如果在link_design命令中,没有指定需要链接的设计名,PrimeTime会链接当前设计。如果没有当前设计,PrimeTime会读入并链接最近的设计。 3)在默认的情况下,变量link_create_black_boxes的值是true。如果链接过程中PrimeTime无法找到某个元件的reference,即无法将其例化,它将为该元件建立一个black box。假如变量link_create_black_boxes被设

37、置为false,链接将会失败。 链接完成之后我们可以用下面的命令来查看当前读入的设计: list_design 还可以查看当前已经读入的单元的信息: report_cell 需要注意的是,memory中只能存在一个已链接的设计,当你链接一个新的设计后,以前的设计将变成未链接的,此时所有的时序信息都将丢失,系统会给一个warning。你可以在链接新的设计之前使用命令 write_script 生成一个脚本(.pt文件),以后可以通过运行这个脚本来重新链接。 4.5 设置操作条件和线上负载 set_operating_conditions -library pt_lib -min BCCOM -m

38、ax WCCOM set_wire_load_mode top set_wire_load_model -library pt_lib -name 05x05 -min set_wire_load_model -library pt_lib -name 20x20 -max PrimeTime在产生setup timing report的时候使用最大的操作条件和线上负载,在产生hold timing reports的时候则使用最小的操作条件和线上负载。 静态时序分析前的准备工作 16如果最大和最小的操作条件在两个不同的库中,可以使用命令 set_min_library 来建立两个库之间的联系。

39、可以用list_libraries命令来查看所有的库,然后对需要详细了解的库,用“report_lib 库名”来查看. 4.6 设置基本的时序约束 4.6.1 对有关时钟的参数进行设置 create_clock -period 30 get_ports CLOCK set clock get_clock CLOCK set_clock_uncertainty 0.5 $clock set_clock_latency -min 3.5 $clock set_clock_latency -max 5.5 $clock set_clock_transition -min 0.25 $clock se

40、t_clock_transition -max 0.3 $clock 如果设计中具有完全back-annotated?(注释)的时钟网络的话,上面的参数如uncertainty、transition等都可以使用下面的命令自动得到: set_propagated_clock clock_object_list 4.6.2 设置时钟门校验(clock-gating checks) 设定时钟门的建立和保持时间的数值,以及最小的脉冲宽度。 set_clock_gating_check -setup 0.5 -hold 0.1 $clock set_min_pulse_width 2.0 $clock

41、如果该设计是back-annotated的,PrimeTime会从SDF(standard delay format,标准延迟格式)中取得以上参数。 4.6.3 查看对该设计所作的设置 使用命令: report_design 可以得到该设计的最大、最小的操作条件和线上负载。 report_reference 静态时序分析前的准备工作 17可以得到每个模块及其面积的信息。而且更重要的是,它能在各个模块中识别出stamp模型、以及快速时序模型,其余的模块都是门级的网表。 4.7 检查所设置的约束以及该设计的结构 在开始静态时序分析之前,注意要执行下面的指令进行检查: check_timing 该命

42、令会检查该设计的结构和约束,给出可能存在的时序问题,如果存在问题的话则给出errors或者warnings。可以在check_timing命令中设定参数,以得到有关error和warning的更多信息。具体的参数可以用命令“check_timing -help”查看,限于篇幅这里不再赘述。 在本文所分析的设计AM2910中,check_timing之后产生了一些warnings,这是因为设计中存在的无约束的端口引起的。解决这个问题的方法,将在下一章中讲述。 静态时序分析 18第五章 静态时序分析 这一章将讲述对AM2910进行静态时序分析的过程。 5.1 设置端口延迟并检验时序 对于所有与时钟

43、相关的端口,都要设置输入、输出的延迟。 set_input_delay 0.0 all_inputs -clock $clock set_output_delay 2.0 get_port INTERRUPT_DRIVER_ENABLE -clock $clock set_output_delay 1.25 get_port MAPPING_ROM_ENABLE -clock $clock set_output_delay 0.5 get_port OVERFLOW -clock $clock set_output_delay 1.0 get_port PIPELINE_ENABLE -clo

44、ck $clock set_output_delay 1.0 get_port Y_OUTPUT -clock $clock 除此之外,还要对所有的输入端设置一个驱动单元,对所有的输出端设置电容负载。 set_driving_cell -lib_cell IV -library pt_lib all_inputs set_capacitance 0.5 all_outputs 说明:clock是在第四章中定义的变量(set clock get_clock CLOCK),以后出现将不再说明。 完成以上的设置之后,可以再运行一次检查: check_timing 在上一章中我们看到,在对设计AM29

45、10运行check_timing的时候出现了错误信息,产生的原因是设计中存在着无约束的端口。现在再次检查,没有warnings出现,该设计已经是完全约束的了。 5.2 保存以上的设置 使用write_script命令将所作的设置保存到一个脚本文件中,这样在下一次运行的时候可以直接通过该文件来完成所有的设置。 该命令可以生成三种格式的文件: 静态时序分析 191)Design Compiler的dcsh格式(.dcsh) 2)Design Compiler的dctcl格式(.tcl) 3)PrimeTime的文件格式:(.pt) 命令的形式为: write_script -format dctc

46、1 -output AM2910.tc1 write_script -format dcsh -output AM2910.dcsh write_script -format ptsh -output AM2910.pt 事实上这种脚本文件,也是PrimeTime和Design Compiler传递数据的一种主要方法。对于使用Design compiler来综合的电路设计,可以把一些重要的设置直接继承到PrimeTime中来。 在生成的脚本文件中,包含了以下的信息: Clocks names、waveforms、latency、uncertainty Timing Exceptions fal

47、se paths、multicycle paths、path groups、minimun and maximum delays Delays input and output delays、timing checks、all delay annotations Net and Port capacitance、resistance、fanout Design Environment wire load model、operation condition、drive、 driving cell、transition Design Rules minimum and maximum capaci

48、tance、fanout、transition 可以看到,表5-1中包括了我们前面所作的所有的设置。 调用脚本的方法是: source -echo 脚本文件名 5.3 基本分析 运行report_constraint命令,得到的constraint report中包括了对整个设计的时序信息的总结。通过它,可以检查设计中存在的?timing violations和constrains violations。 静态时序分析 20具体来说constraint report中包含了以下的内容: 最大和最小延迟(min and max delay) 最小时钟脉冲宽度(min clock pulse width) 最小周期(min period) ?recovery and removal on registers 时钟门的建立和保持(clock-gating setup and hold) 最大和最小电容(min and max capacitance) 最大和最小转换周期(mi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报