Synopsys requirements for SV assertions
Subject: Synopsys requirements for SV assertions
From: dudani@us04.synopsys.com
Date: Thu Jul 25 2002 - 07:56:26 PDT
Please ignore if you have already received this mail.
Below are the Synopsys requirements for System Verilog assertions:
System Verilog Assertion Requirements:
R1: support concurrent/declarative form of assertions with event sample
expression (<step_control>) both external to module and internal to
module in restricted locations within procedural code
R1.1: with
ability to define sequences with regular expressions
R1.2:
ability to define sequences with time windows and time shifts as # of
sample events
R1.3:
ability to define sequences with relationship between events
R1.4:
support basic implication operator (i.e. if (bool_expr) then
(seq_expr))
R1.5:
support of SystemVerilog <step_control> event (ie. iff)
- R1.6:
when R1 defined external to module support definition of module and scope
for reference/linking
R2: support directives to guide tool interpretation of assertion
intent
R2.1:
directive for property assertions (i.e. check, forbid)
R2.2:
directive for constraints (i.e. assume)
R2.3:
directive for use as both assumption and assertion (ie. property)
R3: support synchronous clocking for R1
R3.1:
ability to define sample expression as a boolean expression of design
signals
R3.2: ability to
define multiple clocks, and synchronization between
clocks(i.e. ended and matched)
R4: support set/reset of assertions for R1
R4.1:
support for accept on an event expression (i.e. accept)
R4.2:
support for reject on an event expression (i.e. reject)
R4.3:
support for asynchronous event expression on R4.1
R4.4:
support for asynchronous event expression on R4.2
R5: support mechanism for defining and instantiating pre-built generic
assertions
(i.e
template definition and instantiation feature for assertions) The
purpose here is to be able to express generic assertions with parameters
as input and then feature to instantiate in the design. This
capability would be similar to macros in C in that they are immediately
in-lined at compile time and do not result in module hierarchy.
R6: Support useful productivity and expressiveness features
R6.1
provide support for matching first sequence (i.e first_match)
R6.2
provide support for restricting length of a sequence (i.e. length)
- R6.2
provide support for asserting that sequences should hold true for
duration of time window (i.e. istrue)
R6.3
provide block concept to group assertion statements
- Provide
syntax sugar to group assertions and share common <step_control>
and accept/reject conditions across all assertions within block.
Block would also contain variable declarations whose scope would be local
to block. Blocks can also be named.
- R6.4 support features to express sets, and operator on sets such as
mutual exclusiveness, membership, non-membership, union, intersection and
difference
R7: Clearly delineate immediate assertions from clocked assertions
- R7.1
restrict immediate and immediate_strobed assertions to only allow
combinational assertion expressions
- Motivation:
immediate and immediate_strobed are only applicable to dynamic
simulation, and have no clear semantics for static analysis.
R9: Intuitive, Easy of use for Verilog design and verification
community
R10: support R1 in-lined within restricted areas of procedural
SystemVerilog code
- R10.1: restrict to only top level within always block, in other words
not embedded in while, repeat loops or non-clocked (re-entrant) always
blocks
R11: support instantiation of templates with extraction of
context for R1. Restricted to specific
synthesis-like coding styles
for inference of context.
R12.1
extract source context for clock for R11
- R12.2
extract source context for left hand side and right hand side operators
for previous statement
R12.3
extract source context for reset
R12.4
extract source context for enable
R12: Support data checking
- R13.1
support declaration, initialization and assignment of variables within
assertion blocks as described in R6.3. Variables are updating
according to trace semantics of R1.
- R13.2 variables are scope restricted to within assertion block
R13.2
support reference to past data value (i.e. past)
R13.3
support reference to future data value at next cycle (i.e. future)
- R13.4
support concurrent data checking ; per attempt latching of data values to
be checked later within the attempt. Supports data checking on
overlapping sequences
R13: support language features to track coverage of assertion
events
R14.1
coverage for assertions (sequences)
R14.1
coverage sub-sequences within assertions
R14.2
language construct to define time window defined by assertion event
R14.3
support naming of coverage items
R14.4
support construction of hierarchy of time_window. A coverage item
can be gathered within such a nested a sub-time window.
R14.5
support coverage of data values with sampling by assertion events
R14.6
support coverage of paths within an assertion (sequence)
R14.7
support feature to combine permutations of coverage items (cross
coverage)
R14.8
support feature to exclude data items or sequence from coverage
**********************************************
Surrendra A. Dudani
Synopsys, Inc.
154 Crane Meadow Road
Suite 300
Marlboro, MA 01752
Tel: 508-263-8072
Fax: 508-263-8123
email: dudani@synopsys.com
**********************************************
This archive was generated by hypermail 2b28
: Thu Jul 25 2002 - 08:03:35 PDT