The new component for this class is the bus arbiter in TLM/ESL form tlm_busarb.h.
Aim: The aim of this class is to see that the bus arbiter is tivial in TLM form, especially when untimed.
Two instances of the nominal processor are connected to one bus.
The ESL-style bus arbiter implements no queueing and allows more than one thread to block in the target at once: but exclusion can be added to approximate cycle-accurate behaviour.
Exercise: Introduce some timing or other accounting into the TLM bus aribiter and see if similar answers are as predicted by fluid-flow/spreadsheet style analysis. Experienced RTL designers may wish to implement an RTL-style arbiter and compare answers with that, or else pen-and-paper can be used to analyse each of the possible interleaved behaviours in turn.
(C) 2000-2021 DJ Greaves.