Formal Definition
Structured procedures provide a means of modeling blocks of procedural statements.
Simplified Syntax
always statement
initial statement
function
task
Description
Functions and tasks are described in the section: Task and Functions.
The initial statement (Example 1) is executed only during a simulation run. The always procedural block statement (Example 2) is executed continuously during simulation, i.e. when the flow of program reaches the last statement in the block, the flow continues with the first statement in the block.
The always statement should contain at least one procedural timing control because otherwise it may hang the simulation.
Module definition can contain more than one initial or always statement.
Care must be taken when same reg type variables are used in multiple procedural blocks, initial or always. This is because these blocks run in parallel and changing or assigning to one variable affects the same variable in another parallel block.
Examples
Example 1
initial out = 1'b0;
initial begin
#10;
a = 1'b0;
#10;
a = 1'b1;
#10;
a = 1'bz;
end
Example 2
always @(posedge clk)
q = d;
always #10 clk = ~clk;
initial clk = 0;
initial repeat(20)#\10 clk=~clk;
The first initial statement sets clk to 0 at time 0, and the second initial block toggles the clk 20 times every 10 time units.
Important Notes
· The always statement should contain at least one procedural timing control.
No comments:
Post a Comment
Please provide valuable comments and suggestions for our motivation. Feel free to write down any query if you have regarding this post.