1、 IEEE Std 90003-2008 IEEE Std 90003-2008 IEEE Standard for theFunctional Verification Language e Sponsored by the Design Automation Standards Committee IEEE 3 Park Avenue New York, NY 10016-5997 USA 26 August 2011 IEEE Computer Society IEEE Std 1647-2011(Revision ofIEEE Std 1647-2008) IEEE Std 1647-
2、2011(Revision ofIEEE Std 1647-2008)IEEE Standard for the Functional Verification Language eSponsor Design Automation Standards Committeeof theIEEE Computer SocietyApproved 16 June 2011IEEE SA-Standards BoardApproved 17 October 2012American National Standards InstituteThe Institute of Electrical and
3、Electronics Engineers, Inc.3 Park Avenue, New York, NY 10016-5997, USACopyright 2011 by the Institute of Electrical and Electronics Engineers, Inc.All rights reserved. Published 26 August 2011. Printed in the United States of America.IEEE and POSIX are registered trademarks in the U.S. Patent +1 978
4、 750 8400. Permission to photocopy portions of any individual standard for educationalclassroom use can also be obtained through the Copyright Clearance Center.iv Copyright 2011 IEEE. All rights reserved.IntroductionThe e functional verification language is an application-specific programming langua
5、ge aimed at theproblem of verifying functional correctness of hardware and software designs. Simply stated, functionalverification attempts to provide a quantitative answer to the question: How well does the design match thefunctional specification?Functional correctness of chip designs grew in crit
6、icality from the mid-1980s. As design complexity keptgrowing, ad hoc testing methods ran out of steam and a more systematic verification approach wasnecessary. Manually constructed test suites, the early method of choice, became both uneconomical andineffective when scaled up. As a result, many comp
7、anies supplemented manual test suites with pseudo-random generation of input stimulus. Such test generation programs were typically built for a particularproject or a particular architecture. They turned out to be expensive to develop and maintain, but oncefunctional, they would clean up the design
8、in a very thorough way.A key observation made by Yoav Hollander, the creator of e, was that verification environments of differentprojects have a lot in common and yet each verification environment is structured to match a particulardesign specification. Hollanders solution was to create a language
9、that had verification-specific constructsas primitives and the full capabilities of a high-level language for customization. In particular, pseudo-random test generation became a built-in capability of the language. Early prototypes of the language wereexperimented with as early as 1993, showing sig
10、nificant productivity gains.The e language was productized by Verisity, Ltd., in 1996, as part of a functional verification tool suite. Theproliferation of the e language and the growing investment in e-based intellectual property (IP) compelledthe creation of the e steering committee in June of 200
11、2, composed of individuals from Texas Instruments,Rambus, STMicroelectronics, Cisco, Intel, Axis System, STARC, and Verisity. The e steering committeerecommended the e language be standardized through the Institute of Electrical and Electronics Engineers(IEEE). Accepting the recommendation, Verisity
12、 released the rights to the language to the IEEE in June of2003.The e language, in its current form, brings together concepts from many domains. e has a basic object-oriented (OO) programming model, with implicit memory management andsingle inheritance. In this, e is similar to Java.a Beyond objects
13、, e supports aspects, which can be viewed as layers cutting across multiple objects.Adding an aspect to an existing program refines the program by introducing a coherent change to aplurality of objects. e supports constraints as object features. Constraints are used to refine object modeling. Theexe
14、cution model of the language involves resolving constraint systems and picking random valuesthat would satisfy constraint systems. e is a strongly typed language, like Pascal and Modula. e has concurrency constructs and modeling blocks for hierarchical composition, similar to hardwaredescription lan
15、guages (HDLs) like Verilog (see IEEE Std 1364) and VHSIC hardware descriptionlanguage (VHDL) (see IEC/IEEE 61691-1-1).a,bConcurrency in e is synchronous, like in Esterel. e contains a temporal language that borrows from Linear Temporal Logic and Interval TemporalLogic.aJava is a trademark of Sun Mic
16、rosystems, Inc. in the United States and other countries. Verilog is a registered trademark of CadenceDesign Systems, Inc. This information is given for the convenience of users of this standard and does not constitute an endorsement bythe IEEE of these products. Equivalent products may be used if t
17、hey can be shown to lead to the same results.bInformation on references can be found in Clause 2.This introduction is not part of IEEE Std 1647-2011, IEEE Standard for the Functional Verification Language e.Copyright 2011 IEEE. All rights reserved. v e has many built-in constructs aimed at simplifyi
18、ng common programming tasks; built-in support forlists and hashes; and pattern matching and string- and file-manipulation features, which areborrowed from Perl.c The e syntax is extendable with a powerful macro capability.This combination of concepts caters directly to the needs of verification engi
19、neers, removing the need tocobble together multiple components in different languages.As with any programming language, the source of ingenuity is with the programmer. Verification engineersneed sound methodologies, creativity, an inquisitive mind, and a keen eye for poorly specified aspects. Yetexp
20、erience with e shows that when put to good use, the e language fosters productivity and quality results.Notice to usersLaws and regulationsUsers of these documents should consult all applicable laws and regulations. Compliance with theprovisions of this standard does not imply compliance to any appl
21、icable regulatory requirements.Implementers of the standard are responsible for observing or referring to the applicable regulatoryrequirements. IEEE does not, by the publication of its standards, intend to urge action that is not incompliance with applicable laws, and these documents may not be con
22、strued as doing so. CopyrightsThis document is copyrighted by the IEEE. It is made available for a wide variety of both public and privateuses. These include both use, by reference, in laws and regulations, and use in private self-regulation,standardization, and the promotion of engineering practice
23、s and methods. By making this documentavailable for use and adoption by public authorities and private users, the IEEE does not waive any rights incopyright to this document.Updating of IEEE documentsUsers of IEEE standards should be aware that these documents may be superseded at any time by theiss
24、uance of new editions or may be amended from time to time through the issuance of amendments,corrigenda, or errata. An official IEEE document at any point in time consists of the current edition of thedocument together with any amendments, corrigenda, or errata then in effect. In order to determine
25、whethera given document is the current edition and whether it has been amended through the issuanceof amendments, corrigenda, or errata, visit the IEEE Standards Association website at http:/ieeexplore.ieee.org/xpl/standards.jsp, or contact the IEEE at the address listed previously.For more informat
26、ion about the IEEE Standards Association or the IEEE standards development process,visit the IEEE-SA website at http:/standards.ieee.org.cPerl is a registered trademark of Perl, Inc. This information is given for the convenience of users of this standard and does not consti-tute an endorsement by th
27、e IEEE of these products. Equivalent products may be used if they can be shown to lead to the same results.vi Copyright 2011 IEEE. All rights reserved.ErrataErrata, if any, for this and all other standards can be accessed at the following URL: http:/standards.ieee.org/reading/ieee/updates/errata/ind
28、ex.html. Users are encouraged to check this URL forerrata periodically.InterpretationsCurrent interpretations can be accessed at the following URL: http:/standards.ieee.org/reading/ieee/interp/index.html.PatentsAttention is called to the possibility that implementation of this standard may require u
29、se of subject mattercovered by patent rights. By publication of this standard, no position is taken with respect to the existence orvalidity of any patent rights in connection therewith. A patent holder or patent applicant has filed a statementof assurance that it will grant licenses under these rig
30、hts without compensation or under reasonable rates,with reasonable terms and conditions that are demonstrably free of any unfair discrimination to applicantsdesiring to obtain such licenses. Other Essential Patent Claims may exist for which a statement of assurancehas not been received. The IEEE is
31、not responsible for identifying Essential Patent Claims for which alicense may be required, for conducting inquiries into the legal validity or scope of Patents Claims, ordetermining whether any licensing terms or conditions provided in connection with submission of a Letter ofAssurance, if any, or
32、in any licensing agreements are reasonable or non-discriminatory. Users of thisstandard are expressly advised that determination of the validity of any patent rights, and the risk ofinfringement of such rights, is entirely their own responsibility. Further information may be obtained fromthe IEEE St
33、andards Association.Copyright 2011 IEEE. All rights reserved. viiParticipantsAt the time this standard was submitted to the IEEE-SA Standards Board for approval, the IEEEe Functional Verification Language (eWG) Working Group had the following members and observers:Darren Galpin, ChairAmy Witherow, T
34、echnical EditorThe following members of the individual balloting committee voted on this standard. Balloters may havevoted for approval, disapproval, or abstention. Charu AggarwalMunnu BajpaiVictor BermanParag BhattMartin J. BishopDanila ChernetsovKai Moon ChowKeith ChowS. ClaassenJonathan DavidSand
35、eep DesaiThomas DineenSourav DuttaAllan GillardJames GrayRandall GrovesM. HashmiWerner HoelzlJoseph Hupcey IIIPiotr KarockiAsad KhanStanley KrolikoskiBrett G. LammersJim LewisAdam LeyDaniel LindbergGreg LuriFrancoise MartinolleMichael T. McNamaraWilliam MilamRobert MyersAndrew PizialiUlrich PohlIuli
36、an ProfirRobert RobinsonBartien SayogoGil ShultzMark StricklandWalter StrupplerMatan VaxSrinivasa VemuruDavid G. Von BankHenry J. Von BankJovan Rade VujnicJanusz ZalewskiChristoffer AmloHugh BarrassMichael BenjaminVictor BermanParag BhattAvi BlochDanila ChernetsovKeith ChowTommy CooperJacob DanielSa
37、ndeep DesaiStylianos DiamantidisThomas DineenGeorge EconomakosJames GilbSergiu GomaRandall GrovesM. HashmiWerner HoelzlDennis HorwitzJoseph Hupcey IIIPiotr KarockiJake KarrfaltYaron KashaiEran KeydarZeev KirshenbaumBrett G. LammersJim LewisGuoliang LiuWilliam LumpkinsGreg LuriChris MacionskiRiccardo
38、 MarianiArthur MarrisMichael T. McNamaraGary MichelMichael MirmakRobert MyersMichael S. NewmanWilliam PaulsenSteven PearlmutterGregory PetersonRobert PetersonAndrew PizialiVikram PunjWilliam SchilpJohn ShieldsLori Kate SmithMichael StellfoxMark StricklandAjayharsh VarikatMatan VaxSrinivasa VemuruDav
39、id G. Von BankHenry J. Von BankPaul Workviii Copyright 2011 IEEE. All rights reserved.When the IEEE-SA Standards Board approved this standard on 16 June 2011, it had the followingmembership:Richard H. Hulett, Chair John Kulick, Vice Chair Robert M. Grow, Past Chair Judith Gorman, Secretary*Member Em
40、eritusAlso included are the following nonvoting IEEE-SA Standards Board liaisons:Satish K. Aggarwal, NRC RepresentativeRichard DeBlasio, DOE RepresentativeMichael Janezic, NIST RepresentativeDon MessinaIEEE Standards Program Manager, Document DevelopmentJoan M. WooleryIEEE Standards Program Manager,
41、 Technical Program DevelopmentMasayuki AriyoshiWilliam Bartley Ted BurseClint Chaplin Wael DiabJean-Philippe Faure Alexander Gelman Paul Houz Jim Hughes Joseph L. Koepfinger*David J. LawThomas Lee Hung Ling Oleg Logvinov Ted Olsen Gary Robinson Jon Walter Rosdahl Sam Sciacca Mike Seavey Curtis Sille
42、r Phil Winston Howard L. Wolfman Don Wright Copyright 2011 IEEE. All rights reserved. ixContents1. Overview 11.1 Scope 11.2 Purpose. 11.3 Verification environments . 11.4 Basic concepts relating to this standard. 21.5 Conventions used. 81.6 Use of color in this standard 91.7 Contents of this standar
43、d 102. Normative references. 133. Definitions, acronyms, and abbreviations 133.1 Definitions . 133.2 Acronyms and abbreviations . 154. e basics. 174.1 Lexical conventions . 174.2 Syntactic elements . 244.3 Struct hierarchy and name resolution 294.4 Ranges 364.5 Operator precedence 364.6 Evaluation o
44、rder of expressions. 364.7 Bitwise operators . 384.8 Boolean operators 394.9 Arithmetic operators 414.10 Comparison operators 424.11 String matching 464.12 Extraction and concatenation operators. 484.13 Scalar modifiers . 524.14 Parentheses. 534.15 list.method() 534.16 Special-purpose operators 545.
45、 Data types 595.1 e data types. 595.2 Untyped expressions 645.3 Assignment rules 655.4 Real data type. 685.5 Precision rules for numeric operations 705.6 Automatic type casting 725.7 Defining and extending scalar types735.8 Type-related constructs 756. Structs, subtypes, and fields. 816.1 Structs ov
46、erview. 816.2 Defining structs: struct 82x Copyright 2011 IEEE. All rights reserved.6.3 Extending structs: extend type 836.4 Restrictions on inheritance . 836.5 Extending subtypes. 846.6 Creating subtypes with when . 846.7 Extending when subtypes. 866.8 Defining fields: field . 876.9 Defining list f
47、ields 896.10 Projecting list of fields 916.11 Defining attribute fields . 917. Units 937.1 Overview 937.2 Defining units and fields of type unit 957.3 Unit attributes 997.4 Predefined methods of any_unit 1007.5 Unit-related predefined methods of any_struct . 1027.6 Unit-related predefined routines 1
48、048. Template types. 1078.1 Defining a template type . 1078.2 Instantiating a template type . 1098.3 Template types and reflection 1108.4 Template errors . 1118.5 Limitations . 1128.6 Templates versus macros . 1129. e ports. 1159.1 Introduction to e ports 1159.2 Using simple ports 1169.3 Using buffe
49、r ports. 1189.4 Using event ports 1199.5 Using method ports. 1209.6 Defining and referencing ports.1229.7 Port attributes 1279.8 Buffer port methods 1399.9 MVL methods for simple ports 1419.10 Global MVL routines . 1479.11 Comparative analysis of ports and tick access . 1509.12 e port binding 1519.13 TLM interface ports in e. 15210. Constraints and generation. 16110.1 Types of constraints 16110.2 Generation concepts . 16110.3 Type constraints 17510.4 Defining constraints 17710.5 Invoking generation 185Copyright 2011 IEEE. All rights reserved. xi11. Event