library ieee; use ieee.std_logic_1164.all; --+ including vhdl 2008 libraries --+ These lines can be commented out when using --+ a simulator with built-in VHDL 2008 support library ieee_proposed; use ieee_proposed.standard_additions.all; use ieee_proposed.std_logic_1164_additions.all; package AssertP is procedure assert_true ( a : in boolean; str : in string := "a should be evaluate to true"; level : in severity_level := failure); procedure assert_false ( a : in boolean; str : in string := "a should be evaluate to false"; level : in severity_level := failure); procedure assert_equal (a, b : in integer; str : in string := ""; level : in severity_level := failure); procedure assert_equal ( a, b : in std_logic_vector; str : in string := ""; level : in severity_level := failure); procedure assert_equal ( a, b : in string; str : in string := ""; level : in severity_level := failure); procedure assert_unequal (a, b : in integer; str : in string := ""; level : in severity_level := failure); procedure assert_unequal ( a, b : in std_logic_vector; str : in string := ""; level : in severity_level := failure); procedure assert_unequal ( a, b : in string; str : in string := ""; level : in severity_level := failure); end package AssertP; package body AssertP is procedure assert_true ( a : in boolean; str : in string := "a should be evaluate to true"; level : in severity_level := failure) is begin assert a report str severity level; end procedure assert_true; procedure assert_false ( a : in boolean; str : in string := "a should be evaluate to false"; level : in severity_level := failure) is begin assert not(a) report str severity level; end procedure assert_false; procedure assert_equal ( a, b : in integer; str : in string := ""; level : in severity_level := failure) is begin if (str'length = 0) then assert a = b report to_string(a) & " should be equal to " & integer'image(b) severity level; else assert a = b report str severity level; end if; end procedure assert_equal; procedure assert_equal ( a, b : in std_logic_vector; str : in string := ""; level : in severity_level := failure) is begin if (str'length = 0) then assert a = b report "FAILURE: 0x" & to_hstring(a) & " should be equal to 0x" & to_hstring(b) severity level; else assert a = b report str severity level; end if; end procedure assert_equal; procedure assert_equal ( a,b : in string; str : in string := ""; level : in severity_level := failure) is begin if (str'length = 0) then assert a = b report "FAILURE: " & a & " should be equal to " & b severity level; else assert a = b report str severity level; end if; end procedure assert_equal; procedure assert_unequal ( a, b : in integer; str : in string := ""; level : in severity_level := failure) is begin if (str'length = 0) then assert a /= b report to_string(a) & " should not be equal to " & integer'image(b) severity level; else assert a /= b report str severity level; end if; end procedure assert_unequal; procedure assert_unequal ( a, b : in std_logic_vector; str : in string := ""; level : in severity_level := failure) is begin if (str'length = 0) then assert a /= b report "FAILURE: " & to_hstring(a) & " should not be equal to " & to_hstring(b) severity level; else assert a /= b report str severity level; end if; end procedure assert_unequal; procedure assert_unequal ( a,b : in string; str : in string := ""; level : in severity_level := failure) is begin if (str'length = 0) then assert a /= b report "FAILURE: " & a & " should not be equal to " & b severity level; else assert a /= b report str severity level; end if; end procedure assert_unequal; end package body AssertP;