SPI フラッシュ デバイスは、入力クロックを基準とした出力データの出力スイッチ特性が決まっています。ここでは、SPI フラッシュ デバイスから受信したデータをシステム レベル サンプル デザインでキャプチャする場合について解析します。
この図 に示したように、SPI フラッシュ デバイスの出力スイッチ動作として次のパラメーターが定義されています。
• T clqv = クロックを基準とした SPI フラッシュの最大出力 Valid 時間
• T clqx = クロックを基準とした SPI フラッシュの最小出力ホールド時間
この解析は、最小伝搬遅延を 0 と仮定しています。また、次に示すスキューが無視できるものと仮定しています。
• FPGA 出力および入力フリップフロップへの入力クロック分配のスキュー。
• PCB レベル変換器のチャネル遅延のスキュー。この条件を満たすには、クロックとデータパスのレベル変換器の遅延が一致していなければなりません。
• デューティ サイクルの歪み。
SPI フラッシュ マスター ヘルパー ブロックと PCB のインプリメンテーション パラメーターとして次のパラメーターが定義されています。
• T clk = 入力クロック サイクル時間 ( icap_clk )
• T qfpga = icap_clk を基準とした FPGA 出力遅延
• T sfpga = icap_clk を基準とした FPGA 入力セットアップ時間
• T hfpga = icap_clk を基準とした FPGA 入力ホールド時間
• T w1 = FPGA からレベル変換器までの PCB トレース遅延
• T w2 = レベル変換器から SPI フラッシュまでの PCB トレース遅延
• T w3 = SPI フラッシュからレベル変換器までの PCB トレース遅延
• T w4 = レベル変換器から FPGA までの PCB トレース遅延
• T dly = レベル変換器のチャネル遅延
このタイミング パスは SPI フラッシュ マスター ヘルパー ブロックに対しては 2 サイクル パスですが、SPI フラッシュ デバイスに対しては 1 サイクル パスです。タイミング解析では、SPI フラッシュ デバイスの Clock-to-Out を組み合わせ遅延としてモデル化します。FPGA 側でのセットアップとホールドの両方の要件を考慮する必要があります。
この図 と この図 に、SPI フラッシュ マスター ヘルパー ブロック インプリメンテーションによって生成されるメモリ システムの信号を示します。
ホールド パス解析は合否判定です。ホールド パス解析は最小値の遅延を使用して計算し、次の関係が成り立つかを確認する必要があります。
T hfpga ≤ T qfpga,min + T w1 + T dly + T w2 + T clqx + T w3 + T dly + T w4
遅延 T w1 、T w2 、T w3 、T w4 、および T dly に安全な最小値として 0 を代入すると、次式が得られます。
T hfpga ≤ T qfpga,min + T clqx
セットアップ パス解析は最大値の遅延を使用して計算する必要があります。
T clk ≥ 0.5 × (T qfpga,max + T w1 + T dly + T w2 + T clqv + T w3 + T dly + T w4 + T sfpga )
例: Vivado Design Suite、Kintex UltraScale FPGA
• T clqv = 6ns (SPI フラッシュのデータシートより)
• T clqx = 1ns (SPI フラッシュのデータシートより)
• T dly = 2.8ns (レベル変換器のデータシートより)
• T w1 = 1ns (ボード シミュレーションより)
• T w2 = 1ns (ボード シミュレーションより)
• T w3 = 1ns (ボード シミュレーションより)
• T w4 = 1ns (ボード シミュレーションより)
FPGA タイミング パラメーターは、アプリケーションで使用するターゲット FPGA にインプリメントしたシステム レベル サンプル デザインでのタイミング レポートから取得する必要があります。必要なレポートを生成するには、 report_timing_summary に min_max オプションを付けて実行します。
次に示す例は、Kintex ® UltraScale™ デバイスにインプリメントしたシステム レベル サンプル デザインで生成したタイミング レポートの抜粋です。これは、タイミング レポートから必要な情報を得るための例として示しています。レポート内に必要な情報が見つからない場合は、レポートに含めるパスの最大数を増やしてください。
タイミング レポートの「 Destination: spi_c 」と表示された場所で、「Max at Slow Process Corner」にあるフリップフロップからパッドまでのパス解析を参照し、T qfpga の値を確認します。
• T qfpga = I/O データパス遅延 ( spi_c )
• T qfpga = 1.856ns、最大
Slack (MET): 15.037ns (required time - arrival time)
Source: example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/C
(rising edge-triggered cell FDRE clocked by clk {rise@0.000ns fall@5.556ns period=11.111ns})
Destination: spi_c
(output port clocked by clk {rise@0.000ns fall@5.556ns period=11.111ns})
Path Group: clk
Path Type: Max at Slow Process Corner
Requirement: 11.111ns (clk rise@11.111ns - clk rise@0.000ns)
Data Path Delay: 1.856ns (logic 1.476ns (79.523%) route 0.380ns (20.477%))
Logic Levels: 1 (OBUF=1)
Output Delay: -11.111ns
Clock Path Skew: -5.294ns (DCD - SCD + CPR)
Destination Clock Delay (DCD): 0.000ns = ( 11.111 - 11.111 )
Source Clock Delay (SCD): 5.294ns
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
Clock Net Delay (Source): 2.304ns (routing 0.335ns, distribution 1.969ns)
Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
------------------------------------------------------------------- -------------------
(clock clk rise edge) 0.000 0.000 r
K20 0.000 0.000 r clk (IN)
net (fo=0) 0.000 0.000 example_ibuf/I
K20 r example_ibuf/INBUF_INST/PAD
K20 INBUF (Prop_INBUF_HRIO_PAD_O)
0.805 0.805 r example_ibuf/INBUF_INST/O
net (fo=1, routed) 0.092 0.897 example_ibuf/OUT
K20 r example_ibuf/IBUFCTRL_INST/I
K20 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
0.043 0.940 r example_ibuf/IBUFCTRL_INST/O
net (fo=1, routed) 1.967 2.907 example_support_wrapper/clk
BUFGCE_X1Y24 r example_support_wrapper/example_bufg/I
BUFGCE_X1Y24 BUFGCE (Prop_BUFCE_BUFGCE_I_O)
0.083 2.990 r example_support_wrapper/example_bufg/O
X2Y1 (CLOCK_ROOT) net (fo=1742, routed) 2.304 5.294 example_support_wrapper/example_support/example_spi/example_spi_byte/clk
BITSLICE_RX_TX_X0Y172
FDRE r example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/C
------------------------------------------------------------------- -------------------
BITSLICE_RX_TX_X0Y172
FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q)
0.626 5.920 r example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/Q
net (fo=1, routed) 0.380 6.300 spi_c_OBUF
AC23 r spi_c_OBUF_inst/I
AC23 OBUF (Prop_OUTBUF_HPIOB_I_O)
0.850 7.150 r spi_c_OBUF_inst/O
net (fo=0) 0.000 7.150 spi_c
AC23 r spi_c (OUT)
------------------------------------------------------------------- -------------------
(clock clk rise edge) 11.111 11.111 r
clock pessimism 0.000 11.111
clock uncertainty -0.035 11.076
output delay 11.111 22.187
-------------------------------------------------------------------
required time 22.187
arrival time -7.150
-------------------------------------------------------------------
slack 15.037
タイミング レポートの「 Destination: spi_c 」と表示された場所で、「Min at Fast Process Corner」にあるフリップフロップからパッドまでのパス解析を参照し、T qfpga の値を確認します。
• T qfpga = I/O データパス遅延 ( spi_c )
• T qfpga = 0.919ns、最小
Slack (MET): 3.227ns (arrival time - required time)
Source: example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/C
(rising edge-triggered cell FDRE clocked by clk {rise@0.000ns fall@5.556ns period=11.111ns})
Destination: spi_c
(output port clocked by clk {rise@0.000ns fall@5.556ns period=11.111ns})
Path Group: clk
Path Type: Min at Fast Process Corner
Requirement: 0.000ns (clk rise@0.000ns - clk rise@0.000ns)
Data Path Delay: 0.919ns (logic 0.752ns (81.829%) route 0.167ns (18.171%))
Logic Levels: 1 (OBUF=1)
Output Delay: 0.000ns
Clock Path Skew: -2.308ns (DCD - SCD - CPR)
Destination Clock Delay (DCD): 0.000ns
Source Clock Delay (SCD): 2.308ns
Clock Pessimism Removal (CPR): -0.000ns
Clock Net Delay (Source): 1.077ns (routing 0.127ns, distribution 0.950ns)
Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
------------------------------------------------------------------- -------------------
(clock clk rise edge) 0.000 0.000 r
K20 0.000 0.000 r clk (IN)
net (fo=0) 0.000 0.000 example_ibuf/I
K20 r example_ibuf/INBUF_INST/PAD
K20 INBUF (Prop_INBUF_HRIO_PAD_O)
0.418 0.418 r example_ibuf/INBUF_INST/O
net (fo=1, routed) 0.025 0.443 example_ibuf/OUT
K20 r example_ibuf/IBUFCTRL_INST/I
K20 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
0.015 0.458 r example_ibuf/IBUFCTRL_INST/O
net (fo=1, routed) 0.746 1.204 example_support_wrapper/clk
BUFGCE_X1Y24 r example_support_wrapper/example_bufg/I
BUFGCE_X1Y24 BUFGCE (Prop_BUFCE_BUFGCE_I_O)
0.027 1.231 r example_support_wrapper/example_bufg/O
X2Y1 (CLOCK_ROOT) net (fo=1742, routed) 1.077 2.308 example_support_wrapper/example_support/example_spi/example_spi_byte/clk
BITSLICE_RX_TX_X0Y172
FDRE r example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/C
------------------------------------------------------------------- -------------------
BITSLICE_RX_TX_X0Y172
FDRE (Prop_OUT_FF_BITSLICE_COMPONENT_RX_TX_C_Q)
0.268 2.576 r example_support_wrapper/example_support/example_spi/example_spi_byte/spi_c_ofd/Q
net (fo=1, routed) 0.167 2.743 spi_c_OBUF
AC23 r spi_c_OBUF_inst/I
AC23 OBUF (Prop_OUTBUF_HPIOB_I_O)
0.484 3.227 r spi_c_OBUF_inst/O
net (fo=0) 0.000 3.227 spi_c
AC23 r spi_c (OUT)
------------------------------------------------------------------- -------------------
(clock clk rise edge) 0.000 0.000 r
clock pessimism 0.000 0.000
output delay -0.000 0.000
-------------------------------------------------------------------
required time -0.000
arrival time 3.227
-------------------------------------------------------------------
slack 3.227
タイミング レポートの「 Source: spi_q 」と表示された場所で、「Setup (Max at Fast Process Corner)」にあるパッドからフリップフロップまでのパス解析を参照し、T sfpga の値を確認します。
• Tsfpga = I/O データパス遅延 ( spi_q )
• Tsfpga = 0.658ns、最大
Slack (MET): 23.825ns (required time - arrival time)
Source: spi_q
(input port clocked by clk {rise@0.000ns fall@5.556ns period=11.111ns})
Destination: example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/D
(rising edge-triggered cell FDRE clocked by clk {rise@0.000ns fall@5.556ns period=11.111ns})
Path Group: clk
Path Type: Setup (Max at Fast Process Corner)
Requirement: 11.111ns (clk rise@11.111ns - clk rise@0.000ns)
Data Path Delay: 0.658ns (logic 0.495ns (75.210%) route 0.163ns (24.790%))
Logic Levels: 2 (IBUFCTRL=1 INBUF=1)
Input Delay: -11.111ns
Clock Path Skew: 2.318ns (DCD - SCD + CPR)
Destination Clock Delay (DCD): 2.318ns = ( 13.429 - 11.111 )
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
Clock Net Delay (Destination): 1.087ns (routing 0.127ns, distribution 0.960ns)
Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
------------------------------------------------------------------- -------------------
(clock clk rise edge) 0.000 0.000 r
input delay -11.111 -11.111
U21 0.000 -11.111 r spi_q (IN)
net (fo=0) 0.000 -11.111 spi_q_IBUF_inst/I
U21 r spi_q_IBUF_inst/INBUF_INST/PAD
U21 INBUF (Prop_INBUF_HPIOB_PAD_O)
0.495 -10.616 r spi_q_IBUF_inst/INBUF_INST/O
net (fo=1, routed) 0.047 -10.569 spi_q_IBUF_inst/OUT
U21 r spi_q_IBUF_inst/IBUFCTRL_INST/I
U21 IBUFCTRL (Prop_IBUFCTRL_HPIOB_I_O)
0.000 -10.569 r spi_q_IBUF_inst/IBUFCTRL_INST/O
net (fo=1, routed) 0.116 -10.453 example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q
BITSLICE_RX_TX_X0Y186
FDRE r example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/D
------------------------------------------------------------------- -------------------
(clock clk rise edge) 11.111 11.111 r
K20 0.000 11.111 r clk (IN)
net (fo=0) 0.000 11.111 example_ibuf/I
K20 INBUF r example_ibuf/INBUF_INST/PAD
K20 INBUF (Prop_INBUF_HRIO_PAD_O)
0.418 11.529 r example_ibuf/INBUF_INST/O
net (fo=1, routed) 0.025 11.554 example_ibuf/OUT
K20 IBUFCTRL r example_ibuf/IBUFCTRL_INST/I
K20 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
0.015 11.569 r example_ibuf/IBUFCTRL_INST/O
net (fo=1, routed) 0.746 12.315 example_support_wrapper/clk
BUFGCE_X1Y24 BUFGCE r example_support_wrapper/example_bufg/I
BUFGCE_X1Y24 BUFGCE (Prop_BUFCE_BUFGCE_I_O)
0.027 12.342 r example_support_wrapper/example_bufg/O
X2Y1 (CLOCK_ROOT) net (fo=1742, routed) 1.087 13.429 example_support_wrapper/example_support/example_spi/example_spi_byte/clk
BITSLICE_RX_TX_X0Y186
FDRE r example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/C
clock pessimism 0.000 13.429
clock uncertainty -0.035 13.394
BITSLICE_RX_TX_X0Y186
FDRE (Setup_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D)
-0.022 13.372 example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd
-------------------------------------------------------------------
required time 13.372
arrival time 10.453
-------------------------------------------------------------------
slack 23.825
タイミング レポートの「 Source: spi_q 」と表示された場所で、「Hold (Min at Slow Process Corner)」にあるパッドからフリップフロップまでのパス解析を参照し、T hfpga の値を確認します。
• T hfpga = I/O データパス遅延 ( spi_q )
• T hfpga = 0.468ns、最小
Slack (MET): 17.334ns (arrival time - required time)
Source: spi_q
(input port clocked by clk {rise@0.000ns fall@5.556ns period=11.111ns})
Destination: example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/D
(rising edge-triggered cell FDRE clocked by clk {rise@0.000ns fall@5.556ns period=11.111ns})
Path Group: clk
Path Type: Hold (Min at Slow Process Corner)
Requirement: 0.000ns (clk rise@0.000ns - clk rise@0.000ns)
Data Path Delay: 0.468ns (logic 0.242ns (51.750%) route 0.226ns (48.250%))
Logic Levels: 2 (IBUFCTRL=1 INBUF=1)
Input Delay: 22.222ns
Clock Path Skew: 5.302ns (DCD - SCD - CPR)
Destination Clock Delay (DCD): 5.302ns
Source Clock Delay (SCD): 0.000ns
Clock Pessimism Removal (CPR): -0.000ns
Clock Net Delay (Destination): 2.312ns (routing 0.335ns, distribution 1.977ns)
Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
------------------------------------------------------------------- -------------------
(clock clk rise edge) 0.000 0.000 r
input delay 22.222 22.222
U21 0.000 22.222 r spi_q (IN)
net (fo=0) 0.000 22.222 spi_q_IBUF_inst/I
U21 r spi_q_IBUF_inst/INBUF_INST/PAD
U21 INBUF (Prop_INBUF_HPIOB_PAD_O)
0.242 22.464 r spi_q_IBUF_inst/INBUF_INST/O
net (fo=1, routed) 0.050 22.514 spi_q_IBUF_inst/OUT
U21 r spi_q_IBUF_inst/IBUFCTRL_INST/I
U21 IBUFCTRL (Prop_IBUFCTRL_HPIOB_I_O)
0.000 22.514 r spi_q_IBUF_inst/IBUFCTRL_INST/O
net (fo=1, routed) 0.176 22.690 example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q
BITSLICE_RX_TX_X0Y186
FDRE r example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/D
------------------------------------------------------------------- -------------------
(clock clk rise edge) 0.000 0.000 r
K20 0.000 0.000 r clk (IN)
net (fo=0) 0.000 0.000 example_ibuf/I
K20 INBUF r example_ibuf/INBUF_INST/PAD
K20 INBUF (Prop_INBUF_HRIO_PAD_O)
0.805 0.805 r example_ibuf/INBUF_INST/O
net (fo=1, routed) 0.092 0.897 example_ibuf/OUT
K20 IBUFCTRL r example_ibuf/IBUFCTRL_INST/I
K20 IBUFCTRL (Prop_IBUFCTRL_HRIO_I_O)
0.043 0.940 r example_ibuf/IBUFCTRL_INST/O
net (fo=1, routed) 1.967 2.907 example_support_wrapper/clk
BUFGCE_X1Y24 BUFGCE r example_support_wrapper/example_bufg/I
BUFGCE_X1Y24 BUFGCE (Prop_BUFCE_BUFGCE_I_O)
0.083 2.990 r example_support_wrapper/example_bufg/O
X2Y1 (CLOCK_ROOT) net (fo=1742, routed) 2.312 5.302 example_support_wrapper/example_support/example_spi/example_spi_byte/clk
BITSLICE_RX_TX_X0Y186
FDRE r example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd/C
clock pessimism 0.000 5.302
BITSLICE_RX_TX_X0Y186
FDRE (Hold_IN_FF_BITSLICE_COMPONENT_RX_TX_C_D)
0.054 5.356 example_support_wrapper/example_support/example_spi/example_spi_byte/spi_q_ifd
-------------------------------------------------------------------
required time -5.356
arrival time 22.690
-------------------------------------------------------------------
slack 17.334
チェック:
• T hfpga ≤ T qfpga,min + T clqx であるか。
• すなわち 0.468ns ≤ 0.919ns + 1ns であるか。
• すなわち 0.468ns ≤ 1.919ns であるか。 Yes
計算:
T clk ≥ 0.5 × (T qfpga,max + T w1 + T dly + T w2 + T clqv + T w3 + T dly + T w4 + T sfpga )
すなわち
T clk ≥ 0.5 × (1.856ns + 1ns + 2.8ns + 1ns + 6ns + 1ns + 2.8ns + 1ns + 0.658ns)
すなわち
T clk ≥ 9.057ns
ホールド要件は満たされています。また、T clk に対する要件により、SPI バス受信の波形およびタイミング バジェットではシステム レベル サンプル デザインの入力クロック サイクル時間が 9.057ns 以上に制限されます。