复旦大学数字集成电路设计时序分析和验证教程Word下载.docx
- 文档编号:22321291
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:42
- 大小:38.45KB
复旦大学数字集成电路设计时序分析和验证教程Word下载.docx
《复旦大学数字集成电路设计时序分析和验证教程Word下载.docx》由会员分享,可在线阅读,更多相关《复旦大学数字集成电路设计时序分析和验证教程Word下载.docx(42页珍藏版)》请在冰豆网上搜索。
4.6.1对有关时钟的参数进行设置
4.6.2设置时钟-门校验
4.6.3查看对该设计所作的设置
4.7检查所设置的约束以及该设计的结构
第五章静态时序分析………………………………(18)
5.1设置端口延迟并检验时序
5.2保存以上的设置
5.3基本分析
5.4生成pathtimingreport
5.5设置时序中的例外
5.6再次进行分析
第六章Formality简介………………………………(22)
6.1Formality的基本特点
6.2Formality在数字设计过程中的应用
6.3Formality的功能
6.4验证流程
第七章形式验证………………………………(27)
7.1fm_shell命令
7.2一些基本概念
7.2.1ReferenceDesign和ImplementationDesign
7.2.2container
7.3读入共享技术库
7.4设置ReferenceDesign
7.5设置ImplementationDesign
7.6保存及恢复所作的设置
7.7验证
第八章对验证失败的设计进行Debug………………………………(32)
8.1查看不匹配点的详细信息
8.2诊断程序
8.3逻辑锥
8.3.1逻辑锥的概念
8.3.2查看不匹配点的逻辑锥
8.3.3使用逻辑锥来Debug
8.3.4通过逻辑值来分析
诸论1
第一章绪论
我们知道,集成电路已经进入到了VLSI和ULSI的时代,电路的规模迅速上升
到了几十万门以至几百万门.而IC设计人员的设计能力则只是一个线性增长的曲
线,远远跟不上按照摩尔定律上升的电路规模和复杂度的要求.这促使了新的设计
方法和高性能的EDA软件的不断发展.
Synopsys公司的董事长兼首席执行官AartdeGeus曾经提到,对于现在的IC
设计公司来说,面临着三个最大的问题:
一是设计中的时序问题;
二是验证时间太
长;
三是如何吸引并留住出色的设计工程师.他的话从一个侧面表明了,随着IC
设计的规模和复杂度的不断增加,随着数百万系统门的设计变得越来越普遍,时序
分析和设计验证方面的问题正日益成为限制IC设计人员的瓶颈.
对于这些问题,设计者们提出的策略有:
创建物理综合技术,开发更快更方便
的仿真器,使用静态时序分析和形式验证技术,推动IP的设计和应用等等.本文
将着重于探讨其中的静态时序分析和形式验证两项技术,在集成电路设计日益繁复
的背景下,它们为IC产品更快更成功地面对市场提供了可能.
§
一般来说,要分析或检验一个电路设计的时序方面的特征有两种主要手段:
动
态时序仿真(DynamicTimingSimulation)和静态时序分析(StaticTimingAna
-lysis).
动态时序仿真的优点是比较精确,而且同后者相比较,它适用于更多的设计类
型.但是它也存在着比较明显的缺点:
首先是分析的速度比较慢;
其次是它需要使
用输入矢量,这使得它在分析的过程中有可能会遗漏一些关键路径(criticalpat
-hs),因为输入矢量未必是对所有相关的路径都敏感的.
静态时序分析的分析速度比较快,而且它会对所有可能的路径都进行检查,不
存在遗漏关键路径的问题.我们知道,IC设计的最终目的是为了面对竞争日益激
诸论2
烈的市场,Time-to-market是设计者们不得不考虑的问题,因此对他们来说,分
析速度的提高,或者说分析时间的缩短,是一个非常重要的优点.
1.2形式验证技术
我们知道,验证问题往往是IC产品开发中最耗费时间的过程之一,而且它需
要相当多的计算资源.开发一个带有相应的测试向量的测试平台是很费时的工作,
而且它要求开发者必须对设计行为有很好的很深入的理解.而形式验证技术,简单
地说就是将两个设计--或者说一个设计的两个不同阶段的版本--进行等效性比
较的技术,由于能够很有效地缩短为了解决关键的验证问题所花费的时间,正在逐
渐地被更多的人接受和使用.这方面的工具有Synopsys公司的Formality和Verp
-lex公司的ConformalLEC等.
本文将讨论使用Synopsys的工具PrimeTime和Formality进行静态时序分析
和形式验证的一般方法和流程.本文的第二章简要介绍了PrimeTime的基本功能和
特点.第三章介绍了Tcl在PrimeTime中的基本使用,重点是关于对象和属性的操
作.第四章介绍了在进行静态时序分析之前要作的准备工作.第五章介绍了对一个
具体例子进行静态时序分析的过程.第六章介绍了Formality的基本特点和验证流
程.第七章介绍了对一个具体例子进行形式验证的过程.第八章介绍了对验证失败
的设计进行Debug的各种技巧.
PrimeTime简介3
第二章PrimeTime简介
正如本文前面所提到的,静态时序分析方法由于有着更快的分析速度等优点,
正在被更多的设计者们所重视.PrimeTime是Synopsys的静态时序分析软件,常
被用来分析大规模,同步,数字ASIC.PrimeTime适用于门级的电路设计,可以和
Synopsys公司的其它EDA软件非常好的结合在一起使用.
这一章将简要介绍PrimeTime的基本功能和特点,以及使用PrimeTime进行静
态时序分析的一般过程.
作为专门的静态时序分析工具,PrimeTime可以为一个设计提供以下的时序分
析和设计检查:
建立和保持时间的检查(setupandholdchecks)
时钟脉冲宽度的检查
时钟门的检查(clock-gatingchecks)
recoveryandremovalchecks
unclockedregisters
未约束的时序端点(unconstrainedtimingendpoints)
master-slaveclockseparation
multipleclockedregisters
组合反馈回路(combinationalfeedbackloops)
基于设计规则的检查,包括对最大电容,最大传输时间,最大扇出的检查
等.
PrimeTime具有下面的特点:
1)PrimeTime是可以独立运行的软件,它不需要逻辑综合过程中所必需的各
种数据结构,而且它对内存的要求相对比较低.
2)PrimeTime特别适用于规模较大的,SOC(system-on-chip)的设计.
PrimeTime简介4
在数字集成电路设计的流程中,版图前,全局布线之后已经版图后,都可以使
用PrimeTime进行静态时序分析.
使用PrimeTime对一个电路设计进行静态时序分析,一般要经过下面的步骤:
1)设置设计环境
在可以进行时序分析之前,首先要进行一些必要的设置和准备工作.具体来说
包括了:
设置查找路径和链接路径
读入设计和库文件
链接顶层设计
对必要的操作条件进行设置,这里包括了线上负载的模型,端口负载,驱
动,以及转换时间等
设置基本的时序约束并进行检查
2)指定时序约束(timingassertions/constraints)
包括定义时钟周期,波形,不确定度(uncertainty),潜伏性(latency),以及
指明输入输出端口的延时等.
3)设置时序例外(timingexceptions):
这里包括了:
设置多循环路径(multicyclepaths)
设置虚假路径(falsepaths)
定义最大最小延时,路径的分段(pathsegmentation)以及无效的arcs
4)进行时序分析:
在作好以上准备工作的基础上,可以对电路进行静态时序分析,生成constra
-intreports和pathtimingreports.
以上仅仅是PrimeTime进行静态时序分析的简单流程,在本文以下的部份中将
会有更详细的叙述.
PrimeTime简介5
在本文中,进行静态时序分析时所用的例子是微处理器AMD2910,图2-2给
出了它的顶层的电路图.
Figure2-2AMD2910微处理器
PrimeTime提供两种用户界面,图形用户界面GUI(GraphicalUserInterf
-ace)和基于Tcl的命令行界面pt_shell,其运行方式分别是:
%PrimeTime
%pt_shell
退出的命令是quit,exit或者^d.事实上,在GUI界面中通过菜单进行的每一个
操作,都对应着相应的pt_shell的命令.因此,本文以下的章节都只针对于pt_
shell来完成.
Tcl与pt_shell的使用6
第三章Tcl与pt_shell的使用
Tcl是ToolCommandLanguage的缩写,由于PrimeTime的命令语言是基于
Tcl标准的,所以在这一章里我想大致介绍一下Tcl在PrimeTime中的基本使用.
除了一些最常用的Tcl命令之外,主要介绍了pt_shell中有关对象和属性的操
作.
事实上,大多数synopsys公司的EDA工具都是基于Tcl标准的.例如在第二
章的图2-1中可以看到的综合软件DesignCompiler也是.由于都基于Tcl标准,
PrimeTime中的大多数命令以及命令参数都和DesignCompiler中是相同的.
我们可以把Tcl看作是一种比较高级的语言,它很容易理解和使用,所以这里
对它的介绍也是很简单的.
与变量有关的有下列操作:
1)定义变量:
set变量名变量值
例如:
setclock_period10
2)引用变量:
$变量名
echo$clock_period
3)删除变量:
unset变量名
4)打印变量:
printvar变量名(无变量名时打印所有变量)
或者:
echo$变量名
举个例子,在使用PrimeTime之前,我们可以把它设置成分页显示,以便于浏
览在运行时生成的信息,此时可以使用如下的命令:
setsh_enable_page_modetrue
如果希望每次运行时PrimeTime总是分页显示,可以到.synopsys_pt.setup文件
中去更改sh_enable_page_mode变量的设置.
Tcl与pt_shell的使用7
在使用PrimtTime的过程中,命令的嵌套经常会被用到.嵌套命令时,用方括
号([])分隔开每一层的命令,例如:
命令1[命令2[命令3]]
在这样一个例子中,命令3首先被执行,它的结果将被作为命令2的一个参数,然
后依次执行下去.
在Tcl中,可以使用两种方法来引用文本或者说字符串:
1)弱引用:
使用双引号来引用文本.在双引号里出现的变量,命令和反斜杠
不会被转义,仍然保持特殊意义.
2)强引用:
使用大括号来引用文本.大括号中的字符串将按照字面上被引
用.
setmydelay10
echo"
Thevalueofmydelayis$mydelay"
得到的结果将是:
Thevalueofmydelayis10,而
echo{Thevalueofmydelayis$mydelay}
Thevalueofmydelayis$mydelay.
除此之外,可以使用反斜杠来转义一个单一的特殊字符,以及使用expr命令
来得到算术表达式的值.
在IC设计中,"
对象(object)"
是一个常用的概念.一般来说,一个设计会
包含以下的对象:
Design,Cell,Port,Pin,Net,Clock等.在分析和验证的过
程中,也经常要跟这些对象打交道.因此搞清楚这些概念,才不会在使用软件的过
程中遇到不必要的障碍.
Tcl与pt_shell的使用8
Design:
有一定逻辑功能的电路描述,它可以是独立的,也可以包含有其他
的子设计.虽然严格地来说子设计只是设计的一部份,但是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:
作为时钟源的port或者pin.
下面的例子是用VHDL语言描述的一个电路,包含了上面所说的各种对象:
Figure3-1
PrimeTime提供了一个命令来选中这些对象,或者更准确地说是建立一个这些
对象的collection,命令的形式为:
get_objtype
其中objtype是这种对象的类型,可以使用"
helpget_*"
来查看.这个命令与
DesignCompiler中的find命令有点类似.
值得注意的是,这个命令并不是返回被选中对象的列表,而是建立一个指向被
选中对象的collection.这种方法比在memory中保存一个庞大的列表要节省时间
和资源.要列举所选中的对象,可以用query_objects命令.通常可以把建立的
collection设置为变量,以方便使用,例如:
setdata_ports[get_portsD
]
query_objects$data_ports
另外,也可以用all_objtype命令来建立某种对象的collection,例如:
all_clocks,all_inputs,all_outputs,all_instances,all_registers,
Tcl与pt_shell的使用9
all_connected等.其中all_connected的作用是列出与某对象连接的所有pin,
port或者net,例如要得到所有连接到CLOCK的对象,可以:
query_objects[all_connected[get_netsCLOCK]]
1)foreach_in_collection
顾名思义,这个命令的作用是对一个collection中的所有的对象进行某种操
作,其形式为
foreach_in_collectionvariablecollection{body}
例如,要打印出端口总线Y_OUTPUT的电容:
foreach_in_collectionoutpin[get_portsY_OUTPUT
]{
setmaxcap[get_attribute$outpinwire_capacitance_max]
setpinnname[get_attribute$outpinfull_name]
Maxcapacitanceofport$pinnameis$maxcap"
}
说明:
①问号表示命令尚未结束,出现在引号,大括号和中括号里.
②这个命令比较复杂,它的执行过程是这样的:
执行get_ports命令得到
collection;
依次定义三个新的变量:
outpin,maxcap以及pinname;
然后对于
collection中的每一项,依次执行echo命令.
foreach_in_collection命令是针对于collection的,对于一般的列表可以
使用Tcl中的标准命令foreach.
2)从collection中增加或删除对象
add_to_collectioncollectionobject
remove_from_collectioncollectionobject
其中的object表示要增加或者删除的对象,这两个命令将返回一个新的
collection.
3)collection的过滤
Tcl与pt_shell的使用10
根据一定的条件对collection进行过滤,可以使用filter_collection命
令,它将在collection中寻找符合条件的对象,并返回一个新的collection,如
果没有匹配的对象的话将返回空的字符串.也可以collection命令中使用-filter
参数.
filter命令中的条件表达式可以使用以下的运算符:
==,!
=,>
=,<
=,=~
例如,要列出名字是ND2,ND21,ND3,ND4p诸如此类的cells:
query[get_cells*-hier-filter"
ref_name=~ND*"
在使用PrimeTime时可以使用缩略的命令,这里就使用了query来代替
query_objects.
属性(arritubes)可以是PrimeTime预定义的,也可以是从综合软件如Design
Compiler继承下来的(例如时钟周期,输入延迟,net的电容等),也可以是由用户
定义的.
与属性相关的命令有:
list_arritubes
get_arritube
report_arritube
define_user_arritube
set_user_arritube
remove_user_arritube
利用这些命令可以很方便地了解设计,例如想知道AM2910设计中的最大电
压,可以:
get_attribute[get_designsAM2910]voltage_max
与Unix相似,可以使用help或者man来查看命令的用法.例如查看与clock
相关的命令可以:
Tcl与pt_shell的使用11
help*clock
查看命令的参数可以用如下的命令:
help-verbose
其他的命令这里就不再赘述了,在后面的章节中使用到时再一一作介绍.
静态时序分析前的准备工作12
第四章静态时序分析前的准备工作
从第二章里的时序分析流程可以看到,在对一个设计进行静态时序分析之前,
首先要作一些基本的环境设置和准备工作,包括:
设置查找和链接路径;
读入并链接所要分析的设计;
设置操作条件和线上负载模型(wireloadmodel);
设置基本的时序约束(timingassertions);
检查所设置的约束以及该设计的结构.
这一章将依次介绍这些内容.
Stampmodel是针对于复杂模块--例如DSP(digitalsignalprocessing)的
核心或者RAM--而建立的静态时序模型.它一般是为晶体管级的设计而创建的,
在设计中没有门级的网表.Stampmodel中可以包含的时序信息有:
pin-to-pin的
arcs(),建立和保持时间,pin的电容和负载,以及三态输出,锁存器,内建时
钟等.
一个Stampmodel包括两个源文件:
1).mod文件,包含对pin-to-pin的arc的描述(不包括延时).
2).data文件,包括.mod文件中描述的每一个arc的延迟数据.
例如,对于AM2910设计中的Y模块(见图2-2),编译其Stampmodel:
compile_stamp_model-model_fileY.mod-data_fileY.data-outputY
其中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
静态时序分析前的准备工作13
_path)中去.
对于设计中的某些未完工的模块--比如说,该模块的HDL,或者完整的
stampmodel没有完成--你可以创建一个快速时序模型来进行分析.快速时序模
型是一个临时性的模型,可以提供进行时序分析而需要的时序信息.实际上,快速
时序模型是包含一系列pt_shell命令的文件,而不是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复旦大学 数字 集成电路设计 时序 分析 验证 教程