Made it clear that we are using SystemVerilog by renaming HDL files to end in .sv rather than .v
This commit is contained in:
13 files changed
No files matched your search
@@ -0,0 +1,68 @@
|
||||
`include "seven_seg.v"
|
||||
|
||||
module seven_seg_tb();
|
||||
logic [3:0] in_num;
|
||||
logic [0:0] in_rbi_inv;
|
||||
logic [7:0] out_segments;
|
||||
logic [7:0] true_segments[17];
|
||||
|
||||
seven_seg dut(in_num, in_rbi_inv, out_segments);
|
||||
|
||||
integer N;
|
||||
integer i;
|
||||
integer error_count;
|
||||
initial begin
|
||||
|
||||
// Initialise truth table
|
||||
true_segments[0 ] = 8'b11111101;
|
||||
true_segments[1 ] = 8'b01100001;
|
||||
true_segments[2 ] = 8'b11011011;
|
||||
true_segments[3 ] = 8'b11110011;
|
||||
true_segments[4 ] = 8'b01100111;
|
||||
true_segments[5 ] = 8'b10110111;
|
||||
true_segments[6 ] = 8'b10111111;
|
||||
true_segments[7 ] = 8'b11100001;
|
||||
true_segments[8 ] = 8'b11111111;
|
||||
true_segments[9 ] = 8'b11100111;
|
||||
true_segments[10] = 8'b11101111;
|
||||
true_segments[11] = 8'b00111111;
|
||||
true_segments[12] = 8'b10011101;
|
||||
true_segments[13] = 8'b01111011;
|
||||
true_segments[14] = 8'b10011111;
|
||||
true_segments[15] = 8'b10001111;
|
||||
true_segments[16] = 8'b00000000;
|
||||
|
||||
$display("Beginning seven-segment tests");
|
||||
|
||||
in_num = 4'd0;
|
||||
in_rbi_inv = 1'b0;
|
||||
error_count = 0;
|
||||
#1;
|
||||
if (out_segments !== true_segments[16]) begin
|
||||
$display("\t\x1b[38;5;9mNumber 0b%b failed to decode to 0b%b, producing 0b%b\x1b[m", in_num, true_segments[16], out_segments);
|
||||
error_count = error_count + 1;
|
||||
end
|
||||
for (N=1; N < 15; ++N) begin
|
||||
in_num = in_num + 1;
|
||||
#1;
|
||||
if (out_segments !== true_segments[N]) begin
|
||||
$display("\t\x1b[38;5;9mNumber 0b%b failed to decode to 0b%b, producing 0b%b\x1b[m", in_num, true_segments[N], out_segments);
|
||||
error_count = error_count + 1;
|
||||
end
|
||||
end
|
||||
|
||||
in_num = 4'd0;
|
||||
in_rbi_inv = 1'b1;
|
||||
for (N=0; N < 15; ++N) begin
|
||||
#1;
|
||||
if (out_segments !== true_segments[N]) begin
|
||||
$display("\t\x1b[38;5;9mNumber 0b%b failed to decode to 0b%b, producing 0b%b\x1b[m", in_num, true_segments[N], out_segments);
|
||||
error_count = error_count + 1;
|
||||
end
|
||||
in_num = in_num + 1;
|
||||
end
|
||||
|
||||
if (error_count == 0) $display("\x1b[38;5;10mAll seven-segment tests passing\x1b[m");
|
||||
else $display("\x1b[38;5;9m%0d seven-segment test(s) failing\x1b[m", error_count);
|
||||
end
|
||||
endmodule
|
||||
Reference in new issue
Block a user