我正在编写一个需要将输入值与零进行比较的 VHDL 过程。输入可能包含元值(“U”、“X”、“L”、“H”等),在这种情况下不应断言零。
不幸的是,ModelSim 在每次比较时都会发出警告:
# ** Warning: NUMERIC_STD."=": metavalue detected, returning FALSE
# Time: 14 ns Iteration: 1 Instance: /tb/uut
关于如何编写以下代码以避免此类警告的任何想法?全局关闭 numeric_std 警告不是一种选择。
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.all;
entity Test is
port (
clk : in std_logic;
reset : in std_logic;
i_in_data : in unsigned(31 downto 0);
o_out_zero : out std_logic
);
end Test;
architecture rtl of Test is
begin
process(clk, reset) begin
if(reset='1') then
o_out_zero <= '0';
elsif(rising_edge(clk)) then
if(i_in_data = (i_in_data'range=>'0')) then
o_out_zero <= '1';
else
o_out_zero <= '0';
end if;
end if;
end process;
end architecture;