gateware

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 857151be43832f3ffdf43e59670e47a6bdc11f1b
parent ef96b8504ef3ab3e48cc7edbc4d8b94edc4fa825
Author: Brian Swetland <swetland@frotz.net>
Date:   Sun, 26 Jan 2020 14:29:22 -0800

sync_fifo_test: tidy this up a bunch

Diffstat:
Mhdl/sync_fifo_test.sv | 164++++++++++++++++---------------------------------------------------------------
1 file changed, 33 insertions(+), 131 deletions(-)

diff --git a/hdl/sync_fifo_test.sv b/hdl/sync_fifo_test.sv @@ -22,147 +22,49 @@ wire [31:0]chk_data; reg [31:0]count = 0; reg [31:0]rd_count = 0; -reg [31:0]rd_count_n; -reg rd_ready_n; -reg wr_valid_n; -reg done_n; -reg error_n; - -always_comb begin - rd_count_n = rd_count; - rd_ready_n = rd_ready; - wr_valid_n = wr_valid; - done_n = 0; - error_n = 0; +// pattern of writes and reads to issue +reg[63:0]w0 = 64'b0001011111111000000000000001111111111111111111111111111111111111; +reg[63:0]r0 = 64'b0000000000000001111111111000000000000000000000010001111111111111; +reg[63:0]w1 = 64'b1111100000000000000000000001111111111111111111111111111111111111; +reg[63:0]r1 = 64'b1111111111100011111111111111111111111111111111101010011000111111; + +reg[63:0]w2 = 64'b1111111000000000000000010110001111111111111111100000000000000000; +reg[63:0]r2 = 64'b1111111111111111111111111111111111111111111000100000011111110000; + +reg[63:0]w3 = 64'b0000000001000100011000010011100000010101111000000101011011000000; +reg[63:0]r3 = 64'b0000000001010010100101001101001111010101111111100101010100111111; + +reg[63:0]w4 = 64'b1111100000000000000000000000000000000000000000000000000000000000; +reg[63:0]r4 = 64'b1111100000000000000000000000000000000000000000000000000000000000; + +reg[319:0]writes = { w0, w1, w2, w3, w4 }; +reg[319:0]reads = { r0, r1, r2, r3, r4 }; + +always_ff @(posedge clk) begin $display("%3d: W(%08x) %s %s --> R(%08x) %s %s C(%08x) RX(%3d)", count, wr_data, wr_valid ? "V" : "-", wr_ready ? "r" : "-", rd_data, rd_valid ? "v" : "-", rd_ready ? "R" : "-", chk_data, rd_count); - if (rd_valid && rd_ready) begin - if (rd_data != chk_data) begin - $display("%d: rd_data(%08x) != chk_data(%08x)", + count <= count + 32'd1; + writes <= { writes[318:0], 1'b0 }; + reads <= { reads[318:0], 1'b0 }; + rd_ready <= reads[319]; + wr_valid <= writes[319]; + + if (rd_valid & rd_ready) begin + rd_count <= rd_count + 32'd1; + if (rd_data != chk_data) begin + error <= 1; + $display("%3d: rd_data(%08x) != chk_data(%08x)", count, rd_data, chk_data); - error_n = 1; - end else begin - rd_count_n = rd_count + 32'd1; - end + end end - case (count) - 32'd2: wr_valid_n = 1; - 32'd3: wr_valid_n = 0; - 32'd4: wr_valid_n = 1; - 32'd12: wr_valid_n = 0; - 32'd14: rd_ready_n = 1; - 32'd24: rd_ready_n = 0; - 32'd26: wr_valid_n = 1; - 32'd46: rd_ready_n = 1; - 32'd47: rd_ready_n = 0; - 32'd50: rd_ready_n = 1; - 32'd68: wr_valid_n = 0; - 32'd74: rd_ready_n = 0; - 32'd77: rd_ready_n = 1; - 32'd90: wr_valid_n = 1; - 32'd110: rd_ready_n = 0; - 32'd111: rd_ready_n = 1; - 32'd112: rd_ready_n = 0; - 32'd113: rd_ready_n = 1; - 32'd114: rd_ready_n = 0; - 32'd115: rd_ready_n = 0; - 32'd116: rd_ready_n = 1; - 32'd117: rd_ready_n = 1; - 32'd118: rd_ready_n = 0; - 32'd119: rd_ready_n = 0; - 32'd120: rd_ready_n = 0; - 32'd121: rd_ready_n = 1; - 32'd122: rd_ready_n = 1; - 32'd123: rd_ready_n = 1; - 32'd134: wr_valid_n = 0; - 32'd150: wr_valid_n = 1; - 32'd151: wr_valid_n = 0; - 32'd152: wr_valid_n = 1; - 32'd153: wr_valid_n = 1; - 32'd154: wr_valid_n = 0; - 32'd155: wr_valid_n = 0; - 32'd156: wr_valid_n = 0; - 32'd157: wr_valid_n = 1; - 32'd158: wr_valid_n = 1; - 32'd159: wr_valid_n = 1; - 32'd170: rd_ready_n = 0; - 32'd173: begin rd_ready_n = 1; wr_valid_n = 1; end - 32'd174: begin rd_ready_n = 0; wr_valid_n = 0; end - 32'd180: rd_ready_n = 1; - 32'd187: rd_ready_n = 0; - 32'd200: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd201: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd202: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd203: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd204: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd205: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd206: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd207: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd208: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd209: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd210: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd211: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd212: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd213: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd214: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd215: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd216: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd217: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd218: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd219: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd220: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd221: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd222: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd223: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd224: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd225: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd226: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd227: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd228: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd229: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd230: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd231: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd232: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd233: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd234: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd236: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd237: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd238: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd240: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd241: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd242: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd243: begin wr_valid_n = 0; rd_ready_n = 0; end - 32'd244: begin wr_valid_n = 1; rd_ready_n = 1; end - 32'd245: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd246: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd247: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd248: begin wr_valid_n = 1; rd_ready_n = 0; end - 32'd249: begin wr_valid_n = 0; rd_ready_n = 1; end - 32'd255: begin wr_valid_n = 1; rd_ready_n = 1; end - - 32'd500: begin - $display("did not read all data"); - error_n = 1; - end - default: ; - endcase - - if (rd_count == 128) done_n = 1; -end - -always_ff @(posedge clk) begin - count <= count + 32'd1; - rd_count <= rd_count_n; - rd_ready <= rd_ready_n; - wr_valid <= wr_valid_n; - done = done_n; - error = error_n; + if (rd_count == 128) done <= 1; + if (count == 32'd500) error <= 1; end sync_fifo #(