Shopping Cart

No products in the cart.

IEEE 1647-2019

$159.17

IEEE Standard for the Functional Verification Language e

Published By Publication Date Number of Pages
IEEE 2019
Guaranteed Safe Checkout
Category:

If you have any questions, feel free to reach out to our online customer service team by clicking on the bottom right corner. We’re here to assist you 24/7.
Email:[email protected]

Revision Standard – Active. The e functional verification language is an application-specific programming language, aimed at automating the task of verifying a hardware or software design with respect to its specification. Verification environments written in e provide a model of the environment in which the design is expected to function, including the kinds of erroneous conditions the design needs to withstand. A typical verification environment is capable of generating user-controlled test inputs with statistically interesting characteristics. Such an environment can check the validity of the design responses. Functional coverage metrics are used to control the verification effort and gauge the quality of the design. e verification environments can be used throughout the design cycle, from a high-level architectural model to a fully realized system. A definition of the e language syntax and semantics and how tool developers and verification engineers should use them are contained in this standard.

PDF Catalog

PDF Pages PDF Title
1 IEEE Std 1647™-2019 Front cover
2 Title page
4 Important Notices and Disclaimers Concerning IEEE Standards Documents
7 Participants
8 Introduction
10 Contents
17 1. Overview
1.1 Introduction
1.2 Scope
1.3 Purpose
1.4 Verification environments
18 1.5 Basic concepts relating to this standard
24 1.6 Conventions used
26 1.7 Use of color in this standard
1.8 Contents of this standard
28 2. Normative references
29 3. Definitions, acronyms, and abbreviations
3.1 Definitions
30 3.2 Acronyms and abbreviations
32 4. e basics
4.1 Overview
4.2 Lexical conventions
39 4.3 Syntactic elements
45 4.4 Struct hierarchy and name resolution
51 4.5 Ranges
52 4.6 Operator precedence
53 4.7 Evaluation order of expressions
54 4.8 Bitwise operators
55 4.9 Boolean operators
57 4.10 Arithmetic operators
58 4.11 Comparison operators
64 4.12 String matching
67 4.13 Extraction and concatenation operators
70 4.14 Scalar modifiers
71 4.15 Parentheses
4.16 list.method()
72 4.17 Special-purpose operators
77 5. Data types
5.1 Overview
5.2 e data types
85 5.3 Untyped expressions
86 5.4 Assignment rules
89 5.5 Real data type
91 5.6 Precision rules for numeric operations
93 5.7 Automatic type casting
94 5.8 Defining and extending scalar types
97 5.9 Referring to types in generic code
98 5.10 Type-related constructs
106 6. Structs, subtypes, and fields
6.1 Overview
6.2 Structs overview
107 6.3 Defining structs: struct
108 6.4 Extending structs: extend type
109 6.5 Restrictions on inheritance
6.6 Extending subtypes
6.7 Creating subtypes with when
111 6.8 Extending when subtypes
112 6.9 Defining fields: field
115 6.10 Defining list fields
117 6.11 Projecting list of fields
6.12 Defining attribute fields
118 6.13 Defining interface types: interface
120 7. Units
7.1 Overview
123 7.2 Defining units and fields of type unit
126 7.3 Unit attributes
128 7.4 Predefined methods of any_unit
131 7.5 Unit-related predefined methods of any_struct
133 7.6 Unit-related predefined routines
135 8. Template types
8.1 Overview
136 8.2 Defining a struct/unit template type
139 8.3 Defining a template interface type
140 8.4 Defining a template numeric type
141 8.5 Template parameters
143 8.6 Extending a template struct
145 8.7 Instantiating a template type
146 8.8 Template subtype instances
147 9. e ports
9.1 Overview
9.2 Introduction to e ports
148 9.3 Using simple ports
150 9.4 Using buffer ports
151 9.5 Using event ports
152 9.6 Using method ports
154 9.7 Defining and referencing ports
162 9.8 Port attributes
174 9.9 Buffer port methods
176 9.10 MVL methods for simple ports
187 9.11 Global MVL routines
190 9.12 Comparative analysis of ports and tick access
191 9.13 e port binding declaration and methods
198 9.14 Transaction-level modeling interface ports in e
206 9.15 TLM sockets in e
213 10. Constraints and generation
10.1 Overview
10.2 Types of constraints
214 10.3 Generation concepts
231 10.4 Type constraints
233 10.5 Defining constraints
240 10.6 Invoking generation
242 11. Temporal struct members
11.1 Events
246 11.2 on
247 11.3 on event-port
248 11.4 expect | assume
250 11.5 Procedural API for temporal operators on event and expect struct members
264 12. Temporal expressions
12.1 Overview
266 12.2 Temporal operators and constructs
281 12.3 Success and failure of a temporal expression
283 13. Time-consuming actions
13.1 Overview
13.2 Synchronization actions
285 13.3 Concurrency actions
286 13.4 State machines
291 14. Coverage constructs
14.1 Overview
14.2 Defining coverage groups: cover
293 14.3 Defining basic coverage items: item
298 14.4 Defining cross coverage items: cross
300 14.5 Defining transition coverage items: transition
302 14.6 Extending coverage groups: cover … using also … is also
303 14.7 Extending coverage items: item … using also
304 14.8 Coverage API
310 14.9 Coverage methods for the covers struct
318 15. Macros
15.1 Overview
319 15.2 define-as statement
15.3 define-as-computed statement
320 15.4 Match expression structure
322 15.5 Interpretation of match expressions
323 15.6 Macro expansion code
326 16. Print, checks, and error handling
16.1 Overview
16.2 print
16.3 Handling DUT errors
332 16.4 Handling user errors
334 16.5 Handling programming errors: assert
335 17. Methods
17.1 Overview
17.2 Rules for defining and extending methods
344 17.3 Invoking methods
348 17.4 Parameter passing
350 17.5 Using the C interface
352 18. Creating and modifying e variables
18.1 About e variables
18.2 var
353 18.3 =
18.4 op=
354 18.5 <=
356 18.6 rgf=
357 19. Packing and unpacking
19.1 Basic packing
360 19.2 Predefined pack options
361 19.3 Customizing pack options
19.4 Packing and unpacking specific types
367 19.5 Implicit packing and unpacking
368 20. Control flow actions
20.1 Conditional actions
370 20.2 Iterative actions
375 20.3 File iteration actions
376 20.4 Actions for controlling the program flow
378 21. Importing and preprocessor directives
21.1 Overview
21.2 Importing e modules
379 21.3 #ifdef, #ifndef
380 21.4 #define
381 21.5 #undef
382 22. Encapsulation constructs
22.1 Overview
22.2 package: package-name
22.3 package: type-declaration
383 22.4 package | protected | private: struct-member
384 22.5 Scope operator (::)
385 23. Simulation-related constructs
23.1 Overview
23.2 force
23.3 release
386 23.4 Tick access: ‘hdl-pathname’
387 24. Messages
24.1 Overview
24.2 Message model
24.3 Message execution
388 24.4 Structured debug messages
393 24.5 message and messagef
394 24.6 Tag
24.7 Verbosity
395 24.8 Predefined type sdm_handler
397 24.9 Messages interface
419 25. Sequences
25.1 Overview
421 25.2 Sequence statement
423 25.3 do sequence action
424 25.4 Sequence struct types and members
429 25.5 BFM-driver-sequence flow diagrams
434 26. Tables
26.1 The table construct
26.2 table
436 26.3 Table operators
439 27. List pseudo-methods library
27.1 Pseudo-methods overview
27.2 Using list pseudo-methods
27.3 Pseudo-methods to modify lists
448 27.4 General list pseudo-methods
464 27.5 Math and logic pseudo-methods
467 27.6 List CRC pseudo-methods
468 27.7 Keyed list pseudo-methods
471 28. Predefined methods library
28.1 Ovefview
28.2 Predefined methods of sys
28.3 Predefined methods of any_struct
476 28.4 Methods and predefined attributes of unit any_unit
28.5 Set pseudo-methods
483 28.6 Other pseudo-methods
484 28.7 Coverage methods
486 29. Predefined routines library
29.1 Overview
29.2 Deep copy and compare routines
490 29.3 Integer arithmetic routines
494 29.4 Real arithmetic routines
495 29.5 bitwise_op()
496 29.6 get_all_units()
29.7 String routines
504 29.8 Output routines
506 29.9 Operating system interface routines
509 29.10 set_config()
510 29.11 Randomization routines
29.12 Simulation-related routines
512 29.13 Range-generated field routines
514 30. Predefined file routines library
30.1 Overview
30.2 File names and search paths
30.3 File handles
30.4 Low-level file methods
519 30.5 General file routines
525 30.6 Reading and writing structs
528 31. Predefined interfaces library
31.1 Interfaces for custom numeric types
31.2 base_numeric_i
530 31.3 numeric_i
534 31.4 Implementing numeric_i
535 31.5 Predefined types related to custom numeric interface
536 32. Predefined APIs and utilities library
32.1 Reflection API
570 32.2 instance_iterator object hierarchy traversal API
573 32.3 Procedural API for tables
579 33. Predefined resource sharing control structs
33.1 Overview
33.2 Semaphore methods
580 33.3 How to use the semaphore struct
584 34. Intellectual property protection
34.1 Overview
34.2 Encryption
585 34.3 Decryption
34.4 Reflection API
34.5 Encryption targets
586 35. Annotations
35.1 Overview
35.2 annotation @annotation-type-name
587 35.3 Using annotations
589 35.4 Annotation API
592 Annex A (informative) Bibliography
593 Annex B (normative) Source code serialization
601 Annex C (informative) Comparison of when and like inheritance
609 Annex D (normative) Name spaces
617 Annex E (informative) Reflection API examples
621 Annex F (informative) Encryption targets
622 Back cover
IEEE 1647-2019
$159.17