API_Donations

advertisement
Design
Synopsys System Verilog API
Donations to Accellera
João Geada
Outline
•
•
Introduction
Donations
 DirectC (Direct Foreign Language API)
 Assertion API
 Coverage Metrics API
•
For each donation, will be presenting




Requirements/needs addressed by API
Changes/additions to SV (if any)
Overview of the API
Questions & Answers
© 2001 Synopsys, Inc. (2) CONFIDENTIAL
Direct C interface
•
•
•
•
Requirements
Use model
Additions to System Verilog
Value exchange API
 Direct access
 Abstract access
•
•
DirectC function
DirectC module
© 2001 Synopsys, Inc. (3) CONFIDENTIAL
Requirements
•
Users need a simple to use, high-performance
interface to incorporate programming language
(C/C++) models into their designs
•
Interface should have minimal impact on existing
designs
•
Foreign language functions/modules usage must
be identical to Verilog functions/modules
 To permit arbitrary replacement of
functions/modules from C to Verilog or vice-versa
by merely changing the declaration
© 2001 Synopsys, Inc. (4) CONFIDENTIAL
Use model
•
User declares external functions and/or modules
in System Verilog
•
External functions/modules used exactly the
same as normal functions & modules
Compiler generates a C/C++ header file from the
external declarations
•
 Used to validate prototypes of all external
functions and modules and any complex
structures passed through ports
 User is not required to include this header file in
their C/C++ code, though it is recommended
•
User supplies the C/C++ source code or object
code/library to the simulator/compiler
© 2001 Synopsys, Inc. (5) CONFIDENTIAL
Additions to System Verilog
• One new type over System Verilog
•
 Pointer type
 Pointers are opaque in the System Verilog side and
cannot be manipulated, only passed to other functions,
modules
 Size of pointer is not defined, permitting operation on
both 32 and 64 bit simulators
Keywords
 extern
• Already a System Verilog keyword
 cmodule
• Only a keyword at the top declarative level
© 2001 Synopsys, Inc. (6) CONFIDENTIAL
External C function declarations
•
Declarations made in the top-level context

•
•
extern [mode] [attribute] return-type function-id ( args );
Mode is the access mode: direct or abstract
Attribute indicates if function is “pure”, ie has
no side-effects
 Pure functions permit more advance optimizations
•
All args have direction:
 Input, output, inout
© 2001 Synopsys, Inc. (7) CONFIDENTIAL
External cmodule declaration
•
External module declaration
 Declarations made in the top-level context
 cmodule module-id ( port-list )
port-direction-list
{
<cmodule code>
}
 All ports have direction:
• Input, output, inout
 Cmodule ports are always registers, never nets
• No resolution function
 Cmodule ports cannot be coerced
• Assignments to input ports not permitted
© 2001 Synopsys, Inc. (8) CONFIDENTIAL
Value exchange API
•
Two value exchange APIs provided
 Abstract access
 Direct Access
•
Abstract access
 Safe operation
• All values passed via opaque handles
• Values obtained from handle via a number of
provided functions (47 vc_*() functions)
• Functions will validate arguments and prevent
access errors
 Compatible across all simulators
© 2001 Synopsys, Inc. (9) CONFIDENTIAL
Value exchange API (cont.)
•
Direct access
 Highest performance, little error checking
• Uses simulator’s native format: may be simulator
dependent
• Errors in usage of value may result in core-dumps or
unexpected behavior
 Input values values with C/C++ compatible types
passed by value
• For all other types, and for output and inout ports,
values passed by reference
 Values manipulated directly in normal C/C++
operations without any error or bounds checking
© 2001 Synopsys, Inc. (10) CONFIDENTIAL
DirectC Functions
•
•
Have no simulation time duration
Can be used anywhere a Verilog function
could be used
 Only declaration changes, not usage
•
May contain state and or have side-effects
 These functions may not be declared
“pure”
© 2001 Synopsys, Inc. (11) CONFIDENTIAL
DirectC Modules
•
•
Permit simulation time to pass within C/C++ code
Used as any normal Verilog module
 Only declaration changes, not usage
•
May contain multiple
 Initial blocks
 Always blocks
 “global” variables, useable by all blocks, but not
accessible from Verilog
•
C code can contain
 Delay control statements
• vc_delay(time);
 Event control statements
• @(signal);
© 2001 Synopsys, Inc. (12) CONFIDENTIAL
Questions & Answers
•
5 minutes time limit
© 2001 Synopsys, Inc. (13) CONFIDENTIAL
Assertion API
•
•
Requirements
Static assertion information
 Assertion iterators
 Type information
 Source information
•
Dynamic assertion information
 Callbacks
 Assertion controls
© 2001 Synopsys, Inc. (14) CONFIDENTIAL
Requirements
•
Tools and test benches require access to
assertion information
 Reactive test benches
 Use of temporal assertions for coverage
 Debug/analysis tools
•
Assertions may be built-in to the simulator or
provided as a add-on capability
 Separate API required, to permit the API to be
independent of simulator implementation
© 2001 Synopsys, Inc. (15) CONFIDENTIAL
Static assertion information
•
Provides means to obtain
 Assertion by name
 Assertion iterator
 Assertion clock
 Assertion source info
• Start line and column
• End line and column
 Assertion type
© 2001 Synopsys, Inc. (16) CONFIDENTIAL
Dynamic assertion information
• Callbacks
 Callbacks on assertion events
• Attempt, success, failure events, control events
• Callbacks provide full information on
 Attempt start and end times
 Type of event
 Callbacks on engine events
• Initialization, finish events, control events
• Assertion control
 Reset, stop or terminate assertion engine
 Reset, disable, enable a specific assertion
 Terminate current assertion attempt(s) leaving assertion
active
© 2001 Synopsys, Inc. (17) CONFIDENTIAL
Questions & Answers
•
5 minutes time limit
© 2001 Synopsys, Inc. (18) CONFIDENTIAL
Coverage Metrics API
•
•
Requirements
User level coverage API
 System tasks
 C API
•
Tool level
 C API
© 2001 Synopsys, Inc. (19) CONFIDENTIAL
Requirements
•
Realtime coverage information needed
 By reactive testbenches
 To control random stimulus generators
•
Users require a common means to access
coverage information regardless of tool or
coverage metric
•
Coverage metrics are available both as a built-in
simulator capability and as a feature provided by
stand-alone tools
 Separate API required, so that API independent of
simulator implementation
© 2001 Synopsys, Inc. (20) CONFIDENTIAL
Real time coverage system tasks
• Enums
 Coverage types
• Line, condition, toggle, fsm state, fsm transition
• Coverage types easily extended without modifying API
 Scope control
 Return value categories
• Error, partial success, success
• Control task
•
•
 Enable/disable coverage
 Query availability of coverage
Task to obtain current coverage value
Task to obtain coverage limiting value
 Coverage % = (current / limit) * 100
© 2001 Synopsys, Inc. (21) CONFIDENTIAL
Task scope control
•
All tasks permit operation to be carried out
selectively on
 Named module
 Named instance
 Named hierarchy
 All the hierarchies below the instances of a given
module
•
Each of the above can be arbitrarily combined, as
separate individual arguments to a coverage task
© 2001 Synopsys, Inc. (22) CONFIDENTIAL
Real time coverage user API
•
•
C equivalent to the system tasks
•
Enums
Addresses coverage reactivity
requirements of HLVs and C testbenches
 Equivalent to the coverage enums in SV
• cm_coverage()
• cm_get_coverage()
• cm_get_limit()
© 2001 Synopsys, Inc. (23) CONFIDENTIAL
Real time coverage tool API
•
Provides more detailed access to FSM coverage
 Iterate over all FSMs in module/instance
• cm_count_fsms(), cm_fsm_id()
 State by state coverage
• cm_fsm_get_state()
 Transition by transition coverage
• cm_fsm_get_transition()
 Get FSM state vector
• cm_fsm_get_statevar()
• May be null for implied state FSMs
© 2001 Synopsys, Inc. (24) CONFIDENTIAL
Questions & Answers
•
5 minutes time limit
© 2001 Synopsys, Inc. (25) CONFIDENTIAL
Download