Why this Book

The first quesTIon any reader should ask is “Why this book?” We decided

to write this book after learning SystemC and after using minimal documents

to help us through the quest of becoming comfortable with the language’s

finer points. After teaching several SystemC classes, we were even more

convinced that an introductory book focused on the SystemC language was

needed. We decided to contribute such a book.

This book is about SystemC. It focuses on enabling the reader to master

the language. The reader will be introduced to the syntax and structure of the

language, and the reader will also learn about the features and usage of

SystemC that makes it a tool to shorten the development cycle of large

system designs.

We allude to system design techniques and methods by way of examples

throughout the book. Several books that discuss system-level design

methodology are available, and we believe that SystemC is ideally suited to

implement many of these methods. After reading this resource, the reader

should not only be adept at using SystemC constructs efficiently, but also

have an appreciaTIon of how the constructs work together and how they can

be used to create high performance simulaTIon models.

We believe there is enough informaTIon to convey about the SystemC

language to justify this stand-alone book. We hope you agree. We also

believe that there is enough material for a second book that focuses on using

SystemC to implement these system-level design methods. With readerencouragement, the authors hope to start on a second book that delves

deeper into the application of the language (after recovering from the writing

of this book).

Prerequisites for this Book

As with every technical book, the authors must write the content

assuming a basic level of understanding; this assumption avoids repeating

most of an engineering undergraduate curriculum. For this book, we

assumed that the reader has a working knowledge of C++ and minimal

knowledge of hardware design.

For C++ skills, we do not assume that the reader is a “wizard”. Instead,

we assumed that you have a good knowledge of the syntax, the objectoriented

features, and the methods of using C++. The authors have found

that this level of C++ knowledge is universal to current or recent graduates

with a computer science or engineering degree from a four-year university.

Interestingly, the authors have also found that this level of knowledge is

lacking for most ASIC designers with 10 or more years of experience. For

those readers, assimilating this content will be quite a challenge but not an

impossible one.

For readers without any understanding of C++ or for those who may be

rusty, we recommend finding a good C++ class at a community college or

taking advantage of many of the online tutorials. For a list of sources, see

Chapter 15. We find (from our own experience) that those who have learned

several procedural languages (like FORTRAN or PL/I) greatly

underestimate the difficulty of learning a modern object-oriented language.

To understand the examples completely, the reader will need minimal

understanding of digital electronics.

Systemc:From The Ground Up