vivao implemment 的时候时序有报错怎么办
首先,在这里整体看一下,都有哪些时序错误,能在代码中处理的就在代码中处理了。
一路选下来,可以看到具体是哪个地方的时序错了。基本上都是跨时钟域操作。可以看到是哪个变量,从哪到哪的时钟有问题。最好是先在代码中更改错误。如果代码中更改了以后,还是不行,请继续下面操作:
看到OK 点,知道进入下面界面
界面中 ,红色和橙色标注的就是时序有问题的。需要处理。
后面发现,
这个颜色的也会错,具体改了有用没有,点到对应颜色,如果该处时序有问题,下面显示的详细路径会报红的。
点到对应颜色,右键
可以选择 set false path 或者 set clock groups 。
set false path 设置伪路径,不在对特殊时序进行分析。特殊时序有:
1- 测试逻辑 (个人理解测试用的代码)
2- 添加同步电路后的跨时钟域路径等 (为了跨时钟域操作而用到的两个时钟,比如将一个reg 在新的时钟下打两拍这样的操作)
在两个时钟域之间应该相互设置为set_false:
set_false_path -from [get_clocks clk_a] -to [get_clocks clk_b]
set_false_path -from [get_clocks clk_b] -to [get_clocks clk_a]
set clock groups 用来定义两个时钟是不相关的
set_clock_groups -asynchronous -group clk_a -group clk_b clk_a和clk_b是异步时钟。
set_clock_groups -physically_exclusive -group clk_a -group clk_b -group clk_c 两时钟物理上不同步存在
set_clock_groups -logically_exclusive\
-group [get_clocks -of [get_pins clk_core/.../CLKOUT0]] -group [get_clocks -of [get_pins clk_core/.../CLKOUT1]]逻辑互斥,同时只有一个工作
到这里,直接OK即可,看到XDC中,会多了几句话。退出,保存,重新编译。看有没有改善吧
或者也可以直接把上面那句话复制到 XDC里面。
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins u_ddr_ctrl/u_mig_7series_0/u_mig_7series_0_mig/u_ddr3_infrastructure/gen_mmcm.mmcm_i/CLKFBOUT]] -group [get_clocks -of_objects [get_pins u_clk_pll/inst/mmcm_adv_inst/CLKOUT0]]
set_clock_groups -asynchronous - 这句话的意思是,时使两个group的时钟之间不关联