01signal.com

set_input_delay および set_output_delay constraints上のVivadoの timing analysis

よし、これは何?

このページは、 SDC timing constraintsにおける set_input_delay と set_output_delay の意味を説明する別の投稿のサンプル部分です

その他の投稿によると、以下の例の背後にある timing constraints は次のとおりです。

create_clock -name theclk -period 20 [get_ports test_clk]
set_output_delay -clock theclk -max 8 [get_ports test_out]
set_output_delay -clock theclk -min -3 [get_ports test_out]
set_input_delay -clock theclk -max 4 [get_ports test_in]
set_input_delay -clock theclk -min 2 [get_ports test_in]

set_input_delay -max (setup) の分析

Slack (MET) :             15.664ns  (required time - arrival time)
  Source:                 test_in
                            (input port clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  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:            20.000ns  (theclk rise@20.000ns - theclk rise@0.000ns)
  Data Path Delay:        2.465ns  (logic 0.291ns (11.797%)  route 2.175ns (88.203%))
  Logic Levels:           1  (IBUF=1)
  Input Delay:            4.000ns
  Clock Path Skew:        2.162ns (DCD - SCD + CPR)
    Destination Clock Delay (DCD):    2.162ns = ( 22.162 - 20.000 )
    Source Clock Delay      (SCD):    0.000ns
    Clock Pessimism Removal (CPR):    0.000ns
  Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
    Total System Jitter     (TSJ):    0.071ns
    Total Input Jitter      (TIJ):    0.000ns
    Discrete Jitter          (DJ):    0.000ns
    Phase Error              (PE):    0.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
                         (clock theclk rise edge)     0.000     0.000 r
                         input delay                  4.000     4.000
    AE20                                              0.000     4.000 r  test_in (IN)
                         net (fo=0)                   0.000     4.000    test_in
    AE20                 IBUF (Prop_ibuf_I_O)         0.291     4.291 r  test_in_IBUF_inst/O
                         net (fo=1, routed)           2.175     6.465    test_in_IBUF
    SLICE_X0Y1           FDRE                                         r  test_samp_reg/D
  -------------------------------------------------------------------    -------------------

                         (clock theclk rise edge)    20.000    20.000 r
    AE23                                              0.000    20.000 r  test_clk (IN)
                         net (fo=0)                   0.000    20.000    test_clk
    AE23                 IBUF (Prop_ibuf_I_O)         0.077    20.077 r  test_clk_IBUF_inst/O
                         net (fo=1, routed)           1.278    21.355    test_clk_IBUF
    BUFGCTRL_X0Y4        BUFG (Prop_bufg_I_O)         0.026    21.381 r  test_clk_IBUF_BUFG_inst/O
                         net (fo=2, routed)           0.781    22.162    test_clk_IBUF_BUFG
    SLICE_X0Y1           FDRE                                         r  test_samp_reg/C
                         clock pessimism              0.000    22.162
                         clock uncertainty           -0.035    22.126
    SLICE_X0Y1           FDRE (Setup_fdre_C_D)        0.003    22.129    test_samp_reg
  -------------------------------------------------------------------
                         required time                         22.129
                         arrival time                          -6.465
  -------------------------------------------------------------------
                         slack                                 15.664

この分析は時間 0 から開始されます。次に、 max input delay constraintで指定された 4 ns (clock-to-output) を追加し、その data pathを続行します。 logic elements の delays に使用される値は、 process、電圧、および温度の可能な最速の組み合わせの値です。 FPGA自身の data path delay (2.465 ns) と合わせると、合計 data path delay は 6.465 nsになります。

次に、 20 nsのの clock から clock path が計算されます。繰り返しになりますが、 delays の値は可能な限り最速の組み合わせから選択されます。 clock は input pin から flip-flop に移動します ( PLL が含まれていないため、 clock network delayの補償はありません)。この計算では、推定 jitter も考慮されます ("clock uncertainty" により)。全体として、 clock path は data が flip-flopに到着した後の 15.664 ns である 22.129 nsで終了します。 constraintの slackです。

この分析は、 set_input_delay -max constraint に配置する数が、 input pin を駆動する外部デバイスの最大 clock-to-output (+ ボードの trace delay ) であることを示しています。これは、 data pathの開始時刻として数値が使用されているためです。上記の Path Type の「Max」の部分に注意してください。

set_input_delay -min (hold) の分析

Min Delay Paths
--------------------------------------------------------------------------------------
Slack (VIOLATED) :        -0.045ns  (arrival time - required time)
  Source:                 test_in
                            (input port clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  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:            0.000ns  (theclk rise@0.000ns - theclk rise@0.000ns)
  Data Path Delay:        3.443ns  (logic 0.626ns (18.194%)  route 2.817ns (81.806%))
  Logic Levels:           1  (IBUF=1)
  Input Delay:            2.000ns
  Clock Path Skew:        5.351ns (DCD - SCD - CPR)
    Destination Clock Delay (DCD):    5.351ns
    Source Clock Delay      (SCD):    0.000ns
    Clock Pessimism Removal (CPR):    -0.000ns
  Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
    Total System Jitter     (TSJ):    0.071ns
    Total Input Jitter      (TIJ):    0.000ns
    Discrete Jitter          (DJ):    0.000ns
    Phase Error              (PE):    0.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
                         (clock theclk rise edge)     0.000     0.000 r
                         input delay                  2.000     2.000
    AE20                                              0.000     2.000 r  test_in (IN)
                         net (fo=0)                   0.000     2.000    test_in
    AE20                 IBUF (Prop_ibuf_I_O)         0.626     2.626 r  test_in_IBUF_inst/O
                         net (fo=1, routed)           2.817     5.443    test_in_IBUF
    SLICE_X0Y1           FDRE                                         r  test_samp_reg/D
  -------------------------------------------------------------------    -------------------

                         (clock theclk rise edge)     0.000     0.000 r
    AE23                                              0.000     0.000 r  test_clk (IN)
                         net (fo=0)                   0.000     0.000    test_clk
    AE23                 IBUF (Prop_ibuf_I_O)         0.734     0.734 r  test_clk_IBUF_inst/O
                         net (fo=1, routed)           2.651     3.385    test_clk_IBUF
    BUFGCTRL_X0Y4        BUFG (Prop_bufg_I_O)         0.093     3.478 r  test_clk_IBUF_BUFG_inst/O
                         net (fo=2, routed)           1.873     5.351    test_clk_IBUF_BUFG
    SLICE_X0Y1           FDRE                                         r  test_samp_reg/C
                         clock pessimism              0.000     5.351
                         clock uncertainty            0.035     5.387
    SLICE_X0Y1           FDRE (Hold_fdre_C_D)         0.101     5.488    test_samp_reg
  -------------------------------------------------------------------
                         required time                         -5.488
                         arrival time                           5.443
  -------------------------------------------------------------------
                         slack                                 -0.045

この分析は時間 0 から開始されます。次に、 min input delay constraintで指定された 2 ns (clock-to-output) を追加し、その data pathを続行します。 logic elements の delays に使用される値は、 process、電圧、および温度の可能な限り遅い組み合わせの値です。 FPGA自身の data path delay (3.443 ns) と合わせると、合計 data path delay は 5.443 nsになります。 FPGA自体の delay が上記の高速分析と比較して大きいことは驚くべきことではありません。

次に、 clock path が計算され、可能な限り遅い組み合わせが使用されます。この計算は、 0 nsで同じ clock edge から開始します。結局のところ、これは hold timingの計算なので、問題は、 flip-flop の input でデータがサンプリングされる前に変更されていないかどうかです。

clock は input pin から flip-flop に移動します ( PLL が含まれていないため、 clock network delayの補償はありません)。この計算では、推定 jitter も考慮されます ("clock uncertainty" により)。 setupの計算と同じ値ですが、符号が逆になっていることに注意してください。同じ jitterですが、最悪のケースは逆方向です。

全体として、 clock path は 5.488 nsで終了しますが、これは 0.045 ns では遅すぎます ( data は 5.443 nsで変更されました)。したがって、 constraint は 0.045 nsの negative slack で侵害されました。

この分析は、 set_input_delay -min constraint に配置する数が、 input pinを駆動する外部デバイスの最小の clock-to-output であることを示しています。これは、 data pathの開始時刻として数値が使用されているためです。上記の Path Type の「Min」の部分に注意してください。

2 ns の最小限の clock-to-output が hold constraintに違反する可能性があることは驚くべきことです。これは軽視すべきではありません — 違反した timing constraintのように、無視すると実際の問題を引き起こす可能性があります。

この場合の解決策は、 global networkの clock を input clockにロックする PLL を clock pathに追加することです。これは事実上、数ナノ秒早くプルすることを意味し、問題を確実に解決します。

set_output_delay -max (setup) の分析

Slack (MET) :             2.983ns  (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
                            (output port clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  Path Group:             theclk
  Path Type:              Max at Slow Process Corner
  Requirement:            20.000ns  (theclk rise@20.000ns - theclk rise@0.000ns)
  Data Path Delay:        3.631ns  (logic 2.583ns (71.152%)  route 1.047ns (28.848%))
  Logic Levels:           1  (OBUF=1)
  Output Delay:           8.000ns
  Clock Path Skew:        -5.351ns (DCD - SCD + CPR)
    Destination Clock Delay (DCD):    0.000ns = ( 20.000 - 20.000 )
    Source Clock Delay      (SCD):    5.351ns
    Clock Pessimism Removal (CPR):    0.000ns
  Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
    Total System Jitter     (TSJ):    0.071ns
    Total Input Jitter      (TIJ):    0.000ns
    Discrete Jitter          (DJ):    0.000ns
    Phase Error              (PE):    0.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
                         (clock theclk rise edge)     0.000     0.000 r
    AE23                                              0.000     0.000 r  test_clk (IN)
                         net (fo=0)                   0.000     0.000    test_clk
    AE23                 IBUF (Prop_ibuf_I_O)         0.734     0.734 r  test_clk_IBUF_inst/O
                         net (fo=1, routed)           2.651     3.385    test_clk_IBUF
    BUFGCTRL_X0Y4        BUFG (Prop_bufg_I_O)         0.093     3.478 r  test_clk_IBUF_BUFG_inst/O
                         net (fo=2, routed)           1.873     5.351    test_clk_IBUF_BUFG
    SLICE_X0Y1           FDRE                                         r  test_out_reg/C
  -------------------------------------------------------------------    -------------------
    SLICE_X0Y1           FDRE (Prop_fdre_C_Q)         0.223     5.574 r  test_out_reg/Q
                         net (fo=1, routed)           1.047     6.622    test_out_OBUF
    AK21                 OBUF (Prop_obuf_I_O)         2.360     8.982 r  test_out_OBUF_inst/O
                         net (fo=0)                   0.000     8.982    test_out
    AK21                                                              r  test_out (OUT)
  -------------------------------------------------------------------    -------------------

                         (clock theclk rise edge)    20.000    20.000 r
                         clock pessimism              0.000    20.000
                         clock uncertainty           -0.035    19.965
                         output delay                -8.000    11.965
  -------------------------------------------------------------------
                         required time                         11.965
                         arrival time                          -8.982
  -------------------------------------------------------------------
                         slack                                  2.983

この分析の目的は output delayを測定することであるため、 clock edgeから開始し、 flip-flopに向かって追跡し、 data pathに沿って追跡します。これは合計 delayになり、 8.982 nsになります。

「Path Type」は、次の clock (at 20 ns) を考慮に入れているにもかかわらず ( 0 ns)で同じ clockではなく)、 setup の計算であるとは言っていないことに注意してください。

計算は、 process、電圧、および温度の可能な限り遅い組み合わせで行われます ( input setup の計算は、最も速い組み合わせで行われたことを思い出してください)。 clock path は、 input delayに対する hold timing の分析の clock path に非常に似ています。どちらの計算も低速の modelに基づいているため、これは予想どおりの結果です。

合計 delay は、 20 nsでのの clock の時間から set_output_delayで指定された値を差し引いた時間と比較されます。推定 jitter (上記の場合は0.035 ns ) を差し引きます。

要約すると、 data は 8.982 nsで安定した logic state に達し、安定しなければならない時間は 12 ns程度なので、ほぼ 3 nsの slack があります。

これは、 set_output_delay -max で使用される番号が、外部デバイスの input に指定されている setup time でなければならない理由を示しています。この timing constraint は、 outputで有効な data までの合計 delay と、次の clockの時間位置との差を計算することによって検証されます。この違いが達成目標です。それはまさに setup timeの定義です: 次の clockの前に data が安定していなければならない時間。

set_output_delay -min (hold) の分析

Slack (MET) :             0.791ns  (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
                            (output port clocked by theclk  {rise@0.000ns fall@10.000ns period=20.000ns})
  Path Group:             theclk
  Path Type:              Min at Fast Process Corner
  Requirement:            0.000ns  (theclk rise@0.000ns - theclk rise@0.000ns)
  Data Path Delay:        1.665ns  (logic 1.384ns (83.159%)  route 0.280ns (16.841%))
  Logic Levels:           1  (OBUF=1)
  Output Delay:           -3.000ns
  Clock Path Skew:        -2.162ns (DCD - SCD - CPR)
    Destination Clock Delay (DCD):    0.000ns
    Source Clock Delay      (SCD):    2.162ns
    Clock Pessimism Removal (CPR):    -0.000ns
  Clock Uncertainty:      0.035ns  ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
    Total System Jitter     (TSJ):    0.071ns
    Total Input Jitter      (TIJ):    0.000ns
    Discrete Jitter          (DJ):    0.000ns
    Phase Error              (PE):    0.000ns

    Location             Delay type                Incr(ns)  Path(ns)    Netlist Resource(s)
  -------------------------------------------------------------------    -------------------
                         (clock theclk rise edge)     0.000     0.000 r
    AE23                                              0.000     0.000 r  test_clk (IN)
                         net (fo=0)                   0.000     0.000    test_clk
    AE23                 IBUF (Prop_ibuf_I_O)         0.077     0.077 r  test_clk_IBUF_inst/O
                         net (fo=1, routed)           1.278     1.355    test_clk_IBUF
    BUFGCTRL_X0Y4        BUFG (Prop_bufg_I_O)         0.026     1.381 r  test_clk_IBUF_BUFG_inst/O
                         net (fo=2, routed)           0.781     2.162    test_clk_IBUF_BUFG
    SLICE_X0Y1           FDRE                                         r  test_out_reg/C
  -------------------------------------------------------------------    -------------------
    SLICE_X0Y1           FDRE (Prop_fdre_C_Q)         0.100     2.262 r  test_out_reg/Q
                         net (fo=1, routed)           0.280     2.542    test_out_OBUF
    AK21                 OBUF (Prop_obuf_I_O)         1.284     3.826 r  test_out_OBUF_inst/O
                         net (fo=0)                   0.000     3.826    test_out
    AK21                                                              r  test_out (OUT)
  -------------------------------------------------------------------    -------------------

                         (clock theclk rise edge)     0.000     0.000 r
                         clock pessimism              0.000     0.000
                         clock uncertainty            0.035     0.035
                         output delay                 3.000     3.035
  -------------------------------------------------------------------
                         required time                         -3.035
                         arrival time                           3.826
  -------------------------------------------------------------------
                         slack                                  0.791

この分析は max output delayと似ていますが、同じ clock edge に対して計算されているだけです (次のものではありません)。また、計算は、 process、電圧、および温度の可能な限り最速の組み合わせで行われます。

以前と同様に、 clock path は、 input delayに対する setup timing の分析の clock path に非常に似ています。どちらの計算も高速な modelに基づいているため、これは予想どおりの結果です。

set_output_delay -maxの計算と同様に、 data path は output が安定するまで clock path を続行します。これは 3.826 ns で発生すると計算されています (遅い modelとの違いに注意してください)。

これは、同じ clock の 0 nsから output delayを差し引いた時間と比較されます。 timing constraint の min output delay は負 (-3 ns) であることを思い出してください。これが、計算で正の数として表示される理由です。

推定 jitter、 0.035 nsも追加されます (同じ clock cycle上にあるため、この計算で jitter が使用される理由がよくわかりません)。

結論: data は 3.826 nsまで安定しており、 3.035 nsまで安定する必要があります。 0.791 ns を slackとして使用しても問題ありません。

これは、 set_output_delay -min で使用される番号が、外部デバイスの input に指定されている hold timeの符号を反転したものである理由を示しています。この timing constraint は、合計 delay がこの特定の数値よりも大きいことを要求することによって検証されます。言い換えれば、 data は、 clockの後もその期間、安定している必要があります。これが hold timeの定義です。

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