Forum Discussion

Bala-Mookkiah's avatar
Bala-Mookkiah
Icon for New Contributor rankNew Contributor
4 months ago

Modifying internal components Parameters in a Sub-System Package (QCP)

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

}

16 Replies

  • sstrell's avatar
    sstrell
    Icon for Super Contributor rankSuper Contributor

    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.

  • 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

  • sstrell's avatar
    sstrell
    Icon for Super Contributor rankSuper Contributor

    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.

  • BTW, This is a custom IP component which has verilog style PARAMETERS in the source code