--**************************************************************
--  Copyright (c) 2011 Xilinx, Inc.  All rights reserved.
--  File Name    : unimacro_VCOMP.vhd
--  Library      : unisim
--  Release      : 11.1
--  Entity Count : 12
--  Time         : Sun Oct 13 09:59:29 2013
--  Generated by : gencomp.pl
--**************************************************************

library IEEE;
use IEEE.STD_LOGIC_1164.all;
package VCOMPONENTS is



-- START COMPONENT
----- component ADDMACC_MACRO -----
component ADDMACC_MACRO
  generic (
     DEVICE : string := "VIRTEX6";
     LATENCY : integer := 4;
     WIDTH_MULTIPLIER : integer := 18;
     WIDTH_PREADD : integer := 25;
     WIDTH_PRODUCT : integer := 48
  );
  port (
     PRODUCT : out std_logic_vector(WIDTH_PRODUCT-1 downto 0);
     CARRYIN : in std_logic;
     CE : in std_logic;
     CLK : in std_logic;
     LOAD : in std_logic;
     LOAD_DATA : in std_logic_vector(WIDTH_PRODUCT-1 downto 0);
     MULTIPLIER : in std_logic_vector(WIDTH_MULTIPLIER-1 downto 0);
     PREADD1 : in std_logic_vector(WIDTH_PREADD-1 downto 0);
     PREADD2 : in std_logic_vector(WIDTH_PREADD-1 downto 0);
     RST : in std_logic
  );
end component;

----- component ADDSUB_MACRO -----
component ADDSUB_MACRO
  generic (
     DEVICE : string := "VIRTEX5";
     LATENCY : integer := 2;
     MODEL_TYPE : integer := 0;
     STYLE : string := "DSP";
     VERBOSITY : integer := 0;
     WIDTH : integer := 48;
     WIDTH_B : integer := 48;
     WIDTH_RESULT : integer := 48
  );
  port (
     CARRYOUT : out std_logic;
     RESULT : out std_logic_vector(WIDTH-1 downto 0);
     A : in std_logic_vector(WIDTH-1 downto 0);
     ADD_SUB : in std_logic;
     B : in std_logic_vector(WIDTH-1 downto 0);
     CARRYIN : in std_logic;
     CE : in std_logic;
     CLK : in std_logic;
     RST : in std_logic
  );
end component;

----- component BRAM_SDP_MACRO -----
component BRAM_SDP_MACRO
  generic (
     BRAM_SIZE : string := "18Kb";
     DEVICE : string := "VIRTEX5";
     DO_REG : integer := 0;
     INIT : bit_vector := X"000000000000000000";
     INITP_00 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_01 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_02 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_03 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_04 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_05 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_06 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_07 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_08 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_09 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_00 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_01 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_02 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_03 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_04 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_05 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_06 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_07 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_08 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_09 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_10 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_11 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_12 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_13 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_14 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_15 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_16 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_17 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_18 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_19 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_20 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_21 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_22 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_23 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_24 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_25 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_26 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_27 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_28 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_29 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_30 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_31 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_32 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_33 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_34 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_35 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_36 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_37 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_38 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_39 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_40 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_41 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_42 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_43 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_44 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_45 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_46 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_47 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_48 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_49 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_50 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_51 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_52 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_53 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_54 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_55 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_56 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_57 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_58 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_59 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_60 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_61 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_62 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_63 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_64 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_65 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_66 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_67 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_68 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_69 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_70 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_71 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_72 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_73 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_74 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_75 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_76 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_77 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_78 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_79 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_FILE : string := "NONE";
     READ_WIDTH : integer := 0;
     SIM_COLLISION_CHECK : string := "ALL";
     SIM_MODE : string := "SAFE";
     SRVAL : bit_vector := X"000000000000000000";
     WRITE_MODE : string := "WRITE_FIRST";
     WRITE_WIDTH : integer := 0
  );
  port (
     DO : out std_logic_vector(READ_WIDTH-1 downto 0);
     DI : in std_logic_vector(WRITE_WIDTH-1 downto 0);
     RDADDR : in std_logic_vector;
     RDCLK : in std_ulogic;
     RDEN : in std_ulogic;
     REGCE : in std_ulogic;
     RST : in std_ulogic;
     WE : in std_logic_vector;
     WRADDR : in std_logic_vector;
     WRCLK : in std_ulogic;
     WREN : in std_ulogic
  );
end component;

----- component BRAM_SINGLE_MACRO -----
component BRAM_SINGLE_MACRO
  generic (
     BRAM_SIZE : string := "18Kb";
     DEVICE : string := "VIRTEX5";
     DO_REG : integer := 0;
     INIT : bit_vector := X"000000000000000000";
     INITP_00 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_01 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_02 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_03 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_04 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_05 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_06 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_07 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_08 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_09 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_00 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_01 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_02 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_03 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_04 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_05 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_06 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_07 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_08 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_09 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_10 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_11 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_12 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_13 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_14 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_15 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_16 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_17 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_18 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_19 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_20 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_21 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_22 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_23 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_24 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_25 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_26 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_27 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_28 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_29 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_30 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_31 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_32 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_33 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_34 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_35 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_36 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_37 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_38 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_39 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_40 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_41 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_42 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_43 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_44 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_45 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_46 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_47 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_48 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_49 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_50 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_51 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_52 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_53 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_54 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_55 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_56 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_57 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_58 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_59 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_60 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_61 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_62 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_63 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_64 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_65 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_66 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_67 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_68 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_69 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_70 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_71 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_72 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_73 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_74 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_75 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_76 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_77 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_78 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_79 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_FILE : string := "NONE";
     READ_WIDTH : integer := 1;
     SIM_MODE : string := "SAFE";
     SRVAL : bit_vector := X"000000000000000000";
     WRITE_MODE : string := "WRITE_FIRST";
     WRITE_WIDTH : integer := 1
  );
  port (
     DO : out std_logic_vector(READ_WIDTH-1 downto 0);
     ADDR : in std_logic_vector;
     CLK : in std_ulogic;
     DI : in std_logic_vector(WRITE_WIDTH-1 downto 0);
     EN : in std_ulogic;
     REGCE : in std_ulogic;
     RST : in std_ulogic;
     WE : in std_logic_vector
  );
end component;

----- component BRAM_TDP_MACRO -----
component BRAM_TDP_MACRO
  generic (
     BRAM_SIZE : string := "18Kb";
     DEVICE : string := "VIRTEX5";
     DOA_REG : integer := 0;
     DOB_REG : integer := 0;
     INITP_00 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_01 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_02 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_03 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_04 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_05 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_06 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_07 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_08 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_09 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INITP_0F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_00 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_01 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_02 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_03 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_04 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_05 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_06 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_07 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_08 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_09 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_0F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_10 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_11 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_12 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_13 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_14 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_15 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_16 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_17 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_18 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_19 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_1F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_20 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_21 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_22 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_23 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_24 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_25 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_26 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_27 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_28 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_29 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_2F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_30 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_31 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_32 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_33 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_34 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_35 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_36 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_37 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_38 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_39 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_3F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_40 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_41 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_42 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_43 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_44 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_45 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_46 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_47 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_48 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_49 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_4F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_50 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_51 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_52 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_53 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_54 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_55 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_56 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_57 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_58 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_59 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_5F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_60 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_61 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_62 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_63 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_64 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_65 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_66 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_67 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_68 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_69 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_6F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_70 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_71 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_72 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_73 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_74 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_75 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_76 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_77 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_78 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_79 : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7A : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7B : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7C : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7D : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7E : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_7F : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000";
     INIT_A : bit_vector := X"000000000";
     INIT_B : bit_vector := X"000000000";
     INIT_FILE : string := "NONE";
     READ_WIDTH_A : integer := 1;
     READ_WIDTH_B : integer := 1;
     SIM_COLLISION_CHECK : string := "ALL";
     SIM_MODE : string := "SAFE";
     SRVAL_A : bit_vector := X"000000000";
     SRVAL_B : bit_vector := X"000000000";
     WRITE_MODE_A : string := "WRITE_FIRST";
     WRITE_MODE_B : string := "WRITE_FIRST";
     WRITE_WIDTH_A : integer := 1;
     WRITE_WIDTH_B : integer := 1
  );
  port (
     DOA : out std_logic_vector(READ_WIDTH_A-1 downto 0);
     DOB : out std_logic_vector(READ_WIDTH_B-1 downto 0);
     ADDRA : in std_logic_vector;
     ADDRB : in std_logic_vector;
     CLKA : in std_ulogic;
     CLKB : in std_ulogic;
     DIA : in std_logic_vector(WRITE_WIDTH_A-1 downto 0);
     DIB : in std_logic_vector(WRITE_WIDTH_B-1 downto 0);
     ENA : in std_ulogic;
     ENB : in std_ulogic;
     REGCEA : in std_ulogic;
     REGCEB : in std_ulogic;
     RSTA : in std_ulogic;
     RSTB : in std_ulogic;
     WEA : in std_logic_vector;
     WEB : in std_logic_vector
  );
end component;

----- component COUNTER_LOAD_MACRO -----
component COUNTER_LOAD_MACRO
  generic (
     COUNT_BY : std_logic_vector := X"000000000001";
     DEVICE : string := "VIRTEX5";
     STYLE : string := "AUTO";
     WIDTH_DATA : integer := 48
  );
  port (
     Q : out std_logic_vector(WIDTH_DATA-1 downto 0);
     CE : in std_logic;
     CLK : in std_logic;
     DIRECTION : in std_logic;
     LOAD : in std_logic;
     LOAD_DATA : in std_logic_vector(WIDTH_DATA-1 downto 0);
     RST : in std_logic
  );
end component;

----- component COUNTER_TC_MACRO -----
component COUNTER_TC_MACRO
  generic (
     COUNT_BY : std_logic_vector := X"000000000001";
     DEVICE : string := "VIRTEX5";
     DIRECTION : string := "UP";
     RESET_UPON_TC : string := "FALSE";
     STYLE : string := "AUTO";
     TC_VALUE : std_logic_vector := X"000000000000";
     WIDTH_DATA : integer := 48
  );
  port (
     Q : out std_logic_vector(WIDTH_DATA-1 downto 0);
     TC : out std_logic;
     CE : in std_logic;
     CLK : in std_logic;
     RST : in std_logic
  );
end component;

----- component EQ_COMPARE_MACRO -----
component EQ_COMPARE_MACRO
  generic (
     DEVICE : string := "VIRTEX5";
     LATENCY : integer := 2;
     MASK : bit_vector := X"000000000000";
     SEL_MASK : string := "MASK";
     SEL_PATTERN : string := "DYNAMIC_PATTERN";
     STATIC_PATTERN : bit_vector := X"000000000000";
     WIDTH : integer := 48
  );
  port (
     Q : out std_logic;
     CE : in std_logic;
     CLK : in std_logic;
     DATA_IN : in std_logic_vector(WIDTH-1 downto 0);
     DYNAMIC_PATTERN : in std_logic_vector(WIDTH-1 downto 0);
     RST : in std_logic
  );
end component;

----- component FIFO_DUALCLOCK_MACRO -----
component FIFO_DUALCLOCK_MACRO
  generic (
     ALMOST_EMPTY_OFFSET : bit_vector := X"0080";
     ALMOST_FULL_OFFSET : bit_vector := X"0080";
     DATA_WIDTH : integer := 4;
     DEVICE : string := "VIRTEX5";
     FIFO_SIZE : string := "18Kb";
     FIRST_WORD_FALL_THROUGH : boolean := FALSE;
     INIT : bit_vector := X"000000000000000000";
     SIM_MODE : string := "SAFE";
     SRVAL : bit_vector := X"000000000000000000"
  );
  port (
     ALMOSTEMPTY : out std_logic;
     ALMOSTFULL : out std_logic;
     DO : out std_logic_vector(DATA_WIDTH-1 downto 0);
     EMPTY : out std_logic;
     FULL : out std_logic;
     RDCOUNT : out std_logic_vector;
     RDERR : out std_logic;
     WRCOUNT : out std_logic_vector;
     WRERR : out std_logic;
     DI : in std_logic_vector(DATA_WIDTH-1 downto 0);
     RDCLK : in std_logic;
     RDEN : in std_logic;
     RST : in std_logic;
     WRCLK : in std_logic;
     WREN : in std_logic
  );
end component;

----- component FIFO_SYNC_MACRO -----
component FIFO_SYNC_MACRO
  generic (
     ALMOST_EMPTY_OFFSET : bit_vector := X"0080";
     ALMOST_FULL_OFFSET : bit_vector := X"0080";
     DATA_WIDTH : integer := 4;
     DEVICE : string := "VIRTEX5";
     DO_REG : integer := 0;
     FIFO_SIZE : string := "18Kb";
     INIT : bit_vector := X"000000000000000000";
     SIM_MODE : string := "SAFE";
     SRVAL : bit_vector := X"000000000000000000"
  );
  port (
     ALMOSTEMPTY : out std_logic;
     ALMOSTFULL : out std_logic;
     DO : out std_logic_vector(DATA_WIDTH-1 downto 0);
     EMPTY : out std_logic;
     FULL : out std_logic;
     RDCOUNT : out std_logic_vector;
     RDERR : out std_logic;
     WRCOUNT : out std_logic_vector;
     WRERR : out std_logic;
     CLK : in std_logic;
     DI : in std_logic_vector(DATA_WIDTH-1 downto 0);
     RDEN : in std_logic;
     RST : in std_logic;
     WREN : in std_logic
  );
end component;

----- component MACC_MACRO -----
component MACC_MACRO
  generic (
     DEVICE : string := "VIRTEX5";
     LATENCY : integer := 3;
     WIDTH_A : integer := 25;
     WIDTH_B : integer := 18;
     WIDTH_P : integer := 48
  );
  port (
     P : out std_logic_vector(WIDTH_P-1 downto 0);
     A : in std_logic_vector(WIDTH_A-1 downto 0);
     ADDSUB : in std_logic;
     B : in std_logic_vector(WIDTH_B-1 downto 0);
     CARRYIN : in std_logic;
     CE : in std_logic;
     CLK : in std_logic;
     LOAD : in std_logic;
     LOAD_DATA : in std_logic_vector(WIDTH_P-1 downto 0);
     RST : in std_logic
  );
end component;

----- component MULT_MACRO -----
component MULT_MACRO
  generic (
     DEVICE : string := "VIRTEX5";
     LATENCY : integer := 3;
     STYLE : string := "DSP";
     WIDTH_A : integer := 18;
     WIDTH_B : integer := 18
  );
  port (
     P : out std_logic_vector((WIDTH_A+WIDTH_B)-1 downto 0);
     A : in std_logic_vector(WIDTH_A-1 downto 0);
     B : in std_logic_vector(WIDTH_B-1 downto 0);
     CE : in std_logic;
     CLK : in std_logic;
     RST : in std_logic
  );
end component;

-- END COMPONENT

end VCOMPONENTS;