Intel® Quartus® Prime Pro Edition User Guide: Platform Designer
A newer version of this document is available. Customers should click here to go to the newest version.
Visible to Intel only — GUID: cbn1505151723396
Ixiasoft
Visible to Intel only — GUID: cbn1505151723396
Ixiasoft
4.3.5. Defining HDL Parameters in _hw.tcl
- To define an alterable HDL parameter, you must declare the following two attributes for the parameter:
- set_parameter_property <parameter_name> HDL_PARAMETER true
- set_parameter_property <parameter_name> AFFECTS_GENERATION false
- To have parameterized ports created in the instantiation wrapper, you can either set the width expression when adding a port to an interface, or set the width expression in the port property in _hw.tcl:
-
To set the width expression when adding a port:
add_interface_port <interface> <port> <signal_type> <direction> <width_expression>
-
To set the width expression in the port property:
set_port_property <port> WIDTH_EXPR <width_expression>
-
- To create and generate the IP component in Platform Designer editor, click the Open System > IP Variant tab, specify the new IP variant name in the IP Variant field and choose the _hw.tcl file that defines user alterable HDL parameters in the Component type field.
- Click Generate HDL to generate the IP core. Platform Designer generates a parameterized HDL module for you directly.
To instantiate the IP component in your HDL file, click Generate > Show Instantiation Template in the Platform Designer editor to display an instantiation template in Verilog or VHDL. Now you can instantiate the IP core in your top-level design HDL file with the template code.

The following sample contains _hw.tcl to set exportable width values:
Sample _hw.tcl Component with User Alterable Expressions
package require -exact qsys 17.1
set_module_property NAME demo
set_module_property DISPLAY_NAME "Demo"
set_module_property ELABORATION_CALLBACK elaborate
# add exportable hdl parameter RECONFIG_DATA_WIDTH
add_parameter RECONFIG_DATA_WIDTH INTEGER 48
set_parameter_property RECONFIG_DATA_WIDTH AFFECTS_GENERATION false
set_parameter_property RECONFIG_DATA_WIDTH HDL_PARAMETER true
# add exportable hdl parameter RECONFIG_ADDR_WIDTH
add_parameter RECONFIG_ADDR_WIDTH INTEGER 32
set_parameter_property RECONFIG_ADDR_WIDTH AFFECTS_GENERATION false
set_parameter_property RECONFIG_ADDR_WIDTH HDL_PARAMETER true
# add non-exportable hdl parameter
add_parameter l_addr INTEGER 32
set_parameter l_addr HDL_PARAMETER false
# add interface
add_interface s0 conduit end
proc elaborate {} {
add_interface_port s0 rdata readdata output "reconfig_data_width*2 + l_addr"
add_interface_port s0 raddr readaddress output [get_parameter_value RECONFIG_ADDR_WIDTH]
set_port_property raddr WIDTH_EXPR "RECONFIG_ADDR_WIDTH"
}