This month's column completes our alphabetic journey through Computer Aided Design (CAD) systems, then segues to the related topic of simulation tools.
SPICE is a general-purpose circuit simulation program for nonlinear dc, nonlinear transient, and linear ac analyses. Circuits may contain resistors, capacitors, inductors, mutual inductors, independent voltage and current sources, dependent sources, transmission lines, switches, uniform distributed RC lines, and semiconductor devices. The FTP site (ftp://ic.eecs.berkeley.edu/pub/spice3/) contains only documentation and patches for SPICE; other CAD materials are contained under the parent directory.
TimeBench is a CAD tool for the design of real-time systems. Its main features include a hybrid graphical/textual design description notation, design experimentation through an embedded design interpreter and behavior visualization techniques, a performance analysis tool, and a code generation systems for Ada and C/JNX target environments (JNX is a real-time kernel for PCs). The FTP site (ftp://ftp.sce.carleton.ca/pub/timebench/) contains documentation and binaries for Sun- systems.
Some CAD systems contain finely honed simulation capabilities, while others are little more than domain-specific drawing packages. In either case, it is almost inevitable that cases will arise where the CAD system's simulation capabilities are insufficient. Here are some tools that may be useful in that situation. Just be warned that these are mostly generic programming tools, not domain-specific user applications.
Many simulations can be described by sets of constraints. "Constraint Programming Languages" (February, 1995) gives a detailed introduction to this approach. If you want to jump right in, try the Frequently Asked Questions file for the newsgroup comp.constraints. The FAQ contains useful definitions, annotated pointers to available resources, and more.
Edited by Michael Jampel, the FAQ is available as comp-constraints-faq in ftp://ftp.cs.city.ac.uk/pub/constraints/. WWW users may wish to go to http://web.cs.city.ac.uk/archive/constraints/constraints.html.
AERO is an X-window based tool for simulation and visualization of rigid-body systems. AERO contains a 3D scene editor for designing simple blocks world scenes. Objects may be placed in space, linked to each other, and forces may be exerted onto them. AERO is available in ftp://ftp.informatik.uni-stuttgart.de/pub/AERO/.
AWESIME (A Widely Extensible Simulation Environment) is a library of C++ classes that provides the building blocks for constructing process oriented discrete event simulations. It is intended to be extensible and yet maintain the best possible performance. AWESIME is available as awe2-0.6.tar.Z in ftp://gatekeeper.dec.com/pub/misc/.
C++SIM is a set of c++ class definitions that mimic the process-based simulation facilities of SIMULA and the SIMSET routines. The co-routine facility of Simula is implemented by Sun threads. Classes are provided for various random number distributions. C++SIM is available in ftp://arjuna.ncl.ac.uk/pub/C++SIM/.
Gnans is a program (and language) for the numerical study of deterministic and stochastic dynamical systems. The dynamical systems may evolve in continuous or discrete time. It has an intuitive Graphical User Interface using the X Window System. Gnans is available in ftp://ftp.mathematik.uni-Bremen.de/pub/gnans/.
Maisie is a process-oriented parallel programming language that can also be used to build parallel discrete-event simulation programs. Maisie supports light-weight processes and asynchronous typed-message communications. MAISIE is available in ftp://arjuna.ncl.ac.uk/pub/C++SIM/.
Netsim provides a very detailed simulation of single segment bus networks running the Ethernet (CSMA/CD) protocol. Finite population networks are modeled, with the simulation taking station position into account in determining the duration of collisions and the beginning of the backoff period at each station involved in a collision. An experiment description file allows the user to set a wide variety of parameters for a simulation run, including very flexible traffic generation processes for individual hosts on the simulated network. Netsim is available in ftp://urvax.urich.edu/pub/.
PARASOL is a C library which is particularly well suited to the support of modeling computer systems. It is specifically aimed towards modern distributed and/or parallel computer systems in which the software as well as the hardware involved must be adequately represented. PARASOL is available in ftp://alfred.ccs.carleton.ca/pub/parasol/.
The SIMULA programming language was originally designed and implemented as a language for discrete event simulation, but was later expanded and reimplemented as a full scale general purpose programming language. Cim is a Simula compiler that compiles into C. The C program can then be compiled with cc, and linked with other modules. Cim is available in ftp://ftp.ifi.uio.no/cim/.
XSAT is an X-based satellite tracker which draws maps of various world regions and plots satellite ground tracks, complete with timestamps. XSAT also produces a list of visible orbit passes for a given city, with extensive information on azimuth and time. It can also produce a PostScript file which gives a hard copy of all displayed information. XSAT is available in ftp://arizona.edu/SOFTWARE/UNIX/XSAT/.