Different logic?

P

Paulo Valentim

Please see the processes below. Are they equivalent in logic? If not, why not?
The synthesis tool is giving me different interpretations. Thank you very much!

Process #1:
P_WR_EN : process (TCM_NR_INS)
begin
if (TCM_NR_INS = "11111") then
RAM_WR_EN <= '0';
elsif (TCM_NR_INS(1 downto 0) /= "00") then
RAM_WR_EN <= '0';
else
RAM_WR_EN <= '1';
end if;
end process P_WR_EN;

Process #2:
P_WR_EN : process (TCM_NR_INS)
begin
if (TCM_NR_INS /= "11111") then
if (TCM_NR_INS(1 downto 0) = "00") then
RAM_WR_EN <= '1';
else
RAM_WR_EN <= '0';
end if;
else
RAM_WR_EN <= '0';
end if;
end process P_WR_EN;

- Paulo Valentim
 
M

mike_treseler

Consider running a simulation to verify that
the descriptions are equivalent.

-- Mike Treseler
 
P

Pieter Hulshoff

Paulo said:
Please see the processes below. Are they equivalent in logic? If not, why
not? The synthesis tool is giving me different interpretations. Thank you
very much!

Logically, they seem similar. If you use multi level logic though (including
'Z', 'H', 'L', etc.) they will not behave 100% the same. I'm sure synthesis
will come up with different circuits, but it's likely that formal
verification would show these two as equivalent.

Regards,

Pieter Hulshoff
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top