|   JHDL Home Page   |   Configurable Computing Lab   |   User's Manual (TOC)   | Search

The JAB Browser (deprecated)

Deprecated in favor of CVT

When you execute "java jab" you launch two windows:
1 - a console (CLI interpreter)
2 - a circuit browser, wires table, memory viewer, schematic viewer, waveform viewer, and TBone

CVT, by default, similarly consists of:
The difference then, is that in CVT, the design is the focus, not the tool. Your testbench instantiates the tool, not the other way around.



JAB is the GUI tool developed to give users a friendly simulation and debugging environment. The JAB environment offers a number of tools to watch the behavior of your circuit. The most populair viewers in JAB are the Browser Tree and Port Table, the Schematic Viewer, the Waves Viewer, and the Memory Viewer. Each of these viewers has a menu bar with menu options specific to it's function. There is also a command line on the bottom of each viewer to enter commands you wish JAB to perform.

Using JAB

After writing and compiling your JHDL files you can use Jab to view and simmulate the designs. Jab is initialized by typing: java jab, and when the JAB GUI appears you can load your circuit from the command line typing load [classfile]. You could also initialize jab with your circuit by passing in the class file for your circuit as an argument to JAB on the command line like this: java jab [classfile].

Circuit Browser

The first viewer to open will be the Circuit Browser. This is divided into to parts the circuit tree structure is on the left and the port table is on the right. The tree structure lists all the cells in your schematic in a hierarcical way. When it is originally opened only the top level cells will be listed, but those that have children cells inside of them will have a + next to them. Selecting the plus will expand the cell and allow you to see all the children. There will now be a - next to that cell which removes the children of the cell from the tree view.

The port table on the right lists all the ports of the selected cell of the tree structure. As you cycle the design you will notice that the port table updates the values that are on these ports. All the Viewers in JAB share some common features. At the top of each viewers there is a menu bar. The File Menu always has the option of closing the window or exiting out of jab. The rest of the menu options are specific to the viewers they are in. At the bottom of each viewer there is a one line text box so you can enter text commands for JAB. There is also a Cycle button that will run your design for one clock cycle. There is also a step button on the bottom that only runs your design to the next changing edge of the clock. If your design has multiple clocks the step button runs the design to the next edge of the fastest clock.

You can open other viewers from the Circuit Browser. To open a schematic viewer select the cell you wish to view in the tree structure and in the Browser menu select View Cell Schematic. Another way to open a schematic viewer is to select a cell and hit Ctrl-V. To open the Wire Waves Viewer you can select wires you want to watch in the port table or select the Browser menu option View Waves Wire or hit Ctrl-T.

JAB Console

You probably noticed a second Jab window open below the Circuit Browser. This is the Jab console. Here is where you can see a history of your commands to JAB and where you will see error messages. If a command does not work it will report why it failed in the console. It will also report errors in the simmulation of your circuit. You should leave the console in a place where you can see it so that should an error occur you will know it when it happens. The console remembers the commands that you perform as you load and simmulate a circuit. You can save a log of these commands as a script file by selecting the File menu option Save Log of the console. This will prompt you for a file name. After saving the script file you can later run this script file by typing source [script filename]. This will execute all the commands you saved in your script file.

Schematic Viewer

The Schematic Viewer provides a visual representation of the circuit. It show you the insides of the cell you are viewing including all the ports, cells and wires. The Schematic Viewer can be opened from the Circuit Browser by selecting a cell in the tree view and hiting Ctrl-V. Another way is to enter the command view [cell name] in the cammand text box at the bottom of the viewers. You can pop into cells from the schematic viewer by double clicking on them. If a cell is a primitive unit and has nothing inside of it it will not let you pop into it. In the Schematic Viewer you will notice that the wires on the ports of each cell have values on them that are drawn in blue. These value are the current values on the wires and will stay updated as you simmulate your design. You can select cells and wires by clicking on them. To select multiple items you must hold down the control button. When a wire is selected it is high-lighted red. This will make tracing wires a lot easier for complicated designs. If you want to watch the values on wires over time you can select the wires and then hit Ctrl-W to open a Waves Viewer with them. There are also menu options to zoom in or out and print a design.

The Schematic Viewer has an info box that tells about the cells and wires the mouse is over. Normally the info box tells you the name and size of the objects. If you select the Schematic menu option View Cell Properties or View Wire Properties then you will also see the properties of the cells or wires in the info box. When the schematic viewer is opened all the values are displayed in hexidecimal format. This can be changed by using the Radix pulldown box at the bottom of the Schematic Viewer. The options available are Hex, Decimal, Signed Decimal, or Binary. Normally all the Schematic Viewers that are open share the same Radix, but if you unselect the check box Windows Share Radix then you can set different Schematic Viewers to display the values in different Radixes.

Waves Viewer

The Waves Viewer is used to watch the values of specific wires over time. The Waves Viewer can be opened by selecting wires Circuit Browser's port table, or selecting wires in the Circuit Viewer and hitting Ctrl-W, or from the command line typing watch [wire name]. Wires can be added or removed from the waves viewer as desired. When a wire is added to the waves viewer nothing is known about the past values of the wire so the only values that will chow up are current values and then as you run your design using step or cycle new values will show up. The Waves Viewer is divided into three parts. The left part contains the wire names. The right part contains the values of the wire over a period of time. In this table there is a red vertical marker that moves to where you click or drag the mouse. The middle part shows the values of the wire or the cycle that the marker is moved to.

Each wire in the waves viewer displays all its values in the same radix. Originally the values are displayed in hexidecimal. You can select a wire by clicking on the wire names. The selected wire will appear red. After selecting a wire you can change the radix used to display the values on the wire by making a selection from the pop down menu box on top of the viewer. The choices are hex, decimal, signed decimal, binary or the Custom Format. There are also options to zoom in, zoom out, and to see the full hierarchical name or the short name.

The last button in the Waves Viewer allows you to save the data in the waves viewer as a text file. It saves the cycle names across the top of the text file. Then each succeding line will have a wire name and all the values of the wire for each cycle. Later after you have closed down JAB you can open up just the Waves Viewer with this text file. To do this type java waves [text file with waves data]. The Waves Viewer will load up, but it will not have the cycle and step buttons or the Commands bar. This is because the Waves Viewer can not simmulate without the rest of JAB.

Memory Viewer

The Memory Viewer is used to watch a memory unit. In the tree view in the Browser Main Frame the memory units can be identified because they have the red memory symbol in front of them.

After you select one of these memory cells by clicking on it you can load up the Memory Viewer by selecting the Browser View Memory menu option or by hitting Ctrl-M. The Memory Viewer contains the data of what is currently stored in that memory unit. The addresses are in the left collumn. The data is in the next four collumns such that there are four memory spots per row. The values of the memory locations will be updated as you simmulate the design.

Originally the address and the data is displayed in hex. There is a drop down menu for both the address and data display. These drop down menus let you choose the radix the numbers are displayed in. The address gives you options to display in hex or decimal. The data can be displayed in hex, decimal, signed decimal, binary or the Custom Format. The Jump To Address button will bring up a dialog box to enter jump to a specified address in the Memory Viewer. You should enter in the address in the same radix as you are currently displaying the address in. For example if you are displaying the address in hex you could enter in `c0' to jump the the hex address c0. The button Dump Range lets you save a range of the memory unit as a text file. The dismiss button closes the Memory Viewer. There is a menu option that lets you view the memory cell as a histogram table. This pops up another window with the histogram table.

Layout Viewer

The Layout Viewer currently only works with designs targeted to the XC4000 architecture. This viewer lets you see the actual placement of your cells of your design on an FPGA. The Layout Viewer contains rows and collumns of CLBs. The ones that are highlighted are in use by your circuit. Each CLB is is outlined witha yellow line. Inside each CLB there are 3 LUTS, small red boxes, and two flip-flops small blue boxes, and a small green box. The boxes that are highlighted in the CLB are the boxes that are being used by your design. In this example two of the LUTs and the carry logic are being used in this CLB.

Notice that in this CLB the flip-flops and one LUT is not highlighted. This is because they are not used in this CLB. There are blue boxes drawn around the different components in your circuit and the names of these components is writen in white. If you double click on a component it will appear in its own Layout Viewer. When you put your mouse over a CLB it will tell you what row and collumn that CLB is in. This tool was created to help you in doing manual placement of circuits targeting the XC4000 architecture. This viewerwill not work if you have not used map and place commands in creating your design.

Custom Format of Wire Values

The custom format will bring up a dialog box that askes you how you want the values on the wire formated. The format string is simmilair to the C printf statement. Here are a couple examples: To learn more about the BVFormat strings see the BVFormat Documentation.

Available GUI Commands

File Menu

Quit <Ctrl+Q>

Commands Menu

Load Class... <Ctrl-A>

Step command, button, and field <Ctrl-S>


Reset System <Ctrl-R>

Browser Menu

Table Waves

View Invisible Cells

View Child Wires

Enable Behavioral Model <Ctrl+E>

Disable Behavioral Model <Ctrl+D>

View Wire Waves... <Ctrl+T>

View Cell Schematic... <Ctrl+V>

View Cell Layout... <Ctrl+L>

View Memory <Ctrl+M>

Cell Info... <Ctrl+C>

Wire Info... <Ctrl+W>

Port Info... <Ctrl+P>

WavesViewer Menu

Delete Wire <Ctrl+D>

Schematic Menu

View All Cells

View Cell Properties

View Port Wire Properties

Zoom In <Ctrl+I>

Zoom Out <Ctrl+O>

View All <Ctrl+F>

Watch Selected Wire(s) <Ctrl+W>

Unwatch Selected Wire(s) <Ctrl+U>

Memory Menu

View Histogram <Ctrl+H>

Available Console Commands

These commands are available to be executed from the command line. One of the features of JAB is that it is full scripted. There is no command restricted to only GUI use. A more complete form of help is supplied in JAB by typing help or help < command name > on the command line.
CLI Commands

alias < alias name > < command >

font [ font size ]

help [ command ]


log [ -a ][ start end ] < log file >


log [ -e ] < log file >

unalias < alias name >

JAB Commands

behav < cell name > < true / false >

cd < cell name >

cycle < cycles >

dumpram < cell name > [< file name >] [< start index > < elements > < radix >]

exit | quit

jout [jab | show | console | help | disable | file | list ]

load < class name >

loadmodule < module name >

ls | dir

objectInfo < object name >


readstate < cycles >


setwaves < boolean >

step < steps >


unview < cell name >

unwatch < wire name >

updatecellinfo < boolean >


view < cell name >

viewlayout < cell name >

viewram < cell name >

watch < wire name >

win < true | false >


|   JHDL Home Page   |   Configurable Computing Lab   |   Prev (Unsupported Items)   |   Next (TBone)   |

JHDL 0.3.45