Interactive Genesis2 GUI

From Genesis2
Revision as of 21:17, 6 March 2017 by Steveri (talk | contribs) (Adding a New Design to the GUI)

Jump to: navigation, search

The Genesis2 GUI is a friendly internet browser-based graphical user interface that lets you quickly and easily design custom chips. It reads and manipulates the convenient XML chip format provided by the Genesis2 chip generation system.

The GUI can run as part of a new or existing standard web server, such as apache, and/or it can run as a standalone in user space using its own perl-based mini-webserver. The apache-based GUI is called the standard GUI, the original GUI or just "the GUI," while the mini-server version is known as "Stewie the standalone GUI." A third, non-server-based version of the GUI, called guisada the true standalone GUI, uses a command line interface to call the GUI perl scripts directly. Guisada is useful to help the GUI developers debug their scripts, but is not generally recommended for end users.

In sum, there are three flavors of GUI:

  • the Original GUI, designed to run under an existing web server installation such as apache;
  • Stewie the Standalone GUI, designed to run in user space; and
  • Guisada, which for development purposes can run the GUI perl scripts directly from the unix command line.

If you want to try them out, there's usually a standard gui running here (hosted by www-vlsi), and a Stewie gui can often be found running here (neva-2) or here (kiwi).

Flavors of GUI: A Brief Guide

See "GUI Install and Setup" below for more detailed instructions concerning setup and install for each flavor of GUI.

Original GUI

  • Runs in its own space on vlsiweb via the vlsiweb server (apache).
  • Visible to the world as "".
  • Requires root access with a difficult and error-prone installation and setup process.

To use: point browser at "".

Stewie the standalone GUI

NEW: See StewieTheStandaloneGUI

  • Runs in a safe space designated by you, e.g. "/tmp/mystewie".
  • Visible to everyone inside the firewall as e.g. "http://hostname:8080/".
  • Easy setup and installation, no root access required.

One-time setup, create your own mini-server:

 % $CHIPGEN/gui/bin/stewie start /tmp/mystewie

To run: point browser at your mini-server e.g. ""

Guisada standalone GUI (deprecated / not actively maintained)

  • Runs in your design directory e.g. "/home/steveri/mydesign/".
  • Visible only to you as "file:///mydesigndir/scratch/mydesign.htm".
  • Easy setup and installation, no root access required.

To use:

  % cd /home/myname/mydesign/
  % $CHIPGEN/bin/guisada mydesign.xml

Brief setup and usage instructions for each flavor of GUI

Original GUI setup and usage

The original GUI will have been installed along with Genesis2 according to the Genesis2 installation instructions at

This should set up an environment variable "$GENESIS_HOME" such that your gui source will be found in a directory "$GENESIS_HOME/gui".


 % cd $GENESIS_HOME/gui/configs/install
 % sudo ./

Use: point browser to installed URL e.g. ""

For detailed information see Original GUI Installation Details.

Stewie setup and usage

Stewie comes with the general Genesis2 release. Follow Genesis2 installation directions and Stewie will naturally be in your command path (generally as something like $CHIPGEN/gui/bin/stewie).


 % stewie start /home/myname/stewie

Use: point browser to installed port e.g. ""

Guisada setup and usage (deprecated / not actively supported)

Setup: Unpack the tarball as described in "Original GUI" instructions above.

 % mv gui.tar.bz2 /tmp/unpack
 % cd /tmp/unpack
 % tar xjf /tmp/unpack/gui.tar.bz2

Use: Assumes you have a Genesis2 design directory /home/myname/mydesign containing at least one design mydesign.xml

 % cd /home/myname/mydesign
 % /tmp/unpack/gui/bin/guisada mydesign.xml

Adding a New Design to the GUI

<tiny>(From ~steveri/gui-designdirs-howto.txt)</tiny>

03/2017 reset

Preparing a generator for addition to the GUI

To add a generator design to the gui, you first need a working generator and makefile that is capable of running under the GUI environment (i.e. using the GUI's setup.csh). In particular, if the generator lives in a directory <GENDIR> and the GUI is in <GUIDIR>, then you should be able to do the following without error:

 % mkdir /tmp/gentest
 % cd /tmp/gentest/
 % echo '<HierarchyTop></HierarchyTop>' > config.xml
 % source <GUIDIR>/configs/setup.cshrc
 % make gen -f <GENDIR>/Makefile GENESIS_HIERARCHY=out.xml GENESIS_CFG_XML=config.xml

Example: FFT generator in directory /home/steveri/fft/fftgen:

 % mkdir /tmp/gentest; cd /tmp/gentest
 % echo '<HierarchyTop></HierarchyTop>' > config.xml
 % source /var/www/homepage/genesis/configs/setup.cshrc
 % make gen -f /home/steveri/fft/fftgen/Makefile GENESIS_HIERARCHY=out.xml GENESIS_CFG_XML=config.xml
 --- Genesis Finished Generating Your Design ---

Adding a new design to the GUI

The GUI maintains a design list whose location is indicated in the gui config file. In the example below, the design list is found in /var/www/homepage/genesis/configs/design_list_stanford.txt and it contains two designs "FFTGenerator" and "CGRA"

 % grep DESIGN_LIST /var/www/homepage/genesis/CONFIG.TXT
 DESIGN_LIST /var/www/homepage/genesis/configs/design_list_stanford.txt
 % cat /var/www/homepage/genesis/configs/design_list_stanford.txt
 FFTGenerator  /home/steveri/fft/fftgen
 CGRA          /home/steveri/tmpdir/gui-designs/generator_z/top

The easiest way to add a new design is by way of the GUI's own "choosedesign" feature (see screenshots below). Alternatively, you can simply edit the design list directly using your favorite text editor.

I THINK the GUI is supposed to create everything it needs for the new design all on its own. Incase it doesn't, however, you might want to do this:

 mkdir <GUIDIR>/designs/<DESIGN>
 cd <GUIDIR>/designs/<DESIGN>
 echo '<HierarchyTop></HierarchyTop>' > empty.xml
 mkdir SysCfgs
 echo "<GENDIR>" > __SOURCEDIR__
 chown -R www-data .
 chgrp -R www-data .


 mkdir /var/www/homepage/genesis/designs/FFTGenerator
 cd /var/www/homepage/genesis/designs/FFTGenerator
 echo '<HierarchyTop></HierarchyTop>' > empty.xml
 mkdir SysCfgs
 echo "/home/steveri/fft/fftgen" > __SOURCEDIR__
 chown -R www-data .
 chgrp -R www-data .


Cleaning up a design directory

1. Move the old design to a trash bin somewhere

 mkdir /tmp/deleted
 mv <GUIDIR>/designs/<DESIGN> /tmp/deleted/

2. Build a new bare-bones design directory using info from the trash bin

 mkdir <GUIDIR>/designs/<DESIGN>
 cp /tmp/deleted/<DESIGN>/__SOURCEDIR__ <GUIDIR>/designs/<DESIGN>

3. Make sure new directory has all the right permissions

 chown -R www-data <GUIDIR>/designs/<DESIGN>
 chgrp -R www-data <GUIDIR>/designs/<DESIGN>

4. Can delete or archive old/deleted design

 mkdir /tmp/
 mv <GUIDIR>/designs/<DESIGN>.deleted/

5. Presumably the design-list entry from the original design (see above) is still good; so you should be done!

Design directory only needs


Developer's Notebook

Preparing an official release

Read and follow the directions in


where $GUI is the gui development directory.

Installing Original GUI on vlsiweb directly from the development directory