文章目录
- 一、引言
- 二、时序术语terminogy
- 1、数字电路原理
- 1.1、D锁存器:
- 1.2、触发器:
- 1.3、寄存器:
- 2、时序网表中的元素
- 2.1、时序路径(Timing paths)
- 2.2、数据和时钟的抵达时间
- 2.3、启动沿和锁存沿Launch and Latch Edges
- 2.4、启动沿和锁存沿的建立关系和保持关系Setup and Hold Relationship for Launch and Latch Edges
- 2.5 Slack的概念
- 2.5.1 setup and hold check relationship
- 2.5.2 Recovery and Removal Analysis复位信号的约束
- 2.6 Multicycle Path Analysis多路径分析
- 静态时序分析:
- Clock setup Time(tsu,输入建立时间)
- Clock Hold Time(th,输入保持时间)
- Clock to Output Delay (tco时钟输出延时)
- tpd
- slack
- clock skew时钟偏移
- launch edge:
- latch edge 后级逻辑单元捕获、锁存数据的时钟有效沿
- recover time
- remove time
- Timing Analyzer Terminology
- 引用:
一、引言
由于每次我都写了功能仿真过后,放到门级仿真,就出问题,而门级仿真通常对实际还是有一定的指导意义的,通常我只要门级仿真跑不出来,多半实际都没跑出来,而且门级仿真调试起来相当麻烦,所以功能仿真+时序约束+signal tap 才是最好的方法。
之前花了2个星期看了某金的静态时序分析,收货甚微,发现里面的话自己都扯不转,动不动就用粗话来解释,实在一点也不严谨,一点也不学术,对于一个追求转行的人来说,实在看不下去。决定自己从官方下手,来逐渐完善时序约束,只要intel的time quest学会了,那Vivado的时序约束自然不在话下了。另外,在以后的面试中,时序约束也是一很重要的部分,决不能马马虎虎,大概了解即可的态度。另外,一定要耐心的阅读,仔细的思考,你可以看看官方文档(文档连接在下方有连接)结合我的理解一起学习,我的理解不一定完全正确,欢迎指点批评。
二、时序术语terminogy
1、数字电路原理
1.1、D锁存器:
能够将输入端的单路数据D存入到锁存器中的电路,此时寄存器的状态是由激励输入端D来确定的,并且D等于什么,寄存器的状态就是什么,也就是说,将单路数据D存入到了锁存器中。
1.2、触发器:
触发器,是数字电路中一种具有记忆功能的逻辑元件。触发器对脉冲边沿敏感的存储单元电路,它只在触发脉冲的上升沿(或下降沿)瞬间改变其状态。在数字电路中,可以记录二进制数字信号“0”和“1”。
触发器的原理:
1.3、寄存器:
寄存器电路是数字逻辑电路的基础模块。寄存器用于寄存一组二值代码,它被广泛地用于各类数字系统和数字计算机中。由于一个触发器能够存储一位二值代码,所以用N个触发器能够存储N位二值代码。
2、时序网表中的元素
时序网表中的各个元素(elements):
elements这个概念包括了网表中的寄存器、组合逻辑等等
2.1、时序路径(Timing paths)
时序路径包括:
1、Edge path:
2、clock paths:外部或者内部生成的时钟到寄存器的pin的路径
3、Data paths:从一个elements到另一个elements的数据传输的路径
4、Asynchronous path:异步路径,通常是复位信号or清零信号
通常,时序分析器件会分析出时序路径的类型
2.2、数据和时钟的抵达时间
时序分析器在确认时序路径后会报告数据和时钟到达进村器的pin脚的时间。
个人理解备注:其中launch Edge指的是启动沿,source Clock Delay指的是时钟的抵达D触发器的延时,utco比较难理解,就是时钟上升沿到达了D触发器后,要经过D触发器内部的走线,才能检测出这个是一个上升沿,而这段在触发器内部的走线从而判断时间就是utco。regist—to-regist的延时就非常好理解了,就是Q输出到下一个D触发器的路径延时。
数据需求时间:锁存沿时间+port 到寄存器的pin的时钟延迟再减去内部的建立数据的时间。这个时候首先是destination clock delay是时钟的延时时间,接着是锁存沿的时间,由于锁存沿的时候,数据开始读取,但是数据实际上已经到达了reg2,所以有一个utsu。
最实际的比喻(个人理解):
公式1:
就好比reg1准备在0点钟拿着行李启程到reg2,但是reg1一直在等待车票给他送来(clk上升沿),这段等待时间就是source clock delay ,utco就是这个人在拿到车票后,在车站过安检的时间,这段时间往往差不多的,不同的车站(device)提供了最小值。register-to register,当然就是路径时间(比如北京到西安的高铁花费的时间)。当然,我的启程时间在10点钟(10ns),我仍然需要等待拿车票的时间,所以最后就是好比如14ns(假设的话)。那么我的到达时间就是在14ns。
公式2:数据需求时间是以接收方来说的。第一个上升沿,发送方拿到数据,第二个上升沿,接收方拿到数据。接收方和发送方都是同时在车站等候,发送方在北京等候,等待第一个上升沿拿到车票,接收方在这个时间点也等待了,同样是destination clock delay,在latch edge接到了从北京大老远赶到西安的发送方手中的行李(数据),但是,注意了发送方到达西安高铁站,已经到达了,接收方,还要在人群中去找他,所以接收到数据要减去在西安找他的时间(utsu)。
综上,data arrival time 和data required time都是一样的,不过前者是对于发送方来说,后者是通过接收方来说。而且启程是要拿到票这段时间都算的,但是数据一旦到达目的地就行了,不用算要到达接收人手里。
2.3、启动沿和锁存沿Launch and Latch Edges
个人理解:启动沿就是从寄存器发送数据的开始,充当传送数据的源(起点时刻)
锁存沿就是目的寄存器捕获到数据或者说采集到数据的时刻。值得注意的是,锁存沿捕获到数据,是包含了setup time的,经历了在目的寄存器的建立时间,目的寄存器才知道,我确实是捕获到了,所以真正数据到达的时间是在latch time 减去setup time。
所以呀,启动沿是发送方的列车开始发动了的时间,锁存沿,是发送方的数据确实转交到了接收方的手里了,就算你到达目的地了,没交到我手里都不算,所以,有一个交接的时间,就是我在目的地西安站找你的这段对接时间(steup time)
2.4、启动沿和锁存沿的建立关系和保持关系Setup and Hold Relationship for Launch and Latch Edges
个人理解:
保持关系,其实就是发送方你的北京时间要和我接收方的北京时间是一致的,我两个要以标准的背景时间同时在去高铁站。你准备给我带数据,我准备来接应。
建立关系,理想情况下,你启动发车,至到达目的地,这路程是一样的。但是有时候,你以你的launch启动,按理说,你要10ns才到达目的地,但是,我的latch edge,提前到了,我跑到郑州就来接到你数据了,这个你启动发车到我在郑州接到你的时间,就叫做余量,这个余量必须要为正,最好就是10ns,(一个时钟时间)。
2.5 Slack的概念
个人理解:但是有时候,你以你的launch启动,按理说,你要10ns才到达目的地,但是,我的latch edge,提前到了,我跑到郑州就来接到你数据了,这个你启动发车到我在郑州接到你的时间,就叫做余量,这个余量必须要为正,最好就是10ns,(一个时钟时间)。
------------------------------------------------------------我是分界--------------------------------------------------------------------------
以下是三种slack的计算方法,这个没关系,有了上述的基础,可以后续再来理解细节。
2.5.1 setup and hold check relationship
个人理解:
以上表示的什么意思呢?为了执行时钟的保持关系检查,时序分析器通过每一个建立关系,来确定保持关系,我们知道建立关系是如何确定的,时序分析器,使用目的时钟上一个最近的时钟边沿作为启动沿。
所以如上图所示setup A和setup B就确定了,那么latch edge的前面一个edge与setup relationship的launch edge就是保持关系。
以上公式,我们暂时不用管,我们只需要记住data arrival time -data required time=hold time
2.5.2 Recovery and Removal Analysis复位信号的约束
如果异步复位信号来自设备I/O端口,则必须为计时分析器的异步复位端口创建输入延迟约束,以便在路径上执行恢复分析,异步复位信号非常类似与时钟信号的slack和hold的计算。
如果异步复位信号来自设备引脚,则必须分配输入最小延迟时间分配到异步复位针的时间分析器对路径执行复位分析。
这里,我们先暂时不给出公式,pdf里面有。
2.6 Multicycle Path Analysis多路径分析
个人理解:之前我们说了建立保持关系,我们知道了时序分析器是如何判断建立和保持关系的,那么如果我们建立关系,不是在之前的最近的一个作为启动沿呢?如果我们以第二个最近的edge作为启动沿呢,这就要自己去分析了,这就是多周期路径分析。
P11
--------------------截止日期2019年3月2日---------------------------------------------------------
---------------后续敬请期待---------------------------------------------------------------------
静态时序分析:
STA,static Timing Analysis,设计人员在加约束、综合、布局布线后,会生成时序分析报告,然后检查时序报告,根据工具的提示找出不满足setup/hold time的路径,以及不符合约束的路径,这个过程就是STA。
Clock setup Time(tsu,输入建立时间)
时钟有效沿到达前,数据和使能信号已经准备好的最小时间间隔,这个就像DA芯片一样,都有个setup时间。此外,存在utsu,指的是触发器内部的股友建立时间,不能改变。一般会给出其最小值,单位:ps,如下图所示的CYCLONE II内部逻辑单位的时序参数。
Clock Hold Time(th,输入保持时间)
保证有效时钟沿正确采样的数据和使能信号在时钟沿之后的最小稳定时间。这个就貌似DA芯片的hold time。此外,存在uth,指的是寄存器内部股固有的保持时间,一般会给出最小值,如上图所示。
Clock to Output Delay (tco时钟输出延时)
时钟有效沿到数据有效沿的最大间隔,同样存在utco表示将数据送到输出端口的内部延时参数,一般有最大值。
tpd
管脚到管脚的输出延时
slack
表示设计是够满足时序的一个标准,正的表示满足时序要求,负的就表示不满足,以红字表示。对于不同的检查对象,计算公式均有不同。
clock skew时钟偏移
指的是一个同源时钟到达两个不同的寄存器时钟端的时间差别,主要原因是两条是种路径到达不通寄存器的远近不同,避免方法之一就是采用全局时钟网络。
launch edge:
前级逻辑单元UI送数据的时钟有效沿
latch edge 后级逻辑单元捕获、锁存数据的时钟有效沿
recover time
指在时钟有效沿到来之前,异步控制信号保持稳定的最短时间,计算方式类似于setup time,主要用于对异步路径的分析
remove time
指的是时钟有效沿到来之后,异步控制信号保持稳定的最短时间,计算方式类似于hold time ,主要用于对异步路径的分析。
Timing Analyzer Terminology
我来翻译:
arrival time:时序分析器会计算在寄存器的pin脚数据和时钟的抵达时间和与之对应的需求时间
Clock launch and latch edge:时钟的启动沿和锁存沿,就是说在时钟的这个启动沿,从寄存器发出数据,在锁存沿读取数据
clock setup:时钟由低变高到与数据输入的最小的时间间隔
clock hold time:一个信号必须要在输入pin提供数据后保持稳定的最小时间
----P4
引用:
ug-qpp-timing-analyzer.pdf