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

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

Description

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)

解决方案

1

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;

begin
-- 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)

begin
if cfg='1' then

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

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

end process;

end CFG_arch;

2

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
创建日期 09/25/1998
Last Updated 08/11/2003
状态 Archive
Type 综合文章