So why is multi-threading needed at all? Multi-threading is used to allow the user to implement basic activities as independent processes, without having to comply with the “one cycle at a time’ method. It also allows writing additional environment processes outside the system model, to process inputs, to drive outputs or for simulating the environment. Therefore, a multi-threading capability is needed only if the user wishes to add threads that run “concurrently’ with the generated modules that execute as a single thread, denoted as the “main task’.