Worm_sim is a cycle-accurate simulator which we developed from scratch in C++ using standard template library. Worm_sim is written with flexibility and modularity in mind. It can be used to simulate a wide range of NoC architectures (e.g. NoCs with different topologies and different routing algorithms, etc.), using user controllable performance parameters (e.g. channel buffer size, routing engine delay, crossbar arbitration delay, etc.). Moreover, due to the flexibility of worm_sim, it can be easily extended to simulate NoCs which worm_sim does not support at the current stage.

Features and Highlights

Worm_sim’s built-in traffic generator allow users to simulate the system under several popular traffic patterns, such as uniform traffic pattern, hot spot traffic pattern, transpose traffic pattern, etc. Worm_sim also provides an efficient way to allow user specify arbitrary traffic condition for the NoC under simulation. More precisely, user has the control over the packet generating rate at individual IP node, the size of the packet and its distribution, etc. Even more, it allows user to attach a trace file for each individual IP node, so that the system under simulation can mimic the exact traffic condition of realistic applications by reusing the trace files retrieved from those applications.

In addition to reporting performance data after simulation, Worm_sim also allows the user to collect the communication energy consumption data in simulation. It currently supports two power models: 1) the Ebit model 2) the Orion power model. The Orion power model library retrieved from Princeton Orion project supports a rich set of API and has been compiled with worm_sim to implement the support of energy simulation using Orion power model.
Worm_sim uses a simple command line interface to setup different parameters for systems under simulation. Parameters configured in the command line is, in a sense global, to the whole NoC under simulation. A more powerful way for system configuration is provided by using a configuration file. This allows user to control the parameters at individual router or IP level.

Downloads and Install

Download release 4.2
Download release 4.1

Worm_sim was developed and tested mainly in GNU/Linux. To install, download the tgz file and use the command “tar xvzf worm_sim.4.1.tgz” to extract the files. Just run “make” in worm_sim/src directory and the executable named “worm_sim” will be compiled. Copy or link this binary to a directory in your search path if you like.

Running “worm_sim -h” will print a brief description of switches available. At the same time, please refer to the README.txt file included in the release for more detailed usage and explanation of the tool.

Some simple examples are also provided with the release which can be checked out under “examples” directory.


Chou, CL; Ogras, UY; Marculescu, R

Energy- and Performance-Aware Incremental Mapping for Networks on Chip With Multiple Voltage Levels Journal Article

In: IEEE transactions on computer-aided design of integrated circuits and systems, vol. 27, no. 10, pp. 1866, 2009.


Hu, Jingcao

Design methodologies for application specific networks-on-chip PhD Thesis

Carnegie Mellon University, 2005.