Memory Model
The memory model UVC models a memory device which any host interface can read
from or write to. It is implemented as a uvm_object
, and instantiates an
associative array of bytes system_memory
. This class is parameterized by both
the address width and the data width, and creates two typedefs
to represent
both, mem_addr_t
and mem_data_t
.
The mem_model
class has four main functions, which are detailed below.
read_byte(mem_addr_t addr)
This function looks up the byte of data corresponding to the memory address
passed in, and returns it. If the address does not exist in system_memory
, it
will randomize the returned data and throw a UVM_ERROR
.
write_byte(mem_addr_t addr, bit [7:0] data)
This function simply assigns the given data to the specified memory address
location in system_memory
.
write(input mem_addr_t addr, mem_data_t data)
This function writes a full memory word of width mem_data_t
to the specified
address, breaking it down into a series of back-to-back calls to write_byte()
to correctly byte-address the memory.
read(mem_addr_t addr)
This function reads a full memory word of width mem_data_t
from the specified
address, breaking it down into a series of back-to-back calls to read_byte()
to correctly byte-address the memory.