C
Charles M. Elias
Guest
In the following code fragment Active-HDL flagged the "case oe_l is" line as an
error because oe_l is not locally static. Why is this so? "numbuffs" is
not going to change during execution.
Best regards,
Charles
------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
------------------------------------------------------------------------
entity BiDir is
generic( bufflength : natural := 8;
numbuffs : natural := 4 );
port ( oe_l : in std_logic_vector( 0 to numbuffs - 1 );
a : inout std_logic_vector( bufflength - 1 downto 0 );
b0 : inout std_logic_vector( bufflength - 1 downto 0 );
b1 : inout std_logic_vector( bufflength - 1 downto 0 );
b2 : inout std_logic_vector( bufflength - 1 downto 0 );
b3 : inout std_logic_vector( bufflength - 1 downto 0 );
dirab : in std_logic
);
end BiDir;
------------------------------------------------------------------------
architecture archBiDir of BiDir is
begin
pio : process( oe_l, dirab, a, b0, b1, b2, b3 )
begin
case oe_l is
when "0111" =>
if dirab = '1' then
a <= ( others => 'Z' );
b0 <= a;
else
...
error because oe_l is not locally static. Why is this so? "numbuffs" is
not going to change during execution.
Best regards,
Charles
------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
------------------------------------------------------------------------
entity BiDir is
generic( bufflength : natural := 8;
numbuffs : natural := 4 );
port ( oe_l : in std_logic_vector( 0 to numbuffs - 1 );
a : inout std_logic_vector( bufflength - 1 downto 0 );
b0 : inout std_logic_vector( bufflength - 1 downto 0 );
b1 : inout std_logic_vector( bufflength - 1 downto 0 );
b2 : inout std_logic_vector( bufflength - 1 downto 0 );
b3 : inout std_logic_vector( bufflength - 1 downto 0 );
dirab : in std_logic
);
end BiDir;
------------------------------------------------------------------------
architecture archBiDir of BiDir is
begin
pio : process( oe_l, dirab, a, b0, b1, b2, b3 )
begin
case oe_l is
when "0111" =>
if dirab = '1' then
a <= ( others => 'Z' );
b0 <= a;
else
...