{"id":381962,"date":"2024-10-20T03:13:56","date_gmt":"2024-10-20T03:13:56","guid":{"rendered":"https:\/\/pdfstandards.shop\/product\/uncategorized\/bs-iec-625302021\/"},"modified":"2024-10-26T05:52:15","modified_gmt":"2024-10-26T05:52:15","slug":"bs-iec-625302021","status":"publish","type":"product","link":"https:\/\/pdfstandards.shop\/product\/publishers\/bsi\/bs-iec-625302021\/","title":{"rendered":"BS IEC 62530:2021"},"content":{"rendered":"

This standard provides the definition of the language syntax and semantics for the IEEE 1800\u2122 SystemVerilog language, which is a unified hardware design, specification, and verification language. The standard includes support for behavioral, register transfer level (RTL), and gate-level hardware descriptions; testbench, coverage, assertion, object-oriented, and constrained random constructs; and also provides application programming interfaces (APIs) to foreign programming languages.<\/p>\n

PDF Catalog<\/h4>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
PDF Pages<\/th>\nPDF Title<\/th>\n<\/tr>\n
2<\/td>\nundefined <\/td>\n<\/tr>\n
4<\/td>\nCONTENTS <\/td>\n<\/tr>\n
19<\/td>\nList of figures <\/td>\n<\/tr>\n
22<\/td>\nList of tables <\/td>\n<\/tr>\n
26<\/td>\nList of syntax excerpts <\/td>\n<\/tr>\n
39<\/td>\nIntroduction <\/td>\n<\/tr>\n
40<\/td>\nPart One: Design and Verification Constructs <\/td>\n<\/tr>\n
41<\/td>\n1. Overview
1.1 Scope
1.2 Purpose
1.3 Content summary <\/td>\n<\/tr>\n
42<\/td>\n1.4 Special terms
1.5 Conventions used in this standard <\/td>\n<\/tr>\n
43<\/td>\n1.6 Syntactic description
1.7 Use of color in this standard <\/td>\n<\/tr>\n
44<\/td>\n1.8 Contents of this standard <\/td>\n<\/tr>\n
47<\/td>\n1.9 Deprecated clauses
1.10 Examples
1.11 Prerequisites <\/td>\n<\/tr>\n
48<\/td>\n2. Normative references <\/td>\n<\/tr>\n
50<\/td>\n3. Design and verification building blocks
3.1 General
3.2 Design elements
3.3 Modules <\/td>\n<\/tr>\n
51<\/td>\n3.4 Programs <\/td>\n<\/tr>\n
52<\/td>\n3.5 Interfaces <\/td>\n<\/tr>\n
53<\/td>\n3.6 Checkers
3.7 Primitives
3.8 Subroutines
3.9 Packages <\/td>\n<\/tr>\n
54<\/td>\n3.10 Configurations
3.11 Overview of hierarchy <\/td>\n<\/tr>\n
55<\/td>\n3.12 Compilation and elaboration
3.12.1 Compilation units <\/td>\n<\/tr>\n
57<\/td>\n3.13 Name spaces <\/td>\n<\/tr>\n
58<\/td>\n3.14 Simulation time units and precision <\/td>\n<\/tr>\n
59<\/td>\n3.14.1 Time value rounding
3.14.2 Specifying time units and precision
3.14.2.1 The `timescale compiler directive <\/td>\n<\/tr>\n
60<\/td>\n3.14.2.2 The timeunit and timeprecision keywords
3.14.2.3 Precedence of timeunit, timeprecision, and `timescale <\/td>\n<\/tr>\n
61<\/td>\n3.14.3 Simulation time unit <\/td>\n<\/tr>\n
62<\/td>\n4. Scheduling semantics
4.1 General
4.2 Execution of a hardware model and its verification environment
4.3 Event simulation <\/td>\n<\/tr>\n
63<\/td>\n4.4 Stratified event scheduler <\/td>\n<\/tr>\n
64<\/td>\n3.4.1 Active region sets and reactive region sets
3.4.2 Simulation regions
4.4.2.1 Preponed events region
4.4.2.2 Active events region
4.4.2.3 Inactive events region
4.4.2.4 NBA events region <\/td>\n<\/tr>\n
65<\/td>\n4.4.2.5 Observed events region
4.4.2.6 Reactive events region
4.4.2.7 Re-Inactive events region
4.4.2.8 Re-NBA events region
4.4.2.9 Postponed events region
3.4.3 PLI regions
4.4.3.1 Preponed PLI region <\/td>\n<\/tr>\n
66<\/td>\n4.4.3.2 Pre-Active PLI region
4.4.3.3 Pre-NBA PLI region
4.4.3.4 Post-NBA PLI region
4.4.3.5 Pre-Observed PLI region
4.4.3.6 Post-Observed PLI region
4.4.3.7 Pre-Re-NBA PLI region
4.4.3.8 Post-Re-NBA PLI region
4.4.3.9 Pre-Postponed PLI region
4.4.3.10 Postponed PLI region <\/td>\n<\/tr>\n
68<\/td>\n4.5 SystemVerilog simulation reference algorithm
4.6 Determinism <\/td>\n<\/tr>\n
69<\/td>\n4.7 Nondeterminism
4.8 Race conditions
4.9 Scheduling implication of assignments <\/td>\n<\/tr>\n
70<\/td>\n4.9.1 Continuous assignment
4.9.2 Procedural continuous assignment
4.9.3 Blocking assignment
4.9.4 Nonblocking assignment
4.9.5 Switch (transistor) processing <\/td>\n<\/tr>\n
71<\/td>\n3.9.6 Port connections
4.9.7 Subroutines
4.10 PLI callback control points <\/td>\n<\/tr>\n
72<\/td>\n5. Lexical conventions
5.1 General
5.2 Lexical tokens
5.3 White space
5.4 Comments
5.5 Operators <\/td>\n<\/tr>\n
73<\/td>\n5.6 Identifiers, keywords, and system names
5.6.1 Escaped identifiers
5.6.2 Keywords
5.6.3 System tasks and system functions <\/td>\n<\/tr>\n
74<\/td>\n5.6.4 Compiler directives
5.7 Numbers <\/td>\n<\/tr>\n
76<\/td>\n5.7.1 Integer literal constants <\/td>\n<\/tr>\n
78<\/td>\n5.7.2 Real literal constants <\/td>\n<\/tr>\n
79<\/td>\n5.8 Time literals
5.9 String literals <\/td>\n<\/tr>\n
80<\/td>\n5.9.1 Special characters in strings <\/td>\n<\/tr>\n
81<\/td>\n5.10 Structure literals <\/td>\n<\/tr>\n
82<\/td>\n5.11 Array literals
5.12 Attributes <\/td>\n<\/tr>\n
84<\/td>\n5.13 Built-in methods <\/td>\n<\/tr>\n
86<\/td>\n6. Data types
6.1 General
6.2 Data types and data objects
6.3 Value set
6.3.1 Logic values
6.3.2 Strengths <\/td>\n<\/tr>\n
87<\/td>\n6.3.2.1 Charge strength
6.3.2.2 Drive strength
6.4 Singular and aggregate types <\/td>\n<\/tr>\n
88<\/td>\n6.5 Nets and variables <\/td>\n<\/tr>\n
89<\/td>\n6.6 Net types <\/td>\n<\/tr>\n
90<\/td>\n6.6.1 Wire and tri nets
6.6.2 Unresolved nets
6.6.3 Wired nets <\/td>\n<\/tr>\n
91<\/td>\n6.6.4 Trireg net <\/td>\n<\/tr>\n
92<\/td>\n6.6.4.1 Capacitive networks <\/td>\n<\/tr>\n
94<\/td>\n6.6.4.2 Ideal capacitive state and charge decay
6.6.5 Tri0 and tri1 nets <\/td>\n<\/tr>\n
95<\/td>\n6.6.6 Supply nets
6.6.7 User-defined nettypes <\/td>\n<\/tr>\n
97<\/td>\n6.6.8 Generic interconnect <\/td>\n<\/tr>\n
100<\/td>\n6.7 Net declarations <\/td>\n<\/tr>\n
101<\/td>\n6.7.1 Net declarations with built-in net types <\/td>\n<\/tr>\n
102<\/td>\n6.7.2 Net declarations with user-defined nettypes
6.7.3 Initialization of nets with user-defined nettypes <\/td>\n<\/tr>\n
103<\/td>\n6.8 Variable declarations <\/td>\n<\/tr>\n
105<\/td>\n6.9 Vector declarations
6.9.1 Specifying vectors <\/td>\n<\/tr>\n
106<\/td>\n6.9.2 Vector net accessibility
6.10 Implicit declarations <\/td>\n<\/tr>\n
107<\/td>\n6.11 Integer data types
6.11.1 Integral types
6.11.2 2-state (two-value) and 4-state (four-value) data types <\/td>\n<\/tr>\n
108<\/td>\n6.11.3 Signed and unsigned integer types
6.12 Real, shortreal, and realtime data types
6.12.1 Operators and real numbers
6.12.2 Conversion
6.13 Void data type
6.14 Chandle data type <\/td>\n<\/tr>\n
109<\/td>\n6.15 Class
6.16 String data type <\/td>\n<\/tr>\n
112<\/td>\n6.16.1 Len()
6.16.2 Putc()
6.16.3 Getc() <\/td>\n<\/tr>\n
113<\/td>\n6.16.4 Toupper()
6.16.5 Tolower()
6.16.6 Compare()
6.16.7 Icompare()
6.16.8 Substr()
6.16.9 Atoi(), atohex(), atooct(), atobin() <\/td>\n<\/tr>\n
114<\/td>\n6.16.10 Atoreal()
6.16.11 Itoa()
6.16.12 Hextoa()
6.16.13 Octtoa()
6.16.14 Bintoa()
6.16.15 Realtoa() <\/td>\n<\/tr>\n
115<\/td>\n6.17 Event data type
6.18 User-defined types <\/td>\n<\/tr>\n
117<\/td>\n6.19 Enumerations <\/td>\n<\/tr>\n
118<\/td>\n6.19.1 Defining new data types as enumerated types <\/td>\n<\/tr>\n
119<\/td>\n6.19.2 Enumerated type ranges
6.19.3 Type checking <\/td>\n<\/tr>\n
120<\/td>\n6.19.4 Enumerated types in numerical expressions <\/td>\n<\/tr>\n
121<\/td>\n6.19.5 Enumerated type methods
6.19.5.1 First()
6.19.5.2 Last()
6.19.5.3 Next()
6.19.5.4 Prev()
6.19.5.5 Num()
6.19.5.6 Name() <\/td>\n<\/tr>\n
122<\/td>\n6.19.5.7 Using enumerated type methods
6.20 Constants
6.20.1 Parameter declaration syntax <\/td>\n<\/tr>\n
124<\/td>\n6.20.2 Value parameters <\/td>\n<\/tr>\n
125<\/td>\n6.20.2.1 $ as a parameter value <\/td>\n<\/tr>\n
127<\/td>\n6.20.3 Type parameters
6.20.4 Local parameters (localparam)
6.20.5 Specify parameters <\/td>\n<\/tr>\n
128<\/td>\n6.20.6 Const constants <\/td>\n<\/tr>\n
129<\/td>\n6.21 Scope and lifetime <\/td>\n<\/tr>\n
131<\/td>\n6.22 Type compatibility
6.22.1 Matching types <\/td>\n<\/tr>\n
132<\/td>\n6.22.2 Equivalent types <\/td>\n<\/tr>\n
133<\/td>\n6.22.3 Assignment compatible <\/td>\n<\/tr>\n
134<\/td>\n6.22.4 Cast compatible
6.22.5 Type incompatible
6.22.6 Matching nettypes
6.23 Type operator <\/td>\n<\/tr>\n
135<\/td>\n6.24 Casting
6.24.1 Cast operator <\/td>\n<\/tr>\n
137<\/td>\n6.24.2 $cast dynamic casting <\/td>\n<\/tr>\n
138<\/td>\n6.24.3 Bit-stream casting <\/td>\n<\/tr>\n
140<\/td>\n6.25 Parameterized data types <\/td>\n<\/tr>\n
142<\/td>\n7. Aggregate data types
7.1 General
7.2 Structures <\/td>\n<\/tr>\n
143<\/td>\n7.2.1 Packed structures <\/td>\n<\/tr>\n
144<\/td>\n7.2.2 Assigning to structures
7.3 Unions <\/td>\n<\/tr>\n
145<\/td>\n7.3.1 Packed unions <\/td>\n<\/tr>\n
146<\/td>\n7.3.2 Tagged unions <\/td>\n<\/tr>\n
148<\/td>\n7.4 Packed and unpacked arrays
7.4.1 Packed arrays <\/td>\n<\/tr>\n
149<\/td>\n7.4.2 Unpacked arrays
7.4.3 Operations on arrays <\/td>\n<\/tr>\n
150<\/td>\n7.4.4 Memories
7.4.5 Multidimensional arrays <\/td>\n<\/tr>\n
151<\/td>\n7.4.6 Indexing and slicing of arrays <\/td>\n<\/tr>\n
152<\/td>\n7.5 Dynamic arrays <\/td>\n<\/tr>\n
153<\/td>\n7.5.1 New[ ] <\/td>\n<\/tr>\n
154<\/td>\n7.5.2 Size() <\/td>\n<\/tr>\n
155<\/td>\n7.5.3 Delete()
7.6 Array assignments <\/td>\n<\/tr>\n
156<\/td>\n7.7 Arrays as arguments to subroutines <\/td>\n<\/tr>\n
158<\/td>\n7.8 Associative arrays
7.8.1 Wildcard index type <\/td>\n<\/tr>\n
159<\/td>\n7.8.2 String index
7.8.3 Class index
7.8.4 Integral index
7.8.5 Other user-defined types <\/td>\n<\/tr>\n
160<\/td>\n7.8.6 Accessing invalid indices
7.8.7 Allocating associative array elements
7.9 Associative array methods
7.9.1 Num() and size() <\/td>\n<\/tr>\n
161<\/td>\n7.9.2 Delete()
7.9.3 Exists()
7.9.4 First() <\/td>\n<\/tr>\n
162<\/td>\n7.9.5 Last()
7.9.6 Next()
7.9.7 Prev() <\/td>\n<\/tr>\n
163<\/td>\n7.9.8 Arguments to traversal methods
7.9.9 Associative array assignment
7.9.10 Associative array arguments
7.9.11 Associative array literals <\/td>\n<\/tr>\n
164<\/td>\n7.10 Queues
7.10.1 Queue operators <\/td>\n<\/tr>\n
165<\/td>\n7.10.2 Queue methods
7.10.2.1 Size()
7.10.2.2 Insert() <\/td>\n<\/tr>\n
166<\/td>\n7.10.2.3 Delete()
7.10.2.4 Pop_front()
7.10.2.5 Pop_back()
7.10.2.6 Push_front() <\/td>\n<\/tr>\n
167<\/td>\n7.10.2.7 Push_back()
7.10.3 Persistence of references to elements of a queue
7.10.4 Updating a queue using assignment and unpacked array concatenation <\/td>\n<\/tr>\n
168<\/td>\n7.10.5 Bounded queues
7.11 Array querying functions
7.12 Array manipulation methods
7.12.1 Array locator methods <\/td>\n<\/tr>\n
170<\/td>\n7.12.2 Array ordering methods
7.12.3 Array reduction methods <\/td>\n<\/tr>\n
171<\/td>\n7.12.4 Iterator index querying <\/td>\n<\/tr>\n
173<\/td>\n8. Classes
8.1 General
8.2 Overview <\/td>\n<\/tr>\n
174<\/td>\n8.3 Syntax <\/td>\n<\/tr>\n
175<\/td>\n8.4 Objects (class instance) <\/td>\n<\/tr>\n
176<\/td>\n8.5 Object properties and object parameter data <\/td>\n<\/tr>\n
177<\/td>\n8.6 Object methods
8.7 Constructors <\/td>\n<\/tr>\n
179<\/td>\n8.8 Typed constructor calls <\/td>\n<\/tr>\n
180<\/td>\n8.9 Static class properties
8.10 Static methods
8.11 This <\/td>\n<\/tr>\n
181<\/td>\n8.12 Assignment, renaming, and copying <\/td>\n<\/tr>\n
183<\/td>\n8.13 Inheritance and subclasses
8.14 Overridden members <\/td>\n<\/tr>\n
184<\/td>\n8.15 Super <\/td>\n<\/tr>\n
185<\/td>\n8.16 Casting
8.17 Chaining constructors <\/td>\n<\/tr>\n
186<\/td>\n8.18 Data hiding and encapsulation <\/td>\n<\/tr>\n
187<\/td>\n8.19 Constant class properties
8.20 Virtual methods <\/td>\n<\/tr>\n
189<\/td>\n8.21 Abstract classes and pure virtual methods <\/td>\n<\/tr>\n
190<\/td>\n8.22 Polymorphism: dynamic method lookup
8.23 Class scope resolution operator :: <\/td>\n<\/tr>\n
192<\/td>\n8.24 Out-of-block declarations <\/td>\n<\/tr>\n
194<\/td>\n8.25 Parameterized classes <\/td>\n<\/tr>\n
196<\/td>\n8.25.1 Class scope resolution operator for parameterized classes <\/td>\n<\/tr>\n
197<\/td>\n8.26 Interface classes <\/td>\n<\/tr>\n
198<\/td>\n8.26.1 Interface class syntax
8.26.2 Extends versus implements <\/td>\n<\/tr>\n
201<\/td>\n8.26.3 Type access
8.26.4 Type usage restrictions <\/td>\n<\/tr>\n
202<\/td>\n8.26.5 Casting and object reference assignment
8.26.6 Name conflicts and resolution
8.26.6.1 Method name conflict resolution <\/td>\n<\/tr>\n
203<\/td>\n8.26.6.2 Parameter and type declaration inheritance conflicts and resolution <\/td>\n<\/tr>\n
204<\/td>\n8.26.6.3 Diamond relationship <\/td>\n<\/tr>\n
205<\/td>\n8.26.7 Partial implementation
8.26.8 Method default argument values
8.26.9 Constraint blocks, covergroups, and randomization <\/td>\n<\/tr>\n
206<\/td>\n8.27 Typedef class
8.28 Classes and structures <\/td>\n<\/tr>\n
207<\/td>\n8.29 Memory management <\/td>\n<\/tr>\n
208<\/td>\n9. Processes
9.1 General
9.2 Structured procedures <\/td>\n<\/tr>\n
209<\/td>\n9.2.1 Initial procedures
9.2.2 Always procedures
9.2.2.1 General purpose always procedure <\/td>\n<\/tr>\n
210<\/td>\n9.2.2.2 Combinational logic always_comb procedure
9.2.2.2.1 Implicit always_comb sensitivities <\/td>\n<\/tr>\n
211<\/td>\n9.2.2.2.2 always_comb compared to always @*
9.2.2.3 Latched logic always_latch procedure
9.2.2.4 Sequential logic always_ff procedure <\/td>\n<\/tr>\n
212<\/td>\n9.2.3 Final procedures
9.3 Block statements
9.3.1 Sequential blocks <\/td>\n<\/tr>\n
213<\/td>\n9.3.2 Parallel blocks <\/td>\n<\/tr>\n
215<\/td>\n9.3.3 Statement block start and finish times <\/td>\n<\/tr>\n
216<\/td>\n9.3.4 Block names <\/td>\n<\/tr>\n
217<\/td>\n9.3.5 Statement labels <\/td>\n<\/tr>\n
218<\/td>\n9.4 Procedural timing controls <\/td>\n<\/tr>\n
219<\/td>\n9.4.1 Delay control <\/td>\n<\/tr>\n
220<\/td>\n9.4.2 Event control <\/td>\n<\/tr>\n
221<\/td>\n9.4.2.1 Event OR operator
9.4.2.2 Implicit event_expression list <\/td>\n<\/tr>\n
223<\/td>\n9.4.2.3 Conditional event controls
9.4.2.4 Sequence events
9.4.3 Level-sensitive event control <\/td>\n<\/tr>\n
224<\/td>\n9.4.4 Level-sensitive sequence controls <\/td>\n<\/tr>\n
225<\/td>\n9.4.5 Intra-assignment timing controls <\/td>\n<\/tr>\n
227<\/td>\n9.5 Process execution threads <\/td>\n<\/tr>\n
228<\/td>\n9.6 Process control
9.6.1 Wait fork statement <\/td>\n<\/tr>\n
229<\/td>\n9.6.2 Disable statement <\/td>\n<\/tr>\n
232<\/td>\n9.6.3 Disable fork statement
9.7 Fine-grain process control <\/td>\n<\/tr>\n
235<\/td>\n10. Assignment statements
10.1 General
10.2 Overview <\/td>\n<\/tr>\n
236<\/td>\n10.3 Continuous assignments
10.3.1 The net declaration assignment <\/td>\n<\/tr>\n
237<\/td>\n10.3.2 The continuous assignment statement <\/td>\n<\/tr>\n
238<\/td>\n10.3.3 Continuous assignment delays <\/td>\n<\/tr>\n
239<\/td>\n10.3.4 Continuous assignment strengths
10.4 Procedural assignments <\/td>\n<\/tr>\n
240<\/td>\n10.4.1 Blocking procedural assignments <\/td>\n<\/tr>\n
241<\/td>\n10.4.2 Nonblocking procedural assignments <\/td>\n<\/tr>\n
244<\/td>\n10.5 Variable declaration assignment (variable initialization)
10.6 Procedural continuous assignments <\/td>\n<\/tr>\n
245<\/td>\n10.6.1 The assign and deassign procedural statements
10.6.2 The force and release procedural statements <\/td>\n<\/tr>\n
246<\/td>\n10.7 Assignment extension and truncation <\/td>\n<\/tr>\n
247<\/td>\n10.8 Assignment-like contexts <\/td>\n<\/tr>\n
248<\/td>\n10.9 Assignment patterns <\/td>\n<\/tr>\n
250<\/td>\n10.9.1 Array assignment patterns <\/td>\n<\/tr>\n
251<\/td>\n10.9.2 Structure assignment patterns <\/td>\n<\/tr>\n
252<\/td>\n10.10 Unpacked array concatenation <\/td>\n<\/tr>\n
253<\/td>\n10.10.1 Unpacked array concatenations compared with array assignment patterns
10.10.2 Relationship with other constructs that use concatenation syntax <\/td>\n<\/tr>\n
254<\/td>\n10.10.3 Nesting of unpacked array concatenations <\/td>\n<\/tr>\n
255<\/td>\n10.11 Net aliasing <\/td>\n<\/tr>\n
257<\/td>\n11. Operators and expressions
11.1 General
11.2 Overview <\/td>\n<\/tr>\n
258<\/td>\n11.2.1 Constant expressions
11.2.2 Aggregate expressions
11.3 Operators <\/td>\n<\/tr>\n
259<\/td>\n11.3.1 Operators with real operands <\/td>\n<\/tr>\n
260<\/td>\n11.3.2 Operator precedence <\/td>\n<\/tr>\n
261<\/td>\n11.3.3 Using integer literals in expressions
11.3.4 Operations on logic (4-state) and bit (2-state) types <\/td>\n<\/tr>\n
262<\/td>\n11.3.5 Operator expression short circuiting
11.3.6 Assignment within an expression
11.4 Operator descriptions
11.4.1 Assignment operators <\/td>\n<\/tr>\n
263<\/td>\n11.4.2 Increment and decrement operators
11.4.3 Arithmetic operators <\/td>\n<\/tr>\n
265<\/td>\n11.4.3.1 Arithmetic expressions with unsigned and signed types <\/td>\n<\/tr>\n
266<\/td>\n11.4.4 Relational operators
11.4.5 Equality operators <\/td>\n<\/tr>\n
267<\/td>\n11.4.6 Wildcard equality operators <\/td>\n<\/tr>\n
268<\/td>\n11.4.7 Logical operators <\/td>\n<\/tr>\n
269<\/td>\n11.4.8 Bitwise operators <\/td>\n<\/tr>\n
270<\/td>\n11.4.9 Reduction operators <\/td>\n<\/tr>\n
272<\/td>\n11.4.10 Shift operators
11.4.11 Conditional operator <\/td>\n<\/tr>\n
274<\/td>\n11.4.12 Concatenation operators <\/td>\n<\/tr>\n
275<\/td>\n11.4.12.1 Replication operator <\/td>\n<\/tr>\n
276<\/td>\n11.4.12.2 String concatenation
11.4.13 Set membership operator <\/td>\n<\/tr>\n
277<\/td>\n11.4.14 Streaming operators (pack\/unpack) <\/td>\n<\/tr>\n
278<\/td>\n11.4.14.1 Concatenation of stream_expressions <\/td>\n<\/tr>\n
279<\/td>\n11.4.14.2 Re-ordering of the generic stream
11.4.14.3 Streaming concatenation as an assignment target (unpack) <\/td>\n<\/tr>\n
280<\/td>\n11.4.14.4 Streaming dynamically sized data <\/td>\n<\/tr>\n
282<\/td>\n11.5 Operands
11.5.1 Vector bit-select and part-select addressing <\/td>\n<\/tr>\n
284<\/td>\n11.5.2 Array and memory addressing <\/td>\n<\/tr>\n
285<\/td>\n11.5.3 Longest static prefix
11.6 Expression bit lengths <\/td>\n<\/tr>\n
286<\/td>\n11.6.1 Rules for expression bit lengths <\/td>\n<\/tr>\n
287<\/td>\n11.6.2 Example of expression bit-length problem <\/td>\n<\/tr>\n
288<\/td>\n11.6.3 Example of self-determined expressions
11.7 Signed expressions <\/td>\n<\/tr>\n
289<\/td>\n11.8 Expression evaluation rules
11.8.1 Rules for expression types
11.8.2 Steps for evaluating an expression <\/td>\n<\/tr>\n
290<\/td>\n11.8.3 Steps for evaluating an assignment
11.8.4 Handling X and Z in signed expressions
11.9 Tagged union expressions and member access <\/td>\n<\/tr>\n
291<\/td>\n11.10 String literal expressions <\/td>\n<\/tr>\n
292<\/td>\n11.10.1 String literal operations
11.10.2 String literal value padding and potential problems <\/td>\n<\/tr>\n
293<\/td>\n11.10.3 Empty string literal handling
11.11 Minimum, typical, and maximum delay expressions <\/td>\n<\/tr>\n
294<\/td>\n11.12 Let construct <\/td>\n<\/tr>\n
301<\/td>\n12. Procedural programming statements
12.1 General
12.2 Overview
12.3 Syntax <\/td>\n<\/tr>\n
302<\/td>\n12.4 Conditional if\u2013else statement <\/td>\n<\/tr>\n
303<\/td>\n12.4.1 if\u2013else\u2013if construct <\/td>\n<\/tr>\n
304<\/td>\n12.4.2 unique-if, unique0-if, and priority-if <\/td>\n<\/tr>\n
305<\/td>\n12.4.2.1 Violation reports generated by unique-if, unique0-if, and priority-if constructs <\/td>\n<\/tr>\n
306<\/td>\n12.4.2.2 If statement violation reports and multiple processes <\/td>\n<\/tr>\n
307<\/td>\n12.5 Case statement <\/td>\n<\/tr>\n
309<\/td>\n12.5.1 Case statement with do-not-cares
12.5.2 Constant expression in case statement <\/td>\n<\/tr>\n
310<\/td>\n12.5.3 unique-case, unique0-case, and priority-case <\/td>\n<\/tr>\n
311<\/td>\n12.5.3.1 Violation reports generated by unique-case, unique0-case, and priority-case constructs
12.5.3.2 Case statement violation reports and multiple processes
12.5.4 Set membership case statement <\/td>\n<\/tr>\n
312<\/td>\n12.6 Pattern matching conditional statements <\/td>\n<\/tr>\n
313<\/td>\n12.6.1 Pattern matching in case statements <\/td>\n<\/tr>\n
315<\/td>\n12.6.2 Pattern matching in if statements <\/td>\n<\/tr>\n
316<\/td>\n12.6.3 Pattern matching in conditional expressions
12.7 Loop statements <\/td>\n<\/tr>\n
317<\/td>\n12.7.1 The for-loop <\/td>\n<\/tr>\n
318<\/td>\n12.7.2 The repeat loop
12.7.3 The foreach-loop <\/td>\n<\/tr>\n
319<\/td>\n12.7.4 The while-loop <\/td>\n<\/tr>\n
320<\/td>\n12.7.5 The do…while-loop
12.7.6 The forever-loop
12.8 Jump statements <\/td>\n<\/tr>\n
322<\/td>\n13. Tasks and functions (subroutines)
13.1 General
13.2 Overview
13.3 Tasks <\/td>\n<\/tr>\n
326<\/td>\n13.3.1 Static and automatic tasks
13.3.2 Task memory usage and concurrent activation
13.4 Functions <\/td>\n<\/tr>\n
329<\/td>\n13.4.1 Return values and void functions
13.4.2 Static and automatic functions <\/td>\n<\/tr>\n
330<\/td>\n13.4.3 Constant functions <\/td>\n<\/tr>\n
332<\/td>\n13.4.4 Background processes spawned by function calls
13.5 Subroutine calls and argument passing <\/td>\n<\/tr>\n
333<\/td>\n13.5.1 Pass by value <\/td>\n<\/tr>\n
334<\/td>\n13.5.2 Pass by reference <\/td>\n<\/tr>\n
335<\/td>\n13.5.3 Default argument values <\/td>\n<\/tr>\n
336<\/td>\n13.5.4 Argument binding by name <\/td>\n<\/tr>\n
337<\/td>\n13.5.5 Optional argument list
13.6 Import and export functions
13.7 Task and function names
13.8 Parameterized tasks and functions <\/td>\n<\/tr>\n
339<\/td>\n14. Clocking blocks
14.1 General
14.2 Overview
14.3 Clocking block declaration <\/td>\n<\/tr>\n
341<\/td>\n14.4 Input and output skews <\/td>\n<\/tr>\n
342<\/td>\n14.5 Hierarchical expressions <\/td>\n<\/tr>\n
343<\/td>\n14.6 Signals in multiple clocking blocks
14.7 Clocking block scope and lifetime
14.8 Multiple clocking blocks example <\/td>\n<\/tr>\n
344<\/td>\n14.9 Interfaces and clocking blocks <\/td>\n<\/tr>\n
345<\/td>\n14.10 Clocking block events
14.11 Cycle delay: ## <\/td>\n<\/tr>\n
346<\/td>\n14.12 Default clocking <\/td>\n<\/tr>\n
347<\/td>\n14.13 Input sampling <\/td>\n<\/tr>\n
348<\/td>\n14.14 Global clocking <\/td>\n<\/tr>\n
352<\/td>\n14.15 Synchronous events
14.16 Synchronous drives <\/td>\n<\/tr>\n
354<\/td>\n14.16.1 Drives and nonblocking assignments <\/td>\n<\/tr>\n
355<\/td>\n14.16.2 Driving clocking output signals <\/td>\n<\/tr>\n
357<\/td>\n15. Interprocess synchronization and communication
15.1 General
15.2 Overview
15.3 Semaphores <\/td>\n<\/tr>\n
358<\/td>\n15.3.1 New()
15.3.2 Put()
15.3.3 Get()
15.3.4 Try_get() <\/td>\n<\/tr>\n
359<\/td>\n15.4 Mailboxes
15.4.1 New()
15.4.2 Num() <\/td>\n<\/tr>\n
360<\/td>\n15.4.3 Put()
15.4.4 Try_put()
15.4.5 Get() <\/td>\n<\/tr>\n
361<\/td>\n15.4.6 Try_get()
15.4.7 Peek()
15.4.8 Try_peek() <\/td>\n<\/tr>\n
362<\/td>\n15.4.9 Parameterized mailboxes
15.5 Named events
15.5.1 Triggering an event <\/td>\n<\/tr>\n
363<\/td>\n15.5.2 Waiting for an event
15.5.3 Persistent trigger: triggered built-in method <\/td>\n<\/tr>\n
364<\/td>\n15.5.4 Event sequencing: wait_order() <\/td>\n<\/tr>\n
365<\/td>\n15.5.5 Operations on named event variables
15.5.5.1 Merging events <\/td>\n<\/tr>\n
366<\/td>\n15.5.5.2 Reclaiming events
15.5.5.3 Events comparison <\/td>\n<\/tr>\n
367<\/td>\n16. Assertions
16.1 General
16.2 Overview
16.3 Immediate assertions <\/td>\n<\/tr>\n
370<\/td>\n16.4 Deferred assertions <\/td>\n<\/tr>\n
372<\/td>\n16.4.1 Deferred assertion reporting
16.4.2 Deferred assertion flush points <\/td>\n<\/tr>\n
375<\/td>\n16.4.3 Deferred assertions outside procedural code <\/td>\n<\/tr>\n
376<\/td>\n16.4.4 Disabling deferred assertions
16.4.5 Deferred assertions and multiple processes <\/td>\n<\/tr>\n
377<\/td>\n16.5 Concurrent assertions overview
16.5.1 Sampling <\/td>\n<\/tr>\n
379<\/td>\n16.5.2 Assertion clock <\/td>\n<\/tr>\n
380<\/td>\n16.6 Boolean expressions <\/td>\n<\/tr>\n
381<\/td>\n16.7 Sequences <\/td>\n<\/tr>\n
385<\/td>\n16.8 Declaring sequences <\/td>\n<\/tr>\n
389<\/td>\n16.8.1 Typed formal arguments in sequence declarations <\/td>\n<\/tr>\n
391<\/td>\n16.8.2 Local variable formal arguments in sequence declarations <\/td>\n<\/tr>\n
393<\/td>\n16.9 Sequence operations
16.9.1 Operator precedence <\/td>\n<\/tr>\n
394<\/td>\n16.9.2 Repetition in sequences <\/td>\n<\/tr>\n
397<\/td>\n16.9.2.1 Repetition, concatenation, and empty matches
16.9.3 Sampled value functions <\/td>\n<\/tr>\n
401<\/td>\n16.9.4 Global clocking past and future sampled value functions <\/td>\n<\/tr>\n
405<\/td>\n16.9.5 AND operation <\/td>\n<\/tr>\n
407<\/td>\n16.9.6 Intersection (AND with length restriction) <\/td>\n<\/tr>\n
408<\/td>\n16.9.7 OR operation <\/td>\n<\/tr>\n
411<\/td>\n16.9.8 First_match operation <\/td>\n<\/tr>\n
412<\/td>\n16.9.9 Conditions over sequences <\/td>\n<\/tr>\n
413<\/td>\n16.9.10 Sequence contained within another sequence <\/td>\n<\/tr>\n
414<\/td>\n16.9.11 Composing sequences from simpler subsequences <\/td>\n<\/tr>\n
416<\/td>\n16.10 Local variables <\/td>\n<\/tr>\n
422<\/td>\n16.11 Calling subroutines on match of a sequence <\/td>\n<\/tr>\n
423<\/td>\n16.12 Declaring properties <\/td>\n<\/tr>\n
426<\/td>\n16.12.1 Property instantiation <\/td>\n<\/tr>\n
427<\/td>\n16.12.2 Sequence property
16.12.3 Negation property <\/td>\n<\/tr>\n
428<\/td>\n16.12.4 Disjunction property
16.12.5 Conjunction property
16.12.6 If-else property
16.12.7 Implication <\/td>\n<\/tr>\n
432<\/td>\n16.12.8 Implies and iff properties
16.12.9 Followed-by property <\/td>\n<\/tr>\n
434<\/td>\n16.12.10 Nexttime property <\/td>\n<\/tr>\n
435<\/td>\n16.12.11 Always property <\/td>\n<\/tr>\n
437<\/td>\n16.12.12 Until property <\/td>\n<\/tr>\n
438<\/td>\n16.12.13 Eventually property <\/td>\n<\/tr>\n
439<\/td>\n16.12.14 Abort properties <\/td>\n<\/tr>\n
441<\/td>\n16.12.15 Weak and strong operators
16.12.16 Case <\/td>\n<\/tr>\n
442<\/td>\n16.12.17 Recursive properties <\/td>\n<\/tr>\n
446<\/td>\n16.12.18 Typed formal arguments in property declarations <\/td>\n<\/tr>\n
447<\/td>\n16.12.19 Local variable formal arguments in property declarations
16.12.20 Property examples <\/td>\n<\/tr>\n
448<\/td>\n16.12.21 Finite-length versus infinite-length behavior
16.12.22 Nondegeneracy <\/td>\n<\/tr>\n
449<\/td>\n16.13 Multiclock support
16.13.1 Multiclocked sequences <\/td>\n<\/tr>\n
450<\/td>\n16.13.2 Multiclocked properties <\/td>\n<\/tr>\n
452<\/td>\n16.13.3 Clock flow <\/td>\n<\/tr>\n
453<\/td>\n16.13.4 Examples <\/td>\n<\/tr>\n
454<\/td>\n16.13.5 Detecting and using end point of a sequence in multiclock context <\/td>\n<\/tr>\n
455<\/td>\n16.13.6 Sequence methods <\/td>\n<\/tr>\n
458<\/td>\n16.13.7 Local variable initialization assignments <\/td>\n<\/tr>\n
459<\/td>\n16.14 Concurrent assertions <\/td>\n<\/tr>\n
460<\/td>\n16.14.1 Assert statement <\/td>\n<\/tr>\n
461<\/td>\n16.14.2 Assume statement <\/td>\n<\/tr>\n
462<\/td>\n16.14.3 Cover statement <\/td>\n<\/tr>\n
463<\/td>\n16.14.4 Restrict statement <\/td>\n<\/tr>\n
464<\/td>\n16.14.5 Using concurrent assertion statements outside procedural code <\/td>\n<\/tr>\n
465<\/td>\n16.14.6 Embedding concurrent assertions in procedural code <\/td>\n<\/tr>\n
467<\/td>\n16.14.6.1 Arguments to procedural concurrent assertions <\/td>\n<\/tr>\n
469<\/td>\n16.14.6.2 Procedural assertion flush points <\/td>\n<\/tr>\n
470<\/td>\n16.14.6.3 Procedural concurrent assertions and glitches <\/td>\n<\/tr>\n
471<\/td>\n16.14.6.4 Disabling procedural concurrent assertions <\/td>\n<\/tr>\n
472<\/td>\n16.14.7 Inferred value functions <\/td>\n<\/tr>\n
473<\/td>\n16.14.8 Nonvacuous evaluations <\/td>\n<\/tr>\n
476<\/td>\n16.15 Disable iff resolution <\/td>\n<\/tr>\n
478<\/td>\n16.16 Clock resolution <\/td>\n<\/tr>\n
482<\/td>\n16.16.1 Semantic leading clocks for multiclocked sequences and properties <\/td>\n<\/tr>\n
484<\/td>\n16.17 Expect statement <\/td>\n<\/tr>\n
485<\/td>\n16.18 Clocking blocks and concurrent assertions <\/td>\n<\/tr>\n
487<\/td>\n17. Checkers
17.1 Overview
17.2 Checker declaration <\/td>\n<\/tr>\n
490<\/td>\n17.3 Checker instantiation <\/td>\n<\/tr>\n
493<\/td>\n17.4 Context inference <\/td>\n<\/tr>\n
494<\/td>\n17.5 Checker procedures <\/td>\n<\/tr>\n
496<\/td>\n17.6 Covergroups in checkers <\/td>\n<\/tr>\n
497<\/td>\n17.7 Checker variables <\/td>\n<\/tr>\n
500<\/td>\n17.7.1 Checker variable assignments <\/td>\n<\/tr>\n
501<\/td>\n17.7.2 Checker variable randomization with assumptions <\/td>\n<\/tr>\n
503<\/td>\n17.7.3 Scheduling semantics
17.8 Functions in checkers <\/td>\n<\/tr>\n
504<\/td>\n17.9 Complex checker example <\/td>\n<\/tr>\n
506<\/td>\n18. Constrained random value generation
18.1 General
18.2 Overview
18.3 Concepts and usage <\/td>\n<\/tr>\n
509<\/td>\n18.4 Random variables <\/td>\n<\/tr>\n
511<\/td>\n18.4.1 Rand modifier
18.4.2 Randc modifier <\/td>\n<\/tr>\n
512<\/td>\n18.5 Constraint blocks <\/td>\n<\/tr>\n
513<\/td>\n18.5.1 External constraint blocks <\/td>\n<\/tr>\n
514<\/td>\n18.5.2 Constraint inheritance
18.5.3 Set membership <\/td>\n<\/tr>\n
515<\/td>\n18.5.4 Distribution <\/td>\n<\/tr>\n
516<\/td>\n18.5.5 Uniqueness constraints <\/td>\n<\/tr>\n
517<\/td>\n18.5.6 Implication <\/td>\n<\/tr>\n
518<\/td>\n18.5.7 if\u2013else constraints <\/td>\n<\/tr>\n
519<\/td>\n18.5.8 Iterative constraints
18.5.8.1 foreach iterative constraints <\/td>\n<\/tr>\n
520<\/td>\n18.5.8.2 Array reduction iterative constraints
18.5.9 Global constraints <\/td>\n<\/tr>\n
521<\/td>\n18.5.10 Variable ordering <\/td>\n<\/tr>\n
523<\/td>\n18.5.11 Static constraint blocks <\/td>\n<\/tr>\n
524<\/td>\n18.5.12 Functions in constraints <\/td>\n<\/tr>\n
525<\/td>\n18.5.13 Constraint guards <\/td>\n<\/tr>\n
528<\/td>\n18.5.14 Soft constraints <\/td>\n<\/tr>\n
529<\/td>\n18.5.14.1 Soft constraint priorities <\/td>\n<\/tr>\n
530<\/td>\n18.5.14.2 Discarding soft constraints <\/td>\n<\/tr>\n
531<\/td>\n18.6 Randomization methods
18.6.1 Randomize() <\/td>\n<\/tr>\n
532<\/td>\n18.6.2 Pre_randomize() and post_randomize() <\/td>\n<\/tr>\n
533<\/td>\n18.6.3 Behavior of randomization methods
18.7 In-line constraints\u2014randomize() with <\/td>\n<\/tr>\n
535<\/td>\n18.7.1 local:: scope resolution
18.8 Disabling random variables with rand_mode() <\/td>\n<\/tr>\n
537<\/td>\n18.9 Controlling constraints with constraint_mode() <\/td>\n<\/tr>\n
538<\/td>\n18.10 Dynamic constraint modification
18.11 In-line random variable control <\/td>\n<\/tr>\n
539<\/td>\n18.11.1 In-line constraint checker
18.12 Randomization of scope variables\u2014std::randomize() <\/td>\n<\/tr>\n
541<\/td>\n18.12.1 Adding constraints to scope variables\u2014std::randomize() with
18.13 Random number system functions and methods
18.13.1 $urandom
18.13.2 $urandom_range() <\/td>\n<\/tr>\n
542<\/td>\n18.13.3 srandom()
18.13.4 get_randstate() <\/td>\n<\/tr>\n
543<\/td>\n18.13.5 set_randstate()
18.14 Random stability
18.14.1 Random stability properties <\/td>\n<\/tr>\n
544<\/td>\n18.14.2 Thread stability
18.14.3 Object stability <\/td>\n<\/tr>\n
545<\/td>\n18.15 Manually seeding randomize <\/td>\n<\/tr>\n
546<\/td>\n18.16 Random weighted case\u2014randcase <\/td>\n<\/tr>\n
547<\/td>\n18.17 Random sequence generation\u2014randsequence <\/td>\n<\/tr>\n
548<\/td>\n18.17.1 Random production weights <\/td>\n<\/tr>\n
549<\/td>\n18.17.2 if\u2013else production statements
18.17.3 Case production statements <\/td>\n<\/tr>\n
550<\/td>\n18.17.4 Repeat production statements <\/td>\n<\/tr>\n
551<\/td>\n18.17.5 Interleaving productions\u2014rand join <\/td>\n<\/tr>\n
552<\/td>\n18.17.6 Aborting productions\u2014break and return
18.17.7 Value passing between productions <\/td>\n<\/tr>\n
556<\/td>\n19. Functional coverage
19.1 General
19.2 Overview <\/td>\n<\/tr>\n
557<\/td>\n19.3 Defining the coverage model: covergroup <\/td>\n<\/tr>\n
559<\/td>\n19.4 Using covergroup in classes <\/td>\n<\/tr>\n
561<\/td>\n19.5 Defining coverage points <\/td>\n<\/tr>\n
564<\/td>\n19.5.1 Specifying bins for values <\/td>\n<\/tr>\n
565<\/td>\n19.5.1.1 Coverpoint bin with covergroup expressions <\/td>\n<\/tr>\n
566<\/td>\n19.5.1.2 Coverpoint bin set covergroup expressions
19.5.2 Specifying bins for transitions <\/td>\n<\/tr>\n
569<\/td>\n19.5.3 Automatic bin creation for coverage points <\/td>\n<\/tr>\n
570<\/td>\n19.5.4 Wildcard specification of coverage point bins
19.5.5 Excluding coverage point values or transitions <\/td>\n<\/tr>\n
571<\/td>\n19.5.6 Specifying Illegal coverage point values or transitions
19.5.7 Value resolution <\/td>\n<\/tr>\n
572<\/td>\n19.6 Defining cross coverage <\/td>\n<\/tr>\n
575<\/td>\n19.6.1 Defining cross coverage bins <\/td>\n<\/tr>\n
576<\/td>\n19.6.1.1 Example of user-defined cross coverage and select expressions <\/td>\n<\/tr>\n
577<\/td>\n19.6.1.2 Cross bin with covergroup expressions <\/td>\n<\/tr>\n
578<\/td>\n19.6.1.3 Cross bin automatically defined types <\/td>\n<\/tr>\n
579<\/td>\n19.6.1.4 Cross bin set expression <\/td>\n<\/tr>\n
580<\/td>\n19.6.2 Excluding cross products <\/td>\n<\/tr>\n
581<\/td>\n19.6.3 Specifying illegal cross products
19.7 Specifying coverage options <\/td>\n<\/tr>\n
583<\/td>\n19.7.1 Covergroup type options <\/td>\n<\/tr>\n
585<\/td>\n19.8 Predefined coverage methods <\/td>\n<\/tr>\n
587<\/td>\n19.8.1 Overriding the built-in sample method <\/td>\n<\/tr>\n
588<\/td>\n19.9 Predefined coverage system tasks and system functions
19.10 Organization of option and type_option members <\/td>\n<\/tr>\n
589<\/td>\n19.11 Coverage computation <\/td>\n<\/tr>\n
590<\/td>\n19.11.1 Coverpoint coverage computation <\/td>\n<\/tr>\n
591<\/td>\n19.11.2 Cross coverage computation
19.11.3 Type coverage computation <\/td>\n<\/tr>\n
594<\/td>\n20. Utility system tasks and system functions
20.1 General <\/td>\n<\/tr>\n
595<\/td>\n20.2 Simulation control system tasks
20.3 Simulation time system functions <\/td>\n<\/tr>\n
596<\/td>\n20.3.1 $time
20.3.2 $stime
20.3.3 $realtime <\/td>\n<\/tr>\n
597<\/td>\n20.4 Timescale system tasks
20.4.1 $printtimescale <\/td>\n<\/tr>\n
598<\/td>\n20.4.2 $timeformat <\/td>\n<\/tr>\n
600<\/td>\n20.5 Conversion functions <\/td>\n<\/tr>\n
601<\/td>\n20.6 Data query functions
20.6.1 Type name function <\/td>\n<\/tr>\n
602<\/td>\n20.6.2 Expression size system function <\/td>\n<\/tr>\n
603<\/td>\n20.6.3 Range system function
20.7 Array query functions <\/td>\n<\/tr>\n
605<\/td>\n20.7.1 Queries over multiple variable dimensions <\/td>\n<\/tr>\n
606<\/td>\n20.8 Math functions
20.8.1 Integer math functions
20.8.2 Real math functions <\/td>\n<\/tr>\n
607<\/td>\n20.9 Bit vector system functions <\/td>\n<\/tr>\n
608<\/td>\n20.10 Severity tasks <\/td>\n<\/tr>\n
609<\/td>\n20.11 Elaboration system tasks <\/td>\n<\/tr>\n
611<\/td>\n20.12 Assertion control system tasks <\/td>\n<\/tr>\n
617<\/td>\n20.13 Sampled value system functions <\/td>\n<\/tr>\n
618<\/td>\n20.14 Coverage system functions
20.15 Probabilistic distribution functions
20.15.1 $random function <\/td>\n<\/tr>\n
619<\/td>\n20.15.2 Distribution functions <\/td>\n<\/tr>\n
620<\/td>\n20.16 Stochastic analysis tasks and functions
20.16.1 $q_initialize <\/td>\n<\/tr>\n
621<\/td>\n20.16.2 $q_add
20.16.3 $q_remove
20.16.4 $q_full
20.16.5 $q_exam <\/td>\n<\/tr>\n
622<\/td>\n20.16.6 Status codes
20.17 Programmable logic array modeling system tasks <\/td>\n<\/tr>\n
623<\/td>\n20.17.1 Array types
20.17.2 Array logic types
20.17.3 Logic array personality declaration and loading <\/td>\n<\/tr>\n
624<\/td>\n20.17.4 Logic array personality formats <\/td>\n<\/tr>\n
626<\/td>\n20.18 Miscellaneous tasks and functions
20.18.1 $system <\/td>\n<\/tr>\n
627<\/td>\n21. Input\/output system tasks and system functions
21.1 General
21.2 Display system tasks
21.2.1 The display and write tasks <\/td>\n<\/tr>\n
628<\/td>\n21.2.1.1 Escape sequences for special characters <\/td>\n<\/tr>\n
629<\/td>\n21.2.1.2 Format specifications <\/td>\n<\/tr>\n
632<\/td>\n21.2.1.3 Size of displayed data <\/td>\n<\/tr>\n
633<\/td>\n21.2.1.4 Unknown and high-impedance values <\/td>\n<\/tr>\n
634<\/td>\n21.2.1.5 Strength format <\/td>\n<\/tr>\n
635<\/td>\n21.2.1.6 Hierarchical name format
21.2.1.7 Assignment pattern format <\/td>\n<\/tr>\n
636<\/td>\n21.2.1.8 String format <\/td>\n<\/tr>\n
637<\/td>\n21.2.2 Strobed monitoring
21.2.3 Continuous monitoring <\/td>\n<\/tr>\n
638<\/td>\n21.3 File input\/output system tasks and system functions
21.3.1 Opening and closing files <\/td>\n<\/tr>\n
639<\/td>\n21.3.2 File output system tasks <\/td>\n<\/tr>\n
641<\/td>\n21.3.3 Formatting data to a string <\/td>\n<\/tr>\n
642<\/td>\n21.3.4 Reading data from a file
21.3.4.1 Reading a character at a time
21.3.4.2 Reading a line at a time <\/td>\n<\/tr>\n
643<\/td>\n21.3.4.3 Reading formatted data <\/td>\n<\/tr>\n
645<\/td>\n21.3.4.4 Reading binary data <\/td>\n<\/tr>\n
646<\/td>\n21.3.5 File positioning <\/td>\n<\/tr>\n
647<\/td>\n21.3.6 Flushing output <\/td>\n<\/tr>\n
648<\/td>\n21.3.7 I\/O error status
21.3.8 Detecting EOF
21.4 Loading memory array data from a file <\/td>\n<\/tr>\n
650<\/td>\n21.4.1 Reading packed data
21.4.2 Reading 2-state types <\/td>\n<\/tr>\n
651<\/td>\n21.4.3 File format considerations for multidimensional unpacked arrays <\/td>\n<\/tr>\n
652<\/td>\n21.5 Writing memory array data to a file
21.5.1 Writing packed data
21.5.2 Writing 2-state types
21.5.3 Writing addresses to output file <\/td>\n<\/tr>\n
653<\/td>\n21.6 Command line input <\/td>\n<\/tr>\n
656<\/td>\n21.7 Value change dump (VCD) files
21.7.1 Creating 4-state VCD file
21.7.1.1 Specifying name of dump file ($dumpfile) <\/td>\n<\/tr>\n
657<\/td>\n21.7.1.2 Specifying variables to be dumped ($dumpvars) <\/td>\n<\/tr>\n
658<\/td>\n21.7.1.3 Stopping and resuming the dump ($dumpoff\/$dumpon)
21.7.1.4 Generating a checkpoint ($dumpall) <\/td>\n<\/tr>\n
659<\/td>\n21.7.1.5 Limiting size of dump file ($dumplimit)
21.7.1.6 Reading dump file during simulation ($dumpflush) <\/td>\n<\/tr>\n
660<\/td>\n21.7.2 Format of 4-state VCD file
21.7.2.1 Syntax of 4-state VCD file <\/td>\n<\/tr>\n
662<\/td>\n21.7.2.2 Formats of variable values <\/td>\n<\/tr>\n
663<\/td>\n21.7.2.3 Description of keyword commands <\/td>\n<\/tr>\n
664<\/td>\n21.7.2.4 4-state VCD file format example <\/td>\n<\/tr>\n
666<\/td>\n21.7.3 Creating extended VCD file
21.7.3.1 Specifying dump file name and ports to be dumped ($dumpports) <\/td>\n<\/tr>\n
667<\/td>\n21.7.3.2 Stopping and resuming the dump ($dumpportsoff\/$dumpportson) <\/td>\n<\/tr>\n
668<\/td>\n21.7.3.3 Generating a checkpoint ($dumpportsall)
21.7.3.4 Limiting size of dump file ($dumpportslimit)
21.7.3.5 Reading dump file during simulation ($dumpportsflush) <\/td>\n<\/tr>\n
669<\/td>\n21.7.3.6 Description of keyword commands
21.7.3.6.1 $vcdclose
21.7.3.7 General rules for extended VCD system tasks
21.7.4 Format of extended VCD file
21.7.4.1 Syntax of extended VCD file <\/td>\n<\/tr>\n
671<\/td>\n21.7.4.2 Extended VCD node information <\/td>\n<\/tr>\n
672<\/td>\n21.7.4.3 Value changes <\/td>\n<\/tr>\n
673<\/td>\n21.7.4.3.1 State characters <\/td>\n<\/tr>\n
674<\/td>\n21.7.4.3.2 Drivers
21.7.4.4 Extended VCD file format example <\/td>\n<\/tr>\n
675<\/td>\n21.7.5 VCD SystemVerilog type mappings <\/td>\n<\/tr>\n
677<\/td>\n22. Compiler directives
22.1 General
22.2 Overview
22.3 `resetall <\/td>\n<\/tr>\n
678<\/td>\n22.4 `include
22.5 `define, `undef, and `undefineall <\/td>\n<\/tr>\n
679<\/td>\n22.5.1 `define <\/td>\n<\/tr>\n
684<\/td>\n22.5.2 `undef
22.5.3 `undefineall
22.6 `ifdef, `else, `elsif, `endif, `ifndef <\/td>\n<\/tr>\n
687<\/td>\n22.7 `timescale <\/td>\n<\/tr>\n
688<\/td>\n22.8 `default_nettype <\/td>\n<\/tr>\n
689<\/td>\n22.9 `unconnected_drive and `nounconnected_drive
22.10 `celldefine and `endcelldefine
22.11 `pragma <\/td>\n<\/tr>\n
690<\/td>\n22.11.1 Standard pragmas
22.12 `line <\/td>\n<\/tr>\n
691<\/td>\n22.13 `__FILE__ and `__LINE__ <\/td>\n<\/tr>\n
692<\/td>\n22.14 `begin_keywords, `end_keywords <\/td>\n<\/tr>\n
693<\/td>\n22.14.1 Examples <\/td>\n<\/tr>\n
694<\/td>\n22.14.2 IEEE 1364-1995 keywords
22.14.3 IEEE 1364-2001 keywords <\/td>\n<\/tr>\n
695<\/td>\n22.14.4 IEEE 1364-2001-noconfig keywords
22.14.5 IEEE 1364-2005 keywords
22.14.6 IEEE 1800-2005 keywords <\/td>\n<\/tr>\n
696<\/td>\n22.14.7 IEEE 1800-2009 keywords <\/td>\n<\/tr>\n
697<\/td>\n22.14.8 IEEE 1800-2012 keywords
22.14.9 IEEE 1800-2017 keywords <\/td>\n<\/tr>\n
698<\/td>\nPart Two: Hierarchy Constructs <\/td>\n<\/tr>\n
699<\/td>\n23. Modules and hierarchy
23.1 General
23.2 Module definitions
23.2.1 Module header definition <\/td>\n<\/tr>\n
701<\/td>\n23.2.2 Port declarations
23.2.2.1 Non-ANSI style port declarations <\/td>\n<\/tr>\n
704<\/td>\n23.2.2.2 ANSI style list of port declarations <\/td>\n<\/tr>\n
706<\/td>\n23.2.2.3 Rules for determining port kind, data type, and direction <\/td>\n<\/tr>\n
708<\/td>\n23.2.2.4 Default port values <\/td>\n<\/tr>\n
709<\/td>\n23.2.3 Parameterized modules <\/td>\n<\/tr>\n
710<\/td>\n23.2.4 Module contents <\/td>\n<\/tr>\n
711<\/td>\n23.3 Module instances (hierarchy)
23.3.1 Top-level modules and $root <\/td>\n<\/tr>\n
712<\/td>\n23.3.2 Module instantiation syntax <\/td>\n<\/tr>\n
713<\/td>\n23.3.2.1 Connecting module instance ports by ordered list <\/td>\n<\/tr>\n
714<\/td>\n23.3.2.2 Connecting module instance ports by name <\/td>\n<\/tr>\n
715<\/td>\n23.3.2.3 Connecting module instance using implicit named port connections (.name) <\/td>\n<\/tr>\n
716<\/td>\n23.3.2.4 Connecting module instances using wildcard named port connections ( .*) <\/td>\n<\/tr>\n
718<\/td>\n23.3.3 Port connection rules
23.3.3.1 Port coercion
23.3.3.2 Port connection rules for variables
23.3.3.3 Port connection rules for nets with built-in net types <\/td>\n<\/tr>\n
719<\/td>\n23.3.3.4 Port connection rules for interfaces
23.3.3.5 Unpacked array ports and arrays of instances <\/td>\n<\/tr>\n
720<\/td>\n23.3.3.6 Single source nets (uwire)
23.3.3.7 Port connections with dissimilar net types (net and port collapsing) <\/td>\n<\/tr>\n
721<\/td>\n23.3.3.7.1 Port connections with interconnect net types <\/td>\n<\/tr>\n
722<\/td>\n23.3.3.7.2 Terminal connections with interconnect net types
23.3.3.8 Connecting signed values via ports
23.4 Nested modules <\/td>\n<\/tr>\n
723<\/td>\n23.5 Extern modules <\/td>\n<\/tr>\n
724<\/td>\n23.6 Hierarchical names <\/td>\n<\/tr>\n
728<\/td>\n23.7 Member selects and hierarchical names <\/td>\n<\/tr>\n
729<\/td>\n23.7.1 Names with package or class scope resolution operator prefixes <\/td>\n<\/tr>\n
730<\/td>\n23.8 Upwards name referencing <\/td>\n<\/tr>\n
731<\/td>\n23.8.1 Task and function name resolution <\/td>\n<\/tr>\n
732<\/td>\n23.9 Scope rules <\/td>\n<\/tr>\n
734<\/td>\n23.10 Overriding module parameters <\/td>\n<\/tr>\n
735<\/td>\n23.10.1 defparam statement <\/td>\n<\/tr>\n
736<\/td>\n23.10.2 Module instance parameter value assignment <\/td>\n<\/tr>\n
737<\/td>\n23.10.2.1 Parameter value assignment by ordered list <\/td>\n<\/tr>\n
738<\/td>\n23.10.2.2 Parameter value assignment by name <\/td>\n<\/tr>\n
739<\/td>\n23.10.3 Parameter dependence <\/td>\n<\/tr>\n
740<\/td>\n23.10.4 Elaboration considerations
23.10.4.1 Order of elaboration <\/td>\n<\/tr>\n
741<\/td>\n23.10.4.2 Early resolution of hierarchical names
23.11 Binding auxiliary code to scopes or instances <\/td>\n<\/tr>\n
745<\/td>\n24. Programs
24.1 General
24.2 Overview
24.3 The program construct <\/td>\n<\/tr>\n
747<\/td>\n24.3.1 Scheduling semantics of code in program constructs <\/td>\n<\/tr>\n
748<\/td>\n24.3.2 Operation of program port connections in the absence of clocking blocks <\/td>\n<\/tr>\n
749<\/td>\n24.4 Eliminating testbench races
24.5 Blocking tasks in cycle\/event mode <\/td>\n<\/tr>\n
750<\/td>\n24.6 Programwide space and anonymous programs
24.7 Program control tasks <\/td>\n<\/tr>\n
751<\/td>\n25. Interfaces
25.1 General
25.2 Overview <\/td>\n<\/tr>\n
752<\/td>\n25.3 Interface syntax <\/td>\n<\/tr>\n
754<\/td>\n25.3.1 Example without using interfaces
25.3.2 Interface example using a named bundle <\/td>\n<\/tr>\n
755<\/td>\n25.3.3 Interface example using a generic bundle <\/td>\n<\/tr>\n
756<\/td>\n25.4 Ports in interfaces <\/td>\n<\/tr>\n
757<\/td>\n25.5 Modports <\/td>\n<\/tr>\n
759<\/td>\n25.5.1 Example of named port bundle <\/td>\n<\/tr>\n
760<\/td>\n25.5.2 Example of connecting port bundle
25.5.3 Example of connecting port bundle to generic interface <\/td>\n<\/tr>\n
761<\/td>\n25.5.4 Modport expressions <\/td>\n<\/tr>\n
762<\/td>\n25.5.5 Clocking blocks and modports <\/td>\n<\/tr>\n
763<\/td>\n25.6 Interfaces and specify blocks <\/td>\n<\/tr>\n
764<\/td>\n25.7 Tasks and functions in interfaces
25.7.1 Example of using tasks in interface <\/td>\n<\/tr>\n
765<\/td>\n25.7.2 Example of using tasks in modports <\/td>\n<\/tr>\n
767<\/td>\n25.7.3 Example of exporting tasks and functions <\/td>\n<\/tr>\n
768<\/td>\n25.7.4 Example of multiple task exports <\/td>\n<\/tr>\n
770<\/td>\n25.8 Parameterized interfaces <\/td>\n<\/tr>\n
772<\/td>\n25.9 Virtual interfaces <\/td>\n<\/tr>\n
774<\/td>\n25.9.1 Virtual interfaces and clocking blocks <\/td>\n<\/tr>\n
775<\/td>\n25.9.2 Virtual interface modports and clocking blocks <\/td>\n<\/tr>\n
777<\/td>\n25.10 Access to interface objects <\/td>\n<\/tr>\n
778<\/td>\n26. Packages
26.1 General
26.2 Package declarations <\/td>\n<\/tr>\n
779<\/td>\n26.3 Referencing data in packages <\/td>\n<\/tr>\n
783<\/td>\n26.4 Using packages in module headers <\/td>\n<\/tr>\n
784<\/td>\n26.5 Search order rules <\/td>\n<\/tr>\n
786<\/td>\n26.6 Exporting imported names from packages <\/td>\n<\/tr>\n
787<\/td>\n26.7 The std built-in package <\/td>\n<\/tr>\n
789<\/td>\n27. Generate constructs
27.1 General
27.2 Overview
27.3 Generate construct syntax <\/td>\n<\/tr>\n
791<\/td>\n27.4 Loop generate constructs <\/td>\n<\/tr>\n
795<\/td>\n27.5 Conditional generate constructs <\/td>\n<\/tr>\n
798<\/td>\n27.6 External names for unnamed generate blocks <\/td>\n<\/tr>\n
800<\/td>\n28. Gate-level and switch-level modeling
28.1 General
28.2 Overview
28.3 Gate and switch declaration syntax <\/td>\n<\/tr>\n
801<\/td>\n28.3.1 The gate type specification <\/td>\n<\/tr>\n
802<\/td>\n28.3.2 The drive strength specification <\/td>\n<\/tr>\n
803<\/td>\n28.3.3 The delay specification
28.3.4 The primitive instance identifier
28.3.5 The range specification <\/td>\n<\/tr>\n
804<\/td>\n28.3.6 Primitive instance connection list <\/td>\n<\/tr>\n
806<\/td>\n28.4 and, nand, nor, or, xor, and xnor gates <\/td>\n<\/tr>\n
807<\/td>\n28.5 buf and not gates <\/td>\n<\/tr>\n
808<\/td>\n28.6 bufif1, bufif0, notif1, and notif0 gates <\/td>\n<\/tr>\n
809<\/td>\n28.7 MOS switches <\/td>\n<\/tr>\n
810<\/td>\n28.8 Bidirectional pass switches <\/td>\n<\/tr>\n
811<\/td>\n28.9 CMOS switches <\/td>\n<\/tr>\n
812<\/td>\n28.10 pullup and pulldown sources
28.11 Logic strength modeling <\/td>\n<\/tr>\n
814<\/td>\n28.12 Strengths and values of combined signals
28.12.1 Combined signals of unambiguous strength <\/td>\n<\/tr>\n
815<\/td>\n28.12.2 Ambiguous strengths: sources and combinations <\/td>\n<\/tr>\n
820<\/td>\n28.12.3 Ambiguous strength signals and unambiguous signals <\/td>\n<\/tr>\n
824<\/td>\n28.12.4 Wired logic net types <\/td>\n<\/tr>\n
826<\/td>\n28.13 Strength reduction by nonresistive devices
28.14 Strength reduction by resistive devices
28.15 Strengths of net types
28.15.1 tri0 and tri1 net strengths
28.15.2 trireg strength <\/td>\n<\/tr>\n
827<\/td>\n28.15.3 supply0 and supply1 net strengths
28.16 Gate and net delays <\/td>\n<\/tr>\n
828<\/td>\n28.16.1 min:typ:max delays <\/td>\n<\/tr>\n
829<\/td>\n28.16.2 trireg net charge decay
28.16.2.1 Charge decay process
28.16.2.2 Delay specification for charge decay time <\/td>\n<\/tr>\n
831<\/td>\n29. User-defined primitives
29.1 General
29.2 Overview
29.3 UDP definition <\/td>\n<\/tr>\n
833<\/td>\n29.3.1 UDP header
29.3.2 UDP port declarations
29.3.3 Sequential UDP initial statement
29.3.4 UDP state table <\/td>\n<\/tr>\n
834<\/td>\n29.3.5 Z values in UDP
29.3.6 Summary of symbols <\/td>\n<\/tr>\n
835<\/td>\n29.4 Combinational UDPs <\/td>\n<\/tr>\n
836<\/td>\n29.5 Level-sensitive sequential UDPs
29.6 Edge-sensitive sequential UDPs <\/td>\n<\/tr>\n
837<\/td>\n29.7 Sequential UDP initialization <\/td>\n<\/tr>\n
839<\/td>\n29.8 UDP instances <\/td>\n<\/tr>\n
840<\/td>\n29.9 Mixing level-sensitive and edge-sensitive descriptions <\/td>\n<\/tr>\n
841<\/td>\n29.10 Level-sensitive dominance <\/td>\n<\/tr>\n
842<\/td>\n30. Specify blocks
30.1 General
30.2 Overview
30.3 Specify block declaration <\/td>\n<\/tr>\n
843<\/td>\n30.4 Module path declarations
30.4.1 Module path restrictions <\/td>\n<\/tr>\n
844<\/td>\n30.4.2 Simple module paths <\/td>\n<\/tr>\n
845<\/td>\n30.4.3 Edge-sensitive paths <\/td>\n<\/tr>\n
846<\/td>\n30.4.4 State-dependent paths
30.4.4.1 Conditional expression <\/td>\n<\/tr>\n
847<\/td>\n30.4.4.2 Simple state-dependent paths <\/td>\n<\/tr>\n
848<\/td>\n30.4.4.3 Edge-sensitive state-dependent paths <\/td>\n<\/tr>\n
849<\/td>\n30.4.4.4 The ifnone condition <\/td>\n<\/tr>\n
850<\/td>\n30.4.5 Full connection and parallel connection paths <\/td>\n<\/tr>\n
851<\/td>\n30.4.6 Declaring multiple module paths in a single statement
30.4.7 Module path polarity
30.4.7.1 Unknown polarity <\/td>\n<\/tr>\n
852<\/td>\n30.4.7.2 Positive polarity
30.4.7.3 Negative polarity
30.5 Assigning delays to module paths <\/td>\n<\/tr>\n
853<\/td>\n30.5.1 Specifying transition delays on module paths <\/td>\n<\/tr>\n
854<\/td>\n30.5.2 Specifying x transition delays <\/td>\n<\/tr>\n
855<\/td>\n30.5.3 Delay selection <\/td>\n<\/tr>\n
856<\/td>\n30.6 Mixing module path delays and distributed delays <\/td>\n<\/tr>\n
857<\/td>\n30.7 Detailed control of pulse filtering behavior <\/td>\n<\/tr>\n
858<\/td>\n30.7.1 Specify block control of pulse limit values <\/td>\n<\/tr>\n
859<\/td>\n30.7.2 Global control of pulse limit values
30.7.3 SDF annotation of pulse limit values
30.7.4 Detailed pulse control capabilities
30.7.4.1 On-event versus on-detect pulse filtering <\/td>\n<\/tr>\n
860<\/td>\n30.7.4.2 Negative pulse detection <\/td>\n<\/tr>\n
866<\/td>\n31. Timing checks
31.1 General
31.2 Overview <\/td>\n<\/tr>\n
869<\/td>\n31.3 Timing checks using a stability window
31.3.1 $setup <\/td>\n<\/tr>\n
870<\/td>\n31.3.2 $hold <\/td>\n<\/tr>\n
871<\/td>\n31.3.3 $setuphold <\/td>\n<\/tr>\n
872<\/td>\n31.3.4 $removal <\/td>\n<\/tr>\n
873<\/td>\n31.3.5 $recovery <\/td>\n<\/tr>\n
874<\/td>\n31.3.6 $recrem <\/td>\n<\/tr>\n
876<\/td>\n31.4 Timing checks for clock and control signals
31.4.1 $skew <\/td>\n<\/tr>\n
877<\/td>\n31.4.2 $timeskew <\/td>\n<\/tr>\n
879<\/td>\n31.4.3 $fullskew <\/td>\n<\/tr>\n
882<\/td>\n31.4.4 $width <\/td>\n<\/tr>\n
883<\/td>\n31.4.5 $period <\/td>\n<\/tr>\n
884<\/td>\n31.4.6 $nochange <\/td>\n<\/tr>\n
885<\/td>\n31.5 Edge-control specifiers <\/td>\n<\/tr>\n
886<\/td>\n31.6 Notifiers: user-defined responses to timing violations <\/td>\n<\/tr>\n
888<\/td>\n31.7 Enabling timing checks with conditioned events <\/td>\n<\/tr>\n
889<\/td>\n31.8 Vector signals in timing checks <\/td>\n<\/tr>\n
890<\/td>\n31.9 Negative timing checks <\/td>\n<\/tr>\n
891<\/td>\n31.9.1 Requirements for accurate simulation <\/td>\n<\/tr>\n
893<\/td>\n31.9.2 Conditions in negative timing checks <\/td>\n<\/tr>\n
894<\/td>\n31.9.3 Notifiers in negative timing checks
31.9.4 Option behavior <\/td>\n<\/tr>\n
895<\/td>\n32. Backannotation using the standard delay format
32.1 General
32.2 Overview
32.3 The SDF annotator
32.4 Mapping of SDF constructs to SystemVerilog <\/td>\n<\/tr>\n
896<\/td>\n32.4.1 Mapping of SDF delay constructs to SystemVerilog declarations <\/td>\n<\/tr>\n
897<\/td>\n32.4.2 Mapping of SDF timing check constructs to SystemVerilog <\/td>\n<\/tr>\n
898<\/td>\n32.4.3 SDF annotation of specparams <\/td>\n<\/tr>\n
899<\/td>\n32.4.4 SDF annotation of interconnect delays <\/td>\n<\/tr>\n
900<\/td>\n32.5 Multiple annotations <\/td>\n<\/tr>\n
901<\/td>\n32.6 Multiple SDF files
32.7 Pulse limit annotation <\/td>\n<\/tr>\n
902<\/td>\n32.8 SDF to SystemVerilog delay value mapping <\/td>\n<\/tr>\n
903<\/td>\n32.9 Loading timing data from an SDF file <\/td>\n<\/tr>\n
905<\/td>\n33. Configuring the contents of a design
33.1 General
33.2 Overview
33.2.1 Library notation <\/td>\n<\/tr>\n
906<\/td>\n33.2.2 Basic configuration elements
33.3 Libraries
33.3.1 Specifying libraries\u2014the library map file <\/td>\n<\/tr>\n
907<\/td>\n33.3.1.1 File path resolution <\/td>\n<\/tr>\n
908<\/td>\n33.3.2 Using multiple library map files
33.3.3 Mapping source files to libraries
33.4 Configurations <\/td>\n<\/tr>\n
909<\/td>\n33.4.1 Basic configuration syntax
33.4.1.1 Design statement
33.4.1.2 The default clause <\/td>\n<\/tr>\n
910<\/td>\n33.4.1.3 The instance clause
33.4.1.4 The cell clause
33.4.1.5 The liblist clause
33.4.1.6 The use clause
33.4.2 Hierarchical configurations <\/td>\n<\/tr>\n
911<\/td>\n33.4.3 Setting parameters in configurations <\/td>\n<\/tr>\n
914<\/td>\n33.5 Using libraries and configs
33.5.1 Precompiling in a single-pass use model <\/td>\n<\/tr>\n
915<\/td>\n33.5.2 Elaboration-time compiling in a single-pass use model
33.5.3 Precompiling using a separate compilation tool
33.5.4 Command line considerations
33.6 Configuration examples <\/td>\n<\/tr>\n
916<\/td>\n33.6.1 Default configuration from library map file
33.6.2 Using default clause
33.6.3 Using cell clause
33.6.4 Using instance clause <\/td>\n<\/tr>\n
917<\/td>\n33.6.5 Using hierarchical config
33.7 Displaying library binding information
33.8 Library mapping examples <\/td>\n<\/tr>\n
918<\/td>\n33.8.1 Using the command line to control library searching
33.8.2 File path specification examples
33.8.3 Resolving multiple path specifications <\/td>\n<\/tr>\n
920<\/td>\n34. Protected envelopes
34.1 General
34.2 Overview
34.3 Processing protected envelopes <\/td>\n<\/tr>\n
921<\/td>\n34.3.1 Encryption <\/td>\n<\/tr>\n
922<\/td>\n34.3.2 Decryption
34.4 Protect pragma directives <\/td>\n<\/tr>\n
924<\/td>\n34.5 Protect pragma keywords
34.5.1 begin
34.5.1.1 Syntax
34.5.1.2 Description
34.5.2 end
34.5.2.1 Syntax
34.5.2.2 Description <\/td>\n<\/tr>\n
925<\/td>\n34.5.3 begin_protected
34.5.3.1 Syntax
34.5.3.2 Description
34.5.4 end_protected
34.5.4.1 Syntax
34.5.4.2 Description
34.5.5 author
34.5.5.1 Syntax
34.5.5.2 Description <\/td>\n<\/tr>\n
926<\/td>\n34.5.6 author_info
34.5.6.1 Syntax
34.5.6.2 Description
34.5.7 encrypt_agent
34.5.7.1 Syntax
34.5.7.2 Description
34.5.8 encrypt_agent_info
34.5.8.1 Syntax
34.5.8.2 Description <\/td>\n<\/tr>\n
927<\/td>\n34.5.9 encoding
34.5.9.1 Syntax
34.5.9.2 Description <\/td>\n<\/tr>\n
928<\/td>\n34.5.10 data_keyowner
34.5.10.1 Syntax
34.5.10.2 Description
34.5.11 data_method
34.5.11.1 Syntax
34.5.11.2 Description <\/td>\n<\/tr>\n
929<\/td>\n34.5.12 data_keyname
34.5.12.1 Syntax
34.5.12.2 Description <\/td>\n<\/tr>\n
930<\/td>\n34.5.13 data_public_key
34.5.13.1 Syntax
34.5.13.2 Description
34.5.14 data_decrypt_key
34.5.14.1 Syntax
34.5.14.2 Description <\/td>\n<\/tr>\n
931<\/td>\n34.5.15 data_block
34.5.15.1 Syntax
34.5.15.2 Description
34.5.16 digest_keyowner
34.5.16.1 Syntax
34.5.16.2 Description
34.5.17 digest_key_method
34.5.17.1 Syntax <\/td>\n<\/tr>\n
932<\/td>\n34.5.17.2 Description
34.5.18 digest_keyname
34.5.18.1 Syntax
34.5.18.2 Description
34.5.19 digest_public_key
34.5.19.1 Syntax
34.5.19.2 Description <\/td>\n<\/tr>\n
933<\/td>\n34.5.20 digest_decrypt_key
34.5.20.1 Syntax
34.5.20.2 Description
34.5.21 digest_method
34.5.21.1 Syntax
34.5.21.2 Description <\/td>\n<\/tr>\n
934<\/td>\n34.5.22 digest_block
34.5.22.1 Syntax
34.5.22.2 Description <\/td>\n<\/tr>\n
935<\/td>\n34.5.23 key_keyowner
34.5.23.1 Syntax
34.5.23.2 Description
34.5.24 key_method
34.5.24.1 Syntax
34.5.24.2 Description
34.5.25 key_keyname
34.5.25.1 Syntax
34.5.25.2 Description <\/td>\n<\/tr>\n
936<\/td>\n34.5.26 key_public_key
34.5.26.1 Syntax
34.5.26.2 Description
34.5.27 key_block
34.5.27.1 Syntax
34.5.27.2 Description <\/td>\n<\/tr>\n
937<\/td>\n34.5.28 decrypt_license
34.5.28.1 Syntax
34.5.28.2 Description
34.5.29 runtime_license
34.5.29.1 Syntax
34.5.29.2 Description <\/td>\n<\/tr>\n
938<\/td>\n34.5.30 comment
34.5.30.1 Syntax
34.5.30.2 Description
34.5.31 reset
34.5.31.1 Syntax
34.5.31.2 Description <\/td>\n<\/tr>\n
939<\/td>\n34.5.32 viewport
34.5.32.1 Syntax
34.5.32.2 Description <\/td>\n<\/tr>\n
940<\/td>\nPart Three: Application Programming Interfaces <\/td>\n<\/tr>\n
941<\/td>\n35. Direct programming interface
35.1 General
35.2 Overview
35.2.1 Tasks and functions <\/td>\n<\/tr>\n
942<\/td>\n35.2.2 Data types
35.2.2.1 Data representation
35.3 Two layers of DPI <\/td>\n<\/tr>\n
943<\/td>\n35.3.1 DPI SystemVerilog layer
35.3.2 DPI foreign language layer
35.4 Global name space of imported and exported functions <\/td>\n<\/tr>\n
944<\/td>\n35.5 Imported tasks and functions
35.5.1 Required properties of imported tasks and functions\u2014semantic constraints
35.5.1.1 Instant completion of imported functions
35.5.1.2 input, output, and inout arguments
35.5.1.3 Special properties pure and context <\/td>\n<\/tr>\n
945<\/td>\n35.5.1.4 Memory management
35.5.1.5 Reentrancy of imported tasks
35.5.1.6 C++ exceptions
35.5.2 Pure functions <\/td>\n<\/tr>\n
946<\/td>\n35.5.3 Context tasks and functions <\/td>\n<\/tr>\n
948<\/td>\n35.5.4 Import declarations <\/td>\n<\/tr>\n
950<\/td>\n35.5.5 Function result
35.5.6 Types of formal arguments <\/td>\n<\/tr>\n
951<\/td>\n35.5.6.1 Open arrays
35.6 Calling imported functions <\/td>\n<\/tr>\n
952<\/td>\n35.6.1 Argument passing
35.6.1.1 WYSIWYG principle <\/td>\n<\/tr>\n
953<\/td>\n35.6.2 Value changes for output and inout arguments
35.7 Exported functions <\/td>\n<\/tr>\n
954<\/td>\n35.8 Exported tasks
35.9 Disabling DPI tasks and functions <\/td>\n<\/tr>\n
956<\/td>\n36. Programming language interface (PLI\/VPI) overview
36.1 General
36.2 PLI purpose and history <\/td>\n<\/tr>\n
957<\/td>\n36.3 User-defined system task and system function names
36.3.1 Defining system task and system function names
36.3.2 Overriding built-in system task and system function names <\/td>\n<\/tr>\n
958<\/td>\n36.4 User-defined system task and system function arguments
36.5 User-defined system task and system function types
36.6 User-supplied PLI applications
36.7 PLI include files
36.8 VPI sizetf, compiletf, and calltf routines <\/td>\n<\/tr>\n
959<\/td>\n36.8.1 sizetf VPI application routine
36.8.2 compiletf VPI application routine
36.8.3 calltf VPI application routine
36.8.4 Arguments to sizetf, compiletf, and calltf application routines
36.9 PLI mechanism <\/td>\n<\/tr>\n
960<\/td>\n36.9.1 Registering user-defined system tasks and system functions
36.9.2 Registering simulation callbacks <\/td>\n<\/tr>\n
961<\/td>\n36.10 VPI access to SystemVerilog objects and simulation objects
36.10.1 Error handling
36.10.2 Function availability <\/td>\n<\/tr>\n
962<\/td>\n36.10.3 Traversing expressions
36.11 List of VPI routines by functional category <\/td>\n<\/tr>\n
964<\/td>\n36.12 VPI backwards compatibility features and limitations <\/td>\n<\/tr>\n
965<\/td>\n36.12.1 VPI Incompatibilities with other standard versions <\/td>\n<\/tr>\n
966<\/td>\n36.12.2 VPI Mechanisms to deal with incompatibilities
36.12.2.1 Mechanism 1: Compile-based binding to a compatibility mode <\/td>\n<\/tr>\n
968<\/td>\n36.12.2.2 Mechanism 2: Selection of default VPI compatibility mode run by host simulator
36.12.3 Limitations of VPI compatibility mechanisms <\/td>\n<\/tr>\n
969<\/td>\n37. VPI object model diagrams
37.1 General
37.2 VPI Handles
37.2.1 Handle creation
37.2.2 Handle release <\/td>\n<\/tr>\n
970<\/td>\n37.2.3 Handle comparison
37.2.4 Validity of handles
37.3 VPI object classifications <\/td>\n<\/tr>\n
971<\/td>\n37.3.1 Accessing object relationships and properties <\/td>\n<\/tr>\n
972<\/td>\n37.3.2 Object type properties <\/td>\n<\/tr>\n
973<\/td>\n37.3.3 Object file and line properties
37.3.4 Delays and values <\/td>\n<\/tr>\n
974<\/td>\n37.3.5 Expressions with side effects <\/td>\n<\/tr>\n
975<\/td>\n37.3.6 Object protection properties
37.3.7 Lifetimes of objects <\/td>\n<\/tr>\n
976<\/td>\n37.3.8 Managing transient objects
37.4 Key to data model diagrams <\/td>\n<\/tr>\n
977<\/td>\n37.4.1 Diagram key for objects and classes
37.4.2 Diagram key for accessing properties <\/td>\n<\/tr>\n
978<\/td>\n37.4.3 Diagram key for traversing relationships <\/td>\n<\/tr>\n
979<\/td>\n37.5 Module <\/td>\n<\/tr>\n
980<\/td>\n37.6 Interface
37.7 Modport
37.8 Interface task or function declaration <\/td>\n<\/tr>\n
981<\/td>\n37.9 Program <\/td>\n<\/tr>\n
982<\/td>\n37.10 Instance <\/td>\n<\/tr>\n
984<\/td>\n37.11 Instance arrays <\/td>\n<\/tr>\n
985<\/td>\n37.12 Scope <\/td>\n<\/tr>\n
986<\/td>\n37.13 IO declaration <\/td>\n<\/tr>\n
987<\/td>\n37.14 Ports <\/td>\n<\/tr>\n
988<\/td>\n37.15 Reference objects <\/td>\n<\/tr>\n
990<\/td>\n37.16 Nets <\/td>\n<\/tr>\n
994<\/td>\n37.17 Variables <\/td>\n<\/tr>\n
997<\/td>\n37.18 Packed array variables <\/td>\n<\/tr>\n
998<\/td>\n37.19 Variable select <\/td>\n<\/tr>\n
999<\/td>\n37.20 Memory
37.21 Variable drivers and loads <\/td>\n<\/tr>\n
1000<\/td>\n37.22 Object Range <\/td>\n<\/tr>\n
1001<\/td>\n37.23 Typespec <\/td>\n<\/tr>\n
1003<\/td>\n37.24 Structures and unions <\/td>\n<\/tr>\n
1004<\/td>\n37.25 Named events <\/td>\n<\/tr>\n
1005<\/td>\n37.26 Parameter, spec param, def param, param assign <\/td>\n<\/tr>\n
1006<\/td>\n37.27 Virtual interface <\/td>\n<\/tr>\n
1008<\/td>\n37.28 Interface typespec <\/td>\n<\/tr>\n
1009<\/td>\n37.29 Class definition <\/td>\n<\/tr>\n
1010<\/td>\n37.30 Class typespec <\/td>\n<\/tr>\n
1012<\/td>\n37.31 Class variables and class objects <\/td>\n<\/tr>\n
1014<\/td>\n37.32 Constraint, constraint ordering, distribution <\/td>\n<\/tr>\n
1015<\/td>\n37.33 Primitive, prim term <\/td>\n<\/tr>\n
1016<\/td>\n37.34 UDP
37.35 Intermodule path <\/td>\n<\/tr>\n
1017<\/td>\n37.36 Constraint expression <\/td>\n<\/tr>\n
1018<\/td>\n37.37 Module path, path term <\/td>\n<\/tr>\n
1019<\/td>\n37.38 Timing check <\/td>\n<\/tr>\n
1020<\/td>\n37.39 Task and function declaration <\/td>\n<\/tr>\n
1021<\/td>\n37.40 Task and function call <\/td>\n<\/tr>\n
1023<\/td>\n37.41 Frames <\/td>\n<\/tr>\n
1024<\/td>\n37.42 Threads
37.43 Delay terminals <\/td>\n<\/tr>\n
1025<\/td>\n37.44 Net drivers and loads <\/td>\n<\/tr>\n
1026<\/td>\n37.45 Continuous assignment <\/td>\n<\/tr>\n
1027<\/td>\n37.46 Clocking block <\/td>\n<\/tr>\n
1028<\/td>\n37.47 Assertion <\/td>\n<\/tr>\n
1029<\/td>\n37.48 Concurrent assertions <\/td>\n<\/tr>\n
1030<\/td>\n37.49 Property declaration <\/td>\n<\/tr>\n
1031<\/td>\n37.50 Property specification <\/td>\n<\/tr>\n
1032<\/td>\n37.51 Sequence declaration <\/td>\n<\/tr>\n
1033<\/td>\n37.52 Sequence expression <\/td>\n<\/tr>\n
1034<\/td>\n37.53 Immediate assertions <\/td>\n<\/tr>\n
1035<\/td>\n37.54 Multiclock sequence expression
37.55 Let <\/td>\n<\/tr>\n
1036<\/td>\n37.56 Simple expressions <\/td>\n<\/tr>\n
1037<\/td>\n37.57 Expressions <\/td>\n<\/tr>\n
1040<\/td>\n37.58 Atomic statement <\/td>\n<\/tr>\n
1041<\/td>\n37.59 Dynamic prefixing <\/td>\n<\/tr>\n
1042<\/td>\n37.60 Event statement
37.61 Process <\/td>\n<\/tr>\n
1043<\/td>\n37.62 Assignment
37.63 Event control <\/td>\n<\/tr>\n
1044<\/td>\n37.64 While, repeat
37.65 Waits
37.66 Delay control <\/td>\n<\/tr>\n
1045<\/td>\n37.67 Repeat control
37.68 Forever
37.69 If, if\u2013else <\/td>\n<\/tr>\n
1046<\/td>\n37.70 Case, pattern <\/td>\n<\/tr>\n
1047<\/td>\n37.71 Expect
37.72 For
37.73 Do-while, foreach <\/td>\n<\/tr>\n
1048<\/td>\n37.74 Alias statement
37.75 Disables
37.76 Return statement <\/td>\n<\/tr>\n
1049<\/td>\n37.77 Assign statement, deassign, force, release
37.78 Callback <\/td>\n<\/tr>\n
1050<\/td>\n37.79 Time queue
37.80 Active time format <\/td>\n<\/tr>\n
1051<\/td>\n37.81 Attribute <\/td>\n<\/tr>\n
1052<\/td>\n37.82 Iterator <\/td>\n<\/tr>\n
1053<\/td>\n37.83 Generates <\/td>\n<\/tr>\n
1055<\/td>\n38. VPI routine definitions
38.1 General
38.2 vpi_chk_error() <\/td>\n<\/tr>\n
1056<\/td>\n38.3 vpi_compare_objects() <\/td>\n<\/tr>\n
1058<\/td>\n38.4 vpi_control() <\/td>\n<\/tr>\n
1059<\/td>\n38.5 vpi_flush()
38.6 vpi_get() <\/td>\n<\/tr>\n
1060<\/td>\n38.7 vpi_get64()
38.8 vpi_get_cb_info() <\/td>\n<\/tr>\n
1061<\/td>\n38.9 vpi_get_data() <\/td>\n<\/tr>\n
1062<\/td>\n38.10 vpi_get_delays() <\/td>\n<\/tr>\n
1064<\/td>\n38.11 vpi_get_str() <\/td>\n<\/tr>\n
1065<\/td>\n38.12 vpi_get_systf_info() <\/td>\n<\/tr>\n
1066<\/td>\n38.13 vpi_get_time() <\/td>\n<\/tr>\n
1067<\/td>\n38.14 vpi_get_userdata()
38.15 vpi_get_value() <\/td>\n<\/tr>\n
1073<\/td>\n38.16 vpi_get_value_array() <\/td>\n<\/tr>\n
1077<\/td>\n38.17 vpi_get_vlog_info() <\/td>\n<\/tr>\n
1078<\/td>\n38.18 vpi_handle() <\/td>\n<\/tr>\n
1079<\/td>\n38.19 vpi_handle_by_index()
38.20 vpi_handle_by_multi_index() <\/td>\n<\/tr>\n
1080<\/td>\n38.21 vpi_handle_by_name() <\/td>\n<\/tr>\n
1081<\/td>\n38.22 vpi_handle_multi()
38.23 vpi_iterate() <\/td>\n<\/tr>\n
1082<\/td>\n38.24 vpi_mcd_close() <\/td>\n<\/tr>\n
1083<\/td>\n38.25 vpi_mcd_flush()
38.26 vpi_mcd_name() <\/td>\n<\/tr>\n
1084<\/td>\n38.27 vpi_mcd_open() <\/td>\n<\/tr>\n
1085<\/td>\n38.28 vpi_mcd_printf() <\/td>\n<\/tr>\n
1086<\/td>\n38.29 vpi_mcd_vprintf()
38.30 vpi_printf() <\/td>\n<\/tr>\n
1087<\/td>\n38.31 vpi_put_data() <\/td>\n<\/tr>\n
1089<\/td>\n38.32 vpi_put_delays() <\/td>\n<\/tr>\n
1092<\/td>\n38.33 vpi_put_userdata()
38.34 vpi_put_value() <\/td>\n<\/tr>\n
1095<\/td>\n38.35 vpi_put_value_array() <\/td>\n<\/tr>\n
1099<\/td>\n38.36 vpi_register_cb() <\/td>\n<\/tr>\n
1100<\/td>\n38.36.1 Simulation event callbacks <\/td>\n<\/tr>\n
1103<\/td>\n38.36.1.1 Callbacks on individual statements
38.36.1.2 Behavior by statement type <\/td>\n<\/tr>\n
1104<\/td>\n38.36.1.3 Registering callbacks on module-wide basis
38.36.2 Simulation time callbacks <\/td>\n<\/tr>\n
1105<\/td>\n38.36.3 Simulator action or feature callbacks <\/td>\n<\/tr>\n
1107<\/td>\n38.37 vpi_register_systf() <\/td>\n<\/tr>\n
1108<\/td>\n38.37.1 System task and system function callbacks <\/td>\n<\/tr>\n
1109<\/td>\n38.37.2 Initializing VPI system task or system function callbacks <\/td>\n<\/tr>\n
1110<\/td>\n38.37.3 Registering multiple system tasks and system functions <\/td>\n<\/tr>\n
1111<\/td>\n38.38 vpi_release_handle()
38.39 vpi_remove_cb() <\/td>\n<\/tr>\n
1112<\/td>\n38.40 vpi_scan() <\/td>\n<\/tr>\n
1113<\/td>\n38.41 vpi_vprintf() <\/td>\n<\/tr>\n
1114<\/td>\n39. Assertion API
39.1 General
39.2 Overview
39.3 Static information
39.3.1 Obtaining assertion handles <\/td>\n<\/tr>\n
1115<\/td>\n39.3.2 Obtaining static assertion information
39.4 Dynamic information
39.4.1 Placing assertion system callbacks <\/td>\n<\/tr>\n
1116<\/td>\n39.4.2 Placing assertions callbacks <\/td>\n<\/tr>\n
1119<\/td>\n39.4.2.1 Placing callbacks for assertions with global clocking future sampled value functions
39.5 Control functions
39.5.1 Assertion system control <\/td>\n<\/tr>\n
1121<\/td>\n39.5.2 Assertion control <\/td>\n<\/tr>\n
1122<\/td>\n39.5.3 VPI functions on deferred assertions and procedural concurrent assertions <\/td>\n<\/tr>\n
1123<\/td>\n40. Code coverage control and API
40.1 General
40.2 Overview
40.2.1 SystemVerilog coverage API
40.2.2 Nomenclature <\/td>\n<\/tr>\n
1124<\/td>\n40.3 SystemVerilog real-time coverage access
40.3.1 Predefined coverage constants in SystemVerilog
40.3.2 Built-in coverage access system functions
40.3.2.1 $coverage_control <\/td>\n<\/tr>\n
1128<\/td>\n40.3.2.2 $coverage_get_max
40.3.2.3 $coverage_get
40.3.2.4 $coverage_merge <\/td>\n<\/tr>\n
1129<\/td>\n40.3.2.5 $coverage_save
40.4 FSM recognition
40.4.1 Specifying signal that holds current state <\/td>\n<\/tr>\n
1130<\/td>\n40.4.2 Specifying part-select that holds current state
40.4.3 Specifying concatenation that holds current state
40.4.4 Specifying signal that holds next state
40.4.5 Specifying current and next state signals in same declaration <\/td>\n<\/tr>\n
1131<\/td>\n40.4.6 Specifying possible states of FSM
40.4.7 Pragmas in one-line comments
40.4.8 Example <\/td>\n<\/tr>\n
1132<\/td>\n40.5 VPI coverage extensions
40.5.1 VPI entity\/relation diagrams related to coverage
40.5.2 Extensions to VPI enumerations <\/td>\n<\/tr>\n
1133<\/td>\n40.5.3 Obtaining coverage information <\/td>\n<\/tr>\n
1135<\/td>\n40.5.4 Controlling coverage <\/td>\n<\/tr>\n
1137<\/td>\n41. Data read API <\/td>\n<\/tr>\n
1138<\/td>\nPart Four: Annexes <\/td>\n<\/tr>\n
1139<\/td>\nAnnex A (normative) Formal syntax
A.1 Source text
A.1.1 Library source text
A.1.2 SystemVerilog source text <\/td>\n<\/tr>\n
1141<\/td>\nA.1.3 Module parameters and ports <\/td>\n<\/tr>\n
1142<\/td>\nA.1.4 Module items <\/td>\n<\/tr>\n
1143<\/td>\nA.1.5 Configuration source text <\/td>\n<\/tr>\n
1144<\/td>\nA.1.6 Interface items
A.1.7 Program items <\/td>\n<\/tr>\n
1145<\/td>\nA.1.8 Checker items
A.1.9 Class items <\/td>\n<\/tr>\n
1146<\/td>\nA.1.10 Constraints <\/td>\n<\/tr>\n
1147<\/td>\nA.1.11 Package items <\/td>\n<\/tr>\n
1148<\/td>\nA.2 Declarations
A.2.1 Declaration types
A.2.1.1 Module parameter declarations
A.2.1.2 Port declarations
A.2.1.3 Type declarations <\/td>\n<\/tr>\n
1149<\/td>\nA.2.2 Declaration data types
A.2.2.1 Net and variable types <\/td>\n<\/tr>\n
1150<\/td>\nA.2.2.2 Strengths
A.2.2.3 Delays
A.2.3 Declaration lists <\/td>\n<\/tr>\n
1151<\/td>\nA.2.4 Declaration assignments
A.2.5 Declaration ranges <\/td>\n<\/tr>\n
1152<\/td>\nA.2.6 Function declarations
A.2.7 Task declarations <\/td>\n<\/tr>\n
1153<\/td>\nA.2.8 Block item declarations
A.2.9 Interface declarations <\/td>\n<\/tr>\n
1154<\/td>\nA.2.10 Assertion declarations <\/td>\n<\/tr>\n
1157<\/td>\nA.2.11 Covergroup declarations <\/td>\n<\/tr>\n
1159<\/td>\nA.2.12 Let declarations
A.3 Primitive instances
A.3.1 Primitive instantiation and instances <\/td>\n<\/tr>\n
1160<\/td>\nA.3.2 Primitive strengths
A.3.3 Primitive terminals
A.3.4 Primitive gate and switch types
A.4 Instantiations
A.4.1 Instantiation
A.4.1.1 Module instantiation <\/td>\n<\/tr>\n
1161<\/td>\nA.4.1.2 Interface instantiation
A.4.1.3 Program instantiation
A.4.1.4 Checker instantiation
A.4.2 Generated instantiation <\/td>\n<\/tr>\n
1162<\/td>\nA.5 UDP declaration and instantiation
A.5.1 UDP declaration
A.5.2 UDP ports <\/td>\n<\/tr>\n
1163<\/td>\nA.5.3 UDP body
A.5.4 UDP instantiation
A.6 Behavioral statements
A.6.1 Continuous assignment and net alias statements <\/td>\n<\/tr>\n
1164<\/td>\nA.6.2 Procedural blocks and assignments
A.6.3 Parallel and sequential blocks
A.6.4 Statements <\/td>\n<\/tr>\n
1165<\/td>\nA.6.5 Timing control statements <\/td>\n<\/tr>\n
1166<\/td>\nA.6.6 Conditional statements
A.6.7 Case statements <\/td>\n<\/tr>\n
1167<\/td>\nA.6.7.1 Patterns
A.6.8 Looping statements <\/td>\n<\/tr>\n
1168<\/td>\nA.6.9 Subroutine call statements
A.6.10 Assertion statements <\/td>\n<\/tr>\n
1169<\/td>\nA.6.11 Clocking block
A.6.12 Randsequence <\/td>\n<\/tr>\n
1170<\/td>\nA.7 Specify section
A.7.1 Specify block declaration
A.7.2 Specify path declarations <\/td>\n<\/tr>\n
1171<\/td>\nA.7.3 Specify block terminals
A.7.4 Specify path delays <\/td>\n<\/tr>\n
1172<\/td>\nA.7.5 System timing checks
A.7.5.1 System timing check commands <\/td>\n<\/tr>\n
1173<\/td>\nA.7.5.2 System timing check command arguments
A.7.5.3 System timing check event definitions <\/td>\n<\/tr>\n
1174<\/td>\nA.8 Expressions
A.8.1 Concatenations
A.8.2 Subroutine calls <\/td>\n<\/tr>\n
1175<\/td>\nA.8.3 Expressions <\/td>\n<\/tr>\n
1176<\/td>\nA.8.4 Primaries <\/td>\n<\/tr>\n
1178<\/td>\nA.8.5 Expression left-side values
A.8.6 Operators
A.8.7 Numbers <\/td>\n<\/tr>\n
1179<\/td>\nA.8.8 Strings <\/td>\n<\/tr>\n
1180<\/td>\nA.9 General
A.9.1 Attributes
A.9.2 Comments
A.9.3 Identifiers <\/td>\n<\/tr>\n
1182<\/td>\nA.9.4 White space
A.10 Footnotes (normative) <\/td>\n<\/tr>\n
1185<\/td>\nAnnex B (normative) Keywords <\/td>\n<\/tr>\n
1187<\/td>\nAnnex C (normative) Deprecation
C.1 General
C.2 Constructs that have been deprecated
C.2.1 PLI TF and ACC routine libraries
C.2.2 $sampled with a clocking event argument
C.2.3 ended sequence method
C.2.4 vpi_free_object()
C.2.5 Data read API <\/td>\n<\/tr>\n
1188<\/td>\nC.2.6 Linked lists
C.2.7 always statement in checkers
C.2.8 Operator overloading
C.3 Accellera SystemVerilog 3.1a-compatible access to packed data
C.4 Constructs identified for deprecation
C.4.1 Defparam statements <\/td>\n<\/tr>\n
1189<\/td>\nC.4.2 Procedural assign and deassign statements <\/td>\n<\/tr>\n
1190<\/td>\nC.4.3 VPI definitions <\/td>\n<\/tr>\n
1191<\/td>\nAnnex D (informative) Optional system tasks and system functions
D.1 General
D.2 $countdrivers <\/td>\n<\/tr>\n
1192<\/td>\nD.3 $getpattern <\/td>\n<\/tr>\n
1193<\/td>\nD.4 $input
D.5 $key and $nokey
D.6 $list
D.7 $log and $nolog <\/td>\n<\/tr>\n
1194<\/td>\nD.8 $reset, $reset_count, and $reset_value <\/td>\n<\/tr>\n
1195<\/td>\nD.9 $save, $restart, and $incsave <\/td>\n<\/tr>\n
1196<\/td>\nD.10 $scale
D.11 $scope
D.12 $showscopes
D.13 $showvars
D.14 $sreadmemb and $sreadmemh <\/td>\n<\/tr>\n
1198<\/td>\nAnnex E (informative) Optional compiler directives
E.1 General
E.2 `default_decay_time
E.3 `default_trireg_strength <\/td>\n<\/tr>\n
1199<\/td>\nE.4 `delay_mode_distributed
E.5 `delay_mode_path
E.6 `delay_mode_unit
E.7 `delay_mode_zero <\/td>\n<\/tr>\n
1200<\/td>\nAnnex F (normative) Formal semantics of concurrent assertions
F.1 General
F.2 Overview <\/td>\n<\/tr>\n
1201<\/td>\nF.3 Abstract syntax
F.3.1 Clock control <\/td>\n<\/tr>\n
1202<\/td>\nF.3.2 Abstract grammars <\/td>\n<\/tr>\n
1203<\/td>\nF.3.3 Notations <\/td>\n<\/tr>\n
1204<\/td>\nF.3.4 Derived forms
F.3.4.1 Derived assertion statements
F.3.4.2 Derived sequence operators
F.3.4.2.1 Derived consecutive repetition operators
F.3.4.2.2 Derived delay and concatenation operators
F.3.4.2.3 Derived nonconsecutive repetition operators <\/td>\n<\/tr>\n
1205<\/td>\nF.3.4.2.4 Other derived operators
F.3.4.3 Derived property operators
F.3.4.3.1 Derived sequential property
F.3.4.3.2 Derived Boolean operators
F.3.4.3.3 Derived nonoverlapping implication operator
F.3.4.3.4 Derived conditional operators
F.3.4.3.5 Derived case operators
F.3.4.3.6 Derived followed_by operators
F.3.4.3.7 Derived abort operators <\/td>\n<\/tr>\n
1206<\/td>\nF.3.4.3.8 Derived unbounded temporal operators
F.3.4.3.9 Derived bounded temporal operators
F.3.4.4 Derived sampled value functions
F.3.4.5 Other derived operators
F.3.4.6 Free checker variable assignment <\/td>\n<\/tr>\n
1207<\/td>\nF.4 Rewriting algorithms
F.4.1 Rewriting sequence and property instances
F.4.1.1 The rewriting algorithm <\/td>\n<\/tr>\n
1209<\/td>\nF.4.2 Rewriting checkers
F.4.2.1 The rewriting algorithm <\/td>\n<\/tr>\n
1210<\/td>\nF.4.3 Rewriting local variable declaration assignments <\/td>\n<\/tr>\n
1211<\/td>\nF.5 Semantics <\/td>\n<\/tr>\n
1212<\/td>\nF.5.1 Rewrite rules for clocks
F.5.1.1 Rewrite rules for sequences
F.5.1.2 Rewrite rules for properties <\/td>\n<\/tr>\n
1213<\/td>\nF.5.2 Tight satisfaction without local variables
F.5.3 Satisfaction without local variables
F.5.3.1 Neutral satisfaction <\/td>\n<\/tr>\n
1215<\/td>\nF.5.3.2 Weak and strong satisfaction by finite words
F.5.3.3 Vacuity <\/td>\n<\/tr>\n
1217<\/td>\nF.5.4 Local variable flow <\/td>\n<\/tr>\n
1218<\/td>\nF.5.5 Tight satisfaction with local variables <\/td>\n<\/tr>\n
1219<\/td>\nF.5.6 Satisfaction with local variables
F.5.6.1 Neutral satisfaction <\/td>\n<\/tr>\n
1220<\/td>\nF.5.6.2 Weak and strong satisfaction by finite words
F.5.6.3 Vacuity <\/td>\n<\/tr>\n
1221<\/td>\nF.6 Extended expressions
F.6.1 Extended Booleans
F.6.2 Past
F.6.3 Future
F.7 Recursive properties <\/td>\n<\/tr>\n
1223<\/td>\nAnnex G (normative) Std package
G.1 General
G.2 Overview
G.3 Semaphore
G.4 Mailbox <\/td>\n<\/tr>\n
1224<\/td>\nG.5 Randomize
G.6 Process <\/td>\n<\/tr>\n
1225<\/td>\nAnnex H (normative) DPI C layer
H.1 General
H.2 Overview <\/td>\n<\/tr>\n
1226<\/td>\nH.3 Naming conventions
H.4 Portability
H.5 svdpi.h include file <\/td>\n<\/tr>\n
1227<\/td>\nH.6 Semantic constraints <\/td>\n<\/tr>\n
1228<\/td>\nH.6.1 Types of formal arguments
H.6.2 Input arguments
H.6.3 Output arguments
H.6.4 Value changes for output and inout arguments
H.6.5 Context and noncontext tasks and functions <\/td>\n<\/tr>\n
1229<\/td>\nH.6.6 Memory management
H.7 Data types
H.7.1 Limitations <\/td>\n<\/tr>\n
1230<\/td>\nH.7.2 Duality of types: SystemVerilog types versus C types
H.7.3 Data representation
H.7.4 Basic types <\/td>\n<\/tr>\n
1231<\/td>\nH.7.5 Normalized and linearized ranges <\/td>\n<\/tr>\n
1232<\/td>\nH.7.6 Mapping between SystemVerilog ranges and C ranges
H.7.7 Canonical representation of packed arrays <\/td>\n<\/tr>\n
1233<\/td>\nH.7.8 Unpacked aggregate arguments
H.8 Argument passing modes
H.8.1 Overview
H.8.2 Calling SystemVerilog tasks and functions from C
H.8.3 Argument passing by value <\/td>\n<\/tr>\n
1234<\/td>\nH.8.4 Argument passing by reference
H.8.5 Allocating actual arguments for SystemVerilog-specific types
H.8.6 Argument passing by handle\u2014open arrays
H.8.7 Input arguments
H.8.8 Inout and output arguments <\/td>\n<\/tr>\n
1235<\/td>\nH.8.9 Function result
H.8.10 String arguments <\/td>\n<\/tr>\n
1236<\/td>\nH.8.10.1 String types in aggregate arguments
H.9 Context tasks and functions
H.9.1 Overview of DPI and VPI context <\/td>\n<\/tr>\n
1237<\/td>\nH.9.2 Context of imported and exported tasks and functions
H.9.3 Working with DPI context tasks and functions in C code <\/td>\n<\/tr>\n
1239<\/td>\nH.9.4 Example 1\u2014Using DPI context functions <\/td>\n<\/tr>\n
1240<\/td>\nH.9.5 Relationship between DPI and VPI
H.10 Include files
H.10.1 Include file svdpi.h <\/td>\n<\/tr>\n
1241<\/td>\nH.10.1.1 Scalars of type bit and logic
H.10.1.2 Canonical representation of packed arrays
H.10.1.3 Implementation-dependent representation <\/td>\n<\/tr>\n
1242<\/td>\nH.10.2 Example 2\u2014Simple packed array application
H.10.3 Example 3\u2014Application with complex mix of types <\/td>\n<\/tr>\n
1243<\/td>\nH.11 Arrays
H.11.1 Example 4\u2014Using packed 2-state arguments <\/td>\n<\/tr>\n
1244<\/td>\nH.11.2 Multidimensional arrays
H.11.3 Example 5\u2014Using packed struct and union arguments <\/td>\n<\/tr>\n
1245<\/td>\nH.11.4 Direct access to unpacked arrays
H.11.5 Utility functions for working with the canonical representation <\/td>\n<\/tr>\n
1246<\/td>\nH.12 Open arrays
H.12.1 Actual ranges <\/td>\n<\/tr>\n
1247<\/td>\nH.12.2 Array querying functions
H.12.3 Access functions <\/td>\n<\/tr>\n
1248<\/td>\nH.12.4 Access to actual representation
H.12.5 Access to elements via canonical representation <\/td>\n<\/tr>\n
1249<\/td>\nH.12.6 Access to scalar elements (bit and logic) <\/td>\n<\/tr>\n
1250<\/td>\nH.12.7 Access to array elements of other types
H.12.8 Example 6\u2014Two-dimensional open array <\/td>\n<\/tr>\n
1251<\/td>\nH.12.9 Example 7\u2014Open array
H.12.10 Example 8\u2014Access to packed arrays <\/td>\n<\/tr>\n
1252<\/td>\nH.13 SV3.1a-compatible access to packed data (deprecated functionality)
H.13.1 Determining the compatibility level of an implementation <\/td>\n<\/tr>\n
1253<\/td>\nH.13.2 svdpi.h definitions for SV3.1a-style packed data processing <\/td>\n<\/tr>\n
1254<\/td>\nH.13.3 Source-level compatibility include file svdpi_src.h <\/td>\n<\/tr>\n
1255<\/td>\nH.13.4 Example 9\u2014Deprecated SV3.1a binary-compatible application
H.13.5 Example 10\u2014Deprecated SV3.1a source-compatible application <\/td>\n<\/tr>\n
1256<\/td>\nH.13.6 Example 11\u2014Deprecated SV3.1a binary-compatible calls of export functions <\/td>\n<\/tr>\n
1258<\/td>\nAnnex I (normative) svdpi.h
I.1 General
I.2 Overview
I.3 Source code <\/td>\n<\/tr>\n
1267<\/td>\nAnnex J (normative) Inclusion of foreign language code
J.1 General
J.2 Overview <\/td>\n<\/tr>\n
1268<\/td>\nJ.3 Location independence
J.4 Object code inclusion <\/td>\n<\/tr>\n
1269<\/td>\nJ.4.1 Bootstrap file
J.4.2 Examples <\/td>\n<\/tr>\n
1271<\/td>\nAnnex K (normative) vpi_user.h
K.1 General
K.2 Source code <\/td>\n<\/tr>\n
1288<\/td>\nAnnex L (normative) vpi_compatibility.h
L.1 General
L.2 Source code <\/td>\n<\/tr>\n
1291<\/td>\nAnnex M (normative) sv_vpi_user.h
M.1 General
M.2 Source code <\/td>\n<\/tr>\n
1301<\/td>\nAnnex N (normative) Algorithm for probabilistic distribution functions
N.1 General
N.2 Source code <\/td>\n<\/tr>\n
1309<\/td>\nAnnex O (informative) Encryption\/decryption flow
O.1 General
O.2 Overview
O.3 Tool vendor secret key encryption system
O.3.1 Encryption input <\/td>\n<\/tr>\n
1310<\/td>\nO.3.2 Encryption output
O.4 IP author secret key encryption system
O.4.1 Encryption input <\/td>\n<\/tr>\n
1311<\/td>\nO.4.2 Encryption output
O.5 Digital envelopes <\/td>\n<\/tr>\n
1312<\/td>\nO.5.1 Encryption input
O.5.2 Encryption output <\/td>\n<\/tr>\n
1313<\/td>\nAnnex P (informative) Glossary <\/td>\n<\/tr>\n
1316<\/td>\nAnnex Q (informative) Bibliography <\/td>\n<\/tr>\n<\/table>\n","protected":false},"excerpt":{"rendered":"

SystemVerilog. Unified Hardware Design, Specification, and Verification Language<\/b><\/p>\n\n\n\n\n
Published By<\/td>\nPublication Date<\/td>\nNumber of Pages<\/td>\n<\/tr>\n
BSI<\/b><\/a><\/td>\n2021<\/td>\n1320<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"featured_media":381968,"template":"","meta":{"rank_math_lock_modified_date":false,"ep_exclude_from_search":false},"product_cat":[381,2641],"product_tag":[],"class_list":{"0":"post-381962","1":"product","2":"type-product","3":"status-publish","4":"has-post-thumbnail","6":"product_cat-25-040-01","7":"product_cat-bsi","9":"first","10":"instock","11":"sold-individually","12":"shipping-taxable","13":"purchasable","14":"product-type-simple"},"_links":{"self":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product\/381962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/types\/product"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/media\/381968"}],"wp:attachment":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/media?parent=381962"}],"wp:term":[{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product_cat?post=381962"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product_tag?post=381962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}