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
|
void
|
||||||
Gem5SimControl::run()
|
Gem5SimControl::run()
|
||||||
{
|
{
|
||||||
|
// notify callback
|
||||||
|
beforeSimulate();
|
||||||
|
|
||||||
GlobalSimLoopExitEvent *exit_event = NULL;
|
GlobalSimLoopExitEvent *exit_event = NULL;
|
||||||
|
|
||||||
if (simulationEnd == 0) {
|
if (simulationEnd == 0) {
|
||||||
|
@ -165,6 +168,9 @@ Gem5SimControl::run()
|
||||||
|
|
||||||
getEventQueue(0)->dump();
|
getEventQueue(0)->dump();
|
||||||
|
|
||||||
|
// notify callback
|
||||||
|
afterSimulate();
|
||||||
|
|
||||||
#if TRY_CLEAN_DELETE
|
#if TRY_CLEAN_DELETE
|
||||||
config_manager->deleteObjects();
|
config_manager->deleteObjects();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -77,6 +77,22 @@ class Gem5SimControl : public Module, public Gem5SimControlInterface
|
||||||
/// Pointer to a previously created instance.
|
/// Pointer to a previously created instance.
|
||||||
static Gem5SimControl* 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:
|
public:
|
||||||
SC_HAS_PROCESS(Gem5SimControl);
|
SC_HAS_PROCESS(Gem5SimControl);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue