Table of Contents

Name

genview - genlib graphical source level debugger

Synopsys

genview [ -s source_file ] [ -l layout_file ] [ -ge <height>x<width>[{+}x{+}y] ] [ -gt <height>x<width>[{+}x{+}y] ] [ -gv <height>x<width>[{+}x{+}y] ]

Origin

This software belongs to the ALLIANCE CAD system from the CAO-VLSI team at ASIM/LIP6/UPMC laboratory.
LIP6/ASIM
University P. et M. Curie 4, place Jussieu 75252 PARIS Cedex 05 FRANCE
Fax : {33/0} 1.44.27.62.86
E-mail support : alliance-support@asim.lip6.fr

Description

Genview is a graphical source level debugger for the cao-vlsi procedural generation language genlib. Genview stands for procedural Generator Viewer, because its primary use is to help debug parametrable layout generator programs. Since genlib is a superset of the C language, de facto genview is a C debugger that contains a specific dictionary for genlib's functions.
Genview works under X11r4, and is made of, at least, three distinct windows, each of them having a given behaviour:

Edit Window
This window allows the user to edit a source file under a vilike editor. It is not vi, so only the basical and most used functions have been implemented. No meta-characters can be used, things like `c$' or `cw', or `.' are not available. But this is not so much of a restriction, since they are far less used than `i', `a' or `o'. The menu of the Edit window is, let's say, the main menu of the application. It contains three separate items, each of them made up of some buttons. They could be called System, Interpret and trace.

System:

`load'
enables to load a C source file from disk. The complete path to the file is expected, either absolu or relative, but no meta-characters may be used.
`save'
enables to save an edited file to the disk. The constrains are the same as for loading.

`shell' runs either a shell command if given as parameter, or runs an xterm if no arguments are given in the dialog box.

`exit'
kills genview. The state of the source files is not check before exiting, so make sure you are up to date.

Interpret:

`compile' just calls the compiler for syntax checks. Currently, this button is desactivated. No actions are performed if clicked.

`run'
calls the compiler, if the file has not yet been compiled, then the interpreter, and executes all the file, if no break points are present. If a break point is encountered, then an other click on run go to the next break point or the end of file.
`step'
calls the compiler, if the file has not yet been compiled, and goes to the main position in the code. Then further clicks on `step' will execute the source file statement by statement, entering inside local function calls.
`next'
is like `step', but executes call all at once.
`start'
goes back to main if clicked while interpreting.

`params' is used to set the main arguments, for parametrable generators. This function bugs today, so please avoid using it.

Trace:

`set/unset bp'
is a flip-flop that either sets or unsets, depending of the previous state of the line, a break point on a given line. The line is choosen by the cursor position in the `Edit window'. Take care not to put a break point on a `{' or `}', or something like that, since it will not be taken into account at execution time. Choose a C control statement, or a function call.

`clear all bps'
clears all previously sets break points.

`set trace'
tells the interpreter to print out in the `Trace window' the value of the given variable. To name a variable, give, if it is a global one, it name as argument. If it is a local one, just concatenate the function name with the variable name, separeted by a semi-colon. This function is not entirely bug free. Do not use it with the argument of the main, because this is most likely to fail.

`unset trace'
tells the interpreter no to trace anymore a given variable.

Trace Window
The Trace window is an output window in the which are redirected all system and genlib errors, and also user messages given through printf since it represent both stderr and stdout. It is much simpler than the other windows, and possesses four buttons, that allow to scroll through it:

`line up' scrolls up one line at a time.

`line down'
scrolls down one line at a time.

`page up' for one page up.

`page down'
for one page down.

View Window
The View window is an output window that contains the drawing of the layout beeing textualy described in genlib. It may also be used to simply load a symbolic layout cell, for looking at it only. This is not a symbolic layout editor. It contains many buttons needed to modify circuit coordinates and scale.

`in'
allows to change the scale. Push down the leftmost button of the mouse, and move it. It defines a one pixel box that represents the new window to be displayed. As soon as the button is released, the windows changes.
`out'
comes back to the window defined by the previous `in'.
`fit'
center the circuit, with appropriate scale, so it occupies the whole window.
`zoom'
enlarges the scale, center of the window beeing left unchanged. The `scale factor' can be defined by clicking into and moving the rectangle of the right hand side icon of `zoom'.
`mooz'
reduces the scale, center of the window beeing left unchanged. The `scale factor' can be defined by clicking into and moving the rectangle of the right hand side icon of `zoom'.
`lock'
explicits the entire window to transistor level. Please do no use this function on an entire big circuit, because it is very time and memory consuming, and does not give any informations but artistic ones.
`peek'
explicits the user defined window to transistor level. Push down the leftmost button of the mouse, and move it.

It defines a one pixel box that represents the new window to be displayed. As soon as the button is released, the windows changes.

`pan'
move the window in both `x' and `y' direction over the circuit. Push down the leftmost button of the mouse, and move it. A line is drawn, and as soon as the button is released, the windows changes. The begining point of the line beeing placed at the end point after the operation. If this is not really clear, just try it!

`refresh' redraws the entire screen.

`inspect' gives a textual output of the screen contents in a window opened for it. This window has scrolling buttons, so see `Trace window' for the motions.

`^ > v <' move the screen over the circuit.

`setup' opens a window that allows to choose users preferences. Moreless self explanatory.

`load'
loads a layout cell directly from disk.
`map'
draws the overall abutment box of the circuit. Clicking in it will move the circuit to the given point.
`x y'
indicate current circuit absolute coordinates. Clicking in this button will allow the user to set them to a desired value.

`dx dy' indicate relatives coordinates regarding the most recent mouse click.

As most graphical tool, using it will be much easier than using this documentation, so just try it.

Options

-s sourcefile
tells genview to load a source file in its `Edit window' when starting. the source file may be any 32-127 ascii file. The file is to be given with its extension and path if needed. But only file sufixed by `.c' are to be interpreted.

-l layoutfile
tells genview to load a layout file in its `View window' when starting. The file name is given without extension.
-ge <height>x<width>[{+}x{+}y]
opens the `Edit window' at x and y coordinates with the given height and width. This is for customisation, but it is recommanded to use as it is because it is what esxperience has shown to be more practical.
-gt <height>x<width>[{+}x{+}y]
opens the `Trace window' at x and y coordinates with the given height and width.
-gv <height>x<width>[{+}x{+}y]
opens the `View window' at x and y coordinates with the given height and width.

Example

genview -s rsa.c -l gapg0_b

Environment Variables

MBK_CATA_LIB(1)
indicates the path to the read only libraries to be used under genview.

MBK_WORK_LIB(1)
indicates the path to the read/write directory for the session.
MBK_IN_PH(1)
indicates the file format to be used for the leaf cells.
MBK_OUT_PH(1)
indicates the file format to be used for the generated blocks.

See Also

mbk(1) . genlib(1) .

Diagnostics

In order to work, genview must have read/write access on a directory called `/usr/tmp'. It will else fail at any compilation or inspect attempt.
Genview does not allows rotations in placed instances. This is because it has been written for full custom generator debug, and such geometrical operations are not used in this context. This is the only known incompatibility with genlib.
The use of main arguments is not entirely debugged, and may lead to a software exception.

Bug Report

This tool is under development at the ASIM/LIP6/UPMC laboratory, cao-vlsi research team.
We need your feedbak to improve documentation and tools. If you find bugs, please fill-in the form at http://asim.lip6.fr/alliance/support/bug-report/ Thanks for doing this.


Table of Contents

 



Alliance Web Site © 1997, 2002 ASIM/LIP6/UPMC, page maintained by Czo [Olivier Sirol] , last updated on 26 May 2000.