Electronic System Design using C and SystemC
Content
In today's world of short product cycles the design of electronic systems demands concurrent design of the hardware and software components. Over a very short time period SystemC has evolved as the de-facto industry standard for modeling and validating hardware and software components of electronic systems. SystemC builds upon the powerful ANSI C++ computer software language and adds means for modeling concurrency (parallelism), communication mechanisms, reactivity for synchronizing concurrent processing, and a concept of time. Thus SystemC can be seens as a C++ class library plus an event-based simulation kernel.
After a refresher of the syntax of ANSI C++ and principles of object-oriented programming, the syntax of SystemC is introduced. Models of Computation are presented that are commonly used to model at various levels of abstraction: Register-Transfer Level, Behavioral Level, Transaction Level, etc. SystemC models may differ in their accuracy in certain aspects: Pin-level accuracy, timing accuracy, structural accuracy, functional accuracy, communication accuracy. The student will learn methods for trading-off fast development of a SystemC model vs. accuracy and simulation speed. Methods for refining models to gain more accuray in certain areas are show, together with formal processes that have proven to be efficient.
To complement the class many examples of SystemC code will be shown during the lectures. Hands-on exercises will take those examples to the next level of understanding and will enable the student to develop, compile and debug own SystemC models. Goal of this lecture is the introduction into the design of integrated systems. Beside technical implications and methods also some economical aspects of future technologies for system integration will be covered. This lecture and tutorial will provide an in-depth introduction into SystemC as an Electronic System Design Language for modelling and implementing complex electronic systems.
Prerequisites
A sound knowledge in digital circuits (Boolean algebra, implementation into logic gates) and computer arithmetic is required as well as a basic understanding of programming environments.