- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi I followed the instructions in online documents and youtube videos on how to add run_system_script for modifying internal components Parameters of a Sub-System Package (QCP) but so far I am not able to successfully modify it. I m hitting two main issues
1. "No Parameter Found" error when loading the QCP in QSYS. I am using internal parameter name but the system is not able to find it
2. load_component and save_component commands in the script is making the component fail to load in qsys.
Any help will be appreciated
Here is the subsystem package script
package require -exact qsys 25.1
set_package_property NAME "rpss_ssd"
set_package_property DISPLAY_NAME "rpss_ssd"
set_package_property VERSION "1.5"
set_package_property GROUP ""
set_package_property DESCRIPTION ""
set_package_property ELABORATION_CALLBACK elaboration_callback
set_package_property EXTRACTION_CALLBACK extraction_callback
set_package_property UNLOCKABLE true
add_fileset synth_fileset QUARTUS_SYNTH fileset_callback "Quartus Synthesis Fileset"
add_fileset sim_verilog_fileset SIM_VERILOG fileset_callback "Simulation Verilog Fileset"
proc elaboration_callback {} {
enable_all_instances
run_system_script TEXT {
package require -exact qsys 25.1
set args $__run_system_script_args_list__
set args_len [llength $args]
for {set i 0} {$i < $args_len} {incr i} {
set param [lindex $args $i]
set val [lindex $args [incr i]]
send_message "Info" "val: $val"
load_component rpss_0
set_component_parameter_value QUEUE_MEM_BASE_ADDRESS $val
save_component
}
auto_assign_system_base_addresses
sync_sysinfo_parameters
save_system
} [ list ADDR 0x10000 ]
# disable_instance clock_in
# disable_instance reset_in
# disable_instance rpss_0
# disable_instance rtile_dummy_0
}
proc extraction_callback {} {
extract_modules
}
proc fileset_callback { output_name } {
generate_all_instances
}
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
BTW, This is a custom IP component which has verilog style PARAMETERS in the source code
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Can you clarify the structure here? You've created a package named rpss_ssd.qcp. What components are inside this package and how are they connected? Show the New Packaged Subsystem dialog box if you can (right-click the .qcp in the IP catalog and choose to Edit it).
Or maybe it's as simple as QUEUE_MEM_BASE_ADDR vs. QUEUE_MEM_BASE_ADDRESS.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi sstrell,
Thanks for looking into my issue and prompt response. I tried both QUEUE_MEM_BASE_ADDR vs. QUEUE_MEM_BASE_ADDRESS, but it didn't help. QUEUE_MEM_BASE_ADDRESS is the internal name, and I should use this according to the document. I attached a screenshot of the RSS_SSD QCP internals. rpss_0 is a custom IP (RTL written by me) with HDL parameters. They are configured and exported correctly, as shown in the _hw.tcl. I tried writing a similar script to existing Intel IPs in the IP catalog, and that worked. I am wondering if I need to do anything special in my custom component to configure the parameters in the qcp system.
add_parameter QUEUE_MEM_BASE_ADDRESS STD_LOGIC_VECTOR 268435456 ""
set_parameter_property QUEUE_MEM_BASE_ADDRESS DEFAULT_VALUE 268435456
set_parameter_property QUEUE_MEM_BASE_ADDRESS DISPLAY_NAME QUEUE_MEM_BASE_ADDR
set_parameter_property QUEUE_MEM_BASE_ADDRESS WIDTH 32
set_parameter_property QUEUE_MEM_BASE_ADDRESS UNITS None
set_parameter_property QUEUE_MEM_BASE_ADDRESS DESCRIPTION ""
set_parameter_property QUEUE_MEM_BASE_ADDRESS AFFECTS_GENERATION false
set_parameter_property QUEUE_MEM_BASE_ADDRESS HDL_PARAMETER true
set_parameter_property QUEUE_MEM_BASE_ADDRESS TRANSFORM_PARAMETER false
set_parameter_property QUEUE_MEM_BASE_ADDRESS EXPORT true
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Did you include the _hw.tcl file under Additional Files when creating the .qcp? All files relating to custom IP must be included in the package.
FYI, windows key + shift + S for a screenshot will be much easier (and clearer) than taking screenshots with your phone.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In my .qcp ss.tcl script, I included string matching for the name of the parameter. So yours would look like this:
if {[string match $param "QUEUE_MEM_BASE_ADDRESS"]}{
load_component rpss_0
set_component_parameter_value QUEUE_MEM_BASE_ADDRESS $val
save_component
}
}
I don't know if this will do anything for you. I put this in because I only wanted a single parameter to appear in the parameter editor for when the .qcp file was added to the system.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, just added the if condition, I am still seeing the original error
Error: set_component_parameter_value QUEUE_MEM_BASE_ADDRESS 0x1F000: No parameter named QUEUE_MEM_BASE_ADDRESS in rpss_0.
My qcp script
proc elaboration_callback {} {
enable_all_instances
run_system_script TEXT {
package require -exact qsys 25.1
set args $__run_system_script_args_list__
set args_len [llength $args]
for {set i 0} {$i < $args_len} {incr i} {
set param [lindex $args $i]
set val [lindex $args [incr i]]
send_message "Info" "val: $val"
if {[string match $param "QUEUE_MEM_BASE_ADDRESS"]} {
load_component rpss_0
set_component_parameter_value QUEUE_MEM_BASE_ADDRESS $val
save_component
}
}
} [ list QUEUE_MEM_BASE_ADDRESS 0x1F000 ]
# disable_instance clock_in
# disable_instance reset_in
# disable_instance rpss_0
# disable_instance rtile_dummy_0
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am wondering about the RPSS custom IP. When it is getting instantiated, I don't see Quartus instantiating with the HDL parameters. Even though it detected the parameters in the create component analysis stage and has all the parameters properly listed in rpss_hw.tcl. So I am wondering if there are any other settings that I am missing for the parameters of the custom IP that need to be set for the detection of parameters correctly by Quartus/Platform Designer.
Instantiation of RPSS does not have parameters
set_parameter_property QUEUE_MEM_BASE_ADDRESS DEFAULT_VALUE "64'h0001_0000_0000_0000"
set_parameter_property QUEUE_MEM_BASE_ADDRESS DISPLAY_NAME QUEUE_MEM_BASE_ADDRESS
set_parameter_property QUEUE_MEM_BASE_ADDRESS UNITS None
set_parameter_property QUEUE_MEM_BASE_ADDRESS AFFECTS_GENERATION false
set_parameter_property QUEUE_MEM_BASE_ADDRESS HDL_PARAMETER true
set_parameter_property QUEUE_MEM_BASE_ADDRESS TRANSFORM_PARAMETER false
set_parameter_property QUEUE_MEM_BASE_ADDRESS EXPORT true
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
If you locate the .v file in the synth folder, the instantiation showing the parameters right?
Thanks,
Regards,
Sheng
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Thanks for your response. I am still not able to solve this problem and would really appreciate the community to help me resolve this issue
This is my actual RTL module
module rp_ss
#(
parameter RX_AFIFO_DEPTH = 512,
parameter RCB_64B_128B = 0, //0:64B 1:128B
parameter MAX_PYLD_SIZE = 13'd512,
// Two-channel memory architecture
parameter QUEUE_MEM_BASE_ADDRESS = 64'h0001_0000_0000_0000,
parameter QUEUE_MEM_SIZE = 64'h0000_1000_0000_0000, // 256GB
parameter DATA_MEM_BASE_ADDRESS = 64'h0004_0000_0000_0000,
parameter DATA_MEM_SIZE = 64'h0003_0000_0000_0000 // 768GB
)
This is the generated code
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Seem like the generated code already has parameter QUEUE_MEM_BASE_ADDRESS?
Thanks,
Regards,
Sheng
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am not following your question. The generated code supposed to have the parameters or not?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
The generated code should have parameters. Seems like your generated code got the parameters as well.
Thanks,
Regards,
Sheng
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok. Any idea why the QCP instantiation is failing then?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
When you generated the .qcp file, there's one auto generated code right?
Is that the generated code that you share?
Possible provide the .qcp file for testing? You may send privately to my email.
Thanks,
Regards,
Sheng

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