Ensures that when a specified start event is TRUE, then a specified expression must not evaluate TRUE before a minimum number of clock cycles and must transition to TRUE no later than a maximum number of clock cycles.
|
Parameters:
severity_level
min_cks
max_cks
action_on_new_start
property_type
msg
coverage_level
|
Class:
n-cycle assertion
|
assert_frame
[#(severity_level, min_cks, max_cks, action_on_new_start, property_type,
msg, coverage_level )]
instance_name (clk, reset_n, start_event, test_expr );
The assert_frame
assertion checker checks for a start event at each rising edge of clk. A start event occurs if start_event has transitioned to TRUE, either at the clock edge or in the previous cycle. A start event also occurs if start_event is TRUE at the rising clock edge after a checker reset.
When a start event occurs, the checker performs the following steps:
1. Unless it is disabled by setting min_cks to 0, a minimum
check is initiated. The check evaluates test_expr at each subsequent rising edge of clk for the next min_cks cycles. However, if a sampled value of test_expr is TRUE, the minimum
check fails and the checker returns to the state of waiting for a start event.
2. Unless it is disabled by setting max_cks to 0 (or a minimum
violation has occurred), a maximum
check is initiated. The check evaluates test_expr at each subsequent rising edge of clk for the next (
max_cks - min_cks) cycles. However, if a sampled value of test_expr is TRUE, the checker returns to the state of waiting for a start event. If its value does not transition to TRUE by the time max_cks cycles transpire (from the start of checking), the maximum
check fails at cycle max_cks.
3. The checker returns to the state of waiting for a start event.
The method used to determine how to handle start_event when the checker is in the state of checking test_expr is controlled by the action_on_new_start parameter. The checker has the following actions:
‘OVL_IGNORE_NEW_START
The checker does not sample start_event until it returns to the state of waiting for a start event.
‘OVL_RESET_ON_NEW_START
Each time the checker samples test_expr, it also samples start_event. If start_event is TRUE, the checker first checks whether a pending minimum check is just failing. If so, the assertion failed. Then——unless the assertion failed and it was fatal——the checker terminates the current checks and initiates a new pair of checks.
‘OVL_ERROR_ON_NEW_START
Each time the checker samples test_expr, it also samples start_event. If start_event is TRUE, the assertion fails with an illegal start event
error. If the error is not fatal, the checker returns to the state of waiting for a start event at the next rising clock edge.
1. The special case where min_cks and max_cks are both 0 is the default. Here, test_expr must be TRUE every cycle there is a start event.
assert_change, assert_next, assert_time, assert_unchange, assert_width
Ensures that after a rising edge of req
, ack
goes high between 2 and 4 cycles later. New start events during transactions are not considered to be new transactions and are ignored.
Ensures that after a rising edge of req
, ack
goes high between 2 and 4 cycles later. A new start event during a transaction restarts the transaction.
Ensures that after a rising edge of req
, ack
goes high between 2 and 4 cycles later. Also ensures that a new transaction does not start before the previous transaction is acknowledged. If a start event occurs during a transaction, the checker does does not initiate a new check.
© Accellera Organization, Inc. 2005 All Rights Reserved. |
Standard OVL V1.1a |