Hardware Reference
In-Depth Information
Chapter 14
Procedural Concurrent Assertions
My use of language is part and parcel of my message.
— Theo Van Gogh
A traditional way of writing assertions is to place them and consider them
as procedural statements. Various programming languages already provide some
syntactic forms to express assertions, either as first class language features or
as language extensions [ 4 , 50 , 53 , 60 ] expressed using pragmas or comments.
Depending on the objectives of a language, assertions can vary from being simple
Boolean checks that ensure the sanctity of variable values to being event or time
based for expressing checks over temporality of values. We have already seen the
immediate and deferred assertions in Sects. 4.2 and 4.3 of SystemVerilog that are
written as procedural statements.
A concurrent assertion written in a procedure is called a procedural concur-
rent assertion .
Clearly, concurrent assertions are more complex than immediate or deferred
assertions. The influence of clocks and synchronous delays in the assertion evalua-
tion is appreciable. Such evaluations may require more than a single simulation time
step, sometimes open ended with no predetermined time span. Yet, a concurrent
assertion attempt behaves in a similar way to a task, that, once started, carries on
its execution of statements with no predetermined time span. Another procedural
statement that is similar in its behavior is fork .. join , which starts executing parallel
processes with individual threads of evaluation that possibly terminate without a
coordinated end point between the threads.
Search WWH ::




Custom Search