{"id":400271,"date":"2024-10-20T04:48:39","date_gmt":"2024-10-20T04:48:39","guid":{"rendered":"https:\/\/pdfstandards.shop\/product\/uncategorized\/ieee-1647-2016-2\/"},"modified":"2024-10-26T08:36:34","modified_gmt":"2024-10-26T08:36:34","slug":"ieee-1647-2016-2","status":"publish","type":"product","link":"https:\/\/pdfstandards.shop\/product\/publishers\/ieee\/ieee-1647-2016-2\/","title":{"rendered":"IEEE 1647-2016"},"content":{"rendered":"

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.<\/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
PDF Pages<\/th>\nPDF Title<\/th>\n<\/tr>\n
1<\/td>\nIEEE Std 1647-2016 Front cover <\/td>\n<\/tr>\n
2<\/td>\nTitle page <\/td>\n<\/tr>\n
4<\/td>\nImportant Notices and Disclaimers Concerning IEEE Standards Documents <\/td>\n<\/tr>\n
7<\/td>\nParticipants <\/td>\n<\/tr>\n
8<\/td>\nIntroduction <\/td>\n<\/tr>\n
10<\/td>\nContents <\/td>\n<\/tr>\n
16<\/td>\nIMPORTANT NOTICE
1. Overview
1.1 Scope
1.2 Purpose
1.3 Verification environments <\/td>\n<\/tr>\n
17<\/td>\n1.4 Basic concepts relating to this standard <\/td>\n<\/tr>\n
18<\/td>\n1.4.1 Fundamental considerations
1.4.2 Organization of e programs
1.4.3 Modes of execution
1.4.3.1 Stand-alone execution
1.4.3.2 Co-execution with a master simulator <\/td>\n<\/tr>\n
19<\/td>\n1.4.4 Execution phases
1.4.5 Major semantic components <\/td>\n<\/tr>\n
20<\/td>\n1.4.5.1 Types
1.4.5.2 Packages, aspects, and information hiding <\/td>\n<\/tr>\n
21<\/td>\n1.4.5.3 Numeric expressions and values
1.4.5.4 Constraints and generation <\/td>\n<\/tr>\n
22<\/td>\n1.4.5.5 Concurrent execution
1.4.5.6 Functional coverage <\/td>\n<\/tr>\n
23<\/td>\n1.4.5.7 Checking, printing, and reporting
1.5 Conventions used
1.5.1 Visual cues (meta-syntax)
1.5.2 Syntax notation within a construct <\/td>\n<\/tr>\n
24<\/td>\n1.5.3 Syntax examples
1.6 Use of color in this standard <\/td>\n<\/tr>\n
25<\/td>\n1.7 Contents of this standard <\/td>\n<\/tr>\n
27<\/td>\n2. Normative references
3. Definitions, acronyms, and abbreviations
3.1 Definitions <\/td>\n<\/tr>\n
29<\/td>\n3.2 Acronyms and abbreviations <\/td>\n<\/tr>\n
31<\/td>\n4. e basics
4.1 Lexical conventions
4.1.1 File structure
4.1.2 Code segments
4.1.3 Comments and white space <\/td>\n<\/tr>\n
32<\/td>\n4.1.4 Literals and constants
4.1.4.1 Unsized numbers <\/td>\n<\/tr>\n
33<\/td>\n4.1.4.2 Sized numbers
4.1.4.3 MVL literals <\/td>\n<\/tr>\n
34<\/td>\n4.1.4.3.1 Syntax rules <\/td>\n<\/tr>\n
35<\/td>\n4.1.4.3.2 Examples
4.1.4.3.3 Considerations
4.1.4.4 Predefined constants <\/td>\n<\/tr>\n
36<\/td>\n4.1.4.5 Literal string
4.1.4.6 Literal character
4.1.5 Names and keywords
4.1.5.1 Legal e names
4.1.5.2 e file names
4.1.5.3 e keywords <\/td>\n<\/tr>\n
37<\/td>\n4.1.5.4 Preprocessor names <\/td>\n<\/tr>\n
38<\/td>\n4.1.5.5 String matching pseudo-variables
4.2 Syntactic elements
4.2.1 Statements <\/td>\n<\/tr>\n
39<\/td>\n4.2.2 Struct members <\/td>\n<\/tr>\n
40<\/td>\n4.2.3 Actions <\/td>\n<\/tr>\n
41<\/td>\n4.2.3.1 Creating or modifying variables
4.2.3.2 Executing actions conditionally
4.2.3.3 Executing actions iteratively <\/td>\n<\/tr>\n
42<\/td>\n4.2.3.4 Controlling program flow
4.2.3.5 Invoking methods and routines
4.2.3.6 Emitting an event
4.2.3.7 Performing time-consuming actions <\/td>\n<\/tr>\n
43<\/td>\n4.2.3.8 Generating data item
4.2.3.9 Detecting and handling errors
4.2.3.10 Printing
4.2.4 Expressions <\/td>\n<\/tr>\n
44<\/td>\n4.3 Struct hierarchy and name resolution
4.3.1 Struct hierarchy
4.3.1.1 Global struct
4.3.1.2 Files struct
4.3.1.3 Packing struct
4.3.1.4 Sys struct <\/td>\n<\/tr>\n
45<\/td>\n4.3.1.5 Session struct
4.3.1.5.1 session.check_ok
4.3.1.5.2 session.events
4.3.2 Referencing e entities
4.3.2.1 Structs and fields <\/td>\n<\/tr>\n
46<\/td>\n4.3.2.2 Naming and referencing methods and routines <\/td>\n<\/tr>\n
47<\/td>\n4.3.2.3 Enumerated type values
4.3.3 Implicit variables
4.3.3.1 it <\/td>\n<\/tr>\n
48<\/td>\n4.3.3.2 me
4.3.3.3 result
4.3.3.4 index
4.3.3.5 prev <\/td>\n<\/tr>\n
49<\/td>\n4.3.4 Name resolution rules
4.3.4.1 Names that include a path
4.3.4.2 Names that do not include a path <\/td>\n<\/tr>\n
50<\/td>\n4.4 Ranges <\/td>\n<\/tr>\n
51<\/td>\n4.5 Operator precedence <\/td>\n<\/tr>\n
52<\/td>\n4.6 Evaluation order of expressions
4.7 Bitwise operators
4.7.1 ~ <\/td>\n<\/tr>\n
53<\/td>\n4.7.2 & | ^
4.7.3 >> << <\/td>\n<\/tr>\n
54<\/td>\n4.8 Boolean operators
4.8.1 ! (not)
4.8.2 && (and) <\/td>\n<\/tr>\n
55<\/td>\n4.8.3 || (or)
4.8.4 => <\/td>\n<\/tr>\n
56<\/td>\n4.8.5 now
4.9 Arithmetic operators
4.9.1 Unary + \u2013 <\/td>\n<\/tr>\n
57<\/td>\n4.9.2 + \u2013 * \/ %
4.10 Comparison operators
4.10.1 < >= <\/td>\n<\/tr>\n
58<\/td>\n4.10.2 == != <\/td>\n<\/tr>\n
59<\/td>\n4.10.3 === !== <\/td>\n<\/tr>\n
60<\/td>\n4.10.4 ~ !~ <\/td>\n<\/tr>\n
61<\/td>\n4.10.5 in
4.11 String matching
4.11.1 Native e string matching <\/td>\n<\/tr>\n
62<\/td>\n4.11.2 AWK-style string matching <\/td>\n<\/tr>\n
63<\/td>\n4.12 Extraction and concatenation operators <\/td>\n<\/tr>\n
64<\/td>\n4.12.1 [ ]
4.12.2 [ : ] <\/td>\n<\/tr>\n
65<\/td>\n4.12.2.1 Slice and size of the result
4.12.2.2 Accessing nonexistent bits
4.12.3 [ .. ] <\/td>\n<\/tr>\n
66<\/td>\n4.12.4 {… ; …} <\/td>\n<\/tr>\n
67<\/td>\n4.12.5 %{… , …}
4.13 Scalar modifiers
4.13.1 [ range,…] <\/td>\n<\/tr>\n
68<\/td>\n4.13.2 (bits | bytes : width-exp)
4.14 Parentheses
4.15 list.method() <\/td>\n<\/tr>\n
69<\/td>\n4.16 Special-purpose operators
4.16.1 is [not] a, is [not] an <\/td>\n<\/tr>\n
70<\/td>\n4.16.2 new <\/td>\n<\/tr>\n
71<\/td>\n4.16.3 Dot operator (.)
4.16.4 Apostrophes (‘) <\/td>\n<\/tr>\n
72<\/td>\n4.16.5 Conditional operator (? \ud83d\ude42 <\/td>\n<\/tr>\n
73<\/td>\n5. Data types
5.1 e data types
5.1.1 Scalar types
5.1.2 Scalar subtypes
5.1.2.1 Scalar modifiers <\/td>\n<\/tr>\n
74<\/td>\n5.1.2.2 Named scalar subtypes
5.1.2.3 Unbounded integers <\/td>\n<\/tr>\n
75<\/td>\n5.1.3 Enumerated scalar types <\/td>\n<\/tr>\n
76<\/td>\n5.1.4 Casting of enumerated types in comparisons
5.1.5 Struct types
5.1.6 Struct subtypes <\/td>\n<\/tr>\n
77<\/td>\n5.1.7 Referencing fields in when constructs
5.1.8 List types
5.1.9 Keyed lists <\/td>\n<\/tr>\n
78<\/td>\n5.1.10 The set type
5.1.11 The string type <\/td>\n<\/tr>\n
79<\/td>\n5.1.12 The real type
5.1.13 The external_pointer type
5.1.14 The \u201cuntyped\u201d pseudo type
5.2 Untyped expressions <\/td>\n<\/tr>\n
80<\/td>\n5.3 Assignment rules
5.3.1 What is an assignment? <\/td>\n<\/tr>\n
81<\/td>\n5.3.2 Assignments create identical references
5.3.3 Assignment to different (but compatible) types <\/td>\n<\/tr>\n
82<\/td>\n5.3.3.1 Assignment of numeric types
5.3.3.2 Assignment of Boolean types
5.3.3.3 Assignment of enumerated types
5.3.3.4 Assignment of structs
5.3.3.5 Assignment of strings <\/td>\n<\/tr>\n
83<\/td>\n5.3.3.6 Assignment of lists
5.3.3.7 Assignment of sets
5.4 Real data type
5.4.1 Real data type usage <\/td>\n<\/tr>\n
84<\/td>\n5.4.2 Real literals
5.4.3 Real constants <\/td>\n<\/tr>\n
85<\/td>\n5.4.4 Real type limitations
5.5 Precision rules for numeric operations <\/td>\n<\/tr>\n
86<\/td>\n5.5.1 Determining the context of an expression <\/td>\n<\/tr>\n
87<\/td>\n5.5.2 Deciding precision and performing data conversion and sign extension
5.6 Automatic type casting <\/td>\n<\/tr>\n
88<\/td>\n5.6.1 Conversion between real and integer data types
5.6.2 Real data type precision, data conversion, and sign extension
5.7 Defining and extending scalar types <\/td>\n<\/tr>\n
89<\/td>\n5.7.1 type enumerated scalar
5.7.2 type scalar subtype <\/td>\n<\/tr>\n
90<\/td>\n5.7.3 type sized scalar
5.7.4 extend type <\/td>\n<\/tr>\n
91<\/td>\n5.8 Type-related constructs
5.8.1 as_a()
5.8.2 unsafe() <\/td>\n<\/tr>\n
92<\/td>\n5.8.2.1 Type conversion between scalars and lists of scalars <\/td>\n<\/tr>\n
93<\/td>\n5.8.2.2 Type conversion between strings and scalars or lists of scalars <\/td>\n<\/tr>\n
94<\/td>\n5.8.2.3 Type conversion between structs, struct subtypes, and lists of structs <\/td>\n<\/tr>\n
95<\/td>\n5.8.2.4 Type conversion between simple lists and keyed lists
5.8.2.5 Type conversion between reals and non-numeric scalars <\/td>\n<\/tr>\n
96<\/td>\n5.8.2.6 Type conversion between numeric lists and sets
5.8.3 all_values() <\/td>\n<\/tr>\n
97<\/td>\n5.8.4 set_of_values()
5.8.5 full_set_of_values() <\/td>\n<\/tr>\n
98<\/td>\n6. Structs, subtypes, and fields
6.1 Structs overview <\/td>\n<\/tr>\n
99<\/td>\n6.2 Defining structs: struct <\/td>\n<\/tr>\n
100<\/td>\n6.3 Extending structs: extend type
6.4 Restrictions on inheritance <\/td>\n<\/tr>\n
101<\/td>\n6.5 Extending subtypes
6.6 Creating subtypes with when <\/td>\n<\/tr>\n
102<\/td>\n6.6.1 when <\/td>\n<\/tr>\n
103<\/td>\n6.7 Extending when subtypes
6.7.1 Coverage and when subtypes
6.7.2 Extending methods in when subtypes <\/td>\n<\/tr>\n
104<\/td>\n6.8 Defining fields: field
6.8.1 Constant values
6.8.1.1 Initializing const fields <\/td>\n<\/tr>\n
105<\/td>\n6.8.1.2 Restrictions
6.8.2 Physical fields
6.8.3 Ungenerated fields
6.8.4 Assigning values to fields <\/td>\n<\/tr>\n
106<\/td>\n6.9 Defining list fields
6.9.1 list of <\/td>\n<\/tr>\n
107<\/td>\n6.9.2 list(key) of <\/td>\n<\/tr>\n
108<\/td>\n6.10 Projecting list of fields
6.11 Defining attribute fields <\/td>\n<\/tr>\n
110<\/td>\n7. Units
7.1 Overview <\/td>\n<\/tr>\n
111<\/td>\n7.1.1 Units versus structs
7.1.2 HDL paths and units <\/td>\n<\/tr>\n
112<\/td>\n7.1.3 Methodology limitations and recommendations <\/td>\n<\/tr>\n
113<\/td>\n7.2 Defining units and fields of type unit
7.2.1 unit <\/td>\n<\/tr>\n
114<\/td>\n7.2.2 field: unit-type is instance
7.2.3 field: unit-type <\/td>\n<\/tr>\n
115<\/td>\n7.2.4 field: list of unit instances
7.2.5 field: list of unit-type <\/td>\n<\/tr>\n
116<\/td>\n7.3 Unit attributes
7.3.1 hdl_path() <\/td>\n<\/tr>\n
117<\/td>\n7.3.2 agent()
7.4 Predefined methods of any_unit <\/td>\n<\/tr>\n
118<\/td>\n7.4.1 full_hdl_path()
7.4.2 e_path()
7.4.3 get_parent_unit() <\/td>\n<\/tr>\n
119<\/td>\n7.5 Unit-related predefined methods of any_struct
7.5.1 get_unit() <\/td>\n<\/tr>\n
120<\/td>\n7.5.2 get_enclosing_unit()
7.5.3 try_enclosing_unit() <\/td>\n<\/tr>\n
121<\/td>\n7.5.4 set_unit()
7.6 Unit-related predefined routines <\/td>\n<\/tr>\n
122<\/td>\n7.6.1 set_config_max()
7.6.2 get_all_units() <\/td>\n<\/tr>\n
123<\/td>\n8. Template types
8.1 Defining a template type
8.1.1 Template type parameters and defaults <\/td>\n<\/tr>\n
124<\/td>\n8.1.2 Template parameter type categories
8.1.3 Template base types <\/td>\n<\/tr>\n
125<\/td>\n8.1.4 Template body
8.1.5 Template definition example <\/td>\n<\/tr>\n
126<\/td>\n8.2 Extending a template <\/td>\n<\/tr>\n
127<\/td>\n8.2.1 Template extension example
8.3 Instantiating a template type <\/td>\n<\/tr>\n
128<\/td>\n8.4 Template subtype instances <\/td>\n<\/tr>\n
130<\/td>\n9. e ports
9.1 Introduction to e ports
9.1.1 Creating port instances <\/td>\n<\/tr>\n
131<\/td>\n9.1.2 Using ports
9.1.3 Using port values and attributes in constraints
9.2 Using simple ports <\/td>\n<\/tr>\n
132<\/td>\n9.2.1 Accessing simple ports and their values
9.2.2 MVL on simple ports <\/td>\n<\/tr>\n
133<\/td>\n9.2.3 @sim temporal expressions with external simple ports
9.3 Using buffer ports
9.3.1 Rendezvous-zero size buffer queue <\/td>\n<\/tr>\n
134<\/td>\n9.4 Using event ports
9.4.1 Accessing event ports <\/td>\n<\/tr>\n
135<\/td>\n9.5 Using method ports
9.5.1 Method types
9.5.2 Input method ports <\/td>\n<\/tr>\n
136<\/td>\n9.5.3 Output method ports
9.5.4 Invoking method ports
9.5.5 Binding method ports <\/td>\n<\/tr>\n
137<\/td>\n9.6 Defining and referencing ports
9.6.1 simple_port <\/td>\n<\/tr>\n
138<\/td>\n9.6.2 buffer_port <\/td>\n<\/tr>\n
139<\/td>\n9.6.3 event_port <\/td>\n<\/tr>\n
140<\/td>\n9.6.4 method_port
9.6.5 method_type method-type-name <\/td>\n<\/tr>\n
141<\/td>\n9.6.6 Port reference
9.6.7 Port: $ <\/td>\n<\/tr>\n
142<\/td>\n9.6.8 Port bit slice access
9.6.9 Force simple port <\/td>\n<\/tr>\n
143<\/td>\n9.6.10 Force simple port bit slice
9.6.11 Release simple port <\/td>\n<\/tr>\n
144<\/td>\n9.6.12 Method port reference
9.6.13 Method port: $ <\/td>\n<\/tr>\n
145<\/td>\n9.7 Port attributes
9.7.1 Generic port attributes <\/td>\n<\/tr>\n
146<\/td>\n9.7.2 Port attributes for HDL simulators <\/td>\n<\/tr>\n
148<\/td>\n9.7.2.1 bind()
9.7.2.1.1 Rules
9.7.2.1.2 Checking of ports <\/td>\n<\/tr>\n
149<\/td>\n9.7.2.1.3 Disconnected ports
9.7.2.2 buffer_size() <\/td>\n<\/tr>\n
150<\/td>\n9.7.2.3 declared_range()
9.7.2.4 delayed() <\/td>\n<\/tr>\n
151<\/td>\n9.7.2.5 driver()
9.7.2.6 driver_delay() <\/td>\n<\/tr>\n
152<\/td>\n9.7.2.7 driver_initial_value()
9.7.2.8 edge() <\/td>\n<\/tr>\n
153<\/td>\n9.7.2.9 hdl_path()
9.7.2.10 pack_options() <\/td>\n<\/tr>\n
154<\/td>\n9.7.2.11 pass_by_pointer()
9.7.2.12 verilog_drive() <\/td>\n<\/tr>\n
155<\/td>\n9.7.2.13 verilog_drive_hold()
9.7.2.14 verilog_forcible() <\/td>\n<\/tr>\n
156<\/td>\n9.7.2.15 verilog_strobe()
9.7.2.16 verilog_wire() <\/td>\n<\/tr>\n
157<\/td>\n9.7.2.17 vhdl_delay_mode()
9.8 Buffer port methods
9.8.1 get() <\/td>\n<\/tr>\n
158<\/td>\n9.8.2 put()
9.8.3 is_empty() <\/td>\n<\/tr>\n
159<\/td>\n9.8.4 is_full()
9.9 MVL methods for simple ports
9.9.1 MVL four-value logic <\/td>\n<\/tr>\n
160<\/td>\n9.9.2 MVL string
9.9.3 put_mvl() <\/td>\n<\/tr>\n
161<\/td>\n9.9.4 get_mvl()
9.9.5 put_mvl_list()
9.9.6 fill_mvl_list() <\/td>\n<\/tr>\n
162<\/td>\n9.9.7 get_mvl_list()
9.9.8 put_mvl_string() <\/td>\n<\/tr>\n
163<\/td>\n9.9.9 get_mvl_string()
9.9.10 get_mvl4()
9.9.11 fill_mvl4_list() <\/td>\n<\/tr>\n
164<\/td>\n9.9.12 get_mvl4_list()
9.9.13 get_mvl4_string() <\/td>\n<\/tr>\n
165<\/td>\n9.9.14 put_mvl_to_bit_slice()
9.9.15 force_mvl() <\/td>\n<\/tr>\n
166<\/td>\n9.9.16 force_mvl_list()
9.9.17 force_mvl_string() <\/td>\n<\/tr>\n
167<\/td>\n9.9.18 force_mvl_to_bit_slice()
9.9.19 has_mvl_value() <\/td>\n<\/tr>\n
168<\/td>\n9.9.20 has_x()
9.9.21 has_z()
9.9.22 has_unknown() <\/td>\n<\/tr>\n
169<\/td>\n9.9.23 set_default_value() <\/td>\n<\/tr>\n
170<\/td>\n9.9.24 set_default_mvl_value()
9.10 Global MVL routines
9.10.1 string_to_mvl() <\/td>\n<\/tr>\n
171<\/td>\n9.10.2 mvl_to_string()
9.10.3 mvl_to_int() <\/td>\n<\/tr>\n
172<\/td>\n9.10.4 int_to_mvl()
9.10.5 mvl_to_bits() <\/td>\n<\/tr>\n
173<\/td>\n9.10.6 bits_to_mvl()
9.10.7 mvl_to_mvl4()
9.10.8 convert_mvl_list_to_mvl4_list() <\/td>\n<\/tr>\n
174<\/td>\n9.10.9 mvl_list_to_mvl4_list()
9.10.10 string_to_mvl4()
9.11 Comparative analysis of ports and tick access <\/td>\n<\/tr>\n
175<\/td>\n9.12 e port binding <\/td>\n<\/tr>\n
176<\/td>\n9.12.1 do_bind()
9.13 Transaction level modeling interface ports in e <\/td>\n<\/tr>\n
177<\/td>\n9.13.1 interface_port
9.13.1.1 Special port types
9.13.1.1.1 Export <\/td>\n<\/tr>\n
178<\/td>\n9.13.1.2 Analysis port
9.13.2 Defining input e TLM interface ports
9.13.3 Binding e TLM interface ports
9.13.3.1 Binding rules for TLM interface ports <\/td>\n<\/tr>\n
179<\/td>\n9.13.3.2 Declarative and procedural binding
9.13.3.2.1 connect()\u2014language-neutral binding <\/td>\n<\/tr>\n
180<\/td>\n9.13.4 Supported TLM interfaces
9.13.4.1 tlm_event predefined struct
9.13.4.2 Supported unidirectional TLM interfaces <\/td>\n<\/tr>\n
181<\/td>\n9.13.4.3 Supported bidirectional TLM interfaces <\/td>\n<\/tr>\n
183<\/td>\n9.13.4.4 Supported analysis TLM interface
9.13.4.5 Required semantics of TLM interface methods
9.13.4.5.1 put(value:type)
9.13.4.5.2 try_put(value:type) : bool
9.13.4.5.3 can_put() : bool <\/td>\n<\/tr>\n
184<\/td>\n9.13.4.5.4 ok_to_put() : tlm_event
9.13.4.5.5 get(value:*type)
9.13.4.5.6 try_get(value:*type) : bool
9.13.4.5.7 can_get() : bool
9.13.4.5.8 ok_to_get() : tlm_event
9.13.4.5.9 peek(value:*type)
9.13.4.5.10 try_peek(value:*type) : bool
9.13.4.5.11 can_peek() : bool
9.13.4.5.12 ok_to_peek() : tlm_event
9.13.4.5.13 transport(request: req-type, response: *rsp-type) <\/td>\n<\/tr>\n
185<\/td>\n9.13.4.5.14 write(value : type)
9.14 TLM Sockets in e
9.14.1 tlm_initiator_socket\/tlm_target_socket <\/td>\n<\/tr>\n
186<\/td>\n9.14.1.1 nb_transport_bw(trans:tlm_generic_payload, p:*tlm_phase_enum,t:*time):tlm_syn_enum
9.14.1.2 nb_transport_fw(trans:tlm_generic_payload, p:*tlm_phase_enum,t:*time):tlm_syn_enum
9.14.1.3 b_transport(trans:tlm_generic_payload, ,t:*time)@sys.any
9.14.1.4 transport_dbg(trans:tlm_generic_payload):uint
9.14.1.5 set_bus_width (num:uint)
9.14.1.6 get_bus_width ():uint <\/td>\n<\/tr>\n
187<\/td>\n9.14.2 Predefined types related to TLM socket based transactions
9.14.2.1 tlm_command
9.14.2.2 tlm_endianness
9.14.2.3 tlm_extension
9.14.2.4 tlm_generic_payload <\/td>\n<\/tr>\n
189<\/td>\n9.14.2.5 tlm_phase_enum <\/td>\n<\/tr>\n
190<\/td>\n9.14.2.6 tlm_response_status
9.14.2.7 tlm_sync_enum
9.14.3 Binding e TLM sockets
9.14.3.1 Binding rules for TLM sockets <\/td>\n<\/tr>\n
191<\/td>\n9.14.3.1.1 connect()-language-neutral binding <\/td>\n<\/tr>\n
192<\/td>\n10. Constraints and generation
10.1 Types of constraints
10.2 Generation concepts <\/td>\n<\/tr>\n
193<\/td>\n10.2.1 Generation action
10.2.1.1 Pre-run generation actions
10.2.1.2 On-the-fly generation actions
10.2.2 Generatable variable
10.2.3 Connected field sets (CFS) <\/td>\n<\/tr>\n
194<\/td>\n10.2.4 Inputs <\/td>\n<\/tr>\n
195<\/td>\n10.2.5 Unidirectional and bidirectional relations
10.2.6 Inconsistently connected field sets (ICFS)
10.2.7 Order of CFSs <\/td>\n<\/tr>\n
196<\/td>\n10.2.7.1 Structural dependencies
10.2.7.1.1 when subtype dependencies in constraints <\/td>\n<\/tr>\n
197<\/td>\n10.2.7.2 Input dependencies
10.2.7.2.1 Dependencies of method calls
10.2.8 Basic flow of generation <\/td>\n<\/tr>\n
198<\/td>\n10.2.9 Using methods in constraints <\/td>\n<\/tr>\n
199<\/td>\n10.2.9.1 Classification of methods <\/td>\n<\/tr>\n
200<\/td>\n10.2.9.2 Number of calls
10.2.10 Generatable paths and the sampling of inputs <\/td>\n<\/tr>\n
201<\/td>\n10.2.11 Scope of constraints <\/td>\n<\/tr>\n
202<\/td>\n10.2.12 Soft constraints <\/td>\n<\/tr>\n
203<\/td>\n10.2.12.1 keep gen-item.reset_soft() <\/td>\n<\/tr>\n
204<\/td>\n10.2.12.2 keep soft… select
10.2.13 Constraining non-scalar data types <\/td>\n<\/tr>\n
205<\/td>\n10.2.13.1 Constraining structs
10.2.13.1.1 Struct equality <\/td>\n<\/tr>\n
206<\/td>\n10.2.13.1.2 Struct inequality
10.2.13.2 Allocation versus aliasing
10.2.13.3 Constraining lists <\/td>\n<\/tr>\n
207<\/td>\n10.2.13.3.1 List equality and inequality
10.2.13.3.2 List item
10.2.13.3.3 Item in list
10.2.13.3.4 List in list <\/td>\n<\/tr>\n
208<\/td>\n10.2.13.3.5 Permutations
10.2.13.3.6 List attributes <\/td>\n<\/tr>\n
209<\/td>\n10.2.13.3.7 Constraining all list items: keep for each
10.2.13.3.8 All solutions <\/td>\n<\/tr>\n
210<\/td>\n10.3 Type constraints <\/td>\n<\/tr>\n
211<\/td>\n10.3.1 keep type <\/td>\n<\/tr>\n
212<\/td>\n10.3.2 Type constraints and struct fields
10.3.3 Type constraints and list fields
10.3.4 Type constraints and like subtypes <\/td>\n<\/tr>\n
213<\/td>\n10.4 Defining constraints
10.4.1 keep
10.4.1.1 Constraint overriding <\/td>\n<\/tr>\n
214<\/td>\n10.4.2 keep
10.4.3 keep all of {…} <\/td>\n<\/tr>\n
215<\/td>\n10.4.4 keep struct-list.is_all_iterations()
10.4.5 keep soft <\/td>\n<\/tr>\n
216<\/td>\n10.4.6 read_only()
10.4.7 constraint-bool-exp <\/td>\n<\/tr>\n
218<\/td>\n10.4.8 gen-item
10.5 Invoking generation <\/td>\n<\/tr>\n
219<\/td>\n10.5.1 gen
10.5.2 pre_generate() <\/td>\n<\/tr>\n
220<\/td>\n10.5.3 post_generate() <\/td>\n<\/tr>\n
221<\/td>\n11. Temporal struct members
11.1 Events
11.1.1 Causes of events
11.1.2 Scope of events
11.1.3 Defining and emitting named events <\/td>\n<\/tr>\n
222<\/td>\n11.1.3.1 event <\/td>\n<\/tr>\n
223<\/td>\n11.1.3.2 emit
11.1.4 Predefined events
11.1.4.1 General predefined events <\/td>\n<\/tr>\n
224<\/td>\n11.1.4.1.1 sys.any
11.1.4.1.2 sys.tick_start
11.1.4.1.3 sys.tick_end
11.1.4.1.4 session.start_of_test
11.1.4.1.5 session.end_of_test
11.1.4.1.6 struct.quit
11.1.4.1.7 sys.new_time
11.1.4.2 Simulation time and ticks <\/td>\n<\/tr>\n
225<\/td>\n11.2 on <\/td>\n<\/tr>\n
226<\/td>\n11.3 on event-port <\/td>\n<\/tr>\n
227<\/td>\n11.4 expect | assume <\/td>\n<\/tr>\n
228<\/td>\n11.5 Procedural API for temporal operators on event and expect struct members
11.5.1 do_abort_on_event() <\/td>\n<\/tr>\n
229<\/td>\n11.5.2 do_stop_on_event()
11.5.3 do_start_on_event() <\/td>\n<\/tr>\n
230<\/td>\n11.5.4 do_abort_on_expect()
11.5.5 do_stop_on_expect() <\/td>\n<\/tr>\n
231<\/td>\n11.5.6 do_start_on_expect()
11.5.7 do_abort_on_struct() <\/td>\n<\/tr>\n
232<\/td>\n11.5.8 do_stop_on_struct()
11.5.9 do_start_on_struct() <\/td>\n<\/tr>\n
233<\/td>\n11.5.10 apply_abort_on_struct()
11.5.11 apply_stop_on_struct() <\/td>\n<\/tr>\n
234<\/td>\n11.5.12 apply_start_on_struct()
11.5.13 do_abort_on_all_events() <\/td>\n<\/tr>\n
235<\/td>\n11.5.14 do_stop_on_all_events()
11.5.15 do_start_on_all_events() <\/td>\n<\/tr>\n
236<\/td>\n11.5.16 do_abort_on_all_expects()
11.5.17 do_stop_on_all_expects() <\/td>\n<\/tr>\n
237<\/td>\n11.5.18 do_start_on_all_expects()
11.5.19 do_abort_on_subtree() <\/td>\n<\/tr>\n
238<\/td>\n11.5.20 do_stop_on_subtree()
11.5.21 do_start_on_subtree() <\/td>\n<\/tr>\n
239<\/td>\n11.5.22 propagate_abort_on_subtree()
11.5.23 propagate_stop_on_subtree() <\/td>\n<\/tr>\n
240<\/td>\n11.5.24 propagate_start_on_subtree()
11.5.25 do_abort_on_all_instance_fields() <\/td>\n<\/tr>\n
241<\/td>\n11.5.26 do_stop_on_all_instance_fields()
11.5.27 do_start_on_all_instance_fields() <\/td>\n<\/tr>\n
242<\/td>\n12. Temporal expressions
12.1 Overview
12.1.1 Terminology
12.1.1.1 holds
12.1.1.2 holds tightly <\/td>\n<\/tr>\n
243<\/td>\n12.1.1.3 occurs, occurrence
12.1.1.4 path
12.1.1.5 prefix
12.1.1.6 proposition
12.1.1.7 sampling event
12.1.1.8 sampled normal form
12.1.1.9 state
12.1.1.10 strict prefix
12.1.1.11 sub-path
12.1.1.12 success
12.1.1.13 temporal atom
12.1.1.14 tight satisfaction <\/td>\n<\/tr>\n
244<\/td>\n12.1.1.15 top-level temporal expression
12.1.2 Temporal atoms
12.1.3 Sampling event
12.1.4 Sampling propagation and sampled normal form <\/td>\n<\/tr>\n
245<\/td>\n12.2 Temporal operators and constructs <\/td>\n<\/tr>\n
246<\/td>\n12.2.1 Precedence of temporal operators
12.2.2 cycle <\/td>\n<\/tr>\n
247<\/td>\n12.2.3 true(exp)
12.2.4 @ unary event operator <\/td>\n<\/tr>\n
248<\/td>\n12.2.5 @ sampling operator (binary @)
12.2.6 and <\/td>\n<\/tr>\n
249<\/td>\n12.2.7 or
12.2.8 { exp ; exp } <\/td>\n<\/tr>\n
250<\/td>\n12.2.9 [ exp ] <\/td>\n<\/tr>\n
251<\/td>\n12.2.10 ~[ exp..exp ] <\/td>\n<\/tr>\n
252<\/td>\n12.2.11 [ exp..exp ] <\/td>\n<\/tr>\n
253<\/td>\n12.2.12 fail <\/td>\n<\/tr>\n
254<\/td>\n12.2.13 => <\/td>\n<\/tr>\n
255<\/td>\n12.2.14 eventually
12.2.15 detach <\/td>\n<\/tr>\n
256<\/td>\n12.2.16 not <\/td>\n<\/tr>\n
257<\/td>\n12.2.17 change(exp), fall(exp), rise(exp) <\/td>\n<\/tr>\n
259<\/td>\n12.2.18 delay <\/td>\n<\/tr>\n
260<\/td>\n12.2.19 exec
12.3 Success and failure of a temporal expression
12.3.1 Success of a temporal expression <\/td>\n<\/tr>\n
261<\/td>\n12.3.2 Failure of a temporal expression
12.3.3 Start of an evaluation of a temporal expression <\/td>\n<\/tr>\n
262<\/td>\n13. Time-consuming actions
13.1 Synchronization actions
13.1.1 Synchronization semantics <\/td>\n<\/tr>\n
263<\/td>\n13.1.2 sync
13.1.3 wait <\/td>\n<\/tr>\n
264<\/td>\n13.2 Concurrency actions
13.2.1 all of <\/td>\n<\/tr>\n
265<\/td>\n13.2.2 first of
13.3 State machines
13.3.1 Overview <\/td>\n<\/tr>\n
266<\/td>\n13.3.2 state machine action <\/td>\n<\/tr>\n
267<\/td>\n13.3.3 Simple state transition: state => state <\/td>\n<\/tr>\n
268<\/td>\n13.3.4 Wild card state transition: * => state
13.3.5 state action <\/td>\n<\/tr>\n
270<\/td>\n14. Coverage constructs
14.1 Defining coverage groups: cover <\/td>\n<\/tr>\n
272<\/td>\n14.1.1 Using the instance_no_collect option for per unit instance coverage <\/td>\n<\/tr>\n
273<\/td>\n14.2 Defining basic coverage items: item <\/td>\n<\/tr>\n
276<\/td>\n14.2.1 Coverage per instance
14.2.2 per_instance item errors <\/td>\n<\/tr>\n
277<\/td>\n14.2.3 Relationship of type and instance based coverage items <\/td>\n<\/tr>\n
278<\/td>\n14.3 Defining cross coverage items: cross <\/td>\n<\/tr>\n
280<\/td>\n14.4 Defining transition coverage items: transition <\/td>\n<\/tr>\n
282<\/td>\n14.5 Extending coverage groups: cover … using also … is also <\/td>\n<\/tr>\n
283<\/td>\n14.6 Extending coverage items: item … using also
14.7 Coverage API
14.7.1 Methods of user_cover_struct <\/td>\n<\/tr>\n
284<\/td>\n14.7.1.1 scan_cover()
14.7.1.2 start_group() <\/td>\n<\/tr>\n
285<\/td>\n14.7.1.3 start_instance()
14.7.1.4 start_item() <\/td>\n<\/tr>\n
286<\/td>\n14.7.1.5 scan_bucket()
14.7.1.6 end_item() <\/td>\n<\/tr>\n
287<\/td>\n14.7.1.7 end_instance()
14.7.1.8 end_group()
14.7.2 Fields of user_cover_struct <\/td>\n<\/tr>\n
289<\/td>\n14.8 Coverage methods for the covers struct <\/td>\n<\/tr>\n
290<\/td>\n14.8.1 include_tests()
14.8.2 set_weight() <\/td>\n<\/tr>\n
291<\/td>\n14.8.3 set_at_least()
14.8.4 set_cover() <\/td>\n<\/tr>\n
292<\/td>\n14.8.5 get_contributing_runs()
14.8.6 get_unique_buckets() <\/td>\n<\/tr>\n
293<\/td>\n14.8.7 write_cover_file()
14.8.8 get_overall_grade()
14.8.9 get_ecov_name() <\/td>\n<\/tr>\n
294<\/td>\n14.8.10 get_test_name()
14.8.11 get_seed() <\/td>\n<\/tr>\n
295<\/td>\n15. Macros
15.1 Overview
15.1.1 e syntactic structure
15.1.2 Macro definition <\/td>\n<\/tr>\n
296<\/td>\n15.2 define-as statement
15.3 define-as-computed statement <\/td>\n<\/tr>\n
297<\/td>\n15.4 Match expression structure
15.4.1 Match expression terms
15.4.2 Match expression operators <\/td>\n<\/tr>\n
298<\/td>\n15.4.3 Submatches and labels
15.4.4 Meta-grammar of match expression <\/td>\n<\/tr>\n
299<\/td>\n15.4.5 Proto-syntax
15.5 Interpretation of match expressions
15.5.1 Priority on production choices <\/td>\n<\/tr>\n
300<\/td>\n15.5.2 Recursive-decent interpretation
15.6 Macro expansion code <\/td>\n<\/tr>\n
303<\/td>\n16. Print, checks, and error handling
16.1 print
16.2 Handling DUT errors <\/td>\n<\/tr>\n
304<\/td>\n16.2.1 check that
16.2.1.1 Using named check actions <\/td>\n<\/tr>\n
305<\/td>\n16.2.2 dut_error() <\/td>\n<\/tr>\n
306<\/td>\n16.2.3 dut_errorf() <\/td>\n<\/tr>\n
307<\/td>\n16.2.4 dut_error_struct <\/td>\n<\/tr>\n
308<\/td>\n16.2.5 set_check() <\/td>\n<\/tr>\n
309<\/td>\n16.3 Handling user errors
16.3.1 warning()
16.3.2 error() <\/td>\n<\/tr>\n
310<\/td>\n16.3.3 fatal()
16.3.4 try <\/td>\n<\/tr>\n
311<\/td>\n16.4 Handling programming errors: assert <\/td>\n<\/tr>\n
312<\/td>\n17. Methods
17.1 Rules for defining and extending methods <\/td>\n<\/tr>\n
314<\/td>\n17.1.1 method is <\/td>\n<\/tr>\n
315<\/td>\n17.1.2 method @event is <\/td>\n<\/tr>\n
316<\/td>\n17.1.3 method [@event] is (also | first | only) <\/td>\n<\/tr>\n
319<\/td>\n17.1.4 method [@event] is (undefined | empty)
17.2 Invoking methods <\/td>\n<\/tr>\n
320<\/td>\n17.2.1 tcm() <\/td>\n<\/tr>\n
321<\/td>\n17.2.2 start tcm() <\/td>\n<\/tr>\n
322<\/td>\n17.2.3 method() <\/td>\n<\/tr>\n
323<\/td>\n17.2.4 compute method() or tcm()
17.2.5 return <\/td>\n<\/tr>\n
324<\/td>\n17.3 Parameter passing
17.3.1 Scalar parameter passing <\/td>\n<\/tr>\n
325<\/td>\n17.3.2 Compound parameter passing
17.3.3 Passing by reference
17.3.4 Default parameter values <\/td>\n<\/tr>\n
326<\/td>\n17.4 Using the C interface
17.4.1 routine \u2026 is C routine <\/td>\n<\/tr>\n
327<\/td>\n17.4.2 method \u2026 is C routine
17.4.3 C export <\/td>\n<\/tr>\n
328<\/td>\n18. Creating and modifying e variables
18.1 About e variables
18.2 var <\/td>\n<\/tr>\n
329<\/td>\n18.3 =
18.4 op= <\/td>\n<\/tr>\n
330<\/td>\n18.5 <= <\/td>\n<\/tr>\n
332<\/td>\n19. Packing and unpacking
19.1 Basic packing
19.1.1 pack() <\/td>\n<\/tr>\n
333<\/td>\n19.1.2 unpack() <\/td>\n<\/tr>\n
334<\/td>\n19.1.3 swap() <\/td>\n<\/tr>\n
335<\/td>\n19.2 Predefined pack options
19.2.1 pack_options struct
19.2.1.1 reverse_fields
19.2.1.2 reverse_list_items
19.2.1.3 final_reorder
19.2.1.4 scalar_reorder
19.2.2 Predefined settings <\/td>\n<\/tr>\n
336<\/td>\n19.2.3 packing.high
19.2.4 packing.low
19.2.5 packing.global_default
19.3 Customizing pack options
19.4 Packing and unpacking specific types
19.4.1 Packing and unpacking structs <\/td>\n<\/tr>\n
337<\/td>\n19.4.1.1 Customizing packing for a particular struct
19.4.1.1.1 do_pack() <\/td>\n<\/tr>\n
338<\/td>\n19.4.1.1.2 do_unpack() <\/td>\n<\/tr>\n
339<\/td>\n19.4.1.2 A simple example of packing <\/td>\n<\/tr>\n
340<\/td>\n19.4.1.3 A simple example of unpacking <\/td>\n<\/tr>\n
341<\/td>\n19.4.2 Packing and unpacking lists <\/td>\n<\/tr>\n
342<\/td>\n19.4.3 Packing and unpacking scalar expressions
19.4.4 Packing and unpacking strings
19.4.5 Packing values for real types
19.5 Implicit packing and unpacking <\/td>\n<\/tr>\n
343<\/td>\n20. Control flow actions
20.1 Conditional actions
20.1.1 if then else <\/td>\n<\/tr>\n
344<\/td>\n20.1.2 case labeled-case-item <\/td>\n<\/tr>\n
345<\/td>\n20.1.3 case bool-case-item
20.2 Iterative actions <\/td>\n<\/tr>\n
346<\/td>\n20.2.1 while
20.2.2 repeat until <\/td>\n<\/tr>\n
347<\/td>\n20.2.3 for each in <\/td>\n<\/tr>\n
348<\/td>\n20.2.4 for each in set <\/td>\n<\/tr>\n
349<\/td>\n20.2.5 for from to
20.2.6 for <\/td>\n<\/tr>\n
350<\/td>\n20.3 File iteration actions
20.3.1 for each line in file <\/td>\n<\/tr>\n
351<\/td>\n20.3.2 for each file matching
20.4 Actions for controlling the program flow
20.4.1 break <\/td>\n<\/tr>\n
352<\/td>\n20.4.2 continue <\/td>\n<\/tr>\n
353<\/td>\n21. Importing and preprocessor directives
21.1 Importing e modules
21.1.1 import <\/td>\n<\/tr>\n
354<\/td>\n21.1.2 Cyclic referencing and importing
21.2 #ifdef, #ifndef <\/td>\n<\/tr>\n
355<\/td>\n21.3 #define <\/td>\n<\/tr>\n
356<\/td>\n21.4 #undef <\/td>\n<\/tr>\n
357<\/td>\n22. Encapsulation constructs
22.1 package: package-name
22.2 package: type-declaration <\/td>\n<\/tr>\n
358<\/td>\n22.3 package | protected | private: struct-member <\/td>\n<\/tr>\n
359<\/td>\n22.4 Scope operator (::) <\/td>\n<\/tr>\n
360<\/td>\n23. Simulation-related constructs
23.1 force
23.2 release <\/td>\n<\/tr>\n
361<\/td>\n23.3 Tick access: ‘hdl-pathname’ <\/td>\n<\/tr>\n
362<\/td>\n24. Messages
24.1 Overview
24.2 Message model
24.3 Message execution <\/td>\n<\/tr>\n
363<\/td>\n24.4 Structured debug messages <\/td>\n<\/tr>\n
365<\/td>\n24.4.1 msg_started() <\/td>\n<\/tr>\n
366<\/td>\n24.4.2 msg_ended() <\/td>\n<\/tr>\n
367<\/td>\n24.4.3 msg_transformed()
24.4.4 msg_changed() <\/td>\n<\/tr>\n
368<\/td>\n24.4.5 msg_info() <\/td>\n<\/tr>\n
369<\/td>\n24.5 message and messagef
24.6 Tag <\/td>\n<\/tr>\n
370<\/td>\n24.7 Verbosity
24.8 Predefined type sdm_handler
24.8.1 sdm_handler <\/td>\n<\/tr>\n
371<\/td>\n24.8.2 sdm_started_handler
24.8.3 sdm_ended_handler
24.8.4 sdm_transformed_handler <\/td>\n<\/tr>\n
372<\/td>\n24.8.5 sdm_changed_handler
24.8.6 sdm_info_handler
24.9 Messages Interface
24.9.1 Message configuration and customization
24.9.1.1 Initial presupplied default message settings
24.9.1.2 Modifying initial default message settings <\/td>\n<\/tr>\n
373<\/td>\n24.9.2 Predefined types and methods
24.9.2.1 recording_config
24.9.2.1.1 register_all_field_attributes()
24.9.2.1.2 register_callback_attribute() <\/td>\n<\/tr>\n
374<\/td>\n24.9.2.1.3 register_callback_attributes()
24.9.2.1.4 register_callback_state_var()
24.9.2.1.5 register_field_attribute() <\/td>\n<\/tr>\n
375<\/td>\n24.9.2.1.6 register_field_attributes()
24.9.2.1.7 register_field_state_var() <\/td>\n<\/tr>\n
376<\/td>\n24.9.2.1.8 register_method_attribute() <\/td>\n<\/tr>\n
377<\/td>\n24.9.2.1.9 register_method_state_var()
24.9.2.1.10 set_attribute_format() <\/td>\n<\/tr>\n
378<\/td>\n24.9.2.1.11 set_attribute_sampling()
24.9.2.1.12 set_label_attribute() <\/td>\n<\/tr>\n
379<\/td>\n24.9.2.1.13 set_text_attribute()
24.9.2.1.14 set_text_state_var()
24.9.2.2 any_unit Recording Configuration API extensions
24.9.2.2.1 assign_recording_config() <\/td>\n<\/tr>\n
380<\/td>\n24.9.2.2.2 get_recording_config()
24.9.2.2.3 tr_get_state_var_value()
24.9.2.3 any_struct Recording Configuration API extensions <\/td>\n<\/tr>\n
381<\/td>\n24.9.2.3.1 tr_get_attribute_value() <\/td>\n<\/tr>\n
382<\/td>\n24.9.2.4 tr_sampling_point_t
24.9.2.5 message_manager API <\/td>\n<\/tr>\n
383<\/td>\n24.9.2.5.1 set_screen_messages <\/td>\n<\/tr>\n
384<\/td>\n24.9.2.5.2 set_screen_messages_off
24.9.2.5.3 set_transaction_messages <\/td>\n<\/tr>\n
385<\/td>\n24.9.2.5.4 set_transaction_messages_off <\/td>\n<\/tr>\n
386<\/td>\n24.9.2.5.5 set_file_messages
24.9.2.5.6 set_file_messages_off <\/td>\n<\/tr>\n
387<\/td>\n24.9.2.5.7 set_message_format
24.9.2.6 message_format <\/td>\n<\/tr>\n
388<\/td>\n24.9.2.7 message_action
24.9.2.7.1 get_id()
24.9.2.7.2 get_tag()
24.9.2.7.3 get_verbosity() <\/td>\n<\/tr>\n
389<\/td>\n24.9.2.7.4 get_source_method_layer()
24.9.2.7.5 get_source_line_num()
24.9.2.7.6 get_source_struct()
24.9.2.7.7 get_time() <\/td>\n<\/tr>\n
390<\/td>\n24.9.2.7.8 get_format()
24.9.2.7.9 get_sdm_handler()
24.9.2.8 sdm_handler
24.9.2.8.1 Predefined fields
24.9.2.8.2 get_kind_string() <\/td>\n<\/tr>\n
391<\/td>\n24.9.2.8.3 get_attribute_string()
24.9.2.8.4 collect_text_attributes()
24.9.2.9 sdm_started_handler
24.9.2.9.1 Predefined fields
24.9.2.10 sdm_ended_handler
24.9.2.10.1 Predefined fields <\/td>\n<\/tr>\n
392<\/td>\n24.9.2.11 sdm_transformed_handler
24.9.2.11.1 Predefined fields
24.9.2.12 sdm_changed_handler
24.9.2.12.1 Predefined fields
24.9.2.13 sdm_info_handler
24.9.2.13.1 Predefined fields
24.9.2.14 any_unit message API
24.9.2.14.1 create_formatted_messsage() <\/td>\n<\/tr>\n
394<\/td>\n25. Sequences
25.1 Overview <\/td>\n<\/tr>\n
395<\/td>\n25.1.1 Object model
25.1.2 Virtual sequences <\/td>\n<\/tr>\n
396<\/td>\n25.2 Sequence statement
25.2.1 Predefined sequence kinds
25.2.1.1 MAIN <\/td>\n<\/tr>\n
397<\/td>\n25.2.1.2 SIMPLE
25.2.1.3 RANDOM <\/td>\n<\/tr>\n
398<\/td>\n25.2.2 Examples
25.3 do sequence action <\/td>\n<\/tr>\n
399<\/td>\n25.4 Sequence struct types and members <\/td>\n<\/tr>\n
400<\/td>\n25.4.1 Sequence item API
25.4.2 Sequence API <\/td>\n<\/tr>\n
402<\/td>\n25.4.3 Sequence driver API <\/td>\n<\/tr>\n
404<\/td>\n25.5 BFM-driver-sequence flow diagrams
25.5.1 sequence.start_sequence() flow
25.5.2 do subsequence flow <\/td>\n<\/tr>\n
406<\/td>\n25.5.3 do item flow in pull mode using get_next_item()
25.5.4 do item flow in pull mode using try_next_item() <\/td>\n<\/tr>\n
408<\/td>\n26. List pseudo-methods library
26.1 Pseudo-methods overview
26.2 Using list pseudo-methods
26.3 Pseudo-methods to modify lists <\/td>\n<\/tr>\n
409<\/td>\n26.3.1 add(item)
26.3.2 add(list) <\/td>\n<\/tr>\n
410<\/td>\n26.3.3 add0(item)
26.3.4 add0(list) <\/td>\n<\/tr>\n
411<\/td>\n26.3.5 clear()
26.3.6 delete() <\/td>\n<\/tr>\n
412<\/td>\n26.3.7 fast_delete()
26.3.8 insert(index, item) <\/td>\n<\/tr>\n
413<\/td>\n26.3.9 insert(index, list)
26.3.10 pop() <\/td>\n<\/tr>\n
414<\/td>\n26.3.11 pop0()
26.3.12 push() <\/td>\n<\/tr>\n
415<\/td>\n26.3.13 push0()
26.3.14 push(list) <\/td>\n<\/tr>\n
416<\/td>\n26.3.15 push0(list)
26.3.16 resize() <\/td>\n<\/tr>\n
417<\/td>\n26.4 General list pseudo-methods
26.4.1 all_different() <\/td>\n<\/tr>\n
418<\/td>\n26.4.2 apply() <\/td>\n<\/tr>\n
419<\/td>\n26.4.3 copy()
26.4.4 count() <\/td>\n<\/tr>\n
420<\/td>\n26.4.5 exists()
26.4.6 first() <\/td>\n<\/tr>\n
421<\/td>\n26.4.7 first_index()
26.4.8 flatten() <\/td>\n<\/tr>\n
422<\/td>\n26.4.9 get_indices()
26.4.10 has() <\/td>\n<\/tr>\n
423<\/td>\n26.4.11 is_a_permutation()
26.4.12 is_empty() <\/td>\n<\/tr>\n
424<\/td>\n26.4.13 last()
26.4.14 last_index() <\/td>\n<\/tr>\n
425<\/td>\n26.4.15 max()
26.4.16 max_index() <\/td>\n<\/tr>\n
426<\/td>\n26.4.17 max_value()
26.4.18 min() <\/td>\n<\/tr>\n
427<\/td>\n26.4.19 min_index()
26.4.20 min_value() <\/td>\n<\/tr>\n
428<\/td>\n26.4.21 reverse()
26.4.22 size() <\/td>\n<\/tr>\n
429<\/td>\n26.4.23 sort()
26.4.24 sort_by_field() <\/td>\n<\/tr>\n
430<\/td>\n26.4.25 split()
26.4.26 top() <\/td>\n<\/tr>\n
431<\/td>\n26.4.27 top0()
26.4.28 unique() <\/td>\n<\/tr>\n
432<\/td>\n26.4.29 all()
26.4.30 all_indices()
26.5 Math and logic pseudo-methods <\/td>\n<\/tr>\n
433<\/td>\n26.5.1 and_all()
26.5.2 or_all() <\/td>\n<\/tr>\n
434<\/td>\n26.5.3 average()
26.5.4 product() <\/td>\n<\/tr>\n
435<\/td>\n26.5.5 sum()
26.6 List CRC pseudo-methods
26.6.1 crc_8() <\/td>\n<\/tr>\n
436<\/td>\n26.6.2 crc_32() <\/td>\n<\/tr>\n
437<\/td>\n26.6.3 crc_32_flip()
26.7 Keyed list pseudo-methods <\/td>\n<\/tr>\n
438<\/td>\n26.7.1 key()
26.7.2 key_index() <\/td>\n<\/tr>\n
439<\/td>\n26.7.3 key_exists()
26.7.4 Restrictions on keyed lists <\/td>\n<\/tr>\n
440<\/td>\n27. Predefined methods library
27.1 Predefined methods of sys
27.2 Predefined methods of any_struct
27.2.1 Setting unit relationships
27.2.1.1 get_unit()
27.2.1.2 set_unit()
27.2.2 Methods called during execution phases
27.2.2.1 init() method of any_struct <\/td>\n<\/tr>\n
441<\/td>\n27.2.2.2 pre_generate()
27.2.2.3 post_generate()
27.2.2.4 run() method of any_struct <\/td>\n<\/tr>\n
442<\/td>\n27.2.2.5 quit() method of any_struct
27.2.3 Methods called for customizing specific operations
27.2.3.1 do_pack()
27.2.3.2 do_unpack() <\/td>\n<\/tr>\n
443<\/td>\n27.2.3.3 do_print() method of any_struct
27.2.3.4 print_line() method of any_struct
27.3 Methods and predefined attributes of unit any_unit <\/td>\n<\/tr>\n
444<\/td>\n27.4 Set Pseudo-methods
27.4.1 union()
27.4.2 intersect()
27.4.3 diff() <\/td>\n<\/tr>\n
445<\/td>\n27.4.4 size()
27.4.5 uint_size()
27.4.6 size_is_uint() <\/td>\n<\/tr>\n
446<\/td>\n27.4.7 min()
27.4.8 uint_min()
27.4.9 min_is_uint() <\/td>\n<\/tr>\n
447<\/td>\n27.4.10 int_min()
27.4.11 min_is_int()
27.4.12 max() <\/td>\n<\/tr>\n
448<\/td>\n27.4.13 uint_max()
27.4.14 max_is_uint()
27.4.15 int_max() <\/td>\n<\/tr>\n
449<\/td>\n27.4.16 max_is_int()
27.4.17 get_all_ranges()
27.4.18 collect_all_ranges() <\/td>\n<\/tr>\n
450<\/td>\n27.4.19 get_range()
27.4.20 get_range_below() <\/td>\n<\/tr>\n
451<\/td>\n27.4.21 get_range_above()
27.5 Other pseudo-methods <\/td>\n<\/tr>\n
452<\/td>\n27.5.1 copy() method of any_struct
27.5.2 as_a()
27.5.3 get_enclosing_unit() <\/td>\n<\/tr>\n
453<\/td>\n27.5.4 to_string()
27.5.5 try_enclosing_unit()
27.6 Coverage methods <\/td>\n<\/tr>\n
454<\/td>\n28. Predefined routines library
28.1 Deep copy and compare routines
28.1.1 deep_copy() <\/td>\n<\/tr>\n
455<\/td>\n28.1.2 deep_compare() <\/td>\n<\/tr>\n
457<\/td>\n28.1.3 deep_compare_physical()
28.2 Integer arithmetic routines <\/td>\n<\/tr>\n
458<\/td>\n28.2.1 min()
28.2.2 max()
28.2.3 abs() <\/td>\n<\/tr>\n
459<\/td>\n28.2.4 odd()
28.2.5 even()
28.2.6 ilog2() <\/td>\n<\/tr>\n
460<\/td>\n28.2.7 ilog10()
28.2.8 ipow()
28.2.9 isqrt() <\/td>\n<\/tr>\n
461<\/td>\n28.2.10 div_round_up()
28.3 Real arithmetic routines <\/td>\n<\/tr>\n
462<\/td>\n28.4 bitwise_op() <\/td>\n<\/tr>\n
463<\/td>\n28.5 get_all_units()
28.6 String routines
28.6.1 append() <\/td>\n<\/tr>\n
464<\/td>\n28.6.2 appendf()
28.6.3 bin() <\/td>\n<\/tr>\n
465<\/td>\n28.6.4 dec()
28.6.5 hex()
28.6.6 quote() <\/td>\n<\/tr>\n
466<\/td>\n28.6.7 str_chop()
28.6.8 str_empty()
28.6.9 str_exactly() <\/td>\n<\/tr>\n
467<\/td>\n28.6.10 str_insensitive()
28.6.11 str_join()
28.6.12 str_len() <\/td>\n<\/tr>\n
468<\/td>\n28.6.13 str_lower()
28.6.14 str_match() <\/td>\n<\/tr>\n
469<\/td>\n28.6.15 str_pad()
28.6.16 str_replace() <\/td>\n<\/tr>\n
470<\/td>\n28.6.17 str_split()
28.6.18 str_split_all() <\/td>\n<\/tr>\n
471<\/td>\n28.6.19 str_sub()
28.6.20 str_upper()
28.7 Output routines <\/td>\n<\/tr>\n
472<\/td>\n28.7.1 out()
28.7.2 outf()
28.7.3 Format string <\/td>\n<\/tr>\n
473<\/td>\n28.8 Operating system interface routines <\/td>\n<\/tr>\n
474<\/td>\n28.8.1 spawn()
28.8.2 spawn_check()
28.8.3 system() <\/td>\n<\/tr>\n
475<\/td>\n28.8.4 output_from()
28.8.5 output_from_check()
28.8.6 get_symbol() <\/td>\n<\/tr>\n
476<\/td>\n28.8.7 date_time()
28.8.8 getpid() <\/td>\n<\/tr>\n
477<\/td>\n28.9 set_config()
28.10 Random routines
28.11 Simulation-related routines <\/td>\n<\/tr>\n
478<\/td>\n28.11.1 simulator_command()
28.11.2 stop_run() <\/td>\n<\/tr>\n
479<\/td>\n28.11.3 get_timescale() <\/td>\n<\/tr>\n
480<\/td>\n29. Predefined file routines library
29.1 File names and search paths
29.2 File handles
29.3 Low-level file methods
29.3.1 add_file_type() <\/td>\n<\/tr>\n
481<\/td>\n29.3.2 close()
29.3.3 flush() <\/td>\n<\/tr>\n
482<\/td>\n29.3.4 open()
29.3.5 read() <\/td>\n<\/tr>\n
483<\/td>\n29.3.6 read_lob()
29.3.7 write() <\/td>\n<\/tr>\n
484<\/td>\n29.3.8 write_lob()
29.3.9 writef() <\/td>\n<\/tr>\n
485<\/td>\n29.4 General file routines
29.4.1 file_age()
29.4.2 file_append() <\/td>\n<\/tr>\n
486<\/td>\n29.4.3 file_copy()
29.4.4 file_delete()
29.4.5 file_exists() <\/td>\n<\/tr>\n
487<\/td>\n29.4.6 file_extension()
29.4.7 file_is_dir() <\/td>\n<\/tr>\n
488<\/td>\n29.4.8 file_is_link()
29.4.9 file_is_readable()
29.4.10 file_is_regular() <\/td>\n<\/tr>\n
489<\/td>\n29.4.11 file_is_temp()
29.4.12 file_is_text() <\/td>\n<\/tr>\n
490<\/td>\n29.4.13 file_rename()
29.4.14 file_size()
29.4.15 new_temp_file() <\/td>\n<\/tr>\n
491<\/td>\n29.4.16 write_string_list()
29.5 Reading and writing structs
29.5.1 read_ascii_struct() <\/td>\n<\/tr>\n
492<\/td>\n29.5.2 read_binary_struct()
29.5.3 write_ascii_struct() <\/td>\n<\/tr>\n
493<\/td>\n29.5.4 write_binary_struct() <\/td>\n<\/tr>\n
494<\/td>\n30. Reflection API
30.1 Introduction
30.1.1 Representation
30.1.2 Structure
30.1.3 Terminology and conventions <\/td>\n<\/tr>\n
495<\/td>\n30.2 Type information
30.2.1 Named entities
30.2.1.1 rf_named_entity
30.2.1.2 rf_type <\/td>\n<\/tr>\n
496<\/td>\n30.2.2 Struct types: rf_struct <\/td>\n<\/tr>\n
497<\/td>\n30.2.3 Struct members <\/td>\n<\/tr>\n
498<\/td>\n30.2.3.1 rf_struct_member
30.2.3.2 rf_field <\/td>\n<\/tr>\n
499<\/td>\n30.2.3.3 rf_deep_attr
30.2.3.4 rf_method <\/td>\n<\/tr>\n
500<\/td>\n30.2.3.5 rf_parameter
30.2.3.6 rf_event <\/td>\n<\/tr>\n
501<\/td>\n30.2.3.7 rf_expect
30.2.3.8 rf_check
30.2.3.9 rf_constraint
30.2.4 Inheritance and when subtypes <\/td>\n<\/tr>\n
502<\/td>\n30.2.4.1 Canonical names
30.2.4.2 Explicit and significant subtypes
30.2.4.3 Generalized relationships <\/td>\n<\/tr>\n
503<\/td>\n30.2.4.4 rf_like_struct
30.2.4.5 rf_when_subtype <\/td>\n<\/tr>\n
504<\/td>\n30.2.5 List types
30.2.5.1 rf_list
30.2.5.2 rf_keyed_list
30.2.6 Scalar types
30.2.6.1 rf_scalar <\/td>\n<\/tr>\n
505<\/td>\n30.2.6.2 rf_numeric
30.2.6.3 rf_enum
30.2.6.4 rf_enum_item
30.2.6.5 rf_bool <\/td>\n<\/tr>\n
506<\/td>\n30.2.6.6 rf_real
30.2.6.7 rf_set
30.2.6.8 rf_string
30.2.7 Port types
30.2.7.1 rf_port
30.2.7.2 rf_simple_port <\/td>\n<\/tr>\n
507<\/td>\n30.2.7.3 rf_buffer_port
30.2.7.4 rf_event_port
30.2.7.5 rf_method_port
30.2.7.6 rf_interface_port
30.2.7.7 rf_tlm_socket
30.2.8 Sequence types
30.2.8.1 rf_sequence
30.2.8.2 rf_bfm_sequence
30.2.8.3 rf_virtual_sequence <\/td>\n<\/tr>\n
508<\/td>\n30.2.9 Template types
30.2.9.1 rf_template
30.2.9.2 rf_template_instance
30.2.10 Macros: rf_macro <\/td>\n<\/tr>\n
509<\/td>\n30.2.11 Routines: rf_routine
30.2.12 Querying for types: rf_manager <\/td>\n<\/tr>\n
510<\/td>\n30.3 Aspect information
30.3.1 Definition elements
30.3.1.1 Extensible entities and layers <\/td>\n<\/tr>\n
511<\/td>\n30.3.1.2 Anomalies of definition elements
30.3.1.3 rf_definition_element <\/td>\n<\/tr>\n
512<\/td>\n30.3.2 Type layers
30.3.2.1 rf_type_layer
30.3.2.2 rf_enum_layer
30.3.2.3 rf_struct_layer <\/td>\n<\/tr>\n
513<\/td>\n30.3.3 Struct member layers
30.3.3.1 rf_struct_member_layer
30.3.3.2 rf_method_layer <\/td>\n<\/tr>\n
514<\/td>\n30.3.3.3 rf_extension_mode
30.3.3.4 rf_event_layer
30.3.3.5 rf_check_layer
30.3.3.6 rf_expect_layer
30.3.3.7 rf_check_action <\/td>\n<\/tr>\n
515<\/td>\n30.3.3.8 rf_constraint_layer
30.3.4 Modules and packages
30.3.4.1 rf_module <\/td>\n<\/tr>\n
516<\/td>\n30.3.4.2 rf_package
30.3.5 Querying for aspects
30.4 Value query and manipulation <\/td>\n<\/tr>\n
517<\/td>\n30.4.1 Types of objects
30.4.2 Values and value holders <\/td>\n<\/tr>\n
518<\/td>\n30.4.3 Object operators <\/td>\n<\/tr>\n
519<\/td>\n30.4.4 List operators <\/td>\n<\/tr>\n
521<\/td>\n31. Predefined resource sharing control structs
31.1 Semaphore methods <\/td>\n<\/tr>\n
522<\/td>\n31.2 How to use the semaphore struct
31.2.1 up() and down() <\/td>\n<\/tr>\n
523<\/td>\n31.2.2 try_up() and try_down()
31.2.3 set_value() and get_value() <\/td>\n<\/tr>\n
524<\/td>\n31.2.4 set_max_value() and get_max_value() <\/td>\n<\/tr>\n
525<\/td>\n31.2.5 lock() and release() <\/td>\n<\/tr>\n
526<\/td>\n32. Intellectual property protection
32.1 Encryption
32.2 Decryption <\/td>\n<\/tr>\n
527<\/td>\n32.3 Reflection API
32.4 Encryption targets <\/td>\n<\/tr>\n
528<\/td>\nAnnex A (informative) Bibliography <\/td>\n<\/tr>\n
529<\/td>\nAnnex B (normative) Source code serialization
B.1 Ordering problem in e <\/td>\n<\/tr>\n
530<\/td>\nB.2 Within a single module
B.2.1 Use scope
B.2.2 Definition order <\/td>\n<\/tr>\n
531<\/td>\nB.3 Importing and dependency <\/td>\n<\/tr>\n
532<\/td>\nB.4 Concrete load order <\/td>\n<\/tr>\n
533<\/td>\nB.5 Visibility scope of preprocessor directives
B.5.1 Overview <\/td>\n<\/tr>\n
534<\/td>\nB.5.2 Cases where order differs
B.5.2.1 Case 1
B.5.2.2 Case 2 <\/td>\n<\/tr>\n
535<\/td>\nB.5.3 Examples <\/td>\n<\/tr>\n
537<\/td>\nAnnex C (informative) Comparison of when and like inheritance
C.1 Summary of when versus like
C.1.1 A simple example of when inheritance <\/td>\n<\/tr>\n
539<\/td>\nC.1.2 A simple example of like inheritance <\/td>\n<\/tr>\n
540<\/td>\nC.2 Advantages of using when inheritance for modeling
C.2.1 Determinant fields can be explicitly referenced <\/td>\n<\/tr>\n
541<\/td>\nC.2.2 Multiple orthogonal subtypes can be used <\/td>\n<\/tr>\n
542<\/td>\nC.2.3 Lists of objects with varying subtypes can be used <\/td>\n<\/tr>\n
543<\/td>\nC.2.4 The struct can be extended later
C.2.5 A new type can be created by simple extension
C.3 Advantages of using like inheritance <\/td>\n<\/tr>\n
544<\/td>\nC.4 When to use like inheritance <\/td>\n<\/tr>\n
545<\/td>\nAnnex D (normative) Name spaces
D.1 The naming problem in e
D.2 Resolution overview
D.2.1 Packages as name spaces
D.2.2 Name spaces for other named entities <\/td>\n<\/tr>\n
546<\/td>\nD.2.3 Name resolution
D.2.4 The use relation
D.2.5 Reserved type names
D.3 Qualified and unqualified names
D.3.1 Name rules <\/td>\n<\/tr>\n
547<\/td>\nD.3.2 Type reference resolution
D.3.3 e_core types
D.4 Use relation <\/td>\n<\/tr>\n
548<\/td>\nD.4.1 Load clusters
D.4.2 Examples
D.4.2.1 Example 1 <\/td>\n<\/tr>\n
549<\/td>\nD.4.2.2 Example 2
D.4.2.3 Example 3 <\/td>\n<\/tr>\n
550<\/td>\nD.5 Built-in APIs
D.5.1 Reflection and name spaces
D.5.2 Coverage callback support <\/td>\n<\/tr>\n
551<\/td>\nD.6 Code comparison <\/td>\n<\/tr>\n
553<\/td>\nAnnex E (informative) Reflection API examples
E.1 Type information interface <\/td>\n<\/tr>\n
554<\/td>\nE.2 Aspect information interface <\/td>\n<\/tr>\n
555<\/td>\nE.3 Value query interface <\/td>\n<\/tr>\n
557<\/td>\nAnnex F (informative) Encryption targets
F.1 Files
F.2 IP Components <\/td>\n<\/tr>\n<\/table>\n","protected":false},"excerpt":{"rendered":"

IEEE Standard for the Functional Verification Language e<\/b><\/p>\n\n\n\n\n
Published By<\/td>\nPublication Date<\/td>\nNumber of Pages<\/td>\n<\/tr>\n
IEEE<\/b><\/a><\/td>\n2016<\/td>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"featured_media":400281,"template":"","meta":{"rank_math_lock_modified_date":false,"ep_exclude_from_search":false},"product_cat":[2644],"product_tag":[],"class_list":{"0":"post-400271","1":"product","2":"type-product","3":"status-publish","4":"has-post-thumbnail","6":"product_cat-ieee","8":"first","9":"instock","10":"sold-individually","11":"shipping-taxable","12":"purchasable","13":"product-type-simple"},"_links":{"self":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product\/400271","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\/400281"}],"wp:attachment":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/media?parent=400271"}],"wp:term":[{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product_cat?post=400271"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product_tag?post=400271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}