AXI VIP中Memory的实现方法
摘要:在DMA验证过程中,需要对比read data与write data,但是araddr与awaddr未必是aligned address,那么我们怎么去对比DMA搬运的数据是否正确呢?为此我们需要造一个memory来存放数据,然后再对比DMA搬运的数据是否正确。
一、用SystemVerilog实现Memory。
下面介绍一种用关联数组来模拟Memory的例子:
class dma_scb extends uvm_scoreboard;
protected bit [7:0] shadow_mem[*];
protected bit [63:0] addr_map[*];
protected bit [31:0] size_map[*];
protected bit [10:0] length_map[*];
protected int id_index;
function new(string name = "dma_scb", uvm_component parent = null);
super.new(name, parent);
id_index = 0;
endfunction : new
extern virtual function void get_req(axi4_transaction trans);
extern virtual function void get_rsp(axi4_transaction trans);
`uvm_component_utils(dma_scb)
endcla