with VHDL 1993, you cannot leave all dimensions unconstrained, only the outer most one. eg:
type 2d_array_t is array(integer rage <>) of std_logic_vector(31 downto 0);
but with VHDL 2008, you can do this:
type 2d_array_t is array(integer rage <>) of std_logic_vector;
signal my_input : 2d_array_t(15 downto 0, 31 downto );
but you will need a compiler with 2008 support. otherwise you'll have to put the generics as constants in a package to define the type.
- - - Updated - - -
with VHDL 1993, you cannot leave all dimensions unconstrained, only the outer most one. eg:
type 2d_array_t is array(integer rage <>) of std_logic_vector(31 downto 0);
but with VHDL 2008, you can do this:
type 2d_array_t is array(integer rage <>) of std_logic_vector;
signal my_input : 2d_array_t(15 downto 0, 31 downto );
but you will need a compiler with 2008 support. otherwise you'll have to put the generics as constants in a package to define the type.