(SystemC using transactional-level modelling (TLM/ESL) is in a later section).
SystemC is a free library for C++ for hardware SoC modelling. »Download from www.systemc.org
It includes (at least):
Originally aimed as an RTL replacement, for low-level hardware modelling.
Now being used for high-level (esp. transactional) modelling for architectural exploration.
Also now being used as an implementation language with its own synthesis tools.
Problem: hardware engineers are not C++ experts but they can be faced with confusing C++ error messages.
Benefit: General-purpose behavioural C code, including application code and device drivers, can all be modelled in a common language.