72 lines
2.3 KiB
VHDL
72 lines
2.3 KiB
VHDL
|
library ieee;
|
||
|
use ieee.std_logic_1164.all;
|
||
|
use ieee.numeric_std.all;
|
||
|
use ieee.float_pkg.all;
|
||
|
|
||
|
library std;
|
||
|
use std.textio.all;
|
||
|
|
||
|
package test_utility is
|
||
|
constant TEST_FAIL : string := "[ FAIL ]";
|
||
|
constant TEST_OK : string := "[ OK ]" & LF;
|
||
|
|
||
|
type real_array is array ( natural range <> ) of real;
|
||
|
|
||
|
procedure assert_eq( variable a : in std_logic_vector; variable b : in std_logic_vector );
|
||
|
|
||
|
procedure assert_near( variable a : in real;
|
||
|
variable b : in real;
|
||
|
variable abs_err : in real );
|
||
|
|
||
|
procedure assert_element_near( variable a : in real;
|
||
|
variable b : in real;
|
||
|
variable abs_err : in real;
|
||
|
variable index : in integer );
|
||
|
|
||
|
end package test_utility;
|
||
|
|
||
|
package body test_utility is
|
||
|
|
||
|
procedure assert_eq( variable a : in std_logic_vector; variable b : in std_logic_vector ) is
|
||
|
begin
|
||
|
|
||
|
assert( a = b )
|
||
|
report TEST_FAIL & "assert_eq" & LF &
|
||
|
" a: " & to_string( a ) & LF &
|
||
|
" b: " & to_string( b ) & LF
|
||
|
severity error;
|
||
|
end procedure assert_eq;
|
||
|
|
||
|
procedure assert_near( variable a : in real;
|
||
|
variable b : in real;
|
||
|
variable abs_err : in real ) is
|
||
|
variable abs_diff : real;
|
||
|
begin
|
||
|
abs_diff := abs( a - b );
|
||
|
assert( abs_diff <= abs_err )
|
||
|
report TEST_FAIL & "assert_near" & LF &
|
||
|
" a: " & to_string( a ) & LF &
|
||
|
" b: " & to_string( b ) & LF &
|
||
|
" " & to_string( abs_diff ) & " > " & to_string( abs_err ) & LF
|
||
|
severity error;
|
||
|
end procedure assert_near;
|
||
|
|
||
|
procedure assert_element_near( variable a : in real;
|
||
|
variable b : in real;
|
||
|
variable abs_err : in real;
|
||
|
variable index : in integer ) is
|
||
|
variable abs_diff : real;
|
||
|
begin
|
||
|
abs_diff := abs( a - b );
|
||
|
assert( abs_diff <= abs_err )
|
||
|
report TEST_FAIL & "assert_element_near" & LF &
|
||
|
" element: " & integer'image( index ) & LF &
|
||
|
" a: " & to_string( a ) & LF &
|
||
|
" b: " & to_string( b ) & LF &
|
||
|
" " & to_string( abs_diff ) & " > " & to_string( abs_err ) & LF
|
||
|
severity error;
|
||
|
end procedure assert_element_near;
|
||
|
|
||
|
end package body test_utility;
|
||
|
|