OpenCores
URL https://opencores.org/ocsvn/pltbutils/pltbutils/trunk

Subversion Repositories pltbutils

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /pltbutils/trunk/bench
    from Rev 101 to Rev 107
    Reverse comparison

Rev 101 → Rev 107

/testfiles/bintestfile_correct.bin Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
testfiles/bintestfile_correct.bin Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: testfiles/bintestfile_error.bin =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: testfiles/bintestfile_error.bin =================================================================== --- testfiles/bintestfile_error.bin (nonexistent) +++ testfiles/bintestfile_error.bin (revision 107)
testfiles/bintestfile_error.bin Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: testfiles/bintestfile_longer.bin =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: testfiles/bintestfile_longer.bin =================================================================== --- testfiles/bintestfile_longer.bin (nonexistent) +++ testfiles/bintestfile_longer.bin (revision 107)
testfiles/bintestfile_longer.bin Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: testfiles/bintestfile_reference.bin =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: testfiles/bintestfile_reference.bin =================================================================== --- testfiles/bintestfile_reference.bin (nonexistent) +++ testfiles/bintestfile_reference.bin (revision 107)
testfiles/bintestfile_reference.bin Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: testfiles/bintestfile_shorter.bin =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: testfiles/bintestfile_shorter.bin =================================================================== --- testfiles/bintestfile_shorter.bin (nonexistent) +++ testfiles/bintestfile_shorter.bin (revision 107)
testfiles/bintestfile_shorter.bin Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: testfiles/dattestfile_correct.dat =================================================================== --- testfiles/dattestfile_correct.dat (nonexistent) +++ testfiles/dattestfile_correct.dat (revision 107) @@ -0,0 +1,10 @@ +# Dattestfile (modified comments and whitespaces, but it shouldn't matter) +1 2 +3 +4 5 6 +7 8 9 + ABC DEF +GHI + JKL MNO PQR +# Modified Comment +STUVW XYZ Index: testfiles/dattestfile_error.dat =================================================================== --- testfiles/dattestfile_error.dat (nonexistent) +++ testfiles/dattestfile_error.dat (revision 107) @@ -0,0 +1,9 @@ +# Dattestfile Error +1 +2 +7 +4 5 6 +7 8 9 + ABC DEF GHI + JqL MNO PQR # Comment2 +STUVW XYZ Index: testfiles/dattestfile_longer.dat =================================================================== --- testfiles/dattestfile_longer.dat (nonexistent) +++ testfiles/dattestfile_longer.dat (revision 107) @@ -0,0 +1,9 @@ +# Dattestfile +1 +2 +3 +4 5 6 +7 8 9 + ABC DEF GHI + JKL MNO PQR # Comment +STUVW XYZ WOW Index: testfiles/dattestfile_reference.dat =================================================================== --- testfiles/dattestfile_reference.dat (nonexistent) +++ testfiles/dattestfile_reference.dat (revision 107) @@ -0,0 +1,9 @@ +# Dattestfile +1 +2 +3 +4 5 6 +7 8 9 + ABC DEF GHI + JKL MNO PQR # Comment +STUVW XYZ Index: testfiles/dattestfile_shorter.dat =================================================================== --- testfiles/dattestfile_shorter.dat (nonexistent) +++ testfiles/dattestfile_shorter.dat (revision 107) @@ -0,0 +1,9 @@ +# Dattestfile +1 +2 +3 +4 5 6 +7 8 9 + ABC DEF GHI + JKL MNO PQR # Comment +STUVW Index: testfiles/texttestfile_correct.txt =================================================================== --- testfiles/texttestfile_correct.txt (nonexistent) +++ testfiles/texttestfile_correct.txt (revision 107) @@ -0,0 +1,3 @@ +Texttestfile line 1 +line 2 +line 3 Index: testfiles/texttestfile_error.txt =================================================================== --- testfiles/texttestfile_error.txt (nonexistent) +++ testfiles/texttestfile_error.txt (revision 107) @@ -0,0 +1,3 @@ +Texttestfile lone 1 +line 2 +line 3 Index: testfiles/texttestfile_longer.txt =================================================================== --- testfiles/texttestfile_longer.txt (nonexistent) +++ testfiles/texttestfile_longer.txt (revision 107) @@ -0,0 +1,4 @@ +Texttestfile line 1 +line 2 +line 3 +l \ No newline at end of file Index: testfiles/texttestfile_reference.txt =================================================================== --- testfiles/texttestfile_reference.txt (nonexistent) +++ testfiles/texttestfile_reference.txt (revision 107) @@ -0,0 +1,3 @@ +Texttestfile line 1 +line 2 +line 3 Index: testfiles/texttestfile_shorter.txt =================================================================== --- testfiles/texttestfile_shorter.txt (nonexistent) +++ testfiles/texttestfile_shorter.txt (revision 107) @@ -0,0 +1,3 @@ +Texttestfile line 1 +line 2 +line \ No newline at end of file Index: vhdl/tb_pltbutils.vhd =================================================================== --- vhdl/tb_pltbutils.vhd (revision 101) +++ vhdl/tb_pltbutils.vhd (revision 107) @@ -27,7 +27,7 @@ ---- ---- ---------------------------------------------------------------------- ---- ---- ----- Copyright (C) 2013-2014 Authors and OPENCORES.ORG ---- +---- Copyright (C) 2013-2020 Authors and OPENCORES.ORG ---- ---- ---- ---- This source file may be used and distributed without ---- ---- restriction provided that this copyright statement is not ---- @@ -61,15 +61,33 @@ entity tb_pltbutils is generic ( - G_SKIPTESTS : std_logic_vector := ( - '0', -- Dummy - '0', -- Test 1 - '0', -- Test 2 - '0', -- Test 3 - '0', -- Test 4: NonSkipTest - '1' -- Test 5: SkipTest - ); - G_CLK_PERIOD : time := 10 ns + G_SKIPTESTS : std_logic_vector := ( + '0', -- Dummy + '0', -- Test 1 + '0', -- Test 2 + '0', -- Test 3 + '0', -- Test 4: NonSkipTest + '1' -- Test 5: SkipTest + ); + G_CLK_PERIOD : time := 10 ns; + G_CHECKFILE_VERBOSITY : integer := 10; + G_BINTESTFILE_HEADER : string := "Bintestfile R "; + G_BINTESTFILE_LEN : integer := 528; + G_BINTESTFILE_REFERENCE : string := "../../../bench/testfiles/bintestfile_reference.bin"; + G_BINTESTFILE_CORRECT : string := "../../../bench/testfiles/bintestfile_correct.bin"; + G_BINTESTFILE_ERROR : string := "../../../bench/testfiles/bintestfile_error.bin"; + G_BINTESTFILE_SHORTER : string := "../../../bench/testfiles/bintestfile_shorter.bin"; + G_BINTESTFILE_LONGER : string := "../../../bench/testfiles/bintestfile_longer.txt"; + G_TEXTTESTFILE_REFERENCE : string := "../../../bench/testfiles/texttestfile_reference.txt"; + G_TEXTTESTFILE_CORRECT : string := "../../../bench/testfiles/texttestfile_correct.txt"; + G_TEXTTESTFILE_ERROR : string := "../../../bench/testfiles/texttestfile_error.txt"; + G_TEXTTESTFILE_SHORTER : string := "../../../bench/testfiles/texttestfile_shorter.txt"; + G_TEXTTESTFILE_LONGER : string := "../../../bench/testfiles/texttestfile_longer.txt"; + G_DATTESTFILE_REFERENCE : string := "../../../bench/testfiles/dattestfile_reference.dat"; + G_DATTESTFILE_CORRECT : string := "../../../bench/testfiles/dattestfile_correct.dat"; + G_DATTESTFILE_ERROR : string := "../../../bench/testfiles/dattestfile_error.dat"; + G_DATTESTFILE_SHORTER : string := "../../../bench/testfiles/dattestfile_shorter.dat"; + G_DATTESTFILE_LONGER : string := "../../../bench/testfiles/dattestfile_longer.dat" ); end entity tb_pltbutils; @@ -101,7 +119,27 @@ signal s_str1 : string(1 to 44); signal s_str2 : string(1 to 44); signal s_str3 : string(1 to 43); - signal s_str4 : string(1 to 45); + signal s_str4 : string(1 to 45); + + + constant C_EXPECTED_SUCCESS : boolean := false; + constant C_EXPECTED_FAIL : boolean := true; + + procedure check_cnt ( + constant C_EXPECT_FAIL : boolean; + variable v_checks_cnt : inout integer; + variable v_errors_cnt : inout integer; + signal checks_cnt : out integer; + signal errors_cnt : out integer + ) is + begin + v_checks_cnt := v_checks_cnt + 1; + if C_EXPECT_FAIL then + v_errors_cnt := v_errors_cnt + 1; + end if; + checks_cnt <= v_checks_cnt; + errors_cnt <= v_errors_cnt; + end procedure check_cnt; begin @@ -132,9 +170,17 @@ variable v_expected_skiptests_cnt : integer := 0; variable v_expected_checks_cnt : integer := 0; variable v_expected_errors_cnt : integer := 0; + variable v_expected_data : integer; + variable v_actual_data : integer; + variable f_status : file_open_status; + type charfile is file of character; + file binfile : charfile; + variable c : character; + variable i : integer; + variable v_errcnt : integer; begin - print(""); + print(lf & ""); startsim("tc1", G_SKIPTESTS, pltbv, pltbs); wait until rising_edge(clk); assert (pltbv.test_num = 0) and (pltbs.test_num = 0) @@ -142,7 +188,7 @@ severity error; print(""); - print(""); + print(lf & ""); starttest("StartTest1", pltbv, pltbs); v_expected_tests_cnt := v_expected_tests_cnt + 1; wait until rising_edge(clk); @@ -151,11 +197,11 @@ severity error; print(""); - print(""); + print(lf & ""); endtest(pltbv, pltbs); print(""); - print(""); + print(lf & ""); starttest(3, "StartTest2", pltbv, pltbs); v_expected_tests_cnt := v_expected_tests_cnt + 1; wait until rising_edge(clk); @@ -164,7 +210,7 @@ severity error; print(""); - print(""); + print(lf & ""); starttest(4, "NoSkipTest", pltbv, pltbs); if is_test_active(pltbv) then v_expected_tests_cnt := v_expected_tests_cnt + 1; @@ -179,7 +225,7 @@ endtest(pltbv, pltbs); print(""); - print(""); + print(lf & ""); starttest(5, "SkipTest", pltbv, pltbs); if is_test_active(pltbv) then v_expected_tests_cnt := v_expected_tests_cnt + 1; @@ -194,7 +240,7 @@ endtest(pltbv, pltbs); print(""); - print(""); + print(lf & ""); clk_cnt_clr <= true; wait until rising_edge(clk); clk_cnt_clr <= false; @@ -206,236 +252,177 @@ severity error; print(""); - print(""); + print(lf & ""); s_i <= 0; wait until rising_edge(clk); check("Testing correct integer = 0", s_i, 0, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_i <= 1; wait until rising_edge(clk); check("Testing correct integer = 1", s_i, 1, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_i <= 17; wait until rising_edge(clk); check("Testing incorrect integer = 17", s_i, 18, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_i <= -1; wait until rising_edge(clk); check("Testing negative integer = -1", s_i, -1, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_sl <= '0'; wait until rising_edge(clk); check("Testing correct std_logic = '0'", s_sl, '0', pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_sl <= '1'; wait until rising_edge(clk); check("Testing correct std_logic = '1'", s_sl, '1', pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_sl <= 'X'; wait until rising_edge(clk); check("Testing incorrect std_logic = '1'", s_sl, '1', pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_sl <= '0'; wait until rising_edge(clk); check("Testing correct std_logic = '0'", s_sl, 0, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_sl <= '1'; wait until rising_edge(clk); check("Testing correct std_logic = '1'", s_sl, 1, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_sl <= 'X'; wait until rising_edge(clk); check("Testing incorrect std_logic = '1'", s_sl, 1, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_sl <= '1'; wait until rising_edge(clk); check("Testing std_logic = '1' with incorrect expected", s_sl, 2, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_slv <= x"00"; wait until rising_edge(clk); check("Testing correct std_logic_vector = x'00'", s_slv, x"00", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_slv <= x"47"; wait until rising_edge(clk); check("Testing correct std_logic_vector = x'47'", s_slv, x"47", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_slv <= x"11"; wait until rising_edge(clk); check("Testing incorrect std_logic_vector = x'11'", s_slv, x"10", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_slv <= x"47"; wait until rising_edge(clk); check("Testing std_logic_vector = x'47' with correct nibble mask", s_slv, x"57", x"0F", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_slv <= x"47"; wait until rising_edge(clk); check("Testing std_logic_vector = x'47' with incorrect nibble mask", s_slv, x"57", x"F0", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_slv <= x"00"; wait until rising_edge(clk); check("Testing correct std_logic_vector = x'00'", s_slv, 0, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_slv <= x"47"; wait until rising_edge(clk); check("Testing correct std_logic_vector = x'47'", s_slv, 16#47#, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_slv <= x"11"; wait until rising_edge(clk); check("Testing incorrect std_logic_vector = x'11'", s_slv, 16#10#, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_slv <= x"FF"; wait until rising_edge(clk); check("Testing negative std_logic_vector = x'FF'", s_slv, -1, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_slv <= x"47"; wait until rising_edge(clk); check("Testing std_logic_vector = x'47' with correct nibble mask", s_slv, 16#57#, x"0F", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_slv <= x"47"; wait until rising_edge(clk); check("Testing std_logic_vector = x'47' with incorrect nibble mask", s_slv, 16#57#, x"F0", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_u <= x"00"; wait until rising_edge(clk); check("Testing correct unsigned = x'00'", s_u, x"00", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_u <= x"47"; wait until rising_edge(clk); check("Testing correct unsigned = x'47'", s_u, x"47", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_u <= x"11"; wait until rising_edge(clk); check("Testing incorrect unsigned = x'11'", s_u, x"10", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_u <= x"00"; wait until rising_edge(clk); check("Testing correct unsigned = x'00'", s_u, 0, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_u <= x"47"; wait until rising_edge(clk); check("Testing correct unsigned = x'47'", s_u, 16#47#, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_u <= x"11"; wait until rising_edge(clk); check("Testing incorrect unsigned = x'11'", s_u, 16#10#, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_s <= x"00"; wait until rising_edge(clk); check("Testing correct signed = x'00'", s_s, x"00", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_s <= x"47"; wait until rising_edge(clk); check("Testing correct signed = x'47'", s_s, x"47", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_s <= x"11"; wait until rising_edge(clk); check("Testing incorrect signed = x'11'", s_s, x"10", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_s <= x"FF"; wait until rising_edge(clk); check("Testing negative signed = x'FF'", s_s, x"FF", pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_s <= x"00"; wait until rising_edge(clk); check("Testing correct signed = x'00'", s_s, 0, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_s <= x"47"; wait until rising_edge(clk); check("Testing correct signed = x'47'", s_s, 16#47#, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_s <= x"11"; wait until rising_edge(clk); check("Testing incorrect signed = x'11'", s_s, 16#10#, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_s <= x"FF"; wait until rising_edge(clk); print("NOTE: Skipping test with negative signed. There seem to be a bug in ModelSim."); @@ -443,98 +430,74 @@ -- " It causes mismatch between expected number of errors" & -- " and the number presented by endsim()"); --check("Testing negative signed = x'FF'", s_s, -1, pltbv, pltbs); - --v_expected_checks_cnt := v_expected_checks_cnt + 1; - --expected_checks_cnt <= v_expected_checks_cnt; + --check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_b <= false; wait until rising_edge(clk); check("Testing correct boolean = false", s_b, false, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_b <= true; wait until rising_edge(clk); check("Testing correct boolean = true", s_b, true, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_b <= false; wait until rising_edge(clk); check("Testing incorrect boolean = true", s_b, true, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_b <= false; wait until rising_edge(clk); check("Testing correct boolean = false", s_b, 0, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_b <= true; wait until rising_edge(clk); check("Testing correct boolean = true", s_b, 1, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_b <= false; wait until rising_edge(clk); check("Testing incorrect boolean = true", s_b, 1, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_b <= true; wait until rising_edge(clk); check("Testing boolean = true with incorrect expected", s_b, 2, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_time <= 0 sec; wait until rising_edge(clk); check("Testing correct time = 0 sec", s_time, 0 sec, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_time <= 47 ns; wait until rising_edge(clk); check("Testing correct time = 47 ns", s_time, 47 ns, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_time <= 11 us; wait until rising_edge(clk); check("Testing incorrect time = 10 us", s_time, 10 us, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_time <= 0 sec; wait until rising_edge(clk); check("Testing correct unsigned = 0 sec +/- 0 sec", s_time, 0 sec, 0 sec, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_time <= 47 ns - 3 ns; wait until rising_edge(clk); check("Testing correct time = 47 ns +/- 5 ns", s_time, 47 ns, 5 ns, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_time <= 10 us + 7 us; wait until rising_edge(clk); check("Testing incorrect time = 10 us +/- 5 us", s_time, 10 us, 5 us, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_str_exp <= string'("The quick brown fox jumps over the lazy dog."); s_str1 <= string'("The quick brown fox jumps over the lazy dog."); s_str2 <= string'("The quick brown dog jumps over the lazy fox."); @@ -542,51 +505,103 @@ s_str4 <= string'("The quick brown fox jumps over the lazy dog.."); wait until rising_edge(clk); check("Testing correct string", s_str1, s_str_exp, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_s <= x"47"; wait until rising_edge(clk); check("Testing incorrect string with correct length", s_str2, s_str_exp, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_s <= x"11"; wait until rising_edge(clk); check("Testing too short string", s_str3, s_str_exp, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); wait until rising_edge(clk); check("Testing too long string", s_str4, s_str_exp, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); s_i <= 0; wait until rising_edge(clk); check("Testing correct boolean expression 0 = 16#00#", s_i = 16#00#, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); s_i <= 47; wait until rising_edge(clk); check("Testing incorrect boolean expression 47 < 16#10#", s_i < 16#10#, pltbv, pltbs); - v_expected_checks_cnt := v_expected_checks_cnt + 1; - expected_checks_cnt <= v_expected_checks_cnt; - v_expected_errors_cnt := v_expected_errors_cnt + 1; - expected_errors_cnt <= v_expected_errors_cnt; + check_cnt(C_EXPECTED_FAIL, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); print(""); - print(""); + print(lf & ""); + -- Check if the current simulator running on the current operating system supports + -- reading binary files as file of character. + -- That is a requirement for check_binfile(). + file_open(f_status, binfile, G_BINTESTFILE_REFERENCE, read_mode); + print("DEBUG: file_open_status: " & file_open_status'image(f_status)); + --check("Status of opening binary file", f_status = open_ok, file_open_status'image(f_status), "open_ok", pltbv, pltbs); + --check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); + if f_status = open_ok then + i := 0; + v_errcnt := 0; + while not endfile(binfile) loop + read(binfile, c); + v_actual_data := character'pos(c); + if i < G_BINTESTFILE_HEADER'length then + v_expected_data := character'pos(G_BINTESTFILE_HEADER(i+1)); + else + v_expected_data := (i - G_BINTESTFILE_HEADER'length) mod 256; + end if; + if v_actual_data /= v_expected_data then + v_errcnt := v_errcnt + 1; + print("Error at offset " & str(i) & ": actual " & str(v_actual_data) & " expected " & str(v_expected_data)); + end if; + i := i + 1; + end loop; + file_close(binfile); + check("Number of errors while reading binary file", v_errcnt, 0, pltbv, pltbs); + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); + check("Number of bytes read from binary file", i, G_BINTESTFILE_LEN, pltbv, pltbs); + check_cnt(C_EXPECTED_SUCCESS, v_expected_checks_cnt, v_expected_errors_cnt, expected_checks_cnt, expected_errors_cnt); + end if; + print(""); endtest(pltbv, pltbs); print(""); wait until rising_edge(clk); - print(""); + print(lf & ""); print(""); print("Expected number of tests: " & str(v_expected_tests_cnt)); print("Expected number of skipped tests: " & str(v_expected_skiptests_cnt)); @@ -593,14 +608,15 @@ print("Expected number of checks: " & str(v_expected_checks_cnt)); print("Expected number of errors: " & str(v_expected_errors_cnt)); if v_expected_errors_cnt = 0 then - print("Expected result: SUCCESS"); + print("Expected result: SUCCESS"); else - print("Expected result: FAIL"); + print("Expected result: FAIL"); end if; wait until rising_edge(clk); endsim(pltbv, pltbs, true); wait until rising_edge(clk); print(""); + wait; end process p_tc1; end architecture bhv;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.