Forum Discussion
KhaiChein_Y_Intel
Regular Contributor
5 years agoHi,
Do you have any updates?
Thanks.
Best regards,
KhaiY
JDlug
New Contributor
5 years agoHi,
Motivated by your message here and your willingness to help, I spent the
last night preparing a code showing the problem. I enclose it at the end
of this message. The code doesn't make any sense, but it's rather
compliant with the VHDL standard and compiles correctly for MAX10 and
Cyclone_IV FPGA chips. But when I choose Stratix 10 (and also Cyclone
10, which I discovered yesterday) Quartus Prime shows errors.
if there is:
set_global_assignment -name ENABLE_STATE_MACHINE_INFERENCE ON
I get exception error:
"Sorry! The Quartus Prime software quit unexpectedly."
if there is:
set_global_assignment -name ENABLE_STATE_MACHINE_INFERENCE OFF
I get processing errors:
Error(13076): The node "instance_1|str_1[1][0]" has multiple drivers.
Error(20073): "constant GND" is one of the multiple drivers.
Error(20073): "non-tri-state driver "str_1[1][0]"" is one of the
multiple drivers.
Error(13076): The node "instance_1|str_1[1][1]" has multiple drivers.
Error(20073): "constant GND" is one of the multiple drivers.
Error(20073): "non-tri-state driver "str_1[1][1]"" is one of the
multiple drivers.
Error(13076): The node "instance_1|str_1[1][2]" has multiple drivers.
Error(20073): "constant GND" is one of the multiple drivers.
Error(20073): "non-tri-state driver "str_1[1][2]"" is one of the
multiple drivers.
Error(13076): The node "instance_1|str_1[1][3]" has multiple drivers.
Error(20073): "constant GND" is one of the multiple drivers.
Error(20073): "non-tri-state driver "str_1[1][3]"" is one of the
multiple drivers.
Error: Failed to synthesize partition
As you can see, the errors say that "str_1" has multiple drivers but
there is only one explicit place where "str_1" is driven. The command:
str_1:="ABCD";.
These errors disappear when you do a tiny change in the code. For
example, they dissappear when you comment the line "data<=vec_1(3 downto
0);". It makes no sense to me because this line does nothing with
"str_1"! The errors also disappear when you change:
if s2/=s1 then s2:=s1; str_1:="ABCD"; end if;
to only:
str_1:="ABCD";
which is completely strange to me, but I understand that the driver here
becomes stronger then.
Of course, the errors also disappear after changing the direction
"inout" to "in" for "str_1" in entity "e2", but in my operative code I
need bidirectional "str_1", and with this "inout" everything works fine
for MAX10 and Cyclone_IV.
And why did Quartus Prime put the GND driver in the "e2" entity, if it
leads to an obvious drivers conflict?
I hope that below code will help you find the cause and then create a
fix. Here is the code with two entities:
###########################################################