ssnetsim / supersim

A flexible event-driven cycle-accurate network simulator
Apache License 2.0
8 stars 1 forks source link

SuperSim

What is it?

SuperSim is an event-driven cycle-accurate flit-level interconnection network simulator written in C++. SuperSim's highest priority is flexibility for programmer productivity. As Professor Christos Kozyrakis once said:

If a simulator already does what you want it to do, there's a good chance you aren't asking the right questions.

SuperSim is designed to be a simulation framework, not a ready-to-go simulator for all scenarios. The core of SuperSim is a well-structured abstract class hierarchy that generically represents the interaction between common network components. Specific implementations override the basic abstractions to create the desired functionality without reinventing the wheel for every new model.

SuperSim is meant to produce very detailed and realistic simulations. While anything can in theory be simulated, the convention of SuperSim thus far is to model the real world on a cycle-by-cycle basis. This provides closer to real life simulation results and better verification for logical designs.

Where did it come from?

SuperSim was developed by Nic McDonald at Hewlett Packard Labs and was sponsored under the DARPA POEM project where it was used to investigate alternative router microarchitectures optimized for very high-radix designs driven by high-bandwidth photonically enabled I/O ports. The architecture designed was called SuperSwitch, thus the name of the simulator became SuperSim. SuperSim has been and is used for many research projects at Hewlett Packard Labs. It is used academically at Stanford University in the Interconnection Networks class. Current development of SuperSim is sponsored in part by the DOE PathForward program where it is being used to explore exascale topologies, routing algorithms, and router microarchitectures.

Why use it?

SuperSim has some key advantages in its design and development that make it particularly useful.

Ok, now what?

Visit the docs and have fun simulating!

Acknowledgements

This work has been supported in part by: