When using "Quartus Prime Pro 20.1" software with "Stratix 10" chip, I have a problem with VHDL string type in my projects. At the same time, I don't have this problem when using "Quartus Prime Standard Edition 19.1" with "MAX 10" FPGA. For example, the problem occurs when I compile the following simple VHDL code:
ENTITY e1 IS
s_out: OUT string(1 to 2)
ARCHITECTURE arch1 OF e1 IS
s_out <= "ab";
The compilation process stop suddenly and the error popup window appears with the message: "Sorry! The Quartus Prime software quit unexpectedly". Here is a preview of the report:
Internal Error: Sub-system: QIS, File: /quartus/synth/qis/qis_name_processor.cpp, Line: 779
\s_out.'|' is not a valid node name
Quartus 0xa4d85: QIS_NAME_PROCESSOR_IMPL::create_names + 0x885 (synth_qis)
Quartus 0x3834b: QIS_RTL_STAGE::IMPL::create_instance_name_for_node + 0x8b (synth_qis)
Quartus 0x38b0d: QIS_RTL_STAGE::IMPL::create_names_for_all_nodes_post_extraction + 0x2dd (synth_qis)
Quartus 0x3e9ab: QIS_RTL_STAGE::IMPL::post_process_elaborated_entity + 0xc6b (synth_qis)
Quartus 0x3a631: QIS_RTL_STAGE::IMPL::elaborate + 0x16d1 (synth_qis)
Quartus 0x18e2e: qis_elaborate + 0x26e (synth_qis)
Quartus 0x16442: TclNRRunCallbacks + 0x62 (tcl86)
Quartus 0x17c4d: TclEvalEx + 0x9ed (tcl86)
Quartus 0xa6a8b: Tcl_FSEvalFileEx + 0x22b (tcl86)
Quartus 0xa5136: Tcl_EvalFile + 0x36 (tcl86)
Quartus 0x156f6: qexe_evaluate_tcl_script + 0x4e6 (comp_qexe)
Quartus 0x145e3: qexe_do_tcl + 0x4b3 (comp_qexe)
Quartus 0x1acae: qexe_run_tcl_option + 0x5ee (comp_qexe)
Quartus 0x18c31: QCU::DETAIL::intialise_qhd_and_run_qexe + 0xa1 (comp_qcu)
Quartus 0x2b0e2: qcu_run_tcl_option + 0x2f2 (comp_qcu)
Quartus 0x13cc: qsyn2_tcl_process_default_flow_option + 0x1dc (quartus_syn)
Quartus 0x1a5b0: qexe_run + 0x460 (comp_qexe)
Quartus 0x1b6ea: qexe_standard_main + 0x26a (comp_qexe)
Quartus 0x3039: qsyn2_main + 0x129 (quartus_syn)
Quartus 0x158d8: msg_main_thread + 0x18 (CCL_MSG)
Quartus 0x16f81: msg_thread_wrapper + 0x71 (CCL_MSG)
Quartus 0x21040: mem_thread_wrapper + 0x70 (ccl_mem)
Quartus 0x14e5d: msg_exe_main + 0x20d (CCL_MSG)
Quartus 0x4924: __scrt_common_main_seh + 0x11c (quartus_syn)
Quartus 0x17bd3: BaseThreadInitThunk + 0x13 (KERNEL32)
Quartus 0x6ce70: RtlUserThreadStart + 0x20 (ntdll)
OS name: Windows 10
OS version: 10.0
Quartus Prime Information
Address bits: 64
Edition: Pro Edition
How can I solve this problem?
Thank you in advance for any help.
I received the feedback from the team. This error is due to not all ASCII characters are readable and we do not support that in Quartus. Internal error will occur when user trying to create a name for that. Is there any reasons why do you want to use characters in your design ? Could you use some other data type to achieve the goal?
Thank you for your respons. I am sorry that I did not answer faster, but your reply did not reach my mailbox at all. I just noticed it here.
> This error is due to not all ASCII characters are readable
I am sorry but I don't understand this explanation. It must be some kind of misunderstanding. What does it mean: "not all ASCII characters are readable"? Are we talking about OCR or about VHDL language? An ASCII character is nothing more but one byte (logic vector of eight bits)! You can't read some bits if the type is STRING and you can read them when the type is STD_LOGIC_VECTOR? I am completely lost here. I really don’t get it!
> and we do not support that in Quartus.
Does the Quartus team really say that? The engineers? But it's really not true! I know you do support that in Quartus! How is it possible that they say so? You can check it easily by yourself. The same simple example code I put here before, compiles correctly without any problems in Quartus Prime when you choose the MAX10 chip instead of the Stratix 10. It seems to me that the issue concerns only the "Stratix 10 device support". Did I misunderstand something?
> Internal error will occur when user trying to create a name for that.
I am sorry I don't understand this sentence. English is not my native language. Could you please explain it to me with another words?
> Is there any reasons why do you want to use characters in your design ?
Yes of course. For some applications, it is much better to use STRING type. I am working on projects where I need to analyze incoming text and create another text responses. In such cases, the use of STRING type makes coding much easier.
> Could you use some other data type to achieve the goal?
Yes, I could but it would be a nightmare for me. I already have a lot of code with STRING type in my projects. It would be months of work to modify everything. The situation is this: I just bought a very expensive evaluation kit containing Intel Stratix 10 FPGA and now I can't use my projects on it! I am depressed. :-( This is now the second problem that I have with Stratix 10 in a short time. Please help me with this and don't tell me you do not support something that is standard for the VHDL language.
I conveyed your concern to the team, please see the reply below:
If customer do not want to change their design, the only option for them before we fix the issue, is to turn off state machine inference using the following qsf for the whole design. It may not be desirable though but it will unblock customer from this error.
set_global_assignment -name ENABLE_STATE_MACHINE_INFERENCE OFF
Could you add the above setting in the QSF file?
I understand that the "ENABLE_STATE_MACHINE_INFERENCE OFF"
assignment helped in the simple code attached in this forum post. The Internal Error window does not appear in the simple code but this setting did not help in the real projects.
Could you share the file that you see the error after applying the setting?
Thanks for sharing the code. Could you share the QAR for Max/Cyclone (standard edition) and Stratix 10(Pro edition) as the QAR includes all the quartus settings in the design? If I open a new project and add the HDL file in the design, the quartus settings are not the same as your design.
I received the update from the team, the fix is in the preliminary plan of the software in the future release.
We do not receive any response from you to the previous reply/question that I have provided. This thread will be transitioned 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