SID is a framework for building computer system simulations. Specifically, a simulation is composed of a collection of loosely coupled components. Simulated systems may range from a CPU's instruction set to a large multi-processor embedded system.
SID defines a small component interface which serves to tightly encapsulate them. Components may be written in C++, C or Tcl.
A SID simulator can provide powerful tools for both software development and hardware design:
- Test software for correctness on a model of the hardware it will eventually run on. A component that performs the equivalent function of a GDB remote stub exists to debug software running on a simulated CPU using GDB.
- Debug software with more facilities than a conventional symbolic debugger can provide -- for example, the simulator can be configured to stop when an interrupt line is asserted.
- Analyse the dynamic behavior of software with insight not available from the real hardware. Components which model hardware with cycle accuracy can be constructed, if desired.
- Analyse the performance of hardware given a specific software task.
