Line 49... |
Line 49... |
(MAX_CMDS <= 128) ? 7 :
|
(MAX_CMDS <= 128) ? 7 :
|
(MAX_CMDS <= 256) ? 8 :
|
(MAX_CMDS <= 256) ? 8 :
|
(MAX_CMDS <= 512) ? 9 : 0; //0 is ilegal
|
(MAX_CMDS <= 512) ? 9 : 0; //0 is ilegal
|
|
|
|
|
|
|
input clk;
|
input clk;
|
input reset;
|
input reset;
|
|
|
port GROUP_STUB_AXI;
|
port GROUP_STUB_AXI;
|
|
|
Line 73... |
Line 72... |
|
|
reg enable = 0;
|
reg enable = 0;
|
reg rd_enable = 0;
|
reg rd_enable = 0;
|
reg wr_enable = 0;
|
reg wr_enable = 0;
|
reg wait_for_write = 0;
|
reg wait_for_write = 0;
|
|
reg err_on_wr_resp = 1;
|
|
reg err_on_rd_resp = 1;
|
|
|
reg scrbrd_enable = 0;
|
reg scrbrd_enable = 0;
|
reg [LEN_BITS-1:0] wvalid_cnt;
|
reg [LEN_BITS-1:0] wvalid_cnt;
|
|
|
reg rd_cmd_push = 0;
|
reg rd_cmd_push = 0;
|
Line 247... |
Line 248... |
assign ARCACHE = 4'd0; //not supported
|
assign ARCACHE = 4'd0; //not supported
|
assign ARPROT = 4'd0; //not supported
|
assign ARPROT = 4'd0; //not supported
|
assign ARLOCK = 2'd0; //not supported
|
assign ARLOCK = 2'd0; //not supported
|
|
|
assign rd_fifo_data_in = RDATA;
|
assign rd_fifo_data_in = RDATA;
|
assign rd_fifo_resp_in = BRESP;
|
assign rd_fifo_resp_in = RRESP;
|
|
|
assign wr_data_bytes = 1'b1 << wr_data_size;
|
assign wr_data_bytes = 1'b1 << wr_data_size;
|
|
|
assign wr_data_strb =
|
assign wr_data_strb =
|
wr_data_size == 'd0 ? 1'b1 :
|
wr_data_size == 'd0 ? 1'b1 :
|
Line 546... |
Line 547... |
resp = rd_fifo_resp;
|
resp = rd_fifo_resp;
|
@(negedge clk); #FFD;
|
@(negedge clk); #FFD;
|
rd_fifo_pop = 1;
|
rd_fifo_pop = 1;
|
@(posedge clk); #FFD;
|
@(posedge clk); #FFD;
|
rd_fifo_pop = 0;
|
rd_fifo_pop = 0;
|
|
if ((resp != 2'b00) && (err_on_rd_resp))
|
|
$display("PREFIX_MASTER%0d: RRESP_ERROR: Received RRESP 2'b%0b.\tTime: %0d ns.", MASTER_NUM, resp, $time);
|
end
|
end
|
endtask
|
endtask
|
|
|
task get_scrbrd;
|
task get_scrbrd;
|
output [ADDR_BITS-1:0] addr;
|
output [ADDR_BITS-1:0] addr;
|
Line 580... |
Line 583... |
resp = wr_resp_resp;
|
resp = wr_resp_resp;
|
@(negedge clk); #FFD;
|
@(negedge clk); #FFD;
|
wr_resp_pop = 1;
|
wr_resp_pop = 1;
|
@(posedge clk); #FFD;
|
@(posedge clk); #FFD;
|
wr_resp_pop = 0;
|
wr_resp_pop = 0;
|
|
if ((resp != 2'b00) && (err_on_wr_resp))
|
|
$display("PREFIX_MASTER%0d: BRESP_ERROR: Received BRESP 2'b%0b.\tTime: %0d ns.", MASTER_NUM, resp, $time);
|
end
|
end
|
endtask
|
endtask
|
|
|
task insert_rd_single;
|
task insert_rd_single;
|
input [ADDR_BITS-1:0] addr;
|
input [ADDR_BITS-1:0] addr;
|
Line 636... |
Line 641... |
reg [1:0] resp;
|
reg [1:0] resp;
|
reg [DATA_BITS-1:0] rdata;
|
reg [DATA_BITS-1:0] rdata;
|
begin
|
begin
|
read_single_ack(addr, rdata, resp);
|
read_single_ack(addr, rdata, resp);
|
if (rdata !== expected)
|
if (rdata !== expected)
|
$display("MASTER%0d: CHK_SINGLE_ERROR: Address: 0x%0h, Expected: 0x%0h, Received: 0x%0h.\tTime: %0d ns.", MASTER_NUM, addr, expected, rdata, $time);
|
$display("PREFIX_MASTER%0d: CHK_SINGLE_ERROR: Address: 0x%0h, Expected: 0x%0h, Received: 0x%0h.\tTime: %0d ns.", MASTER_NUM, addr, expected, rdata, $time);
|
end
|
end
|
endtask
|
endtask
|
|
|
task write_and_check_single;
|
task write_and_check_single;
|
input [ADDR_BITS-1:0] addr;
|
input [ADDR_BITS-1:0] addr;
|
Line 676... |
Line 681... |
get_rd_resp(rdata, resp);
|
get_rd_resp(rdata, resp);
|
expected_data = expected_data & mask; //TBD insert z as dontcare (for print)
|
expected_data = expected_data & mask; //TBD insert z as dontcare (for print)
|
rdata_masked = rdata & mask;
|
rdata_masked = rdata & mask;
|
|
|
if (expected_data !== rdata_masked)
|
if (expected_data !== rdata_masked)
|
$display("MASTER%0d: SCRBRD_ERROR: Address: 0x%0h, Expected: 0x%0h, Received: 0x%0h.\tTime: %0d ns.", MASTER_NUM, addr, expected_data, rdata, $time);
|
$display("PREFIX_MASTER%0d: SCRBRD_ERROR: Address: 0x%0h, Expected: 0x%0h, Received: 0x%0h.\tTime: %0d ns.", MASTER_NUM, addr, expected_data, rdata, $time);
|
end
|
end
|
endtask
|
endtask
|
|
|
always @(posedge scrbrd_enable)
|
always @(posedge scrbrd_enable)
|
begin
|
begin
|