- 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

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