对Clock Slack的手术式分析

一、Clock Slack的真正含义

虽然文档强调的两个时钟域之间的关系,但是时序分析关注的还是时钟与数据的关系,在这里,关注的是采样时钟Latch Clock对数据的setup time和 hold time。

Clock Slack代表的是对采样时钟速率、质量的容忍程度,借由对数据的裕量来衡量。

二、Clock Setup Check

先看计算公式:

image

若Latch能采样到有效数据,数据出现的最晚时间即为Data Required Time,数据出现的实际时间为Data Arrival Time。

若希望Latch能采样到数据,前者一定要大于后者。

在评估内部寄存器输出到器件输出端口或者器件输入端口到内部寄存器输入端的时序裕量的时候,思路是一致的,区别在确定Data Required Time和Data Arrival Time上。如下图:

image

这里的Launch Edge应该来自Virtual Clock。

image

这里的Latch Edge应该来自Virtual Clock。

三、Clock Hold Check

由Setup Slack的计算类推,Hold Slack的计算公式应为:

Clock Hold Slack = Data Arrival – Data Required

因为保持时间的副作用就是延缓了数据翻转的时刻,因此,在满足建立时间之后,数据保持时间越长,Hold Slack越容易满足。

计算Setup Slack使用的是数据起始时刻,因为建立时间的副作用是要求数据提前翻转;计算Hold Slack应该使用数据结束时刻。

假设时序路径为内部的Register-to-Register,具体的计算如下:

Data Arrival = Launch Edge + Tco + R2R Delay + Src Clock Delay + Launch Period;

Data Required = Latch Edge + Thold + Dst Delay;

注意Data Arrival,Launch Edge + Launch Period实际上就是下一个Launch Edge。说到这里,文档上的图就容易理解了:

image

假如数据由Source Clock的第一个上升沿发出,采样应该由Destination Cock的第二个上升沿实现。由于Data Arrival包含了一个Launch Period的部分,可以认为Launch Clock后移了一个周期,这就是上图中Setup A的Hold Check偏移了一个周期的原因(Hold Ckeck A2处)。

原文地址:https://www.cnblogs.com/freshair_cnblog/p/2622127.html