From da7d026d0679d1f3dcaa134256194fa1afdd5f8c Mon Sep 17 00:00:00 2001 From: Waylon Cude Date: Sat, 17 May 2025 12:40:20 -0700 Subject: [PATCH] Add testbench for the seconds display NOTE: This doesn't actually compile yet, but it should once changes to the seconds display are pushed --- verification/seconds_display_tb.sv | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 verification/seconds_display_tb.sv diff --git a/verification/seconds_display_tb.sv b/verification/seconds_display_tb.sv new file mode 100644 index 0000000..1a5e687 --- /dev/null +++ b/verification/seconds_display_tb.sv @@ -0,0 +1,51 @@ +module seconds_display_tb; +int errors = 0; +logic [5:0] seconds; +wire [6:0] display_tens; +wire [6:0] display_ones; + +logic [6:0] expected_tens; +logic [6:0] expected_ones; + +seconds_display Dut(.*); +initial begin + $display("Testing seconds_display"); + for (seconds=0; seconds<60; seconds++) begin + expected_ones = encode_number(seconds % 10); + expected_tens = encode_number(seconds /10); + #1 + if (display_ones !== expected_ones) begin + errors++; + $display("Failed ones test case, displayed = %b, expected = %b", + display_ones, + expected_ones); + end + else + if (display_tens !== expected_tens) begin + errors++; + $display("Failed tens test case, displayed = %b, expected = %b", + display_tens, + expected_tens); + end + end + + if (errors == 0) + $display("All tests passing"); +end + +endmodule + +function automatic logic [6:0] encode_number(logic [5:0] num); + case (num) + 0: return 7'b1111110; + 1: return 7'b0000110; + 2: return 7'b1101101; + 3: return 7'b1111001; + 4: return 7'b0110011; + 5: return 7'b1011011; + 6: return 7'b1011111; + 7: return 7'b1110000; + 8: return 7'b1111111; + 9: return 7'b1111011; + endcase +endfunction