• set_multicycle_path


    set_multicycle_path的常用场景及命令速记:

    1、相同时钟或相同周期同步时钟

    set_multicycle_path N -setup -from CLK1 -to CLK2

    set_multicycle_path N-1 -hold -from CLK1 -to CLK2

    2、同步分频时钟,快采慢

    set_multicycle_path N -setup -start -from CLK1 -to CLK2

    set_multicycle_path N-1 -hold (-start)-from CLK1 -to CLK2 

    3、同步分频时钟,慢采快 

    set_multicycle_path N -setup (-end)-from CLK1 -to CLK2

    set_multicycle_path N-1 -hold -end -from CLK1 -to CLK2

    在波形分析中,-start移动default launch edge(setup向左,hold向右),-end移动default capture edge(setup向右,hold向左)。

    1 相同时钟或相同周期的同步时钟

    在STA分析中一些data path长度超过一个时钟周期时,我们可以针对这条path使用multicycle path,改变捕获数据的周期数。

    如下示例,setup check时发现UFF0/Q到UFF1/D的data path长度差不多三个时钟周期(如图1),设置multicycle path将每个时钟周期采集一次数据(Default capture)改为每三个周期采集一次数据(New capture edge)。

    create_clock - name CLKM - period 10 [ get_ports CLKM]
    set_multicycle_path 3 - setup - from [ get_pins UFF0/Q] - to [ get_pins UFF1/D]

    a36ac6e187a1418a9addb2148ea481cf.png

    图1 

    1. Startpoint: UFF0 (rising edge-triggered flip-flop clocked by CLKM)
    2. Endpoint: UFF1 (rising edge-triggered flip-flop clocked by CLKM)
    3. Path Group: CLKM
    4. Path Type: max
    5. SCENARIO:FUNC_SLOW_CMAX-40
    6. Point Incr Path
    7. ---------------------------------------------------------------
    8. clock CLKM (rise edge) 0.00 0.00
    9. clock network delay (propagated) 0.11 0.11
    10. UFF0/CK (DFF ) 0.00 0.11 r
    11. UFF0/Q (DFF ) <- 0.14 0.26 f
    12. UNOR0/ZN (NR2 ) 0.04 0.30 r
    13. UBUF4/Z (BUFF ) 0.05 0.35 r
    14. ... (...) 28.00 28.00
    15. UFF1/D (DFF ) 0.00 28.35 r
    16. data arrival time 28.35
    17. clock CLKM (rise edge) 30.00 30.00
    18. clock network delay (propagated) 0.12 30.12
    19. clock uncertainty -0.30 29.82
    20. UFF1/CK (DFF ) 29.82 r
    21. library setup time -0.04 29.78
    22. data required time 29.78
    23. ---------------------------------------------------------------
    24. data required time 29.78
    25. data arrival time -28.35
    26. ---------------------------------------------------------------
    27. slack (MET) 1.43

    此时hold check沿默认在setup capture edge的前一个有效沿(这里是上升沿触发),但是这样hold check就无法met,所以还需要给hold check设置一个set_multicycle_path。让UFF1/CK的hold check提前两个周期(如图2)。

    set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]

    43535121181a47e7b34ae2fda69426bf.png

    图2 

    1. Startpoint: UFF0 (rising edge-triggered flip-flop clocked by CLKM)
    2. Endpoint: UFF1 (rising edge-triggered flip-flop clocked by CLKM)
    3. Path Group: CLKM
    4. Path Type: min
    5. SCENARIO:FUNC_FAST_CMIN125
    6. Point Incr Path
    7. ---------------------------------------------------------------
    8. clock CLKM (rise edge) 0.00 0.00
    9. clock source latency 0.00 0.00
    10. CLKM (in) 0.00 0.00 r
    11. UCKBUF0/C (CKB ) 0.03 0.03 r
    12. UCKBUF1/C (CKB ) 0.03 0.06 r
    13. UFF0/CK (DFF ) 0.00 0.06 r
    14. UFF0/Q (DFF ) <- 0.07 0.13 r
    15. UNOR0/ZN (NR2 ) 0.01 0.14 f
    16. UBUF4/Z (BUFF ) 0.03 0.17 f
    17. ... (...) 14.00 14.00
    18. UFF1/D (DFF ) 0.00 14.17 f
    19. data arrival time 14.17
    20. clock CLKM (rise edge) 0.00 0.00
    21. clock source latency 0.00 0.00
    22. CLKM (in) 0.00 0.00 r
    23. UCKBUF0/C (CKB ) 0.03 0.03 r
    24. UCKBUF2/C (CKB ) 0.03 0.06 r
    25. UFF1/CK (DFF ) 0.00 0.06 r
    26. clock uncertainty 0.02 0.08
    27. library hold time 0.01 0.09
    28. data required time 0.09
    29. ---------------------------------------------------------------
    30. data required time 0.09
    31. data arrival time -14.17
    32. ---------------------------------------------------------------
    33. slack (VIOLATED) 14.08

    总结来说,大多数设计中让setup check延迟到第N个周期采集数据,那么就需要让hold check提前N-1个周期,回到与launch edge同沿检查。(正常同步时钟setup check N=1,即capture edge在launch edge的下一个时钟周期有效沿,N-1=0,即hold check与launch edge同沿检查。)

    还是上面的例子,如果只是让setup check延迟两个周期(N=3),不让hold check提前(N-1=2)两个周期会怎样?(如图3)hold check在setup check capture edge的前一个上升沿。hold check无法met。

    a462e4bb466f40389518c40d606e42af.png

    图3 

    1. Startpoint: UFF0 (rising edge-triggered flip-flop clocked by CLKM)
    2. Endpoint: UFF1 (rising edge-triggered flip-flop clocked by CLKM)
    3. Path Group: CLKM
    4. Path Type: min
    5. SCENARIO:FUNC_FAST_CMIN125
    6. Point Incr Path
    7. ---------------------------------------------------------------
    8. clock CLKM (rise edge) 0.00 0.00
    9. clock source latency 0.00 0.00
    10. CLKM (in) 0.00 0.00 r
    11. UCKBUF0/C (CKB ) 0.03 0.03 r
    12. UCKBUF1/C (CKB ) 0.03 0.06 r
    13. UFF0/CK (DFF ) 0.00 0.06 r
    14. UFF0/Q (DFF ) <- 0.07 0.13 r
    15. UNOR0/ZN (NR2 ) 0.01 0.14 f
    16. UBUF4/Z (BUFF ) 0.03 0.17 f
    17. ... (...) 14.00 14.00
    18. UFF1/D (DFF ) 0.00 14.17 f
    19. data arrival time 14.17
    20. clock CLKM (rise edge) 0.00 20.00
    21. clock source latency 0.00 20.00
    22. CLKM (in) 0.00 20.00 r
    23. UCKBUF0/C (CKB ) 0.03 20.03 r
    24. UCKBUF2/C (CKB ) 0.03 20.06 r
    25. UFF1/CK (DFF ) 0.00 20.06 r
    26. clock uncertainty 0.02 20.08
    27. library hold time 0.01 20.09
    28. data required time 20.09
    29. ---------------------------------------------------------------
    30. data required time 20.09
    31. data arrival time -14.17
    32. ---------------------------------------------------------------
    33. slack (VIOLATED) -5.92

    2 慢采快

    data path从低速时钟到高速时钟,clock 定义如下示例, 默认的launch与capture edge如图5 。 

     create_clock -name CLKM \

    - period 20 - waveform {0 10} [ get_ports CLKM]
    create_clock - name CLKP \
    - period 5 - waveform {0 2.5} [ get_ports CLKP]

    图5 

    假设data path长度超过三个CLKP的周期,此时setup check过与紧张,设置muticycle path让capture edge向前三个周期。如图6 。

    set_multicycle_path 4 - setup \
    - from [ get_clocks CLKM] - to [ get_clocks CLKP] -end

    图6 

     此时hold check过与紧张,需要将hold check退回到launch edge位置。如图7。

    set_multicycle_path 3 - hold \
    - from [ get_clocks CLKM] - to [ get_clocks CLKP] - end

    图7 

    3 快采慢

    data path从告诉时钟到低速时钟,clock定义示例如下,默认的setup、hold check如图8 。

    create_clock - name CLKM \
    - period 20 - waveform {0 10} [ get_ports CLKM]
    create_clock - name CLKP \
    - period 5 - waveform {0 2.5} [ get_ports CLKP]

    图8 

    setup check有四种情况,setup1、setup2、setup3和setup4,其中时序最紧的是setup4,对应setup check的四种launch edge,hold check 也有四种情况,最紧的是launch和capture clock都在20ns时刻,相当于0ns的时刻。

    如上示例假设data path长度超过1个CLKP的时钟周期,那么就需要设置multicycle path让setup check的launch edge提前一个CLKP的时钟周期,如图9。

    set_multicycle_path 2 - setup \
    - from [ get_clocks CLKP] - to [ get_clocks CLKM] - start

    图9 

    此时对应hold check launch在15ns,capture clock在20ns,需要将hold check的launch edge延迟一个时钟周期,即launch clock和capture clock都在20ns处,相当于在0ns处进行hold check,如图10设置如下 。

    set_multicycle_path 1 - hold \
    - from [ get_clocks CLKP] - to [ get_clocks CLKM] - start

    图10 

     

     

  • 相关阅读:
    重生奇迹MU之地下城简介
    暴力破解及验证码安全
    Spring Cloud 之 GateWay简介及简单DEMO的搭建
    2023_Spark_实验二十:SparkStreaming累加计算单词频率
    最高效面试八股文,平躺80%的企业
    【VRTK】【VR开发】【Unity】6-设置interactor和虚拟手
    CEC2013(MATLAB):猎豹优化算法(The Cheetah Optimizer,CO)求解CEC2013
    Nginx进阶 配置-Nginx auth_basic 身份认证
    Error: no matching distribution found for tensorflow-cpu==2.6.*
    【中间件】Redis监控以及指标
  • 原文地址:https://blog.csdn.net/m0_61544122/article/details/125434977