vivado中从零添加时钟约束
0赞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]]
主要参考下面这个课程: