Correct Designs Course Syllabus

Title: SystemC Modeling with SCV and TLM

Description: This course provides the student with an in-depth introduction to all of the features of SystemC including its application specific libraries, the SystemC Verification (SCV) and Transaction Level Modeling (TLM) libraries. SystemC requires a knowledge of many advanced C++ features so it first provides an overview of key C++ and object oriented programming (OOP) concepts that are used heavily by SystemC. It then covers the core SystemC library and fundamental SystemC concepts. Finally it shows how SystemC can be applied to modeling and verification using the TLM and SCV libraries. The class is a balanced mix of lecture and practical exercises. The exercises are targeted to be useful in real world applications. Students will have the opportunity to take home all of the material for use as a reference.

 

This class is an advanced programming class and does not focus on introductory software development topics. It is also not an object oriented programming (OOP) class although it makes heavy use of OOP principles. Due to the broad audience, the programming aspects of the class may be straightforward to students with a software development background but quite challenging to many with a logic design or architecture background. The initial C++ portion of the class is required in order to ensure the effectiveness of the SystemC specific training. If the students are already proficient in C++ then pacing can be tailored so that the C++ topics are used as a refresher.

 

Length: 5 days       

Audience: Software developers, architects, design and verification engineers

Prerequisites: Knowledge of C or C++ and structured programming. Proficiency with a text editor such as emacs or vi. Some experience with design modeling such as RTL design or high level modeling.

Software Requirements: None. Class can be taught using the open source OSCI SystemC simulator or with Synopsys VCS, Mentor QuestaSim, or Cadence IUS (ncsim).

Related Courses: Verification Using SystemVerilog, SystemVerilog for RTL Designers

Learning Objectives:

In this course the student will:

Agenda:

Day 1, 2

Day 3

Day 4

 

Day 5

 

 

Outline:

 

l       C++

      Functions

        Pass by value/reference

        Default arguments

        Exceptions

      Variables

        Built in data types

        const

        void

        Deprecated C constructs

      Streams

        Standard library

        Namespaces

      User defined data types

        public, protected, private

        Special member functions

        Automatic type conversions

        this pointer

        Operator overloading

        Function overloading: ostream& operator <<

        static and const members and methods

        OOO design principles

        Inline functions

      STL

        String, vector, list, set, map, ostringstream

        Iterators

        Algorithms

      Variable scoping and memory allocation

        Constants and literals

        Stack, heap, globals

        Scoping operator

        Dynamic allocation

l       new/delete

l       new[]/delete[]

      Inheritance

        Function overloading

        operator overloading

        Polymorphism via virtual methods

        Multiple inheritance

        Virtual multiple inheritance

        Pure virtual base classes

        Interfaces

        Run time type identification

        Type casting: static_cast, dynamic_cast

      Templates

        Templated functions

        Templated classes

l       SystemC

      Basics

        Namespaces

        Modules

        sc_time

        clocks

        events

        Processes

l       sc_method

l       sc_thread

l       sensitivity lists

l       dynamic sensitivity

        sc_main

        Module instantiation

        Verilog on top

        SystemC on top

      Reporting and debug

        sc_report

        sc_timestamp

        gdb, Eclipse CDT, ddd, etc.

      SC Data types

        sc_int<>, sc_uint, sc_bigint<>, sc_biguint<>

        sc_bv, sc_logic, sc_lv

      Scheduler

        Events

        Time

        Scheduler

      Communication

        Interfaces

l       Blocking versus non-blocking methods

        Channels

        Primitive channels

        Included channels

l       sc_signal, sc_buffer, sc_signal_resolved, sc_fifo

l       Required methods to use in included channels

        Deferred binding

l       Port, exports

l       Port binding policies

l       Event finders

l       register_port

      TLM Interfaces

      TLM Channels

      Constrained random stimulus generation using SCV

      Extras, as needed or requested, time allowing

        Dynamic processes

        sc_trace

        refinement

        adapters

        register_port

        default_event

        writing event finders

        writing primitive channels

 
©2009 Correct Designs, Inc. All rights reserved.