上两个小节我们介绍了建立裕量,建立裕量和保持裕量是对应的,时序满足了建立裕量还要满足保持裕量,只有两者都满足才可以认为该时序路径是满足时序要求的,那么这一个小节介绍一下保持裕量。
一、保持裕量分析
建立裕量和保持裕量是成对分析的,这是由于寄存器寄存数据既要满足建立时间由于满足保持时间。这样看来寄存一个数据需要两步,第一步是建立,第二步是保持,这么说可能有点不好理解,举一个例子:
我们每天出门上班需要乘坐地铁,在下一班车到达之前到地铁站等待乘车,当地铁到达当前站把车门打开,我们走到车厢里,地铁等行人进入车厢内站稳或者坐下来之后,地铁关门往下一站行驶。这个过程中我们乘客就相当于FPGA时序模型里面的数据,地铁就相当于寄存器,当我们提前到达车站到地铁到达之前的时间就相当于建立裕量。地铁等待行人进入车厢内站稳后再出发的时间就相当于保持裕量。两个时间都满足,我们行人才可以顺利的乘坐这一班地铁。
如下图所示,保持裕量的分析从锁存沿开始分析,我们所说的当前的锁存沿同时也是下一个源寄存器的启动沿,结合下图可以看的出来数据的到达时间和数据需求时间得出公式:
数据到达时间 = 启动沿 + Tclk1 + Tco + Tdata + 时间不确定性
数据需求时间 = 锁存沿 + Tclk2 + Th
这个时候可以分析一下保持裕量的公式:
保持裕量 = 数据到达时间 - 数据需求时间
二、保持裕量公式推导
上述得出了保持裕量,数据到达时间和数据需求时间的关系,接下来我们一起推导一下公式:
保持裕量 = (启动沿 + Tclk1 + Tco + Tdata + 时间不确定性)- (锁存沿 + Tclk2 + Th);
整理一下:
保持裕量 = (启动沿 + Tco + Tdata)- (锁存沿 + Th)+ (Tclk1 - Tclk2) - 时间不确定性;
由于Tclk1 - Tclk2它们存在公共路径(上一节已经解释了),那么继续还要把恢复时钟悲观的时间加上得出最后完整的公式
保持裕量 = (启动沿 + Tco + Tdata)- (锁存沿 + Th)+ (Tclk1(min) - Tclk2(max)) - 时间不确定性 + Trcp;
三、总结
这一节主要介绍了保持裕量的分析,保持裕量、数据道道时间和数据需求时间之间的关系,然后进行了公式推导,下一节我们使用安路FPGA的集成开发环境介绍创建时钟约束的方法,并结合建立裕量和保持裕量的公式进行时序报告分析。