次は、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 カタログに含まれます。
既存インターフェイスを使用する場合、属性を次のように VHDL ソース コードに挿入すると、モジュールのポートをインターフェイスの一部にできます。
上記の RTL コードがモジュール参照ブロックとしてブロック デザインにインスタンシエートされると、ブロック デザインは次のようになります。
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
ピンのバブルで指定) に変更されます。
X_INTERFACE_IGNORE
- 適用先: ポート
- 構文:
true|false
true
に設定すると、このポートは推論されるインターフェイスには自動的に追加されません。
次のコード例の場合、3 つの入力ポート (a_in
、b_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.
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" のインターフェイス タイプを意味します。
X_INTERFACE_PRIORITY_LIST
- 適用先: コンポーネント
- 構文:
VLNV [VLNV VLNV etc]
バス インターフェイスの推論を試みる優先順を指定します。優先順序は、まずコンポーネント内のポートに合わせて、指定した順になります。これは最も優先度の高いリストで、プロジェクト設定、およびリポジトリ順序よりも優先されます。