Adds checks to tests

This commit is contained in:
kutningjo
2024-10-22 21:22:06 +02:00
parent b4e75e651c
commit 0fff028d26
12 changed files with 297 additions and 7 deletions
+2
View File
@@ -23,11 +23,13 @@ assert_level := error
gui: ${verilog_objs} ${vhdl_objs}
@vsim \
-gGUI_MODE=true \
-gCHECK_RESULTS=$(CHECK_RESULTS) \
-voptargs=+acc work.${main} -do "do vsim.wave; run -all"
sim: ${verilog_objs} ${vhdl_objs}
@vsim \
-gGUI_MODE=false \
-gCHECK_RESULTS=$(CHECK_RESULTS) \
-voptargs=+acc -c work.${main} -do "run -all" \
| ../scripts/highlight_test_results.sh
+71
View File
@@ -0,0 +1,71 @@
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( a : in std_logic_vector; 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( a : in std_logic_vector; 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;