mem: Add memory rank-to-rank delay
authorWendy Elsasser <wendy.elsasser@arm.com>
Sat, 20 Sep 2014 21:17:57 +0000 (17:17 -0400)
committerWendy Elsasser <wendy.elsasser@arm.com>
Sat, 20 Sep 2014 21:17:57 +0000 (17:17 -0400)
commitb6ecfe918364ce4b7df0f95590b483100bbfcba9
treeaae499f62e89e9b15bc23a1258f8a4aa58378eb6
parenta384525355c37f8776e03c78e12279c38c5c3097
mem: Add memory rank-to-rank delay

Add the following delay to the DRAM controller:
 - tCS : Different rank bus turnaround delay

This will be applied for
 1) read-to-read,
 2) write-to-write,
 3) write-to-read, and
 4) read-to-write
command sequences, where the new command accesses a different rank
than the previous burst.

The delay defaults to 2*tCK for each defined memory class. Note that
this does not correspond to one particular timing constraint, but is a
way of modelling all the associated constraints.

The DRAM controller has some minor changes to prioritize commands to
the same rank. This prioritization will only occur when the command
stream is not switching from a read to write or vice versa (in the
case of switching we have a gap in any case).

To prioritize commands to the same rank, the model will determine if there are
any commands queued (same type) to the same rank as the previous command.
This check will ensure that the 'same rank' command will be able to execute
without adding bubbles to the command flow, e.g. any ACT delay requirements
can be done under the hoods, allowing the burst to issue seamlessly.
src/mem/DRAMCtrl.py
src/mem/dram_ctrl.cc
src/mem/dram_ctrl.hh