diff options
Diffstat (limited to 'playground/par_to_ser_tb.v')
| -rw-r--r-- | playground/par_to_ser_tb.v | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/playground/par_to_ser_tb.v b/playground/par_to_ser_tb.v new file mode 100644 index 0000000..a30e282 --- /dev/null +++ b/playground/par_to_ser_tb.v @@ -0,0 +1,68 @@ +`timescale 1us/1us + +module par_to_ser_tb; + +logic clk_i; +logic rst_i; +logic data_valid_i; +logic [7:0] dat_i; +logic dat_o; + +par_to_ser uut ( + .clk_i(clk_i), + .rst_i(rst_i), + .data_valid_i(data_valid_i), + .dat_i(dat_i), + .dat_o(dat_o), + .dat_valid_o() +); + +string filename; +initial begin +`ifdef DUMP_FILE_NAME + filename=`DUMP_FILE_NAME; +`else + filename="par_to_ser.lxt2"; +`endif + $dumpfile(filename); $dumpvars(); + clk_i = 0; + rst_i = 1'b1; + data_valid_i = 1'b0; + + #1 + rst_i = 1'b0; + #1 + rst_i = 1'b1; +end + +always #10 clk_i = ~clk_i; + +bit sollbit = 1'b0; + +initial begin + #13 + @(negedge clk_i); + + for (integer i = 0; i < 255; i++) begin + // clock data in + dat_i = i; + data_valid_i = 1'b1; + + @(negedge clk_i); + data_valid_i = 1'b0; + + for (integer j = 0; j < 8; j++) begin + sollbit = (i >> j) & 1; + assert(dat_o == sollbit) + else $error("Expected bit to be %d, but was %d", sollbit, dat_o); + + @(negedge clk_i); + end + + repeat(2) @(negedge clk_i); + end + + $finish(); +end + +endmodule |
