-------------------------------------------------------------------------------

-- LPM 220 Component Declaration Package  (Support string type generic)

-- These models are based on LPM version 220 (EIA-IS103 October 1998).

-------------------------------------------------------------------------------

-- Assumptions:

--

--    LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, and LPM_NUMWORDS, LPM_HINT,

--    LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE  default value is

--    string "UNUSED".

-------------------------------------------------------------------------------

 

library IEEE;

use IEEE.std_logic_1164.all;

 

package LPM_COMPONENTS is

 

constant L_CONSTANT : string := "LPM_CONSTANT";

constant L_INV      : string := "LPM_INV";

constant L_AND      : string := "LPM_AND";

constant L_OR       : string := "LPM_OR";

constant L_XOR      : string := "LPM_XOR";

constant L_BUSTRI   : string := "LPM_BUSTRI";

constant L_MUX      : string := "LPM_MUX";

constant L_DECODE   : string := "LPM_DECODE";

constant L_CLSHIFT  : string := "LPM_CLSHIFT";

constant L_ADD_SUB  : string := "LPM_ADD_SUB";

constant L_COMPARE  : string := "LPM_COMPARE";

constant L_MULT     : string := "LPM_MULT";

constant L_DIVIDE   : string := "LPM_DIVIDE";

constant L_ABS      : string := "LPM_ABS";

constant L_COUNTER  : string := "LPM_COUNTER";

constant L_LATCH    : string := "LPM_LATCH";

constant L_FF       : string := "LPM_FF";

constant L_SHIFTREG : string := "LPM_SHIFTREG";

constant L_RAM_DQ   : string := "LPM_RAM_DQ";

constant L_RAM_DP   : string := "LPM_RAM_DP";

constant L_RAM_IO   : string := "LPM_RAM_IO";

constant L_ROM      : string := "LPM_ROM";

constant L_FIFO     : string := "LPM_FIFO";

constant L_FIFO_DC  : string := "LPM_FIFO_DC";

constant L_TTABLE   : string := "LPM_TTABLE";

constant L_FSM      : string := "LPM_FSM";

constant L_INPAD    : string := "LPM_INPAD";

constant L_OUTPAD   : string := "LPM_OUTPAD";

constant L_BIPAD    : string := "LPM_BIPAD";

type STD_LOGIC_2D is array (NATURAL RANGE <>, NATURAL RANGE <>) of STD_LOGIC;

 

------------------------------------------------------------------------

-- GATES ---------------------------------------------------------------

------------------------------------------------------------------------

 

component LPM_CONSTANT

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_CVALUE : natural;

                 LPM_STRENGTH : string := "UNUSED";

                 LPM_TYPE : string := L_CONSTANT;

                 LPM_HINT : string := "UNUSED");

        port (RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_INV

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_TYPE : string := L_INV;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_AND

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_SIZE : natural;    -- MUST be greater than 0

                 LPM_TYPE : string := L_AND;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_2D(LPM_SIZE-1 downto 0, LPM_WIDTH-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_OR

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_SIZE : natural;    -- MUST be greater than 0

                 LPM_TYPE : string := L_OR;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_2D(LPM_SIZE-1 downto 0, LPM_WIDTH-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_XOR

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_SIZE : natural;    -- MUST be greater than 0

                 LPM_TYPE : string := L_XOR;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_2D(LPM_SIZE-1 downto 0, LPM_WIDTH-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_BUSTRI

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_TYPE : string := L_BUSTRI;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              ENABLEDT : in std_logic := '0';

              ENABLETR : in std_logic := '0';

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0);

              TRIDATA : inout std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_MUX

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_SIZE : natural;    -- MUST be greater than 0

                 LPM_WIDTHS : natural;    -- MUST be greater than 0

                 LPM_PIPELINE : natural := 0;

                 LPM_TYPE : string := L_MUX;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_2D(LPM_SIZE-1 downto 0, LPM_WIDTH-1 downto 0);

              ACLR : in std_logic := '0';

              CLOCK : in std_logic := '0';

              CLKEN : in std_logic := '1';

              SEL : in std_logic_vector(LPM_WIDTHS-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_DECODE

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_DECODES : natural;    -- MUST be greater than 0

                 LPM_PIPELINE : natural := 0;

                 LPM_TYPE : string := L_DECODE;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              CLOCK : in std_logic := '0';

              CLKEN : in std_logic := '1';

              ACLR : in std_logic := '0';

              ENABLE : in std_logic := '1';

              EQ : out std_logic_vector(LPM_DECODES-1 downto 0));

end component;

 

component LPM_CLSHIFT

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_WIDTHDIST : natural;    -- MUST be greater than 0

                 LPM_SHIFTTYPE : string := "LOGICAL";

                 LPM_TYPE : string := L_CLSHIFT;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in STD_LOGIC_VECTOR(LPM_WIDTH-1 downto 0);

              DISTANCE : in STD_LOGIC_VECTOR(LPM_WIDTHDIST-1 downto 0);

              DIRECTION : in STD_LOGIC := '0';

              RESULT : out STD_LOGIC_VECTOR(LPM_WIDTH-1 downto 0);

              UNDERFLOW : out STD_LOGIC;

              OVERFLOW : out STD_LOGIC);

end component;

 

 

------------------------------------------------------------------------

-- ARITHMETIC COMPONENTS -----------------------------------------------

------------------------------------------------------------------------

 

component LPM_ADD_SUB

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_DIRECTION : string := "UNUSED";

                 LPM_REPRESENTATION: string := "SIGNED";

                 LPM_PIPELINE : natural := 0;

                 LPM_TYPE : string := L_ADD_SUB;

                 LPM_HINT : string := "UNUSED");

        port (DATAA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              DATAB : in std_logic_vector(LPM_WIDTH-1 downto 0);

              ACLR : in std_logic := '0';

              CLOCK : in std_logic := '0';

              CLKEN : in std_logic := '1';

              CIN : in std_logic := 'Z';

              ADD_SUB : in std_logic := '1';

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0);

              COUT : out std_logic;

              OVERFLOW : out std_logic);

end component;

 

component LPM_COMPARE

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_REPRESENTATION : string := "UNSIGNED";

                 LPM_PIPELINE : natural := 0;

                 LPM_TYPE: string := L_COMPARE;

                 LPM_HINT : string := "UNUSED");

        port (DATAA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              DATAB : in std_logic_vector(LPM_WIDTH-1 downto 0);

              ACLR : in std_logic := '0';

              CLOCK : in std_logic := '0';

              CLKEN : in std_logic := '1';

              AGB : out std_logic;

              AGEB : out std_logic;

              AEB : out std_logic;

              ANEB : out std_logic;

              ALB : out std_logic;

              ALEB : out std_logic);

end component;

 

component LPM_MULT

        generic (LPM_WIDTHA : natural;    -- MUST be greater than 0

                 LPM_WIDTHB : natural;    -- MUST be greater than 0

                 LPM_WIDTHS : natural := 1;

                 LPM_WIDTHP : natural;    -- MUST be greater than 0

                 LPM_REPRESENTATION : string := "UNSIGNED";

                 LPM_PIPELINE : natural := 0;

                 LPM_TYPE: string := L_MULT;

                 LPM_HINT : string := "UNUSED");

        port (DATAA : in std_logic_vector(LPM_WIDTHA-1 downto 0);

              DATAB : in std_logic_vector(LPM_WIDTHB-1 downto 0);

              ACLR : in std_logic := '0';

              CLOCK : in std_logic := '0';

              CLKEN : in std_logic := '1';

              SUM : in std_logic_vector(LPM_WIDTHS-1 downto 0) := (OTHERS => '0');

              RESULT : out std_logic_vector(LPM_WIDTHP-1 downto 0));

end component;

   

component LPM_DIVIDE

        generic (LPM_WIDTHN : natural;    -- MUST be greater than 0

                 LPM_WIDTHD : natural;    -- MUST be greater than 0

                 LPM_NREPRESENTATION : string := "UNSIGNED";

                 LPM_DREPRESENTATION : string := "UNSIGNED";

                 LPM_PIPELINE : natural := 0;

                 LPM_TYPE : string := L_DIVIDE;

                 LPM_HINT : string := "LPM_REMAINDERPOSITIVE=TRUE");

        port (NUMER : in std_logic_vector(LPM_WIDTHN-1 downto 0);

              DENOM : in std_logic_vector(LPM_WIDTHD-1 downto 0);

              ACLR : in std_logic := '0';

              CLOCK : in std_logic := '0';

              CLKEN : in std_logic := '1';

              QUOTIENT : out std_logic_vector(LPM_WIDTHN-1 downto 0);

              REMAIN : out std_logic_vector(LPM_WIDTHD-1 downto 0));

end component;

               

component LPM_ABS

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_TYPE: string := L_ABS;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0);

              OVERFLOW : out std_logic);

end component;

 

component LPM_COUNTER

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_MODULUS : natural := 0;

                 LPM_DIRECTION : string := "UNUSED";

                 LPM_AVALUE : string := "UNUSED";

                 LPM_SVALUE : string := "UNUSED";

                 LPM_PVALUE : string := "UNUSED";

                 LPM_TYPE: string := L_COUNTER;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0):= (OTHERS => '0');

              CLOCK : in std_logic ;

              CLK_EN : in std_logic := '1';

              CNT_EN : in std_logic := '1';

              UPDOWN : in std_logic := '1';

              SLOAD : in std_logic := '0';

              SSET : in std_logic := '0';

              SCLR : in std_logic := '0';

              ALOAD : in std_logic := '0';

              ASET : in std_logic := '0';

              ACLR : in std_logic := '0';

              CIN : in std_logic := '1';

              COUT : out std_logic := '0';

              Q : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

 

------------------------------------------------------------------------

-- STORAGE COMPONENTS --------------------------------------------------

------------------------------------------------------------------------

 

component LPM_LATCH

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_AVALUE : string := "UNUSED";

                 LPM_PVALUE : string := "UNUSED";

                 LPM_TYPE: string := L_LATCH;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0) := (OTHERS => '0');

              GATE : in std_logic;

              ASET : in std_logic := '0';

              ACLR : in std_logic := '0';

              Q : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_FF

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_AVALUE : string := "UNUSED";

                 LPM_SVALUE : string := "UNUSED";

                 LPM_PVALUE : string := "UNUSED";

                 LPM_FFTYPE: string := "DFF";

                 LPM_TYPE: string := L_FF;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              CLOCK : in std_logic;

              ENABLE : in std_logic := '1';

              SLOAD : in std_logic := '0';

              SCLR : in std_logic := '0';

              SSET : in std_logic := '0';

              ALOAD : in std_logic := '0';

              ACLR : in std_logic := '0';

              ASET : in std_logic := '0';

              Q : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_SHIFTREG

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_AVALUE : string := "UNUSED";

                 LPM_SVALUE : string := "UNUSED";

                 LPM_PVALUE : string := "UNUSED";

                 LPM_DIRECTION: string := "UNUSED";

                 LPM_TYPE: string := L_SHIFTREG;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0) := (OTHERS => '0');

              CLOCK : in std_logic;

              ENABLE : in std_logic := '1';

              SHIFTIN : in std_logic := '1';

              LOAD : in std_logic := '0';

              SCLR : in std_logic := '0';

              SSET : in std_logic := '0';

              ACLR : in std_logic := '0';

              ASET : in std_logic := '0';

              Q : out std_logic_vector(LPM_WIDTH-1 downto 0);

              SHIFTOUT : out std_logic);

end component;

 

component LPM_RAM_DQ

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_WIDTHAD : natural;    -- MUST be greater than 0

                 LPM_NUMWORDS : natural := 0;

                 LPM_INDATA : string := "REGISTERED";

                 LPM_ADDRESS_CONTROL: string := "REGISTERED";

                 LPM_OUTDATA : string := "REGISTERED";

                 LPM_FILE : string := "UNUSED";

                 LPM_TYPE : string := L_RAM_DQ;

                     USE_EAB  : string := "OFF";

                 INTENDED_DEVICE_FAMILY  : string := "UNUSED";

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              ADDRESS : in std_logic_vector(LPM_WIDTHAD-1 downto 0);

              INCLOCK : in std_logic := '0';

              OUTCLOCK : in std_logic := '0';

              WE : in std_logic;

              Q : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_RAM_DP

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_WIDTHAD : natural;    -- MUST be greater than 0

                 LPM_NUMWORDS : natural := 0;

                 LPM_INDATA : string := "REGISTERED";

                 LPM_OUTDATA : string := "REGISTERED";

                 LPM_RDADDRESS_CONTROL : string := "REGISTERED";

                 LPM_WRADDRESS_CONTROL : string := "REGISTERED";

                 LPM_FILE : string := "UNUSED";

                 LPM_TYPE : string := L_RAM_DP;

                 USE_EAB  : string := "OFF";

                 INTENDED_DEVICE_FAMILY  : string := "UNUSED";

                 RDEN_USED  : string := "TRUE";

                 LPM_HINT : string := "UNUSED");

        port (RDCLOCK : in std_logic := '0';

              RDCLKEN : in std_logic := '1';

              RDADDRESS : in std_logic_vector(LPM_WIDTHad-1 downto 0);

              RDEN : in std_logic := '1';

              DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              WRADDRESS : in std_logic_vector(LPM_WIDTHad-1 downto 0);

              WREN : in std_logic;

              WRCLOCK : in std_logic := '0';

              WRCLKEN : in std_logic := '1';

              Q : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_RAM_IO

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_WIDTHAD : natural;    -- MUST be greater than 0

                 LPM_NUMWORDS : natural := 0;

                 LPM_INDATA : string := "REGISTERED";

                 LPM_ADDRESS_CONTROL : string := "REGISTERED";

                 LPM_OUTDATA : string := "REGISTERED";

                 LPM_FILE : string := "UNUSED";

                 LPM_TYPE : string := L_RAM_IO;

                 INTENDED_DEVICE_FAMILY  : string := "UNUSED";

                 USE_EAB  : string := "OFF";

                 LPM_HINT : string := "UNUSED");

        port (ADDRESS : in STD_LOGIC_VECTOR(LPM_WIDTHAD-1 downto 0);

              INCLOCK : in STD_LOGIC := '0';

              OUTCLOCK : in STD_LOGIC := '0';

              MEMENAB : in STD_LOGIC := '1';

              OUTENAB : in STD_LOGIC := 'Z';

              WE : in STD_LOGIC := 'Z';

              DIO : inout STD_LOGIC_VECTOR(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_ROM

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_WIDTHAD : natural;    -- MUST be greater than 0

                 LPM_NUMWORDS : natural := 0;

                 LPM_ADDRESS_CONTROL : string := "REGISTERED";

                 LPM_OUTDATA : string := "REGISTERED";

                 LPM_FILE : string;

                 LPM_TYPE : string := L_ROM;

                 INTENDED_DEVICE_FAMILY  : string := "UNUSED";

                 LPM_HINT : string := "UNUSED");

        port (ADDRESS : in STD_LOGIC_VECTOR(LPM_WIDTHAD-1 downto 0);

              INCLOCK : in STD_LOGIC := '0';

              OUTCLOCK : in STD_LOGIC := '0';

              MEMENAB : in STD_LOGIC := '1';

              Q : out STD_LOGIC_VECTOR(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_FIFO

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_WIDTHU : natural := 1;    -- MUST be greater than 0

                 LPM_NUMWORDS : natural;    -- MUST be greater than 0

                 LPM_SHOWAHEAD : string := "OFF";

                 LPM_TYPE : string := L_FIFO;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              CLOCK : in std_logic;

              WRREQ : in std_logic;

              RDREQ : in std_logic;

              ACLR : in std_logic := '0';

              SCLR : in std_logic := '0';

              Q : out std_logic_vector(LPM_WIDTH-1 downto 0);

              USEDW : out std_logic_vector(LPM_WIDTHU-1 downto 0);

              FULL : out std_logic;

              EMPTY : out std_logic);

end component;

 

component LPM_FIFO_DC

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_WIDTHU : natural := 1;    -- MUST be greater than 0

                 LPM_NUMWORDS : natural;    -- MUST be greater than 0

         LPM_SHOWAHEAD : string := "OFF";

         LPM_TYPE : string := L_FIFO_DC;

             UNDERFLOW_CHECKING : string := "ON";

             OVERFLOW_CHECKING : string := "ON";

         LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              WRCLOCK : in std_logic;

              RDCLOCK : in std_logic;

              WRREQ : in std_logic;

              RDREQ : in std_logic;

              ACLR : in std_logic := '0';

              Q : out std_logic_vector(LPM_WIDTH-1 downto 0);

              WRUSEDW : out std_logic_vector(LPM_WIDTHU-1 downto 0);

              RDUSEDW : out std_logic_vector(LPM_WIDTHU-1 downto 0);

              WRFULL : out std_logic;

              RDFULL : out std_logic;

              WREMPTY : out std_logic;

              RDEMPTY : out std_logic);

end component;

 

 

------------------------------------------------------------------------

-- TABLE PRIMITIVES ----------------------------------------------------

------------------------------------------------------------------------

 

component LPM_TTABLE

        generic (LPM_WIDTHIN : natural;    -- MUST be greater than 0

                 LPM_WIDTHOUT : natural;    -- MUST be greater than 0

                 LPM_FILE : string;

                 LPM_TRUTHTYPE : string := "FD";                

                 LPM_TYPE : string := L_TTABLE;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTHIN-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTHOUT-1 downto 0));

end component;

 

component LPM_FSM

        generic (LPM_WIDTHIN : natural;    -- MUST be greater than 0

                 LPM_WIDTHOUT : natural;    -- MUST be greater than 0

                 LPM_WIDTHS : natural := 1;    -- MUST be greater than 0

                 LPM_FILE : string ;

                 LPM_PVALUE : string := "UNUSED";

                 LPM_AVALUE : string := "UNUSED";

                 LPM_TRUTHTYPE : string := "FD";

                 LPM_TYPE : string := L_FSM;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTHIN-1 downto 0);

              CLOCK : in std_logic;

              ASET : in std_logic := '0';

              TESTENAB : in std_logic := '0';

              TESTIN : in std_logic := '0';

              TESTOUT : out std_logic;

              STATE : out std_logic_vector(LPM_WIDTHS-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTHOUT-1 downto 0));

end component;

 

 

------------------------------------------------------------------------

-- PAD PRIMITIVES ------------------------------------------------------

------------------------------------------------------------------------

 

component LPM_INPAD

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_TYPE : string := L_INPAD;

                 LPM_HINT : string := "UNUSED");

        port (PAD : in std_logic_vector(LPM_WIDTH-1 downto 0);

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_OUTPAD

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_TYPE : string := L_OUTPAD;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              PAD : out std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

component LPM_BIPAD

        generic (LPM_WIDTH : natural;    -- MUST be greater than 0

                 LPM_TYPE : string := L_BIPAD;

                 LPM_HINT : string := "UNUSED");

        port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);

              ENABLE : in std_logic;

              RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0);

              PAD : inout std_logic_vector(LPM_WIDTH-1 downto 0));

end component;

 

end;