AR# 8207

EXEMPLAR: Virtex を使用した場合の HDL での LUT プリミティブのインスタンシエート方法。(VHDL/Verilog)

説明

キーワード:Virtex, LUT, Exemplar, VHDL, Verilog

重要度 :標準

概要:
Exemplar の Leonardo Spectrum を使用した Virtex HDL の LUT プリミティブのインスタンシエート方法

ソリューション

1

LUT セルのインスタンシエートは、Examplar にある Xilinx ファミリのライブラリ情報を使用して実行できます。

LUT1、LUT2、LUT3、LUT4 はそれぞれ一般出力 (O) を持つ 1、2、3、4 ビットのルックアップ テーブル (LUT) です。

INIT 属性は、入力数に正しく対応する 16 進数があり、ファンクションを指定する LUT が含まれている必要があります。

(注 :これは Exemplar Spectrum 1999.1g でテストした場合です。)

Verilog の例:

Exemplar のコードを読み取り後、INIT 属性をインスタンシエート済みの各 LUT に設定する必要があります。次の例では以下のコマンドを使用し Examplar コマンド行から INIT 属性を送ります。

set_attribute -instance U0 -name INIT -type string -value "01"
set_attribute -instance U1 -name INIT -type string -value "10"
set_attribute -instance U2 -name INIT -type string -value "1000"
set_attribute -instance U3 -name INIT -type string -value "0111"
------

module lut_ex (LUT1_OUT, LUT1_IN, LUT2_OUT, LUT2_IN);
input [1:0] LUT1_IN, LUT2_IN;
output [1:0] LUT1_OUT, LUT2_OUT;

// LUT1 used as an inverter
LUT1 U0 (.O (LUT1_OUT[0]), .I0 (LUT1_IN[0]));

// LUT1 used as a buffer
LUT1 U1 (.O (LUT1_OUT[1]), .I0 (LUT1_IN[1]));

// LUT2 used as a 2-input AND gate
LUT2 U2 (.O (LUT2_OUT[0]), .I1 (LUT2_IN[1]), .I0 (LUT2_IN[0]));

// LUT2 used as a 2-input NAND gate
LUT2 U3 (.O (LUT2_OUT[1]), .I1 (LUT2_IN[1]), .I0 (LUT2_IN[0]));

endmodule

2

VHDL の例:

Exemplar のコードを読み取り後、INIT 属性をインスタンシエート済みの各 LUT に設定する必要があります。次の例では以下のコマンドを使用し Examplar コマンド行から INIT 属性を送ります。

set_attribute -instance u0 -name INIT -type string -value "01"
set_attribute -instance u1 -name INIT -type string -value "10"
set_attribute -instance u2 -name INIT -type string -value "1000"
set_attribute -instance u3 -name INIT -type string -value "0111"

----

library ieee;
use ieee.std_logic_1164.all;
library virtex;
use virtex.components.all;

entity lut_ex is
port (
LUT1_IN, LUT2_IN : in std_logic_vector(1 downto 0);
LUT1_OUT, LUT2_OUT : out std_logic_vector(1 downto 0));
end entity lut_ex;

architecture XILINX of LUT_EX is

component LUT1
port (O : out std_logic;
I0 : in std_logic);
end component;

component LUT2
port (O : out std_logic;
I0, I1 : in std_logic);
end component;

begin

-- LUT1 used as an inverter
U0 : LUT1
port map (O => LUT1_OUT(0), I0 => LUT1_IN(0));
-- LUT1 used as a buffer
U1 : LUT1
port map (O => LUT1_OUT(1), I0 => LUT1_IN(1));

-- LUT2 used as a 2-input AND gate
U2 : LUT2
port map (O => LUT2_OUT(0), I1 => LUT2_IN(1), I0 => LUT2_IN(0));
-- LUT2 used as a 2-input NAND gate
U3 : LUT2
port map (O => LUT2_OUT(1), I1 => LUT2_IN(1), I0 => LUT2_IN(0));

end XILINX;
AR# 8207
日付 04/24/2007
ステータス アーカイブ
種類 一般