Rational Statemate semantics assumes that the step execution is based on the set of values at the beginning of the step. It means all assignments are performed using special update list, where the updated values are saved until the update function will be called. The update function executes all the deferred assignments into the actual data objects, based on the update list. As a by-product, the function can determine whether the system is still processing data or it has reached a stationary condition. If the update list is empty, it means that the behavioral module executed an idle step. The final decision on the system’s stability is based on the result of the update function execution, task execution and combinational assignment execution (if exist in model).
Note that the time-out events are buffered into another update list, which is processed by the update function too. Such separation allows not to block timer interrupts while the step in the behavioral module and tasks is executed. Moreover, the tasks perform direct assignments of their output parameters not using update list, because the step in the behavioral module finishes before task execution and there is no possibility of racing between model and task assignments.