以register to register为例,说明STA中setup slack和hold slack的意义。
(图中蓝色参数表示计算延时时,数据的实际值,红色表示要求值)
明确几个参数概念:
Tco:寄存器中从时钟发起到Q输出的时间
Tdata:寄存器之间的组合逻辑数据延迟,包括逻辑和走线延迟
Tclk1:时钟到达源寄存器的延迟(源寄存器延迟)
Tclk2:时钟到达目的寄存器的延迟(目的寄存器延迟)
Tsu:建立时间门限,即时钟上升沿到来之前,数据需要保持稳定的时间
Thold:保持时间门限,即时钟上升沿到来之后,数据需要保持稳定的时间
Tcycle:一个时钟周期
setup slack:
计算公式:setup slack = data required time - data arrival time.
前者表示数据要求到达的时间,后者表示数据实际到达时间,要求setup slack>0.即要求到达的时间大于实际到达的时间(比如要求10ns到达,但是数据8ns已经到了),那么数据肯定可以被稳定采集。
★ data required time:因为数据要在时钟上升沿到达之前保持稳定,至少为Tsu,因此其计算公式为:
data required time = Tcycle + Tclk2 - Tsu
★ data arrival time:数据实际到达时间,因此其计算公式为:
data arrival time = Tclk1 + Tco + Tdata
故:setup slack = data required time - data arrival time
= Tcycle + Tclk2 - Tsu - ( Tclk1 + Tco + Tdata)
hold slack:
计算公式:hold slack = data finish time - required finish time.
前者表示数据传送结束的时间,后者表示要求数据传送所需时间,要求hold slack>0.即实际结束时间大于要求结束的时间(比如要求20ns结束,但是实际22ns才结束),那么数据一定可以稳定。
★ data finish time:数据传送结束的时间,因此其计算公式为:
data finish time = Tclk1 + Tco + Tdata + Tcycle
★ required finish time:要求数据传送结束时间,因此其计算公式为:
required finish time = Tcycle + Tclk2 + Thold
故:hold slack = data finish time - required finish time
= Tclk1 + Tco + Tdata + Tcycle - ( Tcycle + Tclk2 + Thold)
=Tclk1 + Tco + Tdata - ( Tclk2 + Thold)
Tips:可以发现setup slack与时钟周期Tcycle有关,而hold slack与其无关。若要求最大时钟频率时,可以根据setup slack的值来计算,即Fmax=1/(Tcycle - setup slack). 建立时间决定了数据路径的最大延迟,保持时间决定了数据路径的最小延迟。文章来源:https://uudwc.com/A/8dnoM
(自学笔记总结,如有错误,敬请指正)文章来源地址https://uudwc.com/A/8dnoM