A
Andy Peters
Guest
Here's one. Is XST overly cautious, or correct?
Given:
signal foo : std_logic_vector(15 downto 0);
alias foo_lo : std_logic_vector(7 downto 0) is foo(7 downto 0);
this : std_logic_vector(7 downto 0);
that : std_logic_vector(7 downto 0);
theother : std_logic_vector(7 downto 0);
sel : std_logic_vector(1 downto 0);
mux : std_logic_vector(7 downto 0);
....
mymux : process (foo_lo, this, that, theother, sel) is
begin
muxsel : case sel is
when "00" => mux <= foo_lo; -- this is line 666
when "01" => mux <= this;
when "10" => mux <= that;
when "11" => mux <= theother;
end case muxsel;
end process mymux;
XST gives me the following warning:
WARNING:Xst:819 - "foobar.vhdl" line 666: The following signals are
missing in the process sensitivity list:
foo<15>,
foo<14>,foo<13>,foo<12>,foo<11>,foo<10>,foo<9>,foo<8>,foo<7>,foo<6>,foo<5>,
foo<4>,foo<3>,foo<2>,foo<1>,foo<0>.
Clearly, XST doesn't like the alias foo_lo in the sensitivity list and
wants to see the original foo. Is this correct behaviour or another
XST quirk?
-a
Given:
signal foo : std_logic_vector(15 downto 0);
alias foo_lo : std_logic_vector(7 downto 0) is foo(7 downto 0);
this : std_logic_vector(7 downto 0);
that : std_logic_vector(7 downto 0);
theother : std_logic_vector(7 downto 0);
sel : std_logic_vector(1 downto 0);
mux : std_logic_vector(7 downto 0);
....
mymux : process (foo_lo, this, that, theother, sel) is
begin
muxsel : case sel is
when "00" => mux <= foo_lo; -- this is line 666
when "01" => mux <= this;
when "10" => mux <= that;
when "11" => mux <= theother;
end case muxsel;
end process mymux;
XST gives me the following warning:
WARNING:Xst:819 - "foobar.vhdl" line 666: The following signals are
missing in the process sensitivity list:
foo<15>,
foo<14>,foo<13>,foo<12>,foo<11>,foo<10>,foo<9>,foo<8>,foo<7>,foo<6>,foo<5>,
foo<4>,foo<3>,foo<2>,foo<1>,foo<0>.
Clearly, XST doesn't like the alias foo_lo in the sensitivity list and
wants to see the original foo. Is this correct behaviour or another
XST quirk?
-a