为 AXI 总线创建测试平台
creating test bench for AXI bus
我必须为包含 AXI 总线的项目创建测试平台。
我开始编写接口和读写事务。我阅读了以下博客:
http://blog.verificationgentleman.com/2016/08/testing-uvm-drivers-part-2.html?showComment=1471877179631#c7809781639091671746
根据这篇博客,界面应该是:
interface vgm_axi_interface(input bit ACLK, input bit ARESETn);
logic [3:0] AWID;
logic [31:0] AWADDR;
logic [3:0] AWLEN;
logic AWVALID;
logic AWREADY;
logic [3:0] WID;
logic [31:0] WDATA;
logic WLAST;
logic WVALID;
logic WREADY;
logic [3:0] BID;
logic [1:0] BRESP;
logic BVALID;
logic BREADY;
endinterface
所有其他信号(例如 ARBURST、ARLOCK、ARCACHE、ARPROT、ARQOS、ARREGION)呢?根据AXI4的规范还有很多信号。
此外,事务中的以下属性是否足够写事务?
typedef enum bit [3:0] { LENGTH_[1:16] } length_e;
class sequence_item extends uvm_sequence_item;
rand bit [3:0] id;
rand bit [31:0] address;
rand length_e length;
rand transfer transfers[];
rand int unsigned delay;
endclass
class transfer extends uvm_sequence_item;
rand bit[31:0] data;
rand int unsigned delay;
endclass
此接口中的信号仅包含在具有固定大小和突发类型的 AXI 总线上执行单次写入操作所需的最小信号集。如果您的 DUT 支持的不仅仅是简单的写入,那么您必须添加其他信号。例如,如果您想测试读取操作,那么您还必须添加读取地址通道和读取数据通道所需的所有信号。
只有当您知道您的设计不支持某些 AXI 信号时,才可以省略它。如果您在写入操作中支持不同的突发类型,那么您必须将 AWBURST 信号添加到接口和事务中。
我必须为包含 AXI 总线的项目创建测试平台。
我开始编写接口和读写事务。我阅读了以下博客: http://blog.verificationgentleman.com/2016/08/testing-uvm-drivers-part-2.html?showComment=1471877179631#c7809781639091671746
根据这篇博客,界面应该是:
interface vgm_axi_interface(input bit ACLK, input bit ARESETn);
logic [3:0] AWID;
logic [31:0] AWADDR;
logic [3:0] AWLEN;
logic AWVALID;
logic AWREADY;
logic [3:0] WID;
logic [31:0] WDATA;
logic WLAST;
logic WVALID;
logic WREADY;
logic [3:0] BID;
logic [1:0] BRESP;
logic BVALID;
logic BREADY;
endinterface
所有其他信号(例如 ARBURST、ARLOCK、ARCACHE、ARPROT、ARQOS、ARREGION)呢?根据AXI4的规范还有很多信号。
此外,事务中的以下属性是否足够写事务?
typedef enum bit [3:0] { LENGTH_[1:16] } length_e;
class sequence_item extends uvm_sequence_item;
rand bit [3:0] id;
rand bit [31:0] address;
rand length_e length;
rand transfer transfers[];
rand int unsigned delay;
endclass
class transfer extends uvm_sequence_item;
rand bit[31:0] data;
rand int unsigned delay;
endclass
此接口中的信号仅包含在具有固定大小和突发类型的 AXI 总线上执行单次写入操作所需的最小信号集。如果您的 DUT 支持的不仅仅是简单的写入,那么您必须添加其他信号。例如,如果您想测试读取操作,那么您还必须添加读取地址通道和读取数据通道所需的所有信号。
只有当您知道您的设计不支持某些 AXI 信号时,才可以省略它。如果您在写入操作中支持不同的突发类型,那么您必须将 AWBURST 信号添加到接口和事务中。