repetitive input/output entity declaration vhdl - vhdl

I've got multiple (same) input/output to declare :
B1_data_to_send : in std_logic_vector(15 downto 0);
B1_start_transmission : out std_logic;
B1_transmission_busy : in std_logic;
B2_data_to_send : in std_logic_vector(15 downto 0);
B2_start_transmission : out std_logic;
B2_transmission_busy : in std_logic;
B3_data_to_send : in std_logic_vector(15 downto 0);
B3_start_transmission : out std_logic;
B3_transmission_busy : in std_logic;
B4_data_to_send : in std_logic_vector(15 downto 0);
B4_start_transmission : out std_logic;
B4_transmission_busy : in std_logic;
B5_data_to_send : in std_logic_vector(15 downto 0);
B5_start_transmission : out std_logic;
B5_transmission_busy : in std_logic;
B6_data_to_send : in std_logic_vector(15 downto 0);
B6_start_transmission : out std_logic;
B6_transmission_busy : in std_logic;
I've got 30 block like this to create, is there a way to avoid this repetition and to create a generic block that I can instantiate with different names ?

Arrays are what you need here. First, you will need to create an array type of std_logic_vector in a package. If you're using VHDL 2008, it can simply be an unconstrained type:
package types_pkg is
type slv_array_t is array(natural range <>) of std_logic_vector;
end package;
and then use this type in your entity:
use work.types_pkg.all;
entity your_entity is
port (
B_data_to_send : in slv_array_t (1 to 30)(15 downto 0);
B_start_transmission : out std_logic_vector(1 to 30);
B_transmission_busy : in std_logic_vector(1 to 30)
);
end entity;
Of course, any of the dimensions can come from a generic.
use work.types_pkg.all;
entity your_entity is
generic (
G_N_PORTS : natural;
G_D_WIDTH : natural
);
port (
B_data_to_send : in slv_array_t (0 to G_N_PORTS-1)(G_D_WIDTH-1 downto 0);
B_start_transmission : out std_logic_vector(0 to G_N_PORTS-1);
B_transmission_busy : in std_logic_vector(0 to G_N_PORTS-1)
);
end entity;

Related

Top level port with records in VHDL with multiple direction

I want to use records as I have multiple ports which at the same time are composed by multiple signals. The issue is that some signals are in and some are out (AXI stream, specifically).
I want to avoid doing this:
port (
s0_axis_tvalid : in STD_LOGIC;
s0_axis_tdata : in STD_LOGIC_VECTOR (Data_Width-1 downto 0);
s0_axis_tlast : in STD_LOGIC;
s0_axis_tready : out STD_LOGIC;
s1_axis_tvalid : in STD_LOGIC;
s1_axis_tdata : in STD_LOGIC_VECTOR (Data_Width-1 downto 0);
s1_axis_tlast : in STD_LOGIC;
s1_axis_tready : out STD_LOGIC;
m0_axis_tvalid : out STD_LOGIC;
m0_axis_tdata : out STD_LOGIC_VECTOR (Data_Width-1 downto 0);
m0_axis_tlast : out STD_LOGIC;
m0_axis_tready : in STD_LOGIC);
So, I want to have some records looking like this:
type AXIS_Slave is record
s_axis_tvalid : STD_LOGIC;
s_axis_tdata : STD_LOGIC_VECTOR (Data_Width-1 downto 0);
s_axis_tlast : STD_LOGIC;
s_axis_tready : STD_LOGIC;
end record AXIS_Slave;
type AXIS_Master is record
s_axis_tvalid : STD_LOGIC;
s_axis_tdata : STD_LOGIC_VECTOR (Data_Width-1 downto 0);
s_axis_tlast : STD_LOGIC;
s_axis_tready : STD_LOGIC;
end record AXIS_Master;
Now, the port in my TOP's entity design should be:
Port (
s0: AXIS_Slave;
s1: AXIS_Slave;
m0: AXIS_Master);
The problem is that I need to declare in the Port whether it is in or out but the direction of each signal should be defined in the record, which I believe is not allowed as I get a warning "Syntax error near in" or "Syntax error near out".
So, how can I declare a type which has in and out signals?

How to instantiate multiple components with variable size ports in vhdl?

I want to retiteratively elaborate a couple of components using for generate statements, these components have variable size ports and I don't have an idea of how assign these variable size ports to signals.
I'm using a package with this declaration:
library ieee;
use ieee.std_logic_1164.all;
PACKAGE Arrays_package IS
type Generic_ARRAY_type is array (integer range <>) of std_logic_vector;
END Arrays_package;
The components are Pre_pre_buffer_conv and Pre_buffer_conv in the code below.
How I can to declare the signal xdataout_preprebuffer?
library ieee;
use ieee.std_logic_1164.all;
use work.Arrays_package.all;
entity Naive_RNC_problem is
generic(
no_col_imag : integer := 28;
no_bits : integer := 9;
no_bits_fraction : natural := 8;
no_col_filt : integer := 3
);
port
(
CLOCK_50 : in std_logic;
KEY : in std_logic_vector(3 downto 0);
SW : in std_logic_vector(17 downto 0);
xdataout_pre_buffer_conv : out Generic_ARRAY_type(no_col_filt*no_col_filt-1 downto 0)((no_bits-1) downto 0)
);
end entity;
architecture rtl of Naive_RNC_problem is
component Image_ROM IS
PORT
(
address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);
clock : IN STD_LOGIC := '1';
q : OUT STD_LOGIC_VECTOR (8 DOWNTO 0)
);
END component;
component generic_mask_nxn_v2 is
generic(
no_col_imag : integer := 28;
no_col_filt : integer := 3;
stride : integer := 1;
no_bits : integer := 10
);
Port (
-- ENTRADAS ------------------------
iclk, irst : in std_logic;
ien : in std_logic;
idatain : in std_logic_vector (no_bits-1 downto 0);
index : in integer;
iindex_ctrl : in std_logic_vector(7 downto 0);
-- SALIDAS -------------------------
odataout : out Generic_ARRAY_type(no_col_filt-1 downto 0)((no_col_filt*no_bits-1) downto 0) ;
omasken : out std_logic
);
end component;
component Pre_pre_buffer_conv is
generic
(
no_col_filt : integer := 3;
no_bits : integer := 10
);
port
(
-- ENTRADAS ------------------------
iclk, irst : in std_logic;
ien : in std_logic;
index : in integer;
iindex_ctrl : in std_logic_vector(7 downto 0);
idatain : in Generic_ARRAY_type(no_col_filt-1 downto 0)(no_col_filt*no_bits-1 downto 0);
-- SALIDAS -------------------------
odataout : out Generic_ARRAY_type(no_col_filt-1 downto 0)(no_col_filt*no_bits-1 downto 0)
);
end component;
component Pre_buffer_conv is
generic
(
no_col_filt : integer := 3;
no_bits : integer := 9
);
port
(
-- ENTRADAS ------------------------
iclk, irst : in std_logic;
ien : in std_logic;
idatain : in Generic_ARRAY_type(no_col_filt-1 downto 0)(no_col_filt*no_bits-1 downto 0);
isel_row : in std_logic_vector(3 downto 0);
isel_col : in std_logic_vector(3 downto 0);
-- SALIDAS -------------------------
odataout : out std_logic_vector (no_bits-1 downto 0)
);
end component;
component Top_Control_prepre_buffer is
port (-- ENTRADAS -----------
iclk, ireset : in std_logic;
iStart : in std_logic;
imasken_conv : in std_logic;
ifin_convolvers : in std_logic;
ifin_interfaz_Conv_pool : in std_logic;
-- SALIDAS -----------------------
oidle : out std_logic;
orst : out std_logic;
oen_line_buffer_conv : out std_logic;
odir_imagen : out std_logic_Vector(15 downto 0);
ocarga_prepre_buffer : out std_logic;
ocarga_pre_buffer_conv : out std_logic;
oind_pre_buffers_conv : out std_logic_Vector(15 downto 0);
oStart_convolver : out std_logic;
oinicia_interfaz_Conv_pool : out std_logic
);
end component;
--=======================================================
-- Signal declarations
--=======================================================
signal xRST : std_logic;
signal xrst_ctrl : std_logic;
signal xStart : std_logic;
signal xclk_50 : std_logic;
signal xaddress_memoria_MNIST_ROM, xaddress_MNIST_PORTA: STD_LOGIC_VECTOR (9 DOWNTO 0);
signal xdataout_MNIST_ROM : STD_LOGIC_VECTOR (8 DOWNTO 0);
signal xaddress_memoria_MNIST_ctrl : STD_LOGIC_VECTOR (15 DOWNTO 0);
signal xrst_buffer_conv : std_logic;
signal xdatain_buffer : std_logic_vector (no_bits-1 downto 0);
signal xdataout_buffer : Generic_ARRAY_type(no_col_filt-1 downto 0)((no_col_filt*no_bits-1) downto 0) ;
signal xmasken_buffer : std_logic;
signal xen_line_buffer_conv : std_logic;
signal xcarga_prepre_buffer : std_logic;
signal xsel_row_pre_buffer : std_logic_vector(3 downto 0);
signal xsel_col_pre_buffer : std_logic_vector(3 downto 0);
signal xstart_fill_buffers_conv : std_logic;
signal xcarga_pre_buffer_conv : std_logic;
signal xind_pre_buffers_conv_ctrl : std_logic_vector(15 downto 0);
signal xind_pre_buffers_conv : std_logic_vector(7 downto 0);
signal xrst_contol_prepre_buffer : std_logic;
signal xfin_convolver, xfin_Interfaz_conv_pool : std_logic;
-- how to declare this signal? ---------------------------
type my_type1 is array (no_col_filt-1 downto 0) of std_logic_vector((no_col_filt*no_bits-1) downto 0);
type my_type2 is array(no_col_filt*no_col_filt-1 downto 0) of my_type1;
signal xdataout_preprebuffer : my_type2;
----
--=======================================================
-- Structural coding
--=======================================================
begin
xRST <= not KEY(0);
xStart <= not KEY(1);
-- RELOJES ===============================================
xclk_50 <= CLOCK_50;
-- MEMORIA IMAGEN MNIST ===============================================
MemoriaROM_MNIST : Image_ROM port map (xaddress_memoria_MNIST_ROM, xclk_50, xdataout_MNIST_ROM);
xaddress_memoria_MNIST_ROM <= xaddress_memoria_MNIST_Ctrl(9 downto 0);
-- Line Buffer convolucion ==============================================
Buffer_mask : generic_mask_nxn_v2 generic map ( no_col_imag => no_col_imag,
no_col_filt => no_col_filt,
stride => 1,
no_bits => no_bits
)
port map (-- ENTRADAS ------------------------
xclk_50, xrst_buffer_conv,
xen_line_buffer_conv, xdatain_buffer,
0,
(others => '0'),
-- SALIDAS -------------------------
xdataout_buffer, -- this is a variable size port (no problem here)
xmasken_buffer
);
xrst_buffer_conv <= xRST or xrst_ctrl ;--(not xRST) or
xdatain_buffer <= xdataout_MNIST_ROM;
-- Control Prepre Buffer convolucion ==============================================
Prepre_buffer_ctrl : Top_Control_prepre_buffer port map (-- ENTRADAS -----------------------
xclk_50, xrst_contol_prepre_buffer,
xStart,
xmasken_buffer,
xfin_convolver,
xfin_Interfaz_conv_pool,
-- SALIDAS -----------------------
open, xrst_ctrl,
xen_line_buffer_conv,
xaddress_memoria_MNIST_ctrl,
xcarga_prepre_buffer, xcarga_pre_buffer_conv, xind_pre_buffers_conv_ctrl,
open,
open
);
xrst_contol_prepre_buffer <= xRST;
xfin_convolver <= '1';
xfin_Interfaz_conv_pool <= '1';
-- Pre pre Buffer convolucion ===========================================
pre_pre_buffers_conV : for i in 0 to (no_col_filt*no_col_filt-1) generate
pre_pre_buffer_conV_cmp : Pre_pre_buffer_conv generic map (no_col_filt => no_col_filt,
no_bits => no_bits
)
port map (-- ENTRADAS -----------------------
xclk_50, xrst_buffer_conv,
xcarga_prepre_buffer,
i,
xind_pre_buffers_conv,
xdataout_buffer, -- this is a variable size port (no problem here)
-- SALIDAS -----------------------
xdataout_preprebuffer(i) -- this is a variable size port (ERROR HERE)
);
end generate;
-- Pre Buffer convolucion ==============================================
pre_buffers_conV : for i in 0 to (no_col_filt*no_col_filt-1) generate
pre_buffer_conV_cmp : Pre_buffer_conv generic map (no_col_filt => no_col_filt,
no_bits => no_bits
)
port map (-- ENTRADAS -----------------------
xclk_50, xrst_buffer_conv,
xcarga_pre_buffer_conv,
xdataout_preprebuffer(i), -- this is a variable size port (ERROR HERE)
xsel_row_pre_buffer,
xsel_col_pre_buffer,
-- SALIDAS -----------------------
xdataout_pre_buffer_conv(i)
);
end generate;
xind_pre_buffers_conv <= xind_pre_buffers_conv_ctrl(7 downto 0);
xsel_row_pre_buffer <= (others => '0');
xsel_col_pre_buffer <= (others => '0');
end rtl;
The errors thrown by analysis & elaboration stage were:
Error (10381): VHDL Type Mismatch error at Naive_RNC_problem.vhd(228):
indexed name returns a value whose type does not match
"Generic_ARRAY_type", the type of the target expression
Error: Quartus Prime Analysis & Elaboration was unsuccessful. 1 error,
0 warnings
I believe that the signal xdataout_preprebuffer has to be declared as 2d array signal, but I don't know how to accomplish that.
Two changes.
An added type in the package:
library ieee;
use ieee.std_logic_1164.all;
package arrays_package is
type generic_array_type is array (integer range <>) of std_logic_vector;
type generic_array_of_generic_type is -- ADDED type
array (integer range <>) of generic_array_type;
end package arrays_package;
and the signal declaration:
signal xdataout_preprebuffer: generic_array_of_generic_type -- type mark
-- index subtype:
(no_col_filt * no_bits - 1 downto 0)
-- element constraint (generic_array_type):
-- index subtype:
(no_col_filt - 1 downto 0)
-- element index constraint (std_logic_vector):
(no_col_filt * no_bits - 1 downto 0);
After which your code will analyze (elaboration and simulation requires the entities to which all those components are bound during elaboration. With entity declarations and dummy architecture bodies for your components your code elaborates and simulates (showing associations and assignments don't have bounds errors).
The added type uses the -2008 unbounded array definition as does the original (See IEEE Std 1076-2008 5.3.2 Array types, 5.3.2.1 General,
5.3.2.2 Index constraints and discrete ranges, 6.3 Subtype declarations).
What we have is an unbound one-dimensional array type (generic_array_of_generic_type) whose element type (unbounded one-dimensional type generic_array_type) has it's own element unbounded one-dimensional array type (std_logic_vector). The index constraints for the unbounded array types are provided during object declaration.

Passing array pointer in VHDL

I have a VHDL entity that defines a block RAM as an array:
type BYTE_RAM_TYPE is array (0 to 255) of std_logic_vector(0 to 7);
signal ram : BYTE_RAM_TYPE;
I have another VHDL entity that was generated by Vivado HLS tools. It converts a C function with prototype:
void dividedBy2(int array0Input[10], const int numElements);
to VDHL entity:
entity dividedBy2 is
port (
ap_clk : IN STD_LOGIC;
ap_rst : IN STD_LOGIC;
ap_start : IN STD_LOGIC;
ap_done : OUT STD_LOGIC;
ap_idle : OUT STD_LOGIC;
ap_ready : OUT STD_LOGIC;
array0Input_address0 : OUT STD_LOGIC_VECTOR (3 downto 0);
array0Input_ce0 : OUT STD_LOGIC;
array0Input_we0 : OUT STD_LOGIC;
array0Input_d0 : OUT STD_LOGIC_VECTOR (31 downto 0);
array0Input_q0 : IN STD_LOGIC_VECTOR (31 downto 0);
numElements : IN STD_LOGIC_VECTOR (31 downto 0) );
end;
I am not sure how to connect array0Input_q0 so that it uses the address of "signal ram".
I read somewhere that I can use the "access type", i.e.:
type BYTE_RAM_TYPE_ACCESS is access BYTE_RAM_TYPE
However, I would need to use "new" to dynamically allocate BYTE_RAM_TYPE. Is there another way to do this ?
Thank you very much with any help..

combine ports to bram interface

I want to write an IP to store/read data using BRAM.
What I have so far is using the (C)DMA to read memory mapped data out of the RAM and get an AXIS.
Then I created a new source file in VHDL to accept the AXIS on one side which worked like a charm.
On the other side I want to create a BRAM interface but vivado does not combine ports for the BRAM interface.
Located in the "vivado/data/ip/interfaces/bram_v1_0" folder a file "bram_rtl.xml" is present.
I tried to use the ports used in the xml file.
Especially the ports with the "required" tag.
The AXI BRAM Controller is combining them right so I am pretty sure I made a mistake. Using the same naming like the AXI BRAM Controller didn't work either.
My VHDL looks like this:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity AXIS_TO_BRAM is
generic (
addr_size : integer range 1 to 12 := 10
);
Port (
--axistream
tdata : in std_logic_vector(31 downto 0);
tkeep : in std_logic_vector(3 downto 0);
tlast : in std_logic;
tready : out std_logic;
tvalid : in std_logic;
aclk : in std_logic;
--BRAM
en : out std_logic;
dout : in std_logic_vector(31 downto 0);
din : out std_logic_vector(31 downto 0);
we : out std_logic;
addr : out std_logic_vector(addr_size-1 downto 0);
clk : out std_logic;
rst : out std_logic);
end AXIS_TO_BRAM;
architecture Behavioral of AXIS_TO_BRAM is
begin
end Behavioral;
I am using vivado 2016.4 for Zynq 7020 on Linux.
Is there something missing in the VHDL code to get vivado recognize my ports as BRAM interface or is this a bug in this version?
Thank your for any ideas
Here is the complete working and synthesizable VHDL code.
The correct solution (or at least the important part) is given in the comments by Vinay Madapura.
The predefined interfaces can be found in the folder $vivado/$version/data/ip/interfaces.
I hope this code will help other people struggling with similar problems.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity AXIS_TO_BRAM is
generic(
addr_size : integer range 1 to 12 := 10
);
Port(
tdata : in std_logic_vector(31 downto 0);
tkeep : in std_logic_vector(3 downto 0);
tlast : in std_logic;
tready : out std_logic;
tvalid : in std_logic;
aclk : in std_logic;
addra : out std_logic_vector(addr_size-1 downto 0);
clka : out std_logic;
dina : out std_logic_vector(31 downto 0);
douta : in std_logic_vector(31 downto 0);
ena : out std_logic;
rsta : out std_logic;
wea : out std_logic_vector(0 downto 0)
);
end AXIS_TO_BRAM;
architecture Behavioral of AXIS_TO_BRAM is
ATTRIBUTE X_INTERFACE_INFO : string;
ATTRIBUTE X_INTERFACE_INFO OF addra: SIGNAL IS "xilinx.com:interface:bram:1.0 BRAM_PORTA ADDR";
ATTRIBUTE X_INTERFACE_INFO OF clka: SIGNAL IS "xilinx.com:interface:bram:1.0 BRAM_PORTA CLK";
ATTRIBUTE X_INTERFACE_INFO OF dina: SIGNAL IS "xilinx.com:interface:bram:1.0 BRAM_PORTA DIN";
ATTRIBUTE X_INTERFACE_INFO OF douta: SIGNAL IS "xilinx.com:interface:bram:1.0 BRAM_PORTA DOUT";
ATTRIBUTE X_INTERFACE_INFO OF ena: SIGNAL IS "xilinx.com:interface:bram:1.0 BRAM_PORTA EN";
ATTRIBUTE X_INTERFACE_INFO OF rsta: SIGNAL IS "xilinx.com:interface:bram:1.0 BRAM_PORTA RST";
ATTRIBUTE X_INTERFACE_INFO OF wea: SIGNAL IS "xilinx.com:interface:bram:1.0 BRAM_PORTA WE";
begin
end Behavioral;

Problems with .ucf file for my microblaze system in ISE

ok so i added my microblaze from XPS generated a topvhdl file added the ucf file and in my microblaze i have 4 GPIO but i didnt put any of thier pins in the .ucf file although they are present as inout in the topvhdl but i was able to compile the project and gnerate a bitstream.
Now i commented out all the GPIO Pins in top vhdl and connected my microblaze system GPIO with internal signals as shown This also didnt case any trouble and i could generetate a bitstream.
Now what caused the problem is when i added the 7 ports of LED to external pins of my top vhdl file( which has nothing to do with my GPIO) it started telling me errors on the GPIO pins!!! here is the code :
-------------------------------------------------------------------------------
-- system_top.vhd
-------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
entity system_top is
port (
fpga_0_Ethernet_MAC_PHY_tx_clk_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_rx_clk_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_crs_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_dv_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_rx_data_pin : in std_logic_vector(3 downto 0);
fpga_0_Ethernet_MAC_PHY_col_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_rx_er_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_rst_n_pin : out std_logic;
fpga_0_Ethernet_MAC_PHY_tx_en_pin : out std_logic;
fpga_0_Ethernet_MAC_PHY_tx_data_pin : out std_logic_vector(3 downto 0);
fpga_0_Ethernet_MAC_PHY_MDC_pin : out std_logic;
fpga_0_Ethernet_MAC_PHY_MDIO_pin : inout std_logic;
fpga_0_DDR2_SDRAM_DDR2_Clk_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_Clk_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_CE_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_CS_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_ODT_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_RAS_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_CAS_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_WE_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_BankAddr_pin : out std_logic_vector(1 downto 0);
fpga_0_DDR2_SDRAM_DDR2_Addr_pin : out std_logic_vector(12 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DQ_pin : inout std_logic_vector(15 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DM_pin : out std_logic_vector(1 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DQS_pin : inout std_logic_vector(1 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DQS_n_pin : inout std_logic_vector(1 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DQS_Div_O_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_DQS_Div_I_pin : in std_logic;
fpga_0_clk_1_sys_clk_pin : in std_logic;
fpga_0_rst_1_sys_rst_pin : in std_logic;
LED : out std_logic_vector(0 to 7)--when i add this line it causses problems
-- xps_gpio_0_GPIO_IO_pin : inout std_logic_vector(0 to 31);--commented out the lines
-- xps_gpio_1_GPIO_IO_pin : inout std_logic_vector(0 to 31);
-- xps_gpio_2_GPIO_IO_pin : inout std_logic_vector(0 to 31);
-- xps_gpio_3_GPIO_IO_pin : inout std_logic_vector(0 to 31)
);
end system_top;
architecture STRUCTURE of system_top is
component system is
port (
fpga_0_Ethernet_MAC_PHY_tx_clk_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_rx_clk_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_crs_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_dv_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_rx_data_pin : in std_logic_vector(3 downto 0);
fpga_0_Ethernet_MAC_PHY_col_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_rx_er_pin : in std_logic;
fpga_0_Ethernet_MAC_PHY_rst_n_pin : out std_logic;
fpga_0_Ethernet_MAC_PHY_tx_en_pin : out std_logic;
fpga_0_Ethernet_MAC_PHY_tx_data_pin : out std_logic_vector(3 downto 0);
fpga_0_Ethernet_MAC_PHY_MDC_pin : out std_logic;
fpga_0_Ethernet_MAC_PHY_MDIO_pin : inout std_logic;
fpga_0_DDR2_SDRAM_DDR2_Clk_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_Clk_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_CE_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_CS_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_ODT_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_RAS_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_CAS_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_WE_n_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_BankAddr_pin : out std_logic_vector(1 downto 0);
fpga_0_DDR2_SDRAM_DDR2_Addr_pin : out std_logic_vector(12 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DQ_pin : inout std_logic_vector(15 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DM_pin : out std_logic_vector(1 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DQS_pin : inout std_logic_vector(1 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DQS_n_pin : inout std_logic_vector(1 downto 0);
fpga_0_DDR2_SDRAM_DDR2_DQS_Div_O_pin : out std_logic;
fpga_0_DDR2_SDRAM_DDR2_DQS_Div_I_pin : in std_logic;
fpga_0_clk_1_sys_clk_pin : in std_logic;
fpga_0_rst_1_sys_rst_pin : in std_logic;
xps_gpio_0_GPIO_IO_pin : inout std_logic_vector(0 to 31);
xps_gpio_1_GPIO_IO_pin : inout std_logic_vector(0 to 31);
xps_gpio_2_GPIO_IO_pin : inout std_logic_vector(0 to 31);
xps_gpio_3_GPIO_IO_pin : inout std_logic_vector(0 to 31)
);
end component;
attribute BUFFER_TYPE : STRING;
attribute BOX_TYPE : STRING;
attribute BUFFER_TYPE of fpga_0_Ethernet_MAC_PHY_tx_clk_pin : signal is "IBUF";
attribute BUFFER_TYPE of fpga_0_Ethernet_MAC_PHY_rx_clk_pin : signal is "IBUF";
attribute BOX_TYPE of system : component is "user_black_box";
signal xps_gpio_0_GPIO_IO : std_logic_vector(0 to 31);
signal xps_gpio_1_GPIO_IO : std_logic_vector(0 to 31);
signal xps_gpio_2_GPIO_IO : std_logic_vector(0 to 31);
signal xps_gpio_3_GPIO_IO : std_logic_vector(0 to 31);
begin
system_i : system
port map (
fpga_0_Ethernet_MAC_PHY_tx_clk_pin => fpga_0_Ethernet_MAC_PHY_tx_clk_pin,
fpga_0_Ethernet_MAC_PHY_rx_clk_pin => fpga_0_Ethernet_MAC_PHY_rx_clk_pin,
fpga_0_Ethernet_MAC_PHY_crs_pin => fpga_0_Ethernet_MAC_PHY_crs_pin,
fpga_0_Ethernet_MAC_PHY_dv_pin => fpga_0_Ethernet_MAC_PHY_dv_pin,
fpga_0_Ethernet_MAC_PHY_rx_data_pin => fpga_0_Ethernet_MAC_PHY_rx_data_pin,
fpga_0_Ethernet_MAC_PHY_col_pin => fpga_0_Ethernet_MAC_PHY_col_pin,
fpga_0_Ethernet_MAC_PHY_rx_er_pin => fpga_0_Ethernet_MAC_PHY_rx_er_pin,
fpga_0_Ethernet_MAC_PHY_rst_n_pin => fpga_0_Ethernet_MAC_PHY_rst_n_pin,
fpga_0_Ethernet_MAC_PHY_tx_en_pin => fpga_0_Ethernet_MAC_PHY_tx_en_pin,
fpga_0_Ethernet_MAC_PHY_tx_data_pin => fpga_0_Ethernet_MAC_PHY_tx_data_pin,
fpga_0_Ethernet_MAC_PHY_MDC_pin => fpga_0_Ethernet_MAC_PHY_MDC_pin,
fpga_0_Ethernet_MAC_PHY_MDIO_pin => fpga_0_Ethernet_MAC_PHY_MDIO_pin,
fpga_0_DDR2_SDRAM_DDR2_Clk_pin => fpga_0_DDR2_SDRAM_DDR2_Clk_pin,
fpga_0_DDR2_SDRAM_DDR2_Clk_n_pin => fpga_0_DDR2_SDRAM_DDR2_Clk_n_pin,
fpga_0_DDR2_SDRAM_DDR2_CE_pin => fpga_0_DDR2_SDRAM_DDR2_CE_pin,
fpga_0_DDR2_SDRAM_DDR2_CS_n_pin => fpga_0_DDR2_SDRAM_DDR2_CS_n_pin,
fpga_0_DDR2_SDRAM_DDR2_ODT_pin => fpga_0_DDR2_SDRAM_DDR2_ODT_pin,
fpga_0_DDR2_SDRAM_DDR2_RAS_n_pin => fpga_0_DDR2_SDRAM_DDR2_RAS_n_pin,
fpga_0_DDR2_SDRAM_DDR2_CAS_n_pin => fpga_0_DDR2_SDRAM_DDR2_CAS_n_pin,
fpga_0_DDR2_SDRAM_DDR2_WE_n_pin => fpga_0_DDR2_SDRAM_DDR2_WE_n_pin,
fpga_0_DDR2_SDRAM_DDR2_BankAddr_pin => fpga_0_DDR2_SDRAM_DDR2_BankAddr_pin,
fpga_0_DDR2_SDRAM_DDR2_Addr_pin => fpga_0_DDR2_SDRAM_DDR2_Addr_pin,
fpga_0_DDR2_SDRAM_DDR2_DQ_pin => fpga_0_DDR2_SDRAM_DDR2_DQ_pin,
fpga_0_DDR2_SDRAM_DDR2_DM_pin => fpga_0_DDR2_SDRAM_DDR2_DM_pin,
fpga_0_DDR2_SDRAM_DDR2_DQS_pin => fpga_0_DDR2_SDRAM_DDR2_DQS_pin,
fpga_0_DDR2_SDRAM_DDR2_DQS_n_pin => fpga_0_DDR2_SDRAM_DDR2_DQS_n_pin,
fpga_0_DDR2_SDRAM_DDR2_DQS_Div_O_pin => fpga_0_DDR2_SDRAM_DDR2_DQS_Div_O_pin,
fpga_0_DDR2_SDRAM_DDR2_DQS_Div_I_pin => fpga_0_DDR2_SDRAM_DDR2_DQS_Div_I_pin,
fpga_0_clk_1_sys_clk_pin => fpga_0_clk_1_sys_clk_pin,
fpga_0_rst_1_sys_rst_pin => fpga_0_rst_1_sys_rst_pin,
xps_gpio_0_GPIO_IO_pin => xps_gpio_0_GPIO_IO,--connected to a signal not any external pin
xps_gpio_1_GPIO_IO_pin => xps_gpio_1_GPIO_IO,--connected to a signal not any external pin
xps_gpio_2_GPIO_IO_pin => xps_gpio_2_GPIO_IO,--connected to a signal not any external pin
xps_gpio_3_GPIO_IO_pin => xps_gpio_3_GPIO_IO--connected to a signal not any external pin
);
end architecture STRUCTURE;
Error message :
ERROR:Place:866 - Not enough valid sites to place the following IOBs:
IO Standard: Name = LVCMOS25, VREF = NR, VCCO = 2.50, TERM = NONE, DIR = BIDIR, DRIVE_STR = 12
xps_gpio_0_GPIO_IO_pin<0>
xps_gpio_0_GPIO_IO_pin<1>
xps_gpio_0_GPIO_IO_pin<2>
xps_gpio_0_GPIO_IO_pin<3>
xps_gpio_0_GPIO_IO_pin<4>
xps_gpio_0_GPIO_IO_pin<5>
xps_gpio_0_GPIO_IO_pin<6>
xps_gpio_0_GPIO_IO_pin<7>
xps_gpio_0_GPIO_IO_pin<8>
xps_gpio_0_GPIO_IO_pin<9>
xps_gpio_1_GPIO_IO_pin<0>
xps_gpio_1_GPIO_IO_pin<1>
xps_gpio_1_GPIO_IO_pin<2>
xps_gpio_1_GPIO_IO_pin<3>
xps_gpio_1_GPIO_IO_pin<4>
xps_gpio_1_GPIO_IO_pin<5>
xps_gpio_1_GPIO_IO_pin<6>
xps_gpio_1_GPIO_IO_pin<7>
xps_gpio_1_GPIO_IO_pin<8>
xps_gpio_1_GPIO_IO_pin<9>
xps_gpio_1_GPIO_IO_pin<10>
xps_gpio_1_GPIO_IO_pin<11>
xps_gpio_1_GPIO_IO_pin<12>
xps_gpio_1_GPIO_IO_pin<20>
xps_gpio_1_GPIO_IO_pin<13>
xps_gpio_1_GPIO_IO_pin<21>
xps_gpio_1_GPIO_IO_pin<14>
xps_gpio_1_GPIO_IO_pin<22>
xps_gpio_1_GPIO_IO_pin<30>
xps_gpio_1_GPIO_IO_pin<15>
xps_gpio_1_GPIO_IO_pin<23>
xps_gpio_1_GPIO_IO_pin<31>
xps_gpio_1_GPIO_IO_pin<16>
xps_gpio_1_GPIO_IO_pin<24>
xps_gpio_1_GPIO_IO_pin<17>
xps_gpio_1_GPIO_IO_pin<25>
xps_gpio_1_GPIO_IO_pin<18>
xps_gpio_1_GPIO_IO_pin<26>
xps_gpio_1_GPIO_IO_pin<19>
xps_gpio_1_GPIO_IO_pin<27>
xps_gpio_1_GPIO_IO_pin<28>
xps_gpio_1_GPIO_IO_pin<29>
xps_gpio_3_GPIO_IO_pin<10>
xps_gpio_3_GPIO_IO_pin<11>
xps_gpio_3_GPIO_IO_pin<12>
xps_gpio_3_GPIO_IO_pin<20>
xps_gpio_3_GPIO_IO_pin<13>
xps_gpio_3_GPIO_IO_pin<21>
xps_gpio_3_GPIO_IO_pin<14>
xps_gpio_3_GPIO_IO_pin<22>
xps_gpio_3_GPIO_IO_pin<30>
xps_gpio_3_GPIO_IO_pin<15>
xps_gpio_3_GPIO_IO_pin<23>
xps_gpio_3_GPIO_IO_pin<31>
xps_gpio_3_GPIO_IO_pin<16>
xps_gpio_3_GPIO_IO_pin<24>
xps_gpio_3_GPIO_IO_pin<17>
xps_gpio_3_GPIO_IO_pin<25>
xps_gpio_3_GPIO_IO_pin<18>
xps_gpio_3_GPIO_IO_pin<26>
xps_gpio_3_GPIO_IO_pin<19>
xps_gpio_3_GPIO_IO_pin<27>
xps_gpio_3_GPIO_IO_pin<28>
xps_gpio_3_GPIO_IO_pin<29>
xps_gpio_2_GPIO_IO_pin<0>
xps_gpio_2_GPIO_IO_pin<1>
xps_gpio_2_GPIO_IO_pin<2>
xps_gpio_2_GPIO_IO_pin<3>
xps_gpio_2_GPIO_IO_pin<4>
xps_gpio_2_GPIO_IO_pin<5>
xps_gpio_2_GPIO_IO_pin<6>
xps_gpio_2_GPIO_IO_pin<7>
xps_gpio_2_GPIO_IO_pin<8>
xps_gpio_2_GPIO_IO_pin<9>
xps_gpio_0_GPIO_IO_pin<10>
xps_gpio_0_GPIO_IO_pin<11>
xps_gpio_0_GPIO_IO_pin<12>
xps_gpio_0_GPIO_IO_pin<20>
xps_gpio_0_GPIO_IO_pin<13>
xps_gpio_0_GPIO_IO_pin<21>
xps_gpio_0_GPIO_IO_pin<14>
xps_gpio_0_GPIO_IO_pin<22>
xps_gpio_0_GPIO_IO_pin<30>
xps_gpio_0_GPIO_IO_pin<15>
xps_gpio_0_GPIO_IO_pin<23>
xps_gpio_0_GPIO_IO_pin<31>
xps_gpio_0_GPIO_IO_pin<16>
xps_gpio_0_GPIO_IO_pin<24>
xps_gpio_0_GPIO_IO_pin<17>
xps_gpio_0_GPIO_IO_pin<25>
xps_gpio_0_GPIO_IO_pin<18>
xps_gpio_0_GPIO_IO_pin<26>
xps_gpio_0_GPIO_IO_pin<19>
xps_gpio_0_GPIO_IO_pin<27>
xps_gpio_0_GPIO_IO_pin<28>
xps_gpio_0_GPIO_IO_pin<29>
xps_gpio_3_GPIO_IO_pin<0>
xps_gpio_3_GPIO_IO_pin<1>
xps_gpio_3_GPIO_IO_pin<2>
xps_gpio_3_GPIO_IO_pin<3>
xps_gpio_3_GPIO_IO_pin<4>
xps_gpio_3_GPIO_IO_pin<5>
xps_gpio_3_GPIO_IO_pin<6>
xps_gpio_3_GPIO_IO_pin<7>
xps_gpio_3_GPIO_IO_pin<8>
xps_gpio_3_GPIO_IO_pin<9>
xps_gpio_2_GPIO_IO_pin<10>
xps_gpio_2_GPIO_IO_pin<11>
xps_gpio_2_GPIO_IO_pin<12>
xps_gpio_2_GPIO_IO_pin<20>
xps_gpio_2_GPIO_IO_pin<13>
xps_gpio_2_GPIO_IO_pin<21>
xps_gpio_2_GPIO_IO_pin<14>
xps_gpio_2_GPIO_IO_pin<22>
xps_gpio_2_GPIO_IO_pin<30>
xps_gpio_2_GPIO_IO_pin<15>
xps_gpio_2_GPIO_IO_pin<23>
xps_gpio_2_GPIO_IO_pin<31>
xps_gpio_2_GPIO_IO_pin<16>
xps_gpio_2_GPIO_IO_pin<24>
xps_gpio_2_GPIO_IO_pin<17>
xps_gpio_2_GPIO_IO_pin<25>
xps_gpio_2_GPIO_IO_pin<18>
xps_gpio_2_GPIO_IO_pin<26>
xps_gpio_2_GPIO_IO_pin<19>
xps_gpio_2_GPIO_IO_pin<27>
xps_gpio_2_GPIO_IO_pin<28>
xps_gpio_2_GPIO_IO_pin<29>
this is a comment, because i am not yet allowed to make comments :/
I am not sure, if the error is a failure. I would rather say that not not print an error message before is a failure. If you are handling some inputs, you should be always aware of shortcuts. Try to set those as open, so they aren't connected at all to your FPGA.

Resources