assert_win_unchange

Ensures that the value of a specified expression does not change in a specified window between a start event and an end event.

Parameters:
severity_level
width
property_type
msg
coverage_level
Class:
event-bounded assertion

Syntax

assert_win_unchange 
		[#(severity_level, width, property_type, msg, coverage_level )] 
		instance_name (clk, reset_n, start_event, test_expr, end_event );

Parameters

 
severity_level
Severity of the failure. Default: ‘OVL_ERROR.
 
width
Width of the test_expr argument. Default: 1.
 
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.
 
reset_n
 
Active low synchronous reset signal indicating completed initialization.
 
start_event
 
Expression that opens an event window.
 
test_expr
[ width - 1: 0 ]
Expression that should not change value in the event window
 
end_event
 
Expression that closes an event window.

Description

The assert_win_unchange assertion checker checks the expression start_event at each rising edge of clk to determine if it should open an event window at the start of the next cycle. If start_event is sampled TRUE, the checker evaluates test_expr. At each subsequent rising edge of clk, the checker evaluates end_event and re-evaluates test_expr. If a sampled value of test_expr is changed from its value in the previous cycle, then the assertion fails. If end_event is TRUE, the checker closes the event window and returns to the state of monitoring start_event at the next rising edge of clk.

The checker is useful for ensuring certain variables and expressions do not change in various event windows. A typical use is to verify that synchronization logic responds after a stimulus (for example, bus transactions occurs without interrupts or write commands are not issued during read cycles). Another typical use is to verify that non-deterministic multiple-cycle operations with enabling conditions function properly with the same data.

Assertion Check

 
ASSERT_WIN_UNCHANGE
The test_expr expression changed value during an open event window.

Cover Points

 
window_open
An event window opened (start_event was TRUE).
 
window_close
An event window closed (end_event was TRUE in an open event window).

See also

assert_change, assert_time, assert_unchange, assert_win_change, 
assert_window

Example

  
assert_win_unchange #(
 
‘OVL_ERROR,
8,
‘OVL_ASSERT,
“Error: a changed during divide”,
‘OVL_COVER_ALL)
// severity_level
// width
// property_type
// msg
// coverage_level
 
valid_div_win_unchange_a (
 
 
 
clk,
reset_n,
start,
a,
done);
// clock
// reset
// start_event
// test_expr
// end_event
    

Ensures that the a input to the divider remains unchanged while a divide operation is performed (i.e., in the window from start to done).


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