Interactive Genesis2 GUI - StanfordVLSI/Genesis2 GitHub Wiki
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.
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.
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.
% $CHIPGEN/gui/bin/stewie start /tmp/mystewie
To run: point browser at your mini-server e.g. "http://kiwi.stanford.edu:8080/"
- 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
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".
Setup:
% 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 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).
Setup:
% stewie start /home/myname/stewie
Use: point browser to installed port e.g. "http://neva-2.stanford.edu:8080"
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
(From ~steveri/gui-designdirs-howto.txt)
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 and the GUI is in , 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 --- -----------------------------------------------
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 .
Example:
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 .
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
Read and follow the directions in
$GUI/configs/install/README-packing.txt,
where $GUI is the gui development directory.
See: