All software listed are free and open-source for academic purposes. We welcome any contributions you might be willing to offer. Questions, concerns, and comments should be directed to the software author listed.

### BNSim: bacteria network simulator (New)

##### [Overview]

Bacteria-based networks are formed using native or engineered bacteria that communicate at nano-scale. This definition includes the micro-scale molecular transportation system which uses chemotactic bacteria for targeted cargo delivery, as well as genetic circuits for intercellular interactions like quorum sensing or light communication. To characterize the dynamics of bacterial networks accurately, we introduce BNSim, an opensource, parallel, stochastic, and multiscale modeling platform which integrates various simulation algorithms, together with genetic circuits and chemotactic pathway models in a complex 3D environment.

BNSim is developed using C++ under Ubuntu and Mac OS
Some simple examples are also provided in "app" directory.

##### [Reference]

G. Wei, P. Bogdan, and R. Marculescu, 'Efficient Modeling and Simulation of Bacteria-based Nanonetworks with BNSim,' IEEE Journal on Selected Areas in Communications - 2013 Special Issue on Emerging Technologies in Communications, 2013.

### Worm_Sim: a cycle accurate simulator for Networks-on-Chip

##### [Overview]

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 as presented in [1][2]; 2) the Orion power model [3]. 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.

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.

##### [Reference]

[1] J. Hu, R. Marculescu, ' Energy- and Performance-Aware Mapping for Regular NoC Architectures', IEEE Tran. on CAD, April 2005.
[2] J. Hu, 'Design Methodologies for Application Specific Networks-on-Chip ', PhD thesis, Carnegie Mellon University, May 2005.
[3] H. Wang and X. Zhu and L. Peh and S. Malik, ' Orion: a power-performance simulator for interconnection networks', Proc. Intl. Symp. on Microarchitecture, Nov. 2002.
[4] [1] U. Y. Ogras, R. Marculescu, ' '“It’s a small world after all”: NoC Performance Optimization via Long-range Link Insertion, ' in IEEE Trans. on Very Large Scale Integration Systems, Vol.14, No.7, July 2006.

### NoCmap: an energy- and performance-aware mapping tool for Networks-on-Chip

[Overview]

The mapping tool, named NoCmap, is a concise C++ program which automatically maps a given set of IPs onto a generic regular NoC architecture such that the total communication energy is minimized. At the same time, the performance of the resulting communication system is guaranteed to satisfy the specified design constraints through bandwidth reservation.

##### [Features and Highlights]

NoCmap also uses Ebit energy model. It accepts two possible formats for describing the to-be-mapped application. The first format is the APCG format, which is accepted by nocmap in combination with -apcg switch. In this format, each line in the input APCG file contains a 4-tuple, which specifies the source IP, the destination IP, the communication volume and the communication bandwidth requirement, respectively. The second supported format is the traffic-configformat, which is accepted by nocmap when switch -traffic_config'' is enabled. In this case, each line in the input file contains a 3-tuple, which specifies the source IP, the destination IP and the packet rate from the source to the destination. When executed, \emph{nocmap} linearly scale this packet rate to generate the communication volume and the bandwidth requirement between these two IPs.

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

Running “nocmap -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.

##### [Reference]

[1] J. Hu, R. Marculescu, ' Energy- and Performance-Aware Mapping for Regular NoC Architectures', IEEE Tran. on CAD, April 2005.
[2] J. Hu, 'Design Methodologies for Application Specific Networks-on-Chip ', PhD thesis, Carnegie Mellon University, May 2005.

### SmallNoC: Application-specific long-range link insertion tool

##### [Overview]

The SmallNoC tool, which is inspired by small-world networks, automatically inserts application-specific long-range links to a 2D mesh network for a given (set of) application(s). The goal is to maximize the sustainable network throughput with a constraint on the total number of long-range links [1][2].

##### [Features and Highlights]

The SmallNoC tool optimizes an underlying 2D mesh network with given dimensions for a target set of applications, which are described in a file specified in the command line using the ”-traffic_file” switch. Each line in the input file contains a 3-tuple, which specifies the source IP, the destination IP and the packet rate from the source to the destination. Besides the target application, the constraint on the total number of long-range links and the size of the mesh are taken as inputs. Finally, the optimized NoC and the routing table are written to a file specified by the ”-architecture_file” switch in the command line. This output and the application file can be readily used to simulate the optimized NoC using worm_sim simulator.

Example Usage: ./SmallNoC -num_of_rows 4 -num_of_columns 4 -constraint 10 -traffic_file traffic.config \ -architecture_file output.config

Complete list of command line parameters are provided in the README file.