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

timing reports と -datapath_only

その他の投稿によると、以下の例の背後にある 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 は、 set_max_delay と datapath_only がどのように計算を data pathに絞り込むかを示しています。

このページは英語から自動翻訳されています。 不明な点は元のページを参照してください。
Copyright © 2021-2024. All rights reserved. (b4b9813f)