Line 63... |
Line 63... |
//
|
//
|
//
|
//
|
//////////////////////////////////////
|
//////////////////////////////////////
|
|
|
|
|
OUTFILE apb_master.v
|
OUTFILE PREFIX.v
|
|
|
INCLUDE def_apb_master.txt
|
INCLUDE def_apb_master.txt
|
|
|
VERIFY (DATA_BITS==32) else only 32 bit data supported
|
VERIFY (DATA_BITS==32) else only 32 bit data supported
|
|
|
module apb_master(PORTS);
|
module PREFIX(PORTS);
|
|
|
|
|
input clk;
|
input clk;
|
input reset;
|
input reset;
|
|
|
Line 97... |
Line 97... |
|
|
//set random tasks to be only 32 bit singles
|
//set random tasks to be only 32 bit singles
|
initial
|
initial
|
begin
|
begin
|
#1;
|
#1;
|
apb_master_axi_master.enable_all;
|
PREFIX_axi_master.enable_all;
|
apb_master_axi_master.use_addr_base=1;
|
PREFIX_axi_master.use_addr_base=1;
|
apb_master_axi_master.len_min=0;
|
PREFIX_axi_master.len_min=0;
|
apb_master_axi_master.len_max=0;
|
PREFIX_axi_master.len_max=0;
|
apb_master_axi_master.size_min=2;
|
PREFIX_axi_master.size_min=2;
|
apb_master_axi_master.size_max=2;
|
PREFIX_axi_master.size_max=2;
|
end
|
end
|
|
|
|
|
CREATE axi_master.v DEFCMD(SWAP.GLOBAL CONST(PREFIX) apb_master_axi_master)
|
CREATE axi_master.v DEFCMD(SWAP.GLOBAL CONST(PREFIX) PREFIX_axi_master)
|
|
|
apb_master_axi_master apb_master_axi_master(
|
PREFIX_axi_master PREFIX_axi_master(
|
.clk(clk),
|
.clk(clk),
|
.reset(reset),
|
.reset(reset),
|
.GROUP_STUB_AXI(GROUP_STUB_AXI),
|
.GROUP_STUB_AXI(GROUP_STUB_AXI),
|
.idle()
|
.idle()
|
);
|
);
|
|
|
|
|
CREATE axi2apb.v DEFCMD(SWAP CONST(SLAVE_NUM) 1) DEFCMD(SWAP.GLOBAL CONST(PREFIX) apb_master)
|
CREATE axi2apb.v DEFCMD(SWAP CONST(SLAVE_NUM) 1) DEFCMD(SWAP.GLOBAL CONST(PREFIX) PREFIX_axi2apb)
|
|
|
apb_master_axi2apb apb_master_axi2apb(
|
PREFIX_axi2apb PREFIX_axi2apb(
|
.clk(clk),
|
.clk(clk),
|
.reset(reset),
|
.reset(reset),
|
.GROUP_STUB_AXI(GROUP_STUB_AXI),
|
.GROUP_STUB_AXI(GROUP_STUB_AXI),
|
|
|
.penable(penable),
|
.penable(penable),
|
Line 138... |
Line 138... |
|
|
task write_single;
|
task write_single;
|
input [ADDR_BITS-1:0] addr;
|
input [ADDR_BITS-1:0] addr;
|
input [DATA_BITS-1:0] wdata;
|
input [DATA_BITS-1:0] wdata;
|
begin
|
begin
|
apb_master_axi_master.write_single(0, addr, wdata);
|
PREFIX_axi_master.write_single(0, addr, wdata);
|
end
|
end
|
endtask
|
endtask
|
|
|
task read_single;
|
task read_single;
|
input [ADDR_BITS-1:0] addr;
|
input [ADDR_BITS-1:0] addr;
|
output [DATA_BITS-1:0] rdata;
|
output [DATA_BITS-1:0] rdata;
|
begin
|
begin
|
apb_master_axi_master.read_single(0, addr, rdata);
|
PREFIX_axi_master.read_single(0, addr, rdata);
|
end
|
end
|
endtask
|
endtask
|
|
|
task check_single;
|
task check_single;
|
input [ADDR_BITS-1:0] addr;
|
input [ADDR_BITS-1:0] addr;
|
input [DATA_BITS-1:0] expected;
|
input [DATA_BITS-1:0] expected;
|
begin
|
begin
|
apb_master_axi_master.check_single(0, addr, expected);
|
PREFIX_axi_master.check_single(0, addr, expected);
|
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;
|
input [DATA_BITS-1:0] data;
|
input [DATA_BITS-1:0] data;
|
begin
|
begin
|
apb_master_axi_master.write_and_check_single(0, addr, data);
|
PREFIX_axi_master.write_and_check_single(0, addr, data);
|
end
|
end
|
endtask
|
endtask
|
|
|
|
|
endmodule
|
endmodule
|