WaveMaker User's Guide

Table of Contents

1. Introduction
1.1. Installing
1.2. WaveMaker Scripts
2. Sytax Reference
2.1. Global Variables
2.1.1. minor
2.1.2. major
2.1.3. start
2.1.4. end
2.1.5. ruler
2.1.6. width
2.1.7. margin
2.1.8. namewidth
2.1.9. relheight
2.1.10. color
2.2. Global Operations
2.2.1. import
2.2.2. export
2.2.3. delete all
2.2.4. exit
2.3. Signal Variables
2.3.1. width
2.3.2. radix
2.3.3. height
2.3.4. slew
2.3.5. type
2.4. Signal Operations
2.4.1. add
2.4.2. change
2.4.3. delete
2.4.4. relations
3. Examples
3.1. AD7685 Analog-to-Digital Converter
3.2. MCP5200 LocalPlus Bus
3.3. PCI Read
3.4. ModelSim Colors

1. Introduction

WaveMaker is designed to be an easy-to-use signal editor and viewer. It supports multiple signal types, including arrays of standard logic (including all nine logic types supported by IEEE 1164), integers, floating point numbers, and strings. It is currently controlled by typing into the text field at the bottom of the window. Future versions will allow manipulation of the signals using the mouse.

1.1. Installing

Running the program currently requires that GTK be installed. I recommend downloading the latest version of the GTK+ Runtime Environment from here.

To run the full program, only three other files are required: libglade-2.*.dll, WaveMaker.exe, and WaveMaker.glade. The easiest thing to do is just to have these all in the same directory. If you make a shortcut to WaveMaker.exe, make sure the shortcut indicates that the program should start in the same directory that contains WaveMaker.glade.

1.2. WaveMaker Scripts

WaveMaker is designed to be controlled using text commands, so the ability to load a script file is built in to allow the user to write an arbitrarily long list of these commands. Included with the source are several sample scripts, detailed in Examples. Typically, the user will write their own script file external to the program and then import it in WaveMaker using the import command, modify the script, clear the current WaveMaker window using delete all, and then re-import. Alternatively, individual commands may be typed into the WaveMaker window directly, and once the diagram matches what the user wants, the export command (or alternatively FileSave As...) can be used to write a script that will regenerate the current image.

2. Sytax Reference

This section details the syntax of commands understood by WaveMaker. Curly brackets {} indicate that an option is required, while square brackets [] indicate that the option is optional.

2.1. Global Variables

These variables control the appearance of the entire waveform. The syntax for setting these variables is the following:

		set {varname} {value} [{varname} {value} [...]]

where {varname} can be any of the following variables.

2.1.1. minor

Sets the interval between minor ticks on the ruler. {value} can be any positive time.

2.1.2. major

Sets the interval between major ticks on the ruler. {value} can be any positive time.

2.1.3. start

The start time of the simulation. {value} can be any time, positive or negative.

2.1.4. end

The end time of the simulation. The actual end time of the simulation will be the end time or the time of the last signal edge, whichever is greater. In other words, setting the end time can only extend the simulation time, not reduce it. {value} can be any time.

2.1.5. ruler

The ruler height in pixels. {value} can be any positive integer. Setting the value to zero means that the ruler should be hidden; no additional margin will be drawn on the sides of the ruler if the height is zero.

2.1.6. width

Total image width in pixels; this is normally controlled by the GUI and should not be used if a GUI is controlling the drawing functions. {value} can be any positive integer.

2.1.7. margin

The vertical space between different elements in the waveform in pixels. Margins are drawn around the signals, edge relationships, and the ruler (unless the ruler is hidden). {value} can be any positive integer.

2.1.8. namewidth

The horizontal space between the signal names and the left edge of the signals in pixels. {value} can be any positive integer.

2.1.9. relheight

The height in pixels of edge relations. Note that this is a global waveform variable, while the height of the signals is set on a per-signal basis. {value} can be any positive integer.

2.1.10. color

The color variable controls all the colors used in the waveform and has a special syntax:

			set color {colnum} r {redval} b {blueval} g {greenval}

The {colnum} parameter indicates which color is to be modified. See DfltColors in draw.c to see what numbers correspond to what uses. The value parameters can be any integer between 0 and 65535, where 0 is black and 65535 is white. The value parameters can be entered in any order.

2.2. Global Operations

These commands perform actions that affect the entire waveform.

2.2.1. import

		import {filename}

The import function can handle the following file types:

  • wm

2.2.2. export

		export {filename}

The export function can handle the following file types:

  • txt
  • jpeg
  • png
  • bmp

2.2.3. delete all

		delete all

This option clears all signals from the screen. Individual signals can be specified instead of 'all'.

2.2.4. exit


This option exits the program.

2.3. Signal Variables

These variables control the appearance of a single signal.

		set signal {signum} {sigvar} {value}

{sigvar} can be:

2.3.1. width

The number of bits in the signal. {value} can be any integer greater than 0

2.3.2. radix

{value} can be: 2, 8, 10, 16

2.3.3. height

The height of the signal. {value} can be any positive integer.

2.3.4. slew

The pixel delay when changing from one value to the next. This gives the waveform a more rounded look when changing values. {value} can be any positive integer

2.3.5. type

The signal type. {value} can be:

  • boolean
  • logic
  • signed
  • unsigned
  • int
  • real
  • string

2.4. Signal Operations

These commands perform actions that effect a single signal.

2.4.1. add

		add signal {signame} [{sigvar} {value} [{sigvar} {value} ... ]]

Adds a new signal to the simulation.

2.4.2. change

		change signal {signame} to {newvalue} {timespec}
		change signal {signame} clock period {period} {timespec}

{timespec} is:

				at {time}


				from {time} until {time}

Changes the value of the specified signal. The command using "clock period" can only be used for "boolean" type signals.

2.4.3. delete

		delete {signalname}

Clear selected signal from the screen.

2.4.4. relations

		add relation {relationname} from signal {signame} edge {edgenum} to signal {signame} edge {edgnum} above signal {signame}

Add a relation between signals and place it above the specified signal. Edge counting starts at 0.

3. Examples

Several example waveform scripts can be found in the "waveforms" directory of the source distribution. These examples should be well-documented, but their purposes are summarized here.

3.1. AD7685 Analog-to-Digital Converter

When imported, this script describes the protocol used to read data from the AD7685. It also contains several multi-bit signals to illustrate their use.

3.2. MCP5200 LocalPlus Bus

Description of localplus.wm

3.3. PCI Read

Description of pci.wm

3.4. ModelSim Colors

Description of colors_modelsim.wm