Ken Morrow
2004-01-21 22:51:42 UTC
Hi,
I have recently had lots of incorrectly synthesised logic with the
synthesiser I am using.
My latest design occupied approx 20% of a "6 million gate" FPGA, and had a
total of 5
incorrectly synthesised parts (which took some finding).
Can anyone recommend any synthesisers which do not suffer from this sort of
problem?
The synth takes approx 1 hour to synth this (much quicker than most of my
"large" designs), and timing far
exceeds the requirements as the clock frequency is low.
If anyone is interested, the sort of errors I was getting were:-
A connection between 2 components was simply not made. An input to the
second component was hardwired to '0'.
Tried the very latest version of the same synth and the problem went away.
The following problems were seen in the latest version:-
OUT_DATA <= IN_DATA & "0";
synthesised to
OUT_DATA <= "0" & IN_DATA;
put this in a clocked process and it synthesised correctly.
OUT_DATA <= 2**IN_DATA;
had OUT_DATA(0) hardwired to '1'.
replaced with a case statement and it synthesised correctly
if X = -1 then
OUT_DATA <= IN_DATA;
elsif X= 1 then
OUT_DATA <= 0 - IN_DATA;
elsif X=0 then
OUT_DATA <= 0;
else
OUT_DATA <= 0 - IN_DATA;
end if;
had OUT_DATA=0 when X=-1
put calculation of 0 - IN_DATA in a separate clocked process, and it
synthesised correctly.
An inferred ROM which synthesised correctly in an earlier version of the
synthesiser, now infers a ROM filled with zeros.
I worked around this by adding a reset to cause the ROM function to be built
from logic. This greatly increased
the size, but this is not a problem for the particular design.
I tried synthing the rogue pieces of code standalone, and they were synthed
correctly (apart from the ROM).
Thanks,
Ken,
Morrow Electronics Limited,
Milton Keynes,
UK.
***@morro.co.uk without the m after my name otherwise it will not be
delivered.
I have recently had lots of incorrectly synthesised logic with the
synthesiser I am using.
My latest design occupied approx 20% of a "6 million gate" FPGA, and had a
total of 5
incorrectly synthesised parts (which took some finding).
Can anyone recommend any synthesisers which do not suffer from this sort of
problem?
The synth takes approx 1 hour to synth this (much quicker than most of my
"large" designs), and timing far
exceeds the requirements as the clock frequency is low.
If anyone is interested, the sort of errors I was getting were:-
A connection between 2 components was simply not made. An input to the
second component was hardwired to '0'.
Tried the very latest version of the same synth and the problem went away.
The following problems were seen in the latest version:-
OUT_DATA <= IN_DATA & "0";
synthesised to
OUT_DATA <= "0" & IN_DATA;
put this in a clocked process and it synthesised correctly.
OUT_DATA <= 2**IN_DATA;
had OUT_DATA(0) hardwired to '1'.
replaced with a case statement and it synthesised correctly
if X = -1 then
OUT_DATA <= IN_DATA;
elsif X= 1 then
OUT_DATA <= 0 - IN_DATA;
elsif X=0 then
OUT_DATA <= 0;
else
OUT_DATA <= 0 - IN_DATA;
end if;
had OUT_DATA=0 when X=-1
put calculation of 0 - IN_DATA in a separate clocked process, and it
synthesised correctly.
An inferred ROM which synthesised correctly in an earlier version of the
synthesiser, now infers a ROM filled with zeros.
I worked around this by adding a reset to cause the ROM function to be built
from logic. This greatly increased
the size, but this is not a problem for the particular design.
I tried synthing the rogue pieces of code standalone, and they were synthed
correctly (apart from the ROM).
Thanks,
Ken,
Morrow Electronics Limited,
Milton Keynes,
UK.
***@morro.co.uk without the m after my name otherwise it will not be
delivered.