Comprehensive SystemC ist ein 5-tägiges Training zur Einführung in SystemC™, eine C++ Klassenbibliothek zur System-Level-Modellierung. SystemC wird heute typischerweise verwendet, um Systemmodelle zu beschreiben, die sowohl Hardware- als auch Softwarekomponenten enthalten.
Das Kursprogramm umfasst die Grundelemente von SystemC und ihre Anwendung für das Transaction-Level Modelling Der Kurs basiert auf Version 2.2 der SystemC Klassenbibliothek.
Der Kurs besteht aus 2 Modulen. Entwickler haben die Möglichkeit, die Module einzeln oder als kompletten 5-Tages-Kurs zu besuchen. Hardwaredesignern, die nicht auf umfassende Erfahrungen im Einsatz von C und C++ zurückgreifen können, wird die Teilnahme an beiden Modulen empfohlen.
- Essential C++ for SystemC (1.-2. Tag) 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.-5. Tag) baut auf dieser Grundlage auf und bereitet die Entwickler auf die praktische Anwendung von SystemC für Transaction-Level Modelling vor. Der Kurs beschreibt die Klassenbibliothek v2.2 und ihre Anwendung für Systemmodellierung, Kommunikation, Hardware und Software auf dem Transaction-Level sowie Verfeinerungen in der Hardware-Software-Implementierung.
Die Einzelheiten zum OSCI TLM 2.0 Standard werden in einem separaten Folgetraining,
SystemC Modeling using TLM-2.0, abgedeckt.
Die praktischen Übungen nehmen ca. 50% der Unterrichtszeit ein und basieren auf sorgfältig ausgearbeiteten Aufgaben, die die Kursteilnehmer in ihren neu erworbenen Kenntnissen herausfordern und das Erlernte untermauern.
Doulos engagiert sich seit 2000 im Bereich SystemC-basierte Methoden und nimmt damit eine weltweit führende Rolle im toolübergreifenden Know-how für SystemC ein. Wir haben in über 170 Unternehmen weltweit Trainingskurse für SystemC abgehalten und Entwickler bei ihrer Projektarbeit unterstützt - bis hin zur aktiven Beteiligung an der Methoden- und Toolentwicklung in Unternehmen wie ARM, Cadence, CoWare, Mentor Graphics und Synopsys.Zielgruppe
Struktur und Inhalt
Essential C++ for SystemC (2 Tage)
Tag 1
Learn about the differences between C and C++
From C to C++
Header files • Function overloading • Operator overloading • Pass-by-reference • const reference • Default arguments • I/O streams • Namespaces • Stream manipulators • Stream operator overloading • Standard string class • Stringstreams • Static, automatic, and dynamic storage • new and delete
Classes and Objects
Learn the principles of object-based design • Classes and objects • Inline members versus separate compilation • Public and private class members • Member functions • Scope resolution
Special Member Functions
Constructors • Destructors • Copy constructors • Initialization versus assignment • Pointers versus objects • The assignment operator • this • Constant objects and members
Vectors
Learn to make the most of the built-in standard classes • The C++ standard library • Vectors versus arrays • Common vector operations • Iterators
Tag 2
Master the subtleties of object-oriented programming in C++
Subobjects
Class relationships • Subobjects versus pointers • Initializing members • Initializing const members
Inheritance
Learn to exploit the power of object-oriented programming • Derived classes • Inheritance • Protected members • Up- and down-casting
Virtual Functions
Delve deeper into object-oriented programming techniques • Overriding methods • Virtual functions • Polymorphism • Identifying types at run-time • Examples from SystemC • Abstract base classes
Templates and Conversions
Advanced C++ features used in the SystemC class libraries • Function templates • Class templates • Examples from SystemC • Implicit conversions • User-defined conversions
Extra Features
Friends • Static members • Order of initialization • Multiple inheritance • Exceptions
Fundamentals of SystemC (3 Tage)
Tag 3
Become proficient in using the features of SystemC
Introduction
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 modeling
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 Channels
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 • wait and next_trigger
Tag 4
Learn to apply SystemC to modeling data, communication and busses.
SystemC Data Types
Data types for bit-accurate and hardware modeling • Signed and unsigned integers • Limited and finite precision integers • Assignment and truncation • Bit and part selects • Bit and logic vectors • Hexadecimal numbers
Debugging and Tracing
Learn about the facilities provided by SystemC to ease debugging and diagnostics • The report hander • Customizing report actions • Writing trace (vcd) files
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 • How to make the most of ports, channels and interfaces • sc_export
Bus modeling
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
Tag 5
Exploration of the application of Transaction-Level modeling
Additional Features
sc_signal_resolved • register_port • sc_process_handle • Event finders • default_event • pos vs. posedge vs. posedge_event • sc_event_queue • request_update and update • Passing arguments to spawned processes • terminated_event • sc_set_stop_mode
Introduction to TLM-2.0
Transaction Level Modeling • Virtual platforms • The architecture of TLM-2.0 • TLM-2.0 coding styles • The interoperability layer • TLM-2.0 utilities • Initiator, target, and interconnect • Initiator and target sockets • Generic payload • Response status
Further TLM-2.0
Software execution and simulation • The time quantum • b_transport • Timing annotation • Temporal decoupling • The quantum keeper • Base protocol rules • DMI • Simple sockets • Extensions • Interoperability
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 • Synthesis restrictions • Clocked threads and resets
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
IEEE 1666-2011
An overview of the latest version of SystemC, that is, IEEE 1666-2011 and SystemC 2.3
Doulos acknowledges trademarks and registered trademarks are the property of their respective owners