Description:
The expression evaluation with cycle_delay ( In Jeda, it is called
'timed expression') is a crucial mechanism to write the self-checking
testbench in effective way.
This cycled expression evaluates the given expression within the
given cycle duration, and returns the boolean (1 or 0) upon evaluation
of given expressions. The result of multiple-expressions will be
'anded'.
Bollowing syntax from sequence_exp definition, the cycled expression
has the following meanings:
1) single delay cycle will evaluate the given expression after the
given delay
<Example>
if( ##10 ( bus.strobe == 1, bus.data = exp_data) ) begin
..
2) delay cycle dulation to seek for the cycle when the given
expressions all becomes true.
if( ##[5,10] ( bus.strobe == 1, bus.data == exp_data ) ) begin
..
3) delay cycle dulation with '@' checks if the given expressions are
always true withing the given cycle dulation.
<Example>
if( ## @ [5,10] ( bus.strobe == 1, bus.error == 0 ) ) begin
..
The specific clocking event can be declared as:
if( ##[5,10] @(posedge clk) ( bus.strobe==1, bus.data==exp ) begin
..
<BNF>
Suggested modification to the current BNF definition:
A.8.4 Primaries
primary ::=
.
.
cycled_expression
cycled_expression ::=
cycle_delay_expression_range '(' expression { ',' expression } ')'
cycle_delay_expression_range ::=
'##' cycle_delay_exp_range_decl [ clocking_event ]
cycle_delay_exp_range_decl ::=
integral_number
|
identifier
|
'(' constant_expression ')'
|
'[' constant_expression ':' constant_expression ']'
|
'@' '[' constant_expression ':' constant_expression ']'
Note: non-terminal symbol in BNF is encapsulated in ' ' (single quote),
as bold characters can not be used in plain text.
Received on Tue Aug 31 00:40:40 2004
This archive was generated by hypermail 2.1.8 : Tue Aug 31 2004 - 00:40:57 PDT