原创 TimeQuest时序分析工具中的基本时序模型

2009-8-3 16:42 3891 3 3 分类: FPGA/CPLD

TimeQuest时序分析工具中的基本时序模型<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1、  前言


最近一段接触到AlteraTimeQuest这个工具,学习后有一些心得和问题,发上来和大家一起共享和探讨一下。现有的AlteraFPGA/CPLDFitting都是Timing-Driven的,所以要实现好的FPGA设计就要定义好的Timing Constrain来驱动布局布线器来实现FPGA内部的功能。写东西的目的有两个:一是抛砖引玉,相互学习。二是锻炼自己的表达能力。其中参考了ripple博客的内容,感觉很有帮助。


现有已经掌握的内容感觉可以分为三个部分:时序分析的模型,SDC时序约束方法和一个相关设计实例。今天首先从时序分析的基本开始来讲述一下自己的故事,所谓是万丈高楼平地起,基础知识非常的重要。复杂的算法和模型出发点往往都是极简单的概念。


2、  基本时序模型概念


1.1 基本的术语


       FPGA综合和分析都是针对同步逻辑,同步逻辑可以简单的理解为组合逻辑加上由时钟驱动的时序逻辑构成。时序逻辑中最重要的元素就是寄存器单元,所以Altera中的关于时序分析的基本出发点都是寄存器。所以要对时序模型进行分析,就要来定义时序模型的基本结构和概念 1所出一个简单的与门时序逻辑。其中包含三个寄存器和一个简单的组合逻辑。经过Quartus综合后,可以得到其对应的网表结构如 2所示


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 9a29f003-cb31-4683-bf09-b0755fc9ad08.JPG


1 Logic结构


8579429c-728d-4677-b568-8f567ea9c884.JPG


2 Netlist结构


在经综合后的网表结构,产生了一些新的定义,具体的含义就得参考Quartus的手册了。这些定义非常重要,因为在后面的SDC约束设计时,都要针对不同的类型,只有把类型都搞清楚了,才能写出合适的SDC约束命令。




Terminology


Definition


Nodes


Most basic timing netlist unit. Use to represent ports, pins, and registers.


Keepers


Ports or registers. (1)


Cells


Look-up table (LUT), registers, digital signal processing (DSP) blocks, TriMatrix memory, IOE, and so on. (2)


Pins


Inputs or outputs of cells.


Nets


Connections between pins.


Ports


Top-level module inputs or outputs; for example, device pins.


Clock


Abstract objects outside of the design


       这些定义大家现在可以不care,不过有问题的时候还是要知道,定义都在这里,要记得回来找来看一下。现有网表结构只是说明了寄存器和I/O的连接关系,并没有加入时钟这一动态元素。


1.2 基本的时序路径


0c10e9df-0a56-4448-98f8-1d55ac9f71c4.JPG


3 时序路径


好了,我们现在加入动态的时钟内容来说明寄存器的工作状态是如何进行的。我们把模型再简化为两个寄存器级连的结构,前面的寄存器称为源寄存器,后面的被称为目的寄存器。加入时钟后,寄存器就会出现动态数据传递,即发生toggle。如 3所示,在源寄存器和目的寄存器之间出现三条数据通路,即:时序路径Clock Path, 数据路径Data Path, 异步路径Asynchronous (Clear )Path。(还一种Edge path用于分析组合逻辑)所有时序分析内容都是围绕这三类路径进行的,也就是分析这种三种路径的时序能否满足设计。那么怎么样的时序是好的时序条件呢?答案就是数据在时钟的时间窗内要满足建立时间保持时间的关系。如 4所示。这一概念对于任何一个FPGA设计都是最基本的知识,问题是当数据在数据路径上,寄存器之间进行传递时时序条件又是如何分析的呢?


3a2eedc1-9a32-4fc0-bb0b-1e6d78bd4b63.JPG


4 建立和保持时间关系


1.2寄存器之间数据的时序关系


当数据在源寄存器和目的寄存器之间进行传递时,两个寄存器的建立和保持时间都要满足。但对于源寄存器来说,我们可以认为本级的源寄存器是上一段逻辑电路的目的寄存器,它的时序关系由对上一段逻辑电路的时序分析来保证,或者不断向源头寻找,这一关系也会在FPGA外部满足。这样,我们的分析就只需要针对目的寄存器进行,那么如何进行对目的寄存器的时序分析呢?时序分析的本质就是验证数据信号和时钟信号的时间关系问题,就需要分别找出两个信号的传递过程。对于数据信号,我们需要了解数据信号在FPGA内部从何时出发,经过了哪些路径,产生哪些延时,最后在什么时间能达到目的寄存器的输入端?同样对是时钟信号,需要了解Clock信号又在何时算起,又在怎么的时间到达目的寄存器的时钟端呢?只要分别抓住了两个信号的到达时间计算方法,就可以判断了两者之间的时序关系了。首先我们来分析数据信号的到达时间问题。


数据什么时候到达呢?——— 数据到达时间(Data Arrival Time)


对于第一个问题,即数据路径。首先要定义的是数据时间的起点,我们认为数据的起点是从源寄存器开始,因此定义驱动源寄存器时钟端的时钟信号的时钟沿为启动沿(Launch Edge)。即从Launch Edge开始,数据开始进行传递。在目的寄存器的时钟沿就会数据打入到目的寄存器内部,完成一次数据传递过程。从Launch Edge计时开始,到数据到达中间包含的延时部分有3个时间项(如 5所示):时钟到达源寄存器时钟端的延时(Launch Edge->Source Register) Tclk1, 由于寄存器内部输出延时产生的延时(Register cell to output) Tco, 数据在组合路径上传递的延时Tdata。经历了这三个部分后,数据就会出现在目的寄存器的输入端。所以我们就可以定义数据到达时间(Data Arrival Time)




Data Arrival Time = launch edge + Tclk1 + Tco + Tdata


6a33ba60-8955-4554-99f0-2a5bffb60c47.JPG


5 数据到达时间


时钟什么时候到达呢?——— 时钟到达时间(Clock Arrival Time)


上面我们已经得出数据路径到达时间计算公式,那么另一条路径,即时钟信号是又如何呢?时钟信号的分析要简单一些。我们认为相对于Launch Edge沿发出数据后,数据必须在下一个时钟周期(也可以为几个周期)被目的寄存器进行锁存,那么就定义Launch Edge后一个时间沿为锁存沿(Latch Edge)Clock信号的时间延时路径只有一条,即时钟输入端到目的寄存器的输入端这一段的延时,如 6所示。我们也可以得出时钟信号到达的计算公式,即




Clock Arrival Time = Latch edge + Tclk2


1e377153-9f80-48a0-afe4-7c9d8d518a3c.JPG


6  时钟到达时间


两个信号时钟关系的判断——建立和保持时间条件


当得出两个信号的时间关系的计算公式后,我们已经抓住了信号的规律了,但不要忘记了我们上面提到的时间窗的概念,两个信号的关系就是通过这个时间窗来限定的。即数据在时钟到达的前Tsu的时间必须首先保持稳定,并且数据在时钟到达后的Th时间内也一样要保持稳定。这样在上述数据到达的时间增加一个分析条件,产生了了一个新的概念即数据要求时间(Data Required Time),它包含两个部分,建立时间的要求和保持时间的要求。对应的公式如下,其中Tsu表示目的寄存器的建立时间,Th表示目的寄存器的保持时间。




Data Required Time (Setup) = Clock Arrival Time – Tsu – Setup Uncertainty


Data Required Time (Hold) = Clock Arrival Time + Th + Hold Uncertainty


有了上面的对Data Required Time的定义,对数据和时钟两个信号的建立关系已经完全建立。在Data Required Time (Setup)的值小于Data Arrival Time,就可以保证在时钟锁存的时候,数据已经准备好,即数据已在时钟到达时前的Tsu处稳定。同时数据还会一直保持到Data Required Time (Hold)的时间时刻,并且要求Data Required Time (Hold)的时间时刻不能大于下一次Data Arrival Time,这样本次的数据值不会被下一次数据值所代替。具体时序图如 7所示


c9b662b8-7387-46de-a236-96f65759de35.JPG2b5b80aa-deb2-4d84-83da-5f16a748b924.JPG


7  Data Required Time (Setup)Data Required Time (Hold)


3、  时序关系满足的量化计算——Clock Slack


通过上面的模型分析,我们已经找到了数据和时钟的时序两个条件,即Data Required Time (Setup)值要小于Clock Arrival Time,同时Data Required Time (Hold)要小于下一个Clock Arrival Time。但我们需要对这一条件进行量化的计算,以表明设计时序的满足条件到底是什么样的。于是Quartus定义了Clock Slack的概念。用Slack来说明建立时间条件的裕度到底是什么样数值。于是就有Clock Setup SlackClock Hold Slack计算的方法。




Clock Setup Slack = Data Required Time – Data Arrival Time


Clock Hold Slack = Data Arrival Time – Data Required Time


我们同样使用时序图( 8所示)所表达两个寄存器中数据和时钟的关系。可以看出虽然我们分析的对象不再是单一寄存器对象,但最后建立时间Tsu和保持时间Th的时序要求条件仍然是针对目的寄存器时钟沿而言的。并且我们可以得出最后的公式,即4部分时间量之和为一个整周期(在SetupHold时间关系为一个周期时)。


55a24679-e477-4799-aa7c-7e4b33a9575d.JPG


8 Clock Slack示意




Setup Slack + Tsu + Th + Hold Slack A Period


4、  实例研究Case Study    


Quartus建立上面所分析两个寄存器连接的简单模型, 9示。通过编译,并对其进行时间分析可以得到时钟和数据的时序关系如图所示。我们可以得到与我们上面分析相一致的在TimeQuest中的输出波型,如 10所示。(关于如何在TimeQuest中查看波型,我会在下面的内容进行说明)。


点击看大图


9  简单的寄存器逻辑


7e25f142-66c0-4c8c-9733-d3758a116ed2.JPG35e936aa-3862-4b91-866e-aa85ce739323.JPG


10 TimeQuest的时序波型


 


5、  总结


通过上面的分析和实验我们可以很清楚看到TimeQuest是如何进行时序分析的,上面举的例子比较简单,其实建立时间关系分析还包括从PinPinPin到寄存器,及寄存器到Pin三种类型,不过分析的方法都与RegisterRegister相类似,并且分析时需要增加时序约束关系,我会在后面的文章中一一说明。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条