Difference
Product Descriptions

SynaptiCAD offers four different products, all of which are based on a graphical timing diagram editor:

- VeriLogger Pro is a low-cost, full-featured Verilog simulator which includes waveform viewer, debugging environment, color-syntax editors, hierarchical browser, graphical and console execution.

- TestBencher Pro is a multi-diagram self-testing test bench generator for Verilog and VHDL, stimulus generator & Boolean Simulator & timing diagram editor

- WaveFormer Pro is an Interactive HDL Simulator, stimulus generator (VHDL, Verilog, SPICE, Viewlogic, Mentor, OrCAD, etc.), and timing diagram editor

- Timing Diagrammer Pro is a basic timing diagram editor

Product Overviews:

VeriLogger Pro is a new type of Verilog simulation environment that combines all the features of a traditional Verilog simulator with the most powerful graphical test vector generator on the planet. Model testing is so fast in VeriLogger Pro that you can perform true bottom-up testing of every model in your design, a critical step often skipped in the race to market. Test vectors can be imported or exported from HP logic analyzers, pattern generators, and 3rd party VHDL, Verilog, and SPICE simulators for reuse. Simulation features include waveform viewing, optimized gate-level simulation, single-step debugging, point-and-click breakpoints, hierarchical browser for project management, and batch execution.

TestBencher Pro is an EDA tool for generating self-testing, multi-diagram test benches for VHDL and Verilog. TestBencher Pro includes all of the features of WaveFormer Pro and Timing Diagrammer Pro. With TestBencher Pro, users draw a series of reusable timing diagrams (e.g., read and write cycles), with samples indicating where self-testing code should be generated. The user then writes a short bench script that makes calls to his timing diagrams. This allows the user to control the sequence in which the diagram test vectors are applied to the simulation model. TestBencher Pro was first introduced in 1996 and is targeted to the ASIC/FPGA and microprocessor interface designer. Retail price $9,500 for Windows 95/98/NT, Solaris, and HP-UX. See price sheet for volume discounts.

WaveFormer Pro is a revolutionary new rapid-prototyping EDA tool that helps you design faster and with fewer mistakes. WaveFormer Pro enables you to automatically determine critical paths, verify timing margins, adjust for reconvergent fanout effects, and perform "what if" analysis to determine optimum clock speed. WaveFormer Pro also lets you specify and analyze system timing and perform Boolean level simulation without the need for schematics or simulation models. When your timing diagram is complete, you can then generate digital stimuli for your favorite Verilog, VHDL, SPICE or gate-level simulator. WaveFormer Pro has the ability to import and annotate simulation and logic analyzer data, for publication quality design documentation. WaveFormer Pro includes all the features of Timing Diagrammer Pro, plus it has the ability to generate signals using Boolean Equations and Temporal equations. Retail price for Windows 95/98/NT is $1,750. For UNIX SunOS, Solaris, or HP-UX $3,500. See price sheet for volume discounts.

Timing Diagrammer Pro, for the budget conscious engineer, Timing Diagrammer Pro is a powerful, feature-laden timing diagram editor with an unbeatable price. Analyze your design in the early stages, before you have a schematic. Perform true full-range min/max timing analysis to eliminate all timing violations and race conditions. Timing Diagrammer Pro automatically calculates critical paths and adjusts for reconvergent fanout. Inserting diagrams into word processors is painless, thanks to a variety of image capture formats including WMF metafiles, CGM metafiles, Enhanced metafiles, EPS files, and MIF files. Includes bundled timing parameter libraries. Timing Diagrammer Pro was first introduced in 1994. Retail price is $975 for Windows 95/98/NT.

How to choose the product for you:

TestBencher Pro: If you simulate your designs in VHDL or Verilog and you are wasting time designing/maintaining test benches to model parts of a system for which you don't have complete behavioral models (e.g., bus interfaces, microprocessor interfaces, custom ASICs) then buy TestBencher Pro. TestBencher Pro will give you an easy way to graphically design reusable test benches. To evaluate TestBencher Pro's multi-diagram, self-testing HDL features do one of the TestBencher Pro tutorials located in the executable directory: tutb5a.doc for VHDL and tutb5b.doc for Verilog. For a complete list of TestBencher Pro features, visit our web site at http://www.syncad.com/.

WaveFormer Pro: If you use a simulator to test your designs but don't need to generate your own bus-functional models, then buy WaveFormer Pro. With WaveFormer you will be able to graphically draw waveforms and import/export the timing data to different simulator formats such as VHDL, Verilog, Viewlogic, Mentor, OrCAD, SPICE, and other simulators. WaveFormer Pro uses an open scripting language to import/export timing data so you can develop scripts to support in-house simulators. Check out our web site for our newest simulator scripts.

WaveFormer Pro: If you use test equipment to capture timing data from your designs/systems, then buy WaveFormer Pro. With WaveFormer Pro you will be able to import timing data into the WaveFormer for analysis and documentation or for conversion to different simulator formats. WaveFormer Pro uses an open scripting format to perform its import functions so you can write scripts to support in-house test and data acquisition equipment. WaveFormer Pro currently supports the Pod-A-Lyzer and HP's logic analyzers and support is being added for other popular test equipment.

WaveFormer Pro: If you want an extremely fast, extremely easy to use simulation environment for gate-level circuits, then buy WaveFormer Pro. WaveFormer Pro contains an HDL simulation engine plus a Logic Wizard that simplifies HDL code generation for gate-level circuits (Boolean equations, registers, and latches). For more information on these features see the advanced tutorial in the tutadv.wri file.

Timing Diagrammer Pro: If you want to be able to quickly draw and analyze system timing using a professional quality design tool, but you don't simulate your design and all your signals can be drawn manually, buy Timing Diagrammer Pro.

Timing Diagrammer Pro: If you want to be able to quickly document your system timing. All three products allow timing diagrams to be converted into WMF metafiles, CGM metafiles, enhanced metafiles, EPS files with previews, FrameMaker MIF files, and WYSIWYG copy-to-clipboard bitmaps. You can easily embed timing diagram images into word processing documents, spreadsheets, and desktop publishing programs such as FrameMaker, PageMaker, and Corel Draw.

All SynaptiCAD products with the same release number are file compatible.

All SynaptiCAD products are shipped with our Standard Parts Libraries and X86 Libraries.

All SynaptiCAD products support the TDML standard used by ECIX on-line data sheets.


Quick Overview
Quick Feature Overview

TestBencher Pro, VeriLogger Pro, WaveFormer Pro, and Timing Diagrammer Pro are all based on the same object-oriented timing diagram editor, so drawing and editing commands are the same across products. Chapters 1, 2, and 3 cover the basic drawing of waveforms, signals, clocks, and buses. The basic drawing and editing commands are:

- Use the Add Signal or Add Clock buttons to add signals and clocks.

- Use the left mouse button to draw a waveform segment from the end of the signal to the mouse cursor. The type of waveform drawn is determined by the red state button (HIGH, LOW, etc.). The state buttons automatically toggle between the two most recently activated states. The state with the small red "T" above the name is the toggle state.

- Double left click on an object to edit the object's properties.

- Drag-n-Drop to move objects.

Chapters 4, 5, and 6 cover the basic timing analysis features performed by placing parameters like delays, setups, holds, and samples on the timing diagram. These parameters define the causal relationships between signal edges. The right mouse button is used to add parameters and a few other objects like markers and text. Typically most of your time will be spent drawing or editing waveforms using the left mouse button: having the right mouse button control the drawing of less used objects saves you time. To add a timing parameter:

- Left click on one of the mode buttons Delay, Setup, Hold, Sample, Marker, or Text to activate a mode (the button will turn red).

- In one of the parameter modes (delay, setup, hold, or sample), left click on one transition to select it, then right click on the second transition to add a parameter between the first and second transitions.

- In text mode or marker mode, click the right mouse button to add the object.

Chapter 12 covers the advanced timing analysis is supported through the Interactive HDL Simulation engine included with WaveFormer Pro and TestBencher Pro. The Interactive HDL simulator supports behavioral HDL code, Boolean equations, and true min/max simulation. Changes in the input waveforms automatically trigger resimulations. The simulation features are reached through the Signal Properties dialog:

- Double left click on a signal name to open the Signal Properties dialog.

- Use the Boolean Equation or HDL code edit boxes to define the simulation for the signal.

- Check the Simulated Signal check box to continuously simulate the signal.

Chapters 7, 8, and 9 cover the image, printing, and timing diagram formatting features. All three products provide 6 different methods for embedding timing diagram images into documents and page layout programs. All vector-based image files are generated using the File > Print menu commands and include: WMF, CGM, and EMF metafiles, FrameMaker MIF files, and EPS with previews. The Edit > Copy-to-Clipboard command creates a Windows bitmap image of the current window that is compatible with almost all Windows programs. Also supported is the new industry standard TDML format and OLE.

The remaining chapters explain how WaveFormer Pro and TestBencher Pro are used with you other EDA tools:

- Chapter 11 covers temporal equation based waveform generation and state labeling equations.

- Chapters 13 and 14 cover import and export of waveform data. Over 20 different formats are supported including Verilog, VHDL, SPICE, and HP logic analyzers. Support for new import and export formats can be written by the user using the built-in Perl script interpreter.

- Chapter 15 discusses the various analog features.

The timing diagram editor is an object-based drawing environment. This means you will be able to extrapolate most functions if you know how to do something similar. For instance, one way to delete a signal is to select it by left clicking on the signal name then pressing the delete key on the keyboard. Similarly, to delete a delay object, select it with the left mouse button and press the delete key. You will find our drawing environment to be intuitive and user-friendly.

The Table of Contents will help you locate more advanced functions. Take some time to draw signals, press all the buttons, and look through all the menus, and work through the Tutorials. Before beginning a real design, you should read Starting a New Design in order to optimally configure your project files.

The Differences: Four Products, Four Choices section explains the differences between the three products.


Ultra-Quick Tutorial
Ultra-Quick Online Tutorial

WaveFormer Pro, Timing Diagrammer Pro, and TestBencher Pro are timing diagram editing tools used by electronic design engineers.  WaveFormer Pro and TestBencher Pro also include an interactive HDL simulator that lets you rapidly prototype circuits without drawing a schematic or designing a complete HDL model.

This Ultra Quick tutorial teaches the minimum amount of information needed to draw a simple timing diagram and simulate a simple Boolean equation. This was written for people that are really in a hurry and do not want to start with the more complete tutorials. There are 6 full design tutorials that are shipped with the product and evaluation version which cover the products in more detail with explanations of how these apply to actual designs.

Install and Run the program. If you are running the evaluation version, choose the WaveFormer Pro button on the splash screen. We will be drawing the timing diagram in Figure 1:

1) Add a clock CLK0 with a 100 nanosecond period:

- Click the Add Clock button in the upper left side of the button bar. This opens the Edit Clock Parameters dialog.

- Look at the Edit Clock Parameters dialog. Notice the Master Clock and Period Formula controls, these allow you to model circuits that related one clock to another. Notice the Draw Grid lines  and Grid options controls, these allow you to draw grid lines from the clock edges. All the other controls describe how the clock should draw itself. Chapter 2 covers clocks in more detail.

- Click OK button to accept the default period of 100ns.

2) Add signal SIG0 and draw its waveform

- Click the Add Signal button to add a blank signal with the default name of SIG0.

- Look at the buttons with the waveforms drawn on them on the button bar.  One button will be red, one button will have a small red T on it, and all the other buttons will be black. The red button shows the kind of waveform segment that will be drawn next. The red T indicates the toggle state, the kind of waveform that will be drawn after the next state is drawn. Initially the High and Low waveforms are the default and toggle states.

- Put the mouse cursor inside the drawing window on the same row as the signal SIG0 at about 100ns.

- Click the left mouse button. If the HIGH button was red, then a high waveform will be drawn from 0ns to the mouse cursor position.

- Look at the waveform buttons and notice that the red button and the red T button have changed.

- Move the cursor to 150ns and click the mouse button.  If the LOW button was red then a low waveform was drawn from the end of the signal to the cursor point.

- Draw some more segments on SIG0.  For more information on drawing and editing signals read Chapter 1: Drawing Waveforms.

3) Add signal SIG1 and simulate it as the a Boolean equation of SIG0 and CLK0

- Click the Add Signal button to add a blank signal with the default name of SIG1.

- Double click on the SIG1 name to open the Signal Properties dialog box. Chapter 1 covers basic signal operations and Chapter 12, tutorial 2 and 6 cover the Interactive Simulator.

- Enter the equation SIG0 and CLK0 into the Boolean Equation edit box.  The signal names are case sensitive.

- Check the Continuously Simulate check box. This setting automatically re-simulates SIG1 whenever an input waveform is changed.

- Click OK to close the dialog.

4) Experiment with the simulated signal.

- Drag and drop an edge on SIG0 and notice how SIG1 redraws itself. Notice you cannot drag and drop the edges of the clock signal, because clock edges are calculated from the clock's parameter values and cannot be affected by the mouse.

- Add a 10ns delay to the SIG1 equation by changing the equation to (SIG0 and CLK0) delay 10

5) Add a delay parameter named D0.

- Change to the delay mode by left clicking on the Delay button on the button bar. Section 5.1 covers Delays in more detail.

- Left click on the falling edge of CLKO at 50ns. This selects the clock edge and displays a green bar on the edge.

- Click the right mouse button on SIG0's first transition (at 100ns ). This draws a delay parameter from the selected clock edge to the SIG0 edge.

6) Edit the delay D0.

- Double left click on D0 to open the Delay Properties dialog.

- Enter 15 into the Min edit box.

- Enter 25 into the Max edit box.

- Click OK to close the dialog. Notice that the SIG0 transition has moved so that it starts 15ns from the clock edge. The gray uncertainty region is 10ns wide.

7) Your diagram should look similar to the timing diagram in Figure 1. Next try some experiments on the diagram:

- Select the clock edge with the delay on it, then choose the Edit > Insert Clock Cycles menu option. Click the OK button on the Clock Alteration dialog to insert a clock cycle to the left of the delay. Notice how the delay moves. The Edit > Delete Clock Cycles removes the added clock cycle.


Tutorials

There are several tutorials shipped with all versions of Timing Diagrammer Pro, WaveFormer Pro, VeriLogger Pro and TestBencher Pro. These tutorials demonstrate everything form how to draw basic timing diagrams to advanced HDL simulation techniques.

All tutorials are shipped in HTML format so that it can be viewed with a web browser on an platform.

General Design Tutorials

- Basic Drawing and Timing Analysis, covers the basic timing diagram editing environment. How to setup the base time unit and the display time unit of a timing diagram. How to draw and edit signals, delays, and setups. How to make basic time measurements. This tutorial is essential to anyone who is evaluating or learning to use any of SynaptiCAD's timing diagram environments.

- Simulation, Waveform Generation, and Parameters, covers the techniques for editing and customizing the information displayed by a parameter and its position on the screen. It also covers HDL simulation and Temporal waveform generation of signals, virtual and group buses, and general signal manipulation. This tutorial teaches the techniques to help quickly generate timing diagrams without having to spend a lot of time unnecessarily drawing signals. This tutorial is essential to anyone evaluating SynaptiCAD products.

- Advanced Modeling and Simulation Tutorial, demonstrates how WaveFormer Pro can quickly model and simulate a digital system of moderate complexity. The tutorial teaches the user how to: model state machines using Boolean Equation interface; locate and fix simulation errors; enter direct behavioral HDL code; use external HDL models; model tri-state gates using conditional operator; model n-bit gates using reduction operators; and model transparent latches. Waveformer Pro, VeriLogger Pro and TestBencher Pro users should perform this tutorial.

Specialized Feature Tutorials

- Parameter Libraries, covers the basic concepts of libraries and the use of macro lists. This tutorial is important to do before starting a large project. Using Libraries and macro lists can save you a lot of time if you if they are configured correctly..

- Advanced HDL Stimulus Generation, covers the basic concepts of VHDL-Verilog stimulus generation, language independent hex and binary bus translation, default mapping modes, and user defined types. WaveFormer, VeriLogger and TestBencher users should do these tutorials.

- Verilogger: Basic Verilog Simulation, covers the basic simulation features of VeriLogger Pro. This tutorial also discusses how to work create and manage projects, as well as how to build and simulate your design. VeriLogger Pro and TestBencher Pro users should perform this tutorial.

- TestBencher Pro: Basic Tutorial (on-line tutorial), covers the basic concepts of using TestBencher Pro to generate bus-functional models for Verilog and VHDL. It covers signal properties (type, direction, vector size, and bi-directional segments), samples, parameterized state values, end diagram markers, interface diagrams, modifying top-level template files, and generating test benches. TestBencher Pro users should do this tutorial.

- TestBencher Pro: Performing a Sweep Test, covers how to use TestBencher Pro to create a global clock generator, work with cyclic timing transactions, create a sweepable delay, and create a continuous setup checker. TestBencher Pro users should perform this tutorial.

Evaluators: If you are evaluating the product we recommend that you do at least the General Design Tutorials. These will give you a good idea of the flexibility of the product. If you design in VHDL or Verilog you should also look at the HDL tutorial and the TestBencher tutorials. If you do a lot of documentation, then the Advanced Editing will show you some more of the editing features.

New Customers: In order to effectively use WaveFormer Pro or Timing Diagrammer Pro you should do the first three tutorials: Basic, Advanced, and Libraries. If you use VHDL or Verilog then you should also do the HDL tutorial. If you have bought TestBencher Pro then you should do the TestBencher tutorials. Also if you use the Interactive simulator features, the Advanced Modeling and Simulation tutorial will demonstrate how to model and simulate.


Introduction to Help

BOOK: To read this help like a book use the browse buttons >> and << at the top of the screen. This will take you to the beginning of each chapter which has a brief explanation of what the chapter covers and dynamic links to each chapter sub-topic. Some topics to read before starting a group project are:

Ultra Quick Overview

Quick Overview

Tutorials

Starting a New Design

INDEX and TABLE OF CONTENTS: The Table of Contents gives a broad overview of the available topics. And the Design function Index gives a flat view of the view of all of the topics.

Table of Contents

Design Functions Index

NEW FEATURES: If you are upgrading to a new version of Timing Diagrammer Pro, WaveFormer Pro, or TestBencher Pro then take a look at these pages:

New 6.5 Features

New 6.0 Features

New 5.0 Features

New 4.5 Features

New 4.0 Features

New 3.5 Features

New 3.0 Features

New 2.5 Features

New 2.0 Features

New 1.5 Features

New 1.4 Features

If you are evaluating our product line for the first time please take a moment to read Differences: 3 Products 3 Choices page to give you an overview of which features are included in each product.


Table Of Contents

Picking the right product:

Differences: 4 Products 4 Choices

Quick Overview

Setting up a new project:

Starting a New Design

Base and Display Time Units

Standard File Formats

Basic timing diagram objects and drawing methods:

Chapter 1: Signals and Waveforms

Chapter 2: Clocks

Chapter 3: Group Buses and Virtual Buses

Chapter 4: Parameters: Delay, Setup, Hold, and Sample

Chapter 5: Timing Analysis and Time Formulas

Chapter 6: Measurement and Zooming

Documentation Features

Chapter 7: Text Objects

Chapter 8: Documentation: Text objects, Image Files, and Printing

Chapter 9: Printing and Image Generation

Embedding Timing Diagrams Images into Documents

Stimulus Generation and Signal Generation Features

Chapter 10: Parameter Libraries

Chapter 11: Waveform Equation Generation

Chapter 12: Interactive HDL Simulation

Chapter 13: Stimulus Generation and Waveform Import

Chapter 14: Writing Waveperl Scripts

Chapter 15: Analog Features

Advanced Simulation Features:

Chapter 16: Waveform Comparisons

Appendices:

Appendix A: Menu Listings

Appendix B: Colors and Their Significance

Appendix C: Common Questions

Tutorials

Design Function Index


Design Function Index

Starting a New Design:

Differences: 3 Products 3 Choices

Base and Display Time Units

Tutorials

Chapter 1: Signals and Waveforms

1.1 Adding and Deleting Signals

1.2 Editing Properties

1.3 Drawing Waveforms

1.4 Edit Waveforms with the Mouse

1.5 Edit Waveforms using Dialogs

1.6 Editing WaveForm Edges from an Equation

1.7 Moving Signals (Drag and Drop)

1.8 Hiding and Showing Hidden Signals

1.9 Block Copy of Waveforms

1.10 Copy and Paste Signal

1.11 Changing the Auto Name Generation

Chapter 2: Clocks

2.1 Adding

2.2 Clock Dialog

2.3 Master Clocks and Using Formulas in Clocks

2.4 Editing

2.5 Inserting and Deleting Clock Cycles

2.6 Getting the exact time of a Clock transition

2.7 Grid Lines on Clocks

Chapter 3: Group Buses and Virtual Buses

3.1 Adding and Editing Virtual Buses

3.2 Virtual State Information

3.3 Adding Group Buses

3.4 Editing Group Buses

3.5 Binding and Unbinding Group Bus edges

3.6 Aligning Member Signal edges with a Group Bus edge

3.7 Expanding Group Buses

Chapter 4: Parameters - Delay, Setup, Hold, and Sample

4.1 Delays

4.2 Setups and Holds

4.3 Samples

4.4 Parameter Properties Dialog

4.5 Deleting parameters in the drawing window

4.6 Smart Parameter Sharing

4.7 Smart Parameter Lookup

4.8 Moving Parameter Start and End Positions

4.9 Hiding and Showing Hidden Parameters

Chapter 5: Timing Analysis and Time Formulas

5.1 Effects of multiple delays forcing the same transition

5.2 Edge Properties Dialog

5.3 Effects of Common Delays (Reconvergent Fanout)

5.4 Locking and Unlocking all edges on a Signal

5.5 Design Preferences

5.6 Time Formulas

5.7 Operators and Dot Attributes

5.8 Free Parameters (variables in formulas)

5.9 Macros in Formulas

Chapter 6: Measurement and Zooming

6.1 Time Readouts and Delta Measurements(fast scrolling)

6.2 Time Markers for Measurement

6.3 Measurement Capabilities Overview

6.4 Centered Zooming

6.5 Time Markers for Time Breaks and Compression

6.6 User Efficiency Features

6.7 Delete mode

6.8 Specifying a User-Defined Radix

Chapter 7: Text Objects

7.1 Adding Text Objects

7.2 Editing a Text Objects: multi-line, fonts, and attachments

7.3 Moving a Text Object

7.4 Using control codes in a Text Object

7.5 Deleting a Text Object

Chapter 8: Formatting Timing Diagrams

8.1 Waveform Display

8.2 Parameter Display

8.3 Signal Name Display

8.4 Marker Display

8.5 Diagram Window Display

8.6 Parameter Table Display

8.7 Drawing Preferences Dialog

8.8 Font and Color Settings

Chapter 9: Printing and Image Generation

9.1 Embedding Timing Diagrams Images into Documents

9.2 Copy to Clipboard

9.3 WMF Images for Microsoft Word

9.4 MIF Images for FrameMaker

9.5 Vector and Raster Image Files

9.6 Managing Multiple Views(Images) of a Diagram

9.7 OLE Embedding

9.8 TDML Management

9.9 Print the Drawing Window

9.10 Print the Parameter Window

Chapter 10: Parameter Libraries

10.1 Adding Libraries, Specifications, and Macros

10.2 Using Library Parameters (Referencing)

10.3 Making Libraries

10.4 Converting Libraries

10.5 Merging a Library into a Project

10.6 Copy referenced parameters into the project

10.7 Editing libraries

10.8 Updating the project from the libraries

10.9 View Library Parts Dialog

Chapter 11: Waveform Equation Generation

11.1 Generate Waveforms From Temporal Equations

11.2 Counter State Labeler

Chapter 12: Interactive HDL Simulation

12.1 Boolean Equations with Delays

12.2 Advanced Gate Representation

12.3 Register and Latch Equations

12.4 Multi-Bit Simulation

12.5 Direct HDL Simulation

12.6 Finding and Fixing Simulation Errors

12.7 Simulation Preferences

12.8 Simulation Behind the Scenes

12.9 Report Window

12.10 Report Window Editor Commands

Chapter 13: Stimulus Generation and Waveform Import

13.1 Export Instructions for Stuimulus Generation

13.2 Exporting VHDL and Verilog Stimulus

13.3 Exporting SPICE Stimulus

13.4 Export List of Simulators and Test Equipment

13.5 Exporting HP Pattern Generator Stimulus

13.6 Exporting Altera Stimulus

13.7 Exporting STIL Test Vectors

13.8 Instructions for Importing Waveforms

13.9 Import List of Supported Simulators and Test Equipment

13.10 Import from Spreadsheets

13.11 Advanced: Modifying Scripts

13.12 Advanced: Adding New Scripts

Chapter 14: Writing Waveperl Scripts

14.1 Why a scripting language?

14.2 What is Perl?

14.3 Perl data types

14.4 Perl's global variables

14.5 Using variable substitution in Perl text strings

14.6 Pattern matching (regular expressions)

14.7 Notes on writing import/export scripts

14.8 Tips on debugging Waveperl scripts

14.9 Perl and WaveFormer Pro API Documentation

14.10 Object Properties

14.11 Script Naming Conventions

Chapter 15: Analog Features

15.1 Displaying Digital Signals as Analog Waveforms

15.2 The Analog Signals Property Dialog

15.3 Quantizing Analog Signals (Real Radix) Into Digital Signals

15.4 Exporting Analog Signals

15.5 Importing SPICE Transient Simulation Waveforms

Chapter 16: Waveform Comparisons

16.1 Compare Signals

16.2 Comparing Individual Signals

16.3 Comparing Timing Diagrams

16.4 Display Options for Compare Signals

16.5 Adjusting Comparison Tolerances

16.6 Modifying Comparison Signals Simultaneously

Appendix A: Menu Listings

Appendix B: Colors and Their Significance

Appendix C: Common Questions


Purpose
About Timing Diagrammer Pro and WaveFormer Pro

Timing Diagrammer Pro's purposes:

- To make life easier for all those digital designers with cramped hands, worn erasers, and piles of crumpled paper designs.

- To help everyone who has ever documented a timing diagram using dashes and slashes in a word processor.

- To eliminate the tedium of post-design documentation. With Timing Diagrammer Pro you document your project as you design it.

WaveFormer Pro's purposes:

- To smooth the transition between timing diagram tools, digital simulators, and logic analyzers.

- To be the most useful waveform stimulus tool on the market.


Ultra Quick Overview

This is a get-started-quick alternative to reading the manual. Be warned: you will miss the most productive features of WaveFormer Pro.

Timing Diagram Drawing Features:

- Click Add Signal button to add signals.

- Use left mouse button to draw waveforms and move things around.

- Use right mouse button to perform function highlighted in second group of buttons on button bar (like adding delays or text).

- Double click left mouse button to edit objects (like signal names, text objects, parameters, edges, clocks).

- Double left click on a signal name to open the Signal Properties dialog box. To simulate a signal type an equation into the Boolean equation edit box, check the continuously simulate check box, and click the Simulate button. Signal should draw itself. Errors are displayed in the Report Window. Equations are case sensitive.

- To embed timing diagram images into documents use one of the following methods:

- For high quality vector images, check the Files > Print Diagram and choose one of the Print-to-file formats: three types of metafiles, EPS, and FrameMaker MIF format. For Word users choose WMF metafile and use Paste command to copy image (for complete instructions).

- Edit > Copy-to-Clipboard quickly puts a bitmap image of the current timing diagram into the clipboard. Use the Paste command to embed image into document (like Word). This is a bitmap so it may displayed weird but should print fine. Bitmaps can not be scaled or edited like the high quality vector images.

- Waveform Stimulus: In the File Open and File Save dialogs use the List Files of Type list box to convert to different file formats.

- Waveform Generation: Quickly generate waveforms using Boolean and Temporal Equations.

- Automatic Resimulation: Double click on a signal name, enter a Boolean equation, and click the Continuously button to get automatic resimulation as your diagram changes.

For more information read Quick Overview, work through the Tutorials, use the on-line help and the status bars for details and operational hints. Read Differences: 3 Products 3 Choices to figure out the differences between the 3 products.


Starting a new Design

Before starting a new design there are a few things to consider.

1) Choose the Base Time Unit and Display Time Unit for the current project. The Display Time Unit sets the units for entering and displaying time values. The Base Time Unit controls the time resolution of the design, and it is usually an order of magnitude lower than the Display Time Unit. If you normally use nanoseconds, then a good Base Time Unit is picoseconds. The next section describes Base and Display Time Units.

2) Decide if you will be using a formal Library structure. If so, then decide on macro and library names, setup the library search list, and make your libraries. Chapter 10 and the Parameter Library Tutorial describes this procedure.

3) If you are not using a formal Library structure, then decide what kinds of free parameters you will need to represent common parts in your design. Either type these in or extract them from older projects using Libraries > Save Free Parameters As Library menu option. Chapter 5 covers the use of Free Parameters.

4) Add all clocks with correct period and duty cycle. If you encounter clock frequency rounding errors then lower the Base Time Unit.

5) Add everything else (signals, parameters, etc.).


Base Time Units and Display Time Units
Base and Display Time Units

The Base Time Unit sets the smallest amount of time that can be represented in the program. The Display Time Unit sets the units of all times displayed and entered.

Normally the base time unit is a magnitude smaller than the display time unit. This gives you the ability to specify exact values while allowing most other numbers to be entered at a convenient level.

The program has a limit of approximately 1 billion time units (varying with screen resolution and size). For this reason the base time unit should be chosen to match the range of times needed by your design.

To set the Base Time Unit:

- Choose the Options > Base Time Unit menu item. This will display the Base Time Unit dialog box.

- Select the new base time unit by clicking the proper radio button (fs, ps, ns, us, ms).

- Next, decide how the existing values in the project will convert to the new base time unit. For example, if you change from ns to ps then: Keep All Times makes an existing 5ns into 5000ps (the same time value); Scale All Times does not change the numbers but it changes their meaning (5ns will now become 5ps); Scale Parm Times, Keep Signal Times is a combination of the other two methods.

- Click the OK button to make the changes.

To set the Display Time Unit:

- Choose the Options > Display Unit menu item. This will display a submenu of display time units. The checked time is the current Display Time Unit. (Default is ns = nanoseconds).

- Click on a time unit to make it the new Display Time Unit.


Standard File Formats

Timing Diagrammer, WaveFormer, VeriLogger and TestBencher Pro support several standard file formats: *.tim, *.txt, and *.fp. WaveFormer and TestBencher Pro also support import and export formats for simulators and test equipment (this information can be found in Chapter 13: Stimulus File Generation and Waveform Import). The standard file formats are:

- Timing Project (*.tim) saves all signals and parameters as well as project options settings in WaveFormer Pro's "Timing Project File Format". This is the normal way to save a timing diagram file.

- Text Free Parm (*.txt) saves just the free parameters in a spreadsheet compatible format: comma or tab separated with a header (first line must be "NAME, MIN, MAX, COMMENT"). This is the standard way to make a library file. This is also compatible with Chronology® library files (formulas are not supported).

- Free Parm (*.fp) saves just the free parameters in Timing Project File Format. This is one way to make a library file.

- All files (*.*) useful for viewing all files in a directory. The program will guess at the file format based on file contents and extension.

For more information on the Timing Project File Format, read fileform.wri the installation disk (full version). This information is primarily intended for engineers who are designing interfaces to other software packages and need to know the details of the output file format.

Trademarks


Chapter 3: Group Buses and Virtual Buses
Chapter 3: Group and Virtual Buses

A bus is a signal that displays the values of a group of member signals. Sometimes it is important to be able to uncouple the bus and make use of a value on an individual member signal. At other times, the bus will always be treated as a whole (no individual signal values are needed). In order to take advantage of this distinction there are two kinds of buses: Group Buses for working with individual member signals, and Virtual Buses for quickly and easily displaying a signal that looks like a bus.

- Group Buses are composite signals whose transitions and state values are determined by their member signals. Instead of individually editing related signals (like the address lines of a part), a bus can compress all the signals’ data into one compact signal. The individual bus signals can be uncoupled, or displayed along with the bus. Buses are added using the Add Bus button and selecting a bus type of Group Bus.

- Virtual Buses are normal signals that are drawn with Valid, Invalid, and TriState states and use virtual state information to represent bus values. Virtual buses can be added using the Add Signal button or using the Add Bus button and selecting a bus type of Virtual Bus. The state information is added using the HEX state button. A virtual bus doesn't have member signals.

Virtual buses are faster and easier to work with than group buses, because group buses cause many signals to be generated. For instance, a 32 bit group bus means that 33 signals (32 member signals and one bus signal) are drawn and updated each time the bus changes. If a delay parameter ends on a bus edge all the member signals must be updated when the delay is changed. Use group buses only when you need to get access to an individual member signal at some point in your design. Virtual Buses only need the same memory resources as any other individual signal, regardless of the size that they represent (e.g., 8,16, 32 or more bit bus). Group buses are primarily useful when you have several signals already existing (possibly imported from a simulation run or from a logic analyzer) and you want to view them as a bus value.

Virtual Buses are the recommended way to display and work with bus information. When exporting to VHDL and Verilog stimulus files and test benches, Virtual Buses are exported as vectors. To learn more about Virtual Buses read:

3.1 Adding and Editing Virtual Buses

3.2 Virtual State Information

Group Buses should only be used when the member signals need to be separated and used outside the bus. For instance if you have imported eight address signals from a simulator and would like to view the value of the address bus, then these signals can be easily compressed into a group bus and displayed as one signal. When exporting to VHDL or Verilog, only the member signals are exported (there is no vector that represents the bus). To learn more about group buses read:

3.3 Adding Group Buses

3.4 Editing Group Buses

3.5 Binding and Unbinding Group Bus Edges

3.6 Aligning Group Bus Edges

3.7 Expanding Group Buses

Chapter 4: Parameters Delay, Setup, Hold, & Sample


3.1 Adding and Editing Virtual Buses

If you do not need to display the individual member signals of a bus, you can use the virtual state information of a single signal to make a virtual bus. This will increase computational performance for timing diagrams that use large buses (32 bits or more) if timing parameters are attached to the buses.

To add a virtual bus:

- Click the Add Signal button to add a new signal.

- Sketch the bus waveform.

- Buses drawn with valid, invalid, and tristate states look the best. To draw a bus with only consecutive valid states click twice on the Valid state button so it stays active (state buttons will not toggle). The Valid button should be red and have a red T at the top of the button.

To set the width of a virtual bus:

- Double click on the name of the virtual bus to open the Signal Properties dialog.

- Enter the MSB and LSB in the edit boxes at the bottom of the dialog, OR edit the signal name to include the MSB and LSB inside brackets (for example: SIG2[31:0] is a 32-bit bus).

Note: The MSB, LSB, and brackets are not part of the signal name. When using the signal in equations, use only the original signal name (e.g., "SIG1 and SIG2[31:0]" is incorrect and will produce an error).

To edit the segment values of a virtual bus:

- Double left click on a segment to open the Edit Bus State dialog.

- Type the bus segment data into the Virtual field. Use the <Alt>-N and <Alt>-P keys or Next and Prev buttons to move between the different segments on the virtual bus. Then click OK to close the dialog.

In the next section you will learn how to use the Virtual field to export user defined type information for VHDL files.

Chapter 3: Group and Virtual Buses


3.2 Virtual State Information

There are seven standard graphical states (high, low, tristate, valid, invalid, weak high, and weak low) which cover most circuit applications. However, some simulation languages require more complex state types such as integers and enumerated data types. To support these types, SynaptiCAD products allow virtual state information to be attached to signal segments. Any arbitrary text string can be used as a virtual state (e.g., A0C, 5 + 3, blue level, and 24 are all valid virtual states). Note that spaces are valid characters in a virtual state string.

Virtual state information is displayed in the center of a signal segment (the text is hidden if the segment is shorter than the text of the virtual state). Since a bus displays the states of its member signals in the same manner, virtual states are used to create virtual buses.

To add virtual state information to an existing signal:

- Left click on a segment in the signal. This selects the segment and draws a selection box around it.

- Left click on the HEX state button on the button bar. This selects the button and opens the Edit Bus State dialog box.

- Type any string into the Virtual field to set the virtual state information which will be displayed in the center of the segment.

- Click the Next or Previous button to edit the next or previous segment in the signal. Alternatively, use the Alt-N or Alt-P keyboard shortcuts (recommended for faster editing).

- Click OK to close the dialog box.

Note: The virtual state information associated with a transition is supplemental to the standard state assigned to a signal transition. The standard state (High, Low, Tristate, etc.) controls the graphical appearance of the segment and the virtual state sets the text in the segment. WaveFormer Pro does not attempt to interpret virtual state information. It only displays and saves the information. Waveperl scripts have access to virtual state information, and it is the script writer's job to define the meaning of virtual state information within a particular script. The VHDL and Verilog scripts use this information.

Chapter 3: Group and Virtual Buses


3.3 Adding Group Buses

Group Buses are composite signals whose transitions and state values are determined by their member signals. Instead of individually editing related signals (like the address lines of a part), a bus can compress all the signals’ data into one compact signal (Note: group buses are currently limited to a maximum size of 64 signals, but this will be increased in later versions).

Before a group bus can be created, its member signal names must be selected or new signals need to be created.

To create a bus from existing signals:

- Select the signals in order from lowest bit to highest bit of the bus. Select signals by left clicking on the signal names.

- Left mouse click on the Add Bus button on the left-hand side of the button bar or choose the Bus > Add Bus menu option.

To create a bus and its member signals:

- Make sure that no signals are selected (clear selected signals by clicking in the drawing window).

- Left click on the Add Bus button or choose the Bus > Add Bus menu option. This will open up the Add Bus dialog box.

- Type the name of the bus into the Name box. The member signals will be named the same name as the bus plus their signal number.

- Select the Group Bus radio button.

- Type in the starting number (least significant bit) of the bus. This will probably be either a 0 or a 1 depending on how you like to start counting.

- Type in the ending number (most significant bit) of the bus.

- Choose the OK button. The signals including and in between the start and end numbers will be added and a bus will be created.

Note: Member signals are normally still visible after being merged into a bus. To change the default so that the member signals are hidden, choose the Options > Drawing Preferences menu and check the Hide signals on bus merge option in the dialog box. The View > Show Hidden Signals menu can be used to unhide the signals.

Chapter 3: Group and Virtual Buses


3.4 Editing Group Buses

Group buses are a special type of signal, so they can edited just like regular signals. Any changes made to the bus will be reflected in the member signals. The following techniques can be applied to group buses:

Change the Bus Display: A group bus can display its data in hex or binary. To change from one representation to another:

- Choose the Options > Drawing Preferences menu option. This will open a dialog of the same name.

- Check the Display Bus in Hex {else Bin} check box to display the bus values in hexadecimal, or uncheck it to display the values in binary.

HEX Button Editing: By using the Edit Bus State dialog box, a bus can be edited by typing the value of a bus segment in hexadecimal or binary. To edit a bus segment with the Edit Bus State dialog:

- Double click on a segment to open the Edit Bus State dialog.

- The Hex box accepts numerals 0-F. The Binary box accepts numerals 0 and 1.

- Both boxes also accept L, H, Z, V, and X. Where L = weak low, H = weak high, Z = tristate, V = valid, and X = invalid state.

- Type in a new bus state into the Hex or Binary edit boxes and press the OK Button to save the changes.

Normal Signal editing techniques:

- Drag and drop bus transitions using the left mouse button.

- Double Left click on a bus transition to open up the Edge Properties dialog. With this dialog you can lock the bus transitions to a specific time or type in an exact location that the transition should occur.

- Left click on a segment and then left click on a STATE button to change all the signals in that segment to the new state (like all ones or zeros).

- Left click and hold inside of a bus segment, and drag to insert a new bus state.

Chapter 3: Group and Virtual Buses


3.5 Binding and Unbinding Group Bus Edges

Binding a group bus edge adds invisible links to all the member signal transitions that occur at the same time as the bus edge. This means that when a bounded member signal is moved the bus transition will also move.

To Bind a bus edge:

- Left click on the bus edge to select it.

- Choose the Bus > Bind Bus Edge menu option. The edge will now be bound. To test the binding drag a member signal edge and see if the other signal edges move.

To Unbind a bus edge:

- Left click on the bus edge to select it.

- Choose the Bus > Unbind Bus Edge menu option. To test the unbinding drag a member signal edge and see if the other signal edges do not move.

Note: Bus edges are automatically bound when a delay is added to the bus transition.

Tip: If you wish to bind edges and they are not at the exact same time, use the align bus edge command first before binding.

Chapter 3: Group and Virtual Buses


3.6 Aligning Group Bus Edges

The Align to Bus edge menu function moves all the nearby member signal transitions to the exact time of the selected bus edge. Since each bus edge is caused by a member signal edge, mis-aligned signal edges cause several bus edges to occur close together.

To align all member signal transitions within a ten pixel range:

- Left click on the bus edge to select it.

- Choose the Bus > Align to Bus Edge menu option. This will cause all the signal transitions within ten pixels of the bus edge to move to the exact time of the bus transition (if the bus edge is a max edge, signal transitions are aligned using their max time).

Note: Align edges before adding a delay to a bus transition. When a delay is added to a bus edge all member signal transitions that occur at that specific time are bound and will move with the bus delay. If any member signal transitions are not aligned properly, they will not be affected by the delay.

Chapter 3: Group and Virtual Buses


3.7 Expanding Group Buses

Expanding a bus deletes the bus and any parameters or text attached directly to the bus. The member signals of the bus are automatically shown if they were hidden.

To expand or delete a bus:

- Left click on the bus name, then choose the Bus > Expand & Delete Bus menu option.

Note: Buses can be deleted by selecting the bus name and pressing the delete key on the keyboard. This operation does not affect the member signals, so hidden member signals will stay hidden.

Chapter 3: Group and Virtual Buses


Chapter 1: Signals and Waveforms

Signals and drawn waveforms are the simplest form of signals that make up timing diagrams. Later chapters cover more advanced signal types, which calculate their own waveforms or display specialized information:

- Clocks, repetitive waveforms that draw themselves, are covered in Chapter2: Clocks.

- Group Buses and Virtual Buses, signals that display the values of their member signals, are covered in Chapter 3: Group Buses and Virtual Buses.

- Simulated Signals which calculate their waveforms based on Boolean equations, registered logic, and behavioral HDL code are covered in Chapter 12: Interactive HDL Simulation.

The following functions cover adding signals and drawing waveforms:

1.1 Adding and Deleting Signals

1.2 Editing Signal Properties

1.3 Drawing Waveforms

1.4 Editing Waveforms with the Mouse

1.5 Editing Waveforms using Dialogs

1.6 Editing WaveForm Edges from an Equation

1.7 Moving Signals (Drag and Drop)

1.8 Hiding and Showing (Hidden) Signals

1.9 Block Copy of Waveforms

1.10 Copying and Pasting Signals

1.11 Auto Naming of Signals

Chapter 2: Clocks


1.1 Adding and Deleting Signals

To add a new signal:

- Left click on the Add Signal button.

To delete a signal or multiple signals:

- Select the signal names by left clicking on them. A selected signal's name is highlighted.

- Then press the delete key on the keyboard or select the Edit > Delete menu option.

Note: When a signal is deleted, any parameters or text connected to it are also deleted. If you make a mistake deleting, you may undo the delete by choosing the Edit > Undo or Edit > Undo Delete menu item.

Chapter 1: Signals and Waveforms


1.2 Editing Signal Properties

To edit signal properties (name, Boolean equation, export, direction, and type):

- Double left click on the signal name to open the Signal Properties dialog box.

- Enter the new data and click OK to close the dialog box.

Note: The properties of several signals can be edited at the same time by selecting the signals then right clicking in the Label window and select the menu option Edit Selected Signal(s) from the context menu.

There are four input sections in the Signal Properties dialog box:

1) Name Section: There will be a valid default name already in the edit box. Names must be at least one character long (no spaces are allowed). Signal names beginning with "$$" are reserved for internal use. Signal names should not begin with a digit or contain mathematical operators. Signal names should not be the same as common Boolean operators.

Active Low Name Checkbox: If checked, the name of the signal is appended with a $BAR and the signal is displayed with a bar (line) drawn over the name. If an active low signal is used in the equation of another signal, then the name of the active low signal is name$BAR.

Analog Properties button: Opens the Analog Properties (Jump to new SPICE page) dialog which lets you set the logic voltage levels and rise/fall times used by the SPICE output feature. There is also a Properties button that opens the general Object Properties dialog box. This is an advanced feature that is available to users writing Perl scripts to support the storage/editing of user-defined attributes attached to WaveFormer objects. For more information read Chapter 14: Object Properties.

Grid Line Button: Opens the Grid Options dialog, which specifies how to draw vertical lines from the signal edges.

2) Logic Wizard Section: In WaveFormer Pro and TestBencher Pro, a signal can be described as a registered Boolean equation of other signals. Specify the Boolean equation, timing information, and register type using this dialog. Click on the Simulate Once button to see the results. Choose the Simulate radio button for automatic resimulation. The Drive state is the default state for signals and is used to describe signals that are drawn by the user. The Watch state is used to view signals embedded in external models.  For more information read Chapter 12: Interactive HDL Simulation.

3) Temporal Equation Section: A signal's waveform can be generated using a Temporal Equation and automatically labeled using a Label waveform equation. For more information read Chapter 11: Waveform Equation Generation.

4) Export Properties Section: These properties affect how WaveFormer Pro and TestBencher Pro export signals.  They also affect how a signal's values are displayed.

- Export Signal check box determines whether or not a signal will be exported to stimulus and test bench files.

- Analog Diaplay: This checkbox is used to determine is the selected signal will be displayed as an analog signal or not.

- Direction: Used for exporting VHDL or Verilog code. See the TestBencher pro manual for more information.

- Size Ratio: Used to determine the display height fo the signal.

- VHDL: and Verilog: Determine the HDL type of the signal (e.g., std_logic, integer, wire,...). The user can also enter a new type into the drop-down edit box. The VHDL and Verilog history lists can be rearranged by editing the .ini file (waveform.ini for WaveFormer Pro, and tbench.ini for TestBencher Pro) located in the Windows directory. Be sure the program is not running when you edit its .ini file

- Bus MSB and LSB: Determine the bit size of the signal. A single bit signal is (0,0). This is used by the Interactive HDL Simulator to determine the result of multi-bit operations. This is also used during the export of VHDL or Verilog stimulus files and test benches to determine how to initialize the signal in the HDL model.

- Radix: Determines the base in which signal values are displayed.

Chapter 1: Signals and Waveforms


1.3 Drawing Waveforms

The timing diagram editor is always in drawing mode. To draw the waveform of a signal:

- Place the mouse cursor inside the drawing window at the same vertical row as the signal name.

- Press down on the left mouse button. This draws a waveform from the end of the signal to the mouse cursor.  The red state button on the button bar determines the type of waveform drawn (see below for more information on the state buttons). The cursor shape also mirrors the red state button.

- Move the mouse to the right and click again to draw another segment.

The state buttons are the buttons with the waveforms drawn on their face: HIGH, LOW, TRIstate, VALid, INValid, WHI weak high, and WLO weak low. When a state button is activated, it is pushed in and colored red. The active sate will be the type of waveform that is drawn next. To activate a state button, left click on it.

The state buttons automatically toggle between the two most recently activated states. The state with the small red "T" above the name will be the toggle state. The initial activated state is HIGH and the initial toggle state is LOW.

When you draw signals using the mouse, the signal edges are automatically aligned to the closest edge grid time. The edge grid can be controlled from the Options > Grid Settings menu item.

Chapter 1: Signals and Waveforms


1.4 Editing Waveforms with the mouse

There are five mouse-based editing techniques used to modify existing waveforms. The first two techniques act on signal transitions:

1) Drag-and-Drop a signal transition:

- Left click on a signal transition and drag it to the desired location.

- Note: If you try to drag a transition past a second transition you will end up pushing the second transition unless it is fixed by a delay parameter or it is locked in the Edge Properties dialog box. When several transitions are squeezed together they look much thicker than a normal transition.

2) Drag-and-Drop groups of signal transitions with <Shift> and <Ctrl>:

- Hold down the <Shift> or <Ctrl> key while dragging a transition. This causes all the transitions to the right or left (respectively) to move with the selected edge.

- Note: Holding down both keys causes all the edges on the entire signal to move.

The other three techniques all act on signal segments (the waveforms between any two consecutive signal transitions). To choose the segment to operate on, left click on it. A selected segment will have a highlighted box drawn around it. If you try to select a narrow segment and one of the transitions gets selected, widen the segment by clicking the Zoom In button, which is located on the right hand corner of the button bar. To insert, change, or delete a segment:

3) Click-and-Drag to insert a segment into a waveform:

- Left click and hold in the middle of a wide segment (for this operation to work the segment must be wide enough to be selected).

- Drag to the right and then release the mouse. A new segment will be added in the middle of the original segment.

4) Change a segment's graphical state by selecting it and then pressing a state button:

- Left click in the middle of the segment to select it.

- Left click on a state button to apply that graphical state to the segment. State buttons are the buttons with the waveforms drawn on them.

- Note: If you change the level of the segment to the same level as an adjacent section, the transition between them will turn red. This transition can then be deleted if necessary.

5) Delete a segment by selecting it and then pressing the Delete key:

- Left click in the middle of the segment to select it.

- Press the delete key on the keyboard.

These techniques will only work on signals that are drawn. They will not work on generated signals like clocks and simulated (blue) signals that are covered in later chapters.

Chapter 1: Signals and Waveforms


1.5 Editing Waveforms Using Dialogs

Normally most waveform editing is performed using the mouse. However, edge manipulation and state values can be edited using dialogs. Dialog editing provides an interface for making precise changes to a signal's waveform.

1) Moving and Locking Edges: Edges can be moved or locked using the Edge Properties dialog. Chapter 5:Timing Analysis and Time Formulas discusses timing analysis features of this dialog. To edit a signal's edge:

- Double click on an edge of the signal transition to open the Edge Properties dialog.

- To move a signal, enter a new min or max time then click the OK button.

- To lock an edge so that it cannot be moved, check the Locked checkbox.

2) Adding a Virtual state to a Segment: In addition to the seven graphical states, a virtual data value can be added to a segment using the Edit Bus State dialog. To add a virtual state to a segment:

- Double click on the middle of a segment to open the Edit Bus State dialog.

- Type a new value into the Virtual edit box. A value can be any string like "valid data", "blue", or "F3A".

- Note: The Edit Bus State dialog is modeless so you do not have to close it to continue to do other editing functions. Each time you select a segment, that segment's information is displayed in the dialog. This makes it easy to change a lot of segments at one time. If the dialog gets in your way you can close it or roll it up by pressing the line button at the top right of the dialog window bar.

Chapter 1: Signals and Waveforms


1.6 Editing WaveForm Edges from an Equation

You can edit all or a range of the edges on a given signal or group of signals using the Edit Waveform Edges dialog. This feature works for all signals except clocks (whose edges are edited through the Clock Properties dialog) and group buses. All of the edges of the selected signals that fall within a specified time range will be edited according to the equation provided. By default, the time range begins at the beginning of the diagram and ends with the last signal edge.

To Edit Waveform Edges:

- Select the Edit > Edit Waveform Edges menu option. This will open the Edit Waveform Edges dialog.

- Select the signals you wish to modify in the diagram window. Note: If no signals are selected, all signals will be modified except clocks and group buses.

- Specify the time range to modify using the From: and To: edit boxes.

- Enter the equation to be used for waveform modification. The variable that represents the current time for the edge is $time. An example equation is:

($time + 10)/(4)

This will take the current time, add ten, and then divide the result by four.

- Press the Apply button to move the waveform edges. This will leave the Edit Waveform Edges dialog open for other waveform modifications.

OR

- Press the OK button to move the waveform edges and close the Edit Waveform Edges dialog.

Chapter 1: Signals and Waveforms


1.7 Moving Signals (Drag and Drop)

To move one or more signals:

- Left click on the signal names to select them. Note: The order that the signals are selected will be their new order after the move.

- Put the mouse cursor near the very top or bottom of any of the selected signal's names. When the mouse cursor changes from a normal arrow to an up/down double arrow, click down and hold the left mouse button. A green bar will appear.

- Drag the green bar to the signal's new location.

- Drop the green bar by releasing the left mouse button.

Chapter 1: Signals and Waveforms


1.8 Hiding and Showing (Hidden) Signals

Hiding a signal removes the signal and any attached parameters and text from the screen, but not from the project. Delays, setups, and holds will continue to function, but timing errors will be shown only in the parameter window.

There are two methods that can be used to hide signals. The first method works by hiding selected signal names. The second method works by using filter patterns to match against the signal names (this method is particularly useful if your project has hundreds of signals). Each hiding method operates independently so both methods can be used to hide different signals at the same time.

1) To hide or show one or more signals by selecting names:

- Left click on the signal names to select them.

- Select the View > Hide Selected Signals menu option to hide the signals.

- Use the View > Show Hidden Signal menu option to show signals that were hidden using this method.  This menu brings up a dialog box that allows you to selectively unhide signals.

2) To hide or show signals using filter patterns:

- Choose the View > Filter Signals menu option to open the Signal Filter dialog. This is a modeless dialog that can be left open while you work with the diagram.

- Choose either the Show Only or the Hide radio button to determine how the filter patterns act. Note: if at some point you wish to see all the signals that are hidden by the patterns, choose the opposite radio button.

- Enter a filter pattern in to the Pattern edit box.. For example, the pattern CLK would match signals named CLK0 and CLK1.

- Press the Add button to activate the pattern. Multiple patterns can be entered.

- To delete a pattern, select it and press the Delete button.

Related Topics: Selectively hide all delays, setups, holds, or text by unchecking the appropriate menu item in the View Menu. Or hide individual parameters by selecting the parameter and then choosing the View > Hide Parameter menu item.

Chapter 1: Signals and Waveforms


1.9 Block Copy of Waveforms

You can copy sections of waveforms and paste those sections either onto (overwrite) or into (insert) any signal in the diagram. When a waveform section is copied any attachments in that section are also copied (e.g., text, delays, or samples). To copy and paste waveform sections:

- Select the names of the signals that you want to copy. If no signals are selected, the Block Copy command will select all the signals in the diagram (this is the most common usage).

- Choose the Edit > Block Copy Waveforms menu option. This opens the Block Copy Waveforms dialog box, with the selected signals displayed in the Change Waveform Destination list box.

- In the dialog, enter the values that define the copy and paste:

- Choose either Time or Clock cycle for the base units of the dialog. If you are copying just signals (no clocks) then time is the default base unit of the dialog. If you are copying part of a clock then it is best to choose a clock cycles base unit and choose the copied clock as the master clock. If you select time when copying clocks, the (end_time - start_time) must equal an integral number of clock periods, and the place_at time must be at the same clock period offset as the start_time.

- Start and End define the times of the block copy.

- Place At is the time that at which the block will be pasted.

- The Insert and Overwrite radio buttons determine whether the paste block will be inserted into the existing waveforms or overwrite those waveforms.

- The list box at the bottom of the dialog determines which signal the copied waveforms will be pasted into. To change this mapping:

1) Select a line in the list box. This places the destination signal into the drop-down list box on top of the list box.

2) Choose another signal from the drop-down list box. Each destination signal can be used only once per copy.

- Click OK to complete the copy and paste operation.

Alternate Method: The Block Copy start and end times can be selected using the mouse:

- Press the <Ctrl> key while clicking and dragging in the timeline in the Diagram window.

- Release the mouse then the <Ctrl> key to open the Block Copy dialog with the start and end times already entered in the dialog.

- Adjust the rest of the controls and click OK to complete the operation.

The Block Copy command is very powerful and can be used to perform many different functions such as:

- Copy Diagram Cycles: When copying read or write cycles with parameters attached to clocks, the best results are achieved if the (end_time - start_time) equals an integral number of clock cycles.

- Insert time into the middle of an existing diagram: Add some new signals (with no waveforms) and block copy the new signals into the existing diagram. The end time of the blank signals defines the width of the inserted space.

- Copy parameters attached to clocks: When performing the copy, select the clock and the signals which the parameters are attached to. Also define the copy block to be one or more complete clock periods.

Chapter 1: Signals and Waveforms


1.10 Copying and Pasting Signals

You can copy and paste signals to another place in the current timing diagram or to another timing diagram by using the clipboard as a temporary holding area.

To copy signals:

- Left click on the signal names to select them.

- Choose the Edit > Copy Signals menu option. Now the signals and any objects attached to the signal like text objects and parameters are copied to the clipboard.

To paste the signals back into a timing diagram:

- Choose the Edit > Paste Signals menu option. When the signals are read from the clipboard they obey the same rules as if they were being merged from a different file.

Note: If you want to copy a portion of the waveforms (a time slice) on one or more signals, use the Edit > Block Copy Waveforms menu option. If you want to add a complex waveform that is difficult to draw onto the end of a signal, use a Temporal Equation. If you want to shift some or all the edges on a signal, press the <Ctrl> or <Shift> keys while dragging an edge on that signal.

Chapter 1: Signals and Waveforms


1.11 Auto Naming of Signals

Signals, clocks, buses, delays, setups, and holds will be assigned a default name made up of a prefix and a number when they are created (SIG, CLK, BUS, D, S, H).

To change the prefix used:

- Right mouse click on the mode button or the button that creates the object. (e.g., Add Signal, Add Clock, Merge Bus, Delay, Setup, or Hold buttons). This will open up the Modify Auto Name Prefix dialog box.

- Type in the new prefix and press the OK button.

Chapter 1: Signals and Waveforms


Chapter 2: Clocks

Clocks are special repetitive signals that draw themselves based on their attributes: period, frequency, duty cycle, edge jitter, offset, and other parameters. Clocks can be related to other clocks by using the Master Clock Property or by using formulas that reference another clock's attributes like period, offset, and jitter.

Clocks are a specialized form of a signal, so they are selected, moved, deleted and hidden just like regular signals. However, clock edges are fixed and cannot be pushed by a delay parameter or dragged using the left mouse button.

The following functions cover adding and editing clocks.

2.1 Adding Clocks

2.2 Clock Parameter Dialog

2.3 Master Clocks and Formulas

2.4 Editing Clock Parameters

2.5 Inserting and Deleting Clock Cycles

2.6 Measuring Clock Transition Times

2.7 Grid Lines on Clocks

Chapter 3: Group Buses and Virtual Buses


2.1 Adding Clocks

To add a new clock:

- Left click on the Add Clock button to open the Edit Clock Parameters dialog.

- Enter the values for the new clock.

- Press the OK button to close the dialog.

Chapter 2: Clocks


2.2 Clock Parameter Dialog

To edit an existing clock:

- Double left click on a segment in the clock waveform to open the Edit Clock Parameters dialog.

OR

- Double left click on the clock name to open up the Signal Properties dialog. Click the Clock Properties button, in the center of the dialog, to open the Edit Clock Parameters dialog.

There are three input sections in the Edit Clock Parameters dialog:

1) Label Section: There will be a valid default name already in the edit box. User generated names must be different from any other clock, signal, or bus name. The names must be at least one character (no spaces are allowed). Place the suffix $BAR at the end of a name to indicate the signal is active low. Active low signal names are displayed with a bar (line) drawn over the name.

Master Clock lets you relate the current clock to another clock in the diagram. The next section, Master Clocks and Formulas covers this feature.

2) Clock Rate Section: The clock rate can be entered as either a frequency or a period (the other will adjust itself). These must be positive real numbers whose units are controlled by the radio buttons to the right of the edit boxes. If you encounter clock frequency rounding errors, lower the Base Time Unit.

The clock rate can also be set using the clock period formula box. See Master Clocks and Formulas for details.

3) Clock Properties Section:

- Clocks are normally high at time zero unless there is a starting offset which shifts the clock transitions in time by that amount. The offset edit box accepts a valid time value or time formula.

- Duty cycle determines how long the clock is high during a given period. Duty cycle is a percentage of the period (0 < duty < 100). The duty cycle edit box accepts a valid time or time formula.

- Edge jitter is another method of adding uncertainty. The value entered for jitter becomes an area of uncertainty both before and after the occurrence of the edge. For instance, a value of 10ns will cause a 20ns region of uncertainty centered around the selected edge.

- Buffer delay simulates passing the clock signal through a buffer. The values represent the amount of time that the clock may or may not be valid during one of its transitions. Adding uncertainty to the clock edges causes them to be drawn with gray uncertainty regions before or after the occurrence of the edge. The buffer delay edit boxes accept valid time values or valid time formulas.

- Checking the invert box reverses the clock so that it is low at time zero (unless there is a starting offset).

Note: Grid lines for clocks are now set by double clicking on the clock name to open the Signal Properties dialog. Chapter 2: Grid lines on Clocks covers this feature in more detail.

Chapter 2: Clocks


2.3 Master Clocks and Formulas

In order to model circuits that modify the system clock like a “divide by 2” circuit or a clock distribution chip, it is necessary for some clocks to be related to other clocks. Master clocks and clock formulas allow a clock to reference another clock's attributes, thereby relating clocks to each other.

The attributes that can be referenced by another clock are period, duty, offset, rising (jrise) and falling (jfall) edge jitter. To reference an attribute use the dot method used in all time formulas: CLOCK_NAME.ATTRIBUTE. For example CLK1.period would retrieve the value of CLK1's period and CLK2.jrise would get the time value of CLK2's rising edge jitter.

The Master Clock field in the Clock Properties dialog is just a quick method of copying all the attributes of one clock into the current clock. After a master clock is selected, each attribute can be modified to be a formula based on the master clock attribute.

The duty cycle, offset, and rising and falling edge jitter edit boxes in the Edit Clock Parameters dialog can either take a time value or a time formula. To use a formula to describe the period, the Period Formula edit box must be used. It is separate from the normal period box because all formulas are assumed to be in display time units, and the period box is in the units indicated by the radio buttons to the right of the box.

A valid time formula is any algebraic combination of clock_name-dot-attribute (i.e., free parameters, time values, and constants). The following are examples of valid time formulas:

2*CLK0.period = the constant 2 times the period of CLK0

CLK1.period/2 = Divide the period of CLK1 by the constant 2

2*CLK0.period + F0.min + 5 = the constant 2 times the period of CLK0 + the minimum time value of free parameter F0 + 5 display time units

In the last formula, the 2 is implicitly assumed to be a constant because CLK0.period is a time value and time formulas must evaluate to units of time (not time squared). Similarly, the 5 is assumed to be a time value. For more information on formulas, read the sections on Time Formulas and Operators in Chapter 5.

Chapter 2: Clocks


2.4 Editing Clock Parameters

Most of a clock's parameters are edited using the Edit Clock Parameters dialog covered in the earlier section. This is a fully interactive dialog that changes the clock as soon as you change a clock attribute. This makes it easy to immediately assess the impact of a different clock frequency on your design. To edit a clock:

- Double left click on a segment in the clock waveform to open the Edit Clock Parameters dialog.

However, some clock parameters which are common with signals are edited using the Signal Properties dialog. These parameters include VHDL type, Verilog type, direction, export status, and grid lines. To edit a clock's signal properties:

- Double click on the clock name to open the Signal Properties dialog.

What happens when the period of a clock changes? If the period of the clock changes, parameters will stay attached to the same numbered transition. For example:

- A clock has a transition every 50ns and a parameter is attached to the 3rd transition at 150ns.

- Then the clock period is changed so that the transitions occur every 100ns.

- The parameter will still be attached to the third transition, only now it is at 300ns instead of 150ns.

Chapter 2: Clocks


2.5 Inserting and Deleting Clock Cycles

The insertion and deletion of clock cycles operate the same way as the insert and delete keys work in a standard word processor.

To insert or delete cycles in a clock:

- Select a clock edge. For inserting, click on the clock edge immediately to the right of where you want the cycles to be inserted.  For deleting, click on the first edge you want to delete.

- Choose either the Edit > Insert Clock Cycles or Edit > Delete Clock Cycles menu option. This will open the Clock Alteration dialog. These functions are active only when a clock edge is selected.

- Type in the number of clock cycles to perform the function on.

- Press the OK button to close the dialog.

Chapter 2: Clocks


2.6 Measuring Clock Transition Times

To get the exact time of a clock transition:

- Double left click on a clock transition to open the Edge Properties dialog.

- The exact edge time is displayed in this dialog. Press Cancel to close the dialog.

Clock transitions occur at fixed intervals so you cannot move an individual transition. To adjust the entire clock, double click on a clock segment to open the Edit Clock Parameters dialog box.

Chapter 2: Clocks


2.7 Grid Lines on Clocks

Grid lines are vertical lines drawn from the edges of a clock.

To draw a clock grid:

- Double click on the clock name to open the Signal Properties dialog.

- Press the Grid Lines button in the top right of the dialog. This opens the Grid Options dialog.

- Check the Enable Grid checkbox. This enables the rest of the grid options. If you later decide to turn off the grid then uncheck this check box.

- Fill in the rest of the controls to design a grid pattern. Use the Apply button to test your grid settings.

The Grid Options dialog has two sections:

1. Where to Draw Grid Section:

- The Enable Grid check box determines whether the grid lines are turned on or off.

- The Use min Edge check box determines if grid lines are drawn from the minimum or maximum edge of a clock transition. Edge jitter must be defined for the clock in order to see a difference between checked and unchecked.

- The Starting Event # accepts a positive integer representing the event number where the first grid line is to be drawn. The first event in the clock is the 0 event.

- The Ending Event # accepts a positive integer representing the event number where the last grid line is to be drawn.

- The Events per Line edit box determines how many clock transitions occur before another grid line is drawn. The events per line edit box accepts positive integers, where 1 draws a grid line on every transition, and 2 skips one transition between grid lines, etc.

2. How to Draw Grid Section:

- The Grid Line Style determines what kind of grid line is drawn. All the standard Windows line styles are available: solid, dash, dot, dash-dot, and dash-dot-dot.

- The Grid Color button allows the user to set the color of the grid lines.

- The Starting Signal and Ending Signal determine the length of the grid lines. The default values cause the grid lines to be drawn from the top of the diagram to the bottom.

Chapter 2: Clocks


Chapter 4: Parameters Delay, Setup, Hold, & Sample
Chapter 4: Parameters - Delay, Hold, Setup, and Sample

Parameters actively move and monitor signal transitions. They provide the automatic updates and timing analysis capabilities of the timing diagram editor. There are 4 types of parameters:

- Delays specify a fixed time between two signal transitions.

- Setups and Holds specify a minimum time that data must be stable with respect to a control signal.

- Samples indicate a point at which a signal is to be "sampled" for its value (for example, sampled by a latch or register). Samples are used by TestBencher Pro to specify how to generate the self-testing code in a test bench.

To add a timing parameter:

- Press on one of the Delay, Setup, Hold, or Sample buttons to turn the button red.

- Left click on a transition to select it. For a delay this is the forcing transition. For a setup or hold this is the transition that will be monitored.

- Right click on the second transition to add a parameter between the first and second transitions. For a delay this is the transition that will be moved. For a setup or hold this is the control signal.

When a parameter is added to a timing diagram it is blank and does not perform any timing analysis calculations until you edit the parameter properties. For information on editing parameter properties read the following topics:

4.1 DelaysADDDELAY>second

4.2 Setups and Holds

4.3 SamplesADDSAMPLE>second

4.4 Parameter Properties

4.5 Deleting Parameters

4.6 Parameter Sharing

4.7 Smart Parameter Lookup

4.8 Moving Parameter Start and End Positions

4.9 Hiding Parameters

Chapter 5: Timing Analysis and Time Formulas


4.1 Delays

A delay specifies a fixed time between two signal transitions. Both the min and max values are used in defining delays. If the min and max values are different, the delayed signal transition will be displayed with a gray region of uncertainty. The margin parameter has no meaning for delays and is marked as "na" for not applicable in the parameter table.

Visual Display of Critical Paths: Delays are color coded to indicate which edges of a transition they control. A Gray delay sets neither edge of the delayed transition, either because the min/max values are blank or another delay is dominant at the delayed transition. Black delays set both the min and max edges of a signal transition. Blue and Green indicate min only and max only edge setting. The delay color coding visually displays the critical paths through the diagram. This is especially useful when multiple delays end on the same transition. You can turn off the color coding for documentation purposes using the View > Show Critical Paths menu option.

Note: Delays cannot have circular dependencies - if A delays B, and B delays C, then C cannot delay A.

Chapter 4: Parameters


4.2 Setups and Holds

Setups and Holds check timing constraint requirements for a design. Setups are the minimum time necessary for a signal to be stable before a control signal transition, and Holds are the minimum time that a signal must be stable after a control signal transition.

When drawing a setup or hold the first edge selected is the data signal and the second edge is the control signal. To remember this order, remember that data signals have setup/hold constraints whereas control signals like clocks don't. If drawn correctly, the arrows will point toward the control signal. If drawn backwards the two arrows will point toward each other.

Setups and Holds have three values of interest:

- The min for a setup is the minimum time that the data signal transition can occur before the control signal. The min for a hold is the minimum time that the data signal transition can occur after the control signal.

- The max value is optional for constraints and is rarely used. If a max constraint is specified, then the signal transition has to occur between the min and max times.

- Margin value (slack) is calculated by the program.  It indicates the amount of safety margin available before the constraint condition is violated. When a constraint is violated, it will turn red in both the drawing and the parameter windows. The parameter can also be made to display the margin value by setting the Display Label to min/max Margin in the Parameter Properties dialog box.

Chapter 4: Parameters


4.3 Samples

Samples are graphical constructs which indicate a point at which a signal is to be "sampled" for its value (for example, sampled by a latch or register). Samples do not have any computational effects on timing or the states of signals. Their primary use in Timing Diagrammer Pro and WaveFormer Pro is for documentation. In TestBencher Pro these samples indicate how to generate the self-testing code for the test bench (see TestBencher Manual for more information).

Samples can either be placed at a fixed point in time or they can be relative to a triggering edge transition. Which one is chosen is determined by the way the sample is drawn.

Both min and max time values are used in defining samples. If the min and max values are different, the sample will be displayed as a boxed time range on the sampled signal (a "sample window"). On absolute samples, the min/max times represent the absolute sample time. On edge relative samples, the min/max times represent the sample time relative to the sample's trigger edge. The margin parameter is not used in samples.

To add a sample:

- Press the Sample button to turn the button red.

- Decide if you would like to attach the sample to a fixed time or to an edge.

If a sample is attached to a fixed time, it will stay at that time. If a sample is attached to an edge, the sample will sample at a fixed distance from the attached edge.

- If attaching to a time, make sure an edge is not selected by selecting something else like a parameter or a signal name.

- If attaching to an edge, select that edge by left clicking on it.

- Place the mouse cursor on the signal to be sampled at the point in time at which you want to sample its value.

- Right click to place the sample.

To edit the values of a sample:

- Double left click on the sample to open the Parameter Properties dialog box. The min and max edit boxes accept time values or time formulas.

Chapter 4: Parameters


4.4 Parameter Properties

Use the Parameter Properties dialog to edit a parameter. To open the Parameter Properties dialog do one of the following actions:

1) Double left click on the parameter in the drawing window (to edit a single parameter instance),

2) Double left click on the parameter in the parameter table window (to edit all parameter instances), OR

3) Single left click on the parameter in the parameter table and start typing on the parameter in the parameter table and the dialog will open.

Note: Double clicking on a different parameter when the dialog is already open causes the dialog to begin editing the double clicked parameter. This is a handy technique for quickly editing multiple parameters.

There are two input sections and a button section in the Parameter Properties dialog:

1. Data common to all instances of a parameter:

- Name: There will be a valid default name already in the edit box. User generated names must be different from any other parameter name. The names must be at least one character long (no spaces are allowed). Parameter names must not contain any mathematical operators (+, -, ',*, /) and they cannot be a legal time value (like 5 or 7404). Parameter names beginning with "$$" are reserved for internal use.

- The Min and Max edit boxes accept time values or time formulae like (D0.min* '2 + 10). Chapter 5 contains detailed information on time formulas and variables.

- The Comment cells accept any string of characters, numbers, and spaces.

- The Hide Row check box hides the parameter in the Parameter Window.

- The Outward Arrows checkbox only appears in the Setup and Hold Parameter Properties dialogs. This control switches the parameter from the traditional databook format of “outward pointing arrows” to the default display of "point to control signal" style arrows. Outward arrows are useful when using setups as distance indicators or pulse width checks.

- Change all instances: if checked, the dialog controls in the second section (described below) affect all instances of the parameter in the drawing window. For example, if there are 2 parameters in the drawing window called D0, they will share the same timing information that is displayed in the Parameter Window. However each instance of D0 in the drawing window can be displayed differently. If you are editing a particular instance in the drawing window then that instance will be selected so you can tell which one you are editing.

- The Is Apply Subroutine Input checkbox is a TestBencher Pro feature. This option allows certain parameter settings to be variable inputs for a timing transaction.

- Realistic Data Book Documentation: The Name, Min, Max, and Comment edit boxes can include text that is subscript, superscript, bold, or italic. Select the text then use the following keys to toggle the text formatting: bold = Ctrl-b, italicize = Ctrl-i, superscript Ctrl-u (u for up), subscript = Ctrl-d keys (d for down).

2. Data individual to each parameter instance

- Display Label drop down list box: determines how a parameter displays itself in the drawing window. The Global Default will display the setting checked in the Drawing Preferences dialog box. Name, min/max Value, min/max Formula, min/max Margin, and Comment will display the named attribute as it appears in the parameter window. Distance displays the minimum and maximum distances between the transitions (this value takes into account reconvergent fanout effects). Custom is a user-defined string that is contained in the custom edit box. If you are changing all instances of a parameter and the individual instances have different Display Labels then a Varies in the Display Label will indicate this condition.

- Custom: displays a custom string of characters and attributes. Certain character sequences are interpreted as attribute control codes, and when such a sequence is found it is replaced with that parameter's attribute. Attribute control codes start with a % character followed by one or two letters. The default equation contains one of each of the control codes, so if you start by editing this equation you do not have to memorize the control codes. The control codes are:

- name = %n

- min value = %mv     and max value = %Mv

- min formula = %mf   and max formula = %Mf

- min margin = %mm  and max margin = %Mm

- min distance = %md and max distance = %Md

- comment = %c

- The Hide check box hides a parameter instance in the Drawing Window.

- A parameter can be fixed to a specific vertical position by checking the User Placement checkbox.

- The Enable HDL Code Generation checkbox is a TestBencher Pro feature. It allows the HDL code generation for a specific parameter to be enabled and disabled.

3. Button section:

- The HDL Code button opens a dialog the is used to generate the self-testing code for TestBencher Pro samples.

- The Library button opens the Library Parameters Dialog so that you can select a library parameter to reference in your min and max formulas.

- The Prev and Next buttons move to either the previous or next parameter in the diagram. This allow you to quickly edit multiple parameters.

- The Apply button allows you to preview your changes before you change the parameter permanently.

- The Cancel button restores the original values, and the OK button saves the changes.

Chapter 4: Parameters


4.5 Deleting Parameters

To delete a parameter from the drawing window:

- Select the parameter by left clicking on it. A selected parameter has a selection box drawn around it.

- Do one of the following:

a) Press the <Delete> key on the keyboard.

b) Choose the Edit > Delete menu option.

c) Use the right mouse button in the Delete Mode. To enter the delete mode choose the Edit > Right Click Delete Mode menu option.

Chapter 4: Parameters


4.6 Parameter Sharing (reusing parameter values)

The program assumes that multiple parameters between the same signals and the same types of edge pairs represent the same timing. Therefore the parameters will share the same name and timing values. This is called smart parameter sharing.

Example: Two signals, A and B, are made up of high and low segments. Four different delays can be added before smart sharing will start sharing the data (Ahl->Bhl, Ahl->Blh, Alh->Bhl, Alh->Blh). If another parameter is added then that parameter will have the same name as the parameter that is between the same types of edges.

Overriding a smart sharing (on and off):

If a parameter was shared or was not shared when you wanted, otherwise then change the name of the parameter in the Drawing Window to correct this situation. To force or undo parameter sharing:

- Double left click on the parameter name to open up the Parameter Properties dialog.

- If you want to force a parameter sharing, then type in the name of an existing parameter.

- If you want to undo a parameter sharing, then type in a unique parameter name.

Parameters cannot be shared by changing the name of the parameter in the parameter window.

Turning off smart sharing:

To turn off smart sharing so the timing diagram editor does not automatically share data:

- Choose the Options > Design Preferences menu option. This will open up a dialog of the same name.

- Uncheck the Smart parameter sharing ON check box.

- Choose the OK button to close the dialog.

Chapter 4: Parameters


4.7 Smart Paramter Lookup (reusing parameter values)

When a parameter name is edited inside the Parameter Properties dialog box, the name is automatically checked against all the free parameters and library parameters that are available to the project. If a match is found with a free parameter then the parameter will use the free parameter's data and the free parameter will be converted to match the type of the parameter. If a match is found with a library parameter then the parameter will use the library parameter's data.

To use Parameter Lookup:

- Double left click on the parameter in the drawing window. This will open the Parameter Properties dialog box.

- Change the name of the parameter to match the name of a free parameter or library parameter. Capitalization and any library specifications must match exactly.

- Choose OK to exit the Parameter Properties dialog. This will cause a message box warning that you are about to share data.

- Choose OK to close the message box.

Chapter 4: Parameters


4.8 Moving Parameter Start and End Positions

Drag and drop the solid handle boxes on either side of the selected parameter to change a parameter's starting or ending signal transition. To do this:

- Left click on the parameter to select it. A selected parameter is surrounded by a rectangle with a solid handle box on either end.

- Place the mouse over the handle box nearest the transition that is being changed.

- Left click and hold. Drag the mouse so that the new edge is highlighted. If the entire parameter is changing its vertical position then you clicked on the middle of the parameter instead of a handle box.

- Release the mouse button to attach the new edge.

Warning: Moving the start and end positions of delays can radically change the way your timing diagrams look, because delays force transitions to be a specific distance apart. You can use the Edit > Undo menu option to return the timing diagram back to its original state.

Note: To abort the selection of a new edge, press the <ESC> key.

Chapter 4: Parameters


4.9 Hiding Parameters

Hiding a parameter removes that parameter from the screen, but not from the project. Delays, setups, and holds will continue to function, but timing errors will be shown only in the parameter window.

There are two methods that can be used to hide parameters. The first method works by setting the hide flag of selected parameters. The second method works by using filter patterns to match against the parameter names (this method is particularly useful if your project has hundreds of parameters). Each hiding method operates independently so both methods can be used to hide different parameters at the same time.

1) To hide or show parameters using the hide flag do one of the following:

- Either select the parameter in the drawing window, then choose the View > Hide Selected Parameter menu option.

- Or double click on the parameter in the drawing window to open the Parameter Properties dialog, then check the Hide check box and apply that change.

- Use the View > Show Hidden Parameter menu option to show a parameters that were hidden using this method. This menu brings up a dialog box that allows you to selectively unhide parameters. If a parameter is attached to a hidden signal, it will continue to stay hidden until the signal is shown.

2) To hide or show signals using filter patterns:

- Choose the View > Filter Parameters menu option to open the Parameter Filter dialog. This is a modeless dialog that can be left open while you work with the diagram.

- Choose either the Show Only or the Hide radio button to determine how the filter patterns act. Note: if at some point you wish to see all the parameters that are hidden by the patterns, choose the opposite radio button.

- Enter a filter pattern in to the Pattern edit box. For example, the pattern D would match parameters named D0 and D1.

- Press the Add button to activate the pattern. Multiple patterns can be entered.

- To delete a pattern, select it and press the Delete button.

Related Topic: Selectively hide all delays, setups, holds, or text by unchecking the appropriate item in the View Menu.

Chapter 4: Parameters


4.10 Advanced Topics: Delay Correlations

A delay correlation is a method of relating two or more delays that are found within the same IC. This relationship accounts for the likelihood that if one of these delays falls at the high or low end of its tolerance, the other delay(s) will as well. For instance, if five delays are in the same IC, It is most likely that if one falls at the high end of its tolerance, they all will. The successful use of this information can allow circuits to be designed that run at higher clock speeds. It can also help to prevent timing violations. If you want to find out more about delay correlations, please refer to “Taking Advantage of Delay Correlation Effects to Design High Speed Digital Circuits” (http://www.syncad.com/syn_papr.htm).

WaveFormer allows you to analyze virtually any combination of delays using correlation.  Delay correlation effects are computed any time you place a setup, hold, or distance calculation in your timing diagram. WaveFormer will first verify that delays exist on either end of the setup or hold distance calculation and then perform the calculation that uses delay correlation.

Creating a Delay Correlation Group

When you create a delay correlation, you will need to specify the percentage correlation factor that is between any two or more delays in your design.

- Create a timing diagram with two or more delays (see Section 4.1: Delays for more information).

- Double click one of the delay names to open the Delay Properties dialog.

- Click the Correlation button to open the Correlation Group dialog. This dialog allows you to create multiple correlation groups.

A correlation group is a group of delays that are set to use to same percentage correlation factor. A single delay can be a part of multiple correlation groups. Each timing diagram can work with multiple correlation groups.

To create a correlation group:

- Type the name of the new correlation group in the Name drop down list box.

- Enter the percent correlation that you want to group to use in the Correlation % edit box. Note that the - percentage factor must be a whole number.

- Click the Add button to create the new group. This adds the selected delay to the correlation group.

- Notice that the delay was added to the Parameters in Selected Correlation Group list box. For the delay correlation to be meaningful, at least two delays should be in the correlation group. You will be able to add more delays to the correlation group at any time.

- Click OK to close the Correlation Group dialog box.

- Click OK in the Delay Properties dialog box. This will close this dialog.

To add a delay to an existing correlation group:

- Open the Delay Properties dialog as described above.

- Click the Correlation button to open the Correlation Group dialog box.

- Select the name of the correlation group from the Name drop down list box.

- Click the Add button to add the delay to the correlation group.

- Click the OK button to close the dialog box.

Any number of delays and correlation groups can be added in this fashion.

Modifying Existing Correlation Groups

Once a delay correlation has been created, you can change the percent correlation factor by:

- Open the Correlation Group dialog box as described above.

- Select the name of the correlation group that you want to modify in the Name drop down list box.

- Enter the new percent correlation factor in the Correlation % edit box.

- Click the  Add button to make the change.

To remove a delay from a correlation group:

- Open the Correlation Group dialog box and select the group to be modified as described above.

- Left click the name of the delay to remove in the Parameters in Selected Correlation Group list box.

- Click the Delete Parm button to remove the delay from the correlation group.

Once correlation groups are established, delay correlation is invoked automatically.  Every time you place a setup, hold, or distance, the correlation factors that you specified will be accounted for in the timing analysis.  No further intervention is required unless you want to change or add correlation groups.

Chapter 4: Parameters Delay, Setup, Hold, & Sample


Chapter 5: Timing Analysis and Time Formulas

This chapter describes the advanced timing analysis and time formulas supported by the timing diagram editor.

Timing Analysis Functions: The timing analysis section describes how to a) control the result of multiple delays driving a single edge, b) reconvergent fanout, and c) advanced properties of delays and signals.

5.1 Effects of Multiple Delays Forcing the Same Transition

5.2 Edge Properties Dialog

5.3 Effects of Common Delays (Reconvergent Fanout)

5.4 Locking all Edges on a Signal

5.5 Design Preferences Dialog

Timing Formula Functions: Time formulas can generally be used wherever a time value is required (the edit boxes of parameter min, parameter max, clock period, clock offset, clock jitter, etc.). Time formulas allow parameters and clocks to reference each other. Clocks can be related to each other to model clock distribution circuits. Parameters can be related to each other by library values or by formulas based off a common gate delay.

This section describes how to write time formulas, the special dot-attributes properties that let you access specific values, variables and free parameters, and macros.

5.6 Time Formulas

5.7 Operators and Dot Attributes

5.8 Free Parameters

5.9 Using Macros in Formulas

Chapter 6: Measurement and Zooming


5.1 Effects of Multiple Delays Forcing the Same Transition

If more than one delay ends on the same transition, then it is not clear when the forced transition should occur. There are four different ways that this ambiguity can be resolved:

- earliest transition: The earliest min edge and the earliest max edge will determine the uncertainty region of the delayed edge. Use this method when a transition occurs after one of several transitions has occurred.

- latest transition: The latest min edge and the latest max edge will determine the uncertainty region of the delayed edge. Use this method when a transition occurs only when all of a set of transitions have occurred.

- max uncertainty: The earliest min edge and the latest max edge will determine the uncertainty region of the delayed edge (maximizes the uncertainty from forcing edges).

- min uncertainty: The latest min edge and earliest max edge will determine the uncertainty region of the delayed edge (typically not very useful).

Global Default Setting: To set the default method which transitions will use to reconcile multiple delays:

- Choose the Options > Design Preferences menu item. This will open a dialog of the same name.

- Choose the specific method under the Reconciling Multiple Delays Default section.

Individual Setting: Normally transitions use the default method to reconcile multiple delays. However, each transition can select a specific method by using the Edge Properties dialog. To set the method for a specific transition:

- Double click on the transition to open up the Edge Properties dialog.

- Choose a specific method under the Multiple Delay Resolution section.

Min Only or Max Only Delays: Normally delays have both a min and a max value even if the values are the same. However if you specifically clear either the min or max value then the delay becomes a min only or max only delay. A min only delay just affects the min edge of a transition and a max only delay just affects the max edge of a transition. If a transition has only min only or only max only delays attached to it, the unconstrained edge (e.g., the max edge if min only delays are attached) will be set to the same value as the constrained edge.

Delays are color coded to indicate which edges of a transition they control. A Gray delay does not set either edge of the delayed transition, either because the min/max values are blank or another delay is dominant at the delayed transition. Black delays set both the min and max edges of a signal transition. Blue and Green indicate min only and max only edge setting respectively. The delay color coding visually displays the critical paths through the diagram. This is especially useful when multiple delays end on the same transition. You can turn off the color coding using the View > Show Critical Paths menu option.

Chapter 5: Timing Analysis and Time Formulas


5.2 Edge Properties Dialog

The Edge Properties dialog displays information about a specific signal transition. To open the Edge Properties dialog:

- Double left click on either edge of the signal transition.

There are three sections in the Edge Properties dialog box:

1. Edge Placement Section: This section contains min and max edit boxes which display the placement of each edge of the transition. If the transition is not locked, then the edge can be placed at an exact time by typing time values into the min or max edit box. You cannot add uncertainty to the edge by using the min and max edit boxes.

The min uncertainty edit box lets you add a minimum uncertainty region to a signal transition. If no delays cause an uncertainty greater than the transition's minimum uncertainty, the transition will be given its minimum uncertainty value.

The Uncertainty = Xns displays the actual width of the uncertainty region.

If checked, the Locked checkbox fixes a transition at a specific time. This also indirectly locks any transitions connected to the locked transition by a defined timing path. Clock transitions are always locked.

The Driven (Export to HDL) checkbox is used to define bi-directional signals for TestBencher Pro. (see TestBencher Pro manual).

2. Multiple Delay Resolution Section: This section controls where a transition is placed when multiple delays end on it. These settings only affect edges that have more than one delay forcing their edge placement (Chapter 5: Effects of Multiple Delays Forcing the Same Transition).

3. Button section

- The Apply button allows you to preview your change before you actually change the transition time.

- The Next and Prev buttons, or <Alt>-N and <Alt>-P keystrokes, simplifies the editing of multiple edges by letting you move to different edges on the same signal without closing the dialog.

- The Cancel button restores the original values, and the OK button saves the changes.

Chapter 5: Timing Analysis and Time Formulas


5.3 Effects of Common Delays (Reconvergent Fanout)

When two timing paths share a common transition, the uncertainty of that transition should not affect distance and margin constraints between transitions further down on the timing paths. This is because the common transition occurs at the same time for both timing paths. This effect is called reconvergent fanout because it usually occurs when a signal fans out to multiple gates and the outputs of these gates reconverge as inputs to a common gate. If the effects of reconvergent fanout were ignored, a good design might seem to violate a timing parameter because the margin calculations were overly pessimistic.

The timing diagram editor automatically accounts for reconvergent fanout effects, correctly calculating margins and distances for parameters. Reconvergent fanout does not change the uncertainties of individual transitions so they are not visible on the timing diagram itself (except for constraint margins and distance values).

Example: A NAND gate has an uncertainty region of 10ns and a fanout of two signal paths that go through some gates and reconverge at the data and clock inputs of a D Flip-Flop. The difference in arrival times of the two paths should just be the delay and uncertainties of the two paths. The 10ns uncertainty of the NAND gate should not affect the difference in arrival times because both signals will start at the same time (somewhere in the uncertainty region of the NAND gate).

Chapter 5: Timing Analysis and Time Formulas


5.4 Locking all Edges on a Signal

All the edges on a signal can be locked or unlocked at the same time. Locked edges are fixed in time and cannot be dragged or forced to move by a delay. To lock or unlock all edges on a signal or signals:

- Left click on the signal names to select them.

- Choose one of the following menu options:

Edit > (Un)Lock Edges of Selected Signals > Lock or Unlock

Individual edges can be locked or unlocked using the Edge Properties dialog covered in the previous section.

Chapter 5: Timing Analysis and Time Formulas


5.5 Design Preferences Dialog

This dialog affects how functions work in the program. To open it choose the Options > Design Preferences menu option in the timing window. The Design Preferences dialog controls the function of the following:

Middle Mouse Function: The middle mouse button either toggles between the last two activated state buttons or cycles through the state buttons activating each in turn. The default is set to "toggle state buttons".

Default Edge Setting for Multiple Delay Resolution: If more than one delay ends on the same transition, then it is not clear when the forced transition should occur. This is the global default method that transitions will use to resolve this ambiguity. See Effects of multiple delays forcing the same transition for definitions of the different methods. Default is earliest transition.

Note: Individual transitions can be made to use a different setting by using the Edge Properties dialog box.

Continuous measurement On: If checked, then the black and blue digital readouts continuously update as the mouse cursor moves. Uncheck this box if the flicker bothers you. Default is checked.

Allow transitions to overlap: Allows the transition regions of two events on the same signal to overlap. Default is checked.

Warn if duplicate parameter name: If a parameter name is edited in the drawing window and it is changed to the same name as another parameter then the program assumes that you would like the edited parameter to share the same data as its new name implies. This could result in the deletion of the edited parameter's timing data. Normally the warning will be displayed.

Warn if min parameter greater than max: Normally the min value is less than the max value of a parameter. This is not necessary for proper functioning of parameters, and a warning can be annoying sometimes when several timing values are being edited. Normally the warning is displayed.

Smart parameter sharing ON: When multiple parameters are added between the same two signals and between the same edge types then it is assumed that the parameter represents the same timing value. This is called smart parameter sharing. Normally the function is ON.

Chapter 5: Timing Analysis and Time Formulas


5.6 Time Formulas

A time formula is a mathematical expression for computing a time value. Time formulas can generally be used wherever a time value is required (e.g., in the edit boxes of parameter min, parameter max, clock period, clock offset, and clock jitter).

Time formulas are in display time units and are an algebraic combination of time values, constant values, clock properties, parameter names, and variables (free parameter names). Below are examples of valid time formulas:

- Time Values are fixed point numbers in display units. Fractional parts depend on base time unit and display time unit. Examples:

5

2.010

255E-3

- Constants are fixed point numbers that are unit-less. Multiplication and division operations automatically assume that the result is a value of time (not time squared) so constants are assumed to be where needed. The only time when a constant needs to be explicitly defined is when you plan to change the base time unit of an existing timing diagram. In this case, a constant must be preceded by a single quote or they will be converted to display time units. Constants do not scale (unlike time values) when the base time unit is changed. Example:

'2

'4.1e2

- Parameter names, used in formulas, reference their min and max time values according to the operator rules covered in the next section. The dot-max and dot-min properties can be used to force the equation to use a particular value. Clock properties can also be accessed using the dot attributes. Examples:

D0

delay7404

delay7404.max

Clock0.period

- Algebraic combination of the above types. Examples:

5 +  2 * F0

is parsed as  5(time value) + 2(constant) * F0(free parameter)

D0.max - D1.min

is parsed as  D0.max(parameter D0's max value) - D1.min(parameter D1's min value)

Clock0.period / 2

is parsed as  Clock0.period(Clock0's period value) / 2(constant)

Special Feature: Inside the Parameter Properties dialog, the Library button causes the Library Parameters dialog to open in the View Parts mode. This lets the user browse the library parts and use the Insert into Formula button to copy a library parameter into the min and max edit boxes. (For more information read Chapter 10: Using Library Parameters (Referencing).)

Note: Time formulas in parameters can not have circular dependencies. For example, assume A, B, and C are parameters. If A is referenced by B, and B is referenced by C, then C cannot be referenced by A. Each time a parameter is modified, the new value is checked for circular dependencies. When this error is detected, the new data will not be accepted and a message box will appear.

Chapter 5: Timing Analysis and Time Formulas


5.7 Operators and Dot Attributes

The timing diagram editor supports the +, -, *, and / mathematical operators. The editor also uses the operator ^ to raise a number to a power.

Example: 4 ^ 2 = four squared

The dot attribute of parameters and clocks can override the default function of the mathematical operators.

Parameter Values: When a parameter name is used in a formula either the min or max value can be used during the evaluation process. By default the formula operator will use the min value if the formula is in the min column, and it will use the max value if the formula is in the max column. The user can force a particular value to be used by using the parameter_name.min or parameter_name.max attributes.

Example: There are two free parameters, Afree = [10,20] and Bfree = [15,30]. Another parameter has the formulas [Bfree - Afree, Bfree-Afree] in the min and max columns. The timing diagram editor interprets this as  [Bfree.min-Afree.min, Bfree.max-Afree.max] = [5,10].

There are a number of mathematical functions that the editor can use. The function names are case sensitive and are all lower case. You do not need to use the parentheses to call a function, but it will be evaluated using the first number.

Examples: abs –1 + 1 = 2

     abs(-1 + 1) = 0

Mathematical Functions:

Function	Description
abs	Returns the absolute value of the number.
acos	Returns the arccosines of a number in radians. The number must be a value from –1 to 1.
asin	Returns the arcsine of a number in radians. The number must be a value from –1 to 1.
atan	Returns the arctangent of a number in radians.
cos	Returns the cosine of a number expressed in radians.
cosh	Returns the hyperbolic cosine of the number.
degrees	Converts radians to degrees.
exp	Returns e raised to the power of the number.
fact	Returns the factorial of the number. The number must be in the range of 0 to 69. If the number is not an integer, the decimal will be truncated.
int	Rounds the number down to the nearest integer.  Examples: int 4.1 = 4           int –3.1 = -4
ln	Returns the natural logarithm (log base e) of the number. The number must be greater than zero.
log	Returns the logarithm to the base 10 of the number. The number must be greater than zero.
radians	Converts degrees to radians.
rand	Returns a random integer between 0 and 32,767 based on the seed number given.
sign	Returns –1 if the number is negative, 1 if the number is positive, and zero if the number is zero.
sin	Returns the sine of the number expressed in radians.
sinh	Returns the hyperbolic sine of the number.
sqr	Returns the square root of the number.
sqrt	Returns the square root of the nunber.
tan	Returns the tangent of the number expressed in radians.
tanh	Returns the hyperbolic tangent of the number.
trunc	Truncates the number to an integer by removing the decimal. Examples: trunc 4.1 = 4           trunc –3.1 = -3
Clock Attributes: The properties of a clock that can be referenced in time formulas are: period, duty, offset, and rising (jrise) and falling (jfall) edge jitter. To reference a clock property use the dot-property method. For example:

CLK0.period

retrieves the value of CLK0's period.

CLK2.jrise

retrieves the value of CLK2's rising edge jitter.

Chapter 5: Timing Analysis and Time Formulas


5.8 Free Parameters

A Free Parameter is a special kind of parameter whose sole purpose is to be used as a variable in other parameters. They are called "Free" because these parameters are not attached to any signal transitions in the drawing window. To add a free parameter:

- Press the Add Free Parameter button in the parameter window. A blank free parameter will be added to the parameter window.

Free Parameter Libraries: If your designs use the same kinds of components, then it is a good idea to save all the free parameters to a special library file that can be used by several projects.

To save all the free parameters to a library file:

- Select the Libraries > Save Free Parameters As Library menu option.

To use a free parameter library file in a project:

- Select the File > Merge Timing Diagram... menu option.

Warning: If there are any duplicate free parameters when you merge, then the free parameter library file will overwrite the project's free parameters.

Chapter 5: Timing Analysis and Time Formulas


5.9 Using Macros in Formulas

Macros allow you to substitute one string or character for another in formula evaluation. Macros can be used for many purposes. You can use macros to reference library parameters with long names using smaller alternative names without having to alter the formal name used in the library. If you make macros for your library specifications and use the macros in your parameter formulas, you can analyze the impact of switching to parts from another logic family or another vendor by changing the macro values to other library specifiers (assuming parameter names remain the same across libraries).

When using macro names in formulas, the name must be surrounded with percentage signs('%'). Any number of macros may be used in a single string. However, nesting of macros is not allowed.

To open the Edit Macros dialog:

- Select Libraries > Macro Substitution List… menu option to open the Edit Macros dialog.

The Edit Macro dialog is used to add, edit, and remove macros.

To add a macro:

- Type the macro name into the Name box. No percentage characters are allowed in macro names. The delimiting percentage characters are automatically added to the beginning and end of the name when the name is added to the list. You may type these characters if you wish but it is not necessary.

- Press the <Tab> key or left click in the Value box.

- Type the macro value (the string that you want in place of the macro name).

Note: The value box is a drop-down list box that automatically displays all the library specifiers and values that you have defined before, so you do not have to re-type that information.

- Click the Add button to add the macro or type <Enter> to add the macro and close the dialog box.

To edit an existing macro:

- Click on the macro in the macro list box. The name and value should appear in the edit boxes above the macro list.

- Edit the macro name and value in the appropriate edit box.

- Click the Add button to post the change to the macro list.

To remove a macro from the list:

- Click on the macro that you want to delete.

- Click the Delete button in the dialog.

Macro Example:    Name => %lib%     Value =>  ti:als:

A parameter min value of %lib%partname will equate to ti:als:partname. Now you could define %lib% to be mot:ls: and the example will evaluate to mot:ls:partname. Assuming that parameter names remain the same between libraries and the appropriate libraries are on the current library list, you can use this technique to switch manufacturers and logic families.

Chapter 5: Timing Analysis and Time Formulas


Chapter 6: Measurement and Zooming
Chapter 6: Measurement, Zooming, and User Efficiency Features

This chapter is devoted to functions that help the user measure times, view diagrams, and improve efficiency.

Measurement Features: The Time Readout buttons and Time Markers are objects used primarily for measurement purposes. Additionally, many objects in the timing diagram can be configured to display or measure timing information relevant to those objects. Waveform comparisons give the ability to compare that data from individual signals within a timing diagram, or to compare the data of two separate timing diagrams.

6.1 Time Readouts, Delta Measurements and Fast Scrolling

6.2 Time Markers for Measurement

6.3 Measurement Capabilities Overview

Viewing and Hiding parts of the Timing Diagram: The timing diagram editor supports several different zoom methods including centered zooming and drag-and-drop zooming. For viewing and documentation purposes, parts of the timing diagram can be hidden or compressed by using a special type of time marker.

6.4 Zooming Features

6.5 Time Markers for Time Breaks and Compression

Efficiency Features: There are many features such as drag-and-drop file loading, roll-up dialogs, and a dedicated delete mode that we have added just to make the program easier to use.

6.6 User Efficiency Features

6.7 Delete Mode

6.8 Specifying a User-Defined Radix

Chapter 7: Text Objects


6.1 Time Readouts, Delta Measurements, and Fast Scrolling

The two buttons directly above the signal label window  provide both an absolute time readout and a relative time readout. The Time Button, with the black writing, displays the current position of the mouse cursor in the drawing window. The Delta Button, with the blue writing, displays the difference between the mouse cursor and the delta mark (an upside-down, blue triangle) on the timeline above the drawing window.

Measurement: Every time the left mouse button is released in the drawing window, the delta mark moves to that location. To measure the distance between two events (like signal transitions):

- Select one object by left clicking on it. The delta mark will move to that location.

- Move the cursor to the other object. The delta button will display the exact time between the two events.

Scrolling: The Time and Delta buttons can also be used for quick scrolling in very long timing diagrams.

- Left clicking on either button opens an edit box that accepts time values.

- Entering a value in the Time button causes the drawing window to scroll to that exact time.

- Entering a value in the Delta button causes the drawing window to scroll that amount from its current position.

Chapter 6: Measurement and Zooming


6.2 Time Markers for Measurement

The basic documentation time markers are vertical lines that display their placement time in the timing diagram. This topic describes how to add, move, and edit markers. Once a marker is added to the timing diagram its behavior can be altered by changing the Marker Type control in the Edit Time Marker dialog. These advanced behaviors are covered in the following chapters:

- Timebreak(dots), Timebreak(curved), and Timebreak(jagged) time markers are used to compress time (Chapter 6: Time Markers for Time Breaks and Compression).

- End Diagram time markers are used to indicate the effective end of the timing diagram for simulation and stimulus generation.

- Loop Start, Loop End, and Exit Loop When are used to specify test bench loops for TestBencher Pro (see TestBencher Pro manual for more information).

- HDL Code markers are used to specify a specific HDL code segment to be executed when the marker is reached. (This is a TestBencher Pro feature.)

To add a time marker:

- Press the Marker button to turn it red.

- Decide if you would like to attach the marker to a fixed time or an edge.

If a marker is attached to a fixed time, it will stay at that time. If a marker is attached to an edge, the marker will stay a fixed distance from that edge.

- If attaching to a time, make sure a signal edge or segment is not selected by selecting something else like a parameter or a signal name.

- If attaching to an edge, select that edge by left clicking on it.

- Put the mouse cursor at the signal level for which the marker should display its time.

- Right click to add a time marker.

To move a time marker:

- Drag and drop the time marker line.

To edit a time marker or change the attachment:

- Double left click on the time marker line to open the Edit Time Marker dialog.

- Select the radio button that describes the new type of attachment that you want to make.

- If attaching to a time, you may also type in an exact time into the edit box to the right of the radio button.

- If attaching to an edge, you can also type in a relative offset from the edge.

- Choose the OK button to close the dialog.

- If attaching to an edge, the timing diagram editor will be in a continuous selection mode. Move the mouse so that the selection is on the desired signal edge.

- Left click down on the edge to attach the marker.

Snap signal ends to Marker (Documentation Feature): Double click on a marker to open the Edit Time Marker dialog and experiment with this feature:

- Check the Signal ends snap to marker check box and click OK to close the dialog. Now drag-and-drop the marker and notice that the ends of all the drawn signals snap to the new position of the marker.

Chapter 6: Measurement and Zooming


6.3 Measurement Capabilities Overview

There are many different methods for measuring and displaying the time at which transitions occur. All these methods are discussed under sections relating to the types of objects they involve, but they are grouped here for easy reference and comparison.

Display signal states at a given time: Left click in the timeline in the Diagram window to drop a temporary marker line that displays the numerical state of each signal.

View the exact placement of an edge: Double clicking on the edge will cause the Edge Properties dialog to display the min and max time of the transition (Chapter 5: Edge Properties).

Display the position or uncertainty of an edge: Left click on the Text button. Left click on an edge, right click to open an edit box. Enter %m, %M, or %u control codes to display min transition, max transition, or uncertainty region (Chapter 7: Using Control Codes in Text Objects).

Display the distance between two transitions: Add a delay, setup, or hold parameter between the two transitions. Double click on the parameter to open the Parameter Properties dialog, and choose the Distance radio button (Chapter 4: Parameter Properties).

Measure the distance between two objects: Left click on the first object. This moves the blue delta mark, the blue triangle on the timeline, to that position. Now the blue Delta button above the signal names will display the distance between the blue delta mark and the mouse cursor. Put the mouse cursor over the other object and the distance will be displayed in the blue readout above the signal label window(Chapter 6: Delta Measurements).

Display the exact placement of a time marker: Left click on the Marker button. Right click in the diagram to add a time measure line. Double left click on the marker line to open the Edit Time Marker dialog and edit the exact position of the marker (Chapter 6: Markers).

Visual display of critical paths: Delays are color coded to indicate which edges of the delayed transition they control. This is particularly useful in diagrams where multiple delays force a single signal transition (Chapter 4: Delays and Chapter 5: Multiple Delays).

Chapter 6: Measurement and Zooming


6.4 Zooming Features

The Zoom buttons, located on the right of the button bar, change the zoom level in the timing diagram. The Zoom functions are also available in the View menu. There are 3 main ways to change the zoom level of the diagram:

1) Use the Zoom In and Zoom Out buttons on the button bar to center and zoom on a selected object. For example:

- If an object is selected in the drawing window, then the zoom will center on that object.

- If there are no selected objects, but the blue delta triangle is visible, then zoom will center on the blue delta triangle. To move the blue delta triangle, click at the desired time location in either the time line or the diagram window.

- If no edge is selected and the blue triangle is not on the screen, then the diagram zooms from the center of the drawing window.

2) Click-and-drag on the Time Line. This provides a quick way to graphically specify the zoom level and range for a section in a large timing diagram.

- Left click and hold inside the timeline and drag the mouse to indicate the range in which to zoom.

- When you release the mouse, the diagram will zoom to show the range you selected.

3) Use the Zoom Range or Zoom Full buttons on the button bar.

- The Zoom Range button opens a dialog that lets you specify the starting and ending times that should be zoomed to.

- The Zoom Full button displays then entire timing diagram on the screen.

Chapter 6: Measurement and Zooming


6.5 Time Markers for Time Breaks and Compression

Time Breaks are a special type of time marker that can compress time. The time breaks can be dotted, curved, or jagged double lines that mimic the most common time breaks used in data books. If a compression time is added to the time break then that amount of time to the right of the marker will not be displayed on the screen. The compressed time still exists, but it does not display on the screen.

To add a time break:

- Add a regular time marker. Press the Marker button and use the right mouse button to add a time marker (Chapter 6: Time Markers ).

- Double click on the marker line (not on the marker name) to open the Edit Time Marker dialog.

- From the Marker Type drop down list box, choose one of the three graphical time break styles: Timebreak(dots), Timebreak(curved), or Timebreak(jagged).

- Use the Time break compresses time by: edit box to indicate the amount of time that should be compressed. The time to the right of the marker will be compressed and will not display on the screen. The compressed time still exists, but it does not display on the screen.  If no time compression is specified, then the time break will act just like a pretty graphical display and no time will be compressed. (Note: This edit box appears when you select one of the three Timebreak marker types.)

- Click the OK button to close the dialog.

Chapter 6: Measurement and Zooming


6.6 User Efficiency Features

Here is a short list of features we added to make the program easier to use:

- Multiple Undo and Redo: The Edit > Undo action and Edit > Redo action menu options describe the type of editing or deleting action that you can undo. The older Edit > Undo Delete menu option remains as a menu option so that deletions can be undone without changing the multiple undo/redo buffer.

- Roll-up Dialogs: The modeless dialogs like Signal Properties and Parameter Properties can be rolled up in order to better view the timing diagram. To roll up a dialog, press the minimize button in the top right hand side of the dialog window bar. When a dialog is rolled up only the window bar is visible. To unroll a dialog press the maximize window button on the window bar.

- Cursor Shape Indicates Editing Operations: The cursor changes shape to indicate that different editing options are available when the cursor is over a particular object.

object	Cursor	action
parameter	up - down arrow	can move parameter up or down
parameter handle	Pointer	drag handle to a new edge
text	four - way arrow	drag or nudge in any direction
marker or edge	left - right arrow	drag or nudge left or right
all other objects	waveform state that will be drawn next	Waveform creating
- Proportional Scroll Bars: The thumbs on the scroll bar are now proportionally sized to indicate how much of the file is being viewed.

- Compact Dialogs: Small, compact dialogs allow maximum use of your screen real estate (great for laptops).

- Drag-N-Drop File Load: From Windows Explorer you can drag a .tim file (the program's normal output file) and drop it into the timing window to open the file. This is helpful if you have many timing diagrams and would like to view them in rapid succession.

- File History List: The File menu has a history list of the last four files that were used. This helps you quickly load your current project. Left click on a file in the history list to open that diagram.

- Intelligent Windows: The Timing and Parameter windows remember their size and location the last time the program was used. This means that you do not have to size and move the windows each time you run the program. Fonts, colors, and window specific options are remembered.

- Modeless Drawing: SynaptiCAD products allow you to draw and edit waveforms independent of the mode you happen to be in.

- Status Bar and Quick Overviews: Nobody wants to read the entire help before they use a program for the first time. A status bar and two short overviews are provided to help new users get started quickly.

- Edit Box History Lists: Many edit boxes are equipped with permanent history lists that store information from session to session. History lists save the user from retyping previously entered information. History lists are stored in the timing.ini file in the Windows directory and can be pruned and rearranged in that file (be sure WaveFormer is not running while editing this file or changes will be lost when WaveFormer is closed).

Chapter 6: Measurement and Zooming


6.7 Delete Mode

The delete mode lets you quickly delete objects in the drawing window without having to use the keyboard.

- Change to the Delete Mode by checking the Edit > Right Click Delete Mode menu option so that it becomes checked.

Note: When the Delete Mode is active, the other mode buttons are gray and inactive.

- Select an object by left mouse clicking on it. (objects are signals, signal transitions, signal segments, parameters, text ...).

- Right mouse click to delete the object. Remember that the right mouse performs the function of the activated mode button.

If you make a mistake, the Edit > Undo and Edit > Undo Delete menu options can return the diagram to its original state.

Alternate Method: Objects can also be deleted by selecting them and then pressing the <Delete> key or by selecting the Edit > Delete menu option.

Chapter 6: Measurement and Zooming


6.8 Specifying a User-Defined Radix

The radix used to display state values on a signal can now be specified as a user-defined radix type. This allows you to specify easily recoginzable text to be displayed in placwe of the numerical value held by a state. For example, you can determine that the Boolean values "True" and "False" will be displayed in place of 0 and 1.

To Specify a User-Defined Radix:

- Select the Bus > Create User-Defined Radix menu option. This will open the Create User-Defined Radix dialog box.

- Enter the name you want the radix to have (e.g., Boolean) in the Name edit box.

- Click the Add button below the Name edit box to add the new radix type.

- Enter the numerical value in the State Value edit box or select the value from the drop down list-box.

- Enter the corresponding text in the Translation edit box.

- Click the Add button in the State Translation area of the dialog box. This will add the new state translation to the new radix type.

- Repeat the last three steps until all desired values have been added to the radix.

- Click the OK button to close the Create User-Defined Radix dialog box.

A User-Defined Radix can be specified as the default radix for new signals by selecting the radix name from the Default Radix drop-down list box in the Create User-Defined Radix dialog box.

To add new state translations to a User-Defined Radix:

- Select the Bus > Create User-Defined Radix menu option. This will open the Create User-Defined Radix dialog box.

- Select the name of the radix you want to modify (e.g., Boolean) in the Name drop-down list box.

- Enter the numerical value in the State Value edit box or select the value from the drop down list-box.

- Enter the corresponding text in the Translation edit box.

- Click the Add button in the State Translation area of the dialog box. This will add the new state translation to the new radix type.

- Repeat the last three steps until all desired values have been added to the radix.

- Click the OK button to close the Create User-Defined Radix dialog box.

Chapter 7: Text Objects


Chapter 7: Text Objects

Text objects can be placed anywhere in a timing diagram. They can be used to annotate cycles, edges, or segments. The font and color of each text object can be changed to stress the importance of that particular text object. The fonts  also support superscripts, subscripts, and bold and italic attributes so your timing diagrams can use the same names and comments that are commonly used in data books

Text objects automatically snap to an invisible alignment grid that makes it easy to visually line up different objects.

7.1 Adding Text

7.2 Editing Text

7.3 Moving Text and the Alignment Grid

7.4 Using Control Codes in Text Objects

7.5 Deleting Text

Chapter 8: Documentation: Text Objects, Image Files, and Printing


7.1 Adding Text

There are three ways of setting the horizontal position for a text object. First, text can be attached to a specific time so it stays at that time regardless of how the timing diagram changes. Second, text can be attached to an edge so it moves when the edge is moved, keeping the same fixed distance from that edge. And third, text can be attached to a segment so it stays centered within that segment.

To add a text object:

- Press the Text button to turn it red.

- Decide if you would like to attach the text to a fixed time, an edge, or a segment and select the appropriate object.

a) Time (most common):  Select any object except a signal or edge.

b) Edge: Select the edge by left clicking on it.

c) Segment: Select the segment by left clicking on it.

- Right click to open a text object edit box.

- Type in the text. Note: This is a rich edit control that supports bold, italic, subscript, and superscripts. To apply these styles, select the text and use the following key combinations. Or before typing the text, use the key combinations to turn on the style so the text you type will be styled that way. The key combinations are:

Bold the text using <Ctrl>-b keys

Italicize with <Ctrl>-i keys

Superscript with <Ctrl>-u keys (u for up)

Subscript with <Ctrl>-d keys (d for down)

- Close the edit box by pressing the <Enter> key or clicking outside of the box.

Multi-line text objects are constructed by editing a single line text object using the Edit Text dialog.

Chapter 7: Text Objects


7.2 Editing Text

Edit a text object's properties, attachment, font, or color in the Edit Text dialog.

To open the Edit Text dialog :

- Double left click on the text object, OR

- Select the text (left click), and choose the Edit > Edit Text menu item. This menu is only enabled when a text object is selected.

There are three sections in the Edit Text dialog.

1) Text Edit Section: The edit box at the top of the Edit Text dialog accepts text from the clipboard, multiple lines of text, and special style editing:

- Multi-line text: Paragraph text blocks can be added by typing in multiple lines of text into the edit box. By default, new text objects are single-line so that you can add many in rapid succession.

- Copy and Paste text: The normal Windows copy and paste keystrokes (<Ctrl>-C and <Ctrl>-V) can be used inside this edit box to transfer text to and from word processors and other editors.

- Bold, Italic, Superscript, and Subscript Styles: To apply these styles, select part of the text and press one of the style buttons located below the edit box.

2) Text Attachment Section: Text objects are either attached to a fixed time, an edge, a segment, or a signal. To change the attachment of a text object:

- Select the radio button that describes the new type of attachment that you want to make.

- Choose the OK button to close the Edit Text dialog.

- If you chose Attach to current time, then the text will be fixed at that time.

- If you chose Attach to edge, Attach to segment, or Attach to signal, the timing diagram editor will be in a continuous selection mode.

- Move the mouse so that the selection is on the desired signal edge or segment.

- Left click on the edge or segment to attach the text.

3) Font and color section: When a text object is first drawn it uses the default font for the drawing window ( see Options > Text/Color Preferences > Set Drawing Window Font). Each text object can have a totally different font, size, and color. To change the font or color:

- Press the Font button to open the Font dialog.

- Choose the desired font, size, and color from the dialog box. Note: The font style, strikeout, and underline controls of the of the Font dialog are not supported and do not affect the text object.

Chapter 7: Text Objects


7.3 Moving Text and the Alignment Grid

Text can be moved using the mouse or the keyboard. Text which is attached to a time or an edge can be moved in all four directions (left, right, up, down). Text which is attached to a segment can only be moved up or down, because the horizontal position is determined by the segment.

Drag-and-drop text with the mouse:

- Left click and hold on the text object and drag it to the desired location.

- Release the mouse button to drop the text.

Nudge the text using the keyboard:

- Select the text by left clicking on it.

- Use the arrow keys on the keyboard to nudge the text up, down, left, or right.

The placement of text objects is controlled by an invisible text alignment grid which makes it easy to line up text and help make neat looking timing diagrams. As you drag or draw a new text object, it is pulled into alignment with the nearest intersection of grid lines.

For Text objects, the default grid settings are .001 display time units in the horizontal direction and 6 pixels in the vertical direction. This setting makes it easy to vertically line up text but leaves complete placement freedom in the horizontal direction.

Change the Text alignment grid:

- Choose the Options > Grid Settings menu item to open the Edit Text and Edge Grids dialog.

- Enter the new horizontal and vertical values.

- Click the OK button to close the dialog. All new text objects will be aligned on the new grid intersections. Existing text objects will hold their current positions .

Chapter 7: Text Objects


7.4 Using Control Codes in Text Objects

Special control codes %m, %M, and %u allow text objects to display the min, max, and uncertainty times of the transition that is attached to the text object. The text object can contain any string of characters including these control codes. When the program detects these control codes it replaces them with the transition's time values. All other text in the string is displayed just like in a normal text object.

To use the control codes in a text object:

- Select an edge in the diagram (edges with uncertainty are more interesting to experiment with).

- Add a text object and type in the following text string

min = %m, max = %M, and uncertainty = %u

- Press the <Enter> key to close the edit box. Depending on the position of the edge, the text string should look something like: min = 50, max = 60, and uncertainty = 10

- Notice that the ordinary text is displayed along with the time values of the transition.

- If you can still see the control codes then the text object is not attached to an edge. See Changing the attachment of a text object.

Chapter 7: Text Objects


7.5 Deleting Text

To delete a text object:

- Select the text object (left click on it).

- Type the <Delete> key on the keyboard, use Edit > Delete menu option, or use the right mouse button in the Delete Mode.

Chapter 7: Text Objects


Chapter 8: Documentation: Text Objects, Image Files, and Printing
Chapter 8: Formatting Timing Diagrams

Timing Diagrammer Pro, WaveFormer Pro, VeriLogger Pro and TestBencher Pro have many different features for changing the way a timing diagram looks on the screen and how it prints to a file. These features are discussed in various object-related sections.

8.1 Waveform Display

8.2 Parameter Display

8.3 Signal Name Display

8.4 Marker Display

8.5 Diagram Window Display

8.6 Parameter Table Display

8.7 Drawing Preferences Dialog

8.8 Font and Color Settings

Chapter 9: Printing, Image Generation


8.1 Waveform Display

Waveforms can be made to snap to an edge grid or end at the same point in time. The color, line thickness, and edge slant can be controlled using the Drawing Preferences dialog.

1) To make all waveforms end at a common time:

- Add a time marker to the diagram (Chapter 6: Time Markers for Measurement).

- Double left click on the time marker line to open the Edit Time Marker dialog.

- Check the Signal ends snap to marker check box and click OK to close the dialog.

- Note that the waveforms snap to the marker, but are not truncated. All signal transitions remain intact, even if the marker is moved. Only the last segment of the signal ends at the marker.

2) The Edge Alignment Grid helps you place signal edges at exact times. As you drag or draw an edge, it is pulled into alignment with the nearest intersection of the alignment grid. The grid does not affect the placement of edges that are moved by delays or formulas. The default grid setting is one display time unit in the horizontal direction. This setting makes very nice VHDL and Verilog stimulus generation files because all the transitions line up on whole number times (like 2ns instead of 2.465ns). Sometimes it is convenient to set the grid to a multiple of the clock frequency to make all new signal edges line up with the clock edges.

To edit the Edge Alignment grid:

- Choose the Options > Grid Settings menu item to open the Edit Text and Edge Grids dialog.

- Enter the new horizontal value in the Signal Edge Grid section.

- Click the OK button to close the dialog.

- All new edges and edges that are moved will automatically be aligned on the new grid.

General Waveform Display: Color, Thickness, Waveform Height, Edge Slant, and Line Separators affect how the waveforms are drawn on the screen.

- Choose the Options > Drawing Preferences (Style Sheet) menu to open the Drawing Preferences dialog.

- Make the appropriate changes and click OK to close the dialog.

Chapter 8: Formatting Timing Diagrams


8.2 Parameter Display

Delay, setup, hold, and sample parameters can have data-book names that include superscript and subscript text. The vertical placement can be changed by dragging and dropping the parameters. The display of each parameter in the diagram window can be customized to display any string or combination of parameter values.

1) Realistic Data-Book Parameter Names let users produce publication quality timing diagrams for inclusion in data books and application notes. Superscripts, Subscripts, Italic, and Bold text is supported in all text objects, comments, min/max formulas, and parameter names (delays, setups, holds, and samples). For example, valid parameter names include:

Formatting styles are ignored during formula evaluation. The names tpd, tpd, and tpd are treated as the same parameter. To add formatting styles to a parameter name:

- Double click on the parameter to open the Parameter Properties dialog.

- Select all or part of the name to format.

- Use the following keys to toggle the text formatting: bold = <Ctrl>-b, italicize = <Ctrl>-i, superscript <Ctrl>-u (u for up), subscript = <Ctrl>-d keys (d for down).

2) Vertical Placement of Parameters: Normally the timing diagram editor determines the best vertical placement for parameters on the screen, but the user can also place parameters at a specific height or between specific signals. To change the placement of a parameter:

- Left click on the center of a parameter and drag it to a new vertical position.

- Note: Depending on the amount of dragging, the parameter either moves one vertical position staying in the original signal space or the parameter moves to a space between two new signals.

After you move a parameter it is considered user placed and it will not be moved from that position unless you choose to move it. To return placement control to the timing diagram editor:

- Double left click on the parameter to open the Parameter Properties dialog.

- Uncheck the user placed check box and click Apply or OK to apply the change.

3) Parameter Display Label Defaults and Customization: The global and individual Display Label settings control how a parameter displays itself in the diagram window. When a parameter is added to the diagram window,  it will display the value determined by the Global Display Label setting. However each parameter can override the global setting by using its own individual Display Label setting. To change the individual or global setting:

- For an individual parameter: Double click on the parameter to open the Parameter Properties dialog.

OR

- For the Global parameter setting: Choose the Options > Drawing Preferences menu option to open the Drawing Preferences dialog.

- Use the Default Parameter Display drop-down list box to choose the display value. The following attributes may be displayed:

- Name, min/max value, min/max formula, min/max Margin, and comment: These will display the attribute as it appears in the parameter window.

- Distance: displays the minimum and maximum distance between transitions. This value takes into account reconvergent fanout effects.

- Custom: displays a custom string of characters and attributes. Certain character sequences are interpreted as attribute control codes, and when such a sequence is found it is replaced with that parameter's attribute. Attribute control codes start with a % character followed by one or two letters. The control codes are:

- name = %n

- min value = %mv   	 and max value = %Mv

- min formula = %mf	 and max formula = %Mf

- min margin = %mm	 and max margin = %Mm

- min distance = %md and max distance = %Md

- comment = %c

- Check the Outward Arrows checkbox to display the setup or hold with the traditional databook format of outward pointing arrows. Unchecked displays the default "point to control signal" style arrows. Outward arrows are useful when using setups as distance indicators or pulse width checks.

- Check the Auto place Setups/Holds on lower signals to make setups and holds appear above the lowest attached signal. If not checked then they appear above the highest attached signal.

- Click OK to close the dialog.

Chapter 8: Formatting Timing Diagrams


8.3 Signal Name Display

The Label window displays the signal names. By default, the Label window displays about 22 characters and is left justified. The width, text justification, font and color of the window can all be modified. Active low signals are distinguished in the Label window by a bar over the signal name.

To change the width of the Label window:

- Drag-and-drop the bar separating signal names and signal waveforms.

To right justify the signal names:

- Choose menu option Options > Drawing Preferences to open the Drawing Preferences dialog.

- Check the Right Justify Signal Names checkbox.

- Click the OK button to close the dialog.

To change the default naming conventions of the Label window:

- Right click on the Add Signal button on the button bar. This will open the Modify Auto Name Prefix dialog.

- Enter the new prefix and press OK.

To change the font used for the signal names:

- Choose the Options > Text/Color Preferences > Set Signal Label Font menu option to open the Font dialog.

To change the background color of the Label window:

- Choose the Options > Text/Color Preferences > Set Signal Label Background Color menu option to open the Color dialog.

To make signal names active low:

- Double click on the signal name to open the Signal Properties dialog.

- Click the Advanced Register button to open the Advanced Register and Latch Controls dialog.

- Either check the Active Low check box, or type $BAR on the end of the name.

Chapter 8: Formatting Timing Diagrams


8.4 Marker Display

Markers can be made to display different values by using the Edit Time Marker  dialog or the Drawing Preferences (style sheet) dialog.

Marker Label Defaults and Customization: The global and individual Display Label settings control how a marker displays itself in the diagram window. When a marker is added to the diagram window, it will display the value determined by the Global Marker Display Label setting. However each marker can override the global setting by using its own individual Display Label setting. To change the individual or global setting:

- For an individual marker: Double click on the marker to open the Edit Time Marker dialog.

OR

- For the Global marker setting: Choose the Options > Drawing Preferences (style sheet) menu option to open the Drawing Preferences dialog.

- Use the Default Marker Display drop-down list box to choose the display value. The following attributes may be displayed:

Default Marker Display:

Display Label: This setting controls the default label used for displaying markers in the drawing window. The following attributes may be displayed:

- Name, min value, min/max value: will display the attribute as it appears in the Marker dialog.

- Distance: displays the total time compressed.

- Type: displays the type of marker (eg. documentation, loop start, loop end, …). This is useful in debugging Marker-generated HDL code.

- Custom: displays a custom string of characters and attributes. Certain character sequences are interpreted as attribute control codes, and when such a sequence is found it is replaced with that parameter's attribute. Attribute control codes start with a % character followed by one or two letters. The control codes are:

- name = %n

- min value = %mv	 and max value = %Mv

- min distance = %md and max distance = %Md

- type = %t

- comment = %c

Note: Individual markers can be made to display a different attribute by using the Edit Time Marker dialog.

Chapter 8: Formatting Timing Diagrams


8.5 Diagram Window Display

The Diagram window supports spacers that can be used to insert a space into timing diagrams for aesthetic purposes. Individual and groups of objects can be hidden. Fonts, background color, and display options can be set using controls in the Options menu.

To insert horizontal spaces into the diagram:

- Left mouse click on the Add Spacer button.

To convert a regular signal into a spacer:

- Double left click on the signal name of a signal with NO waveforms drawn (you must delete any waveforms in the signal). This will open an edit box with the signal name selected.

- Backspace once to clear the signal name.

- Press the <Enter> key or mouse click outside of the edit box to close the edit box. The signal is now a spacer.

To hide individual signals or parameters:

- Select the signal or parameter by left clicking on the name of the object.

- Choose either the View > Hide Selected Signals or View > Hide Selected Parameter menu option to hide the selected object.

To hide groups of signals and parameters using filter patterns:

- Select the View > Filter Signals or View > Filter Parameters menu option to open the filter dialog.

- Enter a pattern and press the Add button to activate it. See hiding signals for more information.

To hide all objects of a given type:

The View menu has several Show object sub-menus that can be used to hide entire sets of objects like all delays or all grid lines. In particular, two of the show options are important to documentation users:

- Show Hidden Text allows attachments to signals like text objects and grid lines to continue to be displayed even when their parent signal is hidden. This lets you create data-book quality diagrams, by using signal segments to line-up and center text without having to show the signal segment.

- Show Critical Paths is the option that lets delays change color to indicate which edges of the delayed transition are set by the particular delay. This is an important feature for design. But for documentation, you can uncheck the menu option to make all the delays black.

General Diagram Window Options affects how numbers and parameters are displayed, and how the waveforms are drawn on the screen.

- Choose the Options > Drawing Preferences menu to open the Drawing Preferences dialog and set the truncate trailing zeros and hide small parameter labels controls.

- The Color and Fonts can be changed using the Options > Text/Color Preferences > Set Drawing Window menu options.

Chapter 8: Formatting Timing Diagrams


8.6 Parameter Table Display

The Parameter Table displays parameters in a convenient databook format. Every time a new parameter is added to the drawing window an entry is made in the parameter table. To edit the values in the parameter table, double click on the parameter and use the Parameter Properties dialog box. The data inside the Parameter Table can be rearranged and viewed with the following functions:

To adjust the width of a column:

- Move the cursor to the right-hand side of the column heading. When the cursor changes to a double arrow, press the left mouse button down. A black line will appear.

- Drag the black line to the new width of the column and drop it by releasing the left mouse button.

To move a parameter:

- Left click on a cell in the parameter to be moved.

- Put the mouse cursor near the very top or bottom of the parameter. When the mouse cursor changes from a normal arrow to an up/down double arrow, press the left mouse button down. A green bar will appear.

- Drag the green bar to the parameter's new location and drop it by releasing the left mouse button.

To hide a parameter in the parameter window:

- Left mouse click on the parameter's name.

- Then choose the View > Hide Selected Parameter Data menu option.

Hiding a parameter in the parameter table will hide its timing data and all instances of the parameter in the drawing window. The parameter will continue to function normally, however timing errors will not be shown until you unhide the parameters. To show a hidden parameter choose the View > Show Hidden Parameter Data menu option. This brings up a dialog box that allows you to selectively unhide parameters.

To delete a parameter from the Parameter Table:

- Select the parameter by left clicking on any cell of the parameter.

- Then select the Edit > Delete menu option OR press the <delete> key.

Also read about Deleting parameters in the Drawing Window.

To switch between min/max value and min/max formula display:

- Select either the Options > Parameter Window Preferences > Display min/max value menu option or the Options > Parameter Window Preferences > Display min/max formula menu option. These are mutually exclusive parameter window options; the default is by value.

Chapter 8: Formatting Timing Diagrams


8.7 Drawing Preferences Dialog

The Drawing Preferences dialog controls how objects appear in the drawing window. To open this dialog choose the Options > Drawing Preferences menu option in the timing window. Below is a list of the options that can be set with this dialog.

Signal Display Settings:

Signal Label Font: Opens font dialog. You can change the font, size, and color of the signal labels.

Signal Color: Signals waveforms can be drawn in any color. Default is black.

Track Font: Keeps waveform height relative to the signal label height.

Waveform Height: Sets the height of the waveform.

Line Thickness: Signal waveforms can be drawn with different line widths. Default is 1 point (1/72th of an inch).

Default Radix: Default radix used to display virtual states on new signals.

Edge Display Settings:

Sloped or Straight: Signal transition edges can be drawn as sloped or straight lines depending on which radio button is selected. Default is sloped edges. The angle of the slope can also be controlled (the default is 2 pixels).

General Display Settings:

Hide small parameter labels: If checked, the parameter labels will be hidden if the parameter is visually small (less then 2 pixels wide). When zooming out to a larger time scale, parameters shrink, but labels stay the same size. This option will prevent these small parameter labels from cluttering the screen. Default is unchecked.

Truncate trailing zeros: Removes trailing zeros after the decimal point in time values (makes the display more readable). Default is checked.

Hide signals on bus merge: Bus member signals can be automatically hidden when a group bus is created.

Auto place Setups/Holds on lower signals: If checked setups and holds appear above the lowest attached signal. If not checked then they appear above the highest attached signal.

Separators between signals: Signals can be displayed with and without separator lines depending on the state of the checkbox. Default is "with separator" lines.

Display bus in Hex (else Bin): Group buses can display values either in Hex or Binary.

Right justify signal names: If checked, the signal names in the Label window will be right justified.

Default Parameter Display:

Display Label: This setting controls the default label used for displaying parameters in the drawing window. The following attributes may be displayed:

- Name, min/max value, min/max formula, min/max Margin, and comment: will display the attribute as it appears in the parameter window.

- Distance: displays the minimum and maximum distances between transitions. This value takes into account reconvergent fanout effects.

- Custom: displays a custom string of characters and attributes. Certain character sequences are interpreted as attribute control codes, and when such a sequence is found it is replaced with that parameter's attribute. Attribute control codes start with a % character followed by one or two letters. The control codes are:

- name = %n

- min value = %mv	 and max value = %Mv

- min formula = %mf	 and max formula = %Mf

- min margin = %mm	 and max margin = %Mm

- min distance = %md and max distance = %Md

- comment = %c

Note: Individual parameters can be made to display a different attribute by using the Parameter Properties dialog.

Default Marker Display:

Display Label: This setting controls the default label used for displaying markers in the drawing window. The following attributes may be displayed:

- Name, min value, min/max value: will display the attribute as it appears in the Marker dialog.

- Distance: displays the total time compressed.

- Type: displays the type of marker (eg. documentation, loop start, loop end, …). This is useful in debugging Marker-generated HDL code.

- Custom: displays a custom string of characters and attributes. Certain character sequences are interpreted as attribute control codes, and when such a sequence is found it is replaced with that parameter's attribute. Attribute control codes start with a % character followed by one or two letters. The control codes are:

- name = %n

- min value = %mv	 and max value = %Mv

- min distance = %md and max distance = %Md

- type = %t

- comment = %c

Note: Individual markers can be made to display a different attribute by using the Edit Time Marker dialog.

Style Options:

Use Style Sheet From Diagram: If checked, when you open an existing timing diagram the program will use the style information stored in the current timing diagram. If it is unchecked then the current style information will override the style information stored in the timing diagram. Default is checked.

Import Style Sheet: Opens a file dialog that lets you load the style information from another timing diagram.

Set Starting Style to Current: Clicking this button will make the current style settings become the default settings for new timing diagrams.

Chapter 8: Formatting Timing Diagrams


8.8 Font and Color Settings

Tex/Color Preferences is a sub-menu of the Options menu. All project-wide fonts and colors are set using this menu. If you just want to change the properties of a specific text object see Font Text Object. The following items can be customized using this sub-menu:

Set Global Default font

Set Drawing Window font

Set Drawing Window background color

Set Signal Label font

Set Signal Label background color

Set Parameter Window font

Set Parameter Window background color

The Set font option sets the font, style, and color for the three main text sections of the timing diagram editor. The Set background color option sets the background color for these same sections. By default the Windows™ system font and Windows™ background color are used. To change the default font for all sections use the Option > Text/Color Preferences > Set Global Default font option.

Set Parameter Color Strip color

Set Parameter Color Strip font color

The Parameter Color Strip is the bar in the parameter window that contains the column headings. Both the background color and the font color are user-definable.

Set Button Bar Color Strip color

The Button Bar Color Strip is the background color of the button bar in the main timing window.

Restore Default Style

This Option restores the default Windows fonts and background colors to the drawing, label, and parameter windows. Text objects with individually specified fonts are not affected by this menu option.

Chapter 8: Formatting Timing Diagrams


Chapter 9: Printing, Image Generation
Chapter 9: Images, OLE, TDML, and Printing

WaveFormer Pro, Timing Diagrammer Pro, VeriLogger Pro and TestBencher Pro support a wide variety of image generation, printer options, OLE embedding, and TDML support. There are three main groups of documentation features:

1) Image Generation: The timing diagram editor supports six different ways to convert your timing diagrams into image files which can be embedded into word processors, graphics packages, and page layout programs.

9.1 Embedding Images into Documents

9.2 Copy to Clipboard

9.3 WMF Images for Microsoft Word

9.4 MIF Images for FrameMaker

9.5 Vector and Raster Image Files

2) Image Management: If you are managing a large number of timing diagram images, then you will want use the OLE or TDML features. OLE provides a quick way to manage image files and the corresponding timing diagram files inside word processing documents. TDML provides an industry standard format for on-line timing diagrams.

9.6 Managing Multiple Views(Images) of a Diagram

9.7 OLE Embedding

9.8 TDML Management

3) Printer Options: Printing timing diagrams directly to the printer is the fastest and easiest way to document large timing diagrams. These print-outs are designed to be used by engineers to document their designs.

9.9 Printing the Diagram Window

9.10 Printing the Parameter Window

Chapter 10: Parameter Libraries


9.1 Embedding Images into Documents

There are six different ways to convert your timing diagrams into image files. Image files can then be embedded into word processors, graphics packages, and page layout programs.

Vector files can be sized and scaled without affecting the crispness of the lines that make up the timing diagrams. Most word processors support editing of the metafile types. Not all programs support all six file types so we encourage you to experiment and find out what works best for your tool suite.

The following General Purpose Image formats are supported:

Name	Type	Ease of use	Comments
Copy-to-Clipboard	Windows bitmap	very easy	medium quality images which cannot be sized or scaled without losing resolution
WMF metafiles	vector metafile	very easy	excellent quality images which can be sized or scaled - recommended for Microsoft Office/Windows Apps
MIF files	vector file	moderately easy	excellent quality images - for use with FrameMaker only
The following Specialized Image Files are also supported:

Name	Type	Ease of use	Comments
TIFF files	raster	very easy	loss-less data compression, high quality
PNG files (DataSheet Pro)	raster	very easy	web-ready, loss-less data compression, high quality
JPEG files (DataSheet Pro)	raster	very easy	web-ready, lossy data compression
CGM metafiles	Vector metafile	moderately easy	excellent quality images - support for cross-platform images
EPS files	Vector file	most difficult	excellent quality images - recommended for cross-platform images and data books
Chapter 9: Printing and Image Generation


9.2 Copy to Clipboard

Copy-to-clipboard is the quickest way to copy and paste an image into a word processing document. This method uses a screen capture bitmap of the currently selected window (either the timing diagram or the parameter table) and puts it on the Windows clipboard. Since there is no equivalent method for doing this on UNIX platforms, those users should use EPS files instead.

The copy-to-clipboard method also produces the lowest quality images. The resolution of the image is based on your monitor's resolution settings. The bitmap images are not scaleable or editable inside word processing programs. For higher quality images use the File > Print Diagram menu option and choose one of the vector image formats (e.g., Windows Metafiles WMF, FrameMaker MIF, or Encapsulated Postscript EPS).

To use copy-to-clipboard:

- Arrange the Drawing window so that your timing diagram is displayed the way you want it to appear in the document.

- Choose Edit > Copy-to-Clipboard menu option which opens a dialog of that name.

- Choose your options and press the OK button. This closes the dialog and places a bitmap of the timing diagram on the clipboard.

- Inside your graphics or word processing program use the Edit > Paste menu command to embed the image into your document.

Note: For printing purposes you may want to use the default Windows colors (black text on a white background) in your Drawing window before capturing the screen. See section 8.7 Font and Color Settings .

Chapter 9: Printing, Image Generation


9.3 WMF Images for Microsoft Word

The recommended image format for Microsoft Office documents is the WMF Metafile. The WMF format is the most widely supported scaleable and editable image format for Windows platforms. Your timing diagrams will print with smooth lines and scaled text.

To make a WMF file:

- Select the File > Print Diagram menu item which opens the Print dialog.

- Choose the WMF Metafile [MS Word] option from the Print To drop-down list box in the bottom left hand corner of the Print dialog.

- You do not need to specify a filename. If you are in Windows, the Print dialog will automatically place the metafile on the clipboard and you can use a paste command to insert the image into a document. You may optionally specify a filename with an extension of .wmf.

- Choose other options and then press the OK button. This closes the dialog and places the metafile of the timing diagram on the clipboard (and creates a WMF file if you specified a filename).

- (Inside Microsoft Word) use the Edit > Paste menu command to embed the image into your document.

Microsoft Word also supports bitmap images and EPS images. Please read file image.doc for more information on using these formats with Word.

Trademarks

Chapter 9: Printing and Image Generation


9.4 MIF Images for FrameMaker

SynaptiCAD products can export diagrams and parameter lists to Adobe's Maker Interchange Format (MIF). The generated MIF files can be imported into FrameMaker v3.0 and later. Inside FrameMaker, you can edit MIF images by adding extra graphics objects such as text and lines, and edit existing parts of the diagram by altering spacing, size, color, etc. The timing diagram editor also supports two unique features for the MIF format:

1) The ability to set the horizontal size. This is extremely useful when generating multiple MIF images of the same size (for use in a data book).

2) The ability to scale the image. Once imported into FrameMaker, the image can be scaled as desired.

To export your diagram or parameter list to MIF format:

- If printing the diagram, select the File > Print Diagram menu option. This opens the Print dialog box.

- If printing the parameter table, select the File > Print Parameters menu option. This opens the Print dialog box.

- Select the MIF FrameMaker File option in the Print To drop-down list box, located in the lower left hand corner of the dialog box.

- Enter a file name with a .mif extension into the Filename edit box.

- If you wish to set the horizontal size of the MIF file, use the check box and edit box in the Margins section of the dialog. Setting the image size is useful when you want to generate multiple MIF images of the same size.

- If you need to select any other options, do so now.

- Click the OK button to export the diagram.

To import your diagram or parameter list into FrameMaker:

- Inside FrameMaker, position your cursor at the approximate location where you would like the diagram to appear.

- Select the File > Import > File menu option which opens the Import File dialog box.

- Locate your MIF file by using the dialog box. You may wish to select the Interchange - MIF option from the drop down combo box. Use List Files of Type to help you locate the file.

- Select the Copy Into Document radio button. Diagrams exported from SynaptiCAD products must be imported using this option because they do not have any text flows.

- Click the OK button. Your diagram should now appear within FrameMaker.

Trademarks

Chapter 9: Printing and Image Generation


9.5 Vector and Raster Image Files

Vector image formats can be sized and scaled without affecting their crispness. The following are instructions for producing images in the EPS and CGM vector format. The file image.doc located on the distribution diskette has advanced image instructions that are especially helpful for EPS file generation.

- Choose the File > Print Diagram or menu item which opens the Print dialog.

- Choose one of the options in the Print To drop-down list box in the bottom left hand corner of the Print dialog to determine the type of file to create: CGM Metafile or EPS file.

Note: Do not select the File radio button. This creates a file that is only compatible with the default printer. This is not a generic file type and is not supported by other programs.

- Enter a file name with the appropriate extension: .cgm or .eps.

- Choose OK to create the image file.

- Refer to your word processor or graphics program documentation to find out how to embed or insert an image file into a document. It is usually menu commands like Insert > Picture or File > Import that perform this function.

Two of the raster image types that are provided, GIF and JPEG files, produce web-ready graphics. The TIFF and GIF types provide loss-less data compression, while the JPEG format uses a lossy data compression. Loss-less data compression ensures, as its name implies, that no data is lost during compression. These file format types can be imported and exported using the directions above, selecting the appropriate file type.

Chapter 9: Printing and Image Generation


9.6 Managing Multiple Views(Images) of a Diagram

The SynaptiCAD product line supports the concept of timing diagram Views which allow the storing of settings for multiple pictures of a timing diagram. Views are normally used during the documentation phase of the design when several different images will be made from one larger timing diagram. Views can also be used to save off several different zoom and scroll settings that indicate areas of interest in a large timing diagram. Views are created and edited from the Print Diagram and Print Parameter dialogs.

To create a view of a timing diagram:

- Choose either the File > Print Diagram or the File > Print Parameters menu item which opens a version the Print dialog.

- Change the settings in the Print dialog to create the desired image. The most common settings are the time range, type of image file to print, and the margin/width controls.

- Press the Add button to open the Name of New View dialog.

- Type in a descriptive name into the edit box. This is not a file name so you do not have to include a file extension.

- Press Cancel to exit the dialog without printing or Print to immediately generate an image.

To switch between views of a timing diagram:

- Open a Print dialog.

- Double click on the view name to load that view’s printer settings.

To overwrite the settings for an existing view, press the Add button and use the name of the view to overwrite.

Chapter 9: Printing and Image Generation


9.7 OLE Embedding

Special versions of WaveFormer Pro include OLE, offering users the ability to both embed and link their timing diagrams to third-party applications. OLE provides a convenient way to manage timing diagrams which are included in many of your documents, such as word processor files, spreadsheets, and presentation graphics. Then, when you make changes to your timing diagrams, they are automatically updated in the linked or embedded third-party files. This feature greatly simplifies documentation by allowing changes to timing diagrams to be made in only one place.

Embedding can be thought of as having a separate copy of WaveFormer running inside your application software.  If you have a timing diagram you want to show in a report, for instance, you may embed a copy of your WaveFormer file directly from your word processing file. You have most of the functionality of WaveFormer in the embedded object and you can edit your timing diagrams just as you normally would. Later, you can return to the embedded image by double-clicking on it, which launches WaveFormer for further editing. As you edit the timing diagram, changes are automatically shown in the embedded image in your report. You can embed as many diagrams as you want in a given document.

With linking, a single timing diagram file can be connected to many documents which need to include it.  For instance, if you’re working on a report and a presentation and want to show the same timing diagram in both documents, you simply link each document to the desired timing diagram file. This way, any changes you make later in the timing diagram file will be updated automatically in both your report and presentation. You may link your timing diagram to as many other documents as you like, and you can include the same link multiple times in a single document.

The special versions of WaveFormer which support OLE are technically known as OLE servers. This means that they can be linked to or embedded within other applications. These applications, in turn, are known as OLE clients since they make use of the server’s features. Many of the more popular programs, like MS Word and FrameMaker, work as OLE clients. OLE is a Windows-only feature, and is not supported by UNIX X-Windows systems.

1) To use OLE embedding:

- Close WaveFormer since it will be launched automatically from within your third-party application.

- Run your third-party application, such as your word processor or graphics software.

- Refer to your documentation to find out how to embed an OLE object from the application you are running. We have found that there is usually a menu command resembling Insert > Object or File > Import > Object that performs this function. This menu command will open a dialog which lists all of the OLE servers available on the system.

- Choose Timing Diagram Component (exact wording may vary) from the list of OLE servers (usually under the Create New tab). This will automatically launch WaveFormer.

- Inside WaveFormer, merge in an existing timing diagram or create a new one. Notice that as you change the timing diagram in WaveFormer, the embedded image is automatically updated.

- When the timing diagram is complete you can return to your third-party application to continue your work.  The embedded timing diagram remains where you left it and is saved with your document.

Your third-party application continues to display the timing diagram that you drew. If you double click on the timing diagram object, WaveFormer will launch automatically and open the diagram you just created.

2) To use OLE linking:

- Create and save a timing diagram file in WaveFormer.

- Run a third-party application, such as your word processor or graphics program.

- Refer to your third-party software documentation to find out how to link to a file. We have found that there is usually a menu command resembling Insert > Object or File > Import > Object that performs this function. This menu command will open a dialog which lists all of the OLE servers available on the system (under the Create New tab).

- Choose the Create From File tab in the dialog (instead of Create New which is for embedding). Then, type in the file name you want to link to. You may have to click on a checkbox which says Link to File to complete the dialog.

- Linking to the file automatically launches the SynaptiCAD product which created it. You are free to make changes to the file just as you would had you opened it in a stand-alone mode. However, by saving it once changes are made, you automatically update the links all other applications have with this file.

- Your application now displays the newly edited and saved timing diagram within it.

3) There is an alternative way to embed or link using cut/copy and paste:

- Run WaveFormer and create or open a timing diagram.

- Cut or copy your diagram to the clipboard.

- In your third-party application select Edit > Paste Special.

- In the dialog box that appears, mark the Paste Link radio button (for linking) or the Paste radio button (for embedding) and be sure the name of your application is correctly displayed in the As list. Click OK and you should see the linked or embedded timing diagram within your application.

Chapter 9: Printing and Image Generation


9.8 TDML Management

On-line data sheets will eventually replace or augment printed data books. TDML (Timing Diagram Markup Language) is the timing diagram and timing parameter format recommended by the SI2 ECIX committee involved with the data sheet standard.  With TDML you will be able to view a data sheet in a browser like environment and then double click a timing diagram icon to automatically launch a SynaptiCAD timing diagram editor to display and manipulate the timing information.

SynaptiCAD has been working with Si2 on this format since November of 1996 and we expect to see the first on-line data sheet sites in the beginning of 1999. Keep checking our web site for updates on the newest TDML information.

Versions 5.0 and above support the latest TDML standards.

To create a TDML timing diagram:

- Select the File > Save Timing Diagram As menu option to open the Save dialog.

- Choose TDML File (*.tdml, *.tdm) from the Save as type drop-down list box.

- Type in a file name with either a .tdml or .tdm file extension. The 3-letter extension currently has the most support because it is compatible with CD-ROMs and older Windows system.

- Choose OK to save the file.

Chapter 9: Printing and Image Generation


9.9 Printing the Diagram Window

To print the Diagram window:

- Choose the File > Print Diagram menu option to open the Print dialog.

- Set the printing options and press the Print button. The following list explains the printing options for the Drawing window. Note: Press the Apply button to save the printer settings without actual performing a print operation (cancel to close the dialog).

Printer:

Displays the default printer. Use the Setup button to change the default printer.

Print Time Range:

Entire Time Scale: Prints to the end of the longest drawn signal or the end diagram marker.

Time: Prints from the starting time to the ending time.

Print Signal Range:

All signals: Prints all signals that are not hidden.

Currently Selected Signals: Prints only signals that are highlighted.

Currently Displayed Signals: Prints only signals whose names are completely displayed in the drawing window.

Print or Create Image File:

Print to: Lists the printer and image options:

Printer: Prints to the default printer. If active, all other options in this section do not apply.

File: Prints to a file in a format that is compatible with the default printer. A file name must be provided in the file name edit box.

WMF Metafile [MS Word]: Copies a metafile to the clipboard and optionally saves a disk-based metafile.

MIF FrameMaker: Prints to a Maker-Interchange-File that can be edited in the FrameMaker desktop-publishing program. A file name must be provided in the file name edit box. Once the MIF radio button is checked you can optionally set the horizontal size of the image using the check box and edit box in the Margins section of the dialog. Setting the image size is useful when you want to generate multiple MIF images of the same size. MIF files are scaleable once they are imported in to FrameMaker.

CGM Metafile: Prints to a CGM metafile.  Enter a file name with a .cgm extension. There is some cross-platform support for CGM metafiles so you can test compatibility with your MAC and UNIX programs.

TIFF Tagged Image File Format: Prints to a TIFF file. Enter a filename with a .tif extension. TIFF files have a very high quality loss-less data compression.

PNG (DataSheet Pro only): Prints to a PNG file. Enter a file extension of .png for you filename. This format is web-ready and has a high quality loss-less data compression.

JPEG (DataSheet Pro only): Prints to a JPEG file. Enter a filename with a .jpg extension. JPEG files are web-ready and use a lossy data compression technique that ensures minimal size for your graphics.

EPS Encapsulated Postscript File: Prints to a cross-platform, encapsulated postscript file (EPS). The Preview check box works with the EPS File option to create an EPS file that can be displayed inside of other programs like Word and FrameMaker. Without a preview, imported EPS files generally show up as a gray or white box in most applications. Two different preview formats are available: Tiff 5 which is compatible with Microsoft Office applications, and Interchange which is compatible with FrameMaker. Previews make an EPS picture viewable inside an application, but the trade-off is an increase in the size of the image. Setting the Dots Per Inch (DPI) edit field controls the resolution and size of the preview image. For more information on EPS support please view the image.doc file included on the distribution disk. WARNING: an error in Word 7.0 causes previews to be printed even when printing to a Postscript printer. Contact Microsoft to get a free update to Word 7.0a that fixes this problem.

Margins (non FrameMaker):

Use Margins: Enables the margin options. If this is unchecked, the only margins will be the minimum area needed by your printer. This option, when combined with an unchecked Print signal names check box, is useful if you are trying to tape long diagrams together.

Sizes in inches: Indicates how wide the margins should be.

Custom header and footer strings: Headers and footers can be placed on a diagram printout using header and footer strings. Control codes can be embedded into the header and footer strings. Below is a list of the available control codes:

%f	filename

%p	page number

%d	date

%t	time

Text can be left, right, and center justified using a semicolon ';' to separate the text strings. For example: "Filename %f ;;%p" would left justify the filename, put no text in the center, and right justify the page number.

Margins (for FrameMaker print setting):

If the Print To: MIF radio button is selected then the Margins section of the dialog has different controls that can be used to set the horizontal MIF image size.

Specify Image Size: Enables the width edit box.

Width: Sets the width of the MIF image in inches.

Image Views:

Image View box: Double clicking on a view loads the view information into the Print dialog. Read section Managing Multiple Views(Images) of a Diagram for more information

Add: Saves current printer settings in a view.

Delete: Removes and deletes the selected view.

Objects to Print:

Print Time Line: If checked, the timeline is printed.

Print border box: If checked, a black border is printed around the drawing.

Print signal names: If checked, the signal names are printed.

on each page: If signals are longer than one page width, this box indicates whether or not the signal names will be printed on the overflow pages. "Print signal names" must be checked in order for this to affect the printing.

Scaling:

% Horizontal and % Vertical: Indicate the amount to scale the drawing. Normal size is 100%, smaller pictures are less than 100%, and larger pictures are greater than 100%. We recommend you use TrueType fonts when scaling as regular fonts do not scale.

Number of horizontal pages: Forces the drawing to be printed on the specified number of horizontal pages. This feature only scales the waveforms horizontally. Text and signal names remain the same size. If this value is set to 0, printing will function as in previous versions of WaveFormer Pro.

Chapter 9: Printing and Image Generation


9.10 Printing the Parameter Window

To print all the parameters in the Parameter window:

- Select the File > Print Parameters menu option to open the Print Parameters dialog.

- Set the printing options and press the Print button. The following list explains the printing options for the Drawing window. Note: Press the Apply button to save the printer settings without actual performing a print operation (cancel to close the dialog).

The following is a list of parameter window printing options:

Printer Display:

Displays the default printer. Use the Setup button to change the default printer.

Print or Create Image File:

Print to: Lists the printer and image options:

Printer: Prints to the default printer. If active, all the other options in this section do not apply.

File: Prints to a file in a format that is compatible with the default printer. A file name must be provided in the file name edit box.

All other image file formats: These are covered in the image file and Print the Diagram sections.

Image Views:

Image View box: Double clicking on a view loads the view information into the Print dialog. Read section Managing Multiple Views(Images) of a Diagram for more information

Add: Saves current printer settings in a view.

Delete: Removes and deletes the selected view.

Note: The parameters will be printed in the current parameter window font. TrueType fonts work best when printing.

Chapter 9: Printing and Image Generation


Chapter 10: Parameter Libraries

Parameter libraries are free parameter files that can be shared by several timing diagram projects. They contain the timing parameter information of components. The timing diagram editor ships with several standard libraries that contain over 10,000 timing parameters, and it also supports the industry standard TDML for on-line component information. You can also use the timing diagram editor to create your own libraries.

Using Parameter Libraries: First, add the library to the project, make a specification, then define a macro. Once the library is set up you can reference the library parameters in your project.

10.1 Adding Parameter Libraries, Specifications, and Macros

10.2 Using Library Parameters (Referencing)

For more information on making, converting, accessing, and maintaining parameter libraries read the following sections:

10.3 Making Parameter Libraries

10.4 Converting Parameter Library File Formats

Maintaining Parameter Library and project integrity: Parameter libraries and projects change so there are several features for updating, editing, browsing, and archiving your projects and libraries.

10.5 Merging a Parameter Library into a Project File

10.6 Copying Referenced Parameters

10.7 Editing Parameter Libraries

10.8 Updating a Project from the Parameter Library

10.9 Viewing Parameter Library Parts

Chapter 11: Waveform Equation Generation


10.1 Adding Parameter Libraries, Specifications, and Macros

Before you can use a parameter library in a timing diagram project you must add the library to the library search list, set up a specification, and define a macro for the library.

Here are the three basic steps:

1) Add parameter libraries to your Library Search List:

- Select the Libraries > Parameter Library Preferences menu option to open the Parameter Library Preferences dialog.

- Press the Edit Parameter Libraries radio button. If you are creating several timing diagram project files and you want all of them to use the same default library list, then choose the Edit Default Libraries radio button.

- Click the Add Library to List button on the right side of the dialog. This opens the Library Browse dialog.

- Select the names of the parameter libraries that you want to add to the library list.

- Click OK to return to the Library Preferences dialog.

- Notice that the Use full pathnames checkbox is checked. This means that both the library filename and the path information will be added to the library list. If you wish to reference libraries contained only in the current working directory then you can uncheck this checkbox. Usually libraries are organized in a tree directory structure with different paths for different manufacturers, so you will probably want to leave this checked.

- The libraries you selected are now listed in the Current library list. At this point you can reference and use the values in the libraries. DO NOT close the Library Preferences dialog as it is used in the next step (this dialog is modeless, so you can leave it open while you perform regular operations).

2) Define specifications for the parameter libraries in the Library Search List (optional, but recommended):

- Theory: When you use a parameter name in a formula, the program searches the project for the definition. If the definition of the parameter is not found in the project, the libraries are searched in the order they are listed in the library search list until a match is found. If no match is found, the formula will display the error symbol. Since different libraries may have parameters with the same name, you need to set up a way to differentiate which library should be searched to find a particular parameter. Library Specifications let you differentiate which library to search.

Also, parameter libraries with library specifications will only be searched if the parameter being sought has a matching specification. Therefore, if you keep a large number of libraries on your library search list, it is a good idea to give them library specifications in order to make parameter searches faster.

- Inside the Library Preferences dialog, notice the Specification box to the right of the Current Library list box.

- Select a library to modify its specification.

- Click the right arrow once to add a specification. Notice that the name of the library has moved into the specification list. Each time you click the right arrow, more of the path is added to the specification. Usually the filename is a sufficient specification.

- Now when you want to reference a parameter in a specific library, use this notation: LibrarySpecification:ParameterName

- The next section, Referencing Library parameters, shows how to reference a library parameter without having to type the name and specification.

- Click OK to close the dialog.

3) Define a Macro to represent the specifications of the new parameter library (optional):

- Theory: Macros allow you to substitute one string or character for another in formula evaluation. If you make macros for your library specifications and use the macros in your parameter formulas, you can analyze the impact of switching to parts from another logic family or another vendor by changing the macro values to other library specifications (assuming the parameter names are the same across libraries). You only need to use macros if you plan to switch between libraries.

- Example: Macro Name => %lib%     Value =>  motorola:als:

A parameter value of %lib%partname will equate to motorola:als:partname. Now you could define %lib% to be ti:ls: and the example will evaluate to ti:ls:partname. Assuming that parameter names remain the same between libraries and the appropriate libraries are on the current library list, you can use this technique to switch manufacturers and logic families.

- Select the Libraries > Macro Substitution List menu option to open the Edit Macro dialog.

- Type the macro name into the Name box. No percentage characters are allowed in macro names.

- Type the macro value (the string that you want to be put in place of the macro name). Tip: All the library specifiers are listed in the Value drop-down list box, so the easiest way to define Value and avoid typing errors is to pick it from the drop-down list.

- Click the OK button to add the macro or press the <Enter> key to add the macro and close the dialog box.

Chapter 10: Parameter Libraries


10.2 Using Library Parameters (Referencing)

Referencing library parameters in the formulas of other parameters is a way to use libraries without copying the library parameters into the project. This is particularly useful when you are sharing libraries between several projects and you don't want to manually update each project if a library changes.

To reference a library parameter use the following syntax:

LibrarySpecification:ParameterName

For example, if the library specification is ti:als and the parameter name is 00;tpLH, then to reference that parameter you would use ti:als:00;tpLH. If the library has no specification, you can reference parameters from it by just typing the parameter name (i.e. 00;tpLH). To avoid typing, there are some techniques for automatically getting a library parameter into your formula:

- Double click on a delay, setup, or hold in your timing diagram to open the Parameter Properties dialog.

- Click the Libraries button at the bottom-right side of the dialog to open the View Parameters in Library dialog.

- Select a Library to view its parts. Notice that the list box to the right is filled with timing parameters.

- Select a timing parameter to insert into your formula. Either scroll around till you find the parameter, or type part of the name into the Search For edit box.

- Choose one of following three buttons to copy the library parameter into the project:

1) Click the Insert into Formula button, which will copy the +LibrarySpecification:ParameterName into both the min and max edit boxes of the parameter. The unary plus operator makes it easy to copy the parameter into a partially complete formula. If you are just referencing the parameter value then the unary plus does not affect the value. This is the most common method to reference the library parameter.

2) Click the Replace Parameter button. This overwrites the name, min, max, and comment values of the parameter displayed in the Parameter Properties dialog.

3) Click the Insert into Table button. This creates a new free parameter in the Parameter Table that has the same name, min, max, and comment values as the library parameter. No changes are made to parameters displayed in the Parameter Properties dialog.

- Click OK to close the dialog and return to the Parameter Properties dialog box. Note: If a parameter is selected, the OK button performs the same function as Insert into Formula.

- Notice that both the min and max edit boxes are filled with the parameter values.

Alternate Method:

- Inside the Parameter Properties dialog, click inside the min or max edit box.

- Press the <F3> key on the keyboard to open the Library Parameters dialog.

- Select a parameter and click OK to close the dialog and return to the Parameter Properties dialog box.

- Notice that the parameter value was copied into only one of the min or max edit boxes.

Chapter 10: Parameter Libraries


10.3 Making Parameter Libraries

Parameter libraries are files that store parameters. These library files can be stored in three different formats:

1) A Tab or Comma Separated format (*.txt): This file format is the fastest loading format and is compatible with spreadsheet programs.

2) Free parameter files (*.fp): The SynaptiCAD free parameter format. Stores Base time unit with the library file so the file can be used with a project that has a different base time unit than the library.

3) A Timing Project file (*.tim): A complete timing diagram can be used as a library. However, only the parameters will be read from the file. This is the slowest loading format, but it is handy when you want to quickly reference a parameter from another project.

Parameter libraries can be made using the timing diagram editor or they can be imported using a commercial spreadsheet. You will probably want to develop large libraries using a commercial spreadsheet because they have more viewing and editing features than the built-in Parameter table.

To make a parameter library using the timing diagram editor:

- Either open an existing project that has free parameters in it, or add and edit free parameters using the parameter table.

- Select either Libraries > Save Free Parameters As Library or Libraries > Save All Parameters As Library  menu option depending on which parameters you want to save to the file. This will open the Save As dialog box.

- In the Save as type drop-down list box choose either Free Param Text (*.txt) for the tab separated format, or Free Parameter (*.fp) for the free parameter file format. The txt format is recommended.

- Choose a file name and then press the Save button to create the library file.

To make a parameter library using a commercial spreadsheet:

- Open your spreadsheet program.

- Type NAME, MIN, MAX, and COMMENT into each column of the first row of the spreadsheet.

- On each subsequent row, type the values for a single parameter

- Use the Export or Save As menu command to create a Tab-separated text file (or consult your spreadsheet documentation for details). Note: Test small files for compatibility before beginning a large library project.

Chapter 10: Parameter Libraries


10.4 Converting Library File Formats
10.4 Converting Parameter Library File Formats

Tab separated (txt) library files can be converted to the free parameter format. The only reason that you may want to do this is because the current Base Time Unit and Display Time Unit are only stored with the library data in the free parameter format. Because txt files do not store this information, users need to be careful that the library data is used properly (i.e., ensuring that the current Display Time Unit matches the intended time unit of the library). However, text files load significantly faster so you may want to keep your parameter libraries in this format.

To convert a comma/tab separated library into a free parameter format:

- Select the File > New Timing Diagram… menu option to make sure that no project is currently loaded.

- Set the Display Time Unit to match that of the library you are about to import.

- Use the File > Open Timing Diagram… menu option and open the file that you want to convert.

- Look at the Parameter Table window and make sure that the parameter values are correct.

- Next, save the library by using the Libraries > Save Free Parameters As Library menu to open the Save As dialog.

- Choose Free Parameter (*.fp) for the free parameter file format from the Save as type drop-down list box. Save the file using the .fp extension.

Chapter 10: Parameter Libraries


10.5 Merging a Library into a Project File
10.5 Merging a Parameter Library into a Project File

When a library is merged into a project, all the free parameters in the library are copied into the project. During the merge process, library free parameters take precedence over project free parameters of the same name (the library data overwrites the project data if there is a conflict).

To merge a library into a project:

- Open the project file (.tim).

- Choose the File > Merge Timing Diagram… menu option to open the File dialog.

- Type in the name of the library file and choose OK.

Note: Merging should be used with small libraries, as you do not want many parameters filling up your workspace in the parameter table window. To clean up your workspace, parameters in the parameter table window can be hidden by selecting the parameter and choosing the View > Hide Selected Parameter Data menu option.

Chapter 10: Parameter Libraries


10.6 Copying Referenced Parameters

During the design process, projects usually reference free parameters contained in parameter libraries. But after the design is finished and it is time to prepare the project files for documentation and archiving, it is inconvenient to have to carry around libraries with your project (and you may not want the parameters to change if the libraries are updated). In this case it is generally preferable to copy all free parameters used into the project so that the project (.tim) file contains all the free parameters it needs to draw itself.

To make a self-contained project:

- Choose the Libraries > Copy Referenced Library Parameters into Table menu option. This copies every library free parameter that is used into the project.

- A message will appear asking if you want to hide the free parameters when you copy them into the project.

If you are planning to move your project, then you should empty the parameter library list to insure that the program will not attempt to read library files not available at the new location. If you are not moving your project, then leaving the library list intact will not affect your project because parameters in the project take precedence over those in the libraries.

Chapter 10: Parameter Libraries


10.7 Editing Parameter Libraries

To edit a library:

- Load the library. Choose File > Open and type the name of the library.

- In the parameter window, find and update the free parameters as desired.

- Choose the File > Save Free Parameters menu option in the parameter window to save the library file.

Any projects that reference the library will now have access to the updated free parameters, unless the parameters have been copied into the project.

If you have made a local copy of the parameters in your project, you can update them by the following procedure:

- Load the project into the timing diagram editor.

- Choose the Libraries > Update Parameter Table from Parameter Libraries menu option.

Chapter 10: Parameter Libraries


10.8 Updating a Project from the Parameter Library

Normally, free parameters inside a project take precedence over free parameters in libraries specified in the Library List. Sometimes it is necessary to update free parameters in a project with the data contained in a Library.

To update a project with data from every library in the library list:

- Select the Libraries > Update Parameter Table from Parameter Libraries menu option. This replaces the timing data of free parameters in the project with data from library free parameters of the same name.

To update a specific free parameter with data from a certain library:

- Use the View Parameter Library Parts dialog box and the Insert into Table button. See the instructions in the View Parameter Library Parts dialog topic.

Chapter 10: Parameter Libraries


10.9 Viewing Library Parts

The View Parameter Library Parts dialog displays the free parameters contained in the libraries specified on the library search list. It also lets the user selectively copy parameters into the parameter table used by the project.

To view parts in a specific library:

- Choose the Libraries > View Parameter Library Parts menu option. This will either open the dialog or inform you that you need to first put the libraries on the library list using the Parameter Library Preferences dialog.

- Select the library that you would like to view from the library list box. The library parameter names will be displayed in the Parts List box.

To copy library free parameters into the project:

- View the library parts using the above steps.

- Select the parts that you want to copy into the project.

- Press the Insert into Table button. The parameters will be copied into the parameter window, with any library specification added to them.

Chapter 10: Parameter Libraries


Chapter 11: Waveform Equation Generation

WaveFormer Pro, VeriLogger Pro and TestBencher Pro have the ability to generate signal waveforms from temporal equations and automatically label those waveforms using State Label equations. These features augment the drawing environment and provide a quick way to generate signals without having to draw each signal transition. They also provide a way to generate signals that have precise edge placement.

11.1 Generating Waveforms using Temporal Equations

11.2 Labeling Waveforms using State Label Equations

Waveforms can also be generated using registered Boolean equations simulated by the Interactive HDL Simulation engine inside WaveFormer, VeriLogger and TestBencher.

Background: The temporal equation and state label equation features were implemented using dynamic Waveperl scripts. Users can write their own dynamic Waveperl scripts to extend the functionality of WaveFormer, VeriLogger and TestBencher Pro. For more information read Chapter 14.

Chapter 12: Interactive HDL Simulation


11.1 Generating Waveforms using Temporal Equations

In WaveFormer, VeriLogger and TestBencher, temporal equations provide a quick way to generate signals that have a known pattern that is more complicated than a periodic clock.

Many signals are easier to create using a temporal equation instead of drawing them. For example, a change in frequency in a periodic waveform from 25Mhz to 50Mhz could be represented by the following temporal equation:

(20ns=0 20ns=1)*4 (10ns=0 10ns=1)*5

which is entered from the Signal Properties dialog. This creates a signal with an initial frequency of 25MHz (period = 20+20 = 40ns) for 4 cycles and switches to 50Mhz for 5 more cycles. This type of waveform is tedious to draw by hand, but can be concisely expressed as a temporal equation.

To apply a temporal equation to a signal:

- Double click on a signal's name to open the Signal Properties dialog.

- Enter the temporal equation into the edit box next to the Wfm Eqn button.

- Note: The default equation contains all of the available states and syntax. If you start by editing the default equation then you do not have to memorize the temporal equation rules.

- Press the Wfm Eqn button to apply the equation. Each time you press this button the waveform will be appended to the end of the signal.

Temporal equations must meet the following criteria:

-  The equation is a list of space-separated, time-value pairs in the form TimeValue[units]=StateValue. For example, 10ns=Z is a valid time-value pair.

- If [units] are not specified, then the “display time unit” of the current project will be used.

- Legal StateValues are: 0 = strong low, 1= strong high, Z = tristate, V = valid, X = invalid, L = weak low, and H = weak high.

- For loops, enclose a list of time-value pairs in parenthesis and use the multiply symbol ‘*’ followed by the number of times the list is to be repeated.

Chapter 11: Waveform Equation Generation


11.2 Labeling Waveforms using State Label Equations

In WaveFormer and TestBencher Pro, State Label equations provide an easy way to label signals with state patterns. For example, your design may contain a counter and you would like to display the actual count values instead of just using a generic valid segment. Once your counter signal is drawn, you can write an equation to label the segments.

A simple counter that starts at one and counts to ten could be written as:

Inc(1,1,10)

This tells the program to start at one and place ten labels, incrementing by one each time. A full list of functions that can be used is given below.

To Apply a State Label Equation to a signal:

- Double click on a signal name to open the Signal Properties dialog.

- Enter the State Label equation into the edit box next to the Label Eqn button.

- Note: The default equations contain examples of the state label functions. If you start by editing a default equation you might not have to look up the function definitions.

- Press the Label Eqn button to apply the equation.

- Note: State Label equations are only calculated once, and any values past the end of the signal are discarded. The old virtual state values inside segments will be overwritten by the State Label Equation.

- Tip: It is often useful to use the Temporal Equation feature to create an unlabeled signal with the correct number of segments, and then label it with a State Label Equation.

State Label Equation Rules:

State Label equations are a combination of the label functions. Functions can be applied in sequence by listing them in a comma separated list. Also, each label function returns a value of list so whenever you see list you can use a function, a single value like 5 or blue, or a list in parentheses (2,3,4). Below is a list of functions:

Inc(start, increment, count)

This function will generate labels that begin at "start" and increase by "increment" each time. A total of "count" labels will be generated.

The actual labels generated will be

start, start + increment, …, start + increment * (count - 1)

Dec(start, increment, count)

This function generates labels that start at start and decrease by increment each time. It is equivalent to calling Inc(start, -increment, count)

Rep(list, count)

This function repeats list count times. The "list" can either be a literal list (e.g., (1,3,4) or ("red","green","blue")) or it can be a function that generates a list (e.g., Inc, Dec, or Rep).

Hex(list)

This function formats list as hexadecimal. All numbers in the list are converted to a base-16 representation. The letters a-f are lowercase, and the numbers are prefixed by "0x" to indicate that they are hexadecimal.

By default, all numbers in the list are formatted to the same number of digits, adding leading zeros as necessary. If a MSB and LSB for the signal are specified in the Signal Properties dialog, all numbers will be formatted to display the given number of bits.

Bin(list)

This function formats lists as binary. By default, all numbers in the list are the same length, with leading zeros as necessary. If a MSB and LSB for the signal are specified in the Signal Properties dialog, all numbers will be formatted to display the given number of bits.

Skip(integer)

This function format causes a number of segments to be skipped (left unchanged) by the equation.

RandomIntegerArray(count, Range_to_zero) or RandInt(count, Range_tozero)

This function generates random state values for waveforms. Count indicates the number of integers to generate. The integers are random values within an inclusive range of 0 to the Range value.

Examples:

Inc(0,2,10)

Labels the signal with the values 0,2,4,6,8,10,12,14,16,18

Rep(Dec(3,1,3),2)

Labels the signal with the values 3,2,1,3,2,1

Bin(Inc(0,3,5))

Labels the signal with the values 0000,0011,0110,1001,1100

Hex(Inc(0,5,5))

Labels the signal with the values 0x00,0x05,0x0a,0x0f, 0x15

Skip(3),Inc(0,1,4),Dec(2,1,3)

Labels the signal with the values 0,1,2,3,2,1,0, starting at the fourth segment. The first three segments are skipped, leaving them with whatever label they had originally (blank if they had no label to start with). Any number of functions can be chained together in this style, separating them with commas.

Rep(("on", "off"), 3)

Labels the signal with the values on, off, on, off, on, off. If the list contains words, place it in quotes. Similarly, to repeat a list of numbers, use:

Rep((1,7,22),3)

Labels the signal with the values 1,7,22,1,7,22,1,7,22.

RandomIntegerArray(8,255)

Labels 8 waveform segments with random integers within a range of 0 to 255 (inclusive).

Chapter 11: Waveform Equation Generation


Chapter 12: Interactive HDL Simulation

WaveFormer, VeriLogger and TestBencher Pro have a built-in Interactive HDL Simulator that can simulate Boolean Equations with delays, registers, latched signals, and behavioral Verilog code. The simulator is interactive which means changes to input waveforms will cause resimulations. This feature greatly reduces the amount of time needed to draw a timing diagram, especially one that models gate level circuits.

All equations are entered through the Logic Wizard section of the Signal Properties dialog, which can be reached by double clicking on a signal name.

12.1 Boolean Equations with Delays

12.2 Advanced Gate Representation

12.3 Register and Latch Equations

12.4 Multi-Bit Simulation

12.5 Direct HDL Simulation

12.6 Simulation Errors

12.7 Simulation Preferences

12.8 Simulation Behind the Scenes

12.9 Report Window

12.10 Report Window Editor Commands

Chapter 13: Stimulus Generation and Waveform Import


12.1 Boolean Equations with Delays

In WaveFormer, VeriLogger and TestBencher Pro, Boolean equations combinationally relate one signal to other signals in the diagram. To describe a signal with a Boolean equation:

- Double left click on a signal name to open the Signal Properties dialog.

- Make sure the Boolean Equation radio button is selected.

- Type a Boolean equation into the edit box.

- Push the Simulate Once button and watch the signal draw itself. If the Simulate radio button is checked, any changes to the input waveforms will cause a re-simulation.

- To view or edit the Verilog HDL code used by the simulator, select the HDL Code radio button.

The Boolean Equation edit box accepts Boolean equations in VHDL, Verilog, and SynaptiCAD's enhanced equation syntax. The SynaptiCAD format supports the operators: and, or, nand, nor, xor, not, delay. The delay operator takes a signal on the left and a time or parameter name on the right and returns a signal. If a parameter name is used on the right hand side of the delay operator, then the equation will simulate true min/max timing. This true min/max timing is the main advantage that SynaptiCAD's format has over the VHDL or Verilog format. Instead of min/max timing, Min-Only or Max-Only simulations can be performed by changing the Options > Simulation Preferences > Timing Model drop-down list box. Below are some example Boolean equations:

(SIG0 and SIG1 and SIG3) delay 20ns

This models a 3-input AND gate with a 20ns delay.

(SIG0 delay 20ns) and (SIG1 delay 10ns)

This models an AND gate with 2 different input delays.

(SIG0 and SIG1) delay GateDelay

Assume GateDelay is a delay parameter with a min time of 15ns and a max time of 20ns.This models an AND gate with a delay between 15ns and 20ns. Each edge of the simulated signal will have a gray uncertainty region of 5ns.

IMPORTANT: When a Boolean equation is re-simulated, the signal is deleted and recreated as a new signal. The program attempts to preserve the attachment of parameters and text objects on signal edges, but the addition or loss of edges during the Boolean computation may move these objects.

Chapter 12: Interactive HDL Simulation


12.2 Advanced Gate Representation

In WaveFormer, VeriLogger and TestBencher Pro, the Boolean equation edit box can accept several advanced operators, like conditional expressions and signal concatenation. These operators can be used to model multiplexers, tristate gates, and multi-bit signals. The following demonstrates some of these techniques:

Conditional Expressions for Multiplexers and Tristate gates: The normal C language conditional expression of conditional ? if_expr : else_expr can be used inside the Boolean Equation edit box to model multiplexers and tristate gates. Some examples are:

- Tristate Gate: EnableSig ? SIG0 : 'bz

- 2-1 MUX: S0 ? SIG0 : SIG1

- 4-1 MUX: S1 ? (S0 ? SIG0 : SIG1) : (S0 ? SIG3 : SIG2)

Multi-bit Equations are specified by setting the MSB and LSB of the signal (located at the bottom of the Signal Properties dialog). To change a simple 1-bit equation to a 4-bit equation, all you have to do is set the MSB of the signal involved to 3.

Concatenation of Signals is supported using the Verilog concatenation operator. You must set the MSB in the Signal Properties dialog to the proper size. If the size of the concatenated signal is larger than the receiving signal, then the most significant bits are dropped. Some examples of the concatenation operator:

- Signal Concatenation:  {SIG0, SIG1}

- Concatenating bit-slices: {SIG0[3:0], SIG1[7:4]}

Chapter 12: Interactive HDL Simulation


12.3 Register and Latch Equations

WaveFormer Pro, VeriLogger and TestBencher Pro support simulation of registered and latched equations. The logic wizard in the Signal Properties dialog is used to enter information about the circuit.

Register or latch type determined by edge/level setting

To describe a signal that is registered or latched:

- Double left click on a signal name to open the Signal Properties dialog.

- Make sure the Boolean Equation radio button is selected.

- Enter the Input signal name into the Boolean equation edit box. The input Boolean equation can either be the name of the input signal or an equation that conditions the input signal.

- Choose the Clocking signal from the Clock drop-down list box. The clocking signal can be any clock or signal in the timing diagram.

- Choose the type of edge or level triggering from the Edge/Level list box. For a Register circuit, choose neg for negative edge triggering, pos for positive edge triggering, or both for edge triggering. For a Latch circuit choose either low or high level latching.

- The Set, Clear, and Clock Enable are optional signals that model the set, clear, and clock enable lines of the register or latch. If "Not Used" is chosen for a line, then that line is not modeled. These lines can be active low or high and synchronous or asynchronous depending on the settings in the Advanced Register and Latch Controls dialog (see next bullet).

- The Advanced Register button opens the Advanced Register and Latch Controls dialog that determines how this individual register is generated. The global defaults can be defined using the Options > Simulation Preferences menu. This dialog controls the following options:

- Clock to Out: Describes the delay from the triggering of the clock signal to a change on the output edge.

- Setup: Describes the time for which the input must be stable before the clock-triggering event. If a min/max time pair is entered, Setup will use the min time. Any violations of this setup time will be reported to the simulation log file verilog.log, shown in the report window (sample error message shown below). See Behind the Scenes below for more information.

- Hold: Describes the time for which the input must remain stable after the clock-triggering event. If a min/max time pair is entered, Hold will use the min time. Any violations of this hold time will be reported to the simulation log file verilog.log, shown in the report window (sample error message shown below). See Behind the Scenes below for more information.

“C:\Vlogger\wavelib.v”,24:Timing violation in syncad_top.registerN_Asyn_Sig1

$setuphold((negedge clock):250000,in:245760,0:20000,0:0);

In the Clock Enable area:

- Active Low: If checked, the clock will be enabled when the clock enable line is low. If unchecked, the clock will be enabled when the clock enable line is high.

In the Set and Clear area:

- Active Low: If checked, the set and clear lines will control the output when they are low. If unchecked, then the set and clear lines will control the output when they are high.

- Asynchronous: If checked, then the set and clear lines will control the output anytime they are active. If unchecked, the model is synchronous and an active set or clear line does not affect the output until the next clock trigger event.

- Push the Simulate Once button to trigger a simulation. If the Simulate check box is checked, any change to the input waveforms will cause a re-simulation.

- To view or edit the Verilog HDL code that is used by the simulator, select the HDL Code radio button.

Behind the Scenes: How clock Setup and Hold work

When the Setup and Hold features are used in the Advanced Register and Latch Controls dialog, an annotation file (.sdf) is generated to store the delay information.  The filename, <filename.sdf> (filename is the name of your timing diagram), is entered into the .v or .vhd file for the timing diagram. Neither of these files should be edited manually since they are generated by the program, for use by the program.

Chapter 12: Interactive HDL Simulation


12.4 Multi-Bit Simulation

WaveFormer Pro, VeriLogger Pro and TestBencher Pro support multi-bit signals for both simulation and stimulus generation. Multi-bit signals can display their signal values as binary, hexadecimal, or decimal numbers.

To define a multi-bit signal:

- Double click on the signal name to open the Signal Properties dialog.

- Either, set the bits directly in the signal name by bracketing the MSB and LSB information (e.g., ADDR[31:0] sets MSB to 31 and LSB to 0).

- Or, type values into the MSB and LSB edit boxes. When the new MSB and LSB values are applied, the name of the signal will change to display the width of the signal.

To insert the values into the segments of a multi-bit signal:

1) Choose the base of the number system to display the signal values by setting the Radix drop-down listbox in the Signal Properties dialog box. Currently, three bases are supported: binary = bin, decimal = dec, or hexadecimal = hex.

2) Draw the signal waveform using Valid segment states.

3) Double-click on a segment in the signal to open the Edit Bus State dialog.

4) Enter an appropriate value into the Virtual edit box.

5) Use the Next and Prev buttons to edit the rest of the signal.

Note: If a signal has a radix of hex or decimal, and one of the bits of that signal is in an unknown state (X), then that segment will be displayed as a binary value. For example if a segment on SIG0 had a value of 10X1 and a radix of HEX, then the value displayed would be 'b10X1 since that value is not a valid HEX number.

Chapter 12: Interactive HDL Simulation


12.5 Direct HDL Simulation

WaveFormer provides the user with the ability to directly enter HDL code for simulating signals that cannot easily be modeled using simple Boolean equations (e.g., you want to write behavioral HDL code). To enter direct HDL code instead of a Boolean Equation:

- Double left click on a signal name to open the Signal Properties dialog.

- Select the HDL Code radio button. This radio button changes the Signal Properties dialog so that a multi-line edit box is displayed in place of the regular Logic Wizard controls.

There are several important points to remember when writing direct HDL code inside a signal's HDL Code View Editor:

1) All the direct HDL code is placed inside a module. This places one important restriction on the direct HDL code: it CANNOT contain an HDL module declaration (i.e. you cannot define a new type of component inside a signal's direct HDL code block). You CAN create an instance of an HDL module, however, as long as the module is declared somewhere else (e.g., in wavelib.v). The advanced simulation tutorial covers this in more detail.

2) WaveFormer signals are always treated as wires during HDL code generation. This makes it easy to write simple continuous assignment statements. This also means that if you want to control the signal state using behavioral code, you will need to create a reg as a intermediate variable and then assign the WaveFormer signal to the value of the intermediate reg. This is because the values of nets (e.g., wires) cannot be set inside a behavioral (initial or always) block. For example, direct behavioral code that inverts a signal SIG0 whenever CLK changes state, you would need to write:

reg tempSIG0;          //temporary reg

always (@CLK)

  begin

  tempSIG0 = !tempSIG0;         //invert temporary whenever CLK changes

  end

assign SIG0 = tempSIG0;     //set WaveFormer signal to value of tempSIG0

NOTE: You do not have to declare the WaveFormer signal SIG0 because WaveFormer automatically creates it. You DO have to declare the temporary reg tempSIG0 because WaveFormer doesn't know anything about it.

Chapter 12: Interactive HDL Simulation


12.6 Simulation Errors

The simulation status readouts display the success or failure information of the last interactive simulation performed. There are two displays, one located on the button bar and the other on the right hand side of the status bar at the bottom of the window.  These status displays make it easy to determine when there is a mistake in your Boolean equations or Verilog code. Always make sure that at least one of these displays is visible. The simulation status readout has the following states:

- Simulation Inactive: There are no continuously simulated signals defined in the diagram, so the simulator is not currently monitoring the diagram. This is the normal state of WaveFormer.

- Simulation Good: Simulation was a success and future simulations will be performed if the diagram changes.

- Simulation Failed: There is an error in the current diagram. Look in the waveperl.err and verilog.log files displayed in the Report window for error messages.

- Simulation Turned Off: The simulation features have been turned off using the Options > Simulation Preferences menu. Simulations will not be performed.

There are two different files, which are automatically displayed in the Report window that you can view to determine why a simulation failed.

1) Check the waveperl.err file for equation syntax errors and unknown signal names in your design equations. If you are using only the Boolean Equation interface, most errors will be easy to find using this file, because it contains a status report from the Perl script which converts the Boolean equation logic into Verilog code.

2) Check the Simulation Log File verilog.log for HDL coding errors. This is the best place to locate HDL coding errors in the behavioral code that you entered into WaveFormer or the external models that you include in the simulation.

The log file also reports the lines in the WaveFormer-generated Verilog source code file where the error occurred. The WaveFormer-generated source file will have the same filename as your diagram, but with a file extension of .v instead of .tim (if your diagram is untitled.tim, the source code file is untitled.v). The Report window automatically opens this source file whenever WaveFormer generates this file (by default this occurs every time you make a change to your design while simulating signals).

NOTE: Do not make changes to the WaveFormer-generated source file, because your changes will automatically be overwritten the next time WaveFormer performs a simulation. Instead, make the appropriate changes in the Diagram window and Signal Properties dialog. WaveFormer will generate and simulate a corrected file.

Chapter 12: Interactive HDL Simulation


12.7 Simulation Preferences

The Interactive HDL Simulation performs simulations based on the options set in the Simulation Options dialog. To open the dialog:

- Choose the Options > Simulation Preferences menu option.

The top group of Global Options control how simulation is performed in the entire diagram.

- The Timing Model drop-down list box determines how delay values are calculated for the entire project. For example, if the user defines a delay D0 with values [10ns, 13ns] and a signal SIG1 that is calculated by a Boolean equation SIG0 delay D0 then:

- If min only timing, then SIG1 is SIG0 delayed by 10 ns.

- If max only timing, then SIG1 is SIG0 delayed by 13 ns.

- If min-max timing, then SIG1 begins transitioning at 10ns after SIG0 changes and stabilizes at a new value after 13ns. This is the default value.

- The Continuously Simulate check box determines how often simulations are performed. Normally each time the design information changes (e.g., when a signal edge is moved) a simulation is performed. This provides the "Interactive" part of the environment. However, you may wish to turn off this feature during times when you are typing in large blocks of behavioral code into several different signals and you do not want to simulate until you are done with all the changes.

- The Auto-create Testbench and Tree check box determines how often the complete simulation model file is created. Normally, each time the design information changes WaveFormer gathers all the code fragments into a complete simulation model and then performs the simulation. If you wish to edit the *.v file in the report window, then you need to uncheck this option to keep WaveFormer from overwriting your changes.

- Note: For Interactive Simulation, both Continuously Simulate and Auto-create Testbench and Tree must be CHECKED.

The bottom group of options control the default timing models for latches and registers used in the project. Each latch and register can be set locally by double clicking on the signal name.

The first two values affect all existing signals and all new signals:

- Clock names the global clocking signal for the diagram. This is normally Unclocked. If you choose a signal as the default clock, all existing and new signals which use the Clock:Default setting in the Signal Properties dialog will now be clocked by the Global clocking signal. Under this condition you must choose Clock:Unclocked in the Signal Properties dialog box in order to make a non-registered signal that is described by a Boolean equation.

- Edge/Level determines whether the default functionality of the logic wizard is a register or a latch. For register functionality choose: neg for negative edge triggering, pos for positive edge triggering, or both for edge triggering. For a Latch circuit, choose either low or high level triggering. The Default value is a negative edge triggered register.

The timing parameters only affect new signals. All existing signals will keep the same timing that they had when they were created.

- Clock to Out: Describes the default delay from the triggering of the clock signal to a change on the output edge. This edit box accepts both time values and names of parameters that can contain both min and max timing values. The default value is 0ns.

- Setup: Describes the time in which the input must be stable before the clock -triggering event. If a min/max time pair is entered, Setup will use the min time. This Setup time is checked during simulation, so any violations will be logged to the verilog.log file that is displayed in the Report window.

- Hold: Describes the time in which the input must be stable after the clock-triggering event. If a min/max time pair is entered, hold will use the min time. This hold time is checked during simulation, any violations are logged to the verilog.log file displayed in the Report window.

In the Set and Clear area:

- Active Low: If checked then the set and clear lines will control the output when they are low. If unchecked then the set and clear lines will control the output when they are high.

- Asynchronous: If checked then the set and clear lines will control the output anytime that they are active. If unchecked, the model is synchronous and an active set or clear line does not affect the ouput until the next clock trigger event.

- Set: Controls the default signal used for the set line. By default this is Not Used. If you choose a default signal for the set line then all new register or latch signals will have a set line.

- Clear: Controls the default signal used for the clear line. By default this is Not Used. If you choose a default signal for the clear line then all new register or latch signals will have a clear line.

In the Clock Enable area:

- Clock Enable drop-down list box: Controls the default signal used for the clock enable line. By default this is Not Used. If you choose a default signal for the clock enable line then all new register or latch signals will have a clock enable line.

- Active Low: If checked then the clock will be enabled when the clock enable line is low. If unchecked the clock will be enabled when the clock enable line is high.

In the Delay mode area you can specify the type of delays that are being modelled:

- The Inertial radio button specifies that a pulse sent that is smaller than the delay will be eaten.

- The Transport radio button specifies that all pulses will be transmitted.

The Flip-Flop Library allows you to specify the parts library that is used for the simulation.

Chapter 12: Interactive HDL Simulation


12.8 Simulation Behind the Scenes

During the simulation process the Interactive HDL Simulator creates various log and simulation files. You may edit the perl script tbooleqn.pl and the verilog library file wavelib.v to add functionality to WaveFormer's basic simulation models. You can also use the simulation files with third-party Verilog simulators, including VeriLogger, SynaptiCAD's full-featured verilog simulator.

The following is an overview of the simulation process:

- HDL Code Fragments: The user enters equations for each signal into the Logic Wizard section of the Signal Properties dialog. Each logic equation is converted to an HDL code fragment by the tbooleqn.pl perl script and stored as the VerilogCode property of the signal. A code fragment can be viewed and edited by pressing the HDL code radio button in the Signal Properties dialog box. Whenever the logic wizard converts an equation to HDL code, the waveperl.v file will contain a list of any errors that occurred during the translation. This file can be viewed in the report window. Errors are normally caused by equation syntax errors or signal names used in the equations that are mistaken for other tokens (signal names like "and" or "76" can be mistaken for Boolean operators or time values).

- Model File: Whenever a simulation is requested, WaveFormer generates a Verilog source file comprised of test vectors for non-equation signals and the HDL code fragments for equation-based signals. The Verilog source file has the same name as the current TIM file, but with a TIM.v extension instead of .tim.

- Model Timing File: Whenever a simulation is requested, WaveFormer also generates an SDF (Standard Delay Format) file that contains additional timing information (setup and hold times) for the registers and latches in the diagram. The SDF file has the same name as the current TIM file, but with a TIM.sdf extension.

- Simulation Requests: Simulations are automatically triggered when design information changes AND the continuous simulation checkbox in the Simulation Preferences dialog is checked (the default setting). Users can also trigger a simulation by pressing the Simulate Once button in the Signal Properties dialog box. Each signal also has a local Simulate radio button in the Signal Properties dialog box that needs to be checked in order for that signal's code fragment to be included in the simulation model file.

- Log & Error File: The Verilog simulation engine compiles and simulates the model file. During this process, a log file called verilog.log is generated which contains status and error information for the simulation run. If you have modified the HDL code by hand you will want to view this file in the Report Window to make sure that the code simulated without errors.

- Register & Latch Models: The logic wizard provides a point-and-click interface for accessing standard register and latch models that are shipped with WaveFormer. The file wavelib.v contains the generic register and latch models. Users may view this file, but it is not recommended that they make changes to it.

- User Models: Users can extend the functionality of WaveFormer by adding models to the waveuser.v file. Use the wavelib.v file as an example of how to add models to the waveuser.v file. To view the internal signals of an external model use the full hierarchical Verilog model name and set the Watch radio button in the Signal Properties dialog.

- Simulation End Time: By default, simulations run to the end of the last drawn signal in the timing diagram. If the inputs to a particular signal are not drawn all the way to the simulation end time, then their last state value is maintained until the end of the simulation. Users can force a specific end time for simulations by dropping a Marker and setting it to be of type End Diagram.

Chapter 12: Interactive HDL Simulation


12.9 Report Window

The Report Window is a general purpose editor that you can use to display and edit ASCII files. During the simulation process the Interactive HDL Simulator creates two error/log files and a simulation file: waveperl.err, verilog.log, and Current_name_of_TIM_fileTIM.v. These files are automatically displayed in the report window. Switch between the files by pressing the buttons on the bottom of the report window.

Normally the report window is used for viewing the simulation-related files. However you can also view and edit other files. However, when a simulation is performed all changed files in the report window are automatically saved at the beginning of the simulation. If you are using VeriLogger, use the edit windows to make changes to your HDL source files.

The Report Window menu options are:

- Report > Open Report Tab: Opens a new file for the report window.

- Report > Close Report Tab: Closes the displayed file in the report window.

- Report > Save Report Tab: Saves the displayed file in the report window.

- Report > Save Report Tab As: Saves the displayed file under a different name.

- Report > Print Report Tab: Prints the displayed file.

In addition to the standard editing environment, the Report Window provides the following editing features:

- To go to a specific line number, press <Ctrl>-<Shift>-L.

- To perform a text search, press <Ctrl>-F.

Chapter 12: Interactive HDL Simulation


12.10 Report Window Editor Commands

The Report Window displays are full-featured editor windows. Below is a list of keyboard and mouse commands which are supported by the editor window.

Key	Purpose
Arrow keys	Moves cursor one space in the direction of the arrow.
Page Up	Moves one page up.
Page Down	Moves one page down.
Home	Moves cursor to beginning of line.
End	Moves cursor to end of line.
Ctrl+Up	Moves to the beginning of the line or the beginning of the previous line if already at beginning of line.
Ctrl+Down	Moves to the beginning of the next line.
Ctrl+Right	Moves to the start of the next word.
Ctrl+Left	Moves to the start of the previous word.
Ctrl+Page Up	Moves to beginning of file.
Ctrl+Page Down	Moves to end of file.
Shift+move combo	Selects between cursor position and position moved to.
F1	Help: show this help file.
F4	Print from window.
Shift+F4	Print Options.
F5	Search
Ctrl+F5	Insert blank line before current line.
F6	Replace
F8	Toggle highlight lines: press F8 and move cursor to end of selection.
F9	Insert blank line after current line.
Shift+F9	Delete current line.
Alt+J	Join line : removes the next carriage return.
Alt+C	Block copy: duplicates selected text, inserting it after selection.
Alt+Backspace	Undo
Alt+3	Protected text toggle: selected text cannot be modified while protected.
Alt+7	Change color
Ctrl+T	Tab
Ctrl+A	Select all.
Ctrl+X	Cut
Ctrl+C	Copy
Ctrl+V	Paste
Ctrl+Z	Undo
Ctrl+Y	Redo
Ctrl+F	Search
Alt+S	Find in Files (multiple file search)
Ctrl+G	Jump to line#
Chapter 12: Interactive HDL Simulation


Chapter 13: Stimulus Generation and Waveform Import

WaveFormer, VeriLogger and TestBencher Pro can export waveform data as a stimulus file to many simulators including VHDL, Verilog, Viewlogic, Mentor, Spice, DesignWorks, and more. These programs can also import data from simulators and PC-based test equipment like the Pod-A-Lyzer and HP's logic analyzers. This chapter is broken up into the following sections:

Stimulus Generation (exporting waveform timing information):

13.1 Export Instructions for Stimulus Generation

13.2 Export VHDL and Verilog Stimulus

13.3 Export SPICE Stimulus

13.4 Export List of Simulators and Test Equipment

13.5 Export Script Notes

Importing timing information from simulators and test equipment:

13.6 Instructions for Importing Waveforms

13.7 Import List of Supported Simulators and Test Equipment

13.8 Import from Spreadsheets

The Perl source code that performs the import/export function is shipped with WaveFormer Pro, VeriLogger Pro and TestBencher Pro and can be modified to perform customized actions. SynaptiCAD's ftp site (ftp://www.syncad.com) maintains a repository for scripts written by SynaptiCAD and users. Two advanced sections deal with these features:

13.9 Advanced: Modifying Scripts

13.10 Advanced: Adding New Scripts

Background: WaveFormer Pro, VeriLogger Pro and TestBencher Pro use the Perl scripting language to perform most of the importing and exporting of timing information to different formats. Perl scripts can also be used to perform functions on the current timing diagram. Chapter 14 describes how to write your own scripts.

Chapter 14: Writing Waveperl Scripts


13.1 Export Instructions for Stimulus Generation

To create a stimulus file:

- Select the Export > Export Timing Diagrams As menu option to open a special version of the Save As dialog which remembers the file type of the last file exported.

- Choose the export format using the Save as type list box in the lower left corner of the Export dialog box.

- Pick a file name and click the OK button. WaveFormer Pro will produce a file with the timing data in that format.

Note: Once WaveFormer successfully creates the file it will display it in the Report window so that you can quickly verify that the file is correct.

To exclude a signal from being exported, use one of the following methods:

A) Double click on the signal name to open the Signal Properties dialog. Uncheck the Export Signal check box.

B) Select one or more signal names. Choose the Export > Exclude Selected from Export menu option. This will uncheck the Export Signal check boxes in all of the selected signals.

Chapter 13: Stimulus Generation and Waveform Import


13.2 Exporting VHDL and Verilog Stimulus

WaveFormer Pro, VeriLogger Pro and TestBencher Pro ship several scripts for exporting stimulus vectors to VHDL and Verilog. All the scripts produce a complete entity-architecture or module test bench that can be directly compiled and linked into an external simulator. The differences between the following scripts are:

- VHDL transport: Exports signal transitions as simple VHDL transfer statements.

- VHDL wait: Exports signals using wait statements.

- Verilog: Exports signal transitions as signal assignment statements.

In order for a signal's waveform data to be exported by the VHDL or Verilog scripts, the signal must be declared as an export signal with a direction of out (shared output, output, or persistent output). Also the signal type must be set to match the model which you will be testing. When signals are first added to a project they are defined as export, with a direction of out, and a signal type of std_logic or wire. To set the export property, direction, and type of a signal:

- Double left click on a signal name to open the Signal Properties dialog.

- Check the Export Signal check box to indicate that this signal should be included in stimulus generation files.

- Use the Direction drop down list box to choose whether the signal is an output or input signal.

- Any of the out directions indicates that the signal is an output of the test bench and an input to the circuit under test. Waveform information will be generated for the output signals.

- Any of the In directions indicate that the signal is a response expected from the model under test. Only a port statement will be generated for the input signals (no waveform data).

Note: The stimulus scripts do not differentiate between the different types of out and in direction types. The direction type is only used internally by TestBencher Pro when generating interactive test benches.

- Use either the VHDL or Verilog type drop-down list boxes to set the type of the signal. The VHDL list box is also an edit box in which you can enter User defined types.

- Use the Next Sig or Previous Sig buttons to investigate other signals or click OK to close the dialog.

How different information is exported to VHDL and Verilog:

- Clock signals are represented as repeating processes.

- Signals are exported with VHDL and Verilog values that most closely match the graphical state. You can change the state-value mapping by editing the VHDL or Verilog perl script.

- Group Buses are exported as several signals which represent the member signals. There is no vector that represents the bus.

- Virtual Buses are exported as vector signals.

- Virtual Buses with Virtual State Information: If a signal is drawn using Valid regions with Virtual state information then during export the Virtual state is written to the export file instead of the valid state value. This  only works for valid segments.

How To Add Virtual State information to a signal: The virtual state Information is used to define values for signals whose types do not easily match the graphical state. For example a signal with a type of integer or a VHDL user defined enumerated data type of MYCOLOR cannot be represented with the seven drawing states available in the program. To add virtual state information:

- Double Click on a valid segment to open the Edit Bus State dialog.

- Use the Virtual edit box to enter the state of the selected signal.

- If the state begins with 0b or 0x, then it will be interpreted as a language independent binary or hexadecimal value. The size of the bus is determined from the Signal Properties dialog Bus MSB and LSB (Chapter 12: Multi-bit Simulation).

- If the state does not begin with 0b or 0x then the string is used without any text processing.

- Note: The virtual state will only override a valid segments value. The other graphical states override the virtual state information

- Use the next or prev buttons to edit other segments on the same signal or click OK to close the dialog.

Chapter 13: Stimulus Generation and Waveform Import


13.3 Exporting SPICE Stimulus

Signals can now function as virtual Digital-To-Analog Converters for SPICE export. The voltage range of the DAC signal is set by the Logic High and Logic Low Voltage of the signal (set in the analog properties dialog). The output value of the DAC signal at a given time is a function of the Virtual state value of the signal and the high and low voltage levels of the signal.

In the simplest case of a 1-bit signal (MSB=0 and LSB=0), the signal outputs the high voltage when it is at 1 and the low voltage when it is at 0. For an 8-bit signal, the output voltage would be the low voltage when the virtual state is 0, or the high voltage when the virtual state is 255. A virtual state of 127 would output a voltage at the midpoint between the high and low voltage levels.

The rise time and fall time parameters together with the logic switching thresholds in the Analog properties dialog control the slew speed of the DAC as it switches between states.

To change the Analog properties of a signal:

- Double click on the signal name to open the Signal Properties dialog.

- Press the Analog Props button to open the Analog Properties dialog.

- Edit the settings to match your logic family specifications.

- Choose OK to close the dialog.

Chapter 13: Stimulus Generation and Waveform Import


13.4 Export List of Simulators and Test Equipment

WaveFormer Pro, VeriLogger Pro and TestBencher Pro can generate stimulus files for many different simulators. Stimulus file generation is performed using the Export > Export Signals as menu item. The following scripts are currently available:

Generic Simulation Formats:

- VHDL transport testbench (*.vhd) saves the waveforms to a VHDL testbench that uses a single assignment statement for each signal.

- VHDL wait testbench (*.vhd) saves the waveforms to a VHDL testbench that uses assignment statements separated by wait statements.

- Verilog (*.v) saves the waveforms as Verilog stimulus statements. The resultant file can be used to drive Verilog simulations.

- SPICE sources (*.cir) and SPICE sources (*.cir)s saves the waveforms in a format that can be read by all SPICE simulators. The entry with the "s" is performed using a Perl script that can be edited by the user. The Perl script is slower then the other option.

- ABEL stimulus (*.abv)s saves waveforms to an ABEL testbench.

Standard Simulator Formats:

- Accolade's PeakVHDL and PeakFPGA packages are VHDL simulators that accept either of the transport or wait state VHDL testbenches. Input also supported.

- *ALTERA Vector Format (*.vec) saves waveforms to a format used by the Altera Max PlusII simulator.

- Mentor QuickSim II (*.f) saves the waveforms into a force file that can be read by Mentor's QuickSim II simulator.

- Minc PLD-Designer(*.stm) saves waveforms into a format that can be used by Minc's PLD-Designer package.

- Modelsim Force File (*.sim) saves waveforms into a force file that can drive signals in Model Tech's Modelsim simulator.

- OrCAD simulation is a VHDL simulator and accepts either the transport or wait state VHDL testbenches.

- SPICE digital (*.fst) saves the waveforms into PSPICE digital format.

- VHDL Waves Vector file (*.vec) Waves stimulus standard for VHDL.

- Workview CMD (*.cmd) saves the waveforms in a format that can be read by Viewlogic's Workview simulator. Input also supported.

- Xilinx/Aldec/Orbit (*.asc) saves the waveforms in the format used by the Xilinx Foundation Design Kit simulator, Aldec, and Orbit's ASIC test vector format.

Test Equipment Formats:

- *HP Pattern Generator (disk) (*hpd) exports waveforms compatible with HP digital pattern generators including the HP 16522A . Use this entry if you are going to use the "load" command. Detailed instructions are available on-line at http://www.syncad.com/hpdetail.htm

- *HP Pattern Generator (bus) (*hpd) exports waveforms compatible with HP digital pattern generators including the HP 16522A. Use this entry if you are going to use the HPIB bus to load files into the Pattern Generator. Detailed instructions are available on-line at http://www.syncad.com/hpdetail.htm

- *STIL Test Vectors(*.stl)s generates test benches in IEEE Standard P1450 Standard Test Interface Language.

* SPECIAL EXPORT SCRIPT NOTES

Trademarks

Chapter 13: Stimulus Generation and Waveform Import


13.5 Exporting HP Pattern Generator Stimulus

Since export scripts produce files that are compatible with simulators or test equipment, not all objects or signal transitions result in stimulus events. Many scripts sample signals based on a clock signal. Sometimes Markers or other objects are used to generate special code in the stimulus files. In general, stimulus vectors will not be generated after an End Diagram Marker is encountered.

HP Pattern Generator (disk) (*hpd) and HP Pattern Generator (bus) (*hpd) scripts for the HP 16522A. The most current and detailed instructions can be found on-line at http://www.syncad.com/hpdetail.htm. Below are the basic instructions for drawing a timing diagram that will generate a valid HP Pattern Generator file but may not contain the latest information. The following objects must be included in your timing diagram:

1.A sampling clock and user-created signals. Signals are sampled using the first clock in the timing diagram. All signals are sampled at time zero and on each rising edge of the sample clock. Clocks are not exported to the Pattern Generator file.

2.At least one documentation marker. The first documentation marker found in the timing diagram generates the *M code line, which denotes the beginning of the main sequence (separating the initialization section from the main). If no documentation marker is present, the *M code is generated automatically and placed at the beginning of the data (just after VECT). Thus, only main sequences will appear (i.e., no initial sequences).

Tips and suggestions for making valid files:

- Single-bit signal states should be drawn with only high and low segments. Virtual buses can contain Valid segments with virtual values that convert to high and low segments. Invalid, Tristate, and empty Valid segments are not supported by the HP16522A and generate an error message during export.

- The state of each signal is converted into a hexadecimal number and written to the file.

- The end of the timing diagram is determined by the last edge of the longest drawn signal or an End Diagram Marker (note you must still have at least one documentation marker in addition to any End Diagram Marker that you add). If a signal ends early, its last state value is used until the end of the timing diagram.

- There is a limit of 126 signals per stimulus file, and a Group Bus limit of 32 signals per bus. These limits are set by the HP16522A pattern generator.

- The Bus and Disk versions generate basically the same code. The only difference is that the VECT code for the Bus version contains additional information.

- LABEL codes are generated for virtual buses and single bit signals.

Chapter 13: Stimulus Generation and Waveform Import


13.6 Exporting ALTERA Stimulus

Since export scripts produce files that are compatible with simulators or test equipment, not all objects or signal transitions result in stimulus events. Many scripts sample signals based on a clock signal. Sometimes Markers or other objects are used to generate special code in the stimulus files. In general, stimulus vectors will not be generated after an End Diagram Marker is encountered.

ALTERA Vector Format (*.vec) saves waveforms to a format used by the Altera Max PlusII simulator.

- The timing diagram must have at least one clock and one or more signals with waveforms.

- All signals are sampled at time 0 and on each rising edge of the sample clock. The end of the diagram is determined by the latest time of any drawn signal or an End Diagram Marker. If a signal ends early, its last state value is used until the end of the timing diagram.

- The following table describes how signals are translated into Altera Stimulus files:

WaveFormer Signals	Altera Stimulus
SIG_DRIVING is a single bit signal with direction of out	INPUT SIG_DRIVING;
SIG_RESULT is a single bit signal with direction of input	OUTPUT SIG_RESULT;
ticket[3:0] is a 4 bit signal with direction of out	GROUP CREATE ticket[3..0] = ticket3 ticket2 ticket1 ticket0;
- Draw single bit signals using high, low, and invalid segments. Draw multi-bit signals with valid segments with virtual data that translates into high and low values.

- To use an altera vec file:

1) Inside Max PlusII, run the simulator (choose Max+plusII\Simulator menu) to open the Simulator dialog.

2) Double click on the file listed as the Simulation Input: *.scf to open the Inputs Outputs dialog.

3) Enter the name of the vec file that you generated with WaveFormer Pro into the the Input (.scf or .vec) edit box.

4) Click OK to close the Inputs Outputs dialog.

5) Click the Start button in the Simulator dialog. This performs a simulation and creates an SCF file. The SCF file is the graphical waveform representation used by Altera. From inside Altera's Waveform editor you can add nodes(signals) to view buried and output waveforms.

6) Note: The second time you simulate, the Max Plus II simulator is going to use the *.scf file it created from the first simulation. You must explicitly choose the vec file each time you make waveform changes using WaveFormer.

Chapter 13: Stimulus Generation and Waveform Import


13.7 Exporting STIL Test Vectors

Since export scripts produce files that are compatible with simulators or test equipment, not all objects or signal transitions result in stimulus events. Many scripts sample signals based on a clock signal. Sometimes Markers or other objects are used to generate special code in the stimulus files. In general, stimulus vectors will not be generated after an End Diagram Marker is encountered.

STIL Test Vectors(*.stl)s generates test benches in IEEE Standard P1450 Standard Test Interface Language.

- The timing diagram must have at least one clock and one or more signals with waveforms.

- Signals are sampled using the first clock in the timing diagram. Normally the rising edge of the clock is used as the sampling time. However, if the clock's invert property is checked then the falling edge is used as the sampling time. The clock's period property sets the Waveform Table Period in the STIL file.

- In the SignalGroups section of the STIL file, a group called ALL is defined as:

ALL = each input signal(black) + each output signal(blue) + each bi-directional inout signal(black and blue)

- A waveform vector ALL is generated for each sampling time of the clock.

- Signals are sampled from time 0 to the last simulation time. The last simulation time is determined by the first End Diagram Marker in the diagram. If there are no end diagram markers, then the last simulation time defaults to the time of the last drawn signal event in the diagram.

- If a signal ends early and there is no event at the current sampling time, then the state at that time is recorded as ‘P’ for input (black) signals or ‘X’ for output (blue) signals.

- The names of the Timing, Pattern Burst, and Pattern sections can be changed by editing the first three variables in the stil.epl file.

- Note: The definitions of input and output are exactly opposite in the WaveFormer Pro and the STIL language. This is because each format defines waveform direction in terms of what is most important to the format. For example, the STIL language defines waveform direction in terms of the tester (inputs drive the tester, outputs are generated by the tester). WaveFormer defines waveform direction in terms of the generated testbench (inputs come from the device under test, or tester, and outputs are generated by the testbench and drive the tester).  The WaveFormer STIL documentation uses input/output as defined by STIL, and also the color that the waveforms appear in WaveFormer input (black) and output (blue). General WaveFormer Pro documentation uses the normal WaveFormer definitions.

- The naming conventions for representing the signal states are:

Input Signals (black) :

  '1' => 'ForceUp' (Waverform: high state),

  '0' => 'ForceDown' (Waverform: low state),

  'N' => 'ForceUnknown' (Waverform:valid or invalid state),

  'P' => 'ForcePrior' (Waverform: unknown state),

  'Z' => 'ForceOff'(Waveform: tri state),

Output Signals (blue) :

  'H' => 'CompareHigh' (Waveform: high state),

  'L' => 'CompareLow' (Waverform: low state),

  'X' => 'CompareUnknown' (Waverform: valid, invalid or unknown state),

  'T' => 'CompareZ' (Waverform: tri state),

InOutput signals (black and blue) : Input and Output signals representation.

Chapter 13: Stimulus Generation and Waveform Import


13.8 Instructions for Importing Waveforms

To import waveforms from other formats:

- Choose the Export > Import Timing Diagram From menu option to open a special version of the Open Timing Diagram dialog. This dialog remembers the file type of the last file imported.

- Determine the type of script using the Files of type list box in the lower left corner of the Open dialog. When opening, the file format is automatically detected for some formats using file contents, but it is best to use Files of type to specify a particular file format.

- Select a file and click the Open button. WaveFormer Pro will use the chosen script to interpret the file and it will build and display a timing diagram. The resultant timing diagram can be saved in any format including the WaveFormer Pro *.tim project format.

Chapter 13: Stimulus Generation and Waveform Import


13.9 Import List of Supported Simulators and Test Equipment

WaveFormer Pro, VeriLogger Pro and TestBencher Pro can import waveform data from several simulators and pieces of test equipment. The importing of waveform data is accomplished in the File Open dialog by selecting the correct format using the Files of Type list box. The following scripts are supported:

Standard Formats:

- Verilog Change Dump (*.vcd) reads waveforms generated by Verilog simulators.

- Test Vector Spreadsheet (*txt) reads waveforms generated inside spreadsheets.

- Xilinx/Aldec Waves Vectors (*.vec) reads waveforms generated by simulators that support the VHDL Waves format.

Test Equipment:

- HP Logic Analyzer (*.hpl) reads data files captured by HP Logic Analyzers. At the time of printing, we support the HP1660 Series, HP1670 Series, HP16700 Series, HP16600 Series, HP16500 Series and the HP16522 card. A complete list of supported devices and detailed instructions can be found on on-line at http://www.syncad.com/hpdetail.htm. New device drivers are added on a regular basis.

- Podalyzer Data (*.dat) accepts waveform files captured by Boulder Creek Engineering's PC-based logic analyzer, the Pod-A-LyzerTM.

Simulators:

- Accolade VHDL (*.awf) reads waveforms generated by Accolade Design Automation’s PeakVHDL and PeakFPGA simulators.

- Advanced PLD (*wvf) reads waveforms generated by Protel Technology's Advanced PLD simulator.

- DesignWorks (*.txt) accepts waveform files generated by Capilano Computing's DesignWorks' gate-level simulator.

- Protel Advanced PLD (*.wmf) reads waveforms generated by Protel's Advanced PLD simulator.

- SpeedWave (*.vwf) reads waveforms generated by Viewlogic's SpeedWave VHDL simulator.

- SpeedWave (*.vcd) reads waveforms generated by Viewlogic's SpeedWave VHDL simulator.

- Workview WFM (*.wfm) accepts waveform files produced by Viewlogic's Viewsim® simulator.

- Xilinx/Aldec Waves Vectors (*.vec) accepts VHDL Waves files generated from any compatible simulator including the Foundation series simulators offered by Aldec and Xilinx.

Timing Diagram Formats:

- Timing Project (*.tim) signals and parameters from SynaptiCAD products including Timing Diagrammer Pro, WaveFormer Pro, VeriLogger Pro and TestBencher Pro. To insure file compatibility, open files created with products of the same or earlier version number.

- TDML (*.tdml, *tdm) saves entire timing diagram and timing parameter table in the industry standard on-line data sheet format TDML.

- Chronology (*.td) accepts timing diagram files from Chronology's® timing diagram editor.

- Text Free Parm (*.txt) is used for editing libraries saved in the standard spreadsheet compatible file format: comma and tab separated text files that contain a header (first line must be "NAME, MIN, MAX, COMMENT"). This is also compatible with Chronology® library files (formulas are only supported in the td files).

- Text Free Parm (*.txt) saves just the free parameters in a spreadsheet compatible format: comma or tab separated with a header (first line must be "NAME, MIN, MAX, COMMENT"). This is the standard way to make a library file. This is also compatible with Chronology® library files (formulas are only supported in the td files).

- Free Parm (*.fp) saves just the free parameters in Timing Project File Format. This is one way to make a library file.

Trademarks

Chapter 13: Stimulus Generation and Waveform Import


13.10 Import from Spreadsheets

When your application requires a large number of waveforms that cycle between different modes, it may be easier to generate the waveforms from lists of vector state values rather than drawing each waveform. You can do this by using a commercially available spreadsheet or a text editor to produce waveform files that are compatible with the WaveFormer Pro, VeriLogger Pro and TestBencher Test Vector Spreadsheet format.

The TestBencher Test Vector Spreadsheet format is a very flexible format that describes the waveform's state values. This information is organized into different sections, each section describing a different type of signal, such as a clock or bit vector. A single spreadsheet may contain many sections, and each section may contain one or more signals. The file begins with a free-formatted header, followed by any number of sections and comments.

To export from your spreadsheet program:

- Inside the spreadsheet program, save your test vector file as a tab delimited table. Note for Excel users: You must shut down Excel after saving the file since Excel doesn't "let go" of the file after saving it.

To import into WaveFormer:

- Choose the File > Open menu option. This brings up the Open File dialog.

- Choose Test Vector Spreadsheet under Files of Type drop down list box in the bottom left corner of the Open File dialog.

- Use the browse functions to find the spreadsheet file and choose OK to open the file.

Test Vector Spreadsheet Format

The header may contain any text as WaveFormer ignores any text until it encounters the first section. Sections begin with a section header in the first column. All section headers are single words, first letter capitalized, and wrapped in square brackets (e.g., [Comment] ). Any parameters for that section are on the same line as the header, one per cell, as defined by individual section types. The lines following the section header contain information about the section (blank lines are ignored). Any number of sections can be used, in any order. An undefined section header is treated as a comment section. Note that sections and signal names are case sensitive.

Section Types:

[Clocks]

Declares clock signals. The first line after the section header should be the clock attribute titles: Name, Period, Offset, Duty, and Invert, in that order. The remaining lines contain the names of clocks and their attribute values, each in a column. Period, Offset, and Duty are numeric values. Invert is a Boolean value (1 for true, 0 for false).

[Comment]

Declares a comment block. Anything inside this section is ignored.

[End]

Ends WaveFormer input. When read by WaveFormer, this section header is equivalent to the end of the file. No section beyond this point will be read.

[Vectors]

Parameters:     End=#     Extends signals out to this time. Defaults to 50 past the last event if not used.

Description: A list of timed events for a list of signals.

The line following the section header must be a title line. The title line consists of Absolute, Relative, all of the signals to be used in this table, and ended with Comment, each item in its own cell. Note that a signal cannot be in two different vector sections since this will cause two signals with the same name to appear in WaveFormer.

Signals are defined in the form  [@ | &]signalname[[lsb:msb]]. Each signal name starts with an optional special character that determines its direction-in when output to certain formats. The '&' in front causes the signal to be an input, whereas '@' causes the signal to be an output. If no character is used, it is considered an input. At the end of the signal name is the size of the vector. It is given in [lsb:msb] form (i.e. [0:7] is an eight bit vector). If no size is given, it is assumed to be a single bit vector. Neither of these is considered part of the name.

Each additional line is a list of all of the signal states at given times. The first column, Absolute, gives the time from the beginning of the simulation. Times must be in ascending order. Relative is most often used as the amount of time since the last event (from which absolute is calculated using an Excel formula), but is ignored by WaveFormer. Each signal has a column where its state at that time is stored. Valid states are 1,0,X,Z,H,and L, in upper or lower case. After the last state is an optional comment. Anything after the last signal is ignored, so multi-cell comments are allowed. Any line that does not start with a time is considered a comment, so comments between times are allowed if there is nothing in the first cell. The signals will be drawn to 50 units beyond the last time given, or to the time given by the End parameter.

[Timing]

Description:  Sets the base and display time units for the vectors.

This section sets the base time unit and/or the display time unit using "Base=" and "Display=" lines.  Valid units are fs,ps,ns,us, and ms (default is "Base=ps" , "Display=ns").

Example Spreadsheet:

Here, above the spreadsheet, is the Header section. You can put any title you like here. In the next section the END=50 parameter will cause the signals to be extended out 50 display time units beyond the last event time. SIG1 has a bus width of 8 bits.

[Vectors]	End=50
Absolute	Relative	&SIG1[0:7]	@SIG2	&SIG3	@SIG4	Comment
0	0	1	0	x	1	Start the simulation
5	5	2	x	1	0
10	5	4	z	1	0	Some data
15	5	8	z	0	1
20	5	16	z	0	1
25	5	32	z	0	0	End it
[Comment]

This section is ignored. Anything can be put in this section.

[Clocks]
Name	Period	Offset	Duty	Invert
CLK1	20	5	10	0
CLK2	25	10	15	1
[End]   Nothing after this line is read into WaveFormer

Chapter 13: Stimulus Generation and Waveform Import


13.11 Advanced: Modifying Scripts

The Waveperl scripts are normal text files that can be edited using your favorite text editor or Notepad. The standard scripts that ship with WaveFormer Pro contain comments that identify the most probable locations for user modifications. Before you make changes to a script we recommend that you make a backup of the original file. We also recommend that you read Chapter 14: Writing WavePerl Scripts.

Chapter 13: Stimulus Generation and Waveform Import


13.12 Advanced: Adding New Scripts

When you design your own script, you will have to tell WaveFormer Pro that it exists. This will ensure that it appears in either the Save File as Type list box of the Export dialog (export script), or the List Files of Type list box of the Open dialog (import script), or the Export menu (dynamic script). To add a script to WaveFormer Pro:

- Choose the Export > Add or Execute Script menu option. This will open a dialog of the same name.

- Select the type of script to be added: Dynamic, Export, or Import.

- Type the script name in the Script Name & Command Line edit box. By convention, dynamic script names end with the extension ".pl", export script names end with ".epl", and import script names end with ".ipl".

- For import and export scripts, type a file filter into the Filter edit box. The filter is used by the common dialog boxes to display files of that form. A filter of *.tim will display all the tim files in a specific directory. Dynamic scripts do not have filters since they do not work directly with files.

- Type the description of the script into the Menu Description edit box. It is best to keep the description under 19 characters long because Microsoft's common dialogs chop off the rest. An example of a description is Pod-A-Lyzer Data (*.dat).

- Choose the ADD button to add the new script to the list.

- Choose the OK button to close the dialog.

Chapter 13: Stimulus Generation and Waveform Import


Chapter 14: Writing Waveperl Scripts

Waveperl is an extended version of the Perl language that contains additional functions for manipulating data structures inside WaveFormer, VeriLogger and TestBencher Pro. Waveperl scripts are compiled and executed by a perl interpreter embedded into WaveFormer (technically it is not, strictly speaking, an interpreter since your script is really compiled on-the-fly). The functions added to Waveperl that support manipulation of objects in WaveFormer are collectively referred to as the WaveFormer API.

In order to write a Waveperl script you will have to learn the basic syntax of the Perl language and become familiar with the functions available in the WaveFormer API. The rest of this chapter is devoted to introducing Perl and hints on writing and debugging Waveperl scripts. After reading the chapter, study one of the standard scripts that is shipped with WaveFormer. Two good example scripts to study are spice.epl and tvhdl.epl. You may also find it useful to print WaveFormer Pro API documentation (twfapi.txt) and the on-line Perl documentation. Finally to learn general Perl syntax and practical programming tips, we highly recommend the book Programming Perl, 2nd Edition by Larry Wall (Perl's creator), Tom Christiansen, and Randall Schwarz.

14.1 Why a scripting language?

14.2 What is Perl?

14.3 Perl data types

14.4 Perl's global variables

14.5 Using variable substitution in Perl text strings

14.6 Pattern matching (regular expressions)

14.7 Notes on writing import/export scripts

14.8 Tips on debugging Waveperl scripts

14.9 Perl and WaveFormer Pro API Documentation

14.10 Object Properties

14.11 Script Naming Conventions

Chapter 15: Analog Features


14.1 Why a Scripting Language?

1) Addition of a scripting language makes it possible for WaveFormer Pro to potentially import/export any waveform format (in other words, you can write your own scripts).

2) Scripts make it easier for SynaptiCAD to upgrade WaveFormer Pro capabilities and distribute the upgrades to you, the end-user.

3) End-users can change scripts as desired to meet their own particular needs (for example: You're designing an IC that uses a 3.3V power supply and you want your SPICE test vectors to represent a high state as 3V instead of 5V).

Chapter 14: Writing Waveperl Scripts


14.2 What is Perl?

Perl is a popular scripting language for text processing. Perl originated in the UNIX environment and has since been ported to DOS and Windows environments. Perl's power and flexibility have made it the most widely used language for Web-based programming. Perl has several advantages over regular programming languages:

1) Perl compilation is extremely fast for reasonable size scripts, making it a good fit for the kind of iterative programming required when writing an import or export script.

2) Perl was originally created for text processing and report generation, so it simplifies many tasks associated with file and text processing. Most waveform files are stored in an ASCII (text) format. Perl also has more than adequate support for binary file formats. Perl's text processing capabilities also make it an excellent language for writing code generators such as TestBencher Pro.

3) Perl is object-oriented. This makes it possible to do a direct mapping from WaveFormer's internal functions (written in C++) to Perl functions. Of course, it also means you can write your own objects in Perl!

4) Perl is extensible. Many Perl modules have already been placed in the public domain that extend the capabilities of Perl, and more are being written all the time. See the Perl documentation for information on available Perl modules.

5) Perl is fun! Although Perl syntax may first appear cryptic due to the use of $, @, and % in variable names, you will quickly come to appreciate the ease with which you can write code that would require hours or even days in C or C++.

Chapter 14: Writing Waveperl Scripts


14.3 Perl Data Types

A Perl variable can be one of three data types: scalar (contains a single value), array (array of scalar values indexed using an integer), and associative arrays (array of scalar values indexed using a string). In Perl, the type of a variable dictates the first character of its name.

- Scalars begin with a $ (e.g., $myValue)

- Arrays begin with a @ (e.g., @myArray)

- Associative arrays (sometimes referred to as hashes) begin with a % (e.g., %myHash).

Scalar values can store character strings, numbers, and references (Perl equivalent of pointers). Scalar values are automatically converted between strings and numbers depending on what the function they are passed to expects. Arrays contain an indexed list of scalar values. An associative array contains a set of key-value pairs. A scalar value in an associative array is accessed by specifying the associated string key.

Chapter 14: Writing Waveperl Scripts


14.4 Global Variables in Perl

Perl contains a number of pre-defined global variables. To distinguish these variables from user-created variables, the pre-defined variable names are all two characters where the first character sets the data type ($,@,or %) and the second character is a non-alphabetic character.

The most important pre-defined variable is $_. $_ is the default scalar upon which many functions automatically operate if the functions are called without parameters.

For example, the statement:

$l = <STDIN>;

reads a line of characters from standard input into the variable $l. If the result of <STDIN> wasn't assigned to $l:

<STDIN>;

then $_ would be assigned the line of characters.

The second most important pre-defined variable is @_. @_ is the array used to pass arguments to subroutines. At the beginning of most subroutines you will see a statement similar to the following:

my ($var1,$var2) = @_;

This copies the first argument from the subroutine call into $var1 and the second argument into $var2.

Chapter 14: Writing Waveperl Scripts


14.5 Using Variable Inerpolation in Perl text Strings

Text string literals in Perl can be surrounded by either single quotes or double quotes. Text strings surrounded by single quotes are taken literally without any translation (except for \' and \\ in order to allow single quotes and back slashes to be placed in a single quoted string). Text strings surround by double quotes, however, are subject to backslash and variable interpolation. Backslash interpolation means that character sequences such as \n (newline) and \t (tab) are translated by Perl to the appropriate ASCII code. Variable interpolation means that Perl variables embedded in the string are automatically replaced with their values. For example, if a variable named $state had a value of '0x1111', the string literal:

"ADDRESS <= $state after 10 ns"

would be translated by Perl to:

'ADDRESS <= 0x1111 after 10 ns'

Chapter 14: Writing Waveperl Scripts


14.6 Pattern Matching (Regular Expressions)

The most common way to search and change text (strings) in Perl is using regular expressions. Regular expressions are constructs used to define a pattern to match a string against. They are commonly used in many Unix programs. If you are not familiar with regular expressions, you should read the Perl documentation on regular expressions. And since Perl adds some enhancements to normal regular expressions you should probably look at this section even if you are already familiar with regular expressions.

One tip on writing regular expressions: it's often easier to code a complicated regular expression than it is to read and interpret it later, so it's a good idea to document the purpose of a regular expression unless it is extremely simple.

Chapter 14: Writing Waveperl Scripts


14.7 Notes on Writing Import/Export Scripts

When running an import script (executed from File > Open menu option), the file specified by the user in the Open File dialog is redirected to standard input. This means that any data read from standard input by your import script is actually read from the file specified by the user.

When running an export script (execute from File > Save As or Export > Export As menu options), standard output is redirected to the file specified by the user in the Save As dialog. Whenever you print something in your export script without specifying a file handle it gets printed to standard output (the export file specified by the user).

Chapter 14: Writing Waveperl Scripts


14.8 Tips on Debugging Waveperl Scripts

Error messages during compilation or execution of a Waveperl script are redirected to a file called waveperl.err. When debugging a new script it is a good idea to constantly watch this file! Generally you will want to have at least three windows up when debugging your script: one for WaveFormer Pro, one for your script, and one for waveperl.err.

When debugging an export script, the simplest way to view debugging information is to temporarily add extra print statements to your script that will show up in the exported file.

When debugging an import script, the simplest way to view debugging information is to print debug info to waveperl.err. To do this, add the statement:

select STDERR;

to the beginning of your Perl import script. This will redirect the output of print statements to waveperl.err (don't do this for an export script as it will redirect your export output). Of course, you can also open your own file using Perl and print error messages to it using its file handle.

To make a change to your Perl script and execute the new script, modify the script file, save your change, and re-execute the script from WaveFormer. By default, you will have to shut down WaveFormer before it will recognize your changes because WaveFormer caches the scripts it executes. Therefore, before you begin debugging your script you should probably turn off script caching. With script caching off you do NOT have to restart WaveFormer each time you change your script, because WaveFormer will dynamically recompile it. To turn off script caching, select the Export > Edit Object Properties menu option, and add an Application Property named DoNotCacheScripts with a value of True. Be sure to delete or set this property to false after you have finished debugging your script as this option does significantly slow down initial script execution speeds (they get recompiled each time they are run).

Chapter 14: Writing Waveperl Scripts


14.9 Perl and Waveformer Pro API Documentation

Perl: Before you write your first script we recommend you read the first section of the on-line Perl documentation included with WaveFormer (perldoc.zip). This documentation is in html format so you will need a web browser such as Netscape or Mosaic to view it (the documentation is also available in other forms at the Perl CPAN site). You will also probably want to print the Perl quick reference manual (perlref.ps) and the WaveFormer Pro API documentation (twfapi.txt lists functions internal to WaveFormer Pro that can be called from a Perl script). Next, study the scripts shipped with WaveFormer Pro. The easiest way to begin a new script is to use one of the pre-written scripts as a template.

There are several books on Perl that are available in most bookstores. We also maintain links to several popular sites for information on Perl at our Web site (http://www.syncad.com/).

WaveFormer Pro API: The file twfapi.txt contains a description of functions in WaveFormer Pro that can be called from Waveperl scripts. This file is only shipped with the full version of WaveFormer Pro.

Sharing your scripts with others: If you do write a script and you think it may be useful to other users, we encourage you to upload it to the incoming directory of our ftp site (www.syncad.com). If you do, send an email to sales@syncad.com to let us know about it so that we can place it in the appropriate directory. It is also important to place a statement in your script that you are placing it in the public domain so that other users can freely use it.

Chapter 14: Writing Waveperl Scripts


14.10 Object Properties

Object Properties are properties that can be attached to objects in the timing diagram and accessed by Waveperl scripts. An object property consists of two text strings, a name (spaces not allowed) and a value (spaces allowed). Object properties allow the user to represent and store information needed by export scripts that WaveFormer Pro was not programmed to handle (e.g., data type information for signals being exported to a VHDL testbench).

To add a property to an object in the timing diagram:

- Choose the Export > Edit Object Properties menu option. This opens the Object Properties dialog box.

- Choose the type of object that you want to work with from the Object Type drop-down list box at the top of the dialog. This causes the names of all objects of that type to be displayed in the Object Name list box.

- Select the object to which the property is to be added.

- Type the name of the new property into the Property edit box and its value into the value edit box. An example property for a signal object might have the name VhdlType and a value of integer.

- Click the ADD button to add it to the signal.

- Click the OK button to close the dialog.

The VHDL wait script (wvhdl.epl) demonstrates how property-value pairs can be used to extend the capabilities of WaveFormer Pro. The script uses the signal properties, VHDLType, to define the type (integer, bit_vector, etc.) of stimulus signals. The user can set this property directly in the Export > Edit Object Properties dialog (it is also set indirectly when a VHDL type is selected in the Edit Signal dialog). If the VhdlType property is defined for a signal then the script assumes a type of std_logic.

NOTE: Object properties associated with a timing diagram object are supplemental to the normal state of the object. WaveFormer does not attempt to interpret object property information. It only saves the information and provides an interface for adding and changing the information. Waveperl scripts have access to object property information, and it is the script writer's job to define the meaning of object property information within a particular script.

Future versions of WaveFormer Pro will likely make use of some property names. These property names will begin with a ‘$’ to distinguish properties that are interpreted by WaveFormer Pro. For this reason, we recommend that you do NOT use property names that begin with a ‘$’ (e.g., $INTERNAL).

Chapter 14: Writing Waveperl Scripts


14.11 Script Naming Conventions

There are several types of scripts that perform different types of actions. By convention the name of the script indicates the type of script.

- Export Script names end with ".epl". They take objects that exist inside the current timing diagram and perform a mapping to a new file format. Like the converting signals into stimulus files for simulators.

- Import Script end with ".ipl". They read an external file and convert that information into objects in the current timing diagram. Like reading a waveform file created by the Pod-A-Lyzer and converting it into waveforms inside WaveFormer Pro.

- Dynamic Script names end with the extension ".pl". They perform functions on the current timing diagram. Both the Temporal and Boolean equations were originally prototyped using dynamic scripts. They provide a way for the user to add functionality to WaveFormer Pro.

- Conditional and Action scripts are all contained inside verilog.pm and vhdl.pm files. The names inside the Add Script dialog indicate the routine name instead of the file names that are used by the other types scripts. These scripts describe different conditions and actions that a Sample parameter can trigger on or act on inside TestBencher Pro.

Chapter 14: Writing Waveperl Scripts


Chapter 15: Analog Features

The analog features allow for the importation, exportation, and manipulation of analog signals. Digital signals can be converted to analog signals and vice versa.

15.1 Displaying Digital Signals as Analog Waveforms

15.2 The Analog Signal Properties Dialog

15.3 Quantizing Analog Signals (Real Radix) Into Digital Signals

15.4 Exporting Analog Signals as SPICE Stimulus

15.5 Importing SPICE Transient Simulation Waveforms

Table of Contents


15.1 Displaying Digital Signals as Analog Waveforms

‘Analog Display’ capabilities can be used with signals and virtual buses in several ways.  Signals with binary, decimal, hexadecimal, and real radixes can use the analog display.  If the signal is not using the real radix, the analog display will take those values, determine the possible range of numbers based on the bus size and display each segment as a line at a relative height to that range.

For example if you have a 4 bit bus, the range of possible values for that bus would be from 0 - 15 in decimal.  So, the analog display would show a zero as a line at the bottom of the signal and a 15 would be shown at the top.  If the radix is real, the range is determined by the 'Logic High' and 'Logic Low' voltages in the 'Analog Properties' dialog box.  Values outside the current high and low range display as an empty box on the waveform.

The size ratio can be used to increase the vertical size of signals. Using the size ratio, a signal's height can be specified as an integer multiple of the default signal size. This feature is often useful when displaying analog signals.

Chapter 15: Analog Features


15.2 The Analog Signal Properties Dialog

The Analog Properiesy dialog allows you to set properties that will replicate the specifications of the equipment you are using for a given set of waveforms.

To Open the Analog Properties dialog:

- Double click the signal you wish to modify. This will open the Signal Properties dialog.

- Make sure the Analog Display checkbox is checked.

- Click the Analog Props button. This will open the Analog Properties dialog (shown below).

The Analog Properties Dialog: - The Logic High Voltage and Logic Low Voltage edit boxes allow you to specify the minimum and maximum values of an analog signal.  - The High Switch Threshold and Low Switch Threshold allow you to determine a high and low ‘detection limit.’ These percentages entered in these edit boxes determine the point at which the value will be read as the voltage high or voltage low value.  - The Rise Time and Fall Time edit boxes can be used to specify the amount of time it takes for the signal to go from the High Switch Threshold to the Low Switch Threshold. Adjusting the Height of Analog Waveforms: - Open the Signal Properties dialog by double clicking the name of signal to be modified. - Enter the desired value in the Size Ratio edit box. - Click the Apply button to view the change. Note: this does not change any of the values of the signal, only the manner in which it is dislayed.
Chapter 15: Analog Features


15.3 Quantizing Analog Signals (Real Radix) Into Digital Signals

The conversion of an analog signal to a digital signal can be performed using the Signal Properties dialog. The upper and lower bounds of the analog signal are determined by the ‘Logic High’ and ‘Logic Low’ voltage settings in the Analog Properties dialog box. The precision of the conversion will be determined by the bus size. For instance, if the bounds (‘Logic High’ and ‘Logic Low’ voltage settings) are set to 0 and 15 and you are converting to a binary radix, selecting a bus size of 4 would allow you to represent the integers 0 to 15. The greater the bit size of the signal, the greater the precision of the converted signal. Note: This “quantization” of floating point values into digital values is the same process performed by an Analog To Digital Converter (A/D converter), so it can also be useful in modeling systems containing A/D converters. Values less than the lower bound are “clipped” to 0, and values greater than the upper bound are “clipped” to the largest binary value that can be represented by the given bus size.

Conversion from a digital to analog can also be performed. The default settings for ‘Logic High’ and ‘Logic Low’ are 5 and 0, respectively. You will be able to either set these values manually (in the Analog Properties dialog) or have the values determined from the signal data. The Get min button can be used to automatically search the signal values and set the ‘Logic Low’ value to the lowest value found in the signal waveform. The Get max button will perform the same function for the ‘Logic High’ setting, finding the highest value.

Chapter 15: Analog Features


15.4 Exporting Analog Signals as SPICE Stimulus

Signals can also be exported as SPICE voltage sources to provide stimulus for a SPICE netlist. Signals with hexadecimal and binary radixes are converted to decimal numbers before being exported.  Signals with 'real' radixes are exported without conversion. These signals can model simple digital stimulus for digital inputs to a spice model or they can serve as virtual arbitrary waveform generators for driving analog inputs of a model. The ability to generate digital stimulus is particularly handy when using SPICE to analyze the timing and switching characteristics of a digital logic block.

Signals that are exported as analog stimulus will be converted to the selected format automatically.

To Export Analog Signals:

- Select the Export > Timing Diagram As… menu option. This will open the Save As dialog.

- Select the file type to export from the Save as type: drop down list box.

- Enter the name of the file to export to in the File name: edit box.

- Click Save button to export the timing diagram in the selected format.

Chapter 15: Analog Features


15.5 Importing SPICE Transient Simulation Waveforms

The time-based waveform results of SPICE transient simulation runs (*.csd) can be imported into WaveFormer.  When signals are imported from a SPICE simulation, all of the values are read in as 'real' values. The 'Analog Display' checkbox can be used to view the waveform as an analog signal. You can also quantize the signal as described above and use the 'Analog Display' checkbox.  Note: The logic high and low voltages in the 'Analog Properties' dialog box are calculated automatically for waveforms loaded from .csd files (these initial voltage settings can be overridden if desired), so this step can be skipped.

To Import SPICE Waveforms:

- Select the Export > Import Timing Diagram From... menu option. This will open the Open dialog box.

- Select the SPICE - CSDF Format (*.csd) option from the Files of Type: drop down list box.

- Select the file you wish to import.

- Click the Open button to import the file.

Chapter 15: Analog Features


Trademarks

- Timing Diagrammer Pro, WaveFormer Pro, VeriLogger Pro, TestBencher Pro, and SynaptiCAD are trademarks of SynaptiCAD Inc.

- Pod-A-Lyzer is a trademark of Boulder Creek Engineering.

- PeakVHDL and PeakFPGA are trademarks of Accolade Design Automation Inc.

- V-System and ModelSim are trademarks of Model Technology Incorporated.

- Viewlogic, Workview, SpeedWave,and Viewsim are registered trademarks of Viewlogic Inc.

- HP is a trademark of Hewlett Packard.

- Advanced PLD is a trademark of Protel Technology

- TimingDesigner and Chronology are registered trademarks of Chronology Corp.

- DesignWorks is a trademark of Capilano Computing.

- Mentor and QuickSim II are registered trademarks of Mentor Graphics Inc.

- OrCAD is a registered trademark of OrCAD.

- PSpice is a registered trademark of MicroSim.

- Windows, Windows NT, and Windows 95 are registered trademarks of Microsoft.

All other brand and product names are the trademarks of their respective holders.


Appendix A: Menu Listings

File Menu

Export Menu

Edit Menu

Bus Menu

Libraries Menu

View Menu

Options Menu

Report Menu

Window Menu


File Menu

New Timing Diagram: Clears entire project. Equivalent to restarting the program.

Open Timing Diagram: Opens an existing project file.

Merge Timing Diagram: Opens a second file and adds its contents to the current project. Duplicate signal and normal parameter names are changed. Duplicate free parameters overwrite the existing free parameters, so always make corrections to the free parameter library files before loading into a project.

Compare Timing Diagram: opens a timing diagram for waveform comparisons.

Save Timing Diagram: Saves current timing diagram project to a *.tim file.

Save Timing Diagram As: Saves current timing diagram project with a user specified name and type of file.

Print Diagram: Prints drawing window.

Print Parameters: Prints the parameter window.

Printer Setup: Changes the default printer setting.

Exit: Closes program.


Export Menu

Import Timing Diagram For: Imports waveform data from a variety of sources as a timing daigram.

Export Timing Diagram As: Used by WaveFormer, VeriLogger and TestBencher Pro to export all signals that are not marked for non-export. This menu option opens the export dialog. Select the desired export format from the Save File as Type control (located in the lower right-hand corner of the dialog).

Export Timing Diagrams in Project: WaveFormer, VeriLogger and TestBencher Pro use this to export all timing diagrams from the current project in the selected format.

Generate Test Bench: TestBencher Pro uses this menu option to generate the HDL code for the top-level test bench in a project (see TestBencher Pro manual for more information).

Edit Object Properties: Opens a dialog that lets the user attach object properties to the current timing diagram. This is an advanced feature that is used by designers who are writing their own scripts for WaveFormer Pro, VeriLogger Pro or TestBencher Pro.

Exclude Selected from Export: All the signals that are currently selected will be excluded from export operations (marks signals as non-exported). This menu item is only active when the name of at least one signal is highlighted.

Show Non-Exported: Displays the names of signals that have been marked for non-export and allows the user to optionally mark the signals for exporting. This menu item is only active when at least one signal has been marked as non-exported.

Add/Execute Script: Opens a dialog of the same name and allows you to add new perl scripts which will display themselves in the Open, Save As, and Export As dialogs. It also allows you to dynamically execute perl scripts (Chapter 13: Adding New Scripts and Chapter 14: Writing Waveperl Scripts).

Search and Replace Signal Names: Opens a dialog that allows you to replace signal names by matching a name expression (e.g., SIG* matches SIG0, SIG1, etc.).

Export from Waveform into VHDL:

Export from Waveform into Verilog:


Edit Menu

Undo action: Will undo last action.

Redo action: Will redo the last undo something

Delete: Deletes a selected object.

Undo Delete: Undoes the last delete.

Clear Red Events: Deletes all same state transitions, which are displayed as red rectangles or spikes. Same state transitions occur when a signal segment is changed to the same state as a neighboring segment. These can also be individually deleted by selecting the transition and pressing the delete key.

Copy OLE Image To Clipboard w/ save: Copies the timing diagram to the clipboard as an OLE object for use with another OLE enhanced program (available with OLE Option for Windows).

Copy OLE View To Clipboard w/ save: Opens a dialog that allows you to select the specific View you would like to copy as an OLE object to the clipboard (Available with OLE Option for Windows).

Copy To Clipboard: Copies the current timing diagram to the clipboard as a bitmap.

Cut Signals/Text: Removes the selected signals or text and places it on the clipboard.

Copy Signals: Copies the selected signals and any attached parameters or text to the clipboard.

Paste Signals: Paste the signals from the clipboard back into the drawing. Signals will be renamed if duplicate names exist.

Block Copy Waveforms: Copy sections of waveforms and paste those sections either onto (overwrite) or into (insert) any signal in the diagram (Chapter 1: Block Copy Waveforms).

Copy To Clipboard: captures the current window. See Clipboard

Edit Clock: opens the Clock Properties dialog. This menu item is active when a clock name is selected.

Insert Clock Cycles: Insert clock cycles to the right of the selected clock edge.

Delete Clock Cycles: Delete clock cycles to the left of the selected clock edge.

Right Click Delete Mode: When checked you can delete objects with 2 mouse clicks: 1) left click to select the object and 2) right click to delete the object.

Edit Text: Edit the selected text object's attachment, font, or text.

(Un)Lock Edges of Selected Signals: Either locks or unlocks all the edges of the signals which are selected.

Edit Waveform Edges: Allows you to modify all edges on a selected set of signals according to an equation you provide.


Bus Menu

Add Bus: Either creates a group bus from the selected signals or it creates the member signals and the bus.

Expand and Delete Bus: Deletes Bus and displays the member signals.

Align To Bus Edge: Move all the nearby member signal transitions to the exact time of the selected bus edge.

Bind To Bus Edge: Add invisible links to all the member signal transitions that occur at the same time as the selected bus edge. This means that if a member signal transition is moved all the other members will also move.

Unbind Bus Edge: Remove the invisible links between the member signal transitions at the same time as the selected bus edge.

Create User-Defined Radix: Opens a dialog that allows you to specify


Libraries Menu

Parameter Library Preferences: Opens the Library Preferences dialog which lets you add libraries to the Library search list.

View Parameter Library Parts: Opens the View Library Parts dialog and allows the user to view and reference parameters contained in the libraries on the library search list.

Copy Referenced Parameters into Table: Copies the library free parameters that are currently being referenced into the project.

Update Project from Parameter Libraries: Replaces project timing values with the library values, for each parameter in the project has the same name as a library free parameter.

Save Free Parameters as Library: Just the free parameters are saved to a file. This is good for making libraries. See free parameters.

Save All Parameters as Library: All the parameters and free parameters are saved to a file (no waveforms or signals are saved).

Macro Substitution List: Opens the Edit Formula Macros dialog and lets you define macros to replace the library specifications.


View Menu

Zoom In: zooms in to show more detail. See Zoom Buttons.

Zoom Out: zooms out to show less detail. See Zoom Buttons.

Show Delays: If checked, delays are shown in the drawing window. Default is checked.

Show Holds: If checked, holds are shown in the drawing window. Default is checked.

Show Setups: If checked, setups are shown in the drawing window. Default is checked.

Show Samples: If checked, samples are shown in the drawing window. Default is checked.

Show Text: If checked, text objects are shown in the drawing window. Default is checked.

Show Hidden Text: Allows attachments to signals like text objects and grid lines to continue to be displayed even when their parent signal is hidden (Chapter 8: Diagram Window Display).

Show Critical Paths: If checked, delay objects are color coded to indicate which edges of the delayed transition are set by the delay. Default is checked.

Show Grid Lines: If checked, grid lines on signals can clocks will be shown in the drawing window. Default is checked.

Hide Selected Signals: Removes the selected signals from the display. If no signals are selected then this option is disabled (Chapter 1: Hiding and Showing Signals ).

Show Hidden Signals: Lets user choose from a dialog box which hidden signals to show. If no signals are hidden, this menu item is disabled.

Hide Selected Parameter: Hides selected parameter. If no parameters are selected then this option is disabled (Chapter 4: Hide Individual Parameters ).

Show Hidden Parameters: Lets user choose from a dialog box which hidden parameters to show. If no parameters are hidden, this menu item is disabled.

Hide Selected Parameter Data: Hides the selected parameter in the parameter window. Hidden parameters are not shown on the screen but they are still continue to function normally (Chapter 8: Parameter Table Display).

Show Hidden Parameter Data: Lets user choose from a dialog box which hidden parameters to show. If no parameters are hidden, this menu item is disabled.

Filter Signals: Allows you to select a group of signals based upon a pattern matching their name and to mark the signals as hidden or shown.

Filter Parameters: Allows you to select a group of signals based upon a pattern matching their name and to mark the signals as hidden or shown.

Compare: Opens a sub-menu that allows you to compare all signals or to search for a specific difference between the signals (WaveFormer, VeriLogger and TestBencher Pro feature).


Options Menu

Display Unit [unit]: This submenu allows you to choose a different display time unit which is the unit at which time values are entered and displayed.

Base Time Unit [unit]: This allows the base time unit to be set using the Base Time Unit dialog. The base time unit is the smallest amount of time that can be displayed in the timing diagram editor.

Rich Text Support: Turns on and off the rich text edit support. Rich Edits are the edit boxes that let you bold and superscript text. Default is on.

Status Bar Messages: displays the function of buttons, menu items, and special mode instructions. Default state is On.

Grid Settings: Opens the Edit Text and Edge Grids dialog that controls the text and edge alignment grids.

Design Preferences: Affects how functions work in the program.

Drawing Preferences: Affects how objects appear in the drawing window.

Simulation Preferences: Controls how the interactive HDL simulator works and the default settings for the register and latch models.

Test Bench Preferences: Controls how test benches are created by TestBencher Pro including: the test bench language, transition timing, and the default settings for signals and sample parameters.

Diagram-Level Test Bench Settings: Allows use files, time out settings and HDL code enable toggling for specific diagram components for a specific diagram (TestBencher Pro feature).

Parameter Window Preferences: Controls the display of the min/max columns in the parameter window. These columns can display either formula or the numerical value of the formula.

Text/Color Preferences: Font and Color settings.


Report Menu

Open Report Tab menu option opens a new file in the Report window (Chapter 12: Report Window).

Close Report Tab closes the displayed file in the report window.

Save Report Tab saves the displayed file in the report window.

Save As Report Tab saves the displayed file under a different name.

Print Report Tab prints the displayed file.


Window Menu

Show Toolbars: Turns toolbars on and off.

Cascade: Puts Timing Window in front of Parameter Window.

Tile Horizontally: Tiles timing and parameter windows in a "landscape" fashion (top/bottom).

Tile Vertically: Tiles timing and parameter windows in "portrait" fashion (side by side).

Redraw: Forces that window to completely redraw.

Report filename: If checked, then the Report window will be open. The Report Window will automatically open itself when a WaveFormer simulation is run.

Parameter diagram file: If checked, then the Parameter Window will come to the top.

Diagram diagram file: If checked, then the Diagram Window will come to the top.

Project project file: If checked, this will maximize the project window and bring it to the top (VeriLogger and TestBencher Pro).


Appendix B: Colors
Appendix B: Colors and Their Significance

Red indicates activated buttons or error conditions.

Red Buttons are activated buttons. There are two types of buttons that stay red when activated. Mode Buttons control the functionality of the right mouse button (delay, hold, setup, sample, text, and marker). State Buttons control the level of the next signal to be drawn.

Red Delays are delays that cannot draw themselves properly. Look for an error condition in the parameter window to correct the error.

Red Setups and Holds are constraints whose margins are violated. Look for delays and signal transitions that have been moved too close to the control signal of the constraint for the cause of the violation. Also read Setup and Hold parameters.

Red Transitions (rectangles or vertical bars) in the drawing window are caused by edge transitions that do not change state (i.e. high to high). To fix the error, either delete the transition or change one of the two segment states to a different state. To delete all the red transitions choose the Edit > Clear Red Events.

Red Clocks are clocks whose formulas or values are invalid so that they can no longer draw themselves properly. Double click on a clock segment to open the Edit Clock Properties dialog box.

Blue objects are used for measurement and information.

Blue delta button displays the time between the cursor and the blue delta triangle on the timeline. See delta button.

Blue delta triangle is a marker left behind each time the left mouse button is released in the drawing window. See delta button.

Blue Signal names with blue waveforms indicate simulated signals (Chapter 12: Interactive Simulator).

Blue Signals are signals that are defined to be inputs to a test bench (signals that the simulated circuit generates and a test bench generally verifies for correct performance).

Blue Delays are delays that set only the min edge of the delayed transition. Either the delay is a min-only delay or another delay is dominant at the delayed transition (for more information, see multiple delays).

Blue Signal Names with a black waveform indicates a comparison signal whose comparison did not find any differences to report.

Light Gray indicates a selected object or uncertainty.

Gray Signals are signals that could not be simulated because there was an error in the simulation or because the signals were removed from the simulation using the “Simulate Independently” feature. These signals may also be Compare or Watch signals whose companion signal could not be found.

Gray dotted box shows a selected object in the drawing window like a segment, text object, or a parameter. Select an object by left clicking on it.

Light Gray signal transitions are the uncertain areas in which a signal transition may change state. An uncertainty region is generated by delays whose min and max times are not equal.

Gray Delays are delays that do not set either edge of the delayed transition. Either the min/max values are blank and can be set by double clicking on the delay. Or another delay is dominant at the delayed transition.

Dark Gray waveforms indicate an invalid waveform state where the value of the signal is unknown.

Green indicates selection.

Green Selection Bar shows a selected signal transition.

Green Delays are delays that set only the max edge of the delayed transition. Either the delay is a max-only delay or another delay is dominant at the delayed transition (for more information multiple delays).


Appendix C: Common Questions

Question: What is the difference between TestBencher Pro, WaveFormer Pro, and Timing Diagrammer Pro?

Answer: Each product adds a new capability. Timing Diagrammer is a timing diagram editor. WaveFormer adds waveform stimulus generation, waveform import, and Interactive HDL simulation. TestBencher Pro adds multi-diagram, self-testing test bench and bus-functional model generation for VHDL and Verilog. For a more detailed explanation read the Differences chapter.

Question: How do I get my timing diagrams into a word processor?

Answer: There are 6 ways to embed your timing diagrams into a word processor: copy-to-clipboard bitmaps, WMF metafiles, CGM metafiles, Enhanced metafiles, MIF files, and EPS files. The on-line help page Images has a simple set of instructions on the 6 methods. The file image.doc located on the distribution diskette has more detail and hints on EPS and MIF files, and explains the differences between the metafile formats.

Question: When I print names of parameters or signals they do not show up on my printout. Why does this happen?

Answer: If you have white or a light color chosen as the font color your black-and-white printer may not be able to represent it on white paper. To reset all the colors for printing choose the Options > Text Color Preferences > Restore Default fonts and colors or alter just the color of the object that did not print.

Question: How can I output to a postscript file?

Answer: Your Windows print driver determines the output format generated by a print operation. Install a postscript print driver using the Window's Control Panel program if you don't already have one installed. To create a postscript file with WaveFormer Pro, print to a postscript printer with the "print to file" option checked. Also, type in a file name in the Filename box.

Alternatively, you can connect a printer directly to FILE: using CONTROL PANEL, PRINTERS, CONNECT. In this case, you will be prompted for a filename by Windows.

Question: Does WaveFormer Pro run on a Power PC or a Macintosh computer with Windows software emulation?

Answer: Yes, but WaveFormer Pro requires at least a two button mouse to be used efficiently. You can emulate the right mouse button by using the F12 key, or typing Apple Key *. If you have problems, call us or your Apple dealer for more suggestions.

Question: The flicker from the time measure buttons or the status bar is bothersome on my monitor, can I turn those off?

Answer: Yes, you can turn either one off. In each window, choose Options > Status Bar to turn off the status bar in that window. If you are just learning to use WaveFormer Pro the status bar gives a lot of hints and instructions, so you may want to keep it on until you feel comfortable with the program.

To turn off the measurement buttons, choose Options > Drawing Preferences menu. This will open up the Drawing Preferences dialog, uncheck the Continuous Measurement On checkbox. Now whenever you left click in the drawing window the black time button will display the mouse position and the blue button will read zero time units.


New 1.4 Features
Version 1.4 Features (Timing Diagrammer Pro)

Since WaveFormer Pro code is written entirely in C++, SynaptiCAD is able to add new features much more rapidly than most software vendors are. We currently plan to offer a major upgrade every 6 to 12 months and we generally release new minor upgrades every month or so.

Version 1.4 Features

Group Buses compress several signals into one compact bus signal.

- Buses display the Hex or Binary representation of their member signals.

- Add a bus by merging selected signals or create a bus and its member signals from scratch.

- Edit buses just like normal signals.

Parameter sharing allows multiple parameters in the drawing window to share the same timing values if the parameters have the same name.

- If multiple parameters are added between the same two signals and the same types of edges then it is assumed that the parameter represents the same value. This is called smart parameter sharing.

- Share or un-share by changing the name of the parameter in the drawing window (double left click on the parameter name).

Parameter library facilities have been extended to include porting, referencing, and updating.

- Parameter libraries can be created in WaveFormer Pro or using a standard spreadsheet.

- Parameter libraries can be referenced on the library search list or merged with the project.

- Many other parameter library features for insuring the integrity of the timing values use by the project: updating, copying, and viewing parts.

- Hide Parameters in the parameter table window.

- Copy a library parameter name directly into the min or max field of a parameter in the parameter window. When editing the min or max field of a parameter in the parameter window, the F3 key causes the Insert Part Parameters into Formula dialog to open. This allows the user to copy the name directly into the parameter field. (The Insert Part Parameters into Formula dialog acts just like the View Library Parts dialog).

New Spacer Signals are signals with no names and no waveforms. Spacers let the user place separator lines inside their timing diagrams.

Auto prefix generation control. The user can now set the default prefixes used to name signals, clocks, buses, delays, setups, and holds. To change the prefix right click on the Add Signal, Add Clock, Merge Bus, Delay, Setup, or Hold buttons. This feature is particularly useful when you want to rapidly create a set of similarly named objects.

More Printing Options: Timing Diagrams can be scaled from 10% to 200% of their normal size. The information printed in the headers and footers is controlled by the use of control codes. The user can also specify the width of the margins.

Inserting and deleting clock cycles: Clock cycles can be inserted or deleted by selecting a clock edge and then choosing either the Edit > Insert Clock Cycles or Edit > Delete Clock Cycles menu options.

More Extensive Options: Drawing Preferences dialog has been broken up into two dialogs the Design and Drawing dialogs and more options have been added.

Signals can be drawn with varying line thickness. The default is one pixel. This is set using the Options > Drawing Preferences dialog box.

Signals can be drawn in different colors. The default is black. This is set using the Options > Drawing Preferences dialog box.

Control the angle of sloped edges. The default is 2 pixels. This is set using the Options > Drawing Preferences dialog box.


New 1.5 Features
Version 1.5 Features (Timing Diagrammer Pro)

Since WaveFormer Pro code is written entirely in C++, SynaptiCAD is able to add new features much more rapidly than most software vendors are. We currently plan to offer a major upgrade every 6 to 12 months and we generally release new minor upgrades every month or so.

Many of these new features were added in direct response to requests from our customers. Thank you for the suggestions and keep calling because we are already working on our next version.

Version 1.5 Features

More Clock Features: Three new clock features were added: clocks with formulas, referencing clock attributes in other formulas, and a fully interactive Clock dialog. The two formula features allow the modeling of circuits that modify the system clock like a “divide by 2” circuit or a clock distribution chip. Clock formulas allow a clock to reference another clock's attributes, there by relating clocks to each other.

- Clocks with formulas: Use a formula to specify clock attributes (period, offset, rising and falling edge jitter) in Clock dialog.

- Reference clock parameters in other formulas (i.e. '2*CLK1.period). The attributes that can be referenced by another clock are period, offset, rising (jrise) and falling (jfall) edge jitter. To reference an attribute use the dot method used in all formulas: CLOCK_NAME.ATTRIBUTE. Any formula can reference a clock's attributes.

- Clock dialog is fully interactive and updates the clock as soon as you change an attribute. This makes it easy to immediately assess the impact of a different clock frequency on your design.

More Library Features: New library features include more powerful library browsing and viewing that make it easier to view and add library files before adding them to your library list.

Macro Capability: Macros allow you to substitute one string or character for another in formula evaluation.

Scaled to page Printing: This feature allows you to auto-scale waveforms to fit on a given number of horizontal pages. This feature only scales the waveforms horizontally. Text and signal names remain the same size. If this value is set to 0, printing will function as in previous versions of WaveFormer Pro.

Global Font control: Now in addition to being able to control the fonts used in each of WaveFormer Pro's main windows you can also control the default font used by the entire program. This makes it easy to change the font used by all your text objects at once.

File Features: Two file features were added to improve user efficiency in WaveFormer Pro.

- Drag-N-Drop File Load: From File Manger you can drag a .tim file (WaveFormer Pro's normal output file) and drop it onto the timing window to open the file. This is helpful if you have a lot of timing diagrams and would like to view them in rapid succession.

- File History List: The File menu has a history list of the last four files that were used. This helps you quickly load recently used projects.

More bus editing features: Several group bus display and editing features have been added.


New 1.6 Features
Version 2.0 Features

Since WaveFormer Pro code is written entirely in C++, SynaptiCAD is able to add new features much more rapidly than most software vendors are. We currently plan to offer a major upgrade every 6 to 12 months and we generally release new minor upgrades every month or so.

Many of these new features were added in direct response to requests from our customers. Thank you for the suggestions and keep calling because we are already working on our next version.

Version 2.0

Waveform Transformation: Transform timing diagrams into waveform stimulus for VHDL, Viewlogic's Workview simulator, and SPICE. Import waveforms from the Pod-A-Lyzer logic analyzer and Viewlogic's Workview simulator.

Moving Parameter Start and End Positions: Drag and drop a solid handle box on either side of a selected parameter to change a parameter's starting or ending signal transitions.

Copy and Paste Signals: You can copy and paste signals to another place in the current timing diagram or to another timing diagram by using the clipboard as a temporary holding place. To copy signals, select the signal names and choose the Edit > Copy Signals menu option. This option will copy the signals and any objects attached to the signal like text objects and parameters to the clipboard. To paste the signals into a timing diagram use the Edit > Paste Signals menu option. This function follows the same rules as file merge.

Text centered inside a segment: Text can now be attached to segments as well as edges and time. Text that is attached to a segment stays horizontally centered within its segment and will hide itself if the segment gets too small.

Text Edit Dialog: All the text edit features are now collected together in the Text Edit dialog. Double left click on a text object to open the Text Edit dialog. From this dialog you can change the font, the attachment and the actual text of a text object.

Grid Lines for Clocks: Grid lines are vertical lines drawn from the edges of a clock. Grid lines are added from the Edit Clock Parameters dialog box which is accessed by double left clicking on a clock segment.

Smart Parameter Lookup: When a parameter name is edited inside the Parameter Properties dialog box, WaveFormer Pro automatically checks the name against all other Free Parameters and Library parameters that are available to the project. If a match is found with a free parameter then the parameter will use the free parameter's data and the free parameter will be converted to match the type of the parameter. If a match is found with a library parameter then the parameter will use the library parameter's data. Double left click on a parameter in the Drawing Window to open up the Parameter Properties dialog box.


New 2.5 Features
Version 2.5 Features

WaveFormer Pro v2.5 is the industry's first universal waveform translator. This means if you have timing information in a known format then WaveFormer Pro can display the data or translate the data into any other known format. Some of the key features of WaveFormer Pro's translator abilities are:

- VHDL, Verilog, Viewlogic, Spice analog and digital, and Pod-A-Lyzer scripts are standard features of WaveFormer Pro.

- Custom scripts are written using the industry-standard text processing language Perl.

- Perl scripts have access to WaveFormer Pro API.

- Perl scripts can access user-defined property-value pairs of objects in the timing diagram. This lets the user add information to the timing diagram that can then be used by the Perl scripts.

Most of the new features in v2.5 were added to support WaveFormer Pro’s role as a universal waveform translator. These features include: a Waveperl language interpreter for executing user import/export scripts, the ability to attach arbitrary properties to objects in WaveFormer Pro, and the ability to use virtual state information to describe signals that require more than the normal 5 logic states (high, low, tristate, valid, and invalid). The ability to turn off state button toggling was also added to simplify the creation of virtual buses and signals using virtual state information. The new scripting technology also allows users to add their own custom functions to WaveFormer Pro using dynamic scripts. Also new in WaveFormer Pro is the ability to generate waveforms from text equations.

Object Properties

Virtual State Information

New Toggle Function

Generate Waveforms from Equations

Chapter 13: Stimulus Generation and Waveform Import

13.1 Stimulus Generation (exporting waveforms)

13.2 VHDL and Verilog Stimulus Generation

13.3 Simulator and Test Equipment Stimulus Generation

13.4 Simulator and Test Equipment Import Scripts

13.5 Importing Waveforms

13.7 Advanced: Modifying Scripts

13.8 Advanced: Adding New Scripts

Chapter 14: Writing Waveperl Scripts

14.1 Why a scripting language?

14.2 What is Perl?

14.3 Perl data types

14.4 Perl global variables

14.5 Using variable substitution in Perl text strings

14.6 Pattern matching (regular expressions)

14.7 Notes on writing import/export scripts

14.8 Tips on debugging Waveperl scripts

14.9 Perl and WaveFormer Pro API Documentation

14.10 Object Properties

14.11 Script Naming Conventions


New State Toggle Function

Prior to v2.5, state buttons always toggled between the two most recently activated states. With the addition of virtual state information, it is often desirable to draw a signal with just valid segments and then attach virtual state information to each segment. To simplify this task, you can now turn off the toggle function by clicking on the currently active state button. To turn toggling back on, click on a state button other than the currently active button. The red T on a state button denotes that button as the toggle state. If toggling is off, the red T will appear on the currently active state button.


New 3.0 Features
Version 3.0 Features

Timing Diagrammer Pro, WaveFormer Pro, and TestBencher Pro

Version 3.0 contains many new features including expanded file compatibility for both documentation and design, new diagonal sample parameters, Boolean and temporal equation support (WaveFormer and TestBencher Pro), and self-testing, multi-diagram testbench generation (TestBencher Pro). If you are upgrading to a new version, then this page will show you the new features for each product.

New Features in Timing Diagrammer, WaveFormer, and TestBencher

- Min-only and Max-only Delay Parameters

- Hide all instances of a parameter by hiding a parameter in the Parameter Table Window.

- Drag and drop a parameter in between a new pair of signals

- Sample Parameters

- Time Markers

- Edit Box History Lists

- Five new vector image formats for creating publication quality documentation. For more info, see Images and Printing the Drawing Window . The file image.doc also has special instructions for MIF (Maker Interchange Format) and EPS (Encapsulated Postscript) formats.

- MIF files for FrameMaker (editable from inside FrameMaker)

- EPS files and support for embedding image previews in the EPS files

- WMF metafiles (editable images for Microsoft Office)

- CGM metafiles (cross-platform images)

- EMF enhanced metafiles

- New tutorial: Advanced Editing and Waveform Generation

- File compatibility between version 3.0 of Timing Diagrammer Pro, WaveFormer Pro, and TestBencher Pro allows you to mix and match SynaptiCAD's products to meet the needs of your engineering groups without risking data incompatibility.

New Features for WaveFormer and TestBencher

- Generation of a signal from a Boolean equation of existing signals. Quickly generate complex signals with simple equations using a propagation time delay operator and standard Boolean operators: and, or, nand, nor, xor, not

- Weak High and Weak Low states represent weakly driven (resistor driven) signals and are drawn using dotted lines

- Improved VHDL/Verilog stimulus generation for vector signals (buses).

- Signal Properties dialog

- Double click on a signal's name to open the dialog

- Use the next/previous buttons to quickly edit all the signals in your program

- Improved VHDL and Verilog type and direction support

- Signal direction indicated by color-coding: blue signals are inputs and black signals are outputs (signals are outputs by default)

- Import file support for

- Waveform files created by Capilano Computing's DesignWorks simulator

- Timing diagram files created by Chronology Corp's TimingDesigner

- Export file support for Mentor's QuickSim II simulator

- Added more functions to Perl-callable API

- Added script to quickly rename similarly named signals (e.g., bus member signals).

New Features for TestBencher

Since our code is written entirely in C++, SynaptiCAD is able to add new features much more rapidly than most software vendors are. We generally release a major upgrade every 6 to 12 months and minor upgrades every month or so.

Many of our new features were added in direct response to requests from our customers. Thank you for the suggestions and keep calling because we are already working on the next version.


New 3.5 Features
Version 3.5 Features

Timing Diagrammer Pro, WaveFormer Pro, and TestBencher Pro

New features in Version 3.5 include: realistic data-book documentation using subscripts, superscripts, bold, and italic text, signal names with over bars, text and edge placement grids; professional timing analysis with visual display of critical paths and the ability to add minimum uncertainty to a signal transition; and an enhanced interface with group edge shifting and centered zooming.

Realistic Data Book Documentation

- Superscripts, Subscripts, Italic, and Bold supported in all text objects, comments, min/max formulas, and parameter names (delays, setups, holds, and samples). For example, valid parameter names include tpd, OffDelay, OnDelay, tup. When editing these objects use the following keys to toggle the text formatting: bold = Ctrl-b, italicize = Ctrl-i, superscript Ctrl-u (u for up), subscript = Ctrl-d keys (d for down).

- Over Bar display for active low signal names. Add $BAR to the end of a signal name or double click on the signal name to open the Signal Properties dialog and check the active low check box.

- Edge Placement Grids make it easy to place edges at exact times.

- Text Placement Grids make it easy to align multiple lines of text.

- Ability to set horizontal size of FrameMaker MIF images. Useful when generating multiple MIF images of the same size.

- Scaleable FrameMaker MIF images. Once our MIF images are imported into FrameMaker you can grab the edge of the image and scale the image as desired.

- Disable color-coded critical path display using the View > Show Critical Paths menu option. Useful for generating black and white images for documentation.

New Timing Analysis Features

- Visual display of min/max critical paths using color coded delays to indicate which delays are forcing the min and max edges of a transition. This type of critical path display is necessary in diagrams where multiple delays drive a single signal transition. The colors are: Gray = none, Blue = Min only, Green = Max only, Black = both min and max. The multdely.tim file shows an example of critical path color-coding.

- Ability to specify a minimum uncertainty on a transition (from Edge Placement dialog). If no delays cause an uncertainty greater than the transition's minimum uncertainty, the transition will be given its minimum uncertainty value.

Improved Interface and Editing Features

- Group Edge Shifting allows moving all edges in a signal. Hold down the <shift> or <CONTROL> key while dragging a transition causes all the transitions to the right or left of the selected transition to also be moved. Holding down both keys causes all the edges in the signal to also move.

- Centered Zooming about a selected edge or the blue delta marker, and regular zooming from the center of a diagram.

- Next and Previous buttons added to Edge Placement dialog to simplify editing of multiple edges.

Differences: 3 Products 3 Choices to give you an overview of which features are included in each product.


New 4.0 Features
Version 4.0 Features

New features in WaveFormer Pro and TestBencher Pro Version 4.0 include: Interactive HDL simulation, spreadsheet-based test vector input, and export to Xilinx Foundation Design Kit, ALDEC, and Orbit's ASIC test vector format. New features added to Timing Diagrammer Pro include: automatically generating state labels for counter and shifter type data buses.

Interactive HDL Simulation for WaveFormer Pro and TestBencher Pro

WaveFormer v4.0 is the first EDA tool to incorporate HDL Interactive Simulation (HIS) technology. Changes in design information (logic equations, timing information, component models) and input waveforms automatically result in updates to simulation results, providing instant feedback on the impact of changes on system functionality and performance. Traditional simulators require a design file or schematics plus a set of test vector stimulus in order to generate simulation results. With WaveFormer's interactive simulator you can design incrementally: simulations are performed automatically without the need for complete design information. This allows you to catch mistakes earlier and reduces design time, leaving you more time to optimize your design.

Chapter 12: Interactive HDL Simulation

12.1 Boolean Equations with Delays

12.2 Advanced Gate Representation

12.3 Register and Latch Equations

12.4 Simulation Preferences

12.5 Simulation behind the Scenes

12.6 Report Window

New Import and Export Features

- Spreadsheet based Test Vector Generation: Users can create raw test vectors using their favorite spreadsheet software to edit the vectors and import them to WaveFormer for conversion into VHDL, Verilog, SPICE, and gate level simulation formats. Spreadsheet-based test vector generation can be combined with test vectors drawn in WaveFormer's timing diagram editor as well as test vectors created using WaveFormer's various equation formats (temporal, Boolean, auto-state labeling), setting a new standard for power and ease of use in test vector generation.

- Able to import Verilog Change Dump (vcd) files.

- Stimulus generation for the Xilinx Foundation Design Kit simulator (ALDEC) and Orbit's ASIC test vector format.

- Increased execution speed for all Perl-based scripts (speeded up import, export, and temporal equation scripts).

New Timing Analysis and Interface Features for all 3 products

- Automatically generate bus states for counter and shifter type data buses using State Label equations. State Label equations are very useful for creating complex, quasi-repetitive bus signals that are very time consuming to create manually. For example, the following equation would create a bus signal named CNTR that starts counting from 64 by fours for 100 clock cycles, repeating the entire sequence 4 times:

CNTR Rep( Inc(64,4,100), 4 )

- The built-in functions for State Label equations enable you to generate most bus sequence types, but it is also very easy to add your own unique functions (written as short Perl routines).

- Enhanced Modeless Signal Properties Dialog. In WaveFormer and TestBencher Pro, the Signal Properties dialog contains a logic wizard that assists the user in writing registered and latched Boolean equations.

- Enhanced Parameter Dialog that is modeless, interactive, and allows for editing individual instance information or shared parameter information.

Differences: 3 Products 3 Choices to give you an overview of which features are included in each product.


New 4.5 Features
Version 4.5 Features

Version 4.5 includes several frequently requested features including: support for HP logic analyzers and pattern generators, block copy of waveforms (for copying a time slice of a diagram), and control over the width of the signal label window (right justified signal names are also supported now). We have also improved the instant-feedback (IF) simulator by adding a simulation status button and automatic support for multi-bit signal calculations. We have also made enhancements in the following areas: timing analysis, user interface, and import and export of waveforms from simulators, test equipment, and standard languages.

Improved Simulation and Timing Analysis Features

- UPDATED Tutorial 6:Advanced Modeling and Simulation Tutorial, (tutsim.doc), demonstrates how WaveFormer Pro can quickly model and simulate a digital system of moderate complexity. The tutorial teaches the user how to: model state machines using Boolean Equation interface; locate and fix simulation errors; enter direct behavioral HDL code; use external HDL models; model tri-state gates using conditional operators; model n-bit gates using reduction operators; and model transparent latches.

- Simulation status indicator on button bar that displays success/failure information about last interactive simulation. Makes it easy to spot when there is a mistake in your Boolean equations or Verilog code. [TWF, TB]

- Master Clock field in the Clock Properties dialog makes it easier to define sub-clocks (dependent clocks) in terms of master clocks.

- MSB and LSB of multi-bit signals can be set directly in the signal name by bracketing this information (e.g., ADDR[31:0] sets MSB to 31 and LSB to 0). Changing MSB or LSB also changes display of signal name appropriately

- Improved documentation on the Direct HDL Code entry in the Logic Wizard.

Improved Interface and Drawing

- Block Copy Waveform sections in the timing diagram (horizontally in time). Possibly the all-time most requested feature. This make it easy to repeat a section of waveforms (e.g., to create multiple copies of a write cycle on your diagram).

- Compact new dialogs that let you get maximum use of your screen real estate (great for laptops).

- Lock or unlock all the edges on user-selected signals by choosing menu option Edit > (Un)Lock Edges of Selected Signals.

- Report Window automatically displays vector stimulus and test bench files generated using the Export functions (Export menu options).

- Report Window Editor Commands provide a complete editing environment for making quick text file changes.

- Added library button to Parameter dialog to simplify inserting timing parameters from libraries.

- Parameter table values are treated as a library by the library dialog. This enables parameter table values to be inserted into formulas using the library list. You are no longer required to manually enter parameter names.

New Documentation Features

- Vary width of signal name window by drag & drop of the bar separating the signal names and signal waveforms (nice for printing and image creation).

- Signal ends can be snapped to a marker so that all the signals in a diagram can easily be made to end at the same time.

- Easier to use interface for text and edge alignment grids.

- Documentation Tips is a new on-line help section that lists most of the features that effect how a timing diagram looks.

- Right justify signal names using the Drawing Preferences dialog.

New Import and Export Features

- Import data from Viewlogic, HP and Protel:

- Import Viewlogic's SpeedWave VHDL simulator output (both vwf and vcd formats).

- Import data acquired by HP logic analyzers: HP 1660C and1670D benchtop logic analyzers; HP 16500B and 16500C logic analysis system; HP 16550A, 16555D, and 16556D state timing card, in addition to other HP timing modules.

- Import Protel Technology's Advanced PLD simulator output.

- Export stimulus vectors to HP pattern generators, ABEL, STIL, and MINC:

- Export ABEL stimulus waveforms.

- Export STIL Test Vectors in the IEEE Standard P1450 Standard Test Interface Language.

- Export Minc PLD-Designer stimulus waveforms.

- Export waveforms to HP digital pattern generators including the HP 16522A pattern generator module.


New 5.0 Features

New features in version 5.0 include time-breaks that compress time, undo-redo of edit actions, click-and-drag zooming, multi-line text objects, and Altera Max PlusII stimulus generation. WaveFormer Pro and the underlying Verilog simulator have been upgraded to support 64bit numbers, providing full support for large simulation files (for example, VCD files). In the professional data-book documentation arena we have added six new features to support specialized timing diagrams.

We have also added support for TDML, the new industry standard for on-line timing diagrams. Very soon you will be seeing data sheets on the Internet and you will be able to automatically launch one of SynaptiCAD's timing diagram editors to display the timing parameters and timing diagrams associated with those data sheets.

New Export Feature

- Export stimulus vectors to the Altera Max PlusII simulator.

Simulation and Timing Analysis Features

- Time breaks that compress time: Time Breaks are special markers that can compress time. To add a time break, add a regular marker to the timing diagram. Double click on the marker to open the Edit Marker dialog. From the Marker Type drop down list box, choose one of the three graphical time break styles. These styles are dotted, curved, and jagged to mimic the most common time breaks used in data books. The time breaks can be used as a pretty graphical display or as a true time compression marker. Use the Time break compresses time edit box to indicate the amount of time that should be compressed. The time to the right of the marker will be compressed and will not display on the screen. The compressed time still exists, but it does not display on the screen.

- Synchronous and Asynchronous Set and Clear: The Logic Wizard in WaveFormer Pro and TestBencher Pro has been upgraded to support registers and latches that have set, clear, and clock enable lines. These features are particularly useful for designing divide-by-2 circuits and FPGA circuits. Older files that use the start state feature will continue to simulate correctly. The use of a set or clear line in an older file overrides the obsolete start state value.

- New 64-bit math increases time range: WaveFormer Pro and TestBencher Pro and their underlying Verilog simulator can now simulate about 80s worth of time with 1ps resolution with the new 64 bit math classes. This means improved performance for users of large data sets captured by HP logic analyzers and simulation runs.

- New Skip Function for State Label Equations: The new Skip function lets you "skip" a number of segments before applying the label equations. Skip can be embedded anywhere inside or outside of the other labeling functions.

Interface and Drawing Features

- Multiple Undo and Redo: The Edit > Undo action and Edit > Redo action menu options describe the type of editing or deleting action that you can undo. The older Edit > Undo Delete menu option remains as a menu option so that deletes can be undone without changing the multiple Undo/Redo buffer.

- Enhanced Drawing *******CHANGE IN DRAWING ENVIRONMENT ******: For 4 years we have kept our drawing environment the same, so that existing customers would not be forced to change the way they use the timing diagram editor. But these new drawing techniques were so good that we had to add them. They take less key-mouse strokes and are more intuitive. We hope you like them as much as we do:

- NEW: Click and drag right to insert a segment. This new method saves you two mouse clicks from the old double click method. To use this method, put the cursor inside of a large signal segment. Click down and drag to the right a little bit, then drop. This will draw a new segment in the middle of the existing segment. The state of the new segment will be the toggle state (if different from original state) or drawing state.

- CHANGED: Double click to edit a segment (this function is used to insert a segment). Double clicking on a segment opens the Edit Bus State dialog and lets you type in extended state information about a segment. This new functionality is a better match for WaveFormer's "double click on an object to edit it" interface.

- NEW: HEX mode provides instant access state changes. The Hex button is no longer part of the state buttons that participate in the toggling function. Clicking on the Hex button opens the Edit Bus State dialog and lets you type in virtual state information.

- NEW: Modeless Edit Bus State dialog! Once the Edit Bus State dialog is open you do not have to close it to continue to do other editing functions. Each time you select a segment, that segment's information is displayed in the dialog. This makes it easy to change a lot of segments at one time. If the dialog gets in your way you can close it or roll it up by pressing the line button at the top right of the dialog window bar.

- Timeline click-and-drag Zoom: This is a quick way to graphically specify the zoom level and range for a section in a large timing diagram. Zoom Out until you can see most of the timing diagram. Put your cursor in the timeline on the time that you want and drag to the right. When you release the mouse, the diagram will zoom to show the range you selected.

- Zoom Full and Zoom Range: Click the Zoom Full button, on the button bar, to display the entire timing diagram on one screen. Click the Zoom Range button, on the button bar, to open a dialog that lets you type in the start and end times you want to display.

- Clocks support Virtual State information: Now you can use virtual state information to label clock cycles. The virtual state information automatically centers itself within the cycle and adjusts as you change clock frequencies. To add virtual state information, select a clock segment by clicking on it, then click the HEX button to open the Edit Bus State dialog. Type in any text string or value into the Virtual edit box.

- Faster Library Specifiers: The Edit Macro dialog finds the library specifiers that are defined for the current project and displays them in the value drop-down list box, vastly simplifying quick switching between libraries.

- New Library Buttons: Now there are three methods for copying a parameter from a library into a project: Replace Parameter, Insert into Project, and Insert into Formula.

- New Free Parameter Controls: The Add Free Parameter button in the parameter window lets you quickly add free parameters to the project. The Libraries > Save Library (Free Parameters) menu option lets you save all free parameters to a specific library of their own.

- Proportional Scroll Bars: The thumbs on the scroll bar are now proportionally sized to indicate how much of the file is being viewed.

- Roll-up Dialogs: Several of the modeless dialogs like Signal Properties or Parameter Properties can be rolled up in order to view the timing diagram. To roll up a dialog just press the little bar button at the top right -hand side of the dialog window bar. When a dialog is rolled up only the window bar is visible. To unroll a dialog, press the maximize button on the window bar.

- Cursor Shape Indicates Editing Operations: The cursor changes shape to indicate that different editing options are available when the cursor is over a particular object.

Object	cursor	Action
Parameter	up - down arrow	can move parameter up or down
parameter handle	pointer	drag handle to a new edge
Text	four - way arrow	drag or nudge in any direction
marker or edge	left - right arrow	drag or nudge left or right
all other objects	cross hair	regular editing and drawing
New Documentation Features

- Support for TDML: Over the next year or two, on-line data sheets are going to replace or augment printed data books, and TDML is the timing diagram and timing parameter format that is being recommended by the SI2 ECIX committee involved with the data sheet standard. With TDML you will be able to view a data sheet in a browser-like environment and then double-click on the timing diagram icon to automatically launch a SynaptiCAD timing diagram editor to display and manipulate the timing information. SynaptiCAD has been working with SI2 on this format since November of 1996 and we expect to see the first on-line data sheet sites in the beginning of 1999. Keep checking our web site for updates on the newest TDML information.

- Multi-line text: Paragraph text blocks can be added by editing an existing text object. Double-click on a single line text object to open the Edit Text dialog, then type into the multi-line edit box. By default, new text objects are single lines so that you can add many in rapid succession. The normal Windows copy and paste keystrokes (<Ctrl>-C, <Ctrl>-V) can be used inside the Edit Text dialog to copy or paste text information to and from a word processor.

- Text and edge keyboard nudging: Select a piece of text, an edge, or a marker and use the arrow keys to move the object around. Text objects use the text grid settings, and the markers and edges use the signal edge grid. Both grids can be set using the Options > Grid Settings menu option.

- Good looking 0-1ns Setups and holds: Data sheets often contain many 0ns setups and holds. Now WaveFormer uses a nifty technique whereby two horizontal arrows are drawn pointing toward the centerline to display small setups and holds more professionally.

- Smart Print Settings: When the File > Print Diagram menu option is chosen, the Print dialog range defaults to the End Diagram Marker, or if there is no such marker then to the last drawn edge.

- Invisible Signals and text: A new View menu option allows attachments to signals (like text objects and grid lines) to continue to be displayed even when their parent signal is hidden. This lets you create data-book quality diagrams by using signal segments to line-up and center text without actually showing the signal segments.

- OLE support: Full WaveFormer OLE embedding support. Now if you embed your timing diagrams into a Windows program like FrameMaker or MS Word, you will be able to double-click on the picture and automatically launch WaveFormer with the correct file loaded for editing. Modifications that you make in WaveFormer will be updated in the original document that opened WaveFormer. This feature greatly enhances your ability to keep track of and provide documentation for many projects.

- Grid Lines on Signal Edges: Grid lines can now be attached to signals.

- Start and Stop points for grid lines: Grid lines now have starting and stopping signals. Old style grid lines drew the entire height of the timing diagram. CHANGE: Clock grids are now accessed through the Signals Properties dialog.


New 6.0 Features

SynaptiCAD products now support Xilinx/Aldec simulators and a greater number of HP Logic Analyzers. The support of HP Pattern Generators has been improved as well. Signal and parameter filters have been added to allow users to show or hide objects that match user-defined patterns. Also, users can now view all signal states at a certain time by simply clicking in the timeline.

Interface and Drawing Features

- Views support storing settings for multiple pictures of a timing diagram.

- Support for "style sheets" that capture a user's preferred fonts, colors, and display options so that these settings can be used even when viewing timing diagrams created by someone else.

- Use filters to hide or show sets of signals. Select the View > Filter Signals menu option to open the Signal Filter dialog. Objects matching patterns are either shown or hidden depending on the state of the dialog. For example, the pattern CLK would match objects named CLK0 and CLK1.

- Use filters to hide or show sets of parameters. Choose the View > Filter Parameters menu option to open the Parameter Filter dialog. Objects matching patterns are either shown or hidden depending on the state of the dialog. For example, the pattern D would match objects named D0 and D1.

- Display All Signal States by left clicking in the timeline in the Diagram window. This drops a temporary marker line that displays the virtual state value of each signal at a particular time.

- Mouse cursor indicates the next waveform state to be drawn in Diagram window.

- Click and Drag to determine the Block Copy selection range. Press the <Ctrl> key while dragging in the Timeline window to indicate the selection time range. When the mouse is released the Block Copy dialog will open with the selection time range already entered in the dialog.

- Window colors are now remembered across program sessions.

- Printer settings are now remembered across program sessions and Printer settings are also saved in the individual timing diagram files.

- Improved library dialog allows easy reuse of existing parameters.

- Display Setups and Holds with traditional "outward pointing" arrows as well as the default "point to control signal" style arrows. This is particularly useful when using setups as distance indicators or pulse width checks.

- Control of waveform font , line thickness, and height has been enhanced and moved to the Drawing Preferences (Style Sheet) dialog.

- Setups and holds are placed above the upper or lower signal to which they are attached by using the Auto place Setups/Holds on lower signals check box in the Drawing Preferences (Style Sheet) dialog. The default is the old setting to prevent changing the appearance of existing diagrams (above the upper signal), but using the lower signal prevents "clumping" of parameters when clock signals are near the top of the diagram.

- Control Marker display labels using the Edit Marker dialog and Drawing Preferences (Style Sheet) dialog.

- Apply button in Print dialogs allows printer settings to be saved without actual performing a print operation (cancel to close the dialog).

Simulation Features

- Simultaneously edit the properties of multiple signals. Select several signals and then right click in the Label window to edit the properties of all selected signals. This feature is especially useful for quickly setting the export types, analog properties, or comparison properties of a group of signals.

- Waveform Comparisons allow you to visually compare the waveforms for two timings diagrams or individual signals.

- Search in the Report window using <Ctrl>-F keys.

- New signal action types: Drive, Simulate, Watch, and Compare give complete control of how WaveFormer uses a particular signal.

- RandomIntegerArray(count, Range_to_zero) label equation function generates random state values for waveforms. Example: RandomIntegerArray(8,255) generates an array of 8 random integers within a range of 0 to 255 (inclusive).

Import and Export Features

- New Import timing diagram dialog that remembers last waveform format imported.

- Import and Export dialogs remember last file type selected across program sessions.

- Import VHDL Waves test vectors from simulators like the Xilinx/Aldec simulator.

- Import from HP 1660 and HP 1670 Benchtop Logic Analyzers in addition to the support for the HP16600, HP16700, and HP16500 series timing analysis systems.

- Faster HP Pattern Generator export script with reduced memory requirements.

- Analog Signal Properties dialog supports SPICE export scripts.

- Independently drive parts of multi-bit signals (e.g. DATA[15:7] and DATA[7:0]) by using different signals with the same name.


New 6.5 Features

Support for Analog Data. Import data from Spice simulations, MATLAB and Mathematica.

- Customize signal height for the best view of waveforms

- Support for analog display of both “real” and digital radix signals.

Use Object Linking and Embedding (OLE) to copy and paste different views of the same timing diagram to the clipboard for use with other programs.

New Edit Waveform Edges dialog enables mathematical editing of the edge times of a set of signals. Tasks such as time scaling and time offsetting are easy to perform on a set of waveform edges.

Additions to WaveFormer’s library of label equation functions.

 - “Signal(“SIG0”)” – This function enables label equations to operate on existing signal states.

- New “map” function allows you to execute a mathematical operation on a set of signal states.

- Input the values for the states of a signal from a text file using the new “File (“vectors.txt”)” label equation function.

- New Random Integer Array label equation function generates random state values for waveforms.

User-defined radix allows you to map values to “human-readable” names.

Waveform Comparison – compare individual signals or entire timing diagrams.

Import and Export Features:

- export timing diagrams in project menu option allows batch translation of all waveform files listed in the project window into a selected waveform format.

- import timing diagram dialog remembers the last waveform format imported makes converting multiple files more efficient.

- import VHDL waves test vectors (used by Xilinx/Aldec simulator)

- import ALTERA simulation files (.tbl format)

- import SPICE CSDF Files (PSPICE, HSPICE, etc.)

New Timing Diagram Editor Features

- View the state of all signals at a specific time with a single mouse click

- Easy conversion back and forth from group to virtual bus.

- Edit multiple signals simultaneously to set uniform signal properties.

- Control what you see using the filter dialogs to filter signals and parameters – use powerful features within testing and keep your viewing area simple.


Chapter 16: Waveform Comparisons

Waveform comparisons graphically display the differences between compared waveforms for two timing diagrams or individual signals. This feature is exceptionally useful comparing two different simulation runs, as well as for comparing logic analyzer data to a simulation run. A range of tolerance can be provided using the compare signal settings.

16.1 Compare Signals

16.2 Comparing Individual Signals

16.3 Comparing Timing Diagrams

16.4 Display Options for Compare Signals

16.5 Adjusting Comparison Tolerances

16.6 Modifying Comparison Signals Simultaneously

Table of Contents


16.1 Compare Signals

Compare signals are specified using the Signal Properties dialog box. These signals are used to find the differences between two waveforms. Initially, these signals are designated with a blue signal name and a black waveform. When a waveform comparison is performed, the signal label for the compare signal turns red if differences have been found. The specific differences that have been found during the comparison turn red on the compare signal.

When comparing two waveforms, the signal names must match. This can be accomplished by changing the names of the compare signals in the Signal Properties dialog (see below) or by ensuring that the signal names in the two files match. If a compare signal is specified that does not have a companion signal (a signal with a matching name specified), then there is nothing for the signal to be compared with.

Chapter 16: Waveform Comparisons


16.2 Comparing Individual Signals

A signal can be changed to a compare signal to be used for comparison. This method works for both unmatched signals in files that you are comparing and for signals that you have created in this file. Any difference between signals that are being compared appears in red on the timing diagram. Multiple pairs of waveforms can be compared in this manner. To compare two signals, they must have the same name and one signal must have a signal type of compare.

- Double click on the signal name to open the Signals Properties dialog.

- Change the name of the signal to match the signal you want to compare with. This will not change the signal name in any other file, only in the file that you are working with.

- Select the Compare radio button located in the top part of the dialog. This makes the Signals Properties dialog display the tolerance controls used to define how the compare will be done.

- Next push the Compare button to run the comparison.

Chapter 16: Waveform Comparisons


16.3 Comparing Timing Diagrams

The timing diagrams that are being compared can be the result of two different simulation runs, or one or both could contain the data from a logic analyzer. To compare two timing diagrams:

- Load in the first timing diagram. Either use the File > Open Timing Diagram… menu option to load a new file or use the current timing diagram.

- Choose the File > Compare Timing Diagram… menu option to load in the signals to be compared. This opens a File dialog that lets you select the file to be compared. Closing this dialog loads the second set of signals and sets their signal type to compare. Any two signals that have matching names will automatically be compared. The compare signal will appear under the original signal.

Chapter 16: Waveform Comparisons


16.4 Display Options for Compare Signals

By default, the two sets of signals being compared will be interleaved. The original signals will be displayed with the comparison signal immediately following. If two diagrams are being compared, then this pattern will follow for every individual signal, so that the signals are interleaved.

You can have the original signals and the compare signals grouped into separate sets instead. To group the signals in this manner:

- Make sure the View > Compare > Interleave Compare Signals menu option is not checked.

- Select the File > Compare Timing Diagram menu option.

Chapter 16: Waveform Comparisons


16.5 Adjusting Comparison Tolerances

Ranges may also be used for comparisons. Instead of looking for comparisons directly on an edge, you can allow a tolerance within a set range of the edge. To set the tolerance of a compare signal:

- Open the Signal Properties dialog by double clicking left on the signal name. Note: the tolerance can only be set on the compare signal not on the original signal.

- Specify the tolerance range previous to the edge by typing a value into the –Tol: textbox. (The value will be ns.)

- Specify the tolerance range after the edge by typing a value into the +Tol: textbox. (This value will also be in ns.)

- Click the OK button to close the dialog. Now when you run the comparison a tolerance will be provided as specified.

The tolerance for multiple signals can be set simultaneously by:

- If the Signal Properties dialog is open, close it.

- Left click the signal names  in the signal window to select the signals to be edited. Notice that each signal can be selected individually.

- Right click one of the highlighted signal names and select Edit Selected Signal(s) from the pop up menu.

- Proceed with steps outlined above for editing signals.

Chapter 16: Waveform Comparisons


16.6 Modifying Comparison Signals Simultaneously

It is often handy to be able to modify the properties of all compare signals within a timing diagram when working with the comparison of multiple signals. This allows you to set a standard tolerance for the comparison, for example.

To Edit the Properties of all Compare Signals in a Diagram:

- Select the View > Compare > Edit Compare Signals menu option. This will open the Signal Properties dialog with all compare signals selected for editing.

- Edit the property settings that you want to be uniform for all compare signals.

- Click the OK button to apply the settings and close the Signal Properties dialog.

Table of Contents