aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/lib/packet_proc/cvita_insert_tlast_tb.v
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/usrp3/lib/packet_proc/cvita_insert_tlast_tb.v')
-rw-r--r--fpga/usrp3/lib/packet_proc/cvita_insert_tlast_tb.v92
1 files changed, 92 insertions, 0 deletions
diff --git a/fpga/usrp3/lib/packet_proc/cvita_insert_tlast_tb.v b/fpga/usrp3/lib/packet_proc/cvita_insert_tlast_tb.v
new file mode 100644
index 000000000..6398c40a4
--- /dev/null
+++ b/fpga/usrp3/lib/packet_proc/cvita_insert_tlast_tb.v
@@ -0,0 +1,92 @@
+`timescale 1ns/1ps
+
+module cvita_insert_tlast_tb();
+
+ reg clk = 0;
+ reg reset = 1;
+
+ always #10 clk = ~clk;
+
+ initial $dumpfile("cvita_insert_tlast_tb.vcd");
+ initial $dumpvars(0,cvita_insert_tlast_tb);
+
+ task send_packet;
+ input [63:0] data_start;
+ input [31:0] len;
+
+ begin
+ if(len < 9)
+ begin
+ {i_tlast, i_tdata} <= { 1'b1, data_start[63:48],len[15:0], data_start[31:0] };
+ i_tvalid <= 1;
+ @(posedge clk);
+ i_tvalid <= 0;
+ end
+ else
+ begin
+ {i_tlast, i_tdata} <= { 1'b0, data_start[63:48],len[15:0], data_start[31:0] };
+ i_tvalid <= 1;
+ @(posedge clk);
+ repeat(((len-2)/2)-1+len[0])
+ begin
+ i_tdata <= i_tdata + 64'h0000_0002_0000_0002;
+ @(posedge clk);
+ end
+ i_tdata <= i_tdata + 64'h0000_0002_0000_0002;
+ i_tlast <= 1;
+ @(posedge clk);
+ i_tvalid <= 1'b0;
+ end // else: !if(len < 3)
+ end
+ endtask // send_packet
+
+ initial
+ begin
+ #1000 reset = 0;
+ #200000;
+ $finish;
+ end
+
+ reg [63:0] i_tdata;
+ reg i_tlast;
+ reg i_tvalid;
+ wire i_tready;
+
+ wire [63:0] o_tdata;
+ wire o_tlast, o_tvalid, o_tready, o_tlast_regen;
+
+ initial
+ begin
+ i_tvalid <= 0;
+
+ while(reset)
+ @(posedge clk);
+ @(posedge clk);
+
+ send_packet(64'hA0000000_A0000001, 24);
+ send_packet(64'hA0000000_A0000001, 20);
+ send_packet(64'hA0000000_A0000001, 16);
+ send_packet(64'hA0000000_A0000001, 12);
+ send_packet(64'hA0000000_A0000001, 8);
+ send_packet(64'hA0000000_A0000001, 4);
+ send_packet(64'hA0000000_A0000001, 4);
+ send_packet(64'hA0000000_A0000001, 8);
+ send_packet(64'hA0000000_A0000001, 12);
+ end // initial begin
+
+ cvita_insert_tlast dut
+ (.clk(clk), .reset(reset), .clear(1'b0),
+ .i_tdata(i_tdata), .i_tvalid(i_tvalid), .i_tready(i_tready),
+ .o_tdata(o_tdata), .o_tlast(o_tlast_regen), .o_tvalid(o_tvalid), .o_tready(o_tready));
+
+ assign o_tready = 1;
+
+
+ always @(posedge clk)
+ if(o_tvalid & o_tready)
+ begin
+ $display ("TLAST %x\t TLAST_REGEN %x",i_tlast, o_tlast_regen);
+ if(i_tlast != o_tlast_regen)
+ $display("ERROR!!!!!!");
+ end
+endmodule // cvita_insert_tlast_tb