Altera对Clock Setup Slack和Clock Hold Slack的定义的切入面稍有不同。
一、Clock Setup Slack
参照前言的图,定义一个符号SR,SR表示 Clock Setup Relationship。
SR = Latch – Launch – stUn (1)
其中,Latch为Setup Latch Edge,Launch为Setup Launch Edge,考虑最坏的情况,Setup时Latch左偏。
看上图的r2r,r2r表示数据从某寄存器输入到另一寄存器输入的延时,实际上即Td。
可以用以下方法推导r2r的计算:
Launch + uTco + Td-S + r2r = Latch + Td-D – uTsu – stUn,推导可得
r2r = (Latch – Launch - stUn) + (Td-D – Td-S) – uTsu –uTco (2)
注意这里是uTsu和uTco,待会还会出现Tsu和Tco,这两者是有区别的。uTsu即建立时间,uTco即clock-to-output。
Altera把Clock Setup Slack定义为:
Clock Setup Slack = r2r Required(r2rR) – r2r Delay(r2rD) (3)
同时定义 Tcs = Td-D - Td-S (4)
Tcs定义为时钟到目的寄存器与时钟到源寄存器的时间差。
考虑最坏的情况,Clock Setup Slack的计算如下:
Clock Setup Slack
= r2rR – r2rD
= SR + Tcs(min) – uTsu – uTco – Td(max) (5)
二、Clock Hold Slack
把Clock Hold Relationship表示为HR,HR定义为
HR = Hold Latch Edge – Hold Launch Edge + Hold Uncertainty (6)
考虑最坏的情况,Hold Check是Latch倾向于右偏。
Altera把Clock Hold Slack定义为:
Clock Hold Slack = r2rD – r2rR (7)
Hold Check时计算r2rR稍有不同。Hold Check时r2rR应表示为:
r2r = (Latch – Launch + hdUn) + (Td-D – Td-S) + uThd –uTco (8)
考虑最坏的情况,Clock Hold Slack计算如下:
Clock Hold Slack
= r2rD – r2rR
= Td(min) – HR – Tcs(max) – uThd + uTco (9)