1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
//
// Copyright 2014 Ettus Research LLC
// Copyright 2018 Ettus Research, a National Instruments Company
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//
module mult_tb();
xlnx_glbl glbl (.GSR(),.GTS());
localparam STR_SINK_FIFOSIZE = 9;
reg clk, reset;
always
#100 clk = ~clk;
initial clk = 0;
initial reset = 1;
initial #1000 reset = 0;
initial $dumpfile("mult_tb.vcd");
initial $dumpvars(0,mult_tb);
initial #1000000 $finish;
localparam AW=25;
localparam BW=18;
localparam PW=48;
wire [AW-1:0] a_tdata;
wire [BW-1:0] b_tdata;
wire [PW-1:0] p_tdata;
wire a_tlast, a_tvalid, a_tready, b_tlast, b_tvalid, b_tready;
wire p_tlast, p_tvalid;
reg p_tready = 0;
reg ai_tvalid = 0;
reg bi_tvalid = 0;
counter #(.WIDTH(AW)) ca
(.clk(clk), .reset(reset), .clear(0),
.max(20),
.i_tlast(0), .i_tvalid(ai_tvalid), .i_tready(),
.o_tdata(a_tdata), .o_tlast(a_tlast), .o_tvalid(a_tvalid), .o_tready(a_tready));
counter #(.WIDTH(BW)) cb
(.clk(clk), .reset(reset), .clear(0),
.max(20),
.i_tlast(0), .i_tvalid(bi_tvalid), .i_tready(),
.o_tdata(b_tdata), .o_tlast(b_tlast), .o_tvalid(b_tvalid), .o_tready(b_tready));
mult #(.WIDTH_A(AW), .WIDTH_B(BW), .WIDTH_P(PW), .LATENCY(4)) mult
(.clk(clk), .reset(reset),
.a_tdata(a_tdata), .a_tlast(a_tlast), .a_tvalid(a_tvalid), .a_tready(a_tready),
.b_tdata(b_tdata), .b_tlast(b_tlast), .b_tvalid(b_tvalid), .b_tready(b_tready),
.p_tdata(p_tdata), .p_tlast(p_tlast), .p_tvalid(p_tvalid), .p_tready(p_tready));
initial
begin
@(negedge reset);
repeat (100)
@(posedge clk);
ai_tvalid <= 1;
repeat (10)
@(posedge clk);
bi_tvalid <= 1;
repeat (10)
@(posedge clk);
p_tready <= 1;
end
endmodule // mult_tb
|