1 SystemVerilog Enhancement Requests Daniel Schostak Principal Engineer February 26 th 2010.

Slides:



Advertisements
Similar presentations
PHP functions What are Functions? A function structure:
Advertisements

Object Oriented Programming with Java
Programming Languages and Paradigms
Coding Standard: General Rules 1.Always be consistent with existing code. 2.Adopt naming conventions consistent with selected framework. 3.Use the same.
Abstract Data Types Data abstraction, or abstract data types, is a programming methodology where one defines not only the data structure to be used, but.
Chapter 14: Overloading and Templates C++ Programming: Program Design Including Data Structures, Fifth Edition.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Programming with Java © 2002 The McGraw-Hill Companies, Inc. All rights reserved. 1 Chapter 12 More OOP, Interfaces, and Inner Classes.
Chapter 14: Overloading and Templates
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
June 1, 2000 Object Oriented Programming in Java (95-707) Java Language Basics 1 Lecture 3 Object Oriented Programming in Java Language Basics Classes,
1 Chapter 6 Inheritance, Interfaces, and Abstract Classes.
1 Generics and Using a Collection Generics / Parameterized Classes Using a Collection Customizing a Collection using Inheritance Inner Classes Use of Exceptions.
Chapter 15: Operator Overloading
Design Synopsys System Verilog API Donations to Accellera João Geada.
Java Methods By J. W. Rider. Java Methods Modularity Declaring methods –Header, signature, prototype Static Void Local variables –this Return Reentrancy.
Principles of Computer Programming (using Java) Review Haidong Xue Summer 2011, at GSU.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 14: Overloading and Templates.
Chapter 12: Adding Functionality to Your Classes.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 15: Overloading and Templates.
Chapter 6 Class Inheritance F Superclasses and Subclasses F Keywords: super F Overriding methods F The Object Class F Modifiers: protected, final and abstract.
OOPs Object oriented programming. Based on ADT principles  Representation of type and operations in a single unit  Available for other units to create.
C++ for Engineers and Scientists Second Edition Chapter 6 Modularity Using Functions.
C#C# Classes & Methods CS3260 Dennis A. Fairclough Version 1.1 Classes & Methods CS3260 Dennis A. Fairclough Version 1.1.
New and active ways to bind to your design by Kaiming Ho Fraunhofer IIS.
Programming Languages and Paradigms Object-Oriented Programming (Part II)
Algorithm Programming Bar-Ilan University תשס"ח by Moshe Fresko.
CSE 425: Object-Oriented Programming I Object-Oriented Programming A design method as well as a programming paradigm –For example, CRC cards, noun-verb.
1 Generics and Using a Collection Generics / Parameterized Classes Using a Collection Customizing a Collection using Inheritance Inner Classes Use of Exceptions.
1 Introduction Modules  Most computer programs solve much larger problem than the examples in last sessions.  The problem is more manageable and easy.
CS212: Object Oriented Analysis and Design Lecture 7: Arrays, Pointers and Dynamic Memory Allocation.
Inheritance in the Java programming language J. W. Rider.
Tuc Goodwin  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
C# Classes and Inheritance CNS 3260 C#.NET Software Development.
Topics AliasesSubprograms Generics & Configurations.
Introduction to Java Chapter 7 - Classes & Object-oriented Programming1 Chapter 7 Classes and Object-Oriented Programming.
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
OOP in C++ CS 124. Program Structure C++ Program: collection of files Source (.cpp) files be compiled separately to be linked into an executable Files.
Object Oriented Programming
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 9 Java Fundamentals Objects/ClassesMethods Mon.
Chapter 7: Class Inheritance F Superclasses and Subclasses F Keywords: super and this F Overriding methods F The Object Class F Modifiers: protected, final.
CS-1030 Dr. Mark L. Hornick 1 Basic C++ State the difference between a function/class declaration and a function/class definition. Explain the purpose.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 15: Overloading and Templates.
Ch. 5 Ch. 51 jcmt Summer 2003Programming Languages CSE3302 Programming Languages (more notes) Summer 2003 Dr. Carter Tiernan.
Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses  Keywords: super F Overriding methods  The Object Class  Modifiers: protected,
Java Software Solutions Lewis and Loftus Chapter 9 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Enhanced Class Design -- Introduction.
 In the java programming language, a keyword is one of 50 reserved words which have a predefined meaning in the language; because of this,
Chapter 13: Overloading and Templates. Objectives In this chapter, you will – Learn about overloading – Become familiar with the restrictions on operator.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
Verification Presentation to SystemVerilog Basic Committee Peter Flake Nov 15, 2002.
Reference Types CSE301 University of Sunderland Harry R Erwin, PhD.
1 Enhanced Class Design Introduction zWe now examine several features of class design and organization that can improve reusability and system elegance.
C# Fundamentals An Introduction. Before we begin How to get started writing C# – Quick tour of the dev. Environment – The current C# version is 5.0 –
 2006 Pearson Education, Inc. All rights reserved Templates.
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 10 Java Fundamentals Objects/ClassesMethods.
Chapter 5 Introduction to Defining Classes Fundamentals of Java.
Friend Class Friend Class A friend class can access private and protected members of other class in which it is declared as friend. It is sometimes useful.
Introduction to C++ Systems Programming.
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
This pointer, Dynamic memory allocation, Constructors and Destructor
Nested class.
METHODS AND BEHAVIORS AKEEL AHMED.
Java Programming Language
Lecture 22 Inheritance Richard Gesick.
MSIS 655 Advanced Business Applications Programming
Interfaces.
UNIT I OBJECT ORIENTED PROGRAMMING FUNDAMENTALS
Corresponds with Chapter 5
Presentation transcript:

1 SystemVerilog Enhancement Requests Daniel Schostak Principal Engineer February 26 th 2010

2 Contents 1. Introduction 2. Efficiency Enhancements 3. Expressiveness Enhancements 4. Construct / Language Enhancements 5. Examples of Ambiguities 6. Conclusion

3 Introduction  What is ARM’s interest in SystemVerilog?  It is one of the Hardware Verification Languages that we use  What does ARM use SystemVerilog for?  Constrained Random Verification  Functional Coverage  High Level Assertions for Formal Verification  What is my involvement with SystemVerilog?  Co-developed methodology and associated internal class library for constrained random verification  Developer of constrained random SystemVerilog testbench (execution unit for an ARMv7-A CPU)  Verification Lead for ARMv7-A CPU project with SystemVerilog as main HVL from initial development to tape-out

4 Efficiency Enhancements 1. Ability to copy pointers to arrays (currently have to wrap array with class so can copy object handle) 2. Ability to copy pointers to functions (currently have to wrap function with class so can copy object handle) 3. Ability to pass expressions to const ref function arguments (extension of 4. If object being randomized contains empty list/null object, constraints that would apply to objects in list/non-null object should not be considered (cannot know what constraints object instance itself would have)

5 Expressiveness Enhancements 1. Chain function invocations ( 2. Allow declarations at any point in a block statement rather than only at the beginning (otherwise end up creating dummy block statements) 3. Use of new() in non-declaration contexts (e.g. q.push_back(new) or q.push_back(new )) 4. new with { … } (otherwise have to explicitly create constructor that provides this behaviour) 5. “others” in distribution constraints (otherwise end up specifying blanket range including values already specified hoping this does not skew distribution) 6. No specific order requirement for keywords in declarations

6 Class Construct Enhancements 1. Some way of deriving class from multiple parents  Aspect Oriented Programming  C++ Multiple Inheritance  Java style interfaces (class can implement multiple interfaces) 2. Some way to document and enforce overriding restrictions  Parent class specifies derived class cannot override function  Derived class specifies not overriding function in parent class 3. Parse function implementations in parameterized classes only if implementation is used 4. Allow use of import with static identifiers declared in class (e.g. enumerated type identifiers) 5. Friend classes 6. Provide equivalent of final block for class declarations

7 Hierarchy Related Enhancements 1. Treat hierarchical references to parameter values as elaboration time constants (facilitate parameter sharing – see 2. SystemVerilog event variable can be used as pointer to Verilog static event (allows decoupling of hierarchy in similar way to virtual interfaces) 3. Ability to refer to global namespace from inside package (avoid package proliferation) 4. Ability to “import” signal declarations from scope bound to (avoid explicit port list when binding module of assertions) 5. Allow use of modports when instantiating interfaces with bind directives 6. Syntax for lexical scope references in bind directive

8 Miscellaneous Enhancements 1. Variable width part selects ( 2. Allow casting_type to be compile time constant expression (in particular class parameter value) 3. Ability to use.* for parameter value assignments (special case of 4. Reopening of packages ( 5. System task for determining seed simulation started with (useful for constructing unique file names) 6. More specific `__FILE__ type compiler directives  `__CLASS__ in form of string literal  `__FUNCTION__ in form of string literal

9 Examples of Ambiguities 1. Elaboration order of bind directives (e.g. bind interfaces into DUT and then reference bound interfaces in succeeding bind directive; can also have effect on random stability) 2. Format of $typename return value should be standardized 3. Order of randomization method invocations if randomizing nested objects 4. Should default argument be repeated in class method out-of-block declaration? 5. Result of $sformatf(“%0 b”, value) if value[ ] === x (is string representation padded with leading zero?) 6. Should.name() for escaped identifier include “\”? 7. Should $value$plusargs(“ =%s”, value) set value to “” or “0” for + = / + =“”?

10 Conclusion  Top Five Enhancements 1. Ability to derive class from multiple parents 2. Copy pointers to arrays 3. Expressiveness enhancements 4. Ambiguity resolution 5. Extend support for generic programming