笔记参考资料:student_guide 和lab guide
时序约束在lab3
为什么需要时钟约束?
仿真的时候,我们是不需要时钟约束的,因为所有寄存器的触发时间一定都完全一样。所谓的时钟约束,就是通过修改设计或者添加buf等对时钟到达寄存器的时间进行修改,或者是限定某些组合逻辑的计算时间,从而满足时序要求。
约束便是对时种,延时等的设置,所有的这些个设置被存放在xxx.con文件中,要理解这些时钟设置的原因。
由于时钟设置不能快也不能慢,太快可能会导致下一级存储器来不及储存这一级的数据,太慢可能会造成输入数据亚稳态等
下面的解释都是针对下图的设计进行的约束

clock latency 总结_u010170039的博客-CSDN博客_clock latency

clk frequency: 时钟频率
clock lantency = source lanytency + network latency
source lantancy : 就是时钟源到模块clk输入的地方
network lantancy:就是时钟从模块clk到模块内部各个寄存器的时间
clock uncertainty =clock jitter + 2*clock skew
clock jitter: 每个时钟周期的微小偏差
clock skew: 到达两个相邻模块的network lantency的不同
如何理解这里的setup margin?
属于clock uncertainty的一部分,除了jitter和ckew外的额外约束
如何理解这里的worst case rise/fall transition time
就是clock的那个上升或者下降沿,它不可能是直上直下的,有一定的上升时间和下降时间,这个时间就是transition time

Input_delay = T - ext_delay - reg_setup - uncertainty
输入时钟要在一个周期内到达输入端口。输入约束主要由外部输入延迟决定