案件陈述与"当其他人"在代码覆盖率分析中

时间:2015-09-01 11:05:46

标签: vhdl

用于向输入数据注入错误的一段VHDL代码如下所示:

entity error_test
Port ( 
clk           : in  STD_LOGIC;
force_error_i : in  STD_LOGIC_VECTOR(1 downto 0);
din           : in  STD_LOGIC_VECTOR(127 downto 0);
dout          : out STD_LOGIC_VECTOR(127 downto 0)
);
end error_test;

architecture Behavioral of error_test is

signal single_error_2   : std_logic_vector(127 downto 0) := x"00000000000000000000000000000001"; 
signal double_error_2   : std_logic_vector(127 downto 0) := x"00000000000000000000000000000003";
signal triple_error_2   : std_logic_vector(127 downto 0) := x"00000000000000000000000000000007";
signal din_errinj_2     : std_logic_vector(127 downto 0);

process (force_error_i, din, single_error, double_error, triple_error)
  begin
   case (force_error_i) is 
    when "00" =>
      din_errinj_2        <= din;

    when "01" =>
      din_errinj_2        <= din xor single_error_2(127 downto 0);

    when "10" =>
      din_errinj_2        <= din xor double_error_2(127 downto 0);

    when "11" =>   
      din_errinj_2        <= din xor triple_error_2(127 downto 0);

    when others =>
      din_errinj_2        <= din;
  end case;
end process;
end Behavioral;

该模块在主设计和测试平台模拟中都能正常工作。

但问题在于代码覆盖率工具分析。代码覆盖工具(来自Aldec的Reviera-PRO)显示当输入 force_error_i(2)是&#34; 00&#34;然后当&#34; 00&#34; 被覆盖时,当其他条件也被覆盖时!这是当其他人条件多余时?或者我们是否需要其他声明,但这里还有其他错误?

1 个答案:

答案 0 :(得分:0)

不,它不是多余的,因为你可以拥有像&#34; UU&#34;这样的值。我猜这是你的问题,因为你不是同步的,这个过程最初会运行一次。不知道你的模拟器中的覆盖率是多少。