AR# 1992

SYNPLIFY - Virtex を使用し、HDL で LUT プリミティブをでインスタンシエートする方法

説明

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

重要度 : 標準

概要 :
Synplicity の Synplify を使用し、Virtex デザインの HDL で LUT プリミティブをインスタンシエートする方法について

ソリューション

1


Synplicity で Xilinx ファミリのライブラリを使用して LUT* セルをインスタンシエートできます。 Xilinx 用セルのインスタンシエーション方法の詳細については、(Xilinx Solution 244) を参照してください。

LUT1、LUT2、LUT3 および LUT4 は、それぞれ 1-、2-、3-、および 4-ビットの LUT であり、汎用出力があります。

LUT のファンクションを指定するには、入力数に応じた桁数の 16 進数を指定した INIT 属性を設定する必要があります。

LUT1 はバッファ、またはインバータンのような機能を提供します。

メモ : Synplify 5.1.4 でテストした結果です。

Verilog の場合

`include "<synplify_install>/lib/xilinx/unisim.v"

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
defparam U0.INIT = 2'b01;
LUT1 U0 (.O (LUT1_OUT[0]), .I0 (LUT1_IN[0]));
// LUT1 used as a buffer
defparam U1.INIT = 2'b10;
LUT1 U1 (.O (LUT1_OUT[1]), .I0 (LUT1_IN[1]));

// LUT2 used as a 2-input AND gate
defparam U2.INIT = 4'b1000;
LUT2 U2 (.O (LUT2_OUT[0]), .I1 (LUT2_IN[1]), .I0 (LUT2_IN[0]));
// LUT2 used as a 2-input NAND gate
defparam U3.INIT = 4'b0111;
LUT2 U3 (.O (LUT2_OUT[1]), .I1 (LUT2_IN[1]), .I0 (LUT2_IN[0]));

endmodule

2


VHDL の場合 :

library ieee;
use ieee.std_logic_1164.all;
library unisim;
use unisim.vcomponents.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
generic (INIT: bit_vector(1 downto 0) := "10");
port (O : out std_logic;
I0 : in std_logic);
end component;

component LUT2
generic (INIT: bit_vector(3 downto 0) := "0000");
port (O : out std_logic;
I0, I1 : in std_logic);
end component;

begin

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

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

end XILINX;
AR# 1992
日付 12/15/2012
ステータス アクティブ
種類 一般