Disable Statement
Formal Definition
The disable statement provides means of terminating active procedures.
Simplified Syntax
disable task_identifier;
disable block_identifier;
Description
The disable statement can be used to terminate tasks (Example 1),
named blocks (Example 2) and loop statements (Example 3) or for
skipping statements in loop iteration statements (Example 4). Using
the disable keyword followed
by a task or block identifier will only disable tasks and named
blocks. It cannot disable functions. If the task that is being
disabled enables other tasks, all enabled tasks will be terminated.
If a task is enabled more than once, then disabling that task
terminates all its instances.
Examples
Example 1
task t;
output o;
integer o;
#100 o = 15;
endtask
disable t; // Disabling task t.
Example 2
begin : named_block
a = 1; // #1
disable named_block;
a = 2; // #2
end
Statement #2 will never be executed, therefore after execution of
this block, variable 'a' will have 1 as its value.
Example 3
begin : break_block
i = 0;
forever begin
if (i==a)
disable break_block;
#1 i = i + 1;
end
end
The forever statement will be executed until 'i' is not equal to 'a'.
Example 4
begin
i = 0;
forever begin
: continue_block
if (i==a)
disable continue_block;
#1 i = i + 1;
end
end
If 'i' is equal to 'a' then statement (#1 i = i + 1) that appears
after the disable statement
will not be executed.
Important Notes
-
The disable statement cannot be used to disable functions.
-
If a task or a named block contains other tasks or named blocks then
disabling that task or a named block terminates all tasks and blocks within.
-
The disable statement can appear only within the procedural blocks.
|