Abstract
SystemC is a system-level design and simulation language based on C++. We've been using SystemC for computer organization and design projects for the past several years. Because SystemC is embedded in C++ it contains the powerful abstraction mechanisms of C++ not found in traditional hardware description languages, such as support for object-oriented programming and generic programming (templates). This support for abstraction allows instructors to reinforce standard abstraction concepts such as information hiding, interfaces, and abstract data types, standard fare in a computer science curriculum. Furthermore, embedded software is often written in C++ and SystemC provides threading facilities useful for designing and implementing embedded software.
Notes
1. The motivation for designing SystemC was not for describing gate-level circuits. Most would consider it an abuse to use it in this manner. However, smaller gate-level circuits are canonical and provide simple examples that highlight the capabilities of SystemC, as well as being easy to understand.