An example of an unconstrained type is std_logic_vector. An array type definition can be unconstrained, i.e.

tuser Declaration of arrays with unconstrained elements (as introduced in VHDL-2008) is supported but instantiating the declared type with an actual size crashes the compiler. Signals and Variables can be declared as an array type. Proper use of newlines (and Sigasi Studio’s formatting – try Records in VHDL: Initialization and Constraining unconstrained fields-- Declare a constant: declare the value of each field-- Not recommended: positional binding for record constants-- initialize recarr1(1) from the existing constant-- initialize the rest of the array with the value of zero_rec1-- others: initialize all bits of the std_logic_vector-- The length of the fields is undeclared at this point Arrays can be synthesized. tuser Although it's not a big deal to define top-level like this.. The range must be declared when an instance of the type is created. Arrays are a collection of a number of values of a single data type and are represented as a new data type in VHDL. tuser I am experimenting to synthesise some VHDL 2008 code in Vivado 2016.3 (the same situation is in 2016.4)The idea is to be able to have unconstrained array in record and at the same time have unconstrained array of these records.And finally test_entity_top.vhd which basically constraints the sizes for synthesis:This all nicely compiles in ModelSim. Arrays can be initialized to a default value.

Even a record containing an unconstrained array of records is possible, VHDL array declaration.

VHDL 2008 - unconstrained array of record containing unconstrained array) Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type. The VHDL Arrays can be may both one-dimensional (with one index) or multidimensional (with two or more indices). Array type definitions can be unconstrained (undefined length) Arrays of arrays are allowed (e.g. Constrained; Urnconstrained; In the constrained array, he bounds for an index are established when the array type is defined. an array of std_logic_vector) Two-Dimensional (2D) arrays are allowed. tuser String, bit_vector and std_logic_vector are defined in this way.

So using generic packages would be quite inelegant (especially this register is nice example when in one file you have the bus with different sizes of data bus)So far I have used one dimensional slv without records with manual indexing using functions/procedures, but that is quite messy to maintain...I have discussed this over Xilinx SR and it turned out that I have forgot to enable VHDL 2008 for all files, now it works.What is interesting is, that it actually synthesise if I do following:So that means that the array of records with unconstrained array is actually supported, but the direct constraint syntax is not.Any ideas how to define it less elaboratively? the index range has to be specified in the signal declaration then. type INT_ARRAY is array (integer range <>) of integer; variable INT_TABLE: INT_ARRAY (0 to 9); variable LOC_BUS : std_ulogic_vector (7 …

tuser The length of the vector gets declared when the type is used, and is not a property of the type itself.