1-------------------------------- 2-- Copyright 1992-2001 Future Parallel 3-- VLSI Design Lab 4-- Library: VFP 5-- Designer: Tim Pagden 6-- Opened: 02.06.2001 7-- Updated: 12.06.2001 8-- DNH: T:/author/dnh/integer_class.dnh 9-------------------------------- 10 11entity integer_class_tb is 12-- 13-- tests for integer_class package 14-- 15end integer_class_tb; 16 17 use std.textio.all; 18library vfp; 19 use vfp.std_verification.all; 20 use vfp.integer_class.all; 21 22architecture tb0 of integer_class_tb is 23 24begin 25 26 process 27 --variable num_chars : integer; 28 variable j : integer; 29 variable k : integer; 30 variable tfi : boolean; 31 --variable bit_width : integer; 32 variable log_line : line; 33 file log_file : text open write_mode is "intclass.log"; 34 35 begin 36 debug("Starting tests..."); 37 log(log_file, "======== Start of integer_class tests ========"); 38 debug(3); 39 debug("int is ", 3); 40 log(log_file, 3); 41 log(log_file, "int is ", 3); 42 --tb_log(log_file, "==== strlen tests..."); 43 --for i in 0 to 9 loop 44 -- log(log_file, string_length(10 ** i)); 45 -- log(log_file, string_length(-(10 ** i))); 46 --end loop; 47 log(log_file, "==== binary_wordlength tests..."); 48 for i in 0 to 31 loop 49 log(log_file, binary_wordlength(2 ** i)); 50 log(log_file, binary_wordlength(-(2 ** i))); 51 --write(log_line, (2 ** i)); -- it's OK 2**31 -> -(2**31) automatically, 52 -- presumably simulator does a shift operation internally! 53 end loop; 54 log(log_file, "==== integer string length tests ..."); 55 for i in 0 to 9 loop 56 log(log_file, (integer'IMAGE(10 ** i)))'LENGTH; 57 log(log_file, (integer'IMAGE(-(10 ** i))))'LENGTH; 58 end loop; 59 log(log_file, "==== next_greater_binary_power_minus_1 tests ..."); 60 for i in 0 to 31 loop 61 log(log_file, next_greater_binary_power_minus_1(2 ** i)); 62 log(log_file, next_greater_binary_power_minus_1(-(2 ** i))); 63 end loop; 64 --tb_log(log_file, "==== is_factor_of_32 tests ..."); 65 --for i in 0 to 32 loop 66 -- tfi := is_factor_of_32(i); 67 -- if tfi then 68 -- write(log_line, i); 69 -- write(log_line, string'(" is a factor")); 70 -- -- sprintf("i,s", +integer, string) 71 -- -- unary + takes any operand and returns a string 72 -- -- sprintf("i,s", integer, string) 73 -- writeline(log_file, log_line); 74 -- else 75 -- write(log_line, i); 76 -- write(log_line, string'("...")); 77 -- writeline(log_file, log_line); 78 -- end if; 79 --end loop; 80 write(log_line, string'("==== is_power_of_2 tests ...")); 81 writeline(log_file, log_line); 82 for i in 0 to 31 loop 83 k := 2 ** i; 84 tfi := is_power_of_2(k); 85 if tfi then 86 write(log_line, string'("Correct, ")); 87 write(log_line, k); 88 write(log_line, string'(" is a power of 2")); 89 writeline(log_file, log_line); 90 else 91 write(log_line, k); 92 write(log_line, string'(" has not been captured as a power of 2 - it should be!")); 93 writeline(log_file, log_line); 94 end if; 95 end loop; 96 write(log_line, string'("==== log_2 tests ...")); 97 writeline(log_file, log_line); 98 for i in 0 to 31 loop 99 k := (2 ** i)-1; 100 j := log_2(k); 101 write(log_line, k); 102 write(log_line, string'(" , ")); 103 write(log_line, j); 104 writeline(log_file, log_line); 105 k := 2 ** i; 106 j := log_2(k); 107 write(log_line, k); 108 write(log_line, string'(" , ")); 109 write(log_line, j); 110 writeline(log_file, log_line); 111 k := (2 ** i)+1; 112 j := log_2(k); 113 write(log_line, k); 114 write(log_line, string'(" , ")); 115 write(log_line, j); 116 writeline(log_file, log_line); 117 end loop; 118 log(log_file, "======== End of integer_class tests ========"); 119 debug("Tests finished."); 120 wait; 121 end process; 122 123end tb0; 124 125configuration integer_class_tb_cfg_0 of integer_class_tb is 126 for tb0 127 end for; 128end integer_class_tb_cfg_0; 129 130