Modular SystemC

Advanced Level

view dates and locations
Bei Modular SystemC™ handelt es sich um eine Reihe von Modulen zu SystemC, die auf die Anforderungen teambasierter Trainings für Entwickler unterschiedlicher technischer Bereiche (d. h. Hardware- und Softwareentwickler sowie Systemarchitekten) zugeschnitten sind. Der Kurs umfasst zwei Grundlagenmodule und zwei SystemC-Module, die je nach Bedarf der einzelnen Teams kombiniert werden können.

Modular SystemC ist ein praxisorientiertes Training, das auf der einen Seite unabhängig vom Toolhersteller ist, aber auf der anderen Seite in den praktischen Workshops eine Auswahl von führenden EDA-Tools unterstützt. Das Modular SystemC Baukastentraining wird nur inhouse bzw. als bedarfsorientiertes Training angeboten. Die Module beinhalten:
  • Essential C++ for SystemC (2 Tage) vermittelt Entwicklern mit Grundkenntnissen in der Programmiersprache C in einer Schnelleinführung eine fundierte Grundlage für C++ sowie die erforderlichen Grundkenntnisse zum Erlernen von SystemC.
  • Fundamentals of SystemC (3 Tage) baut auf den Grundlagen aus Essential C++ auf und bereitet die Entwickler auf die praktische Anwendung von SystemC für die Transaction-Level-Modellierung vor. Dieses Kursmodul beschreibt den Einsatz der SystemC v2.2 Klassenbibliothek für Systemmodellierung, Kommunikation, Hardware und Software auf Transaction Level sowie die Verfeinerung zur Hardware-Software-Implementierung.
  • Expert SystemC Modelling (2 Tage) baut auf den Grundlagen von Fundamentals of SystemC auf und beschreibt den neuen Transaction-Level-Modellierungs-Standard (TLM) im Detail. Damit wird erlernt, wie man SystemC effizient für die Codierung für Compilation, Simulationsgeschwindigkeit und Reuse von IP einsetzt.
  • Expert SystemC Verification (2 Tage) lehrt die Verwendung von SystemC für Testbench-Automatisierung auf Basis einer Constrained-Random-Verifikationsmethode. Das Training, das auf der Version 1.0p2 von SCV basiert, zeigt den Kursteilnehmern das Debuggen und Validieren von Modellen sowie die optimale Nutzung der SystemC Verification Library (SCV).

Basierend auf diesen Modulen kann das Inhouse- und teambasierte Training ideal den jeweiligen Trainingsbefürfnissen in Bezug auf Inhalt, Umfang und Dauer des Trainings angepasst werden. Die nachfolgend aufgeführten SystemC-Themen können auf Wunsch besonders berücksichtigt werden:
  • Hardwaresynthese mit SystemC, einschließlich RTL und Verhaltenssynthese.
  • Ausführliche Vorstellung der Mechanismen der SystemC Klassenbibliotheken. Dieser Aspekt richtet sich an Spezialisten, die eigene Modelle entwickeln und die SystemC-Klassen in andere Simulationsumgebungen integrieren möchten
  • Einsatz der SystemC Verification Library (SCV).
  • Erstellen eines Transaction-Level-Modelles einer typischen busbasierten Plattform mit mehreren Masters auf verschiedenen Abstraktionsebenen (PV, PVT, CA, etc.)

Die Workshops basieren auf sorgfältig durchdachten Übungen mit dem Ziel, das Erlernte anzuwenden und zu festigen. Dieser Praxisteil nimmt etwa 50% der Unterrichtszeit ein. In den Workshops wird die freie Tool-Wahl der Kursteilnehmer berücksichtigt, und bei Bedarf kann auch zusätzliches Tool-Training in Zusammenarbeit mit dem Toolhersteller arrangiert werden. Wenden Sie sich bitte an Doulos, wenn Sie spezielle Tools benötigen.

Zielgruppe

  • Hardwaredesign-Entwickler, die praktische Kenntnisse zu SystemC für digitales Hardwaredesign und Verifikation erwerben möchten
  • Systemdesigner und -architekten, die Kenntnisse im praktischen Einsatz von SystemC für die Systemmodellierung erwerben möchten
  • Softwareingenieure, die bereits fundierte Kenntnisse in C/C++ besitzen, die jedoch Praxiserfahrungen mit den SystemC Klassenbibliotheken sammeln möchten
  • Hardware-, Software- und Systemingenieure, die mit der SystemC Klassenbibliothek vertraut sind und den effektiveren Umgang mit SystemC für Transaction-Level Modellierung erlernen möchten.

Kursinhalte

  • Notwendige C++ Sprachmerkmale für die Verwendung von SystemC
  • Objektorientierte Programmiertechniken, wie sie in den SystemC Klassenbibliotheken verwendet werden
  • Die SystemC Grundelemente, Datentypen und Channels
  • Die effektive Nutzung des SystemC Simulators und SCV zum Debuggen und Validieren Ihrer Modelle
  • Die Eigenschaften von SystemC Version 2.2 und dem OSCI TLM Interface Standard für Transaction-Level-Modellierung
  • Entwickeln von Transaction-Level-Modellen für System-on-Chip Plattformkomponenten wie Bussen, Mastern und Slaves
  • Die Wahl eines passenden Abstraktionslevels für ein Transaction-Level-Modell
  • Verfeinerung von SystemC-Modellen auf verschiedenen Abstraktionsebenen
  • Einführung in die Hardwaresynthese mit SystemC
  • Codieren für Compilation, Simulationsgeschwindigkeit und IP-Reuse
  • Die SCV Klassen und Möglichkeiten
  • Zusätzliche Funktionen von Cadence Verification Extensions (CVE 5.3s001)

Voraussetzungen

  • Essential C++ for SystemC: Die Kursteilnehmer sollten über Grundkenntnisse in der Programmiersprache C verfügen, insbesondere Vertrautheit mit Funktionen, Variablen, Datentypen, Operatoren und Anweisungen in C. Praktische Erfahrungen mit einer ähnlichen Programmiersprache wie z.B. Java oder Behavioural-Style HDLs sind außerdem von Vorteil. Dieses Modul eignet sich für Teilnehmer ohne Vorkenntnisse in C++ oder als Auffrischungskurs für diejenigen, die geringe Vorkenntnisse in C haben.
  • Fundamentals of SystemC: Praktische Erfahrungen mit C++ und objektorientierten Programmierkonzepten sind erforderlich; Grundkenntnisse in Hardwaredesign werden empfohlen. Die vorhergehende Teilnahme an dem Doulos 'Essential C++' Kurs (oder einem vergleichbaren Training) ist erforderlich. Teilnehmer, die bereits Erfahrungen in C++ haben, sollten vorher ihr Wissen mit den 'SystemC C++ Voraussetzungen' vergleichen, die bei Doulos erhältlich sind. Dieser Kurs eignet sich für Hardware-, Software- oder System-Ingenieure im Elektronikbereich. Um den maximalen Nutzen aus diesem Training zu ziehen, sollten die Kursteilnehmer aktive Nutzer einer Softwareprogrammierhochsprache (idealerweise C++) oder einer Hardwarebeschreibungssprache (VHDL oder Verilog) sein.
  • Expert SystemC Modelling: Die Kursteilnehmer sollten fundiertes Grundwissen in C++ und der SystemC Klassenbibliothek haben. Die Teilnahme am Doulos Comprehensive SystemC Kurs (oder vergleichbarem Training) wird vorausgesetzt.
  • Expert SystemC Verification: Die Kursteilnehmer sollten fundiertes Grundwissen in C++ und SystemC haben. Die Teilnahme am Doulos Comprehensive SystemC Kurs (oder vergleichbarem Training) wird vorausgesetzt. Vorkenntnisse in der Constrained-Random-Verifikation sind nicht notwendig, da diese Methodik im Training erläutert wird.

Kursunterlagen

Die Doulos Kursunterlagen sind für ihren umfassenden Informationsgehalt und die benutzerfreundliche Präsentation allgemein bekannt. In ihrem Aufbau, Inhalt und ihrer Themenbehandlung sind sie einzigartig im HDL-Trainingsbereich, was sie zu begehrten Nachschlagewerken hat werden lassen. In den Kursgebühren sind enthalten:
  • Kursskripte mit vollständigem Stichwortverzeichnis, die ein umfassendes Referenz­handbuch darstellen
  • Ein Arbeitsbuch, mit vielen praktischen Beispielen und Lösungen als Unterstützung bei der Wissensanwendung
  • Doulos SystemC Golden Reference Guide für Sprache, Syntax, Semantik und Tipps

Kursaufbau und -Inhalt

Essential C++ for SystemC (2 Tage)

Tag 1

Learn about the differences between C and C++

From C to C++

The features added to C by C++ and the ANSI C-1999 standard • const • bool • Header files • Namespaces • The global and standard namespaces • Stream I/O

Functional and Pointers

Learn how functions and dynamic memory allocation have changed in C++ • Pass-by-reference • Function prototypes • Default arguments • Function overloading • Operator overloading • Static, automatic and dynamic storage • new • delete

The C++ Standard Library

Learn to make the most of the built-in standard classes • Container classes • Examples of using the standard vector class • Examples of using the standard string and stringstream classes

Classes and Objects

Learn the principles of object-based design • Information hiding • Abstract data types • Classes and objects • Public and private class members • Member functions • Scope resolution

Tag 2

Master the subtleties of object-oriented programming in C++

Class Members

Master the C++ mechanisms associated with classes • Constructors • Destructors • Copy constructors • Pointers versus objects • Friends • this • Overloading operators as members • Static members • Constant objects and members

Inheritance

Learn to exploit the power of object-oriented programming • Class relationships • Initializing sub-objects • The default constructor • Derived classes • Inheritance • Protected members • Up- and down-casting • Order of initialization

Virtual Functions

Delve deeper into object-oriented programming techniques • Overriding methods • Virtual functions • Polymorphism • Run-time type identification • Abstract base classes • Multiple inheritance

Further C++ Features

Advanced C++ features used in the SystemC class libraries • Function templates • Class templates • Implicit conversions • User-defined conversions • Exceptions

Fundamentals of SystemC (3 Tage)

Tag 3

Become proficient in using the features of SystemC

Introduction to SystemC

Learn the background to SystemC and how SystemC fits into the system-level design flow • The architecture of the SystemC release • The benefits and risks of adopting SystemC • The objectives of transaction-level modelling

Getting Started

Learn how SystemC source code is structured and how to organise files • SystemC header files and namespaces • Compiling and executing a SystemC model

Modules and Hierarchy

How to describe the structural connections between modules • Modules • Ports • Processes • Signals • Methods • Primitive channels • Module instantiation • Port binding

Processes and Time

Describing concurrency and the passage of time • SC_METHOD • SC_THREAD • Event finders • Static and dynamic sensitivity • Time • Events • Clocks • Dynamic processes

The Scheduler

Gain an insight into how SystemC manages the scheduling of processes and events • Starting and stopping simulation • Elaboration and simulation callbacks • The phases of simulation • Event notification • Event queues • wait and next_trigger

Tag 4

Learn to apply SystemC to modelling data, communication and busses.

Debugging and Tracing

Learn about the facilities provided by SystemC to ease debugging and diagnostics • Debugging techniques • The standard reporting mechanism • Error handling • Writing trace (vcd) files • Tracing buried signals and local variables • Using waveform display tools

SystemC Data Types

Data types for bit-accurate and hardware modelling • Signed and unsigned integers • Limited and finite precision integers • Assignment and truncation • Type conversion • Bit and part selects • Concatenation • Bit and logic vectors • Hexadecimal numbers • Avoiding common pitfalls • Bus resolution • Fixed point types

Interfaces and Channels

Learn how channels are used to abstract communication and create fast simulation models • Hierarchical, primitive and minimal channels • Interface method calls • SystemC interfaces • Port-less channel access • The SystemC object hierarchy • The class sc_port • Registering ports • How to make the most of ports, channels and interfaces

Tag 5

Exploration of the application of Transaction-Level Modelling

Bus Modelling

Learn the techniques required to write and use bus models in SystemC • Master and slave interfaces • The execution context of interface method calls • Blocking and non-blocking methods • Using events and dynamic sensitivity within channels • Multi-ports • Port binding policies • sc_export

Refinement

An example of refinement from a C algorithm through untimed and timed SystemC models down to a mixed hardware-software implementation • SystemC wrappers • Timing annotation • Using sc_buffer • Structural refinement, communication refinement, and data refinement

Adapters

Channel refinement using adapters • Events versus event finders • Instantiating and binding adapters

Transaction-Level Modelling

The transaction-level modelling space • The functional, architecture, programmers and verification views • TLM principles • Transactions versus transfers • Passing request and response objects • The OSCI TLM standard • The standard blocking, non-blocking and transport interfaces • Implementing the transport and protocol layers

Supplementary Subjects

Fixed Point Types

Fixed point word length and integer word length • Quantization modes • Overflow modes • Fixed point context • The type cast switch • Utility methods

Overview of SystemC Synthesis

RTL versus behavioural synthesis technology • The work of the OSCI synthesis working group • Synthesizable data types • Clocked threads and resets • Restrictions

Overview of the SystemC Verification Library

Introduction to and aims of SCV • Constrained random verification methodology • Extended data types to support introspection • Randomization • Transaction Recording

Expert SystemC Modelling (2 Tage)

Tag 1

Introduction - Transaction-Level Modelling

Definition of TLM • TLM abstraction levels and use cases • The Functional, Architectural, Programmers and Verification Views • Principles of TLM • Implementing transactions using unidirectional transfers and copy semantics • Blocking and non-blocking function calls • Transport layer modelling and the OSCI TLM standard

SystemC Reprise

A reprise of SystemC features useful for TLM • Hierarchical, primitive and minimal channels • Using ports and exports • Features of the sc_interface class • Implementing design rule checks • Creating specialised ports • Creating and using event finders • User-defined primitive channels • Spawning dynamic processes • Process termination

The Programmers View

The assumptions behind the PV use case • Creating a deterministic system model • Synchronisation between multiple masters • PV versus PVT • The bidirectional blocking transport interface • Passing request and response objects • Implementing PV masters and slaves • Implementing the PV convenience layer of initiator ports and slave base classes • Implementing a PV router • The TAC protocol

The Architectural View

AV characteristics • Modelling architectures with two-ended TL- channels • Active versus passive models • The unidirectional blocking and non-blocking interfaces • The OSCI TLM request-response channel and FIFO channel • The OSCI TLM interface inheritance hierarchy • Using master and slave exports

Tag 2

AV Timing

The OCP TLM APIs • Annotating timing onto the protocol layer • Modelling latency and recovery times • Explicit versus implicit timing models • PV-AV adapters and the OSCI transport channel

Arbitration and Routing

Blocking versus non-blocking arbiter implementations • The generic OSCI TLM arbiter • Creating sensitivity to multiple channels • Implementing TLM routers • Transport layer plug-and-play

The Cycle Accurate Level

CA characteristics • Two-phase simulation semantics and the request-update mechanism • Using sc_signals • CA coding tricks and traps • PV-CA adapters

Creating SystemC IP

Optimising compilation speed • Optimising simulation speed • Selecting data types and channels • Hiding implementation details in deployed IP • Forward declarations • Optional ports • Parameterised modules • Issues with class templates • Using the non-templated base classes

Expert SystemC Verification (2 Tage)

Verification Methodology

Black and White Box Testing • Simulation and coverage • Verification Methodology Overview • What is Testbench Automation? • How SystemC and SCV fit in to verification • Obtaining SCV

Data Introspection

Extensions to data • Static vs Dynamic extensions • Extensions components • Extending built-in data types • Extending User Defined Data Types • User-defined data types with private attributes • Accessing Static Data Extensions

Randomization

Randomization • Dynamic extensions • Shared (reference-counted) pointers • Smart Pointers • Randomizing user defined data • Weighted distributions using bags • Weighted distributions using keep • Reproducibility • Using Seed Files

Constraints

Why we need constraints • Hard vs Soft • Creating constraints - scv_constraint_base • Constraining a simple data type • Constraining a user data type • Enabling and disabling constraints • Methods vs attributes • Overloading next() • Hierarchical Constraints

Transaction Recording

Requirements for transaction recording • Stream, generators, databases • Creating output • Transaction attributes • Using the transaction database

Other SCV Features

Using SCV_REPORT • The HDL Connection API • SCV data types (scv_sparse_array)

SystemC 2.2 Dynamic Threads

Dynamic Thread Applications • Spawning Threads and Methods • Setting spawn options • Spawning functions • Spawning member functions • scx_barrier

Cadence Verification Extensions (CVE) [optional]

CVE Wizards • Connecting to ncsim • Recording to an SDI database • Dynamic Thread Creation • Other data types (smart queues)




No public course dates are currently scheduled

Please contact Doulos to schedule a public course to suit you, or to discuss onsite training.

Price on request


Back to top