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;
|