Modular SystemC
Transcrição
Modular SystemC
Version: m7_CE Modular SystemC Inhouse Trainingsoptionen TM 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. Effective SystemC Usage Transaction level skills SystemC skills C++ skills SystemC Modeling Using TLM-2.0 Fundamentals of SystemC Expert SystemC Verification Essential C++ STEP 1 STEP 2 Verification skills STEP 3 • Essential C++ for SystemC (2 Tage) vermittelt Ingenieuren mit Grundkenntnissen in der Programmiersprache C in einer Schnelleinführung eine fundierte Grundlage in C++ sowie die erforderlichen Grundkenntnisse zum Erlernen von SystemC. • Fundamentals of SystemC (3 Tage) baut auf den Grundlagen von Essential C++ auf und bereitet die Kursteilnehmer auf die praktische Anwendung von SystemC für die Transaction-LevelModellierung 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) Aufbauend auf dem Doulos Kurs Comprehensive SystemC werden Entwickler in diesem Training auf Praxisprojekte mit Transaction-Level Modelling mit SystemC und TLM-2.0 vorbereitet. Expert SystemC Verification (2 Tage) Tel: +49 (0)511 277 1340 Email: [email protected] Web: www.doulos.com Version: m7_CE Modular SystemC Inhouse Trainingsoptionen • Expert SystemC Verification ( 2 Tage) Expert SystemC Verification (2 Tage) Expert SystemC lehrt die Verwendung von SystemC für Testbench-Automatisierung auf Basis einer ConstrainedRandom-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 ToolTraining in Zusammenarbeit mit dem Toolhersteller arrangiert werden. Wenden Sie sich bitte an Doulos, wenn Sie spezielle Tools benötigen. Zielgruppe • • • • Hardware-Design-Ingenieure, die den praktischen Umgang mit SystemC für digitales HardwareDesign und Verifikation erlernen möchten. Systemingenieure und –architekten, die den praktischen Umgang mit SystemC für System-LevelModellierung erlernen möchten. Software-Ingenieure, die bereits fundierte Kenntnisse in C/C++ besitzen und zusätzlich praktische Erfahrungen 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 Tel: +49 (0)511 277 1340 Email: [email protected] Web: www.doulos.com Version: m7_CE Modular SystemC Inhouse Trainingsoptionen 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: 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-RandomVerifikation sind nicht notwendig, da diese Methodik im Training erläutert wird. Kursunterlagen Die Doulos Kursunterlagen sind für ihren umfassenden Informationsgehalt und die sehr benutzerfreundliche Präsentation allgemein bekannt. In ihrem Aufbau, Inhalt und ihrer Themenbehandlung sind sie einzigartig im HDL-Schulungsbereich, 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. Struktur und Inhalt Step 1 - Essential C++ for SystemC (2 days) DAY 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 Functions and Pointers Learn how functions and dynamic memory allocation have changed in C++ • Pass-by-reference • Tel: +49 (0)511 277 1340 Email: [email protected] Web: www.doulos.com Version: m7_CE Modular SystemC Inhouse Trainingsoptionen 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 DAY 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 subobjects • 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 Additional and more detailed topic coverage is available in Comprehensive C++. Please ask for a syllabus. Step 2 - Fundamentals of SystemC (3 days) DAY 1 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 Tel: +49 (0)511 277 1340 Email: [email protected] Web: www.doulos.com Version: m7_CE Modular SystemC Inhouse Trainingsoptionen 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 DAY 2 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 DAY 3 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 Tel: +49 (0)511 277 1340 Email: [email protected] Web: www.doulos.com Version: m7_CE Modular SystemC Inhouse Trainingsoptionen sc_buffer • Structural refinement, communication refinement, and data refinement Adapters Channel refinement using adapters • Events versus event finders • Instantiating and binding adapters Transaction-Level Modeling The transaction-level modeling 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 Step 3 - SystemC Modeling Using TLM-2.0 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 TLM2.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 • Requestresponse channel TLM-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 protocol Blocking Transport Interface Blocking transport interface • Timing annotation • Temporal decoupling • Quantum keeper • Global quantum • Synchronization-on-demand • Loosely-timed coding style Tel: +49 (0)511 277 1340 Email: [email protected] Web: www.doulos.com Version: m7_CE Modular SystemC Inhouse Trainingsoptionen DAY 2 Generic Payload Generic payload attributes • Mutability • Command, address and data attributes • Byte enables • Streaming • Response status • Generic payload memory management Non-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 interconnect Convenience Sockets Simple sockets • b/nb conversion • Tagged sockets • Multi-sockets • Coding interconnects and address translation • Hierarchical binding • Passthrough sockets Direct 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 type DAY 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 extensions Endianness 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 speed Protocol 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 extensions Analysis ports Analysis interface • Analysis port • Subscribers • When to deep-copy transaction objects Other 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 extensions. Tel: +49 (0)511 277 1340 Email: [email protected] Web: www.doulos.com