TIMING-4 
 : 
 时钟树上的基准时钟重新定义无效  
 
 
 时钟树上的时钟重新定义无效。基准时钟  
 <clock_name>  
 是在时钟  
 <clock_name>  
 下游定义的 
 , 
 并覆盖其插入延迟和/ 
 或波形定义。 
 
 
  描述  
 
 
  
  基准时钟必须在时钟树的源时钟上定义。例如 
  , 
  源时钟可能是设计的输入端口。如果在覆盖传入时钟定义的下游定义基准时钟, 
  时序分析准确性可能降低 
  , 
  因为它会忽略位于重新定义的基准时钟源点之前的插入延迟 
  , 
  从而导致无法正确执行偏差计算。之所以不建议这样做, 
  是因为这可能导致时序分析错误 
  , 
  从而导致硬件故障。  
 
 
  
  解决方案  
 
 
  
  移除下游对象上的  
  create_clock  
  约束 
  , 
  允许传输上游时钟或者创建生成时钟以引用上游基准时钟。  
 
 
  
  示例  
 
 
  
  在下图中 
  , 
  在顶层端口  
  clk_pin_p  
  上已正确定义基准时钟。但  
  create_clock  
  约束用于在 
   IBUFCTRL  
  输出上重新定义基准时钟。此新时钟将忽略 IBUFCTRL  
  前的所有延迟。  
 
 
 
 
  
   TIMING-5 
   : 
   时钟树上的波形重定义无效  
  
 
   
   时钟树上的反向波形无效。生成时钟  
   <clock_name>  
   定义为位于时钟  
   <clock_name>  
   的下游 
   , 
   并具有波形反向定义(相比于传入时钟 
   ) 
   。  
  
 
   
   描述  
  
 
   
   应定义与传入时钟相关的生成时钟。 
   DRC  
   警告报告称生成时钟包含无效定义 
   , 
   例如 
   , 
   相比于传入时钟存在不同的周期、相移或反转。  
  
 
   
    解决方案  
   
 
    
    修改  
    create_generated_clock 约束以定义与传入时钟定义相匹配的正确波形定义。 
   
 
    
    示例  
   
 
    
    在下图中 
    , 
    在 
     LUT1  
    反相器的输出上创建了  
    create_generated_clock 
    , 
    但未应用  
    -invert  
    开关。  
   
 
   
 
    
     TIMING-6 
     : 
     相关时钟间无公共基准时钟  
    
 
     
     时钟  
     <clock_name>  
     与  
     <clock_name>  
     之间相互关联 
     ( 
     一起定时 
     ), 
     但两者间无公共基准时钟。即使满足时序要求, 
     设计仍可能失败。要查找这些时钟之间的时序路径 
     , 
     请运行以下命令 
     :  
    
 
     
     report_timing -from [get_clocks <CLOCK_NAME1>] -to [get_clocks  
    
 
     
     <CLOCK_NAME2>]  
    
 
     
     描述  
    
 
     
     默认情况下 
     , 
     这 
      2  
     个报告的时钟被视为相关联时钟 
     , 
     并以同步方式进行定时 
     , 
     即使这 
      2  
     个时钟并非衍生自公共的基准时钟, 
     且不含有已知相位关系 
     , 
     也同样如此。 
     DRC  
     警告报告称时序引擎无法保证这些时钟处于同步状态。  
    
 
     
     解决方案  
    
 
     
     解决办法取决于 
      2  
     个时钟域处于异步还是同步状态。对于异步时钟 
     , 
     时序例外 
     ( 
     例如 
     , 
     set_max_delay - datapath_only、 
     set_clock_groups  
     或 
      set_false_path 
     ) 
     应覆盖 
      2  
     个域之间的路径。当这 
      2  
     个域之间的所有路径都实现例外完全覆盖时, 
     即可解决 
      DRC 
     。  
    
 
     
     示例  
    
 
     
     对于同步时钟 
     , 
     如果原先 
      2  
     个时钟具有相同波形 
     , 
     那么可在 
      2  
     个时钟源对象上定义同一个时序时钟 
     ( 
     请参阅以下示例) 
     。  
    
 
     
      示例 
       1 
      : 
      create_clock -period 10 -name clk1 [get_ports <clock-1-source> <clock-2-  
     
 
      
      source>] 如果 2  
      个时钟波形不同 
      , 
      那么可将第 
       1  
      个时钟定义为基准时钟 
       (primary clock) 
      , 
      将第 
       2  
      个时钟定义为生成时钟 (generated clock), 
      并将第 
       1  
      个时钟指定为主时钟 
       (master clock) 
      ( 
      请参阅以下示例 
       2 
      ) 
      。  
     
 
      
      示例 
       2 
      : 
      create_clock -period 10 -name clk1 [get_ports <clock-1-source>]  
     
 
      
      如果时钟相关联 
      , 
      但时钟周期比率为 
       2 
      , 
      那么解决方案是在 
       1  
      个时钟源上创建基准时钟 
      , 
      而在第 
       2  
      个时钟源上创建生成时钟:  
     
 
      
      create_generated_clock -source [get_ports <clock-1-source>] -name clk2 -divide_by 2  
     
 
      
      [get_ports <clock-2-source>]  
     
 
    


















