サポートされる X_ 属性のリスト - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: IP インテグレーターを使用した IP サブシステムの設計 (UG994)

Document ID
UG994
Release Date
2023-10-18
Version
2023.2 日本語

次は、IP パッケージャー、モジュール参照フロー、およびそれらのコンポーネントでサポートされる属性すべてのリストです。

X_INTERFACE_INFO

  • 適用先: ポート
  • 構文: VLNV INTERFACE_NAME LOGICAL_NAME[,VLNV INTERFACE_NAME LOGICAL_NAME etc]
  • または VLNV

最初の構文では、VLNV で指定したバス定義に従ってインターフェイスが INTERFACE_NAME という名前で作成され、論理ポート LOGICAL_NAME に接続されたポートがマップされます。ユーザーが作成したインターフェイスにはポートは自動的には追加されないので、この属性をポートごとに指定する必要があり、作成したインターフェイスの一部として含める必要があります。ここに 3 つの変数を複数追加すると、ポートを必要に応じて複数のインターフェイスに追加できます。

2 つ目の構文では、このポートが含まれるインターフェイスの VLNV のみを指定します。個別ポートの追加、名前の推論、論理から物理へのマッピングは、Vivado で処理されます。

図 2 のコード例は、adder_input というインターフェイスの一部としてポートがどのように表示されるかを示しています。adder_input インターフェイスは、次の図に示すように、ポートがすべて正しく指定された状態で IP カタログに含まれます。

図 1. リポジトリに既存のインターフェイス

既存インターフェイスを使用する場合、属性を次のように VHDL ソース コードに挿入すると、モジュールのポートをインターフェイスの一部にできます。

図 2. インターフェイス ポートの一部としてピンまたは I/O ポートを追加

上記の RTL コードがモジュール参照ブロックとしてブロック デザインにインスタンシエートされると、ブロック デザインは次のようになります。

図 3. X_INTERFACE_PARAMETER 属性をハイライトしたモジュール参照

X_INTERFACE_PARAMETER

  • 適用先: ポート
  • 構文: NAME VALUE [,NAME VALUE etc]
  • または "XIL_INTERFACENAME" IFC_NAME,NAME VALUE [,NAME VALUE]

このポートが含まれるすべてのインターフェイスに対し、指定したとおりにバス インターフェイス パラメーターが設定されます。2 つ目の構文の場合は、その名前のインターフェイスに対してのみ設定できます。この場合、XIL_INTERFACENAME はリストの最初のエレメントにする必要があります。

たとえば、リセット ポート (次のコードの rst_n) の極性がアクティブ Low の場合に、この rst_n ポートが含まれるインターフェイスすべてをアクティブ High に上書きするとします。これは、次のように上書きできます。この属性の設定は、X_INTERFACE_PARAMETER と呼ばれます。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity param_ff is
    generic(
           data_width : integer := 32); 
    Port ( data_in : in STD_LOGIC_VECTOR ((data_width - 1) downto 0);
           clk : in STD_LOGIC;
           rst_n : in STD_LOGIC;
           data_out : out STD_LOGIC_VECTOR ((data_width - 1) downto 0));
end param_ff;

architecture Behavioral of param_ff is
    ATTRIBUTE X_INTERFACE_INFO : STRING;
    ATTRIBUTE X_INTERFACE_PARAMETER : STRING;
    ATTRIBUTE X_INTERFACE_INFO of data_in: SIGNAL is "xilinx.com:user:ff_data_in:1.0 
ff_data_in data_in"; 
    ATTRIBUTE X_INTERFACE_PARAMETER of rst_n: SIGNAL is "POLARITY ACTIVE_HIGH";
begin
    process (rst_n, clk)
    begin
        if (rst_n = '0') then
            data_out <= (others => '0');
        elsif (rising_edge(clk)) then
            data_out <= data_in;
        end if;
    end process;
end Behavioral;

ブロック デザインで rst_n の極性 (デフォルトでアクティブ Low として推論) がアクティブ High (rst_n ピンのバブルで指定) に変更されます。

図 4. X_INTERFACE_PARAMETER 属性をハイライトしたモジュール参照

X_INTERFACE_IGNORE

  • 適用先: ポート
  • 構文: true|false

true に設定すると、このポートは推論されるインターフェイスには自動的に追加されません。

次のコード例の場合、3 つの入力ポート (a_inb_in、および c_in) がありますが、3 つ目の c_in はインターフェイスに追加したくないので、true に設定しています。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity ignore_port is
    Port ( a_in : in STD_LOGIC;
           b_in : in STD_LOGIC;
           c_in : in STD_LOGIC;
           sum_out : out STD_LOGIC;
           carry_out : out STD_LOGIC);
end ignore_port;

architecture Behavioral of ignore_port is
  ATTRIBUTE X_INTERFACE_INFO : STRING;
  ATTRIBUTE X_INTERFACE_IGNORE : STRING;
  ATTRIBUTE X_INTERFACE_INFO of a_in: SIGNAL is "xilinx.com:user:adder_input:1.0 
adder_input a_in"; 
  ATTRIBUTE X_INTERFACE_INFO of b_in: SIGNAL is "xilinx.com:user:adder_input:1.0 
adder_input b_in";
  ATTRIBUTE X_INTERFACE_IGNORE of c_in: SIGNAL is "true";
begin

  sum_out <= a_in OR b_in OR c_in;
  carry_out <= a_in XOR b_in XOR c_in;
end Behavioral;
When instantiated on the block design, this will be as shown below. 
図 5. X_INTERFACE_MODE 属性をハイライトしたモジュール参照

X_INTERFACE_MODE

  • 適用先: ポート
  • 構文: MODE [MONITOR_MODE] [INTERFACE_NAME obsolete]

最後のパラメーターは廃止予定で、無視されます。

そのポートを含むインターフェイスすべてのインターフェイス モードを設定します。インターフェイスごとに 1 つの MODE のみを設定します。複数ある場合はすべて無視されます。

次のコード例は、その使用方法を示しています。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.ALL;

entity interface_mode is
    Port ( a_in : in STD_LOGIC;
           b_in : in STD_LOGIC;
           c_in : in STD_LOGIC;
           sum_out : out STD_LOGIC;
           carry_out : out STD_LOGIC);
end interface_mode;

architecture Behavioral of interface_mode is

  ATTRIBUTE X_INTERFACE_INFO : STRING;
  ATTRIBUTE X_INTERFACE_MODE : STRING;
  ATTRIBUTE X_INTERFACE_INFO of a_in: SIGNAL is "xilinx.com:user:adder_input:1.0 
adder_input a_in"; 
  ATTRIBUTE X_INTERFACE_INFO of b_in: SIGNAL is "xilinx.com:user:adder_input:1.0 
adder_input b_in";
  ATTRIBUTE X_INTERFACE_INFO of c_in: SIGNAL is "xilinx.com:user:adder_input:1.0 
adder_input c_in";
  ATTRIBUTE X_INTERFACE_MODE of c_in: SIGNAL is "monitor";
  
begin
  sum_out <= a_in OR b_in OR c_in;
  carry_out <= a_in XOR b_in XOR c_in;
end Behavioral;

モジュール参照はブロック デザインにインスタンシエートされると、次のようになります。セルの虫眼鏡アイコンは、上記の例の "monitor" のインターフェイス タイプを意味します。

図 6. X_INTERFACE_MODE 属性をハイライトしたモジュール参照

X_INTERFACE_PRIORITY_LIST

  • 適用先: コンポーネント
  • 構文: VLNV [VLNV VLNV etc]

バス インターフェイスの推論を試みる優先順を指定します。優先順序は、まずコンポーネント内のポートに合わせて、指定した順になります。これは最も優先度の高いリストで、プロジェクト設定、およびリポジトリ順序よりも優先されます。