SID is a framework for building computer system simulations. Specifically, a simulation is comprised 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, Tcl or any other language to which the API is bound. Typically, components are separately compiled and packaged into shared libraries. A standard run-time linking/loading interface is defined for these.
The package includes a growing
library of components for modeling hardware and software parts, instrumentation, control, and external interfaces. During simulation start-up, components are instantiated, interconnected, and configured as necessary to represent some specific system. (The above catalog comes from the source tree: sid/component/CATALOG.)
SID is placed under a free software
license. Please bear with us during this early phase of the process of turning SID into an open development project.
What can it do?
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. In general, SID components model the hardware's function only as far as software is concerned.
- Analyse the performance of hardware given a specific software task. This is best supported when SID components expose hardware parameters that can be configured at run-time.
If you'd like an overview of what SID looks like, a series of
screen shots were taken of a demonstration given at the 2001
Embedded Systems Conference.