Hardware modeling with SystemC
This website will teach you how to design two basic untimed hardware models using the SystemC library.
Event driven models
In an untimed simulation, progress is made between blocking events, rather than between clock cycles.
Modules, representing hardware constructs, are connected with each other via FIFO pipes, mimicking wire and bus interfaces.
Each FIFO is usually constructed to hold multiple items. These items are the input, that a blocked thread is waiting for.
As a matter of policy, each thread processes all the input that's available to it, and makes as much progress as is algorithmically correct, before blocking on an anticipated future event or input, and by that allowing other parallel threads to run.
An event driven simulation is simpler to write, and faster to run, than a clock-based simulation.
The two models are:
- A Producer-Consumer relationship, that is controlled by a Master module.
- A network of nodes connected through a router whose number of input and outputs is a parameter, that's provided during built time.
Utilities library
Commonly used functionality is encapsulated in a utilities library, and both models make use of it, e.g. command line parsing.
Build system
All code is built on Linux, using a non-recursive Makefile method, although you can build it with other methods and on any OS.
Download
The models, utilities library and all Makefiles, are packaged into a single downloadable file.
Event driven models
In an untimed simulation, progress is made between blocking events, rather than between clock cycles.
Modules, representing hardware constructs, are connected with each other via FIFO pipes, mimicking wire and bus interfaces.
Each FIFO is usually constructed to hold multiple items. These items are the input, that a blocked thread is waiting for.
As a matter of policy, each thread processes all the input that's available to it, and makes as much progress as is algorithmically correct, before blocking on an anticipated future event or input, and by that allowing other parallel threads to run.
An event driven simulation is simpler to write, and faster to run, than a clock-based simulation.
The two models are:
- A Producer-Consumer relationship, that is controlled by a Master module.
- A network of nodes connected through a router whose number of input and outputs is a parameter, that's provided during built time.
Utilities library
Commonly used functionality is encapsulated in a utilities library, and both models make use of it, e.g. command line parsing.
Build system
All code is built on Linux, using a non-recursive Makefile method, although you can build it with other methods and on any OS.
Download
The models, utilities library and all Makefiles, are packaged into a single downloadable file.