system verilog TB中AXI配置接口简单agent的一个实例
最近做了一个legacy的验证项目,TB是用system verilog搭建的,里面用到了许多system verilog本身的特性,如mailbox,event同步机制等,其中DUT的寄存器配置口的是AXI4-lite协议接口,其环境中搭建配置寄存器的AXI master agent方式比较别致,本文重点分析一下。分析采用从后往前追溯的思路。
case 里面的用法
case里面使用的形式如下:
reg_wr({BASE_ADDR,OFFSET_ADDR}, wr_data, “DMA”, 1’b0);
reg_rd({BASE_ADDR, OFFSET_ADDR}, rd_data, “DMA”, 1’b0);
读写task的定义
task automatic reg_wr ( input logic [63:0] address,
input logic [31:0] wr_data,
input string device_typ = "DMA",
input logic display_en = 1'b1
);
logic [31:0] tmp_reg_data;
logic [31:0] tmp_wr_data=32'd0;
//axi transcation constructor
axi_transaction axi_trans_req = new();
axi_transaction axi_trans_rsp;
axi_trans_req.addr = address;
axi_trans_req.wr_data[0] = wr_data;
axi_tra