TIMING-1 : 时钟修改块上的时钟波形无效  
 
 在  <cell_type>  输出  <pin_name>  上指定的时钟  <clock_name>  的时钟波形无效 , 与时钟修改块  (CMB)  设置不匹配。该时钟波形为 <VALUE> 。期望的波形为  <VALUE> 。  
 
 描述  
 
 Vivado Design Suite  会根据  CMB  设置和传入主时钟的特性 , 在  CMB  输出上自动衍生时钟。如果用户在  CMB  输出上定义生成时钟, 那么  Vivado  不会在同一定义点 ( 信号线或管脚 ) 上自动衍生生成时钟。 DRC  警告报告称用户定义的生成时钟与 Vivado  将自动创建的自动衍生时钟不匹配。这可能导致硬件故障 , 因为设计的时序约束与器件上所发生的约束不匹配。  
 
 解决方案  
 
 如果无需用户定义的生成时钟 , 请移除约束并改为使用自动衍生时钟。如果需要约束 , 请验证生成时钟约束与自动衍生时钟波形是否匹配, 或者修改  CMB  属性以与期望的时钟波形相匹配。如果要强制设置自动衍生时钟的名称 , 建议使用仅定义 -name  选项的  create_generated_clock  约束以及定义该时钟的对象 ( 通常为  CMB  的输出管脚 ) 的名称。 
 
 示例  
 
 在下图中 , 在  MMCM  实例管脚  CLKOUT0  上定义了  create_generated_clock  约束 , 但此约束与  Vivado  从MMCM 属性设置生成的自动衍生波形不匹配。如需仅对自动衍生时钟进行重命名, 请在约束文件中的主时钟定义后使用以下约束 :  
 
 create_generated_clock -name clkName [get_pins clk_gen_i0/clk_core_i0/inst/  
 
 mmcme3_adv_inst/CLKOUT0]  
 
 
 
 TIMING-2 : 基准时钟源管脚无效  
  在错误的管脚  <pin_name>  上创建了基准时钟  <clock_name> 。建议仅在适当的时钟根 ( 不含时序弧的输入端口或原语输出管脚) 上创建基准时钟。  
  描述  
  基准时钟必须在时钟树的源时钟上定义。例如 , 源时钟可能是设计的输入端口。如果在逻辑路径中间定义基准时钟 , 时序分析准确性可能降低, 因为它会忽略位于基准时钟源点之前的插入延迟 , 从而导致无法正确执行偏差计算。因此 , 最好不要在内部驱动程序管脚上创建基准时钟。否则可能导致硬件故障。  
  解决方案  
  修改  create_clock  约束以使用实际时钟树源。  
  示例  
  在下图中 , 基准时钟定义  create_clock  约束布局在  IBUFCTRL  实例的输出管脚上。如果使用  clk_pin_p  时钟对输入或输出端口路径进行定时, 则裕量将不准确 , 因为将缺失时钟树插入延迟部分。差分输入缓冲器的基准时钟定义应布局在顶层端口 clk_pin_p  上。  
  
  TIMING-3 : 时钟修改块上的基准时钟无效  
  在时钟修改块的输出管脚或信号线  <pin/net_name>  上会创建基准时钟  <clock_name> 。  
  描述  
  Vivado  会根据  CMB  设置和传入主时钟的特性 , 在  CMB  输出上自动衍生时钟。如果用户在  CMB  输出上定义基准时钟, 那么  Vivado  不会在相同输出上自动衍生时钟。此  DRC  报告显示在  CMB  的输出上已创建基准时钟 , 导致与传入时钟之间的联系中断, 并阻碍时钟插入延迟的正常计算。不建议如此行为 , 因为它可能导致时序分析不准确和硬件行为错误。  
  解决方案  
  修改约束以移除  CMB  输出上的  create_clock  约束。如需强制设置自动生成时钟的名称 , AMD  建议使用create_generated_clock 约束 , 其中仅含  -name  选项和  CMB 输出管脚。 
  示例  
  在下图中 , 在  MMCM  实例管脚  CLKOUT0  上已定义  create_clock  约束。这将覆盖由  Vivado  创建的自动衍生时钟, 导致与传入时钟之间的所有关系丢失。如需仅对自动衍生时钟进行重命名, 请在约束文件中的主时钟定义后使用以下约束 :  
  create_generated_clock -name clkName [get_pins clk_gen_i0/clk_core_i0/inst/  
  mmcme3_adv_inst/CLKOUT0]  
 