Преглед на файлове

Upload files to ''

main
kalal_mounika преди 4 месеца
родител
ревизия
0026f1eff8
променени са 1 файла, в които са добавени 111 реда и са изтрити 0 реда
  1. +111
    -0
      axi_interface.sv

+ 111
- 0
axi_interface.sv Целия файл

@@ -0,0 +1,111 @@
interface axi_intf #(parameter A_WIDTH = 16, D_WIDTH = 16)(input bit clk, bit rstn);
// Write Address
logic [8:0] AWID;
logic [A_WIDTH-1:0] AWADDR;
logic [3:0] AWLEN;
logic [2:0] AWSIZE;
logic [1:0] AWBURST;
logic AWVALID, AWREADY;
logic WRITE;
// Write Data
logic [8:0] WID;
logic [D_WIDTH-1:0] WDATA;
logic [(D_WIDTH/8)-1:0] WSTRB;
logic WLAST, WVALID, WREADY;
// Write Response
logic [8:0] BID;
logic [1:0] BRESP;
logic BVALID, BREADY;
// Read Address
logic [8:0] ARID;
logic [A_WIDTH-1:0] ARADDR;
logic [3:0] ARLEN;
logic [2:0] ARSIZE;
logic [1:0] ARBURST;
logic ARVALID, ARREADY;
// Read Data
logic [8:0] RID;
logic [D_WIDTH-1:0] RDATA;
logic [1:0] RRESP;
logic RLAST, RVALID, RREADY;
/* Clocking Blocks: 3 CBs are defined as follows
1. m_drv_cb - Clocking block for master driver
2. s_drv_cb - Clocking block for slave driver
3. mon_cb - Clocking block for monitors of both master and slave */
clocking m_drv_cb @(posedge clk);
output AWID, AWADDR, AWLEN, AWSIZE, AWBURST,AWVALID, WID, WDATA, WSTRB, WLAST, WVALID,
BREADY, ARID, ARADDR, ARLEN, ARSIZE, ARBURST, ARVALID, RREADY,WRITE;
input AWREADY, WREADY, BID, BRESP, BVALID, ARREADY, RID, RDATA, RRESP, RLAST, RVALID;
endclocking
clocking mon_cb @(posedge clk);
input AWID, AWADDR, AWLEN, AWSIZE, AWBURST,AWVALID, WID, WDATA, WSTRB, WLAST, WVALID,
BREADY, ARID, ARADDR, ARLEN, ARSIZE, ARBURST, ARVALID, RREADY,WRITE;
input AWREADY, WREADY, BID, BRESP, BVALID, ARREADY, RID, RDATA, RRESP, RLAST, RVALID;
endclocking
clocking s_drv_cb @(posedge clk);
input AWID, AWADDR, AWLEN, AWSIZE, AWBURST,AWVALID, WID, WDATA, WSTRB, WLAST, WVALID,
BREADY, ARID, ARADDR, ARLEN, ARSIZE, ARBURST, ARVALID, RREADY,WRITE;
output AWREADY, WREADY, BID, BRESP, BVALID, ARREADY, RID, RDATA, RRESP, RLAST, RVALID;
endclocking
modport MDRV(clocking m_drv_cb, input rstn);
modport MMON(clocking mon_cb, input rstn);
modport SDRV(clocking s_drv_cb, input rstn);
modport SMON(clocking mon_cb, input rstn);
// *************************************************************************************************
// Assertions
// *************************************************************************************************
// Property to check whether all write address channel remains stable after AWVALID is asserted
property aw_valid;
@(posedge clk) $rose(AWVALID) |-> ( $stable(AWID)
&&$stable(AWADDR)
&&$stable(AWLEN)
&&$stable(AWSIZE)
&&$stable(AWBURST)) throughout AWREADY[->1];
endproperty
// Property to check whether all write address channel remains stable after AWVALID is asserted
property w_valid;
@(posedge clk) $rose(WVALID) |-> ( $stable(WID)
&& $stable(WDATA)
&& $stable(WSTRB)
&& $stable(WLAST)) throughout WREADY[->1];
endproperty
// Property to check whether all write address channel remains stable after AWVALID is asserted
property b_valid;
@(posedge clk) $rose(BVALID) |-> ( $stable(BID)
&& $stable(BRESP)) throughout BREADY[->1];
endproperty
// Property to check whether all write address channel remains stable after AWVALID is asserted
property ar_valid;
@(posedge clk) $rose(ARVALID) |-> ( $stable(ARID)
&&$stable(ARADDR)
&&$stable(ARLEN)
&&$stable(ARSIZE)
&&$stable(ARBURST)) throughout ARREADY[->1];
endproperty
// Property to check whether all write address channel remains stable after AWVALID is asserted
property r_valid;
@(posedge clk) $rose(RVALID) |-> ( $stable(RID)
&& $stable(RDATA)
&& $stable(RRESP)
&& $stable(RLAST)) throughout RREADY[->1];
endproperty
// assert property (aw_valid);
// assert property (w_valid);
//assert property (b_valid);
// assert property (ar_valid);
// assert property (r_valid);
endinterface //axi_intf

Зареждане…
Отказ
Запис