heyuanpi

vivado中从零添加时钟约束

0
阅读(8073)

vivado中如何从零调试添加时序约束?


首先需要一个综合过的design,如果仅仅只是elabroate是不行的。即是说read rtl之后synth_desing不能加-skip_ip -skip_constraint选项,应当让IP的sdc吃进来并综合。但是不要加自己写的sdc

然后report_clock_networks可以报告出哪些地方应该创建时钟,这些地方会驱动时序器件的clk pin。第一次报告的时候会将IP创建的时钟约束报告出来,剩下的需要创建时钟的地方就需要我们自己写sdc。

顺便说一下,ip自己创建的时钟名字很难看,可以用create_generate_clock进行重命名。

然后添加时钟,继续用report_clock_networks看看还剩下哪些,如此迭代。直到没有地方需要创建时钟。


以上方法适合从零开始对一个不熟悉的设计进行时钟分析和添加,也适合对已有的时序约束进行查看和验证。

完成上述步骤后,用report_clocks查看所有的时钟。(这里我验证的结果是report_clocks会报告出所有xdc中定义的时钟,但是由于xdc中定义不太合理,report_clocks_networks中会比report_clocks少一些时钟)

然后不需要重新综合,直接用report_timing_summary查看设计的timing情况。


一些有用的命令:

report_clocks

report_clock_networks

get_pins xxx/xxx/xxx_reg/C

get_pins xxx/xxx/xxx_reg/Q

get_pins xxx/xxx/xxx_reg/D

get_clocks -of_objects [get_pins xxx/xxx/C]

get_property SOURCE_PINS [get_clocks -of_objects [get_pins xxx/xxx/xxx]]



主要参考下面这个课程:

Vivado入门与提高--第31讲  UltraFast设计方法学(10):时序收敛之时序约束基本准则