时序约束

                                                               时序约束

 

第一步时钟设置

设置输入输出时钟

create_clock -name {mc_clk_20m_sys} -period $CLK_20M_PERIOD -waveform { 0.000 25 } [get_ports {mc_clk_20m_sys}]  -add

对于PLL 的输出时钟,用creat_generated_clock 创建,用derive_pll_clocks生成所有的pll时钟。

 


第二步时序约束

在进行时序约束之前,我们先了解一下Data Arrival and Data Required Time

时序约束

                                                                    图1  Timequest timing netlist

 

  •   Part 1 setup check

时序约束

 

                                                               图2  timing analysis 示意图(register to register)

 

时序约束

 

                                                                          图3  setup check

时序约束

 

时序约束

 

时序约束

 

 

 

                                                                     图片来自altera文档

 

由上面的三个等式:

         当setup slack >= 0 ,timing met

         当setup slack <  0 ,timing violation

 

  • Part 2 hold check

 

时序约束

                                                                                          图4 hold check

时序约束

 

时序约束

 

时序约束

 

 

                                                                         图片来自altera文档

 

由上面的三个等式:

        当hold slack >= 0 ,timing met

        当hold slack <  0 ,timing violation

 

  • Part 3 输入输出约束

约束最大最小输入输出延时,这样工具才好分析fpga/cpld 内的建立保持slack。

 

时序约束

                                                                                   输入约束示意图

时序约束

 

                                                                                    输出约束示意图

时序约束

 

时序约束

 

 

设置输入输出时序约束用set_input_delay /set_output_delay


  • 第三步:其他的时序约束

其余的时序约束,如多周期时钟路径,异步时钟等。

多周期 set_multicycle_path

不需要检测的路径 set_false_path