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

Arria 10、Arria V GZ、およびStratix V PCI Express* デザインは、トランザクション・レイヤー・コンフィグレーション・スペース信号 (tl_cfg_*) を受け取る Avalon-ST インターフェイスを使用しています。

環境

    インテル® Quartus® II サブスクリプション・エディション
    PCI Express*
BUILT IN - ARTICLE INTRO SECOND COMPONENT

クリティカルな問題

詳細

トランザクション・レイヤー構成スペース信号データ (tl_cfg*) PCI Express のハード IP によって駆動されるデータは、FPGA・ファブリックで正しくサンプリングされていません。 そのため、セットアップまたはホールドタイム違反が発生する可能性があります。インテル® Quartus® Prime 開発ソフトウェア このマルチサイクル・パスには制約がないため、違反は報告されません。次の場合 タイミング違反が発生すると、システムがハングアップする可能性があります。

解決方法

Arria 10 デバイスの場合、Quartus® Prime 開発ソフトウェア 16.0.1 以降を使用してください。トランザクション・レイヤー コンフィグレーション・スペース信号インターフェイスは 8 個保持されます coreclkout_hip サイクル。アプリケーションレイヤー RTL には、このインターフェイスをサンプルするコードを含める必要があります。 8 サイクルのウィンドウの中央に表示されます。以下の RTL の例を参照してください。

//define register//

reg [3:0] cfg_addr_reg;

reg [3:0] captured_cfg_addr_reg;

reg [31:0] captured_cfg_data_reg;

reg cfgctl_addr_change;

reg cfgctl_addr_change2;

reg cfgctl_addr_strobe;

// detect the address transition

always @(posedge pld_clk or posedge reset)

begin

if (reset == 1\'b1) begin

cfg_addr_reg <= 3\'h0;

cfgctl_addr_change <= 1\'h0;

cfgctl_addr_change2 <= 1\'h0;

cfgctl_addr_strobe <= 1\'h0;

end else begin

cfg_addr_reg[3:0] <= tl_cfg_int_add[3:0];

// detect address change

cfgctl_addr_change <= cfg_addr_reg[3:0] != tl_cfg_int_add[3:0];

// delay two clock and use as strobe to sample the input 32-bit data

cfgctl_addr_change2 <= cfgctl_addr_change;

cfgctl_addr_strobe <= cfgctl_addr_change2;

end

end

// captured cfg ctl addr/data bus with the strobe

always @(posedge pld_clk)

if(cfgctl_addr_strobe)

captured_cfg_addr_reg[3:0] <= tl_cfg_int_add[3:0];

captured_cfg_data_reg[31:0] <= tl_cfg_int_ctl[31:0];

end

Arria 10 デバイスの場合、次のタイミング制約を追加する必要があります。 Synposys Design Constraints (SDC) ファイル。

set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_add[*]}] 2

set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_add[*]}] 2

set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_ctl[*]}] 2

set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_ctl[*]}] 2

Stratix V および Arria V GZ デバイスの場合、次のタイミングを追加する必要があります。 制約を Synposys Design Constraints (SDC) ファイルに含まれています。

set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_add[*]}] 2

set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_add[*]}] 2

set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_ctl[*]}] 2

set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase {*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_ctl[*]}] 2

関連製品

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

インテル® プログラマブル・デバイス

1

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