Interactive Genesis2 GUI
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.
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.
- Runs in its own space on vlsiweb via the vlsiweb server (apache).
- Visible to the world as "http://www-vlsi.stanford.edu/genesis/".
- Requires root access with a difficult and error-prone installation and setup process.
To use: point browser at "vlsiweb.stanford.edu/genesis".
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. "http://kiwi.stanford.edu:8080/"
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.
% 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 http://genesis2.stanford.edu/mediawiki/index.php/Genesis2#Installing_Genesis2.
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 ./INSTALL.sh
Use: point browser to installed URL e.g. "http://vlsiweb.stanford.edu/genesis/"
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. "http://neva-2.stanford.edu:8080"
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
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 the following sequence must be able to run 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 design to the GUI
The GUI maintains a design list whose location is indicated in the 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). Or, just use your favorite text editor to edit the design list directly.
I THINK the GUI is supposed to create everything it needs for the new design all on its own. In case 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
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