TIMING-25 : 千兆位收发器 (GT) 上的时钟波形无效
收发器输出管脚 <pin_name> 上或连接到该管脚的信号线上定义的时钟 <clock_name> 的波形与收发器设置不一 致, 或者缺少参考时钟定义。自动衍生时钟的周期为 <PERIOD> , 用户定义的时钟周期为 <PERIOD> 。
描述
对于 UltraScale 器件 , Vivado 会根据 GT 设置和传入主时钟的特性 , 在 GT 输出上自动衍生时钟。对于 7 系列器件 ,Vivado 不会自动衍生 GT 时钟 ; 而是由您负责在 GT 输出管脚上创建相应的基准时钟。 DRC 警告报告称用户定义的时钟与 Vivado 将自动创建的自动衍生时钟不匹配。这可能导致硬件故障 , 因为设计的时序约束与器件上所发生的约束不匹配。
解决方案
如果无需用户定义的生成时钟 , 请移除约束并改为使用自动衍生时钟。如果需要约束 , 请验证生成时钟约束与自动衍生时钟波形是否匹配, 或者修改 GT 属性以与期望的时钟波形相匹配。如果要强制设置自动衍生时钟的名称 , 建议使用仅定义 -name 选项的 create_generated_clock 约束以及定义该时钟的对象 ( 通常为 GT 的输出管脚 ) 的名称
TIMING-26 : 千兆位收发器 (GT) 上时钟缺失
输出时钟管脚 <pin_name> 未定义时钟。在 <port_name> 输入端口上创建基准时钟 , 以便 Vivado 自动衍生出缺失的 GT 时钟。
描述
对于 UltraScale 器件 , Vivado 会根据 GT 设置和传入主时钟的特性 , 在 GT 输出上自动衍生时钟。 DRC 警告报告称 ,由于输入端口缺少基准时钟, Vivado 无法自动衍生 GT 的输出时钟。由此导致无法对连接到时钟相关 GT 的下游逻辑进行定时。
解决方案
在建议的 GT 输入端口上创建基准时钟。
TIMING-27 : 层级管脚上的基准时钟无效
在错误的内部管脚 <pin_name> 上创建了基准时钟 <clock_name> 。当基准时钟的驱动管脚具有连接到多个时钟管脚的扇出时, 最好不要在层级管脚上创建基准时钟。
描述
如果某个时钟遍历驱动程序 , 并在下游层级管脚上定义新时钟 , 那么该层级管脚的下游单元的时序分析将有别于驱动程序管脚扇出上的单元的时序分析。如果在驱动程序时钟与层级管脚时钟之间存在任何同步路径, 那么偏差将不准确且时序验收将无效。这可能导致硬件故障。
解决方案
移除层级管脚上的基准时钟定义 , 或者如果确实需要下游时钟 , 请使用生成时钟 , 并改为将驱动程序时钟指定为主时钟。
TIMING-28 : 时序约束引用的自动衍生时钟
自动衍生时钟 <clock_name> 在时序约束内部按名称来引用 ( 请参阅 Vivado IDE 的“ Timing Constraint ”窗口中的约束位置 <#> ) 。建议按随附于时钟的管脚名称来引用自动衍生时钟 : get_clocks -of_objects [get_pins <PIN_NAME>]。
描述
源管脚对象应引用自动衍生时钟。开发期间可能由于对网表或约束进行修改而导致自动衍生时钟名称改变。除非自动衍生时钟已重命名, 否则应不鼓励按名称引用该时钟 , 因为修改设计后可能导致后续运行时约束失效。
解决方案
使用 [get_clocks -of_objects [get_pins <PIN_NAME>]] 将约束修改为按连接到时钟的管脚名称来引用自动衍生时钟。或者, 使用 create_generated_clock 约束来强制设置自动衍生时钟的名称。即使某些时序约束已引用自动衍生的时钟, 仍可对其进行重命名。
TIMING-29 : 多周期路径对不一致
建立和保持多周期路径约束通常应引用相同的 -start 对 ( 针对 SLOW-to-FAST 同步时钟 ) 或 -end 对 ( 针对 FASTto-SLOW 同步时钟 ), 请参阅 Vivado IDE 的“ Timing Constraint ” ( 时序约束 ) 窗口中的约束位置 <#> 。
描述
默认情况下 , set_multicycle_path 约束用于修改源时钟 ( 针对保持时间 ) 或目标时钟 ( 针对建立时间 ) 相关的路径要求乘数。对于某些用例, 路径要求必须根据特定时钟沿倍增。
解决方案
对于建立和保持时间 , 请修改 set_multicycle_path 约束 , 分别引用目标时钟 ( -end ) ( 针对 SLOW-to-FAST 同步时钟) 和源时钟 ( -start ) ( 针对 FAST-to-SLOW 同步时钟 ) 。请