Each module connected to a channel (e.g. channel Controller and DRAM) is able
to access the TLM recorder for that channel.
A module connected to more than one channel must be able to access
multiple TLM recorders (one from each channel) and must also be able to decide
for which TLM recorder records a transaction should be forwarded. The Arbiter
is an example of this kind of module and is currently able to do that.
Output file names after this implementation:
<trace setup ID>_channel[0-9]+.tdb (dependent on the number of channels)
<trace setup ID>.txt (a single file, independent of the number of channels)
Tests were made with this sim-batch.xml:
<simulation>
<simconfig>
<Debug value="1" />
<DatabaseRecording value="1" />
<PowerAnalysis value="1" />
<NumberOfTracePlayers value="1"/>
<NumberOfMemChannels value="4"/>
</simconfig>
<memspecs>
<memspec src="../../DRAMSys/dramSys/resources/configs/memspecs/WideIO.xml"></memspec>
</memspecs>
<addressmappings>
<addressmapping src="../../DRAMSys/dramSys/resources/configs/amconfigs/am_wideio.xml"></addressmapping>
</addressmappings>
<memconfigs>
<memconfig src="../../DRAMSys/dramSys/resources/configs/memconfigs/fifo.xml"/>
</memconfigs>
<tracesetups>
<tracesetup id="fifo">
<device clkMhz="200">wideio_multi_channel.stl</device>
</tracesetup>
</tracesetups>
</simulation>
Output files generated:
fifo_channel0.tdb
fifo_channel1.tdb
fifo_channel2.tdb
fifo_channel3.tdb
fifo.txt
Now we have a root project file - dram.vp.system.pro - that includes
dramSys.pro and traceAnanlyzer.pro files. This way it is possible to build
both projects easily.
After buiding from QTCreator the results will be in dram.vp.system/build* and
its sub-directories.
Changes in the Arbiter block:
- now multiple initiator sockets are possible. These intiator sockets connect to multiple memory controllers;
- added lots of comments to the code in order to make it easier to understand.
Changes in Simulaton[cpp,h]:
- added TODO messages in some points that need to be changed to provide full support to multiple memory channles/controllers based on configuration.