assert_width

Ensures that when value of a specified expression is TRUE, it remains TRUE for a minimum number of clock cycles and transitions from TRUE no later than a maximum number of clock cycles.

Parameters:
severity_level
min_cks
max_cks
property_type
msg
coverage_level
Class:
n-cycle assertion

Syntax

assert_width 
		[#(severity_level, min_cks, max_cks, property_type, msg, coverage_level )] 
		instance_name (clk, reset_n, test_expr );

Parameters

 
severity_level
Severity of the failure. Default: ‘OVL_ERROR.
 
min_cks
Minimum number of clock edges test_expr must remain TRUE once it is sampled TRUE. The special case where min_cks is 0 turns off minimum checking (i.e., test_expr can transition from TRUE in the next clock cycle). Default: 1 (i.e., same as 0).
 
max_cks
Maximum number of clock edges test_expr can remain TRUE once it is sampled TRUE. The special case where max_cks is 0 turns off maximum checking (i.e., test_expr can remain TRUE for any number of cycles). Default: 1 (i.e., test_expr must transition from TRUE in the next clock cycle).
 
property_type
Property type. Default: ‘OVL_ASSERT.
 
msg
Error message printed when assertion fails. Default: “VIOLATION”.
 
coverage_level
Coverage level. Default: ‘OVL_COVER_ALL.

Ports

 
clk
 
Clock event for the assertion. The checker samples on the rising edge of the clock.
 
test_expr
 
Expression that should evaluate to TRUE for at least min_cks cycles and at most max_cks cycles after it is sampled TRUE.

Description

The assert_width assertion checker checks the single-bit expression test_expr at each rising edge of clk. If the value of test_expr is TRUE, 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. If its value is not TRUE, the minimum check fails. Otherwise, after min_cks -1 cycles transpire, the minimum check terminates.

2. Unless it is disabled by setting max_cks to 0, a maximum check is initiated. The check evaluates test_expr at each subsequent rising edge of clk. If its value does not transition from TRUE by the time max_cks cycles transpire (from the start of checking), the maximum check fails.

3. The checker returns to checking test_expr in the next cycle. In particular if test_expr is TRUE, a new set of checks is initiated.

Assertion Checks

 
MIN_CHECK
The value of test_expr was held TRUE for less than min_cks cycles.
 
MAX_CHECK
The value of test_expr was held TRUE for more than max_cks cycles.
 
min_cks > max_cks
The min_cks parameter is greater than the max_cks parameter (and max_cks >0). Unless the violation is fatal, either the minimum or maximum check will fail.

Cover Points

 
test_expr_asserts
A check was initiated (i.e., test_expr was sampled TRUE).
 
test_expr_asserted_for_min_cks
The expression test_expr was held TRUE for exactly min_cks cycles (min_cks > 0).
 
test_expr_asserted_for_max_cks
The expression test_expr was held TRUE for exactly max_cks cycles (max_cks > 0).

See also

assert_change, assert_time, assert_unchange

Example

  
assert_width #(
 
‘OVL_ERROR,
2,
3,
‘OVL_ASSERT,
“Error: invalid request”,
‘OVL_COVER_ALL)
// severity_level
// min_cks
// max_cks
// property_type
// msg
// coverage_level
 
valid_request (
 
 
 
clk,
reset_n,
req == 1);
// clock
// reset
// test_expr
    

Ensures req asserts for 2 or 3 cycles.


  © Accellera Organization, Inc. 2005
All Rights Reserved.
Standard OVL V1.1a