|TAMS / Java / Hades / applets: contents
Welcome to the Hades simulation framework!This is the homepage for Hades, the Hamburg Design System, a framework for interactive simulation. The software consists of a graphical editor, the discrete-event based simulation engine(s), libraries of simulation components, a design and library browser, and tools like waveform viewer and scripting shell. Written in Java, the software is fully object-oriented and can be used as an applet embedded in web-pages. Read on for details, or select one of the links from the navigation menu on the left.
We use Hades both as a tool for teaching basic digital systems design, and for research on system-simulation and hardware/software-cosimulation. However, nothing in the framework is limited to digital electronics. All simulation models, signal types, and the simulation kernels can be subclassed, so that Hades can be used for other applications as well.
Just click the thumbnail images below to open larger screenshots for three different applications realized with Hades. From left to right, these are a NAND-based JK-flipflop circuit, a MIDI (music-synthesizer) controller built around a PIC16C84 microcontroller, and a chroma-keying image processing application. Live demonstrations of these are available via the Hades applet collection:
Unlike most traditional circuit simulators, Hades does not need separate edit-compile-simulate-analyze phases. Instead, it provides a fully interactive simulation environment:
The option to edit your circuits while the simulation is running is not only a great help for students (and for teaching): as soon as you detect a problem, you can begin to fix it, and the simulation will instantly show whether the fix worked. (In a traditional simulator, you would need to stop the simulation, start an editor, edit something, save your files, compile your files, update input stimuli in another editor, restart the simulation, wait for the simulation to finish, load the waveforms, and then analyze the waveforms...). The downside of the interactive simulation mode is a reduced simulator performance, because additional runtime checks are required during a simulation and fewer compiler optimizatons are possible. Still, the simulator should execute about a million events per second on current PCs or workstations.
While you can drive Hades simulations with pre-defined simulation stimuli, the most common situation is 'to play' with your circuits interactively. Naturally, simulation stimuli are still the preferred means to re-run a simulation or to feed complex input data into a circuit. Note that you can also use your favorite scripting language to control the Hades simulator and editor; the Hades class archive includes utility classes and an interface to the Jython interpreter.
View-mode and the applet collection
The current version of the Hades editor also includes a runtime flag to switch to view-mode: while all of the simulation functions and the option to change component parameters remain active, the editor disables all commands that change the circuit structure. Therefore, view-mode is ideal to let the user play with pre-defined circuits. This is the default mode used used by our collection of (currently over 200) interactive applets. Please click here to go to the table-of-contents of the Hades applet collection.
The original research goal of Hades was to provide support for fast hardware/software cosimulation of digital systems with embedded processors. Due to the use of our own simulation engine, it is possible to taylor the simulation algorithms for fast synchronization between cycle-based instruction-level simulations of the processor cores and the event-based activity of the external circuitry.
At the moment, Hades includes simulation models for three different processor families and architectures. Please visit the cosimulation page for details:
For more details about Hades, select the links from the navigation menu on the left, or click one of the following links for documentation and downloads. Please also visit the applet collection for interactive demonstrations of many digital circuits and systems (requires Java 1.4 or higher).