01signal.com

set_max_delay 및 set_min_delay의Vivado timing analysis

알겠습니다. 이게 뭡니까?

이 페이지는 I/O timing constraints로 사용될 때 set_max_delay 와 set_min_delay 의 의미를 설명하는 다른 게시물 의 예제 부분입니다 .

이 예제에서 사용된 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에 대응하는 output port 용 timing report :

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

이미 설명했듯이 이것은 clock pin 에서 output pin까지의 clock-to-output 계산입니다.

set_min_delay에 대응하는 output port 용 timing report :

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 delays가 고려된다는 것입니다. 또한 요구 사항은 0 ns입니다.

input port용 timing reports

set_max_delay에 대응하는 input port 용 timing report :

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에 대한 응답으로 input port 용 timing report 에 대해 할 말이 많지 않습니다.

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가 장착된 timing reports

다른 게시물 에 따르면 아래 예제 뒤에 있는 timing constraints는 다음과 같습니다.

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

output port용 timing report :

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

input port용 timing report :

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

이 timing reports는 datapath_only가 포함된 set_max_delay이 계산 범위를 data path로 좁히는 방법을 보여줍니다.

이 페이지는 영어에서 자동으로 번역됩니다. 불분명한 사항이 있으면 원본 페이지를 참조하십시오.
Copyright © 2021-2024. All rights reserved. (b4b9813f)