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# 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
作成日 12/03/1999
最終更新日 04/24/2007
ステータス アーカイブ
タイプ 一般