Modular SystemC
Inhouse Trainingsoptionen
In English
Bei Modular SystemC™ handelt es sich um eine Reihe von Modulen zu SystemC, die auf die Anforderungen teambasierter Schulungen für Entwickler unterschiedlicher technischer Bereiche (d. h. Hardware- und Softwareentwickler sowie Systemarchitekten) zugeschnitten sind. Der Kurs umfasst zwei Grundlagenmodule und drei SystemC-Module, die je nach Bedarf der einzelnen Teams kombiniert werden können.
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.
Für den effektiven Einsatz von SystemC für Modellierung ist ein dreistufiger Lernpfad sinnvoll, um die nötigen Fähigkeiten zu erlangen. Für Ingenieure, die SystemC für die Verifikation einsetzen möchten, ist zusätzlich ein viertes Modul verfügbar.
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.
Für den effektiven Einsatz von SystemC für Modellierung ist ein dreistufiger Lernpfad sinnvoll, um die nötigen Fähigkeiten zu erlangen. Für Ingenieure, die SystemC für die Verifikation einsetzen möchten, ist zusätzlich ein viertes Modul verfügbar.
- 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.
- SystemC Modeling Using TLM-2.0 (3 Tage)Die Kursteilnehmer sollten fundiertes Grundwissen in C++ und der SystemC Klassenbibliothek haben. Die Teilnahme am Doulos Comprehensive SystemC Kurs (oder vergleichbarem Training) wird vorausgesetzt. Die Kursteilnehmer sollten fundiertes Grundwissen in C++ und der SystemC Klassenbibliothek haben. Die Teilnahme am Doulos Comprehensive SystemC Kurs (oder vergleichbarem Training) wird vorausgesetzt. Entwickler von Hardware oder embedded Software, die bislang eher mit Verilog, VHDL oder C gearbeitet haben, müssen in der Regel innerhalb einiger Wochen oder Monate sowohl den Kurs Comprehensive SystemC (mit Essential C++ und Fundamentals of SystemC) als auch den Kurs SystemC Modeling using TLM-2.0 belegen.
- 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.
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.
- SystemC Modeling Using TLM-2.0: SystemC Modeling Using TLM-2.0: Die Kursteilnehmer sollten fundiertes Grundwissen in C++ und der SystemC Klassenbibliothek haben. Die Teilnahme am Doulos Comprehensive SystemC Kurs (oder vergleichbarem Training) wird vorausgesetzt. Die Kursteilnehmer sollten fundiertes Grundwissen in C++ und der SystemC Klassenbibliothek haben. Die Teilnahme am Doulos Comprehensive SystemC Kurs (oder vergleichbarem Training) wird vorausgesetzt. Entwickler von Hardware oder embedded Software, die bislang eher mit Verilog, VHDL oder C gearbeitet haben, müssen in der Regel innerhalb einiger Wochen oder Monate sowohl den Kurs Comprehensive SystemC (mit Essential C++ und Fundamentals of SystemC) als auch den Kurs SystemC Modeling using TLM-2.0 belegen.
- 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 Referenzhandbuch 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 days)
Day 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 deleteClasses 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 resolutionSpecial Member Functions
Constructors • Destructors • Copy constructors • Initialization versus assignment • Pointers versus objects • The assignment operator • this • Constant objects and membersVectors
Learn to make the most of the built-in standard classes • The C++ standard library • Vectors versus arrays • Common vector operations • IteratorsDay 2
Master the subtleties of object-oriented programming in C++Subobjects
Class relationships • Subobjects versus pointers • Initializing members • Initializing const membersInheritance
Learn to exploit the power of object-oriented programming • Derived classes • Inheritance • Protected members • Up- and down-castingVirtual Functions
Delve deeper into object-oriented programming techniques • Overriding methods • Virtual functions • Polymorphism • Identifying types at run-time • Examples from SystemC • Abstract base classesTemplates and Conversions
Advanced C++ features used in the SystemC class libraries • Function templates • Class templates • Examples from SystemC • Implicit conversions • User-defined conversionsExtra Features
Friends • Static members • Order of initialization • Multiple inheritance • ExceptionsAdditional and more detailed topic coverage is available in Comprehensive C++.
Fundamentals of SystemC (3 days)
Day 1
Become proficient in using the features of SystemCIntroduction
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 modelingGetting Started
Learn how SystemC source code is structured and how to organise files • SystemC header files and namespaces • Compiling and executing a SystemC modelModules and Channels
How to describe the structural connections between modules • Modules • Ports • Processes • Signals • Methods • Primitive channels • Module instantiation • Port bindingProcesses and Time
Describing concurrency and the passage of time • SC_METHOD • SC_THREAD • Event finders • Static and dynamic sensitivity • Time • Events • Clocks • Dynamic processesThe 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_triggerDay 2
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 numbersDebugging and Tracing
Learn about the facilities provided by SystemC to ease debugging and diagnostics • The report hander • Customizing report actions • Writing trace (vcd) filesInterfaces 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_exportBus 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 policiesDay 3
Exploration of the application of Transaction-Level modelingAdditional 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_modeIntroduction 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 statusFurther 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 • InteroperabilitySupplementary Subjects
Fixed Point Types
Fixed point word length and integer word length • Quantization modes • Overflow modes • Fixed point context • The type cast switch • Utility methodsOverview of SystemC Synthesis
RTL versus behavioural synthesis technology • The work of the OSCI synthesis working group • Synthesizable data types • Synthesis restrictions • Clocked threads and resetsOverview of the SystemC Verification Library
Introduction to and aims of SCV • Constrained random verification methodology • Extended data types to support introspection • Randomization • Transaction RecordingIEEE 1666-2011
An overview of the latest version of SystemC, that is, IEEE 1666-2011 and SystemC 2.3SystemC Modeling Using TLM-2.0 (3 days)
DAY 1
Introduction
Role of SystemC and TLM • Evolution of TLM within OSCI • TLM requirements and use cases • Coding styles • TLM-2.0 structure and architecture • Interoperability layer • Utilities • The OSCI TLM-2.0 release kit and documentation
TLM-1.0
Modeling principles • Blocking versus non-blocking interfaces • Unidirectional interfaces • Bidirectional interfaces • Request and response objects • Convenience ports • TLM FIFO interfaces • Request-response channelTLM-2.0 Architecture
Initiators, targets, and interconnect • Initiator and target sockets • Pass-by-reference • Forward and backward paths • TLM-2 core interfaces • Blocking versus non-blocking transport • Standard socket classes • Socket binding • Introduction to the generic payload and base protocolBlocking Transport Interface
Blocking transport interface • Timing annotation • Temporal decoupling • Quantum keeper • Global quantum • Synchronization-on-demand • Loosely-timed coding styleDAY 2
Generic Payload
Generic payload attributes • Mutability • Command, address and data attributes • Byte enables • Streaming • Response status • Generic payload memory managementNon-blocking Transport Interface
Non-blocking transport interfaces • tlm_sync_enum • Forward, backward and return paths • Phases • AT timing model • Base protocol rules • Early completion • Pre-emption • AT timing annotation • Payload event queues • Approximately-timed coding style • Request and response exclusion rules • Back-pressure • AT interconnectConvenience Sockets
Simple sockets • b/nb conversion • Tagged sockets • Multi-sockets • Coding interconnects and address translation • Hierarchical binding • Passthrough socketsDirect Memory and Debug Transport Interface
Direct memory versus debug interfaces • Direct memory interface • DMI transaction type • DMI descriptor • Rules for granting and denying DMI • Generic payload DMI hint • Address translation for DMI transactions • Debug transport interface • Debug transport transaction typeDAY 3
Extensions
Kinds of extension · The extension mechanism • Generic payload extension methods • Extension base class • Low-level extension programming • deep_copy_from • update_extensions_from • Extension memory management • Auto extensions • Sticky extensions • Memory-manager-agnostic extensions • Instance-specific extensionsEndianness
TLM-2 endianness principles • Organisation of the data array • Mixed-endian systems • Address alignment issues • Part-word transfers • Width conversions • Endianness helper functions • Endianness conversion functions • Arithmetic mode • Byte order mode • Tuning for simulation speedProtocol types
tlm_phase • Extended phases • Ignorable phases • Protocol types • tlm_base_protocol_types • Defining new traits classes • Guidelines for protocol creation • Bridges • Bus snooping using DMI extensionsAnalysis ports
Analysis interface • Analysis port • Subscribers • When to deep-copy transaction objectsOther examples
Source code examples to use in your own projects • AT initiator types • AT target types • Permutations of the forward, backward and return paths • Full AT interconnect implementation • Implementing exclusion rules and transaction queuing • Mixed AT/LT components • Base protocol checker • Atomic operations and transaction locking using extensionsExpert SystemC Verification (2 days)
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 SCVData 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 ExtensionsRandomization
Randomization • Dynamic extensions • Shared (reference-counted) pointers • Smart Pointers • Randomizing user defined data • Weighted distributions using bags • Weighted distributions using keep • Reproducibility • Using Seed FilesConstraints
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 ConstraintsTransaction Recording
Requirements for transaction recording • Stream, generators, databases • Creating output • Transaction attributes • Using the transaction databaseOther SCV Features
Using SCV_REPORT • The HDL Connection API • SCV data types (scv_sparse_array)SystemC 2.1 Dynamic Threads
Dynamic Thread Applications • Spawning Threads and Methods • Setting spawn options • Spawning functions • Spawning member functions • scx_barrierCadence Verification Extensions (CVE) [optional]
CVE Wizards • Connecting to ncsim • Recording to an SDI database • Dynamic Thread Creation • Other data types (smart queues)
Back to top


