2.7.4 Controlling simulation from behaviors

Any LISA+ behavior can use one of a set of function calls to detect and control the simulation environment.

Peripheral components do not normally use these behaviors. Normally, the user controls the state of the simulation through a debugger.

simRun()
Start the simulation. This might be used from, for example, the gui_callback() function.
simHalt()

Stop the simulation. This might be used if, for example, an error is detected.

Note:

The simulation does not stop immediately. The actual shutdown might be as much as 200 instructions after the call to simHalt().
simShutdown()

Stop the simulation and exit.

simIsRunning()
Returns true if the simulation is currently running. This might be used from, for example, the gui_callback() function.
cadiRefresh()

Notifies attached debuggers to refresh their state. The parameter is an int that combines one or more of the CADI_REFRESH_REASON_X flags (see the CADITypes.h file for details).

behavior myBehavior()
{
  // do something that changes model state when in stop mode
  // ...
  cadiRefresh(eslapi::CADI_REFRESH_REASON_REGISTERS
             | eslapi::CADI_REFRESH_REASON_OTHER);
}

Caution:

  • Do not call this function from behaviors that can be triggered as a response for refresh, for example a register read. An endless loop results.
  • This function only has effect if the simulation has stopped.
Non-ConfidentialPDF file icon PDF version101092_0100_04_en
Copyright © 2014–2018 Arm Limited or its affiliates. All rights reserved.