Press "Enter" to skip to content

Sid: A framework for building computer system simulations


SID

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

.

Documentation

SID includes a tutorial-style user’s guide (HTML) (PDF), and developer’s guide (HTML) (PDF), and component reference documentation for the component library. The self-service SID Faq-O-Matic pages are also available for adding your questions and answers.

Availability

You can access the development source tree a couple of different ways.

Anonymous CVS read-only access
 cvs -z 9 -d :pserver:[email protected]:/cvs/src login {enter "anoncvs" as the password} cvs -z 9 -d :pserver:[email protected]:/cvs/src co sid 
Read-only web-based CVS access
You can browse the source code using the cvsweb interface.
CVS snapshots
Periodically, snapshots of a complete anonymous CVS working tree are archived here.

Supported host systems

SID is mostly written in ISO C++ (with a dash of Tcl and Perl), however a good number of vendor C++ compilers aren’t up to the job. In order to build SID, we recommend trying your own C++ compiler and reporting your experiences to the mailing list. It is possible to compile SID using GCC version 2.95 and above. If you are using Red Hat Linux 7, you should upgrade your GCC packages to gcc-2.96-69 and gcc-c++-2.96-69, for example via the Red Hat Network.

SID is known to run on Linux, Solaris and Cygwin hosts. It uses the GNU Autoconf, Automake and Libtool framework for building, so it should be relatively painless to port to other systems.

Contributions and bug reports

If you’d like to contribute to SID, the one thing the project really needs is more components! If you have an itch to scratch, contribute your component along with documentation and tests and it can be integrated into the source tree.

Currently, all components include documentation to assist users connecting the component into a larger system. The documentation is read using siddoc and conforms to a particular format. Please be sure to write such documentation when contributing new components.

Existing components are extensively tested using a DejaGNU test harness. If you are developing new components or enhancing existing ones, you must submit test cases along with your contributions. The test suite currently passes with zero failures.

SID is maintained by the simulator team at Red Hat. Patches must be approved and will be checked into the source tree by the maintainers. Patches must conform to the GNU Coding Standards and be accompanied by a ChangeLog entry. Please send any patches to the mailing list.

We are working out the legal intellectual property issues for accepting public contributions. In general, we aim to include suitably licensed contributions from the public, even if the contributors wish to retain their copyright. We would like to make it easy to let others help SID grow.

Mailing lists

There are three mailing lists:

sid-announce
A mailing list for important announcements about SID. This is intended to be a very low-volume mailing list.
sid
A mailing list for discussion of all issues related to development, including patches.
sid-cvs
CVS commit messages are automatically sent to this list so that people can track changes. Don’t send messages to this list.

You can use this form to subscribe or unsubscribe to the above mailing lists.


$Id: index.html,v 1.19 2002/07/10 22:07:52 fche Exp $


Source