UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 53377

AXI Bridge for PCI Express - プリフェッチ可能でない 64 ビットの BAR のコアをコンフィギュレーションする方法

説明

AXI Bridge for PCI Express IP (EDK) コア、または AXI Memory Mapped To PCI Express (Vivado) コアを、プリフェッチ可能でない 64 ビットの BAR を選択してコンフィギュレーションするにはどうしたらよいでしょうか。

ソリューション

現在、このコアはプリフェッチ可能な 64 ビット BAR のみをサポートしていますが、次の回避策を利用して、プリフェッチ可能でないものをサポートするよう、コンフィギュレーションすることができます。

変更するコア ファイル
   axi_pcie.vhd

axi_pcie.vhd の次の行を変更します。

   (セクション 1) - 次の行を検索します。

      constant PCIBAR_PREFETCH_0  : integer := C_PCIEBAR_AS;  --prefetch_config(C_PCIEBAR_AS, 0, 0);
      constant PCIBAR_PREFETCH_1  : integer := C_PCIEBAR_AS;  --prefetch_config(C_PCIEBAR_AS, 0, 0);
      constant PCIBAR_PREFETCH_2  : integer := C_PCIEBAR_AS;  --prefetch_config(C_PCIEBAR_AS, 0, 0);

これを次のように変更します。

     constant PCIBAR_PREFETCH_0  : integer := 0;  --prefetch_config(C_PCIEBAR_AS, 0, 0);
     constant PCIBAR_PREFETCH_1  : integer := 0;  --prefetch_config(C_PCIEBAR_AS, 0, 0);
     constant PCIBAR_PREFETCH_2  : integer := 0;  --prefetch_config(C_PCIEBAR_AS, 0, 0);

   (セクション 2) - 次の行を検索します。

    assert FALSE
    report "INVALID BAR: 64 bit, non-prefetch NOT ALLOWED"
    severity Warning;

これを次のように変更します。

    var_out := func_invert(conv_std_logic_vector(((2**pcibar_len_64)-1),64))+x"4";


次の手順に従って、回避策を利用してください。

XPS (Xilinx Platform Studio) の場合 :

   1) 64 ビットの BAR を選択した状態で AXI Bridge for PCI Express を生成します。
   2) この PCIe IP コアをローカルにします (XPSで、PCIe IP コアを右クリックし [Make this IP core local] を選択します)。
   3) <project directory>/pcores/axi_pcie_<core_version>/hdl/vhdl ディレクトリに移動します。
   4) 上記の手順に従い、axi_pcie.vhd を変更します。
   5) プロジェクトの合成およびインプリメンテーションを通常どおりに実行します。

Vivado (OOC - アウト オブ コンテキストを有効にしたフロー) の場合 :

   1) 64 ビットの BAR を選択した状態で、AXI Memory Mapped To PCI Express を生成します。必ず [Generate Output Products] ステップを完了させてください。
   2) <project directory>/<project_name>.srcs/sources_#/ip/<core_name>/axi_pcie_<core_version>/hdl/src/vhdl ディレクトリに移動します。
   3) 上記の手順に従い、axi_pcie.vhd を変更します。

   4) [Out-of-Context Module Runs] の下にある [<core_name>_synth_1] を右クリックして [Launch Runs] をクリックし、コアを再合成します。
     

53377.png
53377.png



   5) プロジェクトの合成およびインプリメンテーションを通常どおりに実行します。

Vivado (非 OOC - アウト オブ コンテキストを無効にしたフロー) の場合 :

   1) 64 ビットの BAR を選択した状態で、AXI Memory Mapped To PCI Express を生成します。必ず [Generate Output Products] ステップを完了させてください。
   2) <project directory>/<project_name>.srcs/sources_#/ip/<core_name>/axi_pcie_<core_version>/hdl/src/vhdl ディレクトリに移動します。
   3) 上記の手順に従い、axi_pcie.vhd を変更します。
   4) プロジェクトの合成およびインプリメンテーションを通常どおりに実行します。

Vivado (IPI - IP インテグレーター/ブロック デザイン フロー) の場合 :

   注記 : これは 2 ステップのプロセスです。ステップ 1 では、この回避策を含んだカスタム IP が生成されます。ステップ 2 は、カスタム IP を使用した IPI フローです。

   ステップ 1 :
   1) メインのプロジェクトと同じデバイスと言語を選択し、新規 Vivado プロジェクトを作成します。
   2) 64 ビットの BAR を選択した状態で、AXI Memory Mapped To PCI Express を生成します。このコアがメイン プロジェクトで使用できるように完全にコンフィギュレーションされていることを確認してください。
   3) [Generate Output Products] ステップで、非 OOC フローのコアを生成し (アウト オブ コンテキストを選択しない)、続けてコアを生成します。
   4) <project directory>/<project_name>.srcs/sources_#/ip/<core_name>/axi_pcie_<core_version>/hdl/src/vhdl ディレクトリに移動します。
   5) 上記の手順に従い、axi_pcie.vhd を変更します。
   6) Vivado プロジェクトに戻り、次のように変更したコアからカスタム IP を生成します。
        a) [Tools] → [Create and Package IP] をクリックします。
        b) ウィザードで [Next] をクリックします。
        c) [Package your current project] を選択し、[Next] をクリックします。
        d) [Include IP Generated Files] を選択し、[Next] をクリックします。
        e) 最後のページで [Finish] をクリックします。
        f)  新しいタブ (パッケージ IP) が開きます。
           [File Groups] で [Standard] う→ [Synthesis hierarchy] と展開します。
           <core_name>_ooc.xdc および axi_pcie_<block location>.xdc という 2 つのファイルを検索します。
 
            - <core_name>_ooc.xdc に対して、プロパティを次のように設定します。
                  [Processing Order] : early
                  [Used In]                  : synthesis implementation out_of_context
                  [Scoped to Ref]       : <core_name>. サンプル axi_pcie_0 の場合
                  Scoped to Cells    : inst
 
            - axi_pcie_<block location>.xdc に対して、プロパティを次のように設定します。
                  [Processing Order] : early
                  [Used In]                  : synthesis implementation
                  [Scoped to Ref]       : <core_name>. サンプル axi_pcie_0 の場合
                  [Scoped to Cells]    : inst
 
        g) [Review and Package] で [Package IP] をクリックします。

   ステップ 2 :
   1) メイン プロジェクトに移動します。
   2) [Tools] → [Project Settings] → [IP] → [Add Repository] をクリックします。 上記のプロジェクトのディレクトリ <Custom IP project location>/<project_name>.srcs/sources_#/ip にポイントします。[OK] をクリックします。
   3) ブロック デザイン (IPI) を作成します。
   4) [Add IP] を選択すると、新しいカスタム IP が <core_name>_v1_0 という名前で表示されます。このコアは先にカスタマイズしたので、ここではもうカスタマイズできなくなっています。
   5) このコアを接続し、プロジェクトの合成およびインプリメンテーションを通常どおりに実行します。


改訂履歴
2012/12/07 - 初版
2014/10/12 - Vivado に合わせて更新

添付ファイル

関連添付ファイル

タイトル サイズ ファイルタイプ
axi_pcie.vhd 115 KB VHD
AR# 53377
日付 12/23/2014
ステータス アクティブ
種類 一般
IP
  • AXI PCI Express (PCIe)
このページをブックマークに追加