01signal.com

set_max_delay 和 set_min_delay上Vivado的时序分析(timing analysis)

好的,这是什么?

本页是另一篇文章的示例部分,解释了 set_max_delay 和 set_min_delay 用作 I/O 时序约束时的含义。

这些示例中使用的 Verilog 代码:

module top(
    input test_clk,
    input test_in,
(* IOB = "TRUE" *) output reg test_out
);

(* IOB = "TRUE" *) reg test_samp;

   always @(posedge test_clk)
     begin
	test_samp <= test_in;
	test_out <= test_samp;
     end
endmodule

实现(implementation)针对 Kintex Ultrascale运行。

输出端口(output port)的时序报告(timing reports)

根据其他帖子,以下示例背后的时序约束(timing constraints)是:

create_clock -name theclk -period 20 [get_ports test_clk]
set_max_delay -to [get_ports test_out] 7
set_min_delay -to [get_ports test_out] 0
set_max_delay -from [get_ports test_in] 1
set_min_delay -from [get_ports test_in] -3

时序报告为输出端口响应 set_max_delay:

Slack (MET) :             1.260ns  (required time - arrival time)
  Source:                 test_out_reg/C
                            (rising edge-triggered cell FDRE clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  Destination:            test_out
  Path Group:             **default**
  Path Type:              Max at Slow Process Corner
  Requirement:            7.000ns  (MaxDelay Path 7.000ns)
  Data Path Delay:        2.626ns  (logic 2.201ns (83.817%)  route 0.425ns (16.183%))
  Logic Levels:           1  (OBUF=1)
  Output Delay:           0.000ns
  Clock Path Skew:        -3.114ns (DCD - SCD + CPR)
    Destination Clock Delay (DCD):    0.000ns
    Source Clock Delay      (SCD):    3.114ns
    Clock Pessimism Removal (CPR):    0.000ns
  Clock Net Delay (Source):      1.282ns (routing 0.002ns, distribution 1.280ns)
  Timing Exception:       MaxDelay Path 7.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
                         (clock theclk rise edge)     0.000     0.000 r
    AG12                                              0.000     0.000 r  test_clk (IN)
                         net (fo=0)                   0.000     0.000    test_clk_IBUF_inst/I
    AG12                 INBUF (Prop_INBUF_HRIO_PAD_O)
                                                      0.738     0.738 r  test_clk_IBUF_inst/INBUF_INST/O
                         net (fo=1, routed)           0.105     0.843    test_clk_IBUF_inst/OUT
    AG12                 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
                                                      0.049     0.892 r  test_clk_IBUF_inst/IBUFCTRL_INST/O
                         net (fo=1, routed)           0.839     1.731    test_clk_IBUF
    BUFGCE_X1Y0          BUFGCE (Prop_BUFCE_BUFGCE_I_O)
                                                      0.101     1.832 r  test_clk_IBUF_BUFG_inst/O
    X2Y0 (CLOCK_ROOT)    net (fo=2, routed)           1.282     3.114    test_clk_IBUF_BUFG
    BITSLICE_RX_TX_X1Y50 FDRE                                         r  test_out_reg/C
  -------------------------------------------------------------------    -------------------
    BITSLICE_RX_TX_X1Y50 FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q)
                                                      0.734     3.848 r  test_out_reg/Q
                         net (fo=1, routed)           0.425     4.273    test_out_OBUF
    AL8                  OBUF (Prop_OUTBUF_HRIO_I_O)
                                                      1.467     5.740 r  test_out_OBUF_inst/O
                         net (fo=0)                   0.000     5.740    test_out
    AL8                                                               r  test_out (OUT)
  -------------------------------------------------------------------    -------------------

                         max delay                    7.000     7.000
                         clock pessimism              0.000     7.000
                         output delay                -0.000     7.000
  -------------------------------------------------------------------
                         required time                          7.000
                         arrival time                          -5.740
  -------------------------------------------------------------------
                         slack                                  1.260

如前所述,这是从时钟引脚到输出引脚(output pin)的 clock-to-output 的计算。

时序报告为输出端口响应 set_min_delay:

Slack (MET) :             2.242ns  (arrival time - required time)
  Source:                 test_out_reg/C
                            (rising edge-triggered cell FDRE clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  Destination:            test_out
  Path Group:             **default**
  Path Type:              Min at Fast Process Corner
  Requirement:            0.000ns  (MinDelay Path 0.000ns)
  Data Path Delay:        1.009ns  (logic 0.848ns (84.050%)  route 0.161ns (15.950%))
  Logic Levels:           1  (OBUF=1)
  Output Delay:           0.000ns
  Clock Path Skew:        -1.233ns (DCD - SCD - CPR)
    Destination Clock Delay (DCD):    0.000ns
    Source Clock Delay      (SCD):    1.233ns
    Clock Pessimism Removal (CPR):    -0.000ns
  Clock Net Delay (Source):      0.477ns (routing 0.002ns, distribution 0.475ns)
  Timing Exception:       MinDelay Path 0.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
                         (clock theclk rise edge)     0.000     0.000 r
    AG12                                              0.000     0.000 r  test_clk (IN)
                         net (fo=0)                   0.000     0.000    test_clk_IBUF_inst/I
    AG12                 INBUF (Prop_INBUF_HRIO_PAD_O)
                                                      0.339     0.339 r  test_clk_IBUF_inst/INBUF_INST/O
                         net (fo=1, routed)           0.025     0.364    test_clk_IBUF_inst/OUT
    AG12                 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
                                                      0.015     0.379 r  test_clk_IBUF_inst/IBUFCTRL_INST/O
                         net (fo=1, routed)           0.350     0.729    test_clk_IBUF
    BUFGCE_X1Y0          BUFGCE (Prop_BUFCE_BUFGCE_I_O)
                                                      0.027     0.756 r  test_clk_IBUF_BUFG_inst/O
    X2Y0 (CLOCK_ROOT)    net (fo=2, routed)           0.477     1.233    test_clk_IBUF_BUFG
    BITSLICE_RX_TX_X1Y50 FDRE                                         r  test_out_reg/C
  -------------------------------------------------------------------    -------------------
    BITSLICE_RX_TX_X1Y50 FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q)
                                                      0.264     1.497 r  test_out_reg/Q
                         net (fo=1, routed)           0.161     1.658    test_out_OBUF
    AL8                  OBUF (Prop_OUTBUF_HRIO_I_O)
                                                      0.584     2.242 r  test_out_OBUF_inst/O
                         net (fo=0)                   0.000     2.242    test_out
    AL8                                                               r  test_out (OUT)
  -------------------------------------------------------------------    -------------------

                         min delay                    0.000     0.000
                         clock pessimism              0.000     0.000
                         output delay                -0.000     0.000
  -------------------------------------------------------------------
                         required time                         -0.000
                         arrival time                           2.242
  -------------------------------------------------------------------
                         slack                                  2.242

本质上,这是相同的计算。不同之处在于每个逻辑单元(logic element)都考虑了 minimal 时延。而且,要求是 0 ns。

输入端口的时序报告

时序报告为输入端口响应 set_max_delay:

Slack (MET) :             1.317ns  (required time - arrival time)
  Source:                 test_in
                            (input port)
  Destination:            test_samp_reg/D
                            (rising edge-triggered cell FDRE clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  Path Group:             theclk
  Path Type:              Setup (Max at Fast Process Corner)
  Requirement:            1.000ns  (MaxDelay Path 1.000ns)
  Data Path Delay:        0.851ns  (logic 0.686ns (80.600%)  route 0.165ns (19.400%))
  Logic Levels:           2  (IBUFCTRL=1 INBUF=1)
  Clock Path Skew:        1.217ns (DCD - SCD + CPR)
    Destination Clock Delay (DCD):    1.217ns
    Source Clock Delay      (SCD):    0.000ns
    Clock Pessimism Removal (CPR):    0.000ns
  Clock Uncertainty:      0.025ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
    Total System Jitter     (TSJ):    0.050ns
    Total Input Jitter      (TIJ):    0.000ns
    Discrete Jitter          (DJ):    0.000ns
    Phase Error              (PE):    0.000ns
  Clock Net Delay (Destination): 0.461ns (routing 0.002ns, distribution 0.459ns)
  Timing Exception:       MaxDelay Path 1.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
    AK8                                               0.000     0.000 r  test_in (IN)
                         net (fo=0)                   0.000     0.000    test_in_IBUF_inst/I
    AK8                  INBUF (Prop_INBUF_HRIO_PAD_O)
                                                      0.664     0.664 r  test_in_IBUF_inst/INBUF_INST/O
                         net (fo=1, routed)           0.042     0.706    test_in_IBUF_inst/OUT
    AK8                  IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
                                                      0.022     0.728 r  test_in_IBUF_inst/IBUFCTRL_INST/O
                         net (fo=1, routed)           0.123     0.851    test_in_IBUF
    BITSLICE_RX_TX_X1Y49 FDRE                                         r  test_samp_reg/D
  -------------------------------------------------------------------    -------------------

                         max delay                    1.000     1.000
    AG12                                              0.000     1.000 r  test_clk (IN)
                         net (fo=0)                   0.000     1.000    test_clk_IBUF_inst/I
    AG12                 INBUF (Prop_INBUF_HRIO_PAD_O)
                                                      0.339     1.339 r  test_clk_IBUF_inst/INBUF_INST/O
                         net (fo=1, routed)           0.025     1.364    test_clk_IBUF_inst/OUT
    AG12                 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
                                                      0.015     1.379 r  test_clk_IBUF_inst/IBUFCTRL_INST/O
                         net (fo=1, routed)           0.350     1.729    test_clk_IBUF
    BUFGCE_X1Y0          BUFGCE (Prop_BUFCE_BUFGCE_I_O)
                                                      0.027     1.756 r  test_clk_IBUF_BUFG_inst/O
    X2Y0 (CLOCK_ROOT)    net (fo=2, routed)           0.461     2.217    test_clk_IBUF_BUFG
    BITSLICE_RX_TX_X1Y49 FDRE                                         r  test_samp_reg/C
                         clock pessimism              0.000     2.217
                         clock uncertainty           -0.025     2.192
    BITSLICE_RX_TX_X1Y49 FDRE (Setup_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D)
                                                     -0.024     2.168    test_samp_reg
  -------------------------------------------------------------------
                         required time                          2.168
                         arrival time                          -0.851
  -------------------------------------------------------------------
                         slack                                  1.317

如前所述,这个计算没有直观的解释。时序报告换输入端口回应 set_min_delay也没什么好说的:

Slack (MET) :             0.700ns  (arrival time - required time)
  Source:                 test_in
                            (input port)
  Destination:            test_samp_reg/D
                            (rising edge-triggered cell FDRE clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  Path Group:             theclk
  Path Type:              Hold (Min at Slow Process Corner)
  Requirement:            -3.000ns  (MinDelay Path -3.000ns)
  Data Path Delay:        0.850ns  (logic 0.617ns (72.583%)  route 0.233ns (27.417%))
  Logic Levels:           2  (IBUFCTRL=1 INBUF=1)
  Clock Path Skew:        3.077ns (DCD - SCD - CPR)
    Destination Clock Delay (DCD):    3.077ns
    Source Clock Delay      (SCD):    0.000ns
    Clock Pessimism Removal (CPR):    -0.000ns
  Clock Uncertainty:      0.025ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
    Total System Jitter     (TSJ):    0.050ns
    Total Input Jitter      (TIJ):    0.000ns
    Discrete Jitter          (DJ):    0.000ns
    Phase Error              (PE):    0.000ns
  Clock Net Delay (Destination): 1.245ns (routing 0.002ns, distribution 1.243ns)
  Timing Exception:       MinDelay Path -3.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
    AK8                                               0.000     0.000 r  test_in (IN)
                         net (fo=0)                   0.000     0.000    test_in_IBUF_inst/I
    AK8                  INBUF (Prop_INBUF_HRIO_PAD_O)
                                                      0.583     0.583 r  test_in_IBUF_inst/INBUF_INST/O
                         net (fo=1, routed)           0.066     0.649    test_in_IBUF_inst/OUT
    AK8                  IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
                                                      0.034     0.683 r  test_in_IBUF_inst/IBUFCTRL_INST/O
                         net (fo=1, routed)           0.167     0.850    test_in_IBUF
    BITSLICE_RX_TX_X1Y49 FDRE                                         r  test_samp_reg/D
  -------------------------------------------------------------------    -------------------

                         min delay                   -3.000    -3.000
    AG12                                              0.000    -3.000 r  test_clk (IN)
                         net (fo=0)                   0.000    -3.000    test_clk_IBUF_inst/I
    AG12                 INBUF (Prop_INBUF_HRIO_PAD_O)
                                                      0.738    -2.262 r  test_clk_IBUF_inst/INBUF_INST/O
                         net (fo=1, routed)           0.105    -2.157    test_clk_IBUF_inst/OUT
    AG12                 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
                                                      0.049    -2.108 r  test_clk_IBUF_inst/IBUFCTRL_INST/O
                         net (fo=1, routed)           0.839    -1.269    test_clk_IBUF
    BUFGCE_X1Y0          BUFGCE (Prop_BUFCE_BUFGCE_I_O)
                                                      0.101    -1.168 r  test_clk_IBUF_BUFG_inst/O
    X2Y0 (CLOCK_ROOT)    net (fo=2, routed)           1.245     0.077    test_clk_IBUF_BUFG
    BITSLICE_RX_TX_X1Y49 FDRE                                         r  test_samp_reg/C
                         clock pessimism              0.000     0.077
                         clock uncertainty            0.025     0.102
    BITSLICE_RX_TX_X1Y49 FDRE (Hold_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D)
                                                      0.048     0.150    test_samp_reg
  -------------------------------------------------------------------
                         required time                         -0.150
                         arrival time                           0.850
  -------------------------------------------------------------------
                         slack                                  0.700

时序报告与 -datapath_only

根据其他帖子,下面示例背后的时序约束是:

create_clock -name theclk -period 20 [get_ports test_clk]
set_max_delay -datapath_only -from [get_ports test_in] 2
set_max_delay -datapath_only -from [all_registers] \
   -to [get_ports test_out] 3

输出端口的时序报告:

Slack (MET) :             0.374ns  (required time - arrival time)
  Source:                 test_out_reg/C
                            (rising edge-triggered cell FDRE clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  Destination:            test_out
  Path Group:             **default**
  Path Type:              Max at Slow Process Corner
  Requirement:            3.000ns  (MaxDelay Path 3.000ns)
  Data Path Delay:        2.626ns  (logic 2.201ns (83.817%)  route 0.425ns (16.183%))
  Logic Levels:           1  (OBUF=1)
  Output Delay:           0.000ns
  Timing Exception:       MaxDelay Path 3.000ns -datapath_only

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
    BITSLICE_RX_TX_X1Y50                              0.000     0.000 r  test_out_reg/C
    BITSLICE_RX_TX_X1Y50 FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q)
                                                      0.734     0.734 r  test_out_reg/Q
                         net (fo=1, routed)           0.425     1.159    test_out_OBUF
    AL8                  OBUF (Prop_OUTBUF_HRIO_I_O)
                                                      1.467     2.626 r  test_out_OBUF_inst/O
                         net (fo=0)                   0.000     2.626    test_out
    AL8                                                               r  test_out (OUT)
  -------------------------------------------------------------------    -------------------

                         max delay                    3.000     3.000
                         output delay                -0.000     3.000
  -------------------------------------------------------------------
                         required time                          3.000
                         arrival time                          -2.626
  -------------------------------------------------------------------
                         slack                                  0.374

输入端口的时序报告:

Slack (MET) :             0.757ns  (required time - arrival time)
  Source:                 test_in
                            (input port)
  Destination:            test_samp_reg/D
                            (rising edge-triggered cell FDRE clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  Path Group:             theclk
  Path Type:              Setup (Max at Slow Process Corner)
  Requirement:            2.000ns  (MaxDelay Path 2.000ns)
  Data Path Delay:        1.136ns  (logic 0.856ns (75.342%)  route 0.280ns (24.658%))
  Logic Levels:           2  (IBUFCTRL=1 INBUF=1)
  Timing Exception:       MaxDelay Path 2.000ns -datapath_only

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
    AK8                                               0.000     0.000 r  test_in (IN)
                         net (fo=0)                   0.000     0.000    test_in_IBUF_inst/I
    AK8                  INBUF (Prop_INBUF_HRIO_PAD_O)
                                                      0.807     0.807 r  test_in_IBUF_inst/INBUF_INST/O
                         net (fo=1, routed)           0.105     0.912    test_in_IBUF_inst/OUT
    AK8                  IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
                                                      0.049     0.961 r  test_in_IBUF_inst/IBUFCTRL_INST/O
                         net (fo=1, routed)           0.175     1.136    test_in_IBUF
    BITSLICE_RX_TX_X1Y49 FDRE                                         r  test_samp_reg/D
  -------------------------------------------------------------------    -------------------

                         max delay                    2.000     2.000
    BITSLICE_RX_TX_X1Y49 FDRE (Setup_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D)
                                                     -0.107     1.893    test_samp_reg
  -------------------------------------------------------------------
                         required time                          1.893
                         arrival time                          -1.136
  -------------------------------------------------------------------
                         slack                                  0.757

这些时序报告显示了 set_max_delay 和 datapath_only 如何将计算范围缩小到数据路径(data path)。

此页面由英文自动翻译。 如果有不清楚的地方,请参考原始页面
Copyright © 2021-2024. All rights reserved. (b4b9813f)