diff options
| author | bryan newbold <bnewbold@leaflabs.com> | 2013-10-08 23:33:18 -0400 | 
|---|---|---|
| committer | bryan newbold <bnewbold@leaflabs.com> | 2013-10-08 23:48:05 -0400 | 
| commit | 3b13cb7d690ba1891f008d2905fcfb36049c71ff (patch) | |
| tree | 12ddf94a955c2f8611c43c269d4620629fa3d31c /tb/rot13_tb.v | |
| parent | b31c07157b7b8ca7e8823749e140fcab24b787d2 (diff) | |
| download | basic-hdl-template-3b13cb7d690ba1891f008d2905fcfb36049c71ff.tar.gz basic-hdl-template-3b13cb7d690ba1891f008d2905fcfb36049c71ff.zip | |
clean up test stuff
Diffstat (limited to 'tb/rot13_tb.v')
| -rwxr-xr-x | tb/rot13_tb.v | 77 | 
1 files changed, 77 insertions, 0 deletions
| diff --git a/tb/rot13_tb.v b/tb/rot13_tb.v new file mode 100755 index 0000000..1ec21c4 --- /dev/null +++ b/tb/rot13_tb.v @@ -0,0 +1,77 @@ +`timescale 1ns/1ps +module rot13_tb; + +reg synth_clk_12mhz; +always @(synth_clk_12mhz) begin +    #41.6665 synth_clk_12mhz <= ~synth_clk_12mhz; +end + +initial begin +    // the first event that sets the clock in motion +    #0 synth_clk_12mhz <= 1'b0; +end + +reg reset; +integer nfail; + +reg [7:0]  in_char; +wire [7:0] out_char; + +rot13 rot13_inst ( +    .clock(synth_clk_12mhz), +    .reset(reset), +    .in_char(in_char), +    .out_char(out_char) +); + +task check_rot13; +    input [7:0] a; +    input [7:0] b; +    begin +        in_char <= a; +        #100 // 100 ns delay +        if (out_char !== b) begin +            nfail = nfail + 1; +            $display("FAIL: '%c' -> '%c' (got '%c')", a, b, out_char); +        end else begin +            $display("'%c' -> '%c'", a, out_char); +        end +    end +endtask + +initial begin +    nfail = 0; +    $display("=================== start %m"); +    #0 +    reset <= 1'b1; +    #1000 +    reset <= 1'b0; +    #100 + +    check_rot13("A", "N"); +    check_rot13("a", "n"); +    check_rot13("N", "A"); +    check_rot13("n", "a"); +    check_rot13("M", "Z"); +    check_rot13("m", "z"); +    check_rot13("Z", "M"); +    check_rot13("z", "m"); +    check_rot13(".", "."); +    check_rot13("8", "8"); +    check_rot13("@", "@"); +    check_rot13("[", "["); +    check_rot13("`", "`"); +    check_rot13("{", "{"); + +    // uncomment the below to ensure failures are caught +    //check_rot13("a", "a"); + +    if (nfail !== 0) begin +        $display("=================== %m: FAIL (%d problems)", nfail); +    end else begin +        $display("=================== %m: PASS"); +    end +    $finish(); +end + +endmodule | 
