《第6章约束与时延分析ppt课件.ppt》由会员分享,可在线阅读,更多相关《第6章约束与时延分析ppt课件.ppt(63页珍藏版)》请在三一办公上搜索。
1、第6章 约束与时延分析,本章主要内容,约束的基本概念管脚约束时序约束约束的分析方法静态时延分析,6.1约束的目的,约束的终极目的就是为了设计达到所要实现的功能,主要有如下几个方面的作用。管脚位置锁定及电气标准设定。提高设计的工作频率。获得正确的时序分析报告。,6.2 管脚约束及电气标准设定,管脚约束是CPLD/FPGA的基础之一。管脚约束主要有三种方式:一是采用各家公司的集成开发环境来实现管脚约束二是设计专门的管脚约束文件三是采用注释的方式在代码中自动锁定,6.2.1 管脚约束文件,不同的厂商支持不同的管脚约束文件,如Lattice所采用的管脚约束文件为.lpf文件,Xilinx支持的管脚约束
2、文件为.ucf文件,而Altera所使用的管脚约束文件为.qsf文件。Xilinx公司的管脚约束文件.ucf文件的语法规则:通用规则:.ucf文件对于大小写敏感,也就是是说同一单词的大小写不同表示不同的含义,标识符必须与代码中的名字一致。但是约束中的关键字对大小写不敏感。语句以分号结尾,一个语句可以多行表述。语句之间不分先后次序,不过建议管脚约束顺序与代码中管脚列表顺序一致。采用“#”或者“”的方式来进行注释,基本语法例如:通配符在约束语句中可以使用“*”,“?”来作为通配符。“*”代表任何的字符串,而“?”则表示一个字符。这样的表示方法可以用来对一组信号进行约束。如:,6.2.2 代码注释约
3、束,不同的厂家有不同的代码注释约束方式,而且代码注释约束的方式只针对于特定的综合工具以Lattice的ispLEVER集成开发环境来具体说明怎样进行代码注释约束。相关的技术文档和网站,如:http:/,需要注意的是,采用synplicity综合工具的时候,注释需要写在“;”里面,而且注释和信号声明中不能有其他的注释,否则无效。管脚类型设定关键字:IO_TYPES采用examplar综合工具的时候,它的基本语法如下:采用Synplicity综合工具的时候,它的基本语法如下:,管脚驱动电流设定关键字:DRIVE采用examplar综合工具的时候,它的基本语法如下:采用Synplicity综合工具的
4、时候,它的基本语法如下:电流驱动强度与管脚类型设定要直接的关系,不同的管脚类型有不同的驱动电流。另外驱动电流只针对于输出而言,对于输入是无所谓驱动电流的。,管脚输出斜率设定关键字:SLEWRATE采用examplar综合工具的时候,它的基本语法如下:采用Synplicity综合工具的时候,它的基本语法如下:管脚上拉模式设定关键字:PULLMODE有四种模式,分别为上拉(UP)、下拉(DOWN)、保持(KEEPER)和无(NONE)。采用examplar综合工具的时候,它的基本语法如下:,采用Synplicity综合工具的时候,它的基本语法如下:管脚OD设定关键字:OPENDRIVE有两种方式:
5、开启(ON)、关闭(OFF)。采用examplar综合工具的时候,它的基本语法如下:采用Synplicity综合工具的时候,它的基本语法如下:,节点预留设定如果两个或者两个以上节点在CPLD/FPGA里面的输入信号相同,并且整个处理过程和方式都一致,那么在综合工具中就会被等效成一个节点而被自动优化,而这样可能与设计的初衷不相符合,因此需要采用节点预留设定的方式,当综合软件解析到这样的注释的时候,就将“忠诚地”按照代码方式处理,而不会将“冗余”的节点优化。采用examplar综合工具的时候,它的基本语法如下:采用Synplicity综合工具的时候,它的基本语法如下:,6.3 时序约束的基本概念,
6、时序约束是指路径之间的约束,任何一条路径都有起点和终点,最重要的是,路径是不能穿过触发器的CPLD/FPGA至少有三种不同的基本路径:一是触发器到触发器之间的路径;一是从输入端口到内部触发器之间的路径;一是从内部触发器到输出端口之间的路径。时序约束有几个重要的基本概念:建立时间、保持时间、时钟到输出延时、传播延时等等。,图 61 简单的时序模型,6.3.1路径,Clock-to-setup路径Clock-to-setup路径是我们常见到的时序模型,一般用来描述CPLD/FPGA内触发器之间的延时。图 62 时序模型示意图,图 63 时序逻辑波形示意图,路径的延时包括:源端触发器的时钟端到输出端
7、的延时、逻辑和布线延时、时钟的布线延时以及建立时间,通过计算可以读出最小的时钟周期和最高的时钟频率。Clock-to-PAD路径我们常见的时序模型之一,可以称之为输出模型。任何一个CPLD/FPGA在系统中都不是单独存在的,而CPLD/FPGA的时序不仅仅只是内部的时序模型,同样它可以驱动下一级芯片,从而产生一个新的时序模型,图 64 Clock-to-PAD路径图 65 Clock-to-PAD路径波形图,从系统层面来看,Clock-to-PAD路径是整个系统中路径延时的一部分,要计算整个路径延时和最小的时钟周期还需要考虑信号在PCB上的走线延时、飞行时间以及下一级接收芯片的输入时序模型。从
8、CPLD/FPGA层面上来看,它包括时钟端到触发器输出端延时、逻辑和布局布线延时、输出缓冲延时等等。当对Clock-to-PAD路径进行时序约束时,需要电路设计工程师、CPLD/FPGA工程师和布局布线工程师共同决定信号在Clock-to-PAD路径的延时、信号在PCB板上的延时以及接收端芯片可承受的延时容限各为多少,最后以文档的形式确定时序约束。,PAD-to-Setup路径图6-6是另外一种常见的时序模型,也叫做输入模型。图 66 PAD-to-Setup路径,图 67 PAD-to-Setup路径波形图从CPLD/FPGA层面来看输入模型的路径延时包括了输入缓冲延时、逻辑及布局布线延时以
9、及建立时间;从系统角度来看,整条路径的延时还需要包括上一级芯片的输出模型延时以及PCB走线延时和信号的飞行时间,因此要确定对此路径进行时序约束,需要召集电路设计工程师和布局布线工程师一起讨论最后决定此路径的时序约束。,Paths Ending at Clock Pin of Flip-Flops此路径是指时钟信号从源端到达各个具体触发器的时钟端的路径。在CPLD/FPGA中,设计工程师都推荐采用全局时钟来驱动触发器,但是尽管采用全局时钟,时钟到达触发器之间还是有一段延时时间,这段时间在计算时延的时候必须考虑进去。图 68 Paths Ending at Clock Pin of Flip-Fl
10、ops,图 69 Paths Ending at Clock Pin of Flip-Flops波形图,PAD to PAD路径图6-10表示为一条纯组合逻辑的路径,从芯片输入的管脚开始,经过任意级的组合逻辑电路,然后从另外一个输出管脚输出。图 610 PAD to PAD路径图 611 PAD to PAD路径波形图,整条路径的延时分为输入延时、输出延时以及中间的逻辑和布局布线延时。如果放在整个系统层面来看,严格来说不能称之为路径,因为这个时延路径的源端和目的端都不在这个芯片里面,而在上一级或者上上级的芯片中和下一级的芯片中。,6.3.2 时序约束参数,建立时间建立时间就是指数据必须在时钟有
11、效沿到来之前稳定的最小时间长度。当建立时间不够的时候,触发器采集不到数据,或者采集到的数据是错误的数据,从而导致整个时序逻辑的错误。任何一个时序逻辑芯片都会存在建立时间这个概念,一般使用 Tsu来表示图 612 计算建立时间的时序模型图,保持时间保持时间是指当时钟信号有效沿到来之后,数据必须保持的最小的稳定时间,一般采用Th来表示。当保持时间不够的时候,数据传输将出现紊乱,系统将出现亚稳态的问题。时钟到输出延时当时钟到达一个触发器并成功地采样到数据端的数据的时候,并不会立即就表现在输出端上,这之间会有一段延时时间,叫做时钟到输出延时时间,一般用 Tco表示。传播延时数据从寄存器出来以后,到达下
12、一级寄存器之间的逻辑和布线延迟,就叫做传播延时,一般使用Tpd 表示。,Fmax对于芯片内部而言,它是寄存器到寄存器之间的延时,而对于整个芯片而言,还需要考虑进入芯片的建立保持时间以及输出芯片的 Tco。把它取反就是最小时钟周期的概念。图 613 计算Fmax的时序模型示意图,芯片内部的Fmax的计算方法如下:整个系统时钟频率 Fmax的计算方法为:,SlackSlack用来衡量一个设计是否满足时序正的slack表示满足时序,而负的slack则表示不满足时序。如果slack为负,数据保持时间不够,主要是由于数据路径延时大于时钟延时而造成的。从建立时间来来考虑,最坏的情况是slack是一个时钟周
13、期减去时钟抖动的最大绝对值;而从保持时间来考虑,最坏的情况是slack一个时钟周期加上时钟抖动的最大绝对值。对于异步电路来说,由于采用不同的时钟信号进行驱动,是指两个不同时钟的有效边沿之差,时钟偏斜与抖动时钟偏斜是指同一时钟源产生的时钟信号由于经过不同的布局布线延时到达两个不同的寄存器的时钟端的时间之差。建议采用全局时钟资源来驱动设计中的主要时钟信号,以减少时钟偏斜。时钟抖动与时钟偏斜的概念不一样。时钟抖动有很多种情况,如周期抖动、频率抖动、相位抖动等。在时序约束中,我们主要考虑的是周期抖动。所谓的周期抖动是指实际的时钟周期与理想中的时钟之间的偏差。,图 614 时钟偏斜示意图,6.4 时序约
14、束的本质,时序约束的本质就是要使建立时间和保持时间满足设计的要求当设计同步电路的时候,要使电路正常工作则需要保证时钟周期要不小于数据的路径延时。异步电路的基本设计,它有许多种情况,如同频异相、同相异频、既不同相也不同频等等。总体的原则还是需要确保建立时间和保持时间满足设计的要求。如果频率不同,相位差恒定的话,可以采用下面的公式来设计时钟约束,可是如果既不同频也不同相,则需要从电路设计的角度去考虑其稳定性。,图 615 时序约束示意图,图 616 异步时序逻辑示意图,6.5 静态时延分析,静态时延分析是CPLD/FPGA设计中的一个很重要的时序分析手段,在设计中主要有三个阶段需要涉及静态时延分析
15、:一是逻辑综合阶段需要检查综合的时序质量;一是在布局后需要检查布局对信号时序的影响;三是在布线后需要整体考虑信号的质量,包括逻辑时延和布线延时。,图 617 静态时延分析报告示意图,静态时延设计特别适合于经典的同步设计和流水线结构,它不仅速度很快,而且不需要Testbench,最重要的是能够完全测试每一条路径外。静态时延分析工具在处理锁存器、异步电路和组合反馈逻辑的时候存在不足。静态时延分析时,需要考虑以下方面:在分析之前,需要先审查电路是否是同步电路,时钟有无毛刺,异步复位置位信号是否有毛刺等逻辑问题。先检查布局布线的约束文件,确保约束全面。需要特别注意双沿都被使用的时钟信号,延时要求只能是
16、半个周期。如果时钟信号的占空比不是50%,那么延时要求只能是有效边沿之差。对于有I/O管脚的路径,需要考虑输入和输出延时。时钟信号尽量使用全局时钟管脚,否则要考虑时钟偏斜并加以约束。,6.6 统计静态时延分析,内连线延时比逻辑延时大得多,现在的光刻制程不能够产生足够的精确形状,产生的趋肤效应却很明显。解决的方案之一是采用统计静态时延分析(SSTA),它的基本理念就是为每一条线路的每一段上的每一个信号延迟生成一个概率函数,然后再估算信号通过整个路径的总延时概率函数。避免单次静态时延分析生成的报告失真,从统计学的角度观察整个芯片时延状况要求的软件算法非常复杂,6.7 动态时延分析,动态时延分析(D
17、TA)是另外一种时延分析的方法,目前已经不常用。不仅需要使用事件驱动仿真器,而且必须使用Testbench。动态时序分析采用延时对来估算信号变化引起的事件。在动态延时分析中,需要引入两个新的状态:“一定会变成高电平,但是时间未知”和“一定会变成低电平,但是时间未知”。,6.8 实例 4:建立时间和保持时间违例分析,图 618 建立时间和保持时间违例线路图,表 61 实例4时延参数表,如果信号C实际到达U4,并且能够被正确采样的时间将会是:从信号C到U4时序约束已经违例 B:A:在建立时间和保持时间方面,U4到U5的时序约束情况建立时间:,满足时序要求保持时间:,不满足时序要求,6.9 时序违例
18、及解决方式,如果需要解决建立时间违例的情况,我们可以通过改变时钟频率的方式来解决,问题是在许多设计中时序约束的目的就在于保持特定的时钟频率来达到最大的性能要求,因此上述方式不可行。要解决建立时间违例的问题,可以采取如下的方式:在违例的组合逻辑增加一级触发器来减小组合逻辑的延时,也就是所谓的流水线技术。针对于上面的例子,可以把两输入的逻辑门改成三输入的逻辑门,通过增加扇入数来减少组合逻辑的级联从而减小延时。要解决保持时间违例的问题,可以采取如下的方式:在违例的触发器之间增加一级缓冲,从而增大上级触发器输出到下级触发器输入之间的延时,不过需要同时兼顾建立时间。针对于上面的例子,缓冲逻辑至少需要0.
19、1ns的延时,为了避免时序违例,当采用综合工具要进行时序约束时,应该在设计本身应满足的要求上再增加1020%的约束条件,因为一是需要考虑综合后的布局布线,二是绝大多数的综合软件本身会按所设置参数中的低要求的约束进行。在代码设计中需要切实定义好各个模块的边界信号在做仿真的时候,建议采用负载模型来进行仿真,这样可以尽量地模拟出实际信号的输出,6.9 实例 5:四角测试中的时序分析,四角测试,就是让产品在高温高压、低温低压、高温低压和低温高压的情况下连续运行相关的测试程序如负载程序等等达一段时间如24小时或者48小时,如果系统正常则产品合格,否则就需要进行分析。,有两个位置对建立时间和保持时间有着严
20、重影响,它们分别为B点(高温低压)和D点(低温高压)对于B点来说,由于高温低压的原因信号的上升时间是慢的,也就是达到有效高电平的时间就越长,这就意味着信号从源端到目的端之间的延时会变大,从而引起整个延时增大,这样slack就会变成负值,引起建立时间违例。对于D点来说,由于低温高压的原因信号的上升时间是最快的,也就是达到有效的高电平的时间最短,这就意味着信号从源端到目的端之间的延时会变小,从而引起整个延时变小,甚至小到不够触发器的保持时间,从而引起保持时间违例。,6.11 实例 6:LPC Slave接口设计,LPC协议简介LPC协议是计算机系统中应用最为广泛的一种协议。它的协议简单,采用的I/
21、O管脚较少,速度能够达到33MHz以上;LPC总线一般都会与主机直接相连。LPC一般采用7根信号来做协议的传输和控制,当然还有一些特别的可选信号也可以被归纳到LPC协议中,与传统的ISA协议相比,LPC协议采用的I/O管脚已经少了许多,但是性能并没有因此而下降。整个LPC协议就是在时钟LCLK的作用下,通过LFRAME#信号启动传输进程,通过LAD进行数据传输。LPC协议有很多种传输方式,包括存取器读写方式、I/O读写方式、DMA读写方式、总线主机存储器读写方式、总线主机I/O读写方式、固件存储器读写方式等,典型的LPC传输协议。在时钟信号的作用下,一旦LFRAME#信号拉低,也就是有效地情况
22、下,LPC传输开始,所有的LPC地址数据线LAD全部会变成低电平,紧接着的一个时钟周期决定整个传输的性质和方式是I/O读写呢还是存取器读写等等,根据LAD上的具体数据进行判断。如果是I/O读写,在接下来的4个时钟周期里面,从机会解码LAD上的数据,得到主机所呼叫的地址信息,如果被命中,相应的从机接管总线并发出响应信号;如果是存取器读写,则需要8个时钟周期来解码地址信息。主机一旦接收到相关从机的响应,整个握手协议就结束。接下来的时钟周期就用来进行数据读写,如果是主机读取数据,那么从机在数据传输阶段将一直拥有总线控制权,除了中间主机接收到数据后会发出响应的阶段,直到结束;而如果主机写数据,则主机一
23、直拥有总线控制权,除了之间从机收到数据会发出响应的阶段,直到数据传输结束。,有时候有效的LFRAME#不止一个时钟周期,那么在那一段时钟周期里面所有的LAD信号都必须保持为低电平,也就是起始状态LPC会在CT/DIR周期中通过LAD决定整个传输的性质和传输方向在Sync(同步)周期,LPC协议为了提高传输的效率和减少出错几率,特别增加了同步的数据,它的长短由LAD来决定是单周期等待还是多周期等待具体可以参考LPC协议文档Intel Low Pin Count(LPC)Interface Specification August 2002 Revision 1.1具体设计请参考实例6,图 620
24、 LPC总线的基本连接方式,表 62 LPC协议信号描述表,表 63 LPC传输方式表,图 621 典型的LPC数据传输波形图图 622 扩展的LPC数据传输波形图,表 64 LPC CT/DIR周期表,表 65 Sync周期表,表 66 LPC协议主机初始化I/O读周期,表 67 LPC协议主机初始化I/O写周期,6.12 本章小结,本章主要讲述了CPLD/FPGA设计中的最重要的内容约束。约束包含两种情况:时序约束和管脚约束。不同的约束会有不同的时序和逻辑表现,特别是在约束要求很紧的时候,需要和PCB工程师一起界定时序约束的条件,从而以最优的方式实现约束。约束也有技巧,工程师同时需要硬件和
25、PCB布局布线的经验,这样才能够较好的实现CPLD/FPGA的性能。,6.13 思考与练习,管脚约束有哪几种方式?试采用verilog HDL语言设计一个计数器。具体要求:当rst_信号有效时候,输出位4b0;当set有效地时候,输出为4bf;当ld有效地时候,输出为输入值;当up有效的时候,输出在时钟的自动作用下自动加1;当down有效地时候,输出在时钟的自动作用下自动减1。用代码注释的方式给以下管脚增加约束,并使用Lattice ispLEVER平台进行综合,得出映射报告,分析是否与设计的约束相同,表 68 题2管脚约束表,试采用Xilinx ISE工具对上述程序进行综合,并且采用ucf约
26、束文件对管脚进行约束,同时约束sysclk为33MHz,占空比50%。时序模型分别有哪几种?各自的应用领域是什么?建立时间和保持时间是什么意思?建立时间违例和保持时间违例分别会有什么样的后果?温度和电压对信号的完整性有什么样的影响?特别是建立时间和保持时间?当建立时间违例的时候,比如说触发器之间的组合逻辑延时过长的时候,人们往往会增加一级触发器来实现时序的满足,试分析其中的原因在于哪个方面?什么是静态时延分析?什么是统计静态时延分析?什么是动态时延分析?它们之间有什么样的区别与联系?,什么是时钟偏斜?什么是时钟抖动?它们之间的主要影响有哪些?怎样避免或者缩小时钟偏斜与抖动?当时序违例的时候,该采用什么样的方式来解决时序违例的问题?分别以建立时间违例和保持时间违例讲述?,