Arbitrate memory transactions for one or more Memory Channel blocks
SoC Blockset / Memory
The Memory Controller block arbitrates between masters and grants them unique access to shared memory. Configure this block to support multiple channels with various arbitration protocols. The Memory Controller block is also instrumented to log and display performance data, enabling you to debug and understand the performance of your system at simulation time.
The following image shows the implementation of the Memory Controller block.
The numbers in the image represent different latency stages of the block.
A burst-request enters the block.
The request may be delayed by arbitration until it is granted access to the bus. Set the arbitration policy in Interconnect arbitration.
If your model requires an additional delay before the first transfer starts, set that value in Request to first transfer (in clocks).
The burst execution latency is calculated by the burst size, the data-width, the clock frequency, and the Bandwidth derating (%) value.
If your model requires a delay from burst completion until a burst response is issued to the channel, set that value in Last transfer to transaction complete (in clocks).
The memory controller has an internal state, which is visible when using a Logic Analyzer to view simulation and execution metrics. The state values are:
BurstRequest
: A burst request enters the block.
BurstExecuting
: A burst is executing.
BurstDone
: A burst is done executing.
BurstComplete
: The burst is complete and the
burstDone signal is sent to the master.
For information about visualizing memory controller latencies, see Memory Controller Latency Plots.
When Interconnect arbitration is set to
Round Robin
, the model does not support
simulation stepping. For more information on simulation stepping, see Simulation Stepper.
Memory Channel | Memory Traffic Generator | Register Channel