45 inout wire <C_AXI_ADDR_WIDTH-1:0> awaddr,
46 inout wire <C_AXI_LEN_WIDTH-1:0> awlen,
47 inout wire <2:0> awsize,
48 inout wire <1:0> awburst,
49 inout wire <0:0> awlock,
50 inout wire <3:0> awcache,
51 inout wire <2:0> awprot,
52 inout wire <3:0> awqos,
57 inout wire <C_AXI_DATA_WIDTH-1:0> wdata,
58 inout wire <C_AXI_DATA_WIDTH/8-1:0> wstrb,
63 inout wire <C_AXI_ID_WIDTH-1:0> bid,
64 inout wire <1:0> bresp,
70 inout wire <C_AXI_ID_WIDTH-1:0> arid,
71 inout wire <C_AXI_ADDR_WIDTH-1:0> araddr,
72 inout wire <C_AXI_LEN_WIDTH-1:0> arlen,
73 inout wire <2:0> arsize,
74 inout wire <1:0> arburst,
75 inout wire <0:0> arlock,
76 inout wire <3:0> arcache,
77 inout wire <2:0> arprot,
78 inout wire <3:0> arqos,
82 inout wire <C_AXI_ID_WIDTH-1:0> rid,
83 inout wire <1:0> rresp,
85 inout wire <C_AXI_DATA_WIDTH-1:0> rdata,
101 logic <3:0> iawcache;
124 logic <1:0> iarburst;
126 logic <3:0> iarcache;
140 logic <31:0> awready_toggle_pattern;
141 bit awready_toggle_pattern_enable=0;
143 logic <31:0> wready_toggle_pattern;
144 bit wready_toggle_pattern_enable=0;
146 logic <31:0> bready_toggle_pattern;
147 bit bready_toggle_pattern_enable=0;
149 logic <31:0> arready_toggle_pattern;
150 bit arready_toggle_pattern_enable=0;
152 logic <31:0> rready_toggle_pattern;
153 bit rready_toggle_pattern_enable=0;
156 assign awaddr = iawaddr;
157 assign awvalid = iawvalid;
158 assign awready = iawready;
159 assign awlen = iawlen;
160 assign awsize = iawsize;
161 assign awburst = iawburst;
162 assign awlock = iawlock;
163 assign awcache = iawcache;
164 assign awprot = iawprot;
165 assign awqos = iawqos;
167 assign wready = iwready;
168 assign wdata = iwdata;
169 assign wstrb = iwstrb;
170 assign wlast = iwlast;
171 assign wvalid = iwvalid;
174 assign bresp = ibresp;
175 assign bvalid = ibvalid;
176 assign bready = ibready;
178 assign arready = iarready;
180 assign araddr = iaraddr;
181 assign arlen = iarlen;
182 assign arsize = iarsize;
183 assign arburst = iarburst;
184 assign arlock = iarlock;
185 assign arcache = iarcache;
186 assign arprot = iarprot;
187 assign arqos = iarqos;
188 assign arvalid = iarvalid;
191 assign rresp = irresp;
192 assign rvalid = irvalid;
193 assign rdata = irdata;
194 assign rlast = irlast;
195 assign rready = irready;
250 #include "uvm_macros.svh" 253 uvm_object_utils(axi_if_concrete)
255 new (
string name=
"axi_if_concrete") {
259 int get_data_bus_width() {
264 task wait_for_clks(
int cnt=1) {
267 repeat (cnt) @(posedge clk);
270 task wait_for_not_in_reset() {
274 task wait_for_awready_awvalid() {
276 if (awready == 0b1 && awvalid == 10b1)
278 else if (awvalid == 0b1)
280 else if (awready == 0b1)
283 @(posedge awvalid or posedge awready) wait_for_awready_awvalid();
287 task wait_for_awvalid() {
291 task wait_for_wready() {
292 while (wready != 0b1)
293 wait_for_clks(.cnt(1));
296 task wait_for_bvalid() {
304 if (awready == 0b1 && awvalid== 10b1) {
316 if (wready == 0b1 && wvalid== 10b1) {
328 if (bready == 0b1 && bvalid== 10b1) {
340 if (arready == 0b1 && arvalid== 10b1) {
352 if (rready == 0b1 && rvalid== 10b1) {
360 bit get_awready_awvalid() {
361 return awready & awvalid;
368 bit get_wready_wvalid() {
369 return wvalid & wready;
380 bit get_bready_bvalid() {
381 return bready & bvalid;
392 bit get_arready_arvalid() {
393 return arready & arvalid;
400 bit get_rready_rvalid() {
401 return rvalid & rready;
412 task set_awvalid(bit state) {
413 wait_for_clks(.cnt(1));
417 task set_awready(bit state) {
418 wait_for_clks(.cnt(1));
422 task set_wvalid(bit state) {
423 wait_for_clks(.cnt(1));
427 task set_wready(bit state) {
428 wait_for_clks(.cnt(1));
432 task set_bvalid(bit state) {
433 wait_for_clks(.cnt(1));
437 task set_bready(bit state) {
438 wait_for_clks(.cnt(1));
442 task set_arvalid(bit state) {
443 wait_for_clks(.cnt(1));
447 task set_rvalid(bit state) {
448 wait_for_clks(.cnt(1));
452 task set_rready(bit state) {
453 wait_for_clks(.cnt(1));
457 void enable_awready_toggle_pattern(bit <31:0> pattern) {
458 awready_toggle_pattern=pattern;
459 awready_toggle_pattern_enable=1;
462 void disable_awready_toggle_pattern() {
463 awready_toggle_pattern_enable = 0;
466 void enable_wready_toggle_pattern(bit <31:0> pattern) {
467 wready_toggle_pattern=pattern;
468 wready_toggle_pattern_enable=1;
471 void disable_wready_toggle_pattern() {
472 wready_toggle_pattern_enable = 0;
475 void enable_bready_toggle_pattern(bit <31:0> pattern) {
476 bready_toggle_pattern=pattern;
477 bready_toggle_pattern_enable=1;
480 void disable_bready_toggle_pattern() {
481 bready_toggle_pattern_enable = 0;
484 void enable_arready_toggle_pattern(bit <31:0> pattern) {
485 arready_toggle_pattern=pattern;
486 arready_toggle_pattern_enable=1;
489 void disable_arready_toggle_pattern() {
490 arready_toggle_pattern_enable = 0;
493 void enable_rready_toggle_pattern(bit <31:0> pattern) {
494 rready_toggle_pattern=pattern;
495 rready_toggle_pattern_enable=1;
498 void disable_rready_toggle_pattern() {
499 rready_toggle_pattern_enable = 0;
627 if (awready_toggle_pattern_enable == 0b1) {
628 awready_toggle_pattern[31:0] <= {awready_toggle_pattern[30:0], awready_toggle_pattern[31]};
629 iawready <= awready_toggle_pattern[31];
639 if (wready_toggle_pattern_enable == 0b1) {
640 wready_toggle_pattern[31:0] <= {wready_toggle_pattern[30:0], wready_toggle_pattern[31]};
641 iwready <= wready_toggle_pattern[31];
650 if (bready_toggle_pattern_enable == 0b1) {
651 bready_toggle_pattern[31:0] <= {bready_toggle_pattern[30:0], bready_toggle_pattern[31]};
652 ibready <= bready_toggle_pattern[31];
663 if (arready_toggle_pattern_enable == 0b1) {
664 arready_toggle_pattern[31:0] <= {arready_toggle_pattern[30:0],
665 arready_toggle_pattern[31]};
667 iarready <= arready_toggle_pattern[31];
676 if (rready_toggle_pattern_enable == 0b1) {
677 rready_toggle_pattern[31:0] <= {rready_toggle_pattern[30:0],
678 rready_toggle_pattern[31]};
680 irready <= rready_toggle_pattern[31];
687 void use_concrete_class() {
691 axi_if_abstract::type_id::set_type_override( axi_if_concrete::get_type());
parameter C_AXI_LEN_WIDTH
logic< C_AXI_ID_WIDTH-1:0 > bid
logic< C_AXI_ID_WIDTH-1:0 > awid
logic< C_AXI_DATA_WIDTH/8-1:0 > wstrb
This packed struct is used to send read data channel information between the DUT and TB...
This packed struct is used to send write address channel information between the DUT and TB...
logic< C_AXI_DATA_WIDTH-1:0 > wdata
logic< C_AXI_DATA_WIDTH-1:0 > rdata
logic< C_AXI_ID_WIDTH-1:0 > arid
abstract base class for polymorphic interface class (axi_if_concrete) for AXI UVM environment ...
parameter C_AXI_DATA_WIDTH
logic< C_AXI_ID_WIDTH-1:0 > rid
logic< C_AXI_ADDR_WIDTH-1:0 > araddr
logic< C_AXI_ADDR_WIDTH-1:0 > awaddr
parameter C_AXI_ADDR_WIDTH
logic< C_AXI_LEN_WIDTH-1:0 > awlen
This packed struct is used to send write data channel information between the DUT and TB...
interface axi_if(input wire clk, input wire reset, inout wire awready, inout wire< C_AXI_ID_WIDTH-1:0 > awid, inout wire< C_AXI_ADDR_WIDTH-1:0 > awaddr, inout wire< C_AXI_LEN_WIDTH-1:0 > awlen, inout wire< 2:0 > awsize, inout wire< 1:0 > awburst, inout wire< 0:0 > awlock, inout wire< 3:0 > awcache, inout wire< 2:0 > awprot, inout wire< 3:0 > awqos, inout wire awvalid, inout wire wready, inout wire< C_AXI_DATA_WIDTH-1:0 > wdata, inout wire< C_AXI_DATA_WIDTH/8-1:0 > wstrb, inout wire wlast, inout wire wvalid, inout wire< C_AXI_ID_WIDTH-1:0 > bid, inout wire< 1:0 > bresp, inout wire bvalid, inout wire bready, inout wire arready, inout wire< C_AXI_ID_WIDTH-1:0 > arid, inout wire< C_AXI_ADDR_WIDTH-1:0 > araddr, inout wire< C_AXI_LEN_WIDTH-1:0 > arlen, inout wire< 2:0 > arsize, inout wire< 1:0 > arburst, inout wire< 0:0 > arlock, inout wire< 3:0 > arcache, inout wire< 2:0 > arprot, inout wire< 3:0 > arqos, inout wire arvalid, inout wire< C_AXI_ID_WIDTH-1:0 > rid, inout wire< 1:0 > rresp, inout wire rvalid, inout wire< C_AXI_DATA_WIDTH-1:0 > rdata, inout wire rlast, inout wire rready)
bindable interface for AXI UVM environment
logic< C_AXI_LEN_WIDTH-1:0 > arlen
This packed struct is used to send write response channel information between the DUT and TB...
This packed struct is used to send read address channel information between the DUT and TB...