trick/trick_source/sim_services/Executive/requirements.dox_in

126 lines
6.2 KiB
Plaintext
Raw Normal View History

2015-02-26 15:02:31 +00:00
/**
@page LEVEL3 Scheduler Requirements
@section LEVEL4 Simulation Time
-# %Trick shall track simulation elapsed time by an integer count of tics/second
[ @anchor r_exec_time_0 r_exec_time_0 ]
-# %Trick shall initialize simulation elapsed time after all initialization class jobs have completed.
[ @anchor r_exec_time_1 r_exec_time_1 ]
-# %Trick shall increment simulation elapsed time to the next lowest job call time greater than
the current simulation time after all jobs at the current simulation time
have completed.
[ @anchor r_exec_time_2 r_exec_time_2 ]
@section LEVEL4 Modes
-# %Trick shall provide an initialization mode
[ @anchor r_exec_mode_0 r_exec_mode_0 ]
-# %Trick shall provide a run mode
[ @anchor r_exec_mode_1 r_exec_mode_1 ]
-# %Trick shall provide a freeze mode
[ @anchor r_exec_mode_2 r_exec_mode_2 ]
-# %Trick shall provide an exit mode
[ @anchor r_exec_mode_3 r_exec_mode_3 ]
-# %Trick shall provide a mode command to transition to Freeze
[ @anchor r_exec_mode_4 r_exec_mode_4 ]
-# %Trick shall provide a mode command to transition to Run
[ @anchor r_exec_mode_5 r_exec_mode_5 ]
-# %Trick shall provide a mode command to transition to Shutdown
[ @anchor r_exec_mode_6 r_exec_mode_6 ]
@section LEVEL4 Jobs
-# %Trick shall provide a method for adding simulation objects to the
scheduler prior to execution.
[ @anchor r_exec_jobs_2 r_exec_jobs_2 ]
-# %Trick shall order jobs by job_class, then phase, then sim_object id, then job_id
[ @anchor r_exec_jobs_3 r_exec_jobs_3 ]
@section LEVEL4 Periodic Jobs
-# %Trick shall execute periodic scheduled jobs during simulation
run mode (all scheduled types)
[ @anchor r_exec_periodic_0 r_exec_periodic_0 ]
-# %Trick shall execute periodic freeze jobs during simulation
freeze mode (freeze)
[ @anchor r_exec_periodic_1 r_exec_periodic_1 ]
-# %Trick shall execute periodic scheduled jobs during simulation run mode at the end
of a settable software_frame (end_of_frame)
[ @anchor r_exec_periodic_2 r_exec_periodic_2 ]
-# %Trick shall assign the initial call time for a periodic job to the
current simulation time + job offset.
[ @anchor r_exec_periodic_3 r_exec_periodic_3 ]
-# %Trick shall reschedule subsequent job call times for a periodic job to the
current simulation time + job cycle.
[ @anchor r_exec_periodic_4 r_exec_periodic_4 ]
@section LEVEL4 Discrete Jobs
-# %Trick shall execute discrete job execution scheduling on simulation startup
(default_data)
[ @anchor r_exec_discrete_0 r_exec_discrete_0 ]
-# %Trick shall execute discrete job execution scheduling during simulation
initialization (initialization)
[ @anchor r_exec_discrete_1 r_exec_discrete_1 ]
-# %Trick shall execute of discrete job execution scheduling upon entering simulation
freeze (freeze_init)
[ @anchor r_exec_discrete_2 r_exec_discrete_2 ]
-# %Trick shall execute of discrete job execution scheduling upon exiting simulation
freeze (unfreeze)
[ @anchor r_exec_discrete_3 r_exec_discrete_3 ]
-# %Trick shall execute discrete job execution scheduling during simulation
termination (shutdown)
[ @anchor r_exec_discrete_4 r_exec_discrete_4 ]
@section LEVEL4 Instrumentation Jobs
-# %Trick shall provide a method for inserting a job before each initialization
and each scheduled job within a simulation.
[ @anchor r_exec_instrument_0 r_exec_instrument_0 ]
-# %Trick shall provide a method for inserting a job before a single initialization
or scheduled job within a simulation.
[ @anchor r_exec_instrument_1 r_exec_instrument_1 ]
-# %Trick shall provide a method for inserting a job after each initialization
and each scheduled job within a simulation.
[ @anchor r_exec_instrument_2 r_exec_instrument_2 ]
-# %Trick shall provide a method for inserting a job after a single initialization
or scheduled job within a simulation.
[ @anchor r_exec_instrument_3 r_exec_instrument_3 ]
-# %Trick shall provide a method for removing instrumentation job(s).
[ @anchor r_exec_instrument_4 r_exec_instrument_4 ]
@section LEVEL4 Threads
-# %Trick shall support single threaded execution during all modes of operation
[ @anchor r_exec_thread_0 r_exec_thread_0 ]
-# %Trick shall support multiple threads of execution during run mode.
[ @anchor r_exec_thread_1 r_exec_thread_1 ]
-# %Trick shall support child threads that synchronize execution with each time step of the parent thread
(synchronous thread)
[ @anchor r_exec_thread_2 r_exec_thread_2 ]
-# %Trick shall support child threads that does not synchronize execution with the parent thread. Thread
jobs are restarted at next available time step from the master thread. (asynchronous thread)
[ @anchor r_exec_thread_3 r_exec_thread_3 ]
-# %Trick shall support child threads that does synchronizes execution with the parent thread at a specified
interval. This interval may be greater than a time step in the parent thread (asynchronous must finish (AMF) thread)
[ @anchor r_exec_thread_4 r_exec_thread_4 ]
-# %Trick shall spawn enough threads to accomodate jobs listed within the S_define file
[ @anchor r_exec_thread_5 r_exec_thread_5 ]
-# %Trick shall provide inter-thread job dependencies. This ensures
pre-requesite jobs are completed before current job execution.
[ @anchor r_exec_thread_6 r_exec_thread_6 ]
-# %Trick shall terminate simulation execution if a child thread exits
[ @anchor r_exec_thread_7 r_exec_thread_7 ]
@section LEVEL4 Signals
-# %Trick shall assign signal handlers to attempt a graceful shutdown of the
simulation when the following signals occur: SIGINT, SIGTERM, SIGBUS, SIGSEGV, SIGFPE
[ @anchor r_exec_signal_0 r_exec_signal_0 ]
-# %Trick shall assign signal handlers to handle the SIGCHLD signal
[ @anchor r_exec_signal_1 r_exec_signal_1 ]
-# %Trick shall attempt to terminate the simulation gracefully when a
SIGTERM, SIGBUS, or SIGSEGV signal is caught. Program corruption at this point
may be too great to complete this requirement, hence "attempt".
[ @anchor r_exec_signal_2 r_exec_signal_2 ]
-# %Trick shall allow the user to assign the system default signal handlers for the signals
SIGBUS, SIGSEGV, or SIGFPE signals.
[ @anchor r_exec_signal_3 r_exec_signal_3 ]
*/