下面的电路中,flip-flop 2 的 hold time margin 是多少 ns?
(hold time margin,margin是裕量,整个是保持时间裕量)
答案:0.2
解析:
(1)A输入端口经过与门到达 flop2 的路径不需要分析(已经设置了fasle path伪路径,不进行时序分析);
(2)B输入口输入延时 input delay 为 5 ns,如下图所示,B 输入有效跳变发生在时钟 CLK 有效沿 5 ns 后;
(3)CLK 输入端口到达 flop1 的 CK 时钟口有路径延时 0.3 ns,如下图所示;
(4)CLK 输入端口到达 flop2 的 CK 时钟口有路径延时 0.5 ns,即相对 flop1.CK 有 0.2 ns 延时,如下图所示;
(5)flop1 的 Q 输出相对 flop1.CK 延时 Tco(即图中 Tck2q);
(6)flop1 的 Q 输出到达 flop2 的 D 输入端还需要 Tdata(或者叫 Tlogic);
(7)上述时间要大于 Tskew 时钟抖动 和 Th 保持时间,否则可能出现亚稳态,Tck2q Tlogic - Tskew - Th >= 0;
实际上:
Hold slack(保持时间的余量) = Data Arrival Time – Data Required Time,其中Arrivel Time到达时间,Required Time要求数据到达的时间;
Data Arrival Time = next launch edge Tclk1 Tco Tdata,下一个数据发起沿开始,加上Tclk1(时钟到达第一个寄存器的路径延时),加上Tco(clk端边沿来临后,数据送到Q端的延时),加上Tdata(组合逻辑路径延时) ,这是数据在时钟边沿发起后到达第二个寄存器的时间;
Data Required Time = latch edge Tclk2 Th Hold Uncertainty,其中对于Hold来说两个寄存器的边沿一样,Tclk2是时钟到达第一个寄存器的路径延时,Th是第二个寄存器的hold time要求,Hold不确定性在本题中为0,
所以:
Hold slack
= (next launch edge Tclk1 Tco Tdata) - (latch edge Tclk2 Th)
= (Tclk1 - Tclk2) Tco Tdata - Th
Hold slack = (Tclk1 - Tclk2) Tco Tdata - Th(其中 Tskew = Tclk2 - Tclk1),所以:
Hold slack = Tco Tdata - Th - Tskew >= 0
数字IC笔试题(4)——资源和速度【关键路径】【timing时序】【位宽扩展】
什么是STA静态时序分析,有什么作用?【FPGA/数字IC笔试面试】
FPGA中亚稳态【Tsu建立时间】【Th保持时间】【Tmet决断时间】【recovery恢复时间】【removal移除时间】