Line 101... |
Line 101... |
// insert_rand_chk(input master_num, input burst_num)
|
// insert_rand_chk(input master_num, input burst_num)
|
// Description: add multiple commands to command FIFO. Each command writes incremental data to a random address, reads the data back and checks the data. Useful for random testing.
|
// Description: add multiple commands to command FIFO. Each command writes incremental data to a random address, reads the data back and checks the data. Useful for random testing.
|
// Parameters: master_num - number of internal master
|
// Parameters: master_num - number of internal master
|
// burst_num - total number of bursts to check
|
// burst_num - total number of bursts to check
|
//
|
//
|
|
// insert_rand(input burst_num)
|
|
// Description: disperces burst_num between internal masters and calls insert_rand_chk for each master
|
|
// Parameters: burst_num - total number of bursts to check (combined)
|
|
//
|
//
|
//
|
// Parameters:
|
// Parameters:
|
//
|
//
|
// For random testing: (changing these values automatically update interanl masters)
|
// For random testing: (changing these values automatically update interanl masters)
|
// len_min - minimum burst AXI LEN (length)
|
// len_min - minimum burst AXI LEN (length)
|
Line 123... |
Line 126... |
|
|
|
|
ITER IX ID_NUM
|
ITER IX ID_NUM
|
module PREFIX(PORTS);
|
module PREFIX(PORTS);
|
|
|
|
`include "prgen_rand.v"
|
|
|
input clk;
|
input clk;
|
input reset;
|
input reset;
|
|
|
port GROUP_STUB_AXI;
|
port GROUP_STUB_AXI;
|
|
|
Line 161... |
Line 166... |
.reset(reset),
|
.reset(reset),
|
.GROUP_STUB_AXI(GROUP_STUB_AXI_IX),
|
.GROUP_STUB_AXI(GROUP_STUB_AXI_IX),
|
.idle(idle_IX),
|
.idle(idle_IX),
|
.scrbrd_empty(scrbrd_empty_IX)
|
.scrbrd_empty(scrbrd_empty_IX)
|
);
|
);
|
|
|
ENDLOOP IX
|
ENDLOOP IX
|
|
|
IFDEF TRUE(ID_NUM==1)
|
IFDEF TRUE(ID_NUM==1)
|
|
|
assign GROUP_STUB_AXI.OUT = GROUP_STUB_AXI_0.OUT;
|
assign GROUP_STUB_AXI.OUT = GROUP_STUB_AXI_0.OUT;
|
assign GROUP_STUB_AXI_0.IN = GROUP_STUB_AXI.IN;
|
assign GROUP_STUB_AXI_0.IN = GROUP_STUB_AXI.IN;
|
|
|
ELSE TRUE(ID_NUM==1)
|
ELSE TRUE(ID_NUM==1)
|
|
|
CREATE ic.v DEFCMD(SWAP.GLOBAL PARENT PREFIX) DEFCMD(SWAP.GLOBAL MASTER_NUM ID_NUM) DEFCMD(SWAP.GLOBAL CONST(ID_BITS) ID_BITS) DEFCMD(SWAP.GLOBAL CONST(CMD_DEPTH) CMD_DEPTH) DEFCMD(SWAP.GLOBAL CONST(DATA_BITS) DATA_BITS) DEFCMD(SWAP.GLOBAL CONST(ADDR_BITS) ADDR_BITS)
|
CREATE ic.v \\
|
|
DEFCMD(SWAP.GLOBAL PARENT PREFIX) \\
|
|
DEFCMD(SWAP.GLOBAL MASTER_NUM ID_NUM) \\
|
|
DEFCMD(SWAP.GLOBAL SLAVE_NUM 1) \\
|
|
DEFCMD(SWAP.GLOBAL CONST(ID_BITS) ID_BITS) \\
|
|
DEFCMD(SWAP.GLOBAL CONST(CMD_DEPTH) CMD_DEPTH) \\
|
|
DEFCMD(SWAP.GLOBAL CONST(DATA_BITS) DATA_BITS) \\
|
|
DEFCMD(SWAP.GLOBAL CONST(ADDR_BITS) ADDR_BITS)
|
LOOP IX ID_NUM
|
LOOP IX ID_NUM
|
STOMP NEWLINE
|
STOMP NEWLINE
|
DEFCMD(LOOP.GLOBAL MIX_IDX 1)
|
DEFCMD(LOOP.GLOBAL MIX_IDX 1) \\
|
STOMP NEWLINE
|
|
DEFCMD(SWAP.GLOBAL ID_MIX_ID0 IDIX_VAL)
|
DEFCMD(SWAP.GLOBAL ID_MIX_ID0 IDIX_VAL)
|
ENDLOOP IX
|
ENDLOOP IX
|
|
|
PREFIX_ic PREFIX_ic(
|
PREFIX_ic PREFIX_ic(
|
.clk(clk),
|
.clk(clk),
|
Line 327... |
Line 339... |
IX : PREFIX_singleIX.insert_rand_chk(burst_num);
|
IX : PREFIX_singleIX.insert_rand_chk(burst_num);
|
endcase
|
endcase
|
end
|
end
|
endtask
|
endtask
|
|
|
|
task insert_rand;
|
|
input [31:0] burst_num;
|
|
|
|
ITER IDX ID_NUM
|
|
reg [31:0] burst_numIDX;
|
|
integer remain;
|
|
begin
|
|
remain = burst_num;
|
|
LOOP IDX ID_NUM
|
|
if (remain > 0)
|
|
begin
|
|
burst_numIDX = rand(1, remain);
|
|
remain = remain - burst_numIDX;
|
|
insert_rand_chk(IDX, burst_numIDX);
|
|
end
|
|
ENDLOOP IDX
|
|
end
|
|
endtask
|
|
|
|
|
endmodule
|
endmodule
|
|
|
|
|