UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 22637

8.1i XST - XST has problems dealing with two values in a case statement that leads to the same output value

Description

Keywords: VHDL, Netlist

XST generates the wrong netlist when assigning the same value to an output in two different case states.

An example code snippet that does not work:

case dout_reg(INST_SIZE - 1 downto 0) is
...
when DSP_INST_START =>
state_r <= SEND_ACK;
crx_rdy <= '0';
...
when DSP_INST_STOP =>
state_r <= SEND_ACK;
crx_rdy <= '0';
...
end case;

Solution

XST has problems dealing with two values in a case statement that leads to the same output value.

To work around this issue, assign the value to crx_rdy (see snippet above) out of the case statement:

case dout_reg(INST_SIZE - 1 downto 0) is
...
when DSP_INST_START =>
state_r <= SEND_ACK;
when DSP_INST_STOP =>
state_r <= SEND_ACK;
....
end case;

if ( dout_reg(INST_SIZE - 1 downto 0) = DSP_INST_START ) or ( dout_reg(INST_SIZE - 1 downto 0) = DSP_INST_STOP ) then
crx_rdy <= '0';
else
crx_rdy <= '1';
end if;

This issue has been fixed in ISE 8.2i
AR# 22637
Date Created 01/05/2006
Last Updated 01/08/2009
Status Archive
Type General Article