Esperan Logo
Esperan is internationally recognised as a high quality provider of training in VHDL, SystemVerilog, SystemC, PSL, SVA, OVM, TLM and for courses covering design, verification, and PCB methodologies.
Esperan Schedule Menu
Esperan Course Menu
Esperan Contact Menus
Esperan UK contact information Phone +44 1344 865436
Fax +44 1344 865347
Email:
info@esperan.com

Contacts for other regions
C++ for Verification Engineers

Related classes: SystemC Fundamentals

 

Duration | Requirements | Agenda

Scheduled Classes...
Germany Munich 13-Sep-2010 2 days Register Interest
Germany Munich 08-Nov-2010 2 days Register Interest
Sweden Kista 06-Dec-2010 2 days Register Interest
UK Bracknell 25-Oct-2010 2 days Register Interest
UK Bracknell 06-Dec-2010 2 days Register Interest

Contact Esperan for more information or to request an on-site class.


Testimonials

"Nicely focussed ... covers the essentials of C++ [for verification] without any unnecessary extras"


Introduction

 Why use C++ for Verification?

C++ is ubiquitous in software engineering. It is used from driver development all the way to the creation of operating systems. With the recent advances in EDA verification methods, there has been a increasing need for a programming language that supports high level advanced design and analysis paradigms.
C++ natively promotes design maintainability as well a design reuse. In addition, C++ benefits from a wealth of available resources for efficient data manipulation and generation, encryption/decryption algorithms, file processing and more.


Overview

Esperan´s C++ for Verification covers all of the C++ language features essential for the creation of advanced programs, including templated classes, inheritance, virtual functions, late binding and the Standard Template Library (STL). This training minimises learning time and confusion by giving students concise, focused guide to specific topics.


This course can be used to as a precursor to the
Fundamentals of SystemC class for engineers without C++ experience.


Objectives

  • To explain the concepts of object-oriented programming.
  • To provide a solid background in C++ and an understanding of the language features essential for writing advanced applications.
  • To describe the use of data processing, file processing and STL through worked examples and hands on laboratories.
  • To give you hands-on practical experience in applying C++ to verification tasks.

Duration

2 days. This course can also be combined with the Fundamentals of SystemC class to create a 5 day SystemC class for engineers without C++ experience.


Requirements

Delegates must have a good working knowledge of a sequential programming language - ideally C, but alternatively VHDL, Verilog or Perl are all useful. Familiarity with hardware design is helpful, but not essential.


Description

This course contains an overview of essential C++ features, such as concepts, constructs, organization, pitfalls, and standard libraries. which are required to become a profiicient C++ coder.

 

The course covers:-

C++ language basics

Syntax, constructors and operators for C++, including file access and essential library resources. Also compiling, linking and debugging programs.

Object-Oriented Overview

The basics of object declaration and instantiation, including encapsulation, inheritance, composition and polymorphism.

Practicalities of C++ Object-Orientation

Including in-depth examinations of single and multiple inheritance; binding, abstract classes and virtual functions in polymorphism and template classes.

 

 


Agenda


  • Overview
    • Program Structure
    • Additional C++ Libraries
    • Variable Declarations
    • Pre-defined/Enumerated Data Types
    • C++ Type Checking and Type Conversions
    • Data Structures
    • Pointer Variables
    • new and delete Operators
    • Pointers and Structures
    • Safe Pointer Usage: boost::shared_ptr
    • Array Data Types and vectors
    • Compiling and Linking
    • Make files
    • Debugging C++
    • Cin/Cout Debug
    • GDB Debugger
    • Control Statements
    • Logical and Relational Operators
    • Arithmetic Operators
    • Data Processing Worked Example
  • Functions
    • Function Declaration
    • Return Parameter Detals
    • Variables Visibility Scope
    • Default Parameters
    • Pointer Parameters
    • References as Parameters
    • Function Overloading
    • Inline Functions
    • Pointers to Functions
    • Template Functions
  • File Access
    • Working with Files
    • EOF and File Modes
    • Read and Write Binary Files
    • Simple read() and write() Functions Example
    • Advanced read() write() Functions Example
    • Transaction Recording Example
  • Object-Orientation
    • Hardware Modeling Analogy
    • Encapsulation
    • Inheritance
    • Composition
    • Polymorphism
  • Abstract Data Type
    • Loose Data Function Binding
    • Tight Data Function Binding
    • Data Members
    • Member Functions
    • Private Public Visibility
    • Object Instantiation & Message Passing
    • Pointer to Objects
    • Constructors
    • Array of Objects
    • Copy Constructor
    • Class Destructor
  • Advanced Class Operations
    • The this Pointer
    • Operator Overloading
    • Shallow Copy Versus Deep Copy
    • Data type conversion
    • Transaction ADT Overloading Example
  • Containers and Algorithms
    • The STL Library
    • std::vector Container
    • std::map Container
    • std::list Container
    • STL Iterators
    • std::deque Container
    • STL Algorithms
    • std::find Algorithm
    • std::search
    • std::sort Algorithm
    • Simple Parser Example
    • std::remove Algorithm
    • std::remove_if Algorithm Inheritance
    • Inheritance Principles
    • Inherited Members Visibility
    • Protected Class Members
    • Public Private and Protected
  • Inheritance
    • Derived Class Initialization
    • Overriding Versus Overloading
    • Scoping Conflict Resolution
  • Polymorphism
    • Early Binding
    • Late Binding
    • Abstract Base Class
    • Pure Virtual Functions
    • Polymorphism Example
  • Multiple Inheritance
    • Class Initialization
    • Scope Conflicts Resolution
    • Repeated Inheritance Phenomenon
    • Virtual Inheritance
  • Template Classes
    • Principle of Templates
    • Template Class Example
    • Template arguments
    • Function Templates
    • Overloading Template Functions