Shopping Cart

No products in the cart.

IEEE 1647-2008

$107.25

IEEE Standard for the Functional Verification Language e

Published By Publication Date Number of Pages
IEEE 2008 464
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 – Superseded. 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-2008 (Revision of IEEE Std 1647-2006) IEEE Standard for the Functional Verification Language e
3 Title page
6 Introduction
7 Notice to users

Laws and regulations

Copyrights

Updating of IEEE documents

Errata
8 Interpretations

Patents

Participants
11 Contents
17 Important Notice

1. Overview
1.1 Scope
1.2 Purpose
18 1.3 Verification environments
19 1.4 Basic concepts relating to this standard
24 1.5 Conventions used
26 1.6 Use of color in this standard
1.7 Contents of this standard
29 2. Normative references
3. Definitions, acronyms, and abbreviations
3.1 Definitions
31 3.2 Acronyms and abbreviations
33 4. e basics
4.1 Lexical conventions
40 4.2 Syntactic elements
46 4.3 Struct hierarchy and name resolution
52 4.4 Ranges
53 4.5 Operator precedence
54 4.6 Evaluation order of expressions
4.7 Bitwise operators
56 4.8 Boolean operators
58 4.9 Arithmetic operators
59 4.10 Comparison operators
63 4.11 String matching
65 4.12 Extraction and concatenation operators
69 4.13 Scalar modifiers
70 4.14 Parentheses
4.15 list.method()
71 4.16 Special-purpose operators
75 5. Data types
5.1 e data types
80 5.2 Untyped expressions
81 5.3 Assignment rules
84 5.4 Precision rules for numeric operations
86 5.5 Automatic type casting
5.6 Defining and extending scalar types
89 5.7 Type-related constructs
95 6. Structs, subtypes, and fields
6.1 Structs overview
6.2 Defining structs: struct
96 6.3 Extending structs: extend type
97 6.4 Restrictions on inheritance
6.5 Extending subtypes
6.6 Creating subtypes with when
99 6.7 Extending when subtypes
100 6.8 Defining fields: field
101 6.9 Defining list fields
104 6.10 Projecting list of fields
6.11 Defining attribute fields
107 7. Units
7.1 Overview
109 7.2 Defining units and fields of type unit
113 7.3 Unit attributes
114 7.4 Predefined methods of any_unit
116 7.5 Unit-related predefined methods of any_struct
118 7.6 Unit-related predefined routines
121 8. e ports
8.1 Introduction to e ports
122 8.2 Using simple ports
124 8.3 Using buffer ports
125 8.4 Using event ports
126 8.5 Using method ports
128 8.6 Defining and referencing ports
133 8.7 Port attributes
146 8.8 Buffer port methods
148 8.9 MVL methods for simple ports
154 8.10 Global MVL routines
157 8.11 Comparative analysis of ports and tick access
159 9. Constraints and generation
9.1 Types of constraints
9.2 Generation concepts
173 9.3 Defining constraints
180 9.4 Invoking generation
183 10. Events
10.1 Causes of events
10.2 Scope of events
10.3 Defining and emitting named events
184 10.4 Predefined events
187 11. Temporal expressions
11.1 Overview
190 11.2 Temporal operators and constructs
205 11.3 Success and failure of a temporal expression
207 12. Temporal struct members
12.1 on
208 12.2 expect | assume
209 13. Time-consuming actions
13.1 Synchronization actions
210 13.2 Concurrency actions
212 13.3 State machines
217 14. Coverage constructs
14.1 Defining coverage groups: cover
219 14.2 Defining basic coverage items: item
223 14.3 Defining cross coverage items: cross
225 14.4 Defining transition coverage items: transition
227 14.5 Extending coverage groups: cover … using also … is also
228 14.6 Extending coverage items: item … using also
14.7 Coverage API
233 14.8 Coverage methods for the covers struct
239 15. Macros
15.1 Syntax overview
15.2 Defining a macro
240 15.3 Match expression structure
241 15.4 Interpretation of match expressions
242 15.5 Replacement code
245 16. Print, checks, and error handling
16.1 print
16.2 Handling DUT errors
249 16.3 Handling user errors
251 16.4 Handling programming errors: assert
253 17. Methods
17.1 Rules for defining and extending methods
261 17.2 Invoking methods
264 17.3 Parameter passing
266 17.4 Using the C interface
269 18. Creating and modifying e variables
18.1 About e variables
18.2 var
270 18.3 =
18.4 op=
271 18.5 <=
273 19. Packing and unpacking
19.1 Basic packing
276 19.2 Predefined pack options
277 19.3 Customizing pack options
19.4 Packing and unpacking specific types
282 19.5 Implicit packing and unpacking
285 20. Control flow actions
20.1 Conditional actions
287 20.2 Iterative actions
291 20.3 File iteration actions
292 20.4 Actions for controlling the program flow
295 21. Importing and preprocessor directives
21.1 Importing e modules
296 21.2 #ifdef, #ifndef
297 21.3 #define
298 21.4 #undef
299 22. Encapsulation constructs
22.1 package: package-name
22.2 package: type-declaration
300 22.3 package | protected | private: struct-member
301 22.4 Scope operator (::)
303 23. Simulation-related constructs
23.1 force
23.2 release
304 23.3 Tick access: ‘hdl-pathname’
23.4 simulator_command()
305 23.5 stop_run()
307 24. Messages
24.1 Overview
24.2 The message model
308 24.3 message and messagef
310 24.4 Message loggers
311 24.5 Configuring message loggers with constraints
312 24.6 Messaging procedural interface (PI)
320 24.7 Examples
323 25. Sequences
25.1 Overview
325 25.2 Sequence statement
327 25.3 do sequence action
328 25.4 Sequence struct types and members
333 25.5 BFM-driver-sequence flow diagrams
337 26. List pseudo-methods library
26.1 Pseudo-methods overview
26.2 Using list pseudo-methods
26.3 Pseudo-methods to modify lists
346 26.4 General list pseudo-methods
360 26.5 Math and logic pseudo-methods
362 26.6 List CRC pseudo-methods
364 26.7 Keyed list pseudo-methods
367 27. Predefined methods library
27.1 Predefined methods of sys
27.2 Predefined methods of any_struct
370 27.3 Methods and predefined attributes of unit any_unit
27.4 Pseudo-methods
372 27.5 Coverage methods
373 28. Predefined routines library
28.1 Deep copy and compare routines
376 28.2 Arithmetic routines
380 28.3 bitwise_op()
381 28.4 get_all_units()
28.5 String routines
389 28.6 Output routines
391 28.7 Operating system interface routines
394 28.8 set_config()
395 29. Predefined file routines library
29.1 File names and search paths
29.2 File handles
29.3 Low-level file methods
400 29.4 General file routines
406 29.5 Reading and writing structs
411 30. Reflection API
30.1 Introduction
412 30.2 Type information
419 30.3 Aspect information
424 30.4 Value query and manipulation
429 31. Predefined resource sharing control structs
31.1 Semaphore methods
430 31.2 How to use the semaphore struct
435 Annex A (informative) Bibliography
437 Annex B (normative) Source code serialization
445 Annex C (informative) Comparison of when and like inheritance
453 Annex D (normative) Name spaces
461 Annex E (informative) Reflection API examples
IEEE 1647-2008
$107.25