Aim:In class 4 we look at the TLM version of nominalproc and the TLM version of the RAM tlmram32.h.
We also look at the tiny Quantum Keeper embedded in the TLM version of nominal processor.
We look at how the memory models can be called in both a TLM style and an RTL style from a TLM style implementation of nominalproc.
Exercises: A number of experiments of the following style can made. Ideally, first introduce a high-level model of a new peripheral of your own design and a device driver for it into the system. Each can be entirely trivial: it will still demonstrate the coding style.
You may replace one of the memory blocks with your peripheral or else add a further bus multiplexor and connect the peripheral along side the exisiting memory blocks. Or, to make it really easy, you can just pretend one of the memory blocks is your perhipheral.
Then modify the system in several different ways, showing how to
Exercise for the keen: convert the design to use the standardised TLM 2.0 generic transport payload. Then modify further to use the TLM2.0 convenience sockets.
In item 3 above, we have introduced transactors. which connect the TLM processor to RTL-style components of the last class. This gives us a mixed abstraction simulation. The transactors can best be wrapped up as their own SystemC module. Exercise:Try further experiments of this nature, perhaps interchanging transactor client and server interfaces (this alters whether or not the transactor needs its own thread (blocking style) or method (non-blocking style).
Later on we will look at automatic synthesis of such transactors from protocol specifications.