- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am trying to implement a custom component consisting of a .VHD and a HW.TCL file. My target is to dynamically modify the width of an input port when a parameter of the component changes. The application is pretty simple: The parameter g_desc_size specifies the size of an array in the component and g_adr_width is calculated depending on that value.
The port definitions in VHDL look like this:
generic (
g_desc_size : integer := 256 ;
g_adr_width : integer := 8 ;
..
);
port (
..
asi_data_channel_i : in std_logic_vector(g_adr_width-1 downto 0);
..
);
The paramter definition in the TCL file look mlike this:
add_parameter g_desc_size integer
set_parameter_property g_desc_size DEFAULT_VALUE 256
set_parameter_property g_desc_size ALLOWED_RANGES 2:256
set_parameter_property g_desc_size AFFECTS_ELABORATION true
set_parameter_property g_desc_size AFFECTS_GENERATION true
add_parameter g_adr_width integer
set_parameter_property g_adr_width DEFAULT_VALUE 8
set_parameter_property g_adr_width ALLOWED_RANGES 1:8
set_parameter_property g_adr_width DERIVED true
set_parameter_property g_adr_width ENABLED false
set_parameter_property g_adr_width AFFECTS_ELABORATION true
set_parameter_property g_adr_width AFFECTS_GENERATION true
I have also added a elaboration callback function, for the calculation of g_adr_width, that looks like this:
proc elaboration_callback {} {
set_parameter_value g_adr_width [ expr ceil(log([get_parameter_value g_desc_size])/log(2)) ]
set_port_property asi_data_channel_i WIDTH_EXPR [ get_parameter_value g_adr_width ]
}
The elaboration callback is enabled with set_module_property ELABORATION_CALLBACK elaboration_callback
Now when I try to compile the design with the parameter g_desc_size set to 4 in Platform Designer (so 2 is the correct value for the port width) an error messages comes up that says:
Error (12005): Actual width (2) of port "asi_data_channel_i" on instance "<instance_name>" is not compatible with the formal port width (8) declared by the instantiated entity
When I try to compile the design without a default value for g_adr_width in the VHD file, Quartus tells me that the generic needs a default or actual value.
Within the Platform Designer there doesn't seem to be a problem; the port width of the above mentioned signal changes as intended and there are no problems when generating the HDL code.
I have looked through the files that were generated with the Generate HDL in Platform Designer and I don't really see a problem: The component decleration in the PKG.VHD file has the correct port width of 2.
What is the solution to this? I am sure that it'll be pretty obious for someone that has already worked with custom components, but this is my first time implementing one.
Do I need to add a generation callback function too?
Best Regards,
Florian
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
thank you for the answer! At first the behavior didn't change with the strings but then I added the lines
set_parameter_property <parameter_name> HDL_PARAMETER true
for all the parameters. Now the Fitter doesn't output any error messages no more.
Best Regards,
Florian
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
According to the Platform Designer user guide, the value for WIDTH_EXPR should be a string representing the name of the parameter (page 701) you want to use (for you "g_adr_width"). You can see an example of this on page 100:
Also, if this doesn't fix the issue, can you show the other commands in your _hw.tcl for the port in question, asi_data_channel_i?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
thank you for the answer! At first the behavior didn't change with the strings but then I added the lines
set_parameter_property <parameter_name> HDL_PARAMETER true
for all the parameters. Now the Fitter doesn't output any error messages no more.
Best Regards,
Florian
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I’m glad that your question has been addressed, I now transition this thread to community support. If you have a new question, feel free to open a new thread to get the support from Intel experts. Otherwise, the community users will continue to help you on this thread. Thank you.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page