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