System verilog 读/写axi事务中的必要属性是什么?

System verilog 读/写axi事务中的必要属性是什么?,system-verilog,uvm,System Verilog,Uvm,我正在为包含AXI总线的设计编写验证环境 读/写AXI事务中的必要属性是什么 我的交易如下所示。我还需要补充什么吗 typedef enum bit [3:0] { LENGTH_[1:256] } length_e; //---------------------------------------------------------------------- //Transaction //--------------------------------------------------

我正在为包含AXI总线的设计编写验证环境

读/写AXI事务中的必要属性是什么

我的交易如下所示。我还需要补充什么吗

typedef enum bit [3:0] { LENGTH_[1:256] } length_e;

//----------------------------------------------------------------------
//Transaction
//----------------------------------------------------------------------
class axi_transaction extends uvm_sequence_item;
   bit [3:0] id;
   bit [31:0] address;
   length_e length;
   transfer transfers[];
   int unsigned delay;

endclass

class transfer extends uvm_sequence_item;
  rand bit[31:0] data;
  rand int unsigned delay;

  // ...
endclass

AXI4有5个通道,其中3个是写通道,2个是读通道,即写地址通道、写数据通道、写响应通道、读地址通道和读数据通道。基本上,对于握手机制,您需要关注的主要是有效和准备好的信号以及握手时,它生成正确的响应BRESP和RRESP信号。对于深度规格,您应该阅读ARM AMBA AXI规格。

您可能需要建立许多属性。您可能会通过仔细阅读AXI规范并查找其中提到“X必须做Y”的情况来发现其中的许多问题,例如,您可能希望要求当主设备声明有效而从设备未准备就绪时,主设备将其请求保持稳定,直到准备就绪。除了规范本身之外,您可能还需要检查其他特定于应用程序的属性。例如,“用户”位是用户定义的信号,您可能希望它以某种特定的方式工作。无论如何,这将是一个相当大的项目。