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# 4689

FPGA Express - HDL-178 Warning: Bus slices are not supported in sensitivity list


Keywords: bus slice, sensitivity list, support, warning

Urgency: Standard

General Description:
In FPGA Express 2.1, if a bus slice is being read within a process, a warning reports that a signal is being read, but is not part of the sensitivity list. However, if the bus slice (e.g., bob(2 downto 1)) is placed in the sensitivity list, FPGA Express produces the following warning:

Warning L69/C0 : #0 Warning: Only simple variables are checked in the sensitivity list. The variable in the sensitivity list on line 69 will be ignored. (HDL-178)



Bus slices are not allowed in sensitivity lists. To properly code the design, you must assign a dummy signal to the bus slice (combinatorially), then replace the bus slice in the process and sensitivity list with the dummy signal.

The work-around is to:

1. Create dummy signals for each bit of the bus slice in question.
2. Assign the bus slice bits to these dummy signals with combinatorial logic.
3. Within the sensitivity list and process in question, replace any references to the bus slice with the dummy signals (only in the processes in which you are trying to read from the bus slice).

For example:

architecture CFG_arch of CFG_REG is

-- Added for workaround *******************************
signal dummy_net : std_logic;

-- Added for workaround ******************************
dummy_net <= is_sel(0);

-- original sensitivity list
-- process (cfg, is_sel(0))
-- workaround sensitivity list - uses redirected signal for bus slice *******
process (cfg, dummy_net)

if cfg='1' then

-- original assignment
-- db(2) <= is_sel(0);
-- Redirected Bus bit used in place of slice - workaround ****
db(2) <= dummy_net;

db(2) <= 'Z';
end if;

end process;

end CFG_arch;


When accessing an entire bus within a process, it is necessary to include it in the sensitivity list. This is acceptable, as long as the correct syntax is used:

Incorrect syntax:
process (a, b, bob(3 downto 0))

Correct syntax:
process (a, b, bob);
AR# 4689
Date 08/11/2003
Status Archive
Type General Article