AR# 4689: FPGA Express - HDL-178 Warning: Bus slices are not supported in sensitivity list
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)
解决方案
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: