記事 ID: 000074881 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/27

パラレル・フラッシュ・ローダー・インテル® FPGA IP・コアのfpga_dclkとfpga_dataの間で、どのようなタイミング制約を使用すべきですか?

環境

    インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション
BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

パラレル・フラッシュ・ローダー・インテル® FPGA IPを使用する場合、fpga_dataおよびfpga_dclkのタイミング制約については、パラレル・フラッシュ・ローダーインテル® FPGA IPコア・ユーザーガイド で PFL タイミングの制約に説明されています。 ただし、ドキュメントバージョン 2019.02.19 以前の制約は正しくありません。

解決方法

fpga_dataとfpga_dclkのタイミングを適切に制約するには、入力クロックと DCLK 出力の比率に応じて、次のいずれかのタイミング制約を使用します。

[ 入力クロックと DCLK 出力の比率 = 1 ]
# クロックの作成
create_clock -name {pfl_clk} -period -waveform { 0.000 /2} [get_ports {pfl_clk}]
# 生成されたクロックの作成
create_generated_clock -name {fpga_dclk} -source [get_ports {pfl_clk}] -master_clock {pfl_clk} -反転 [get_ports {fpga_dclk}]
# 出力遅延の設定
set_output_delay -add_delay -max -clock [get_clocks {fpga_dclk}] [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {fpga_dclk}] [get_ports {fpga_data*}]

[ 入力クロックと DCLK 出力の比率が > 1 の場合]
# クロックの作成
create_clock -name {pfl_clk} -period -waveform { 0.000 /2} [get_ports {pfl_clk}]
# 生成されたクロックの作成
create_generated_clock -name {} - source [get_ports {pfl_clk}] -divide_by -master_clock {pfl_clk} [get_registers {} ]
create_generated_clock -name {fpga_dclk ピンの DCLK の} - source [get_registers {}] -master_clock {DCLK レジスター出力の} [get_ports {fpga_dclk}]
# 出力遅延の設定
set_output_delay -add_delay -max -clock [get_clocks {}] -reference_pin [get_ports {fpga_dclk}] [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {}] -reference_pin [get_ports {fpga_dclk}] [get_ports {fpga_data*}]
# マルチサイクル・パスの設定
set_multicycle_path -setup -start - [get_clocks {pfl_clk}] から [get_clocks {}] /2
set_multicycle_path -hold -start -from [get_clocks {pfl_clk}] から [get_clocks {}] -1

 

• この例では、PFL インテル FPGA IPコアのポート名が使用されています。
• DCLK レジスターは、pfl_clkを分割するレジスターです。レジスター名は通常「fpga_dclk_reg」です。このレジスターは、Technology Map Viewer ツールを使用してfpga_dclkポートからソース先をトレースすることで確認できます。
• インテルでは、タイミング・アナライザー GUI を使用して、ストラントランを検証することをお勧めします。

 

[例]

• 状態
o pfl_clk期間 = 20ns (50MHz)
o 入力クロックと DCLK 出力の比率 = 2

• タイミング制約

# クロックの作成
create_clock -name {pfl_clk} - period 20.000 -waveform { 0.000 10.000 } [get_ports {pfl_clk}]
# 生成されたクロックの作成
create_generated_clock -name {fpga_dclk_gen} -source [get_ports {pfl_clk}] -divide_by 2 -master_clock {pfl_clk} [get_registers {pfl:inst|altparallel_flash_loader:altparallel_flash_loader_component|alt_pfl:\PFL_CFI:pfl_cfi_inst|alt_pfl_cfg3:\CFG3:cfg|alt_pfl_cfg_fpga:alt_pfl_cfg_fpga|fpga_dclk_reg}]
create_generated_clock -name {fpga_dclk_pin} -source [get_registers {pfl_top:pfl_top_inst|altera_parallel_flash_loader:parallel_flash_loader_0|altparallel_flash_loader:altparallel_flash_loader_component|alt_pfl:\PFL_CFI:pfl_cfi_inst|alt_pfl_cfg3:\CFG3:cfg|alt_pfl_cfg_fpga:alt_pfl_cfg_fpga|fpga_dclk_reg}] -master_clock {fpga_dclk_gen} [get_ports {fpga_dclk}]
# 出力遅延の設定
set_output_delay -add_delay -max -clock [get_clocks {fpga_dclk_gen}] -reference_pin [get_ports {fpga_dclk}] 5.500 [get_ports {fpga_data*}]
set_output_delay -add_delay -min -clock [get_clocks {fpga_dclk_gen}] -reference_pin [get_ports {fpga_dclk}] -1.000 [get_ports {fpga_data*}]
# マルチサイクル・パスの設定
set_multicycle_path -setup -start -from [get_clocks {pfl_clk}] から [get_clocks {fpga_dclk_pin}] 1
set_multicycle_path -hold -start [get_clocks {pfl_clk}] から [get_clocks {fpga_dclk_pin}] 1

関連製品

本記事の適用対象: 4 製品

インテル® Cyclone®
インテル® Stratix®
インテル® Arria®
インテル® MAX®

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。