Modular SystemC
In-house Training Options
Auf DeutschModular SystemC is a set of 4 modules related to SystemC™ (IEEE 1666-2005) aimed at fulfilling team-based training requirements for engineers from a range of technical backgrounds, i.e. hardware and software engineers and system architects. Presented from a vendor independent perspective, but supporting a wide range of EDA tools, Modular SystemC is only available for in-house or customer dedicated training.
Doulos has a world-wide lead in independent SystemC know-how having been active in SystemC-based methods since 2000. We have delivered SystemC training and support to engineers in more than 170 companies world-wide - including direct involvement with methodology and tool developers in such companies as ARM, Cadence, CoWare, Mentor Graphics and Synopsys. Modular SystemC has been developed by the authors of the IEEE 1666™ SystemC® Language Reference Manual and the TLM-2.0 User Manual.
Effective use of SystemC for modeling requires a 3-step learning path to acquire the necessary skills. A fourth module is available for engineers wishing to use SystemC for verification.
- Step 1 - Essential C++ for SystemC (2 days) takes engineers who have a basic knowledge of the C programming language and gives them a fast-track way to acquire a good grounding in C++, which is an essential foundation for learning SystemC. Engineers wanting a more complete understanding of C++ should consider the 5-day Comprehensive C++ class.
- Step 2 - Fundamentals of SystemC (3 days) builds on the foundation laid by Essential C++ to teach engineers the SystemC language. It describes the core SystemC v2.2 class library and its application for systems, communication, hardware and software at the transaction-level, and refinement towards hardware-software implementation.
- Step 3 - SystemC Modeling Using TLM-2.0 (3 days) builds on the foundation laid by the Fundamentals of SystemC to prepare the engineer for practical project readiness using transaction-level with SystemC and TLM-2.0.
- Expert SystemC Verification (2 days) teaches the use of SystemC for testbench automation using a constrained random verification methodology. This course, supporting version 1.0p2 of the SystemC Verification Library (SCV) teaches delegates how to debug and validate models, and exploit the library. It requires excellent C++ knowledge.
Customizing your SystemC training
Based on these modules, team-based and in-house training can be customised to fit the content, scope and duration needed to best-fit a specific customer requirement. In particular, the following SystemC topics can be emphasised:- Hardware synthesis from SystemC, including both RTL and behavioural synthesis
- An in-depth focus on the mechanisms used in the SystemC class libraries. This is aimed at specialists who wish to develop their own channel models and at those integrating the SystemC classes into other simulation environments.
- Using the SystemC Verification library (SCV)
- Building a transaction level model of a typical bus-based platform with multiple masters at various levels of abstraction (PV, PVT, CA etc)
Workshops comprise approximately 50% of class time and are based around carefully designed exercises to reinforce and challenge the extent of learning. They can be provided in the context of the customer's choice of tools, and supplemental tool training can be arranged by Doulos, in collaboration with specific vendors, if required.
Who should attend?
- Hardware design engineers who wish to become skilled in the practical use of SystemC for digital hardware design and verification.
- System engineers and architects who wish to become skilled in the practical use of SystemC for system level modelling.
- Software engineers who already have good knowledge of C/C++, but wish to acquire some practical experience in the use of the SystemC class libraries.
- Hardware, software and systems engineers who are familiar with the SystemC class library and want to learn to use SystemC more effectively for Transaction-Level Modelling.
Pre-requisites
- Essential C++ for SystemC - delegates need basic knowledge of the C programming language; in particular, familiarity with C functions, variables, data types, operators, and statements. Recent hands-on experience of another similar programming language such as Java, or behavioural-style HDLs is advantageous. This module is suitable for people with no previous knowledge of C++ or as a refresher for those with limited knowledge of C.
- Fundamentals of SystemC - prior attendance of the Doulos 'Essential C++' class (or equivalent) is required. Before attending, delegates with solid experience of C++ and object-oriented programming should check their knowledge against the 'SystemC C++ Pre-requisites checklist' available from Doulos. This class is suitable for electronic hardware, software or systems engineers, but in order to gain maximum benefit from this class, delegates should be active users of either a high-level software programming language (ideally C++) or a hardware description language (VHDL or VerilogŪ)
- SystemC Modeling Using TLM-2.0 - Prior attendance of Essential C++ and Fundamentals of SystemC, or equivalent (Comprehensive SystemC comprises both these modules). Hardware or embedded software engineers with a background in Verilog, VHDL or C will usually need to atttend both Comprehensive SystemC and SystemC Modeling Using TLM-2.0 within a few weeks or months. Engineers with an excellent working knowledge of C++ (or some other object-oriented programing language) may be able to fast-track some of the SystemC learning requirement.
- Expert SystemC Verification - Prior attendance of Comprehensive SystemC (or equivalent). Delegates must have a good working knowledge of C++ and SystemC. Prior attendance of the Doulos Comprehensive SystemC training course (or equivalent) is required. No previous knowledge of constrained random verification is needed, as this will be introduced during the course.
Training Materials
Doulos Course materials are renowned for being the most comprehensive and user friendly available. Their style, content and coverage is unique in the HDL training world, and has made them sought after resources in their own right. Fees include:- Fully indexed course notes creating a complete reference manual
- Workbook full of practical examples and solutions to help you apply your knowledge
- Doulos SystemC Golden Reference Guide for language, syntax, semantics and tips.
Structure and Content
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/OFunctional 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 • deleteThe 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 classesClasses 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 resolutionDAY 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 membersInheritance
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 initializationVirtual Functions
Delve deeper into object-oriented programming techniques • Overriding methods • Virtual functions • Polymorphism • Run-time type identification • Abstract base classes • Multiple inheritanceFurther 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++.Fundamentals of SystemC (3 days)
DAY 1
Become proficient in using the features of SystemCIntroduction 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 modellingGetting 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 Hierarchy
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 • Event queues • wait and next_triggerDAY 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 toolsSystemC 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 typesInterfaces 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 interfacesDAY 3
Exploration of the application of Transaction-Level ModellingBus 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_exportRefinement
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 refinementAdapters
Channel refinement using adapters • Events versus event finders • Instantiating and binding adaptersTransaction-Level Modeling
The OSI Transaction-Level Modeling Standards • TLM-1.0 method calls • Unidirectional interfaces • TLM-2.0 requirements • Abstraction levels • Use cases • Coding styles • The architecture of TLM-2.0 • The interoperability layer • Utilities • Initiators, targets, and interconnect • Generic payload • ExtensionsSupplementary 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 • Clocked threads and resets • RestrictionsOverview of the SystemC Verification Library
Introduction to and aims of SCV • Constrained random verification methodology • Extended data types to support introspection • Randomization • Transaction RecordingSystemC 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)Doulos acknowledges trademarks and registered trademarks are the property of their respective owners.
Back to top



