If multiple subdevices of the same type, same number of ports and different unique_id in addition to a subdevice of the same type and different number of ports is used, an error occurs. The following pages explain, how this error can be resolved.
The synthesis of the system throws following, or similar, errors in Quartus:
Error (10652): VHDL Assertion Statement at test01_gpio_block_0.vhd(55): assertion is false - report "Supplied generics do not match expected generics" (FAILURE or ERROR)
Error (12152): Can't elaborate user hierarchy "test01_gpio_block_0:gpio_block_1"
Because the ports of the subdevice are identical, Qsys creates only one component (block) and uses multiple instances of this component. But each subdevice has a unique id, which is why each subdevice needs a different component. Qsys generates an *.vhd file for each component with a name like test01_gpio_block_0.vhd.
Create the missing components manually and integrate them in the generated system. An existing component can be copied and modified.
1.) Generate the system in Qsys
Generate the system in Qsys
2.) Copy and modify the components
Go to the folder synthesis, where Qsys created the files for the system
For each group of subsystem with identical ports there is one *.vhd-file. For Example test01_gpio_block_0.vhd. In the following text this file(s) is/are called template.
For each member of such a group create a copy of the template(s) and renumber them accordingly. For Example: test01_gpio_block_0.vhd is the original and test01_gpio_block_1.vhd is the copy
In each copy 7 lines has to be modified:
The name of the entity at the beginning of the entity declaration
The unique_id (in this example it is changed to ‘2’)