入力値をゼロと比較する必要があるVHDLプロセスを作成しています。入力にはメタ値(「U」、「X」、「L」、「H」など)が含まれる場合があります。その場合、ゼロをアサートしないでください。
残念ながら、ModelSimは比較ごとに警告を発行します。
# ** Warning: NUMERIC_STD."=": metavalue detected, returning FALSE
# Time: 14 ns Iteration: 1 Instance: /tb/uut
そのような警告を回避するために以下をコーディングする方法についてのアイデアはありますか?nude_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;