Hardware Reference
In-Depth Information
Active update
and
evaluation
events
Events from
#0
assignments
Events from
NBA
assignments
Active queue
Inactive queue
NBA queue
Fig. 3.1
TheActiveregionset
As the name suggests, the Active region queue contains events pending for
immediate execution. Events in this queue may be executed in any order, implying
parallelism between events. After an event from the queue has been executed, such
as updating a variable value, it is removed from the queue. Initially at time 0, the
initial processes are scheduled in the Active region queue.
If a statement is encountered with #0 as the delay control, an evaluation event
for the statement is entered into the Inactive region queue. When all events from the
Active region queue have been executed with the queue becoming empty, the events
from the Inactive queue are transferred to the Active region queue, resulting in an
empty Inactive queue. The execution of the events from the Active region queue
resumes once again.
Finally, if the execution encounters a nonblocking assignment, the expression
on the right-hand side of the assignment is evaluated and an update event for the
variable on the left-hand side with the computed value is appended to the NBA
region queue. The events from this queue start execution only when the Active and
Inactive region queues are empty. Unlike the Active region queue, the events in
the NBA region queue are executed in the same order as they are entered in the
queue. Therefore, the sequential order of nonblocking assignments in a procedure
is replicated in the queue and those statements are executed in order.
Ordinarily, nonblocking assignments model register transfer statements triggered
by the clock derived from its enclosing always procedure. As a result, the register
stores the new value and propagates it. If there is a combinational logic driven by
Search WWH ::




Custom Search