15.3. Static and Automatic Behavior
​
The storage allocation for task and function variables can be either static (default) or automatic. This determines the lifetime and sharing of local variables.
​
15.3.1. Static Tasks/Functions (Default)
​
In static tasks/functions, local variables are allocated once and shared across all invocations. They retain their values between calls.
​
Characteristics
​
-
Variables allocated ONCE at elaboration
​
-
All calls share the SAME storage
​
-
Values retained between calls
​
-
NOT re-entrant safe
​
-
Default behavior
​
Example
Verilog
15.3.2. Automatic Tasks/Functions
​
In automatic tasks/functions, local variables are allocated dynamically for each call. Each invocation gets its own storage space.
​
Characteristics
​
-
Variables allocated on EACH call
​
-
Each call has SEPARATE storage
​
-
Values NOT retained between calls
​
-
RE-ENTRANT safe
​
-
Required for recursion
​
-
Must use 'automatic' keyword
​
Syntax
Verilog
Example - Recursive Factorial
Verilog
15.3.3. Comparison: Static vs Automatic
.png)
