- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm getting ready to release an FFT core for Agilex 7. I've been compiling with Quartus 23.2 to get resources estimates, which has been working fine. However, I recently tried a compile with Quartus 24.1 and I get an internal error.
The error is this:
Internal Error: Sub-system: QHD, File: /quartus/comp/qhd/qhd_design.cpp, Line: 731
!is_partition(iname)
Stack Trace:
Quartus 0x13f4db: QHD_DESIGN_IMPL::create_partition_impl(HDB_INSTANCE_NAME*, QDB_VLNV const&, bool) + 0xc9 (comp_qhd)
Quartus 0x13fff6: QHD_DESIGN_IMPL::create_partition(HDB_INSTANCE_NAME*, QDB_VLNV const&) + 0xe (comp_qhd)
Quartus 0x137a4b: QHD_DESIGN_IMPL::create_top_partition() + 0x81 (comp_qhd)
Quartus 0x142fbb: QHD_DESIGN_IMPL::load_flat_block(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) + 0x98d (comp_qhd)
Quartus 0x56d86: FLNG::FLNG_TASK_MANAGER::load_previous_digest(char const*, QTL_HASH<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, QTL_OPS<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, void> >&) + 0x6a0 (da_flng)
Quartus 0x89961: FLNG::FLNG_TASK_MANAGER::has_task_assignments_changed(FLNG::FLNG_FLOW*, std::deque<FLNG::FLNG_TASK*, std::allocator<FLNG::FLNG_TASK*> > const&, FLNG::FLNG_TASK*, ACF_SMART_ACTION_DIGEST&) + 0x9cf (da_flng)
Quartus 0x8b3cd: FLNG::FLNG_TASK_MANAGER::get_tasks_invalidated_by_change(FLNG::FLNG_FLOW*, bool, bool) + 0x919 (da_flng)
Quartus 0x93334: FLNG::FLNG_TASK_MANAGER::invalidate_tasks_impacted_by_assignment_changes(FLNG::FLNG_FLOW*, bool) + 0x74 (da_flng)
Quartus 0x93a5f: FLNG::FLNG_TASK_MANAGER::bind_flow(FLNG::FLNG_FLOW*, QString const&, QString const&, bool, bool, bool, bool, bool) + 0x3e1 (da_flng)
Quartus 0x94263: FLNG::FLNG_TASK_MANAGER::bind_flow(FLNG::FLNG_OBJECT_ID const&, QString const&, QString const&, bool, bool, bool, bool, bool) + 0x8f (da_flng)
Quartus 0xe5932: FLNG::FLNG_SERVICE::bind_flow(FLNG::FLNG_OBJECT_ID const&, QString const&, QString const&, bool) + 0x4a (da_flng)
Quartus 0xe78c9: flng_dyn_run_flow + 0xa0b (da_flng)
Quartus 0x5aa58: flow_run_flow_engine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) + 0xbe (sys_flow)
Quartus 0x62c12: flow_execute_flow + 0x1230 (sys_flow)
Quartus 0x4753b: TclInvokeStringCommand + 0x7b (tcl8.6)
Quartus 0x4bb47: TclNRRunCallbacks + 0x67 (tcl8.6)
Quartus 0x4cf29: TclEvalEx + 0x599 (tcl8.6)
Quartus 0xf40fe: Tcl_FSEvalFileEx + 0x21e (tcl8.6)
Quartus 0xf4246: Tcl_EvalFile + 0x26 (tcl8.6)
Quartus 0x2708e: qexe_evaluate_tcl_script(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) + 0x388 (comp_qexe)
Quartus 0x29dec: qexe_do_tcl(QEXE_FRAMEWORK*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) + 0x71b (comp_qexe)
Quartus 0x2f962: qexe_standard_main(QEXE_FRAMEWORK*, QEXE_OPTION_DEFINITION const**, int, char const**) + 0x5a5 (comp_qexe)
Quartus 0x4041ae: qsh_main(int, char const**) + 0x5c (quartus_sh)
Quartus 0x43f80: msg_main_thread(void*) + 0x10 (ccl_msg)
Quartus 0x44a00: msg_thread_wrapper(void* (*)(void*), void*) + 0x8c (ccl_msg)
Quartus 0x1fcfd: mem_thread_wrapper(void* (*)(void*), void*) + 0x9d (ccl_mem)
Quartus 0xe168: err_thread_wrapper(void* (*)(void*), void*) + 0x1e (ccl_err)
Quartus 0x44929: msg_exe_main(int, char const**, int (*)(int, char const**)) + 0xd3 (ccl_msg)
Quartus 0x4041f0: main + 0x26 (quartus_sh)
System 0x29d90: (c)
System 0x29e40: __libc_start_main + 0x80 (c)
Quartus 0x403d09: _start + 0x29 (quartus_sh)
End-trace
The TCL to compile is rather simple:
project_open synthesize_forward
load_package flow
execute_module -tool map
set name_ids [get_names -filter * -node_type pin]
foreach_in_collection name_id $name_ids {
set pin_name [get_name_info -info full_path $name_id]
if { $pin_name == "clk" } {
post_message "No VIRTUAL_PIN assignment to $pin_name"
} else {
post_message "Making VIRTUAL_PIN assignment to $pin_name"
set_instance_assignment -to $pin_name -name VIRTUAL_PIN ON
}
}
export_assignments
execute_flow -compile
The qsf file doesn't have anything I would consider suspicious:
#set_global_assignment -name FAMILY ""
set_global_assignment -name DEVICE AGIC040R39A2I3VC
set_global_assignment -name TOP_LEVEL_ENTITY BxBFFT_12_6_complex_BxBIF
set_global_assignment -name SDC_FILE synthesize_forward.sdc
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY reports
set_global_assignment -name MIN_CORE_JUNCTION_TEMP "-40"
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 100
set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256
set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim (Verilog)"
#set_global_assignment -name EDA_SIMULATION_TOOL "Questa Intel FPGA (Verilog)"
set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_simulation
set_global_assignment -name NUM_PARALLEL_PROCESSORS 4
set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005
set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF
set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
set_global_assignment -name VERILOG_FILE BxBFFT_source_verilog/BxBFFT_12_6_complex.sv
set_global_assignment -name VERILOG_MACRO "FORWARD=1"
set_global_assignment -name VERILOG_MACRO "FULL_FORWARD_FLOW_CONTROL=0"
set_global_assignment -name VERILOG_MACRO "INPUT_ORDER=0"
set_global_assignment -name VERILOG_MACRO "OUTPUT_ORDER=2"
set_global_assignment -name VERILOG_MACRO "REAL_WIDTH=18"
set_global_assignment -name VERILOG_MACRO "GAIN_CONTROL_STRATEGY=10"
set_global_assignment -name VERILOG_MACRO "__SYNTHESIS__"
set_global_assignment -name VERILOG_MACRO "SYNTHESIS"
set_global_assignment -name VERILOG_MACRO "ALTERA_SYNTHESIS"
The sdc file is quite basic:
set_time_format -unit ns -decimal_places 3
create_clock -name clk -period 1.429 [get_ports clk]
The qpf file is one line:
PROJECT_REVISION = "synthesize_forward.qsf"
I don't believe this has any relation to the System Verilog code itself, since I get the same error no matter what code I try to compile. I compile with
quartus_sh -t synthesize_forward.tcl
Any help is greatly appreciated.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
To hopefully facilitate finding a solution or workaround, I've created a simple test case (attached). This design has only a single register, but fails to compile under Quartus 24.1. It successfully compiles under Quartus 23.2. I'm not trying to compile a full design here; I'm just trying to verify that Quartus understands the verilog, compiles it into a working netlist, and that I can get resource estimates. Hence virtual pins. All files are included, as well as all Quartus outputs for both 23.2 and 24.1. The README.TXT file says more.
If anyone can see how to achieve these goals that works in both versions of Quartus, I'd appreciate it. Also, why do I have to change the DEVICE name between Quartus 23.2 and 24.1? Isn't it physically the same chip?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I had reported the problem to the internal engineering team.
Thanks,
Regards,
Sheng
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I had done testing that there's no problem with GUI compilation. May be can stick with the GUI compilation as workaround in the mean time.
Thanks,
Sheng
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
This is known issue before and had been resolved in future version 24.2 onwards.
Thanks,
Regards,
Sheng
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm glad to hear it has been solved for future versions. Thank you for digging into it and finding that out.
Also, it's interesting information that it works in the GUI. Doesn't that mean there should be a workaround from the command line, doing the equivalent of whatever the GUI is doing?

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