时序分析是数字IC设计过程中不可避免的一步,其中对建立时间和保持时间的计算也尤为重要。
1、首先认识时序分析中经常用到的参数
Launch edge、Latch edge、Tsu、Thd、Slack、Tcq、Td、Trecovery、Tremoval、Jitter、Skew、Clock uncertainty。
(1) Launch edge和Latch edge
Launch edge代表本次时序分析数据打出的时间点;Latch edge代表时序分析的终点。
Tcq:clock to q延时的代写,这里的q是寄存器的输出,c是寄存器的时钟输入端。
Tcq是当时钟上升沿锁存住寄存器输入端的数据后到数据寄存器q输出的延时。
Td:代表布线延时和时序路径中组合逻辑器件的延时。
Tsu:建立时间,针对同步时序电路。在时钟上升沿到来之前,数据需要稳定的一段时间。
Thd:保持时间,针对同步时序电路。在时钟上升沿到来之后,数据需要稳定的一段时间。
不满足Tsu、Thd的会出现亚稳态。
Trecovery、Tremoval:针对异步信号而言的。如果不满足这两个参数也会出现亚稳态。
Trecovery:在复位信号无效后,在时钟上升沿到来之前,复位信号无效状态需要保持的一段时间。复位信号无效后,在时钟上升沿到来之后,复位信号无效状态需要保持的一段时间。
Skew:是针对时钟树而言的。
Jitter:是针对时钟而言的,实际运行中时钟不能一直保持一个值不变化,会有一些相位或频率的突变。
Clock uncertainty:Skew+Jitter。
时钟抖动和不确定性:
对于ASIC元器件,时钟不确定性经常用于表示时钟抖动。然后,对于Xlinx FPGA而言,抖动属性是可预测性的,可以通过时序分析引擎自动计算它们。
(1) 输入抖动
输入抖动是连续时钟沿之间的不同,它们是相对正常的或者理想的时钟到达时间的。使用“set_input_jitter”命令为每个基本时钟指定输入抖动。设计者不能在生成时钟上直接指定输入抖动,但是VIvado集成开发环境可以自动计算从主时钟继承过来的生成时钟抖动。
对于由MMCM或PLL驱动的生成时钟,输入抖动用一个计算的离散抖动代替
对于由组合或时序单元创建的时钟,生成时钟的抖动和它的主时钟的抖动相同。
(2) 系统抖动。系统抖动是整体抖动,由供电噪声、PCB噪声、系统任何额外的抖动组成
(3) 额外的时钟不确定性
使用“set_clock_uncertainty”命令定义额外的时钟不确定性,用于不同的拐点、延迟或者特殊时钟关系。
需要特别说明的是Tsu和Thd和集成电路的制造工艺有关,直接影响到器件能够运行的最高频率。
这部分内容来源于《FPGA深度解析》
2、 建立时间和保持时间的计算
2.1看图理解公式
2.2计算
另外:Trecover和Tremoval的计算和Tsetup、Thold有异曲同工之妙,且分别对应。
2.3例题
60、时钟周期为T,触发器D1的寄存器到输出时间(触发器延时Tco)最大为T1max,最小为T1min。组合逻辑电路最大延迟为T2max,最小为T2min。问,触发器D2的建立时间T3和保持时间应满足什么条件。
61、给出某个一般时序电路的图,有Tsetup, Tdelay, Tck->q (Tco),还有clock 的delay,写出决定最大时钟的因素,同时给出表达式。
其中2.1和2.2的笔记来源于《Xilinx FPGA权威指南》