image/svg+xml
stopped
[IN(/simulation_state/stopped)and IN(/simulation_flow/stopped)] / self.finalize()
statechart {inports: in; outports: out, semantics: {internal_event_lifeline=next_combo_step}}
UserOutput
waiting
termination_condition / out::terminated, out::current_state(self.simulated_time, self.state)
paused / out::paused, out::current_state(self.simulated_time, self.state)
big_step_done [IN(/simulation_state/running/realtime) or IN(/simulation_state/running/big_step) or IN(/simulation_state/running/big_step_done)] / out::stepped, out::current_state(self.simulated_time, self.state)
breakpoint_triggered out::breakpoint_triggered(self.simulated_time, self.triggered_bp)
Listening
in::add_breakpoint(name, function, enabled, disable_on_trigger) / result = self.addBreakpoint(name, function, enabled, disable_on_trigger), out::add_breakpoint_result(result)
in::del_breakpoint(name) / result = self.delBreakpoint(name), out::del_breakpoint_result(result)
in::toggle_breakpoint(name) / result = self.toggleBreakpoint(name), out::toggle_breakpoint_result(result)
BreakpointManager
listening
in::god_event(state_var, new_val) [IN(/simulation_state/paused)] / result = self.godEvent(state_var, new_val), god_event_result(result)
GodEventManager
SimulationState
Paused
Stopped
in::continuous
self.endCondition() / termination_condition
Continuous
Running
in::pause
Realtime
in::realtime(scale)
onentry: self.resetStartTime()
BigStep
BigStepDone
big_step_done
in::big_step
after(sccd_yield())
PrePaused
PreBreakpointTriggered
after(sccd_yield()*2) / paused
[self.breakpointTriggers(INSTATE(Realtime))]
after(sccd_yield()*2) / breakpoint_triggered
SimulationFlow
Initialize
/ self.initialize()
CheckTermination
[ IN(/SimulationState/Running/Continuous)or IN(/SimulationState/Running/BigStep)or IN(/SimulationState/Running/SmallStep)]
after(sccd_yield()) / big_step_done
Waiting
[IN(/SimulationState/Running/Realtime)]
after(sccd_yield()) / self.syncSimulatedTime()
[self.waitTime() <= sccd_yield()]
InitializeDebugger
/ self.initializeDebugger()
ExecuteStep
CheckNextComponent
PreCheckCycle
CheckCycle
IsolateStrongComponents
onentry: self.strongComponentList = self.createStrongComponents()
CreateDepGraph
onentry: self.depGraph = self.createDepGraph()
[IN(/SimulationState/Running)]
after(sccd_yield() * 2)[self.hasNextStrongComponent()]
[not self.currentComponentIsCycle()] / self.computeBlock(), small_step_done
[self.currentComponentIsCycle()] / self.computeCycle(), small_step_done
after(sccd_yield())[not self.hasNextStrongComponent()]
SmallStep
SmallStepDone
small_step_done
in::small_step
after(sccd_yield())
Stopped
[IN(/SimulationState/Stopped)]