OpenCores
URL https://opencores.org/ocsvn/open_free_list/open_free_list/trunk

Subversion Repositories open_free_list

[/] [open_free_list/] [trunk/] [sim/] [tb_open_free_list.v] - Rev 2

Compare with Previous | Blame | View Log

`timescale 1ns/1ps
 
module tb_open_free_list;
 
reg 			reset_n;
reg 			clk;
wire      [8:0]	fl_q;
wire			fl_aempty;
wire			fl_empty;
reg				wren;
reg	     [71:0] din;
reg				eop;
reg		  [8:0] chunk_num;
reg				load_req;
reg				rel_req;
wire			load_rel_ack;
reg				rden;
wire     [71:0] dout;
 
reg       [8:0] pkt1_chunk;
reg       [8:0] pkt2_chunk;
reg       [8:0] pkt3_chunk;	
 
open_free_list open_free_list(
  .reset_n(reset_n),
  .clk(clk),
  .fl_q(fl_q),
  .fl_aempty(fl_aempty),
  .fl_empty(fl_empty),
  .wren(wren),
  .din(din),
  .eop(eop),
  .chunk_num(chunk_num),
  .load_req(load_req),
  .rel_req(rel_req),
  .load_rel_ack(load_rel_ack),
  .rden(rden),
  .dout(dout)
);
defparam
	open_free_list.RAM_W = 64,
	open_free_list.RAM_E = 8;
 
initial // reset
begin
    reset_n <= 1'b0;
    #1000 reset_n <= 1'b1;
end
 
initial // clock
	clk <= 1'b0;
always
	#5 clk <= ~clk;
 
initial // init all signals
begin
    wren      <= 1'b0;
    din       <= 72'b0;
    eop       <= 1'b0;
    chunk_num <= 9'b0;
    load_req  <= 1'b0;
    rel_req   <= 1'b0;
    rden      <= 1'b0;
end
 
initial // test
begin
    #2000;
    @(posedge clk);
 
    // write a short packet
    pkt1_chunk <= fl_q;
    din <= 72'h000001020304050607;
    wren <= 1'b1;
    @(posedge clk);
    din <= 72'h0108090a0b0c0d0e0f;
    eop <= 1'b1;
    @(posedge clk);
    wren <= 1'b0;
    eop <= 1'b0;
 
    #1000;
    @(posedge clk);
 
    // write a longer packet
    pkt2_chunk <= fl_q;
    din <= 72'h800001020304050607;
    wren <= 1'b1;
    @(posedge clk);
    din <= 72'h8008090a0b0c0d0e0f;
    @(posedge clk);
    din <= 72'h801011121314151617;
    @(posedge clk);
    din <= 72'h8018191a1b1c1d1e1f;
    @(posedge clk);
    din <= 72'h802021222324252627;
    @(posedge clk);
    din <= 72'h8028292a2b2c2d2e2f;
    @(posedge clk);
    din <= 72'h803031323334353637;
    @(posedge clk);
    din <= 72'h8038393a3b3c3d3e3f;
    @(posedge clk);
    din <= 72'h804041424344454647;
    @(posedge clk);
    din <= 72'h8048494a4b4c4d4e4f;
    @(posedge clk);
    din <= 72'h805051525354555657;
    @(posedge clk);
    din <= 72'h8058595a5b5c5d5e5f;
    @(posedge clk);
    din <= 72'h806061626364656667;
    @(posedge clk);
    din <= 72'h8068696a6b6c6d6e6f;
    @(posedge clk);
    din <= 72'h807071727374757677;
    @(posedge clk);
    din <= 72'h8078797a7b7c7d7e7f;
    @(posedge clk);
    din <= 72'h818081828384858687;
    eop <= 1'b1;
    @(posedge clk);
    wren <= 1'b0;
    eop <= 1'b0;
 
    #1000;
    @(posedge clk);
 
    // read the first packet
    chunk_num <= pkt1_chunk;
    load_req <= 1'b1;
    @(posedge load_rel_ack);
    load_req <= 1'b0;
    @(posedge clk);
    rden <= 1'b1;
    @(posedge clk);
    @(posedge clk);
    rden <= 1'b0;
    rel_req <= 1'b1;
    @(posedge load_rel_ack);
    rel_req <= 1'b0;
 
    #1000;
    @(posedge clk);
 
    // write a 3rd packet (short)
    pkt3_chunk <= fl_q;
    din <= 72'hc00001020304050607;
    wren <= 1'b1;
    @(posedge clk);
    din <= 72'hc108090a0b0c0d0e0f;
    eop <= 1'b1;
    @(posedge clk);
    wren <= 1'b0;
    eop <= 1'b0;
 
    #1000;
    @(posedge clk);
 
    // release the third packet without reading
    chunk_num <= pkt3_chunk;
    rel_req <= 1'b1;
    @(posedge load_rel_ack);
    rel_req <= 1'b0;
 
    #1000;
    @(posedge clk);
 
    // read a few lines of packet 2 and then release it
    chunk_num <= pkt2_chunk;
    load_req <= 1'b1;
    @(posedge load_rel_ack);
    load_req <= 1'b0;
    @(posedge clk);
    rden <= 1'b1;
    @(posedge clk);
    @(posedge clk);
    @(posedge clk);
    @(posedge clk);
    rden <= 1'b0;
    rel_req <= 1'b1;
    @(posedge load_rel_ack);
    rel_req <= 1'b0;
end
 
endmodule // tb_open_free_list
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.