时序约束理论和实践

一、时序约束内容

时序约束的主要内容是时钟约束(clock)和IO输入输出(input/output delay)约束。还有其他约束例如(false path和multicycle path)。

二、input/output delay计算

2.1 input delay

max = Tdata(pcb)(max) - Tskew(min) + Tco(max)

min = Tdata(pcb)(min) - Tskew(max) + Tco(min)

2.2 output delay

max = Tdata(pcb) - Tskew + Tsu

min = Tdata(pcb) - Tskew - Th

三、时序分析类别

3.1 时钟

3.1.1 基础时钟

基础时钟由create clock来创建。基础时钟可以是晶振或者器件(例如摄像头的 pixel_clk)。

3.1.2 虚拟时钟

虚拟时钟也由create clock来创建。大部分博客资料认为一般用作IO的 input/output delay约束时的参考时钟,不用指定ports,但是我买的小x哥课程确实指定了ports,但是演示中确实存在参考时钟的port口,不做约束似乎不合理。

3.1.3 生成时钟

生成时钟一般用generated clock来创建,生成时钟包括pll/mmcm的生成时钟,也包括寄存器分频时钟。

3.1.4 其他

set_clock_groups - asynchronous 表示时钟组异步

set_clock_group - excusive 表示一个port上不同时存在两个时钟

set_input_jitter 表示时钟抖动

set_clock_uncertainty 表示时钟不确定性

3.2 in/output delay 

VIVADO中将input/output delay分成系统同步(system synchronous)和源同步(source synchronous)两种模型,但QUARTES II中并没有这种区别。系统同步模型是外部器件和FPGA使用同一时钟,以上升沿为例,数据的launch edge和latch edge相差一个时钟周期。以目前博客资料和视频资料来看,这种模型最为广泛。源同步时钟据博客资料认为是由外部器件产生的时钟输入至FPGA,即数据和时钟同源。但是隐约感觉这两种模型在其描述中区别不大。

3.2.1 input delay 

VIVADO给出的系统同步模型中的语法模板如下:

set_input_delay -clock $input_clock -max [expr $tco_max + $trce_dly_max] [get_ports $input_ports];
set_input_delay -clock $input_clock -min [expr $tco_min + $trce_dly_min] [get_ports $input_ports];

3.2.2 output delay

VIVADO给出的系统同步模型中的语法模板如下:

set_output_delay -clock $destination_clock -max [expr $trce_dly_max + $tsu] [get_ports $output_ports];
set_output_delay -clock $destination_clock -min [expr $trce_dly_min - $thd] [get_ports $output_ports];

3.3 其他

false path 失败路径,意思是这条路径不需要EDA软件进行时序分析。

multicycle path 多周期路径 没搞懂!!!!

四、教程

4.1 QUARTUS II

https://www.cnblogs.com/pejoicen/p/4194380.html

4.2 ISE 

https://blog.csdn.net/yuan1164345228/article/details/38541677

4.3 VIVADO

https://blog.csdn.net/FPGADesigner/article/details/82808420

https://blog.csdn.net/wangyanchao151/article/details/90510578

五、总结

时序分析都是围绕节点到节点传输模型来计算。时序约束的具体实践方法因为目前使用比较广泛的有两家三种软件,所以比较麻烦。

 

 

 

 

 

你可能感兴趣的:(时序约束理论和实践)