AR# 9965: 3.1i XST - ERROR: (VHP__0817). filename.vhd Line xx. Choice xxx is not a locally static expression.
AR# 9965
|
3.1i XST - ERROR: (VHP__0817). filename.vhd Line xx. Choice xxx is not a locally static expression.
描述
Keywords: XST, VHDL, state, machine, case
Urgency: Standard
General Description: If a constant declaration name is used in VHDL case choices, XST generates the following errors:
ERROR: (VHP__0817). small.vhd Line 23. Choice ABC is not a locally static expression. ERROR: (VHP__0817). small.vhd Line 25. Choice XYZ is not a locally static expression.
for this example:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
entity cnt is port (CLK : in std_logic; check : in std_logic; choice : in std_logic_vector (7 downto 0); S : out std_logic ); constant ABC : std_logic_vector (7 downto 0) := "00011011"; -- 1B constant XYZ : std_logic_vector (7 downto 0) := "11111011"; -- 1B end; architecture arch of cnt is signal casttest: std_logic_vector (7 downto 0); signal aux: std_logic; begin process (check, CLK) begin if (CLK'event and CLK='0') then case casttest is when ABC => S <= '1'; when XYZ => S <= check; when others => null; end case; end if; end process; casttest <= choice; end;
解决方案
Replace constant names "ABC" and "XYZ" with their values.
NOTE: This type of syntax structure is supported with the 4.1i software release.