在 Vivado 2015.x 版中,BUFR 和 BUFG 时钟域之间有保持违规问题。这是由于缺失时序弧而引起的。
该保持违规是由于 BUFR 和 BUFG 时钟域之间的路径上缺失时序弧而引起的。
解决办法是在 BUFG 时钟域上添加时钟不确定性。
例如:
create_generated_clock -name genclk -source [get_ports Clk] -divide_by 1 [get_pins Bufg/O]
set_clock_uncertainty -hold 0.290 -from [get_clocks -of [get_pins Bufr/O]] -to [get_clocks -of [get_pins Bufg/O]]
在 Vivado 2016.1 中,最差负时序裕量 (WNS) 将增加 20 ~ 30ps,因此该问题已经修复。
我们建议通过 Vivado 2016.1 静态时序分析(report_timing_summary)运行你的路线设计,以确定这种变化对设计的影响。
移植 Vivado 2016.1 时请去除 'set_clock_uncertainty' 约束。