Library of reusable VHDL components
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

190 lines
5.5 KiB

-- Copyright (c) 2014 - 2022 by Torsten Meissner
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- https://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
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;