Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
The Intel sign-in experience is changing in February to support enhanced security controls. If you sign in, click here for more information.
15801 Discussions

Qsys disable interface based on parameter

Honored Contributor II


I have a VHDL component packed as Qsys Component Editor and I need to disable interface based on parameter set by user. 


I have used naive approach and have this in TCL: 

add_parameter C_MDIO BOOLEAN false set_parameter_property C_MDIO DEFAULT_VALUE false set_parameter_property C_MDIO DISPLAY_NAME C_MDIO set_parameter_property C_MDIO TYPE BOOLEAN set_parameter_property C_MDIO UNITS None set_parameter_property C_MDIO DESCRIPTION "Enables MDIO Controller" set_parameter_property C_MDIO HDL_PARAMETER true ... # # connection point MDIO_MASTER# add_interface MDIO_MASTER conduit end set_interface_property MDIO_MASTER associatedClock MDIO_CLK set_interface_property MDIO_MASTER associatedReset "" set_interface_property MDIO_MASTER ENABLED set_interface_property MDIO_MASTER EXPORT_OF "" set_interface_property MDIO_MASTER PORT_NAME_MAP "" set_interface_property MDIO_MASTER CMSIS_SVD_VARIABLES "" set_interface_property MDIO_MASTER SVD_ADDRESS_GROUP "" add_interface_port MDIO_MASTER MDIO_IN mdioin Input 1 add_interface_port MDIO_MASTER MDIO_OUT mdioout Output 1 add_interface_port MDIO_MASTER MDIO_T mdiot Output 1  


This causes following error: 

Error: get_parameter_value not allowed during GLOBAL while executing "get_parameter_value C_MDIO " invoked from within "set_interface_property MDIO_MASTER ENABLED "  


I kinda get why it isn't allowed (so that's not my question). 


What I'd like to know is how should I do it when I want to enable/disable certain interfaces based on user's choice in component configuration in Qsys.. 


Thanks for any help :)
0 Kudos
1 Reply
Honored Contributor II

OK, I've solved it. 


You need to create an elaboration callback and change the property there: 


set_module_property ELABORATION_CALLBACK elaborate proc elaborate {} { set_interface_property MDIO_MASTER ENABLED }