misc: Clean up and complete the gem5<->SystemC-TLM bridge [10/10]
The current TLM bridge only provides a Slave Port that allows the gem5 world to send request to the SystemC world. This patch series refractors and cleans up the existing code, and adds a Master Port that allows the SystemC world to send requests to the gem5 world. This patch: * Add callbacks for the Gem5SimControl that are called at before and * after simulate() Reviewed at http://reviews.gem5.org/r/3799/ Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
parent
78e4967b6a
commit
a309c2f343
2 changed files with 22 additions and 0 deletions
|
@ -152,6 +152,9 @@ Gem5SimControl::end_of_elaboration()
|
|||
void
|
||||
Gem5SimControl::run()
|
||||
{
|
||||
// notify callback
|
||||
beforeSimulate();
|
||||
|
||||
GlobalSimLoopExitEvent *exit_event = NULL;
|
||||
|
||||
if (simulationEnd == 0) {
|
||||
|
@ -165,6 +168,9 @@ Gem5SimControl::run()
|
|||
|
||||
getEventQueue(0)->dump();
|
||||
|
||||
// notify callback
|
||||
afterSimulate();
|
||||
|
||||
#if TRY_CLEAN_DELETE
|
||||
config_manager->deleteObjects();
|
||||
#endif
|
||||
|
|
|
@ -77,6 +77,22 @@ class Gem5SimControl : public Module, public Gem5SimControlInterface
|
|||
/// Pointer to a previously created instance.
|
||||
static Gem5SimControl* instance;
|
||||
|
||||
/** A callback that is called from the run thread before gem5 simulation is
|
||||
* started.
|
||||
*
|
||||
* A derived class may use this to perform any additional initializations
|
||||
* prior simulation.
|
||||
*/
|
||||
virtual void beforeSimulate() {}
|
||||
|
||||
/** A callback that is called from the run thread after gem5 simulation
|
||||
* completed.
|
||||
*
|
||||
* A derived class may use this to perform any additional tasks after gem5
|
||||
* exits. For instance, a derived class could use this to call sc_stop().
|
||||
*/
|
||||
virtual void afterSimulate() {}
|
||||
|
||||
public:
|
||||
SC_HAS_PROCESS(Gem5SimControl);
|
||||
|
||||
|
|
Loading…
Reference in a new issue