Shopping Cart

No products in the cart.

IEEE 1647 2011

$150.42

IEEE Standard for the Functional Verification Language e

Published By Publication Date Number of Pages
IEEE 2011 495
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-2011 Front cover
3 Title page
6 Introduction
7 Notice to users

Laws and regulations

Copyrights

Updating of IEEE documents
8 Errata

Interpretations

Patents
9 Participants
11 Contents
17 Important notice

1. Overview
1.1 Scope
1.2 Purpose
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
4.5 Operator precedence
53 4.6 Evaluation order of expressions
54 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
81 5.2 Untyped expressions
5.3 Assignment rules
84 5.4 Real data type
87 5.5 Precision rules for numeric operations
89 5.6 Automatic type casting
90 5.7 Defining and extending scalar types
92 5.8 Type-related constructs
99 6. Structs, subtypes, and fields
6.1 Structs overview
100 6.2 Defining structs: struct
101 6.3 Extending structs: extend type
6.4 Restrictions on inheritance
102 6.5 Extending subtypes
6.6 Creating subtypes with when
104 6.7 Extending when subtypes
105 6.8 Defining fields: field
107 6.9 Defining list fields
109 6.10 Projecting list of fields
6.11 Defining attribute fields
111 7. Units
7.1 Overview
113 7.2 Defining units and fields of type unit
117 7.3 Unit attributes
118 7.4 Predefined methods of any_unit
120 7.5 Unit-related predefined methods of any_struct
122 7.6 Unit-related predefined routines
125 8. Template types
8.1 Defining a template type
127 8.2 Instantiating a template type
128 8.3 Template types and reflection
129 8.4 Template errors
130 8.5 Limitations
8.6 Templates versus macros
133 9. e ports
9.1 Introduction to e ports
134 9.2 Using simple ports
136 9.3 Using buffer ports
137 9.4 Using event ports
138 9.5 Using method ports
140 9.6 Defining and referencing ports
145 9.7 Port attributes
157 9.8 Buffer port methods
159 9.9 MVL methods for simple ports
165 9.10 Global MVL routines
168 9.11 Comparative analysis of ports and tick access
169 9.12 e port binding
171 9.13 Transaction level modeling interface ports in e
181 10. Constraints and generation
10.1 Types of constraints
10.2 Generation concepts
195 10.3 Type constraints
197 10.4 Defining constraints
205 10.5 Invoking generation
207 11. Events
11.1 Causes of events
11.2 Scope of events
11.3 Defining and emitting named events
208 11.4 Predefined events
211 12. Temporal expressions
12.1 Overview
214 12.2 Temporal operators and constructs
229 12.3 Success and failure of a temporal expression
231 13. Temporal struct members
13.1 on
232 13.2 expect | assume
233 14. Time-consuming actions
14.1 Synchronization actions
234 14.2 Concurrency actions
236 14.3 State machines
241 15. Coverage constructs
15.1 Defining coverage groups: cover
243 15.2 Defining basic coverage items: item
247 15.3 Defining cross coverage items: cross
249 15.4 Defining transition coverage items: transition
250 15.5 Extending coverage groups: cover … using also … is also
251 15.6 Extending coverage items: item … using also
252 15.7 Coverage API
258 15.8 Coverage methods for the covers struct
263 16. Macros
16.1 Overview
264 16.2 define-as statement
16.3 define-as-computed statement
265 16.4 Match expression structure
267 16.5 Interpretation of match expressions
268 16.6 Macro expansion code
271 17. Print, checks, and error handling
17.1 print
17.2 Handling DUT errors
276 17.3 Handling user errors
278 17.4 Handling programming errors: assert
279 18. Methods
18.1 Rules for defining and extending methods
287 18.2 Invoking methods
290 18.3 Parameter passing
292 18.4 Using the C interface
295 19. Creating and modifying e variables
19.1 About e variables
19.2 var
296 19.3 =
19.4 op=
297 19.5 <=
299 20. Packing and unpacking
20.1 Basic packing
302 20.2 Predefined pack options
303 20.3 Customizing pack options
20.4 Packing and unpacking specific types
309 20.5 Implicit packing and unpacking
311 21. Control flow actions
21.1 Conditional actions
313 21.2 Iterative actions
317 21.3 File iteration actions
318 21.4 Actions for controlling the program flow
321 22. Importing and preprocessor directives
22.1 Importing e modules
322 22.2 #ifdef, #ifndef
323 22.3 #define
324 22.4 #undef
325 23. Encapsulation constructs
23.1 package: package-name
23.2 package: type-declaration
326 23.3 package | protected | private: struct-member
327 23.4 Scope operator (::)
329 24. Simulation-related constructs
24.1 force
24.2 release
330 24.3 Tick access: ‘hdl-pathname’
24.4 simulator_command()
331 24.5 stop_run()
333 25. Messages
25.1 Overview
25.2 Message model
334 25.3 message and messagef
336 25.4 Message loggers
337 25.5 Configuring message loggers with constraints
338 25.6 Messaging procedural interface (PI)
346 25.7 Examples
349 26. Sequences
26.1 Overview
351 26.2 Sequence statement
353 26.3 do sequence action
354 26.4 Sequence struct types and members
359 26.5 BFM-driver-sequence flow diagrams
363 27. List pseudo-methods library
27.1 Pseudo-methods overview
27.2 Using list pseudo-methods
27.3 Pseudo-methods to modify lists
372 27.4 General list pseudo-methods
386 27.5 Math and logic pseudo-methods
388 27.6 List CRC pseudo-methods
390 27.7 Keyed list pseudo-methods
393 28. Predefined methods library
28.1 Predefined methods of sys
28.2 Predefined methods of any_struct
396 28.3 Methods and predefined attributes of unit any_unit
28.4 Pseudo-methods
398 28.5 Coverage methods
399 29. Predefined routines library
29.1 Deep copy and compare routines
402 29.2 Integer arithmetic routines
406 29.3 Real arithmetic routines
407 29.4 bitwise_op()
408 29.5 get_all_units()
29.6 String routines
416 29.7 Output routines
418 29.8 Operating system interface routines
422 29.9 set_config()
29.10 Random routines
423 30. Predefined file routines library
30.1 File names and search paths
30.2 File handles
30.3 Low-level file methods
428 30.4 General file routines
434 30.5 Reading and writing structs
437 31. Reflection API
31.1 Introduction
438 31.2 Type information
447 31.3 Aspect information
451 31.4 Value query and manipulation
457 32. Predefined resource sharing control structs
32.1 Semaphore methods
458 32.2 How to use the semaphore struct
463 33. Intellectual property protection
33.1 Encryption
33.2 Decryption
464 33.3 Reflection API
33.4 Encryption targets
465 Annex A (informative) Bibliography
467 B.1 Ordering problem in e
Annex B (normative) Source code serialization
468 B.2 Within a single module
469 B.3 Importing and dependency
470 B.4 Concrete load order
471 B.5 Visibility scope of preprocessor directives
475 C.1 Summary of when versus like
Annex C (informative) Comparison of when and like inheritance
478 C.2 Advantages of using when inheritance for modeling
481 C.3 Advantages of using like inheritance
482 C.4 When to use like inheritance
483 D.1 The naming problem in e
D.2 Resolution overview
Annex D (normative) Name spaces
484 D.3 Qualified and unqualified names
485 D.4 Use relation
488 D.5 Built-in APIs
489 D.6 Code comparison
491 E.1 Type information interface
Annex E (informative) Reflection API examples
492 E.2 Aspect information interface
493 E.3 Value query interface
495 F.1 Files
F.2 IP Components
Annex F (informative) Encryption targets
IEEE 1647 2011
$150.42