Signalscan Waves User Guide
Transcription
Signalscan Waves User Guide
Signalscan Waves User Guide Product Version 6.5 June 2000 1994-2000 Cadence Design Systems, Inc. All rights reserved. Printed in the United States of America. Cadence Design Systems, Inc., 555 River Oaks Parkway, San Jose, CA 95134, USA Trademarks: Trademarks and service marks of Cadence Design Systems, Inc. (Cadence) contained in this document are attributed to Cadence with the appropriate symbol. For queries regarding Cadence’s trademarks, contact the corporate legal department at the address shown above or call 1-800-862-4522. All other trademarks are the property of their respective holders. Restricted Print Permission: This publication is protected by copyright and any unauthorized use of this publication may violate copyright, trademark, and other laws. Except as specified in this permission statement, this publication may not be copied, reproduced, modified, published, uploaded, posted, transmitted, or distributed in any way, without prior written permission from Cadence. This statement grants you permission to print one (1) hard copy of this publication subject to the following conditions: 1. The publication may be used solely for personal, informational, and noncommercial purposes; 2. The publication may not be modified in any way; 3. Any copy of the publication or portion thereof must include all original copyright, trademark, and other proprietary notices and this permission statement; and 4. Cadence reserves the right to revoke this authorization at any time, and any such use shall be discontinued immediately upon written notice from Cadence. Disclaimer: Information in this publication is subject to change without notice and does not represent a commitment on the part of Cadence. The information contained herein is the proprietary and confidential information of Cadence or its licensors, and is supplied subject to, and may be used only by Cadence’s customer in accordance with, a written agreement between Cadence and its customer. Except as may be explicitly set forth in such agreement, Cadence does not make, and expressly disclaims, any representations or warranties as to the completeness, accuracy or usefulness of the information contained in this document. Cadence does not warrant that use of such information will not infringe any third party rights, nor does Cadence assume any liability for damages or costs of any kind that may result from use of such information. Restricted Rights: Use, duplication, or disclosure by the Government is subject to restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its successor. Signalscan Waves User Guide Contents 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Overview of Signalscan Waves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sample Signalscan Waves Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opening Signalscan Waves from the Affirma SimVision Analysis Environment . . . . Finding an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grouping Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining an Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting a Marker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Sequence Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining a Mnemonic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Register Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Control—Go To Submenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exiting Signalscan Waves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Remaining Chapters in this Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Invoking Signalscan Waves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Automatically Restoring Your Configuration Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Signalscan Waves from SimControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding New Objects to Existing Waveform Windows . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Signalscan Waves from the Operating System . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Signalscan Waves on UNIX Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking Signalscan Waves on Windows Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . Initial Signalscan Waves Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . June 2000 12 12 13 14 14 14 15 16 17 18 19 21 22 22 2 25 25 27 28 29 33 34 Product Version 6.5 Signalscan Waves User Guide 3 Navigating Through Your Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Traversing Your Design Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Current File Field and Drop-Down List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Current Instance Field and Drop-Down List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bookmarks Field and Drop-Down List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instances Pane and Instances Filter Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variables Pane, Nodes/Variables Filter Field and Variable Type Buttons . . . . . . . . . . Groups Field and Drop-Down List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . To Add Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Busses with Bus Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus Template Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus Template Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying All Probed Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying Selected Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 38 39 40 41 42 42 42 43 43 44 45 45 45 4 The Waveform Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Overview of The Waveform Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Waveform Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Signals in the Waveform Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Predefined Markers in the Waveform Pane . . . . . . . . . . . . . . . . . . . . . . . . Defining and Using Custom Markers in the Waveform Pane . . . . . . . . . . . . . . . . . . . Using the Zooming Features of the Waveform Window . . . . . . . . . . . . . . . . . . . . . . . The Time Status and Times Panes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TimeA Marker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cursor1 and Cursor2 Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Multi-List Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Names Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selecting Objects in the Names Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reordering Objects in the Names Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Searching for Objects in the Names Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . June 2000 3 47 48 48 49 53 54 54 56 57 57 58 60 61 63 63 Product Version 6.5 Signalscan Waves User Guide Adding Comments to the Names Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Changing the Height of an Analog Object in the Names Pane . . . . . . . . . . . . . . . . . . 64 Changing the Names Pane Width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 The Button Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 The Menu Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 File Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Edit Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Control Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 View Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Format Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Options Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Windows Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Help Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Defining and Using Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Defining and Using Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Defining an Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Scrolling the Events Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Modifying an Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Finding an Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Defining and Using Busses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Creating a User-Defined Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Modifying a Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Viewing Components of a Bus in the Waveform Window . . . . . . . . . . . . . . . . . . . . . 102 Using the Signalscan Waves Cause Finder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Invoking from the Waveform Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Defining and Using Constants and Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Defining and Using Mnemonics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Defining a Mnemonic Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Defining a Mnemonic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Modifying a Mnemonic Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Applying a Mnemonic to a Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Viewing Waveforms in Sequence Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Sequence Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Using the Multivalue Indication Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 June 2000 4 Product Version 6.5 Signalscan Waves User Guide Viewing Multi-Dimensional Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Printing the Waveform Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5 Defining Design Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Overview of the Register Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multiple Register Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . View-Only Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TimeA Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Current Sim Time Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RegPage Name and Selected Variable Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selection Mode and Text Mode Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Previous and Next Value Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Define Mode Interactive Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multi-List Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register and Multi-List Pane Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating and Customizing a Register Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selecting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grouping and Ungrouping Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Simulation Objects to the Register Page . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying Object Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Moving Text and Simulation Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Font Size of Text Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rearranging Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 122 122 123 123 123 123 124 124 126 126 126 127 129 129 129 130 130 130 130 131 131 131 6 Analog Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Using Overlay Groups with Analog Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating an Overlay Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying Overlay Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Converting Overlaid Signals to Stacked Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . June 2000 5 133 133 134 134 Product Version 6.5 Signalscan Waves User Guide Printing Overlay Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Analog Waveform Height Bracket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zooming and Panning Analog Signals and Overlay Groups . . . . . . . . . . . . . . . . . . . . . Using the Vertical Zoom Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Horizontal Zoom Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Area Zoom Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Panning Analog Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Customizing the Display of Analog Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Points and Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Minimum and Maximum Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Display Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving Analog Display Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Analog-to-Digital Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating and Using Analog Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Escaping Special Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Expressions with Constant Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Expressions in a Do-File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expression Example Using Analog to Digital Function . . . . . . . . . . . . . . . . . . . . . . Performing Measurements on Analog Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Value at Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Slope For Values at Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Minimum, Maximum, and Peak-to-Peak Between Cursors . . . . . . . . . . . . . . . . . . . Rise/Fall Time at Cursor1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Average Values Between Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RMS Values Between Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 134 135 135 136 136 137 137 137 138 138 139 141 141 143 144 144 145 145 146 147 148 150 151 153 155 7 Transaction-Based Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Transaction Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hierarchical Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multiple Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Transactions from Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining Basic Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining Bounded and Hierarchical Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . June 2000 6 157 159 159 161 161 163 Product Version 6.5 Signalscan Waves User Guide Assigning Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TVM Declaration/Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining Multi-Threaded TVMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Identifying Related Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 165 165 168 8 Viewing Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Basic Transaction Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transaction Hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transaction Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locating Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The error_count Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 175 176 178 179 9 Recording Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Transaction Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Module Instances: TVMs, Tests, and DUVs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Threads: TVM Threads, Test Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transaction Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Property Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Property Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Property Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Property Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Property Type and Format Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpolated Format Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Property Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Searching Property Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transaction Recording System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TRST Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Module Instance System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Thread System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transaction System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . June 2000 7 182 182 182 182 183 183 183 183 184 185 187 187 188 191 192 192 192 195 198 203 Product Version 6.5 Signalscan Waves User Guide Transaction Tag System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Property System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Property Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utility System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Rollup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verilog Plus Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Logging Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Saving and Restoring Your Configuration 210 212 213 215 216 216 216 . . . . . . . . . . . . . . . . . . . . 218 Do-Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .signalscanrc File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving Your Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Restoring Your Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 218 218 220 B Signalscan Waves Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Lexical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (period) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ? ................................................................ about . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ali[as] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . always . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cen[ter] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . clo[se] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . col[lapse] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . con[tinue] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cop[y] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cre[ate] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . def[ine] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . June 2000 8 221 221 221 221 221 222 224 224 224 225 225 225 225 226 226 227 227 Product Version 6.5 Signalscan Waves User Guide del[ete] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . desel[ect] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dis[play] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dup[licate] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exe[cute] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exp[and] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . force . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gen[erate] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . hide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . inc[lude] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . init[iate] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . inv[ert] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . me[rge] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mov[e] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pa[ste] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . quit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rel[ease] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ren[ame] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rep[lace] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . reveal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sel[ect] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . show . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . June 2000 9 233 233 234 234 234 234 234 235 235 235 235 235 236 236 236 236 236 237 237 237 237 237 238 238 238 240 240 240 240 240 241 241 241 241 241 242 Product Version 6.5 Signalscan Waves User Guide source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ste[p] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sto[p] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . term[inate] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . topl[evel] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . undo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . upscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . zoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 243 243 243 243 243 243 243 244 244 C Hot Keys, Colors, and Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Hot Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Custom Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Define Buttons Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entering a Signalscan Waves Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Custom Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Colors When Zooming Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 246 246 248 249 249 250 Index.............................................................................................................................. 252 June 2000 10 Product Version 6.5 Signalscan Waves User Guide 1 Introduction This chapter provides you with a brief overview of the Signalscan Waves waveform viewing tool and includes a simple example of a Signalscan Waves session. This chapter also contains a brief description of the contents of each of the remaining chapters in this manual. This chapter contains the following sections: ■ “Overview of Signalscan Waves” on page 12 ■ “Sample Signalscan Waves Session” on page 12 ■ “Remaining Chapters in this Manual” on page 22 June 2000 11 Product Version 6.5 Signalscan Waves User Guide Introduction Overview of Signalscan Waves Signalscan Waves is a powerful tool for analyzing your simulation results and debugging your designs. Its high-performance, waveform viewing technology lets you analyze large amounts of complex simulation data both quickly and accurately. The reason for the high performance level of Signalscan Waves is its use of the SST2 Signalscan Turbo 2 (SST2) database format. You can open SST2 databases from different simulations and view them simultaneously. You can use a simulator to generate an SST2 database, or you can use Signalscan Waves to automatically translate a VCD file into an SST2 database file. For design flows that rely on VCD files, Signalscan Waves can also translate an SST2 database file into the VCD format. You can use Signalscan Waves interactively with the simulator by using the AffirmaTM SimVision analysis environment, which lets you view the waveforms of your simulation results as they are generated, or you can view a post-simulation results database. You can also view results from several previous simulations together in the same Waveform window with data from a currently running simulation, so that you can quickly and easily compare current and past results. Sample Signalscan Waves Session This session provides you with a simple example that shows you how to open and analyze an SST2 database in Signalscan Waves. June 2000 12 Product Version 6.5 Signalscan Waves User Guide Introduction Opening Signalscan Waves from the Affirma SimVision Analysis Environment Click the Waveform View button in the upper-right corner of the SimControl window. The Signalscan Waves Waveform window appears, showing the waveforms of your current simulation results, as shown in Figure 1-1 on page 13. Figure 1-1 The Signalscan Waves Waveform Window Time Status Pane Times Pane Multi-List Pane Waveform Pane Names Pane Horizontal Resize Bars Objects that are selected in the Source File Browser in the SimControl window appear in the Waveform window, as shown in Figure 1-1 on page 13. If you select other objects in the SimControl window and then click the Waveform View button again, the newly selected objects appear in the same Waveform window. The names of the objects and their current values are listed in the Names pane of the Waveform window, and their waveforms are shown in the Waveform pane. June 2000 13 Product Version 6.5 Signalscan Waves User Guide Introduction The Time Status pane shows the time value of the TimeA marker, the simulation end time, and the difference in time between the Cursor1 and Cursor2 markers. The TimeA marker synchronizes the Waveform window and the Register window at the same simulation time value. The values of the objects in the Names pane and the values of any objects that are displayed on Register pages are the values that those objects have at TimeA. Cursor1 and Cursor2 are used as temporary markers in the Waveform pane for functions such as zooming and performing measurements. See “The Time Status and Times Panes” on page 54 for instructions on how to reset TimeA, Cursor1, and Cursor2. Finding an Object Choose Edit—Find and Edit—Find Next to search for an object name in the Names pane. Grouping Objects Objects in the Names pane are organized into groups. A group is a collection of objects that are displayed together. You can define multiple groups, and you can place any object any number of times in one or more groups. By default, Signalscan Waves creates a Group A for you when you first open a Waveform window. You can rename this group and create new groups. You can select objects and copy and paste them or drag them into new groups. To scroll the Waveform window display to a particular group, change the Multi-List pane (as shown in Figure 1-1 on page 13) to list Groups and click on the name of the group that you want to see. See “Defining and Using Groups” on page 95 for more information on grouping objects for viewing. Defining an Event An event is a set of objects that have a specific set of values. You can easily navigate to each simulation time at which a particular event occurs. To define an event: 1. In the Waveform window, click on an object in the Names pane. June 2000 14 Product Version 6.5 Signalscan Waves User Guide Introduction 2. Choose Edit—Create—Event to create the event. An Events window appears. The event event001 is created using the selected object and its value at Cursor1, as shown in Figure 1-2 on page 15. Figure 1-2 Events Window To scroll the Waveform window to display the next occurrence of an event, change the Multi-List pane to list Events and click on the name of the event that you want to find. See “Defining and Using Events” on page 96 for information on how to change the name, value, and composition of an event. Setting a Marker You can define markers to mark locations in your simulation that you want to quickly return to later. To create a marker, choose Edit—Create—Marker. A form appears showing the Cursor1 time as the default marker time, as shown in Figure 1-3 on page 16. June 2000 15 Product Version 6.5 Signalscan Waves User Guide Introduction Figure 1-3 Creating a Marker This form lets you specify a name for the marker and edit the time. The marker is placed at the marker time that you specify. To scroll the Waveform window to display a particular marker, change the Multi-List pane to list Markers and click on the name of the marker that you want to view. See “Defining and Using Custom Markers in the Waveform Pane” on page 53 for more information on creating and using markers. Viewing Sequence Time Sequence Time lets you view and debug activities that conceptually take place at the same simulation time, but are actually executed in a specific order by the simulator. Sequence Time works with another feature, Multivalue Indication , which marks single time units during which an object changes value more than once. Multivalue Indication points on a waveform are identified by pink dots. See Figure 4-41 on page 113 and Figure 4-5 on page 55 for examples of these points. To expand a time point to see the true sequential ordering of events: 1. Click on a pink dot in the Waveform window. This positions Cursor1 at the dot. June 2000 16 Product Version 6.5 Signalscan Waves User Guide Introduction 2. Choose View—Expand Sequence Time—At Cursor1 . The time point expands to show the sequence of all of the events that take place at that simulation time, as shown in Figure 1-4 on page 17. Figure 1-4 Expanded Sequence Time For more information about Sequence Time and Multivalue Indication, and for instructions on how to record sequence time so that you can expand it in Signalscan Waves, see “Viewing Waveforms in Sequence Time” on page 112. Creating a Bus To create a bus: 1. In the Names pane, select the objects that you want to put together as a bus. June 2000 17 Product Version 6.5 Signalscan Waves User Guide Introduction 2. Click your middle mouse button in the Names pane where you want to place the new bus in the waveform display. 3. Select Edit—Create—Bus . The Make Bus From Selected Variable(s) form appears, as shown in Figure 1-5 on page 18. Figure 1-5 Defining a Bus 4. Click OK . For more information about modifying and using busses, see “Defining and Using Busses” on page 99. Defining a Mnemonic Signalscan Waves lets you define mnemonics for any values, and display those mnemonics in the Waveform and Register windows. To define a mnemonic: 1. Select Options—Define Mnemonic Maps . The Define Mnemonic Mapping form displays, as shown in Figure 1-6 on page 19. June 2000 18 Product Version 6.5 Signalscan Waves User Guide Introduction 2. Click anywhere in the Value pane, and enter a value. 3. Press the Tab key, or click anywhere in the Mnemonic pane, and enter the mnemonic for that value. Figure 1-6 Define Mnemonic Mapping Form Value Pane Mnemonic Pane To apply a mnemonic to a bus: 1. Select a bus in the Names pane of the Waveform window. 2. Choose Format—Variable Radix . 3. Select a mnemonic map name from the bottom of the list of options on the pull-down menu. For more information on defining mnemonics and applying them to busses, see “Defining and Using Mnemonics” on page 107 and “Applying a Mnemonic to a Bus” on page 111. Creating a Register Page Register pages show customized views of your design. To create a Register page: June 2000 19 Product Version 6.5 Signalscan Waves User Guide Introduction 1. Select the objects that you want to show on your Register page from the Names pane of the Waveform window. 2. Choose Edit—Create—Register Page . 3. A Create Register form appears, as shown in Figure 1-7 on page 20. Figure 1-7 Register Page Form 4. Type rpage1 as the register name and click OK . 5. A Register page, named rpage1, is created and is displayed in the Register window, as shown in Figure 1-8 on page 21. The selected objects are listed in the Register pane of this window. June 2000 20 Product Version 6.5 Signalscan Waves User Guide Introduction Figure 1-8 Register Window Multi-List Pane Register Pane The register values are displayed for the time that the TimeA marker indicates. When you move the TimeA marker in the Waveform window, these register values update automatically. The Register window can display multiple Register pages. To switch between pages, click on the name of the Register page that you want to view in the Multi-List pane on the right-hand side of the Register window. Using the Control—Go To Submenu The Control—Go To menu option appears on several Signalscan Waves windows: the Waveform window, the Source Code window, the Register window, and the Design Browser. The Control—Go To menu option activates a submenu that contains the following options: Table 1-1 Control—Go To Submenu Options Option Description Cause Displays the cause of the selected register, variable, or net value in the Source Code window. See “Using the Signalscan Waves Cause Finder” on page 102 for more information. June 2000 21 Product Version 6.5 Signalscan Waves User Guide Introduction Table 1-1 Control—Go To Submenu Options Option Description Definition Displays the definition of the selected variable in the Source Code window.This option only appears if you have a standalone Signalscan license and are not running Signalscan Waves with the Affirma Simvision analysis environment. Schematic Displays the selected structure in the Schematic Tracer. Schematic Tracer is not available in this release. Exiting Signalscan Waves To close the session or exit from Signalscan Waves: 1. Choose File—Exit from any Signalscan Waves window. A form displays the message: Are you sure you want to exit Signalscan Waves? 2. Click Exit . To save this particular Signalscan Waves configuration (groups, markers, events, window positions, and many other features), choose Save Do-File instead of Exit . See Appendix A, “Saving and Restoring Your Configuration,” for more information on saving and restoring Signalscan Waves configurations. If you want to exit Signalscan Waves at the same time that you exit the Affirma SimVision analysis environment: 1. Choose Options—Preferences in the SimVision SimControl window. 2. Choose the box at the top of the form that is labeled: On exiting SimControl, also exit Waveforms Remaining Chapters in this Manual This manual contains the following remaining chapters: June 2000 22 Product Version 6.5 Signalscan Waves User Guide Introduction Chapter 2, “Invoking Signalscan Waves,” describes the different ways in which you can invoke Signalscan Waves. Chapter 3, “Navigating Through Your Design,” describes how you can traverse your design hierarchy and select objects for viewing in a Waveform window if you are not using the Affirma SimVision analysis environment to do this. Chapter 4, “The Waveform Window,” describes how to use a Waveform window to find signals and events, place time markers, rearrange signals, view Sequence Time, define busses, define mnemonics, and print waveforms. Chapter 5, “Defining Design Views,” describes how to use the Register window to create customized views of your design on register pages. Chapter 6, “Analog Analysis,” describes how you can manipulate analog signals and perform various measurements and calculations on them. Chapter 7, “Transaction-Based Verification” provides you with an introduction to transaction-based verification — a process that lets you simulate and debug your designs at a high level of abstraction. Chapter 8, “Viewing Transactions” describes how to display transactions along with signals and scopes in your design. Chapter 9, “Recording Transactions” describes how to collect transaction information for your design. Appendix A, “Saving and Restoring Your Configuration,” tells you how to create and use Do-Files to save and restore a particular Signalscan Waves configuration. Appendix B, “Signalscan Waves Commands,” gives the syntax of the Signalscan Waves commands that you can enter in a Do-File. Appendix C, “Hot Keys, Colors, and Buttons,” lists the Signalscan Waves keyboard shortcuts and describes how to customize the Signalscan Waves colors and button bars. June 2000 23 Product Version 6.5 Signalscan Waves User Guide 2 Invoking Signalscan Waves You can invoke Signalscan Waves from the SimControl window in the Affirma™ SimVision analysis environment or directly from your operating system. This chapter describes the methods by which you can invoke the Signalscan Waves waveform viewer, both from the Affirma SimVision analysis environment and from your operating system. This chapter contains the following sections: ■ “Automatically Restoring Your Configuration Settings” on page 25 ■ “Invoking Signalscan Waves from SimControl” on page 25 ■ “Invoking Signalscan Waves from the Operating System” on page 28 June 2000 24 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves Automatically Restoring Your Configuration Settings Regardless of the method by which you invoke Signalscan Waves, the program always tries to execute an optional Do-File, .signalscanrc, from the current directory when you first invoke it. If it cannot find a .signalscanrc file in the current working directory, Signalscan Waves looks in your home directory. If the file does not exist, Signalscan Waves starts with the default appearance and color scheme. See Appendix A, “Saving and Restoring Your Configuration,” for more information on using Do-Files to save and restore Signalscan Waves configurations. Invoking Signalscan Waves from SimControl You invoke Signalscan Waves from the SimControl window of the Affirma SimVision analysis environment by selecting the objects whose waveforms you want to view from the Signal Flow Browser and then performing one of the following operations from the SimControl window: ■ Select Wave Trace from the Source File Browser pop-up menu. Press the right mouse button in the Source File Browser window to display the Source File Browser pop-up menu, shown in Figure 2-1 on page 26, and choose the Wave Trace menu option. June 2000 25 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves Figure 2-1 Select Wave Trace from the Source File Browser Pop-Up Menu The simulator probes the selected items if it has not already done so, the Signalscan Waves Waveform window opens, and the waveforms of the selected items appear in the Waveform window, as shown in Figure 2-2 on page 27. Note: If you do not select any items in the Signal Flow Browser, the Wave Trace pop-up menu option is grayed out, and you cannot use it to invoke Signalscan Waves. ■ Choose Tools—Waveform from the SimControl main menu. June 2000 26 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves The Signalscan Waves Waveform window opens and displays the waveforms of the selected items, as shown in Figure 2-2 on page 27. Note: If you do not select any items in the Signal Flow Browser before you use the Tools—Waveform menu option, an empty Waveform window appears. ■ Click the Waveform View button. You can click the Waveform View button at the top of the SimControl, Navigator, Watch, or Signal Flow Browser window. The Signalscan Waves Waveform window opens and displays the waveforms of the selected items, as shown in Figure 2-2 on page 27. Note: If you do not select any items before you click the Waveform View button, an empty Waveform window appears. Adding New Objects to Existing Waveform Windows After you invoke Signalscan Waves using one of the above operations, a Signalscan Waves Waveform window appears, containing the waveforms of all of the items that you have selected, as shown in Figure 2-2 on page 27. Figure 2-2 Items Selected in SimControl Appear in the Waveform Window SimControl Window June 2000 Signalscan Waves Waveform Window 27 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves Once you open a Signalscan Waves Waveform window, you can use any one of the invocation operations that are listed in this section to add selected items to the open Waveform window at any time during your session. However, you must set the insertion marker (click your middle or right mouse button) in the Names pane of the open Waveform window at the location at which you want to add the new items before you perform the invocation operation. Signalscan Waves adds any new items that you select just before the insertion marker in the Waveform window. You can then use groups and comments to organize the different sets of items that you add to the Waveform window. See Chapter 5, “Defining Design Views,” for instructions on how to do this. Items that you select in any Affirma SimVision analysis environment window are also simultaneously selected (highlighted) in the Signalscan Waves Waveform window if you have previously added them to the Waveform window. Similarly, items that you select in the Names pane of the Waveform window are simultaneously selected in any Affirma SimVision analysis environment windows in which those items appear. Note: If you run a simulation for some time before you set probes on some items, and then you view those items in Signalscan Waves, values prior to the times at which you set the probes display as undefined in Signalscan Waves. Invoking Signalscan Waves from the Operating System You can enter a command line or click a desktop button to invoke Signalscan Waves directly from your operating system, without using the Affirma SimVision analysis environment. When you start Signalscan Waves from your operating system, the Waveform window appears, as it does when you use the Affirma SimVision analysis environment to start Signalscan Waves. However, if you have a standalone Signalscan license, a Control window appears from which you can connect to a simulation database file and perform other related tasks. Figure 2-3 on page 29 shows the Signalscan Waves Control window that opens when you invoke Signalscan Waves directly and you only have the standalone Signalscan Waves license. June 2000 28 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves Figure 2-3 Signalscan Control Window The following sections describe the files that you must use to invoke Signalscan Waves directly from the operating system and describe how to invoke Signalscan Waves on UNIX and Windows NT platforms. Invoking Signalscan Waves on UNIX Platforms To invoke Signalscan Waves from your UNIX command prompt, use the following command syntax: % signalscan [options ] [input_filename ...] The following sections explain the signalscan command-line options and describe the input files that you can specify with the signalscan command. Signalscan Waves Command-Line Options To see a list of the options that you can use with the signalscan command, you can, enter: June 2000 29 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves % signalscan -h Table 2-1 on page 30 describes these options: Table 2-1 Signalscan Waves Command-Line Options Option Description -analog Use the default analog configuration. The differences between this and the digital (default) configuration are as follows: ■ Analog overlay in the Design Browser is turned on by default. ■ Grid in the Waveform Window is turned on by default. ■ Default button bar configuration in the Waveform window is different. -auto Automatically convert input files to filename .dsn and filename .trn without prompting for confirmation or a new filename. -big Run the graphical user interface using larger fonts. -black or -blackwhite Display the graphical user interface in black and white. -compress Translate a VCD file to the compressed SST2 database file format. -digital Use the default configuration. -do do_filename Execute the specified Do-File. See Appendix A, “Saving and Restoring Your Configuration,” for instructions on how to create and use Do-Files. -gray or -grey Display the graphical user interface in grayscale. -h or -help Display a list of the signalscan command-line options. -hidectrlwin Hide the Control window. -noposition Do not use the windows manager’s default window position. June 2000 30 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves Table 2-1 Signalscan Waves Command-Line Options, continued Option Description -position Use the windows manager’s default window position. This is the default. -product affirma Start Signalscan Waves using the license provided with the Affirma SimVision analysis environment, rather than with a standalone Signalscan license. -sequence Translate a VCD file to the SST2 database file format with sequence information. -small Run the graphical user interface with the default font size. -sst sst2_database_name Specify the name of the output SST2 database, if you are converting a database to SST2 format. The resulting files are called sst2_database_name .trn and sst2_database_name .dsn. -stdio Read commands from the standard input in addition to accepting input from the window menus. This option is only available on UNIX systems. -v or -vers or -version Display the Signalscan Waves version number and exit. -vcd vcd_filename Specify the name of the output VCD file, if you are converting a database to VCD format. -waves Start Signalscan Waves by opening the Waveform window instead of the Control window. If you open a database, the Design Browser does not automatically open. Use the Windows menu pm tje Waveform window to open the Design Browser or any other window that you need. -x Exit Signalscan Waves after any file translation. You must also specify the -product affirma option when using the -x option. Signalscan Waves Input Files Signalscan Waves operates on SST2 database files and on Do-Files. These files are called input files , and you can specify them on the Signalscan command line, as follows: June 2000 31 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves ■ You specify a transition data file, or .trn file, as in the following example: % signalscan mydesign.trn Note: You cannot specify a .dsn file as an input file. ■ You specify a Do-File, or .do file, with the -do option, as in the following example: % signalscan -do mydesign.do ■ You can specify both a Do-File and a transition data file, as in the following example: % signalscan -do color.do -do otherpreferences.do mydesign.trn ■ You can specify a directory name, as in the following example: % signalscan waves.shm If you specify any directory name, Signalscan Waves opens all of the .trn files that it finds in that directory. ■ You can specify a VCD file, as in the following example: % signalscan mydesign.dump Signalscan Waves converts the specified VCD file into an SST2 database, so that in addition to mydesign.dump, you also have mydesign.dsn and mydesign.trn. Signalscan Waves then operates on the new SST2 database. Note: When Signalscan Waves converts a VCD file to SST2 format, some information, such as port information, is lost from the design. If you do not specify an input file on the signalscan command line, you must either choose File—Open Simulation File from the Signalscan Waves Waveform window to select and open a .trn file or choose File—Execute Do-File to select and execute a .do command file. If you do specify an input file, Signalscan Waves loads that file during startup. June 2000 32 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves Table 2-2 on page 33 describes the input files that Signalscan Waves uses. Table 2-2 Signalscan Waves Input Files Filename Suffix Description .dsn Contains the symbol and scope information for a design. Signalscan Waves uses this file to view all simulations of the design. This file must be in the same directory as the corresponding .trn file that you specify with the signalscan command. A .dsn file and its corresponding .trn file comprise an SST2 database . Note: Signalscan Waves creates and uses .dsn files automatically. You cannot specify .dsn files with the signalscan command. .trn Contains all of the transition (event) data for a given simulation. This is the input file that you specify with the signalscan command. .do Contains a snapshot of a Signalscan Waves session. This type of file is called a Do-File. A Do-File is a text file that contains Signalscan Waves commands. See Appendix B, “Signalscan Waves Commands,” for information on the commands that you can use in Signalscan Waves Do-Files. You can use a Do-File to run Signalscan Waves with a particular configuration. See Appendix A, “Saving and Restoring Your Configuration,” for information on how to use Do-Files to create and use custom Signalscan Waves configurations. Invoking Signalscan Waves on Windows Platforms You can use any of the following methods to invoke Signalscan Waves on Windows 95, Windows 98, or Windows NT: ■ Double-click on a .trn file. ■ Select the Signalscan Waves version that you want to use from the Signalscan Waves Waves program group on your Windows Start menu. ■ Enter signalscan at the command prompt. You must enter the entire pathname to the executable if you have not updated your PATH environment variable. June 2000 33 Product Version 6.5 Signalscan Waves User Guide Invoking Signalscan Waves Initial Signalscan Waves Windows When you start Signalscan directly from your operating system, your initial Signalscan display differs depending on which Signalscan product you invoke and whether you specify input files with your signalscan command, as follows: ■ Signalscan Waves If your copy of Signalscan Waves came with your copy of the Affirma™ SimVision analysis environment and you do not have a separate Signalscan Waves license, then the Waveform window opens when you invoke Signalscan Waves, as described previously in this chapter. See Chapter 4, “The Waveform Window,” for more information on the Waveform window. If you did not specify a database input file on the command line, an empty Waveform window appears, and you must select File—Open Simulation File to open a database and display it in the Waveform window. You can then select Windows—Design Browser from the main menu bar to open the Design Browser to navigate your design and add signals to the Waveform window. See Chapter 3, “Navigating Through Your Design,” for information about the Design Browser. ■ DAI Signalscan Waves If you have used previous versions of Signalscan, you may have a Signalscan Waves license separate from your Affirma SimVision analysis environment license. In this case, the Signalscan Waves Control window opens when you invoke Signalscan Waves, as shown in Figure 2-3 on page 29. See your existing DAI Signalscan User’s Guide for more information on how to use this window. June 2000 34 Product Version 6.5 Signalscan Waves User Guide 3 Navigating Through Your Design You use the Signalscan Waves Design Browser, shown in Figure 3-1 on page 36, to navigate your design hierarchy within Signalscan Waves. As you traverse your design hierarchy in the Design Browser, you can: ■ Group objects to organize them in the Design Browser window. ■ Create busses within your design. ■ Select objects in the Design Browser window and display their waveforms in the Waveform window. This chapter describes the features of the Design Browser window, and explains how to define busses using bus templates in the Design Browser, and how to select objects in the Design Browser to organize them in the Design Browser window and to display them in the Waveform window. This chapter contains the following sections: ■ “Traversing Your Design Hierarchy” on page 36 ■ “Creating Busses with Bus Templates” on page 43 ■ “Displaying Waveforms” on page 45 June 2000 35 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design Traversing Your Design Hierarchy The Design Browser window, shown in Figure 3-1 on page 36, lets you view the instances and variables that make up your design at any hierarchical level. In the Design Browser window, you can easily select and view different hierarchical levels, or scopes , in your design, and you can select and group objects in each scope, so that you can analyze them in the Waveforms window. You can select different scopes from the current scope, from the list of previously selected scopes, and from the bookmarks list. You can also use filter options to focus on specific data in a scope, and you can open multiple Design Browser windows to view objects simultaneously at different hierarchical levels. Figure 3-1 Design Browser Window Current File Drop-Down List Current Instance Drop-Down List Bookmarks Drop-Down List Button Bar Groups Drop-Down List Instances Pane To Add Pane Variables Filter Field Variable Type Buttons Instances Filter Field Bus Templates Field Variables Pane You generally use the Design Browser to traverse your design hierarchy as follows: ■ To descend a level in the design hierarchy, click on an instance name in the Instances pane. This changes the current scope to the selected instance, bringing you down one June 2000 36 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design level in the design hierarchy. The Design Browser now displays the scopes and variables in the instance that you selected. ■ ■ To ascend a level in the design hierarchy, you can do one of the following: ❑ Choose Control—CD..(UpScope) from the menu bar. ❑ Click the CDUpScope button on the button bar. ❑ Click your right mouse button anywhere in the Instances pane To return to a previously browsed level in the design hierarchy, select the bookmark that you created when you browsed that scope. To create a bookmark, press Control-k or choose Edit—Create—Bookmark . To select the bookmark, click on the arrow to the right of the Bookmarks field, and then click on the scope that you want to view from the drop-down list. See “Bookmarks Field and Drop-Down List” on page 40 for more information on creating and using bookmarks. As you traverse through the design hierarchy, the Current Instance field at the top of the Design Browser window updates to show the full hierarchical path of the current scope, and the Instances and Variables panes update to show the instances and variables that are in the current scope. In addition to moving up and down the design hierarchy in steps, you can use the following features of the Design Browser window to quickly view any scope, variable, or instance in any design source file: ■ Current File Field and Drop-Down List Displays the name of the design file that you are currently browsing and lets you choose a new design file to view in the Design Browser. ■ Current Instance Field and Drop-Down List Displays the name of the current design scope (or displays no text if you are at the top level of your design hierarchy) and lets you choose a new scope to display in the Design Browser. ■ Bookmarks Field and Drop-Down List Lets you view any scope that you have previously bookmarked. (See “Bookmarks Field and Drop-Down List” on page 40 for instructions on how to create and use bookmarks.) ■ Instances Pane Displays the names of the modules that are instantiated in the current scope. ■ Instances Filter Field June 2000 37 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design Lets you filter the list of instances that appears in the Instances pane. ■ Variables Pane Displays the variables in the current scope. ■ Nodes/Variables Filter Field Lets you filter the list of variables that appears in the Variables pane. ■ Variable Type Buttons Let you filter the list of variables that appears in the Variables pane to only display specific types of variables. ■ Groups Field and Drop-Down List Displays the group to which you are currently adding selected objects and lets you choose a new group and add selected objects to it. ■ To Add Pane Displays the objects that you have selected but have not yet added to the Waveform window. Current File Field and Drop-Down List The Current File field displays the name of the SST2 database that you are currently browsing. You can browse a different database by clicking on the arrow to the right of the Current File field and selecting a database file from the drop-down list. You can also enter a database filename in the Current File text field to view any simulation file, regardless of whether it is currently open. If you enter the name of an unopened file in this field, Signalscan Waves asks you to confirm that you want to open the file, as shown in Figure 3-2 on page 39. June 2000 38 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design Figure 3-2 Open Simulation File Confirmation Current Instance Field and Drop-Down List The Current Instance field displays the name of the instance whose scope you are currently browsing. You can enter the hierarchical path to a specific instance in the Current Instance field to set the scope to that instance. You can also go directly to any one of the last ten scopes in which you selected objects and added them to the To Add Pane by clicking on the arrow to the right of the Current Instance field and selecting the desired scope from the drop-down list. By default, the scope history in the Current Instance drop-down list does not include references to the simulation files that contain the scopes in the list. This means that if the current simulation file changes, and you choose a previous scope that you visited in another file, Signalscan Waves checks to see if the previous scope path exists in the current file. If the path exists in the new design, the scope path remains the same, but you view it under the new design. If the path does not exist in the new design, Signalscan Waves sets the scope to the top level of the new design. You can choose to save the references from the scopes that you visit to the design files that contain them by changing a preference. To do this, choose Options—Define Preferences . The Define Preferences form appears, as shown in Figure 3-3 on page 40. June 2000 39 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design Figure 3-3 Define General Preferences Form Click the General button and select the Include File Name With Scope History option to save the references to the simulation files that contain the scopes that you visit within your scope history. Bookmarks Field and Drop-Down List The Bookmarks drop-down list contains the name of the scopes that have bookmarked. You can go directly to any scope that you have bookmarked in the current design file by clicking June 2000 40 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design the arrow to the right of the Bookmarks field and selecting the desired scope name from the drop-down list of bookmarked scopes. To create a bookmark for the current scope, press Control-k or choose Edit—Create—Bookmark . By default, this menu command creates a bookmark that includes the current scope and the current simulation file. To save only the scope name without the design file, choose Options—Define Preferences . The Define Preferences form appears, as shown in Figure 3-3 on page 40. Click the General button and select the Include File Name With Bookmarks option to bookmark scope names, but not simulation filenames. To edit the bookmark list, choose Options—Define Bookmarks . The Define Bookmarks form appears, as shown in Figure 3-4 on page 41. Figure 3-4 Define Bookmarks Form Instances Pane and Instances Filter Field The Instances pane displays the names of the modules that are instantiated in the current scope. June 2000 41 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design You can enter a regular expression in the Instances Filter field to filter the list of instances that appears in the Instances pane. If you enter an expression in this field, only those instance names that match the expression appear in the Instances pane. The asterisk character (*) is a wild card that matches zero or more characters; it is also the default filter and causes all instances to be displayed. The question mark character (?) matches any single character. Variables Pane, Nodes/Variables Filter Field and Variable Type Buttons The Variables pane lists all of the available (probed/recorded) objects that are in the current instance. You can enter a regular expression in the Nodes/Variables Filter field to filter the list of variables that appears in the Variables Pane. If you enter an expression in this field, only those variable names that match the expression appear in the Variables pane. The asterisk character (*) is a wild card that matches zero or more characters; it is also the default filter and causes all variables to be displayed. The question mark character (?) matches any single character. You can also use the Variable Type buttons to filter the list of variables that appears in the Variables Pane. Press these buttons to display only inputs, outputs, inouts, or non-port variables. Groups Field and Drop-Down List The Groups field displays the name of the group to which you are currently adding any objects that you select. When you click on the To Add Pane, the objects that you select to add to a group automatically appear at the insertion point. You can click on the arrow to the right of the Groups field and select a group name from the drop-down list of existing groups to begin adding selected items to a new group. See “The Button Bar” on page 65 and “Using Overlay Groups with Analog Signals” on page 133 for more information on creating and using groups. To Add Pane The To Add Pane displays the objects that you have selected and added to the current group, but have not yet added to the Waveform window. To add a new object to a group: 1. Select the group from the Groups drop-down list at the top of the To Add pane. June 2000 42 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design 2. Use your right mouse button to position the insertion marker in the To Add Pane. Objects will be added at that position in the list. 3. Select the objects from the Variables pane that you want to add to the group. Objects are added to the To Add pane as soon as you click on them in the Variables pane. To add an object from the To Add pane to the Waveform window, click the AddToWave button on the button bar or choose Control—Add Variables or Control—Add Variables and Close Window. Creating Busses with Bus Templates You can use the Design Browser to create busses based on Bus Templates that you define. Bus templates let you collapse objects that have similar names into user-defined busses. This feature is most useful when you are looking at a synthesized schematic, in which a bus has been broken into scalar signals by the synthesis tool. To define a bus template, you enter the command syntax described in the next section in the Bus Templates field in the Design Browser. (See Figure 3-1 on page 36 for an illustration of the Bus Templates field.) Bus Template Syntax Table 3-1 on page 43 describes the syntax that you use to create Bus Templates. In this table, x and y are any positive integral values. Unless otherwise specified, busses are created in ascending order. Table 3-1 Bus Template Syntax Syntax Description busname [x :y ] Generates a bus with a range of x to y. The bus can be in either ascending or descending order, depending on whether x is less than or greater than y. busname [*<x ] Finds consecutive bits less than x and creates a bus in ascending order. busname [*>x ] Finds consecutive bits greater than x and creates a bus in descending order. June 2000 43 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design Table 3-1 Bus Template Syntax, continued Syntax Description busname [x :*] Creates a bus in ascending order from x to the highest contiguous signal available. busname [*<*] Collapses all signals that have a name of the form busname followed only by digits. or busname * busname [*>*] Creates all busses in ascending order. Collapses all signals that have a name of the form busname followed only by digits. Creates all busses in descending order. * or * [*:*] *[*>*] Creates all possible busses for signals that satisfy the Bus Template rules. Creates all busses in ascending order. Creates all possible busses for signals that satisfy the Bus Template rules. Creates all busses in descending order. !busname [x :y ] Prevents the use of the specified bits in the creation of busses. This option must be preceded by one or more of the above-mentioned Bus Template options, and must be separated from the previous option by a space. Note: You can use multiple expressions to describe the Bus Template search pattern. To do so, separate the expressions with spaces. Bus Template Examples Assume that a scope of a design consists of only the following objects: mybus1, mybus2, mybus3, mybus4, mybus5, mybus6, mybus7, mybus8, mybus9, and mybus10. If you type the following text in the Bus Templates field in the Design Browser window: mybus[1:10] !mybus[4] The following busses are created: mybus[1:3] mybus[5:10] June 2000 44 Product Version 6.5 Signalscan Waves User Guide Navigating Through Your Design If you type the following text in the Bus Templates field: *[*:*] The following bus is created: mybus[1:10] Displaying Waveforms You can use the Design Browser to add objects to the Waveform window for further analysis. This section describes how to select and organize objects in the Design Browser and display them in the Waveform window. Displaying All Probed Objects To add to the Waveform window all of the objects in the current design that have been probed, perform the following steps: 1. In the Instances pane of the Design Browser, make sure you are at the top of your design hierarchy. (The Current Instance field should be empty.) Use the hierarchy traversal methods that are described above to return to the top scope if you are not already there. 2. Click the GetDeepAll button on the Design Browser button bar. This retrieves all of the variables at all of the different levels of your design, from the current scope down to the lowest-level scope. 3. Click the AddToWave button on the Design Browser button bar. The Waveform window opens if it was not already open. The names of the objects that you probed appear in the Names pane of the Waveform window, and their waveforms are displayed in the Waveform pane. Displaying Selected Objects You can also use the Design Browser to add only selected or groups of objects to the Waveform window. See “The Button Bar” on page 65, “Adding Objects to a Group from the Design Browser” on page 96, and “Using Overlay Groups with Analog Signals” on page 133 for instructions on how to group objects and add them to the Waveform window. June 2000 45 Product Version 6.5 Signalscan Waves User Guide 4 The Waveform Window The Waveform window is the first window that appears when you start Signalscan Waves. The Waveform window is the central Signalscan Waves window, from which you perform all of your waveform viewing and debugging tasks. This chapter describes how to use the Waveform window to find signals and events (where an expression is true), place time markers, rearrange signals, view Sequence Time, define busses, define mnemonics, and print waveforms. This chapter discusses the following topics: ■ “Overview of The Waveform Window” on page 47 ■ “The Waveform Pane” on page 48 ■ “The Time Status and Times Panes” on page 54 ■ “The Multi-List Pane” on page 58 ■ “The Names Pane” on page 60 ■ “The Button Bar” on page 65 ■ “The Menu Bar” on page 65 ■ “Defining and Using Events” on page 96 ■ “Defining and Using Busses” on page 99 ■ “Using the Signalscan Waves Cause Finder” on page 102 ■ “Defining and Using Constants and Expressions” on page 105 ■ “Defining and Using Mnemonics” on page 107 ■ “Viewing Waveforms in Sequence Time” on page 112 ■ “Viewing Multi-Dimensional Objects” on page 114 ■ “Printing the Waveform Window” on page 117 June 2000 46 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Overview of The Waveform Window The Waveform window displays the values of objects you select from your simulation so that you can analyze and debug the design. You can monitor the progress of a simulation by looking at the objects as the simulation runs, or you can open a database from a previous simulation and view objects at specific times during that simulation. See Chapter 2, “Invoking Signalscan Waves,” for more information on starting Signalscan Waves to view previous and current simulations in the Waveform window. The Waveform window allows you to view the results of multiple simulations from the same or different simulators all in the same window. The Waveform window displays signal values and strengths as well as Sequence Time. You can even view analog and digital waveforms within the same window. Figure 4-1 on page 47 shows the main features of the Waveform window. Figure 4-1 Waveform Window Menu Bar Button Bar Time Status Pane Times Pane Names Pane Multi-List Pane Waveform Pane Horizontal Resize Bars June 2000 47 Product Version 6.5 Signalscan Waves User Guide The Waveform Window For more information on these features, see: ■ “The Waveform Pane” on page 48 ■ “The Time Status and Times Panes” on page 54 ■ “The Names Pane” on page 60 ■ “The Multi-List Pane” on page 58 The Waveform Pane The Waveform pane displays the waveforms of the objects listed in the Names pane. Note: If you open Signalscan waves or add items to the Waveform window after the simulation has run for some time, values prior to that time are undefined. Viewing Signals in the Waveform Pane You can use the Waveform pane to view the waveforms of any signal that you have probed or are currently probing at any specific simulation time or signal value change. You can move forwards or backwards between simulation times and signal value changes in the Waveform pane in any one of the following ways: ■ You can use the scrollbars in the Waveform pane to scroll through the pane either vertically or horizontally. Click beside the slider in a scrollbar to move one screen width or one screen height. Use the arrows in the scrollbars for smooth scrolling. ■ You can use Cursor1 and Cursor2 to adjust your view of the Waveform pane. If you double-click in the Waveform pane, both the TimeA marker and Cursor1 move to the location that you double-clicked. ■ You can use Cursor1 to adjust the center position of the Waveform pane. To do this, position Cursor1 at the time at which you want to center the view, and then choose View—Center On Cursor1 (Control-t) from the main menu. Signalscan Waves scrolls the Waveform pane so that Cursor1 is displayed at the center. ■ You can define your own markers to quickly view your waveforms at any simulation time. Markers are vertical lines in the Waveform pane that have labels (names and simulation times) associated with them in the Times pane. See “Defining and Using Custom Markers in the Waveform Pane” on page 53 for instructions on how to define markers and use them to move through a simulation. ■ You can define events to quickly move to the next simulation time at which a particular set of objects has a particular set of values. An event is a definition of values for a June 2000 48 Product Version 6.5 Signalscan Waves User Guide The Waveform Window collection of objects. See “Defining and Using Events” on page 96 for instructions on how to create events and use them to move through a simulation. ■ You can select one or more objects in the Names pane, and then choose Control— Variable Change—Previous (Control-v) or Control—Variable Change—Next (Control-n) from the main menu. The Waveform pane scrolls to the previous or next value change for any of the selected objects, and Cursor1 moves to that simulation time. ■ You can select Markers or Events from the drop-down list at the top of the Multi-List pane and then select a particular marker or event in the list. If you select a marker, the Waveform pane scrolls horizontally to that marker, and Cursor1 moves to that simulation time. If you select an event, the Waveform pane scrolls horizontally to the next occurrence of that event and Cursor1 moves to that simulation time. ■ You can select Groups from the drop-down list at the top of the Multi-List pane and then select the name of a group from the list. A group is a collection of objects that are displayed together in the Waveform pane. Both the Names pane and the Waveform pane scroll vertically to show the group that you select in the Multi-List pane. Using the Predefined Markers in the Waveform Pane The Waveform pane contains three predefined markers that appear in the pane by default. These markers help you to move through your simulation quickly and easily, and they also help you to perform certain operations on your waveforms, such as performing analog measurements. The three predefined markers that appear in the Waveform pane are: ■ TimeA ■ Cursor1 ■ Cursor2 The following sections show you how to use the three predefined markers to move through your simulation and perform operations on your waveforms. Using the TimeA Marker The TimeA marker synchronizes the Waveform window and the Register window at the same simulation time value. When you explicitly set TimeA, the values of the objects that are displayed in the Names pane and the values of the objects that are displayed in Register windows are the values that those objects have at TimeA. When you change the value of TimeA, if you are running Signalscan Waves in post-simulation mode, using a database that you created for a previous simulation, the Waveform pane simply June 2000 49 Product Version 6.5 Signalscan Waves User Guide The Waveform Window scrolls to show the simulation as it appears at TimeA, as described above. However, if you are running Signalscan Waves interactively with the simulator and you reset TimeA, the Waveform window shows only the signal values at the new TimeA, and the waveforms no longer update as the simulation runs. To return to interactive mode, in which the waveforms update continually as the simulation runs, choose Control—Define Mode Interactive . For more information on running Signalscan Waves in interactive mode, see “Interactive Mode” on page 57. To change the value of TimeA for all Signalscan Waves windows, you can do any of the following: ■ Double-click or double-click and drag your left mouse button in the Waveform pane. This also sets Cursor1. ■ Press and drag your left or middle mouse button on the TimeA label or arrow in the Times pane of the Waveform window. ■ Go to the previous or next value change of an object. This also sets Cursor1. ■ Edit the TimeA field in the Register window. See “TimeA Marker” on page 56 for an example of using the TimeA marker in the Register window. Using Cursor1 and Cursor2 You use the Cursor1 and Cursor2 markers in the Waveform pane to temporarily mark simulation times and events, so that you can perform operations such as zooming in and out and performing measurements at specific points in your simulation. For example, you can use Cursor1 and Cursor2 to measure the time between transitions, expand the events that occur at a Sequence Time at Cursor1, or zoom between cursors. You can even use Cursor1 and Cursor2 to make various analog measurements. See “Performing Measurements on Analog Signals” on page 146 for instructions on how to do this. Setting Cursor1 You can set Cursor1 to a specific simulation time, to the next or previous value change on an object, or to a specific predefined event. To set Cursor1 to a specific simulation time, you can do either of the following: ■ Click or click and drag your left mouse button in the Waveform pane. Cursor1 moves to the point at which you release the mouse button. ■ Click and drag your left or middle mouse button on the Cursor1 label in the Times pane. Cursor1 moves to the time at which you release the mouse button. June 2000 50 Product Version 6.5 Signalscan Waves User Guide The Waveform Window To set Cursor1 to the next or previous value change on a signal, you perform the following steps: 1. In the Names pane, select the name of the signal along which you want to move Cursor1. 2. Choose Control—Variable Change—Next (Control-n) or Control—Variable Change—Previous (Control-v). Cursor1 moves to the next or previous value change on the selected signal. To set Cursor1 to the next or previous occurrence of an event, perform the following steps: 1. Choose Events from the drop-down list at the top of the Multi-List pane. 2. Click the >> (forward) or << (backward) button to the right of the label Events to set the event search direction, or choose Control—Define Event Search Direction from the main menu. 3. In the Multi-List pane, click on the event that you want to see. The Waveform pane scrolls to that event and Cursor1 is set to that event time. Setting Cursor2 To set Cursor2, you can do either of the following: ■ Click or click and drag your middle mouse button in the Waveform pane. Cursor 2 moves to the point at which you release the mouse button. ■ Click and drag your left or middle mouse button on the Cursor2 label in the Times pane. Cursor2 moves to the time at which you release the mouse button. Moving Cursors to the Nearest Value Change If you want Cursor1 and Cursor2 to move to the nearest value change when you click your right or middle mouse button in the Waveform pane, perform the following steps: 1. Choose Options—Define Preferences from the main menu. The Define Preferences form appears, as shown in Figure 4-2 on page 52. June 2000 51 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-2 Define Preferences - Waveforms 2. At the top of the Define Preferences form, click the Waveforms button. 3. Make sure the Snap Cursor To Signal Transition preference is selected. 4. Click OK to apply the change and dismiss the form. June 2000 52 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Defining and Using Custom Markers in the Waveform Pane User-defined markers appear as vertical lines in the Waveform pane, with the user-defined marker name and time at the top of the marker. A user-defined marker is a type of bookmark that you can place at any time in your simulation and give any name you like. You use markers to mark the times in your simulation to which you want to be able to move quickly from any other point in the simulation. To create a user-defined marker, choose Edit—Create—Marker (Control-m) from the Waveform window main menu. The Create Marker form appears showing the Cursor1 time as the default marker time, as shown in Figure 4-3 on page 53. Figure 4-3 Create Marker Form Use the Create Marker form to specify the name of your new marker and the time at which you want to place the marker. Then click OK. The marker appears in the Waveform pane at the time that you specify. To scroll the Waveform pane to display a particular marker, choose Markers from the dropdown list in the Multi-List pane, and then click on the name of the desired marker. To delete a marker, click on the name of the marker in the Multi-List pane to select it, and then click the Delete button or choose Edit—Delete from the main menu. June 2000 53 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Using the Zooming Features of the Waveform Window In addition to letting you move between simulation times and events, the Waveform window also supports a variety of commands that let you zoom in and out on portions of the waveform. The button bar contains the buttons ZoomInX , ZoomOutX , and ZmOutXFull . The ZoomInX and ZoomOutX buttons expand or contract the view by a factor of two while retaining the center point of the Waveform pane. ZmOutXFull zooms out until it fits the entire simulation in the Waveform pane. The above zoom commands also appear on the View menu. To zoom in, select View— Zoom—In (Control-i). Signalscan Waves increases the magnification of the waveforms in the Waveform pane by a factor of two. To zoom out, select View—Zoom—Out (Control-o). Signalscan Waves reduces the magnification of the waveforms in the Waveform pane by a factor of two. To zoom out enough to see the whole simulation in the Waveform pane, choose View—Zoom—Out Full (Control-f). Signalscan Waves shrinks the start and end times to fit the entire simulation into the Waveform pane. In addition to the zoom features that appear on the Waveform window button bar, there is one zoom feature that you can only use from the View menu. You can fit a particular view into the Waveform pane by positioning Cursor1 and Cursor2 on the boundaries of the view that you want to isolate, and then either clicking your right mouse button or choosing View—Zoom— Between Cursors (Control-z). Signalscan Waves resizes the area between Cursor1 and Cursor2 to fit the entire Waveform pane. The Time Status and Times Panes The Time Status pane, shown in Figure 4-4 on page 54, shows the time value of the TimeA marker, the simulation end time, and the difference in time between the Cursor1 and Cursor2 markers. Figure 4-4 The Times Status Pane Time Status Pane June 2000 54 Product Version 6.5 Signalscan Waves User Guide The Waveform Window The Times pane, shown in Figure 4-5 on page 55, displays the simulation time in regular increments and contains labels at the tops of the marker lines for TimeA, Cursor1, Cursor2, and user-defined markers. Figure 4-5 The Times Pane Times Pane To change the time units that are used in the Times pane, choose Options—Define Preferences , and then click the Time Units button on the Define Preferences form that appears, as shown in Figure 4-6 on page 56. Select your desired time units and then click OK to apply the change and exit the form. June 2000 55 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-6 Define Preferences - Time Units TimeA Marker The TimeA marker synchronizes the Waveform window and the Register window at the same simulation time value. When you explicitly set TimeA, then the values of the objects displayed in the Names pane and the values of objects displayed on register pages are the values that those objects have at TimeA. June 2000 56 Product Version 6.5 Signalscan Waves User Guide The Waveform Window See also “TimeA Field” on page 123. To change TimeA for all Signalscan Waves windows, do any of the following: ■ Double-click or double-click and drag your left mouse button in the Waveform pane. This also sets Cursor1. ■ Press and drag your left or middle mouse button on the TimeA label or arrow in the Times pane of the Waveform window. ■ Go to the previous or next value change of an object. This also sets Cursor1. See “Moving Cursors to the Nearest Value Change” on page 51. ■ Edit the TimeA field directly in the Register window. See “TimeA Field” on page 123. Interactive Mode If you are running Signalscan Waves interactively with the simulator and you reset TimeA, the Waveform window is fixed on the new TimeA and the waveforms no longer update as the simulation runs. To return to interactive mode, where the waveforms update continually as the simulation runs, select Control—Define Mode Interactive . For more information, see “Using the Define Mode Interactive Option” on page 124. Cursor1 and Cursor2 Markers Cursor1 and Cursor2 are used as temporary markers for operations such as zooming and performing measurements. For example, you can use Cursor1 and Cursor2 to measure the time between transitions, expand Sequence Time at Cursor1, or zoom between cursors. Moving Cursor1 To move Cursor1 to a user-selected time, do either of the following: ■ Click or click and drag your left mouse button in the Waveform pane. ■ Press and drag your left or middle mouse button on the Cursor1 label in the Times pane. To move Cursor1 to the next or previous change of an object: 1. Select the object name in the Names pane. 2. Select Control—Variable Change—Next (Control-n) or Control—Variable Change—Previous (Control-v). June 2000 57 Product Version 6.5 Signalscan Waves User Guide The Waveform Window To move Cursor1 to the next or previous occurrence of an event: 1. Select Events from the drop-down list at the top of the Multi-List pane. 2. Click the >> or << button to the right of the label “Events” to set the event search direction, or select Control—Define Event Search Direction . 3. In the Multi-List pane, click on the event you want to find. The Waveform pane scrolls to that event, and Cursor1 is set to that event time. Moving Cursor2 To move Cursor2, do either of the following: ■ Click or click and drag your middle mouse button in the Waveform pane. ■ Press and drag your left or middle mouse button on the Cursor2 label in the Times pane. Snapping to Transition If you want Cursor1 and Cursor2 to snap to the nearest transition when you click your right or middle mouse button in the Waveform pane: 1. Select Options—Define Preferences . 2. At the top of the Define Preferences form that displays, click on the Waveforms button. 3. Make sure the Snap Cursor To Signal Transition preference is selected. The Multi-List Pane The Multi-List pane, shown in Figure 4-7 on page 59, displays the groups, markers, and events that you define in the Waveform window. June 2000 58 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-7 The Multi-List Pane Multi-list Pane Drop-down list You can click on the down arrow in the top right corner of this pane, to display a drop-down list. Click on an item in the drop-down list to change the display in the Multi-List pane to show a list of the Groups , Markers , or Events that are currently defined for your simulation. When you display Groups in the Multi-List pane, you can scroll the Names pane and the Waveform pane vertically to show any group by clicking on the name of that group in the MultiList pane. See “The Button Bar” on page 65 for more information on grouping signals and viewing those groups in the Waveform window. When you display Markers in the Multi-List pane, you can scroll the Waveform pane horizontally to show any marker by clicking on the name of the marker in the Multi-List pane. See “Defining and Using Custom Markers in the Waveform Pane” on page 53 for instructions on how to create and use markers to move quickly through a simulation. When you display Events in the Multi-List pane, you can search forward or backward in the Waveform pane for the next occurrence of an event by clicking on the name of that event in the Multi-List pane. The Waveform pane scrolls to display the event that you click in the MultiList pane, and Cursor1 moves to that simulation time. To change the search direction, click on the >> or << button to the right of the label Events or choose Control—Define Event Search Direction from the Waveform window main menu. See “Defining and Using Events” on page 96 for more information about creating events and using them to move quickly through a simulation in the Waveform window. June 2000 59 Product Version 6.5 Signalscan Waves User Guide The Waveform Window The Names Pane The Names pane, shown in Figure 4-8 on page 60, displays the names and values of the objects that you display in the Waveform window. Figure 4-8 The Names Pane Names Pane In the Names pane, you can: ■ Select objects on which you want to operate. See “Selecting Objects in the Names Pane” on page 61 for instructions on how to select different combinations of objects in the Names pane. ■ Move objects around in the Names pane. See “Select, Move, and Copy in the Names Pane” on page 62 for instructions on how to do this. ■ Add and delete objects in the Names pane. See “Adding or Deleting Objects in an Event” on page 98 for instructions on how to do this. ■ Reorder and reorganize objects. See “Reordering Objects in the Names Pane” on page 63 for instructions on how to do this. ■ Organize objects into groups. See “Defining and Using Groups” on page 95 for instructions on how to create and use groups of objects. June 2000 60 Product Version 6.5 Signalscan Waves User Guide The Waveform Window ■ Change the format of either the name or the value of an object. See “Format Menu” on page 87 for instructions on how to do this. ■ Change the height of an analog object. See “Changing the Height of an Analog Object in the Names Pane” on page 64 for instructions on how to do this. ■ Add comments to the Names pane. See “Adding Comments to the Names Pane” on page 63 for instructions on how to do this. ■ Add constants and expressions to the Waveform window. See “Defining and Using Constants and Expressions” on page 105 for instructions on how to do this. ■ Search for specific objects. See “Searching for Objects in the Names Pane” on page 63 for instructions on how to do this. ■ Change the relative width of the Names pane. See “Selecting Objects in the Names Pane” on page 61 for instructions on how to do this. By default, objects in the Names pane are displayed as simply the local object name with the value at Cursor1. Use the Format menu to add or remove any combination of the filename, path name, or full design hierarchy name to all object names in the Names pane. (See “Format Menu” on page 87 for instructions on how to do this. The display value of an object indicates the variable radix, the strength of the object, and whether the value is inverted or shifted. Analog objects also have a units specifier and a height bracket (see “Changing the Height of an Analog Object in the Names Pane” on page 64). The Names pane contains a horizontal yellow line called the insertion marker. Objects that you paste, move, or duplicate are added at the insertion marker. Selecting Objects in the Names Pane You can cut, copy, paste, delete, move, or duplicate an object in the Names pane (Edit menu). You can re-order a set of objects (Edit menu). You can change a group name or a bus name (Edit—Modify ). You can add the drivers and module inputs of an object to the Names pane (Control menu). You can expand a bus and overlay or stack analog objects (Edit menu). You can show the strength of an object (Format—Show Strength ). For these operations and many others, you first need to select one or more object names in the Names pane. Table 4-1 on page 62 describes how to select any set of objects. (See also June 2000 61 Product Version 6.5 Signalscan Waves User Guide The Waveform Window “Adding New Objects to Existing Waveform Windows” on page 27.) This table also describes how to use your mouse to move or copy objects or groups and to move the insertion marker. Table 4-1 Select, Move, and Copy in the Names Pane Operation Action Select one object or group Click your left mouse button on the object or group name. Select a contiguous range of objects or groups Press your left mouse button on an object or group name, drag the mouse pointer through a range of names, and then release the mouse button. If you started by selecting an object name, then only object names are selected, even if you drag over a group name. Extend the selected range from the previous selected object Click your left mouse button on one object name. Hold down the Shift key and click on another object name. The two objects you clicked on and all objects between those two are selected, even if they are in different groups. Select a non-contiguous set of objects or groups Hold down the Control key while you click your left mouse button on the objects you want to select. De-select all objects or groups that are currently selected Click your left mouse button on any object or group that is currently selected. All are de-selected. De-select some but not all objects or groups that are currently selected Hold down the Control key and click your left mouse button on the objects or groups you want to de-select. Select all objects Select Edit—Select All . Move the insertion marker Click either your middle or right mouse button where you want to position the insertion marker. Move an object or group Press your middle or right mouse button on the object or group name, drag the object or group to a new position, and release the mouse button. The insertion marker is repositioned immediately below the moved object or group. See also Move alternatives on page 63. Move multiple objects or groups Select a set of objects or groups as described above in this table, press your middle or right mouse button on any of the selected names, drag the mouse pointer to the new position, and release the mouse button. See also Move alternatives below. June 2000 62 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Table 4-1 Select, Move, and Copy in the Names Pane, continued Operation Action Move alternatives Select the objects you want to move, position the insertion marker where you want to move the objects, and click the Move button or select Edit—Move . Or, select the objects you want to move, click the Cut button or select Edit—Cut , position the insertion marker, and click the Paste button or select Edit—Paste . Copy objects or groups Same as Move described above, except hold down the Shift key while you press the middle or right mouse button. Alternatively, use Copy and Paste buttons or Edit menu options. Reordering Objects in the Names Pane You can re-order or reorganize objects in the Names pane by moving them around with your mouse as described in Table 4-1 on page 62, by using the Cut and Paste options on the Edit menu, and by using the Sort and Reverse options on the Edit menu. ■ Edit—Paste . The set of objects that was operated on the last time you selected Edit— Copy or Edit—Cut is pasted at the insertion marker. ■ Edit—Sort . The selected objects are sorted alphabetically by object name. They are not moved but are sorted in place. Objects that are not selected are not affected, even if a non-contiguous set is selected. ■ Edit—Reverse . The selected objects are displayed in reverse order in the Names pane (the opposite order in which they are currently displayed). They are not moved but are re-ordered in place. Objects that are not selected are not affected, even if a noncontiguous set is selected. Searching for Objects in the Names Pane Choose Edit—Find and Edit—Find Next from the Waveform window main menu to search for an object name in the Names pane. Adding Comments to the Names Pane Use comments in the Names pane to help organize and annotate the sets of objects in the Waveform window. June 2000 63 Product Version 6.5 Signalscan Waves User Guide The Waveform Window 1. Position the insertion marker. 2. Select Edit—Create—Comment . 3. Enter the text of your comment in the form that is displayed, and click the OK button, as shown in “Create Comment Form” on page 64. Figure 4-9 Create Comment Form To change a comment, first select the comment in the Names pane, and then select Edit— Modify. Changing the Height of an Analog Object in the Names Pane A ] (closed bracket symbol) appears to the right of the object name for analog objects. You can drag the bracket to change the display of an analog object. To change the height of an analog waveform: 1. Move your cursor over the top or bottom of the height bracket to the right of the object name. The cursor changes to a double-headed vertical arrow. 2. While the cursor is a double-headed arrow, press your left mouse button and drag the bracket up or down to the desired height. When you release the mouse button, the waveforms and the grid underlying the waveforms (if any) compress or expand to fit the new height. June 2000 64 Product Version 6.5 Signalscan Waves User Guide The Waveform Window See Chapter 6, “Analog Analysis,” for more information on special Signalscan Waves features for analog objects. Changing the Names Pane Width To change the width of the Names pane: 1. Position your mouse pointer between the Names pane and the Waveform pane (see the “Horizontal Resize Bar” in Figure 4-1 on page 47) so that the mouse pointer looks like a double-headed horizontal arrow with a vertical line in the middle of it. 2. Press your left mouse button and drag it horizontally. To save this change, select Names pane Percentage from the Preferences list when you save a Do-File. See Appendix A, “Saving and Restoring Your Configuration,” for more information on saving Do-Files. The Button Bar The button bar provides quick access to menu commands. For example, clicking the Undo button is the same as selecting Edit - Undo from the pulldown menu. Figure 4-10 Button Bar Button Bar The number of buttons visible in the button bar is dependent on the size of the window. Figure 4-10 on page 65 shows a relatively small window with only eight buttons visible. Use the Options - Define Buttons menu choice to change or reorganize the buttons. See “Custom Buttons” on page 246 for information on customizing the button bar. The Menu Bar The menu bar provides access to most Signalscan Waves commands. June 2000 65 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-11 Menu Bar File Menu Control Menu Format Menu Edit Menu View Menu Options Menu Windows Menu Help Menu File Menu The File menu provides commands to work with environment and data files. ■ Open Simulation File Open the transition data file (.trn) component of the SST2 database. This file contains all of the recorded transition (event) data for a simulation. June 2000 66 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-12 Open a Simulation File ■ Close Simulation File Close an open simulation file and leave Signalscan running. June 2000 67 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-13 Close a Simulation File ■ Rename Simulation File Use this menu option to move or rename simulation files. June 2000 68 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-14 Rename a Simulation File ■ Replace/Reload Simulation File Data Reload data from the simulation file. This is useful if you have modified what is shown on the screen and want to return to the initial display. You could also close and re-open the file. ■ List Open Simulation Files List all open simulation files. The listing describes the file location and creation date for each file, as shown in List Open Simulation Files figure on page 70. June 2000 69 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-15 List Open Simulation Files ■ Execute Do-File Restore a configuration from a previous Signalscan Waves session. Your configuration includes groups, markers, events, and register pages that you have defined. See Appendix A, “Saving and Restoring Your Configuration” for more information. June 2000 70 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-16 Execute Do-File ■ Save Do-File Capture your current session configuration. See Appendix A, “Saving and Restoring Your Configuration” for more information. June 2000 71 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-17 Save Do-File ■ Write VCD for Selected Variables Record variables you have selected in the Names pane to a VCD file. See “write” on page 244 for more information. June 2000 72 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-18 Write VCD for Selected Variables ■ Write VCD for All Recorded Variables Write all variables to a VCD file. You can use this command to convert an SST2 database to a VCD file. June 2000 73 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-19 Write VCD for all Variables ■ Merge SST Files Merge incremental SST files into a single database. June 2000 74 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-20 Merge SST Files ■ Print Displays the print form. You can customize the following characteristics: ❑ Header Info ❑ Destination ❑ Time Range ❑ Variable Range ❑ Page Info ❑ Paper Size ❑ Color June 2000 75 Product Version 6.5 Signalscan Waves User Guide The Waveform Window See “Printing the Waveform Window” on page 117 for more information. ■ Close Window Close the Waveform window, but do not exit Signalscan Waves. ■ Exit Exit Signalscan Waves. You have the option to save your configuration in a do-file, as shown in Figure 4-21 on page 76. Figure 4-21 Exit Signalscan Waves June 2000 76 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Edit Menu The Edit menu provides commands to work with variables displayed in the Waveform window. ■ Undo Return to the state prior to the last command. ■ Cut Remove selected items (events, groups, etc.) from the display and load them into the paste buffer. ■ Copy Copy selected items from the display into the paste buffer. June 2000 77 Product Version 6.5 Signalscan Waves User Guide The Waveform Window ■ Paste Write selected items from the paste buffer to the display. ■ Delete Remove selected items from the display. ■ Modify Modify the selected group or bus. Figure 4-22 on page 78 shows the resulting dialog box if you select a bus to be modified. Figure 4-22 Modify Bus ■ Move Move the selected item to the bottom of the display. ■ Duplicate Create a copy of the selected item and put it at the bottom of the display. ■ Sort Alphabetize the selected items. ■ Reverse June 2000 78 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Reverse the order of the selected items on the display. ■ Expand Expand a bus to show all components. ■ Overlay Display both analog and digital waveforms. See “Using Overlay Groups with Analog Signals” on page 133 for more information. ■ Stack Separate items displayed in an overlay group. See “Converting Overlaid Signals to Stacked Signals” on page 134 for more information. ■ Create: ❑ Group - See “Defining and Using Groups” on page 95. ❑ Marker - See “Defining and Using Custom Markers in the Waveform Pane” on page 53. ❑ Event - See “Defining and Using Events” on page 96 ❑ Expression - See “Defining and Using Constants and Expressions” on page 105. ❑ Breakpoint - Set a breakpoint in the simulation. Figure 4-23 on page 80 shows the breakpoint options. June 2000 79 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-23 Create Breakpoint ■ ❑ Register Page - See “Creating and Customizing a Register Page” on page 127. ❑ Bus - See “Defining and Using Busses” on page 99. ❑ Comment - See “Adding Comments to the Names Pane” on page 63 ❑ Constant - See “Defining and Using Constants and Expressions” on page 105. Find Search the simulation file for a specified variable. The Waveform pane changes to display the found item. June 2000 80 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-24 Find Form ■ Find/Next Search for the next occurrence of the variable you specified with the Edit - Find command. If the search direction is backward, Find/Next finds the previous occurrence. ■ Select All Select all variables instead of individually clicking on them. June 2000 81 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Control Menu The Control menu provides commands that allow you to show more information in the Waveform window. ■ Add Trace Expand the display of the selected object to include driver information. ■ Add Module Inputs Expand the display of the selected object to include other objects connected to its input or inout ports. ■ Define Event Search Direction Set the event search direction either forward or backward, to find next or previous events. ■ Define Mode Interactive June 2000 82 Product Version 6.5 Signalscan Waves User Guide The Waveform Window ■ Switch to interactive mode. See Define Mode Interactive Option on page 125 for more information. ■ Step Increment the simulation to the next event change. ■ Continue Continue the simulation to the next breakpoint. ■ Stop Stop a running simulation. ■ Variable Change Scroll the Waveform pane to display the previous or next variable change. ■ ■ Go to: ❑ Cause - See Using the Signalscan Waves Cause Finder on page 102. ❑ Definition - If you have a standalone Signalscan license, this option takes you to the line of code that defines the selected variable. ❑ Instantiation - If you have a standalone Signalscan licences, this option takes you to the source code line that instantiates the selected module. ❑ Schematic - Not available in this release. Show Properties List all the properties assigned to the selected transaction. See Transaction Navigation on page 176 for information. ■ Show Parent Transactions See Transaction Hierarchies on page 175 for information. ■ Show Child Transactions See Transaction Hierarchies on page 175 for information. ■ Show Related Transactions See Transaction Hierarchies on page 175 for information. ■ Show Next Error See Locating Errors on page 178 for information. June 2000 83 Product Version 6.5 Signalscan Waves User Guide The Waveform Window ■ Add Unadded Highlighted Transactions View Menu ■ Zoom The Waveform window supports a variety of commands for zooming in and out on portions of the waveform. See “The Time Status and Times Panes” on page 54 for more information. The following zoom options are available: ❑ In X ❑ In Y ❑ Out X ❑ Out Y ❑ Out X Full ❑ Out Y Full June 2000 84 Product Version 6.5 Signalscan Waves User Guide The Waveform Window ■ ❑ Between Cursors ❑ Between Highlighted Transaction Center on Cursor1 Scroll the Waveform pane so that Cursor 1 is in the center. ■ Expand Sequence Time Expand the display to show the sequence of all events taking place at a specific simulation time. See “Sequence Time” on page 112 for more information. You can select the following times: ■ ❑ At Cursor1 ❑ Between Cursors ❑ All Times Collapse Sequence Time Return to the unexpanded view of events. You can select the following times: ■ ❑ At Cursor1 ❑ Between Cursors ❑ All Times Analog Display Mode Change from digital to analog display of waveforms. See Chapter 6, “Analog Analysis” for more information. ■ Grid Enable or disable vertical and horizontal grid lines in the Waveform pane, as shown in Figure 4-25 on page 86. June 2000 85 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-25 Grid Enabled in Waveform Pane ■ Define Grid Set the start time and interval for grid lines in the Waveform pane. June 2000 86 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-26 Define Grid ■ Value at Cursors See “Value at Cursors” on page 147 ■ Slope for Value at Cursors See “Slope For Values at Cursors” on page 148. ■ Min/Max/Peak-to-Peak Between Cursors See “Minimum, Maximum, and Peak-to-Peak Between Cursors” on page 150. ■ Rise/Fall Time at Cursor1 See “Rise/Fall Time at Cursor1” on page 151. ■ Average Values Between Cursors See “Average Values Between Cursors” on page 153. ■ RMS Value Between Cursors See “Average Values Between Cursors” on page 153. Format Menu The Format menu contains commands to modify variables and waveforms in the Waveform window. Note that formatting is applied to an object for display purposes, and it does not June 2000 87 Product Version 6.5 Signalscan Waves User Guide The Waveform Window create a new variable. Therefore, some formatting is removed when you expand an object, such as a bus. ■ Variable Radix Set the radix (or base) of selected variables to one of the following: ❑ Binary ❑ Octal ❑ Decimal ❑ Signed Decimal ❑ Hexadecimal ❑ ASCII The object changes in the Names pane to reflect the radix. For example, if an object is set to hexadecimal display, the format would be: object-name = ‘h object-state ■ Invert Invert the bits of the selected objects. An inverted object is identified in the Names pane as: object-name = ‘i object-state June 2000 88 Product Version 6.5 Signalscan Waves User Guide The Waveform Window ■ Show Strength Display the strength of selected objects. The strength is shown in the Names pane as: object-name = strength object-state ■ Analog Format Change the selected signals, busses, and real numbers to display their values in an analog format. ■ Shift Graphically shift objects the an absolute or relative time amount. The Waveform window displays shifted objects using a special color and appends the amount of the time shift to the object’s name. To unshift objects, select the objects and shift to absolute time zero. You can save shifted objects to Do-Files and write them to VCD files. You can shift either: ❑ Selected Variables Figure 4-27 Shift Selected Variables ❑ June 2000 All Recorded Variables 89 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-28 Shift All Recorded Variables ■ Define Analog Min/Max Values See “Minimum and Maximum Values” on page 138. ■ Define Variable Display Scale See “Display Scale” on page 139. ■ Full Hierarchy Names Include or exclude the full hierarchy name of each object. ■ File Names Include or exclude the file name of the SST2 database containing the object. ■ Full Path File Names Include or exclude the full path of the SST2 database containing the object. You must also select Format - File Names if you use this option. June 2000 90 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Options Menu The Options menu contains commands to customize your Signalscan Waves session. ■ Define Buttons See “Custom Buttons” on page 246. ■ Define Colors “Colors” on page 249. ■ Define Preferences You can customize various aspects of the Signalscan Waves display and operation. The Define Preferences form allows you to set: ■ ❑ display characteristics (color, black and white, grayscale, etc.) ❑ the default time interval ❑ various waveform characteristics as shown in Figure 4-2 on page 52 ❑ general behavioral characteristics as shown in Figure 3-3 on page 40. Define Mnemonic Maps See “Defining and Using Mnemonics” on page 107. ■ Define Sources Search P.ath Set the search path location, as shown in Figure 4-29 on page 92. June 2000 91 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-29 Define Sources Search Path June 2000 92 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Windows Menu The Windows menu contains commands for starting other Signalscan Waves windows. ■ Control If you have the standalone Signalscan license, this menu option starts the control window. The control window allows you to perform operating-system level I/O. ■ Design Browser Launch the Design Browser to navigate your design hierarchy. See Chapter 3, “Navigating Through Your Design”. ■ Waveform Launch another Waveform window. ■ Register Launch the Register window. See “Overview of the Register Window” on page 121. ■ Source If you have the standalone Signalscan license, launch the Source Code window. ■ Events Launches the Events window. See “Defining and Using Events” on page 96. June 2000 93 Product Version 6.5 Signalscan Waves User Guide The Waveform Window ■ Breakpoints List any breakpoints defined for the simulation, as shown in Figure 4-30 on page 94. Figure 4-30 List Breakpoints ■ Transaction List Launch the Transaction List window. See “Transaction Navigation” on page 176 for more information. ■ Schematic Tracer The Schematic Tracer is not available in this release. ■ TXE Explorer Launch the Transaction Explorer. See Chapter 7, “Transaction-Based Verification” for more information about transactions. See the Transaction Explorer User Guide for more information about the Transaction Explorer. ■ You can also switch to any currently opened Signalscan Waves window listed by name at the bottom of the menu. June 2000 94 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Help Menu The Help menu launches the Cadence online documentation system and allows you to perform searches on the Signalscan Waves User Guide . Defining and Using Groups Objects displayed in the Names pane are organized into groups. A group is a collection of objects displayed together. You can define multiple groups, and place any object any number of times in one or more groups. Group A is created by default. If you add objects without creating a group, they are automatically added to Group A. You can create a group either in the Waveform window or from the Design Browser. When you change the content of a group in either of these windows, the new content of the group is displayed in the Waveform window. The Design Browser does not display the complete content of a group but only allows you to add new content. To scroll the Waveform window display to a particular group, change the Multi-List pane to display Groups and click on the name of the desired group. See also “Creating an Overlay Group” on page 133. Creating a Group 1. In the Names pane of the Waveform window, position the insertion marker where you want the new group to be. 2. In either the Waveform window or the Design Browser, select Edit—Create—Group or enter Control-g from your keyboard. (To open a Design Browser, select Windows— Design Browser.) Signalscan Waves displays the Create Group form. 3. Enter a name for the new group in the form and click the OK button. The new group is added to the Waveform window Names pane below the group that contains the insertion marker and it is also added to the drop-down list above the To Add June 2000 95 Product Version 6.5 Signalscan Waves User Guide The Waveform Window pane in the Design Browser. In the Waveform window, use your mouse (see Table 4-1 on page 62) and the Edit menu to move, rename (Modify ), or delete a group. Adding Objects to a Group in the Waveform Window To add objects to a group in the Waveform window, do any of the following: ■ Copy and paste or move objects that are already listed in the Names pane (see Table 4-1 on page 62). ■ Position the insertion marker in the group where you want the objects to be added, and then select objects in the SimControl window and add them to the Waveform window (see “Invoking Signalscan Waves from SimControl” on page 25). ■ Select objects in the Design Browser and add them to this group (see below). Adding Objects to a Group from the Design Browser To use the Design Browser to add objects to a group: 1. Select the group name you want to add objects to from the drop-down list above the To Add pane. 2. Select objects in the Variables pane (see Chapter 3, “Navigating Through Your Design”). Objects are added to the To Add pane as soon as you click your left mouse button on them in the Variables pane. 3. Click the AddToWave button or select Control—Add Variables . The objects in the To Add pane are added to the Waveform window in the group that is selected in the To Add drop-down list. Defining and Using Events An event is a definition of values for a collection of objects. Use events to search through your simulation history. Defining an Event To define an event: 1. Select one or more objects in the Names pane. June 2000 96 Product Version 6.5 Signalscan Waves User Guide The Waveform Window 2. Optionally, place Cursor1 at the location in the Waveform pane that most resembles the event you want to define. This will save you some editing in the Events window. 3. Select Edit—Create—Event (Control-e). An Events window is displayed, as shown in Figure 4-31 on page 97, with a new event, eventn , that consists of the selected objects and their values at Cursor1. Figure 4-31 Events Window Scrolling the Events Window To find an event in the Events window, either use the scroll bar to the right of the Value pane, or click your left mouse button on an event name in the Event List. The Names pane and Value pane scroll to display all the objects in that event. June 2000 97 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Modifying an Event Changing the Name To change the default event name assigned by Signalscan Waves: 1. Drag your left mouse button to highlight the name of the event in the Names pane in the Events window. 2. Type the new name. The name changes in the Event List as soon as you click away from that name or press your Enter key. Changing the Object Values The initial value for each object is its value at Cursor1. You can edit any values in the Value pane by highlighting them with your left mouse button and overwriting them. To change the value of an object being searched for to be rising edge, falling edge, or any edge, select Control—Define as Rising Edge , Control—Define as Falling Edge , or Control—Define as Any Edge . Adding or Deleting Objects in an Event To add objects to an existing event: 1. Select the objects in the Names pane of the Waveform window. 2. Click the Copy button or select Edit—Copy in the Waveform window. 3. In the Events window, position the insertion marker in the Names pane where you want the selected objects to be added. 4. Click the Paste button or select Edit—Paste in the Events window. To remove objects from an event: 1. Select the objects in the Names pane of the Events window. 2. Click the Delete button or select Edit—Delete . You can manipulate objects in the Names pane of the Events window the same way you can manipulate objects in the Names pane of the Waveform window. See Table 4-1 on page 62. June 2000 98 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Finding an Event To scroll the Waveform window display to the next occurrence of an event, change the MultiList pane to display Events and click on the name of the desired event. Cursor1 moves to that simulation time. Selecting an event name in the Event List in the Events window scrolls the Events window to display all objects in that event; it does not find the next occurrence of that event in the Waveform window. In the Events window, you can use two menu options under the Control menu: Define Logical And and Define Logical Or to select the clauses that you want to And or Or together. You can then use the appropriate menu item on the result. For example, suppose you have an event with signals a, b, and c. Normally all clauses must be true to match. Suppose you want to instead match ((a && b) || c). First select signals a and b and Define Logical And . Then select the resulting clause, signal c and Define Logical Or. Now you have an event that will match ((a && b) || c). There is still an implied And between separate uncombined clauses, so for example if you then pasted in a d clause, the event would match ((a && b) || c) && d. In this case, ((a && b) || c) is one clause, and d is another clause. You can only define a logical operation if you have at least two clauses selected and each one matches a numerical or logic value. Edges, strength comparisons, wildcard values, shifted values, and mnemonic or enumerated values cannot be combined in this way. Since the names can get long when complicated expressions are defined, you can resize the names panes in the Events window with a size bar (like the Waveform window) so that you can make the names pane wider if desired. Also, the default width of the Events window names pane is slightly larger and the default width of the value pane is decreased by the same amount, leaving the window the same size. Defining and Using Busses This section describes how to create a bus in the Waveform window. To learn how to create a bus in the Design Browser, see “Creating Busses with Bus Templates” on page 43. Creating a User-Defined Bus To create a user-defined bus in the Waveform window: 1. In the Names pane, select the objects that you want to put together as a bus. June 2000 99 Product Version 6.5 Signalscan Waves User Guide The Waveform Window 2. With your middle mouse button, position the insertion marker where you want the new bus to be located. 3. Select Edit—Create—Bus (Control-w). The Make Bus From Selected Variable(s) form displays as shown in Figure 4-32 on page 100. 4. Click the OK button to create the new bus. Figure 4-32 Defining a Bus You can change the name of the bus (see “Changing the Name of the Bus” on page 101), change the msb and the lsb, and invert the contents of the bus (click the Flip Contents button). The number of bits is enforced, so if you change the msb, the lsb is also changed to reflect the correct bit count. If you select the Replace Original option, the objects that were selected in the Waveform window are deleted from the Waveform window and replaced by this bus. If you de-select the Replace Original option, both the bus component objects and the new bus display in the Waveform window. For analog designs, see also “Performing Analog-to-Digital Conversion” on page 141. June 2000 100 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Default Bus Name If all the object names selected have the same prefix, and the trailing bit numbers are consecutive, the default name is the common prefix, and the suffix is the bit index. If not all of the selected objects have a common name (a bundle ), the default name is the concatenation of the names of the selected objects, separated by a comma, as shown in Figure 4-33: Figure 4-33 Bundle of Objects Used to Create a Bus Select Objects clock and multiToggle for the Bus A Bus is Created Named with Concatenated Object Names When you change the content of the bundle, the name also changes to reflect its content. By default, the bus name is the common name, followed by the indices, and the bundle name is the concatenation of the signals of which it is composed. Changing the Name of the Bus ■ In the Make Bus From Selected Variable(s) form (see Figure 4-32 on page 100), click the New Name button and enter a new name. ■ Select the Display Indices option to display indices. You can change the value of the indices displayed by editing the msb and lsb. The number of bits is enforced, so if you change the msb, the lsb is also changed to reflect the correct bit count. Note: Changing the msb and lsb in the Name section affects only the name of the bus created and not its contents. June 2000 101 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Modifying a Bus To view the components of an existing bus or modify an existing bus: 1. Select either a user-defined bus or a Verilog bus in the Names pane of the Waveform window. 2. Select Edit—Modify to display the Modify Selected Bus form. The contents of the original bus are displayed at the top of the form as well as the bit contents of the bus. 3. Change the bits referenced from the original bus to modify the bus. The default name is the original name with the new modified indices. To rename the bus, click the New Name button. Viewing Components of a Bus in the Waveform Window To expand a bus to show its constituent bits in the Names pane and Waveform pane, select either a user-defined bus or a Verilog bus in the Names pane of the Waveform window, and then select Edit—Expand . Note: The Expand operation cannot be undone. You may want to copy and paste the bus first and expand the copy or view the expanded bits in a register page (see “Creating and Customizing a Register Page” on page 127). Using the Signalscan Waves Cause Finder The Signalscan Waves Cause Finder feature shows you the possible causes of a selected value change using the SimControl Signal Flow Browser and Source Code window. You can invoke the Cause Finder feature from the Waveform window, from the Design Browser window, or from the Register window. Invoking from the Waveform Window To invoke Cause Finder from the Waveform window, either: ■ Ctrl+double-click (press the Control keyboard key while you double-click your left mouse button) on a transition in the Waveform window. or June 2000 102 Product Version 6.5 Signalscan Waves User Guide The Waveform Window ■ Select a transition and then select the Control—Go To—Cause menu option. Cursor1 and TimeA are set to the time of the transition, as shown in Figure 4-34 on page 103. Figure 4-34 Go To Cause from Transition in Waveform Pane Cursor1 The SimControl Signal Flow Browser displays a list of possible causes of the transition, as shown in Figure 4-35 on page 104. In the Source Code window, an arrow is displayed to the left of the line corresponding to the first possible cause. June 2000 103 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-35 Signal Flow Browser with Multiple Choices When you select one of the possible causes in the SimControl Signal Flow Browser, the arrow in the Source Code window will point to the line corresponding to that cause, as shown in Figure 4-36 on page 105. June 2000 104 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-36 Source Code Window with Single Cause Identified Defining and Using Constants and Expressions Select Edit—Create—Constant to add a constant at the insertion point. Enter the name of the constant and its value in the Create Constant form, as shown in Figure 4-37 on page 106. June 2000 105 Product Version 6.5 Signalscan Waves User Guide The Waveform Window You can use this feature to create constant zero or one if you are going to create a userdefined bus and you want to fill it with zeros or ones. Figure 4-37 Create Constant Form June 2000 106 Product Version 6.5 Signalscan Waves User Guide The Waveform Window See “Creating and Using Analog Expressions” on page 143 for a description of how to add an expression at the insertion point. To change a constant or expression, first select the constant or expression in the Names pane, and then select Edit—Modify. Defining and Using Mnemonics Signalscan Waves allows you to define mnemonics for any values, and to display those mnemonics in the Waveform and Register windows. Defining a Mnemonic Map 1. Select Options—Define Mnemonic Maps . The Define Mnemonic Mapping form displays. The first time you open this form, it displays a default map named mmap1 that contains one value/mnemonic pair that maps Default to <‘h> (hexadecimal display), as shown in Figure 4-38 on page 108. The Default value cannot be changed, but its mnemonic can be changed. The Default mnemonic matches any value not matched by any other value in the map. June 2000 107 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-38 Define Mnemonic Mapping Form 2. To create a new map, click the New Map button on the right side of the form. 3. To rename this mnemonic map, drag or double-click your left mouse button over the map name and type over it. 4. To change the value radix for this mnemonic map, click on the down-pointing arrow to the right of the Value Radix field, and select a new value radix from the drop-down list. The Value Radix field specifies the default value radix for this map. You can specify a different value radix for a particular mnemonic in the map by entering the appropriate string in the Mnemonic pane: <‘b>, <‘o>, <‘d>, <‘s>, <‘h>, or <‘a>. 5. Add mnemonics to the map, as described in “Defining a Mnemonic” on page 109. June 2000 108 Product Version 6.5 Signalscan Waves User Guide The Waveform Window 6. Click the OK button at the bottom of the form. Defining a Mnemonic 1. Click your left mouse button anywhere in the Value pane. A text cursor appears at the next new entry point. 2. Enter a value. 3. Press the Tab key to move to the Mnemonic pane. 4. Enter the mnemonic for that value. The mnemonic may include one of <‘b> (binary), <‘o> (octal), <‘d> (decimal), <‘h> (hexadecimal), <‘s> (signed decimal), or <‘a> (ascii). The mnemonics on each map are automatically sorted by value. Figure 4-39 on page 110 shows a custom mnemonic map: June 2000 109 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-39 Custom Mnemonic Map Modifying a Mnemonic Map You can change the name and value radix of the mnemonic map as described above. To change the relative sizes of the Value pane and Mnemonic pane, move your mouse over the line between the two panes until your mouse pointer looks like a double-headed horizontal arrow with a vertical line in the middle of it. Then press and drag your left mouse button. To change the value or mnemonic name of a particular mnemonic, drag or double-click your left mouse button over the field to highlight it, and then type over it. If you change the value, June 2000 110 Product Version 6.5 Signalscan Waves User Guide The Waveform Window the mnemonics are resorted as necessary. You cannot change the value of the Default mnemonic. To use the mnemonic editing buttons on the right side of the Define Mnemonic Mapping form, you must first select one or more mnemonics. To select a mnemonic, click your left mouse button on the number to the left of the value for that mnemonic. Drag your left mouse button, or press the Shift or Control keys, to select more than one mnemonic. To delete mnemonics, select them and then click either the Delete or Cut button. You cannot delete the Default mnemonic. The Default mnemonic matches any value not matched by any other value in the map. To copy or move mnemonics to other maps: 1. Select one or more mnemonics. 2. Click either the Copy or Cut button. 3. Select a different map from the drop-down list at the top of the form, or click the New Map button. 4. Click the Paste button. The pasted mnemonics are automatically sorted by value as they are added to the list. You cannot rearrange the mnemonics on a map. They are automatically sorted by value. Applying a Mnemonic to a Bus 1. Select a bus in the Names pane of the Waveform window. 2. Select Format—Variable Radix . The mnemonic map names appear on the bottom of the list of options. 3. Select a mnemonic map name. In the Names pane, ‘mmapname is displayed in front of the value, and the appropriate mnemonics are displayed in the Waveform pane, as shown in Figure 4-40 on page 111. Figure 4-40 Mnemonic Map Applied to a Bus June 2000 111 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Viewing Waveforms in Sequence Time Sequence Time Sequence Time (patent pending) lets you view and debug activities that conceptually take place at the same instant, but that the simulator executes in a specific order. When different execution orders yield different results, a sequence order problem exists. By graphically displaying the actual object assignment sequence within a given time step, Sequence Time lets you pinpoint and eliminate this class of problems early in the design cycle, before they result in more serious gate-level problems downstream. You can view the order in which the objects changed by expanding the sequence time at Cursor1, between cursors, or at all times. These options are available under View—Expand Sequence Time . For example, to expand sequence time at Cursor1, click your left mouse button on a Using the Multivalue Indication Feature point (a pink dot) in the Waveform window, and select View—Expand Sequence Time—At Cursor1 . See Figure 4-41 on page 113. If you do not want to view the sequence time, you can collapse the sequence time information by using View—Collapse Sequence Time . Recording Sequence Time To view sequence time, you must first record sequence information into your SST2 Database. ■ ■ For NC Verilog, either: ❑ Select the record all events option on the Open Database form. ❑ Specify the -event option on the database command. See the Tcl command reference for your simulator. For Verilog-XL, specify the event field on the $shm_probe system task. You cannot view Sequence Time in a Leapfrog simulation. Note: You cannot record sequence time for part of a simulation or a subset of probed objects. You must specify sequence time recording when you first open the database, and then sequence time (all events) is recorded for all probed objects. Using the Multivalue Indication Feature Multivalue Indication graphically identifies areas where sequence order problems may exist: zero-time glitches where objects have received multiple values during a single time step. June 2000 112 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Such a glitch may indicate a reliance on the simulator’s ordering of events, which could later turn into a serious timing problem. Once a glitch is identified, you can further investigate the problem by expanding into the Sequence Time domain. Multivalue Indication is graphically represented as a pink dot on top of the waveform at the location where it occurred. You can view the actual object assignment sequence within a given time step by using the Sequence Time feature of Signalscan Waves. See Figure 4-41 on page 113. Figure 4-41 Multivalue Indication and Sequence Time MultiValue Indication June 2000 Sequence Time 113 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Viewing Multi-Dimensional Objects The Signalscan Waves Waveform window can view only one-dimensional objects. To view a multi-dimensional object, you must view each dimension separately. Each dimension of a multi-dimensional object is treated as a scope in Signalscan Waves. Each scope is one vector of an array or one object of a record. Thus, to view multiple dimensions of a multi-dimensional object in the Waveform pane, you need to iterate the following process: 1. In the Design Browser, select (single-click your left mouse button on) a scope that represents a multi-dimensional object from the Instances in Current Context list. The Instances in Current Context list updates to display all the scopes in the first dimension of that selected object. 2. Select one of the scopes listed in the new Instances in Current Context list. The objects for that scope (for that dimension of the multi-dimensional object) are listed in the Nodes/ Variables in Current Context list. 3. Select one or more of the objects in that dimension from the Nodes/Variables in Current Context list. The selected object names are added to the Design Browser’s To Add pane. 4. Go back to Step 1 and select another scope. You can re-select the design (Current File field) to refresh the Instances in Current Context list. 5. Click the AddToWave button. In the following example, select the scope ARRAY3X4 in Figure 4-42 on page 115 to list the three scopes in the first dimension of the ARRAY3X4 scope. Select the scope ARRAY3X4[2] in Figure 4-43 on page 116 to list the nodes in that scope. Select the node ARRAY3X4[2][2] in Figure 4-44 on page 117 to add that node to the To Add pane. June 2000 114 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-42 Select a Multi-Dimensional Object June 2000 115 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-43 Select a Scope in the First Dimension June 2000 116 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-44 Select Nodes in One of the Scopes in the First Dimension Printing the Waveform Window Signalscan Waves supports printing the Waveform window both in black-and-white and in color. Select File—Print from the Waveform window. The Printing form is displayed as shown in Figure 4-45 on page 118. Buttons across the top of the Printing form allow you to specify header information for each printed page, the printer or file name to print to, the color mode, and which objects to print for which times. You can print all objects, currently selected objects, or currently visible objects, and you can print all times, currently visible times, or the time between specified start and end times. You can scale the printout to fit a specified number of pages, and you can specify the size of paper to use. June 2000 117 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Figure 4-45 Printing Form - Header Info Use the Time Range button to specify a range of time for which you want data to be printed. You can select various options as shown in Figure 4-46 on page 118. Figure 4-46 Printing Form - Time Range Options June 2000 118 Product Version 6.5 Signalscan Waves User Guide The Waveform Window Use the Color button to choose one of the following three formats, as shown in Figure 4-47 on page 119: ■ Black on White. Print black lines and labels on a white background. Analog signals in an overlay group are printed using different line patterns. A sample of the line pattern used for each signal is shown next to the signal name in the printout. ■ Color on White. Print color lines and labels on a white background. ■ Full Color. Print the window the same way you see it on your monitor. Figure 4-47 Printing Form - Color Options June 2000 119 Product Version 6.5 Signalscan Waves User Guide 5 Defining Design Views This chapter describes how to use the Register window to create customized views of your design on register pages. This chapter contains the following sections: ■ “Overview of the Register Window” on page 121 ■ “Creating and Customizing a Register Page” on page 127 June 2000 120 Product Version 6.5 Signalscan Waves User Guide Defining Design Views Overview of the Register Window The Register window allows you to create customized views of your design. Each of these views is called a register page . Figure 5-1 on page 121 shows a Register window with one register page defined. You can define multiple register pages in one Register window and select them by name to jump between them, or you can define different register pages in separate Register windows to keep multiple register pages visible on your screen simultaneously. The Register window makes it much easier to monitor subsets of important objects among the many objects displayed in the Waveform window. You can also annotate each object on a register page much more than you can in the Waveform window. You can put any object from the Waveform window on a register page. You can put the same object on multiple register pages, and you can put copies of the same object on one register page. You can arrange the objects on a register page any way that is most useful to you. Figure 5-1 Register Window Selection Mode Button Multi-list Pane Text Mode Button June 2000 121 Product Version 6.5 Signalscan Waves User Guide Defining Design Views Multiple Register Windows When you create a new register page, that page is added to an existing Register window if there is one. To open multiple Register windows, select Windows—Register from any Signalscan Waves window. Register windows are sequentially numbered beginning with 1. View-Only Mode You can lock a Register window into view-only mode. You may want to do this so that you do not accidentally change the layout of a register page by sliding your mouse across it. To toggle between view-only and edit modes, click the Lock/Unlock button above the Register pane vertical scrollbar. In view-only mode, the Multi-List pane, menu bar, and other less used controls are hidden, and the Register pane becomes read-only so that you cannot modify the register page in that window. However, if you modify the register page in another Register window, the changes are reflected in all Register windows, including the ones in view-only mode. Also, the object values continue to update when the page is displayed in a view-only Register window. Figure 5-2 Register Window in View-Only Mode June 2000 122 Product Version 6.5 Signalscan Waves User Guide Defining Design Views TimeA Field TimeA is a simulation time that is used to synchronize all Signalscan Waves windows. When you explicitly set TimeA, then the values of the objects displayed in the Register pane of the Register window and in the Names pane of the Waveform window are the values that those objects have at TimeA. You can edit this field to display values at a different time. To edit TimeA in the Register window: 1. Click your left mouse button in the TimeA field. 2. Edit the value. 3. Press your Enter key. When you press the Enter key, TimeA is automatically updated in all other Signalscan Waves windows that use TimeA, and Cursor1 is moved to the new TimeA value in the Waveform window. See also “TimeA Marker” on page 56. Current Sim Time Field The Current Sim Time field displays the current simulation time for as long as the simulation is active. When you are not running Signalscan Waves in interactive mode, this field is blank. RegPage Name and Selected Variable Fields The RegPage Name field (see Figure 5-1 on page 121) is a read-only field that shows the name of the register page that is currently displayed in the Register pane. You cannot edit this field to display a different register page. If you want to display a different register page, you must click on the name of page in the Multi-List pane. The Selected Variable field is a read-only field that shows the full name of any one object you select in the Register pane. If you have not selected (highlighted) an object, this field is blank. Selection Mode and Text Mode Buttons You can use the Selection Mode and Text Mode buttons to toggle the Register window between selection and text modes. See “Creating and Customizing a Register Page” on page 127 for information on how to use these buttons. June 2000 123 Product Version 6.5 Signalscan Waves User Guide Defining Design Views Previous and Next Value Change TimeA and Cursor1 also automatically update whenever you select the previous or next value change of an object from the Register window. To select the previous or next value change in the Register window: ■ Click the previous or next value change button (see Figure 5-1 on page 121). ■ Enter Control-v (previous) or Control-n (next). ■ Select Control—Value Change . TimeA and Cursor1 automatically update to the time of the previous or next change in value of the selected object so that values for all objects are shown for that simulation time. If more than one object is selected, the previous or next value change of any of the selected objects is found. If no objects are selected, the previous or next value change of any of the objects on the current register page is found. Using the Define Mode Interactive Option When you invoke Signalscan Waves from a simulator, you are automatically running the wavforrm viewer in interactive mode . In interactive mode, TimeA is equal to the current simulation time and the values of the objects in each Singlascan Waves window update continuously as the simulation runs. If you display the Control menu in the Register window when you are in interactive mode, you see that the Define Mode Interactive option is automatically selected, as shown in Figure 5-3 on page 125. June 2000 124 Product Version 6.5 Signalscan Waves User Guide Defining Design Views Figure 5-3 Define Mode Interactive Option After you start Signalscan Waves in interactive mode, if at any time you change TimeA in any Signalscan Waves window, go to the previous or next value change of an object in a Register window, or select a marker or event in the Register window, Signalscan Waves leaves interactive mode. This means that: ■ The Control—Define Mode Interactive menu option in the Register window is automatically deselected. ■ The waveforms in all Signalscan Waves windows no longer update at regular intervals as the simulation runs. ■ TimeA remains fixed in all Signalscan Waves windows at the time to which you set it when you performed an operation from the list above. ■ The Current Sim Time field in the Register window continues to update as the simulation runs. If you select the Control—Define Mode Interactive menu option, then in all Signalscan Waves windows: ■ TimeA synchronizes with the current simulation time again. ■ The waveforms again update at regular intervals as the simulation runs. June 2000 125 Product Version 6.5 Signalscan Waves User Guide Defining Design Views Multi-List Pane The Multi-List pane displays the register pages, markers, and events that are defined. Click on the down arrow in the top right corner of this pane, to the right of the label, to display a drop-down list. Click on an item in the drop-down list to change the display in the Multi-List pane to RegPages , Markers , or Events . Displaying a Different Register Page 1. Display the RegPages list in the Multi-List pane. 2. Click on the name of the register page you want to display. Deleting a Register Page 1. Display the RegPages list in the Multi-List pane. 2. Click on the name of the register page you want to delete. The name of the page is highlighted in the RegPage Name field. 3. While the name of the page is still highlighted, click the Delete button or select Edit— Delete . Displaying a Marker or Event See “The Multi-List Pane” on page 58. Note: In the Register window, when you select a marker or event, both TimeA and Cursor1 are moved to that simulation time. This behavior is different from the behavior you get when you select a marker or event in the Waveform window. Register Pane The Register pane displays the contents of the register page named in the RegPage Name field. See “Creating and Customizing a Register Page” below for information on how to add, move, group, modify, and delete simulation objects and text in this pane. Register and Multi-List Pane Sizes To change the relative sizes of the Register pane and Multi-List pane, move your mouse over the line between the two panes until your mouse pointer looks like a double-headed horizontal June 2000 126 Product Version 6.5 Signalscan Waves User Guide Defining Design Views arrow with a vertical line in the middle of it. Then press and drag your left mouse button to position the divider between the two panes. Creating and Customizing a Register Page A register page is a customized view of a set of simulation objects that you can display in a Register window. A register page can contain any arrangement of text, objects, and object values. An object value is the value of an object at TimeA, though you can shift individual values in time or invert them. You can use a register page to display vector values in binary, octal, decimal, signed decimal, hexadecimal, or ASCII. You can place text in any open space in the Register pane, and you can move and group text and simulation objects any way that meets your needs. To create a register page from the Waveform window, you perform the following steps: 1. Select some objects from the Names pane of the Waveform window. 2. Press Control-r or select Edit—Create—Register Page from the Waveform window main menu. The Create Register form appears, as shown in Figure 5-4 on page 127. Figure 5-4 Create Register Form 3. Enter a name for the register page, and click OK . A register page with the name you entered is created and is displayed in the Register window, as shown in Figure 5-1. The selected objects are listed in the Register pane of this window. June 2000 127 Product Version 6.5 Signalscan Waves User Guide Defining Design Views To create a register page from the Register window: 1. Click the CrtRegPage button, press Control-r, or choose Edit—Create—Register Page . The Create Register form appears as shown above. 2. Enter a name for the register page, and click OK . A register page that has the name you entered is created and is displayed in the Register window. The Register pane is blank. See “Adding Simulation Objects to the Register Page” on page 129 for instructions on adding new objects to your empty register page. When you create a new register page, Signalscan Waves adds that page to an existing Register window if there is one. To open multiple Register windows, choose Windows— Register from any Signalscan Waves window. Signalscan Waves numbers multiple Register windows sequentially, beginning with 1. The object values that appear in a new register window are the values that objects have at TimeA. These values update when TimeA changes. Note: A Register window can display multiple register pages. You can switch between register pages by clicking on the register page name in the RegPages list in the Multi-List pane on the right-hand side of the Register window. Figure 5-5 on page 128 shows a register page with groups and annotations. Figure 5-5 Customized Register Page June 2000 128 Product Version 6.5 Signalscan Waves User Guide Defining Design Views Selecting Objects Before you can operate on any object on a register page, you need to select it in the Register window. To select an object in the Register window, peform the following steps: 1. Click the selection mode button (see Figure 5-1 on page 121) to make sure you are in selection mode and not text mode. 2. Click on the objects and text that you want to select. Hold down the Control key while clicking to select multiple items. Note: You cannot drag your mouse to select multiple items. If you click and drag your mouse, the item you first clicked on moves as you drag the mouse. Grouping and Ungrouping Objects You may want to group several simulation objects and text objects together to treat them as a block on your register page. In addition, you may want to ungroup some items to work separately with them. For example, by default, the name and value of an object are grouped together so that you can easily move them together. You may want to decouple them temporarily to move the value closer to or farther from the name. To group or ungroup items, perform the following steps: 1. Select them as described in ““Selecting Objects” on page 129”. 2. Choose Edit—Group Registers or Edit—Ungroup Registers from the Register window main menu. Adding Simulation Objects to the Register Page To add simulation objects from a separate window to a Register page, perform the following steps: 1. Select the objects that you want to add to the register page in the Names pane of the Waveform window or in any other register page. 2. Copy or cut the objects from the original window. Use the Edit —Copy menu item or the Copy or Cut buttons on the original window to copy the selected items. 3. Select the register page where you want to put the objects. You can use the Multi-List pane of the Register window to display the RegPages list and select the register page to which you want to add the selected objects. June 2000 129 Product Version 6.5 Signalscan Waves User Guide Defining Design Views 4. Paste the cut or copied objects into the selected register page. Use the Edit—Paste menu item or the Paste button on the Register window to paste the objects that you have just cut or copied. Modifying Object Values The Invert , Show Strength , and Shift options on the Format menu work as described in “Format Menu” on page 87. Adding Text To add text to any area of a register page, perform the following steps: 1. Click the A button to enter text mode. 2. Click in any unused area of the register page. A text box appears at the location that you clicked. 3. Type in the text that you wish to add to the area and press the Enter key. Modifying Text To modify any text that you have added to a register page, perform the following steps: 1. Click the A button to enter text mode. 2. Click in any unused area of the register page. A text box appears at the location that you clicked. 3. Type in the text that you wish to add to the area and press the Enter key. Moving Text and Simulation Objects To move text objects or simulation objects within a register page, perform the following steps: 1. Select items as described in “Selecting Objects” on page 129. 2. Continue to hold down your left mouse button, and drag your mouse to move the selected items. The selected items move to the location at which you release the mouse button. June 2000 130 Product Version 6.5 Signalscan Waves User Guide Defining Design Views Changing the Font Size of Text Objects To change the font size of items in a register page, perform the following steps: 1. Select the items as described in “Selecting Objects” on page 129. 2. Select Format—Font Size from the Register window main menu. 3. Select a font size from the submenu that appears. The text objects that you selected appear in the new font size that you chose from the submenu. Rearranging Objects If you move items so that they overlap, or if you increase the font size of an item so that it overlaps another item, you can choose Edit—Rearrange Registers from the Register window main menu to automatically move objects as necessary so that no items overlap. Deleting Objects To remove text or simulation objects from a register page, perform the following steps: 1. Select the items you want to delete as described in “Selecting Objects” on page 129. 2. Click the Delete or Cut button or select Edit—Delete or Edit—Cut from the Register window main menu. June 2000 131 Product Version 6.5 Signalscan Waves User Guide 6 Analog Analysis Signalscan Waves supports the opening and viewing of any number of digital and analog files simultaneously in the same Waveform window. To view the waveforms of analog signals, then, you only need to add those signals to the Waveform window in the same way that you add digital signals. This chapter explains how to use the analog waveform viewing features that are available in Signalscan Waves. This chapter contains the following sections: ■ “Using Overlay Groups with Analog Signals” on page 133 ■ “Using the Analog Waveform Height Bracket” on page 134 ■ “Zooming and Panning Analog Signals and Overlay Groups” on page 135 ■ “Customizing the Display of Analog Signals” on page 137 ■ “Saving Analog Display Configurations” on page 141 ■ “Performing Analog-to-Digital Conversion” on page 141 ■ “Creating and Using Analog Expressions” on page 143 ■ “Performing Measurements on Analog Signals” on page 146 June 2000 132 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Using Overlay Groups with Analog Signals Signalscan Waves lets you overlay the waveforms of analog objects in the Waveform window. A set of overlaid signals is called an overlay group. The Waveform window can display both overlay groups and stacked objects at the same time, just as it can display both analog and digital objects at the same time. A single named group in the Names pane of the Waveform window (such as Group A) can contain both stacked objects and one or more overlay groups. You can create any number of overlay groups and display them simultaneously be created in the Waveform window. Creating an Overlay Group To create an overlay group in Signalscan Waves, you can use either the Design Browser or the Waveform window. Creating an Overlay Group in the Design Browser To create an overlay group in the Design Browser window, you perform the following steps: 1. Add the signals that you want to overlay to an existing named group. 2. Select the overlay analog option by pressing the Overlay Analog button. The Overlay Analog option is selected by default if you specify the -analog option when you invoke Signalscan Waves. Deselect the Overlay Analog button to load the signals in stacked mode. The Overlay Analog option can be saved to a configuration file (.do file). To do this, you can choose Define Add Variable Overlay from the Preferences list in the Options for Saving a Do-File form. This saves the current setting of the Overlay Analog option in the Design Browser window in the Do-File. See “Saving Your Configuration” on page 218 for more information. You can also or enter the following text into a Do-File: define add variable default overlay on 3. Click the AddToWave button in the button bar. Signalscan Waves adds the signals that you selected to an overlay group and overlays the signals on top of one another. Note: Signalscan Waves does not overlay the new overlay group on top of any of the other singals or overlay groups in the named group. June 2000 133 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Creating an Overlay Group in the Waveform Window To create an overlay group in the Waveform window, you perform the following steps: 1. Select one or more signals in the Names pane of the Waveform window. You can press the Shift key or the Control key along with the left mouse button to select multiple signals. You can select signals from different groups if you wish. 2. Select Edit—Overlay from the main menu. Signalscan Waves creates and displays an overlay group that contains the selected signals. The new overlay group appears at the insertion marker (yellow line) in the Names pane. Modifying Overlay Groups You can move nodes into and out of overlay groups in the Names pane of the Waveform window, and you can change the position of signals within an overlay group. Select one or more signals with your left mouse button, and then press and drag your middle or right mouse button to move the selected signals. If you release the mouse button inside of an overlay group, Signalscan Waves adds the selected signals to that overlay group. Note: To add signals to the first (top) position of an overlay group, you need to add them below the first signal and then move the top signal to a lower position in the group. Converting Overlaid Signals to Stacked Signals To separate signals that are in an overlay group, select any node in the overlay group, and select Edit—Stack from the main menu. Signalscan Waves separates all of the signals in that overlay group vertically within the named group. Printing Overlay Signals You can print the waveforms of the signals in any overlay group using either different line patterns or different colors for the overlaid signals. See “Printing the Waveform Window” on page 117 for more information on printing the contents of the Waveform window. Using the Analog Waveform Height Bracket Each analog waveform has a height bracket to the right of its object name. Overlay groups have one height bracket for the entire group. June 2000 134 Product Version 6.5 Signalscan Waves User Guide Analog Analysis You use a signal’s or group’s height bracket to change the height of its analog waveform(s) as follows: 1. Move your mouse pointer over the top or bottom of the bracket that is associated with the analog object name or overlay group. The pointer changes to a double-headed vertical arrow. 2. While the pointer is a double-headed arrow, click and drag the bracket up or down to the desired height. The minimum height of an overlay group is the height that is required to show the names of all the nodes in the group. 3. Release the mouse button. The waveforms and the grid underlying the waveforms (if the grid is displayed — see “Customizing the Display of Analog Signals” on page 137 for more information on displaying and hiding grids) compress or expand to fit the new height. Zooming and Panning Analog Signals and Overlay Groups In the Waveform window, analog signals and overlay groups have their own Y axis. This means that you can pan each analog signal and overlay group independently of the Waveform pane vertical scroll bar and that you can have a different Y zoom factor for each analog signal and overlay groups in the window. The X axis, however, is common to all nodes in the Waveform pane. Zooming and scrolling the X axis for any signal scrolls all other signals in the Waveform pane. Using the Vertical Zoom Features The Waveform window has vertical zoom capabilities for all analog signals and overlay groups. You can access these signals from the button bar (ZoomInY, ZoomOutY, and ZoomOutYFull buttons) or from the View—Zoom menu. Note: Digital signals do not have Y zoom capability in Signalscan Waves, so you must select an analog signal in the Names pane of the Waveform window before you can use the ZoomInY, ZoomOutY, or ZoomOutYFull buttons and View—Zoom menu options. If you do not select an analog signal, Signalscan Waves does not enable the Yzoom buttons and menu options. The ZoomInY and ZoomOutY buttons zoom and View—Zoom menu options zoom in and out on a signal or overlay group by a factor of 2. June 2000 135 Product Version 6.5 Signalscan Waves User Guide Analog Analysis You can zoom in and out more precisely on the Y axis of a signal or overlay group by setting the minumum and maximum values for that signal or group. See “Minimum and Maximum Values” on page 138 for instructions on how to do this. In addition to the ZoomInY and ZoomOutY options, the Waveform window also has a ZoomOutYFull button and a ZoomOutYFull menu option under the View—Zoom menu. ZoomOutYFull adjusts the display in the Waveform pane to show the entire range of Y values for the selected signal or overlay group. The ZoomOutYFull feature provides you with a convenient way to set the display of an overlay group to include the minimum and maximum values of the overlay group. The minimum value is the lowest value of all the objects in the overlay group, and the maximum value is the highest value of all the objects in the overlay group. Using the Horizontal Zoom Features The Waveform window has horizontal zoom capabilities for all analog and digital signals and overlay groups. You can access these X zoom options from the button bar (ZoomInX , ZoomOutX , and ZoomOutXFull buttons) or from the View—Zoom menu. The time axis (X axis) is the same for all signals and overlay groups. Therefore, when you select one of the X zoom options, every signal in the Waveform pane zooms in or out equally. The ZoomInX and ZoomOutX features zoom in and out on the X axis by a factor of 2. You can also zoom within a specified horizontal area. To do this, position Cursor1 and Cursor2 around the area that you want to display in the Waveform pane, and then choose View—Zoom—Between Cursors (Control-z) or simply click your right mouse button in the Waveform pane. In addition to using the button bar and menu options, you can access the X zoom options quickly by using keyboard shortcuts. Press Control-i to zoom in, Control-o to zoom out, Control-f to zoom out full, and Control-z to zoom between cursors. Using the Area Zoom Feature In addition to its axis-specific zoom features, Signalscan Waves has an area zoom feature that lets you zoom to display a specific rectangular area of an analog waveform or overlay group. To define a rectangular area and zoom in on it, hold down the Shift key while you press and drag your left mouse button. When you release the mouse button, everything in the Waveform pane is zoomed in. June 2000 136 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Panning Analog Waveforms Panning is similar to zooming in that when you pan horizontally, you pan along the X axis of all of the signals in the Waveform pane at the same time, whether those signals are analog or digital. However, you can also separately pan along the Y axis of each analog signal or overlay group. To pan all of the nodes in the Waveform pane horizontally, press the left and right arrows on your keyboard or use the scroll bar at the bottom of the Waveform pane. To pan all of the signals in the Waveform pane vertically, press the up and down arrows on your keyboard or use the scroll bar on the right side of the Waveform pane. To pan a single signal or overlay group vertically, first select the object that you want to pan from the Names pane. (To select an overlay group, you only need to select one object in that overlay group.) Then hold down the Shift key while you press the up and down arrows on your keyboard. Customizing the Display of Analog Signals signalscan Waves lets you customize the display of the analog waveforms in your Waveform window in several different ways. This section explains how to use the custom features of the analog waveform display. The custom analog display features that are described in this section are: ■ “Grids” on page 137 ■ “Data Points and Lines” on page 138 ■ “Minimum and Maximum Values” on page 138 ■ “Display Scale” on page 139 Grids You can use the View—Grid menu item on the Waveform window to enable or disable displaying a labeled grid in your waveform pane. Signalscan Waves automatically determines the width of the grid cells uses round numbers to label the grid wherever possible. You can save the option to display or hide the grid in a configuration file (.do file). To do this, select Wave Grid from the Preferences list in the Options for Saving a Do-File form. This saves the current grid setting in the Waveform window in a Do-File. You can also save your grid display preference by entering the following text in a Do-File: June 2000 137 Product Version 6.5 Signalscan Waves User Guide Analog Analysis define waveform window grid on Data Points and Lines By default, the Waveform window display analog waveform as lines. However, you can use the View—Analog Display Mode menu to display the analog waveforms as Points , Lines , or Points and Lines . Signalscan Waves displays all of the analog waveforms in the Waveform pane in the mode that you select. This display mode can be saved in a (.do file). Select Analog Draw Mode from the Preferences list in the Options for Saving a Do-File form. This saves the current drawing mode setting in the Waveform window in a Do-File. You can also save your analog draw mode preference by entering the following text in a Do-File: define analog waveform points See Appendix A, “Saving and Restoring Your Configuration” for more information on saving and restoring Do-Files. Minimum and Maximum Values You can display only a specific range of Y values of each analog signal and overlay group in your design. Setting the minimum and maximum values for a signal or overlay group is similar to using the Y zoom features that are described in “Using the Vertical Zoom Features” on page 135, but setting the minimum and maximum values is quicker if you know the range of Y values that you want to view. To set the range of values that you display for a given signal or overlay group, perform the following steps: 1. Select the signals and overlay groups whose Y values you want to limit in the Waveform pane display. 2. Choose Format—Define Analog Min/Max Values from the Waveform window main menu. The Set Analog Min/Max form appears, as shown in Figure 6-1 on page 139. June 2000 138 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Figure 6-1 Set Minimum and Maximum Values 3. Specify the range of values that you want to display in the Waveform window for the selected analog objects. If you have the grid display turned on, the Y-axis grid labels update to reflect the new minimum and maximum values for the selected signals, and the waveforms compress or expand appropriately. Note: If you specify a minimum value that is greater than the actual minimum value of a waveform, or if you enter a maximum value that is less than the actual maximum value of a waveform, that waveform is cropped in the display; only those portions of the waveform that are between the values that you specified are displayed. To view the cropped portions of a waveform, you must vertically pan that waveform. Display Scale You can specify the scale of the units in which selected analog objects are displayed in the Names pane of the Waveform window. For example, if an object normally shows a value of 4500uV in the Names pane, you can change its display scale to 10-3(m) to cause the object value to appear as 4.5mV in the Names pane. To change the display scale of an object in the Names pane, you perform the following steps: 1. Select the analog objects in the Names pane whose units you want to change. June 2000 139 Product Version 6.5 Signalscan Waves User Guide Analog Analysis 2. Choose Format—Define Variable Display Scale from the Waveform window main menu. The Variable Display Scale form appears, as shown in Figure 6-2 on page 140. Figure 6-2 Define Variable Display Scale Form 3. Press the appropriate toggle button to specify the scale of the units in which you want to display the values of the selected analog objects in the Names pane. The Names pane display changes to reflect your specifications. Note: The Waveform pane display is not affected by the variable display scale setting that you choose. For example, if the selected object shows a value of 4500uV, changing the display scale to 10-3(m) causes the same value to be displayed as 4.5mV in the Names pane. June 2000 140 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Saving Analog Display Configurations You can save several analog signal display settings as preferences in a Do-File (.do file). These include: ■ Contents of named groups (including expressions) ■ Zoom settings ■ Overlay Analog setting ■ Grid Display setting ■ Display (draw) mode ■ Default heights of specific waveforms ■ Default heights of specific height brackets You can also reproduce the current view by reading the configuration file. (Choose File—Execute Do-File from the Waveform window main menu to read the current configuration file.) See Appendix A, “Saving and Restoring Your Configuration,” for more information on using configuration files to create reusable analog signal display settings. Performing Analog-to-Digital Conversion You can convert any single analog object to a single-bit digital value by specifying the threshold values of the object. Similarly, you can convert a set of analog objects to a digital bus by specifying the threshold values for the entire set of objects. You use the Create Bus From Selected Variable(s) form to perform analog-to-digital conversion on both single signals and sets of signals. To convert an analog signals or set of signals to digital form, you create a bus that contains the signal(s) that you want to convert, as follows: 1. Click your middle mouse button in the Names pane to position the insertion marker at the location at which you want to place the new signal or bus. 2. Select the analog object(s) that you want to convert to digital format in the Names pane. Choose Edit—Create—Bus (Control-w). The Make Bus From Selected Variable(s) form appears, as shown in Figure 6-3 on page 142. June 2000 141 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Figure 6-3 Analog-to-Digital: Create Bus Form This form is the same as the one shown in Figure 4-32 on page 100, except that this one has space to enter one or two threshold values. These threshold fields appear only if you have selected one or more analog objects. Notice the units (V) that are associated with the threshold values. The other features of the Make Bus From Selected Variable(s) form work the same as they do for digital signals. (See “Defining and Using Busses” on page 99 for more information on making buses from sets of digital signals.) 3. Specify one or two threshold values for your digital signal(s). If you specify only one threshold value, then any of the original analog values that are less than the threshold value convert to 0 in the digital results, and any values that are greater than or equal to the threshold are converted to 1. If you specify two threshold values, then any of the original analog values that are less than the smaller of the two threshold values convert to 0, any of the original values that are greater than or equal to the larger of the two threshold values convert to 1, and any other values (those that are less than the larger threshold value and greater than or equal to the smaller threshold value) convert to x. If you perform analog-to-digital conversions and then save your configuration in a Do-File, you can see those conversions defined by atod functions in the .do file. If you want to create a script in a Do-File that automatically converts analog signals to digital buses, you can use the atod (analog-to-digital) function, as described in “Expression Example Using Analog to Digital Function” on page 145. June 2000 142 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Creating and Using Analog Expressions In the Signalscan Waves Waveform window, you can create and use expressions to perform operations on both analog and digital signals, and you can display the waveforms of the results of the operations that you perform. Signalscan Waves has a special set of operations for the analog signals in your designs, and the waveform viewer shows the results of analog operations in a unique way. To display the value of an analog expression as an object in the Names pane of the Waveform window and to show the waveform of the results of that expression in the Waveform pane, you perform the following steps: 1. Click your middle mouse button in the Names pane to position the insertion marker at the location at which you want to place your new expression object. 2. Choose Edit—Create—Expression from the Waveform window main menu. The Create Expression form displays as shown in Figure 6-4 on page 143. Figure 6-4 Create Expression Form 3. Optionally, enter a name for the new object in the Enter Expression Name field. If you do not enter a name, Signalscan Waves uses the expression itself as the expression name in the Names pane of the Waveform window. June 2000 143 Product Version 6.5 Signalscan Waves User Guide Analog Analysis 4. Enter an expression in the Enter Expression field using any combination of the operations listed in Table 6-1 on page 144: Table 6-1 Analog Expression Operations +x –x x+y x–y x*y x/y x%y x ** y x<y x <= y x>y x >= y x == y x != y abs(x) acos(x) asin(x) atan(x) atan2(y,x) atod(x,y[units][,z[units]]) cos(x) cosh(x) exp(x) hypot(x,y) log(x) log10(x) sin(x) sinh(x) sqrt(x) tan(x) tanh(x) 5. Click the OK button on the Create Expression form. The new object appears at the insertion marker. Note: If you use expressions on analog objects, Signalscan Waves may not be able to draw smooth waveforms of the results of those expressions, in the following situations: ■ When you create the expression, if not all of the objects that you use in the expression are visible in the Waveform window. ■ When you perform certain operations on an analog signal whose value changes infrequently, or when you zoom in too far on an analog signal after applying certain operations to it. This happens because Signalscan evaluates all expressions except >, >=, <, <=, ==, and != only at the data points of the expression operands. Escaping Special Characters You can use escape special characters in an analog expression, just you escape characters in a Verilog expression. To escape special characters in an analog expression, enter a backslash (\) in front of the object name, and then put a space character after the object name to end the escape and correctly interpret any remaining parts of the expression. For example: abs(\N1(v) ) Specifying Expressions with Constant Values If you use a constant value in your expression, you can append an abbreviation for units, such as s, ns, V, or mV, to the constant. June 2000 144 Product Version 6.5 Signalscan Waves User Guide Analog Analysis The power (**) and square root (sqrt) operations result in the removal of units from the operands. Specifying Expressions in a Do-File You can specify expressions that you want to apply to analog signals as objects in a Do-File. To define an analog expression as an object in a Do-File, enclose the expression in double quotation marks and use it in place of an object name in any legal Do-File statement. For example: add group A "atod(X1.XI26.PL2,0.6V,2.7V)" Expression Example Using Analog to Digital Function You can convert any analog object to a single-bit digital value by using the atod (analog to digital) function. The syntax of the atod function is: atod(objectname ,threshold1 [units ][,threshold2 [units ]]) If you use the atod function, and the analog value that you are converting has units associated with it, then you must specify units for the threshold value(s). The threshold value units must be compatible with the analog value units. This example shows you how to create an expression object that uses the atod function to display the waveform of an analog signal in digital format in the Waveform window. Note: This example uses the atod function only to illustrate the process of creating and viewing an analog expression as an object. This example is not intended to illustrate the best way to perform analog-to-digital conversions, as when you are using the Signalscan Waves Waves GUI, it is much easier to use the Create Bus From Selected Variables form to convert analog signals to digital format. (See “Performing Analog-to-Digital Conversion” on page 141 for instructions on how to do this.) Figure 6-5 on page 146 shows an example of using the atod function in the Create Expression form. June 2000 145 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Figure 6-5 Analog-to-Digital: Create Expression Form Performing Measurements on Analog Signals You can use Cursor1 and Cursor2 to perform several measurements on the analog signals that you display in the Waveform window. You use the View menu on the Waveform window to access the following analog measurement functions: ■ “Value at Cursors” on page 147 ■ “Slope For Values at Cursors” on page 148 ■ “Minimum, Maximum, and Peak-to-Peak Between Cursors” on page 150 ■ “Rise/Fall Time at Cursor1” on page 151 ■ “Average Values Between Cursors” on page 153 ■ “RMS Values Between Cursors” on page 155 June 2000 146 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Value at Cursors The View—Value at Cursors menu option on the Waveform window lets you measure the amount by which an analog object’s value changes over a specific time interval. To measure the amount by which each of several analog objects changes over a specific time interval, you perform the following steps: 1. Select the objects whose value changes you want to measure from the Names pane of the Waveform window. 2. Position Cursor1 and Cursor2 at the start and end times of the interval over which you want to measure the value changes of the selected objects. Choose View—Value at Cursors from the Waveform window main menu. The Value window appears, as shown in Figure 6-6 on page 147, displaying the values at Cursor1 and Cursor2 and the difference between those values for each object that you selected. If you move the cursors, these values update accordingly. Figure 6-6 Value at Cursors June 2000 147 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Slope For Values at Cursors The View—Slope For Values at Cursors menu option lets you measure the slope of the the curve of an analog object between two points in time. To measure the slopes of the curves of several analog objects over a specific time interval, you perform the following steps: 1. Select the objects whose slopes you want to measure from the Names pane of the Waveform window. 2. Position Cursor1 and Cursor2 at the start and end times of the interval over which you want to measure the slopes of the selected objects. 3. Choose View—Slope For Values at Cursors from the Waveform window main menu. A window appears, as shown in Figure 6-7 on page 149, displaying the slope between the two points that are defined by Cursor1 and Cursor2 for each object that you selected. If you move the cursors, Signalscan Waves recalculates the slopes accordingly. June 2000 148 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Figure 6-7 Slope For Values at Cursors June 2000 149 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Minimum, Maximum, and Peak-to-Peak Between Cursors The View—Min/Max/Peak-to-Peak Between Cursors menu option lets you measure the minimum, maximum. and peak-to-peak values over a specifc time interval for one or more objects. To measure the minimum, maximum, and peak-to-peak values for several objects over a specific time interval, you perform the following steps: 1. Select the objects whose minimum, maximum, and peak-to-peak values you want to measure from the Names pane of the Waveform window. 2. Position Cursor1 and Cursor2 at the start and end times of the interval over which you want to measure the values for the selected objects. 3. Choose View—Min/Max/Peak-to-Peak Between Cursors from the Waveform window main menu. A separate window appears, as shown in Figure 6-8 on page 150, displaying the minimum, maximum, and peak-to-peak values for the area between Cursor1 and Cursor2 for each object that you selected. If you move the cursors, Signalscan Waves recalculates these values accordingly. Figure 6-8 Min/Max/Peak-to-Peak Between Cursors June 2000 150 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Rise/Fall Time at Cursor1 The View—Rise/Fall Time at Cursor1 menu option lets you measure the rise time or fall time of an analog object in the Waveform window. To measure the rise or fall times of several objects in the Waveform window, you perform the following steps: 1. Select the objects whose rise or fall times you want to measure from the Names pane of the Waveform window. 2. Position Cursor1 over a rising or falling edge of an object or group of objects. 3. Choose View—Rise/Fall Time at Cursor1 from the Waveform window main menu. A separate window appears, as shown in Figure 6-9 on page 152, displaying the rise or fall times for each selected signal at Cursor1. Siganscan Waves calculates these values using the object values and thresholds that you specify. Note: For the rise or fall time to have a value for a given object, the value of that object at Cursor1 must be between the specified thresholds. You can specify different thresholds by editing the Low Threshold and High Threshold fields and then clicking the Apply button in the Rise/Fall Time window. June 2000 151 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Figure 6-9 Rise/Fall Time at Cursor1 June 2000 152 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Average Values Between Cursors The View—Average Values Between Cursors menu option lets you measure the average value of an analog object over a specific time interval. To measure the average values of several objects over a given time interval, you perform the following steps: 1. Select the objects whose average values you want to measure from the Names pane of the Waveform window. 2. Position Cursor1 and Cursor2 at the start and end times of the interval over which you want to measure the average values of the selected objects. 3. Choose View—Average Values Between Cursors from the Waveform window main menu. A separate window appears, as shown in Figure 6-10 on page 154, displaying the average value of each object that you selected over the time interval that you defined with Cursor1 and Cursor2. If you move the cursors, Signalscan Waves recalculates the average value of each object accordingly. June 2000 153 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Figure 6-10 Average Values Between Cursors June 2000 154 Product Version 6.5 Signalscan Waves User Guide Analog Analysis RMS Values Between Cursors The View—RMS Values Between Cursors menu option lets you measure the RMS (root mean square) value of an analog object over a specific time interval. To measure the RMS values of several objects over a given time interval, you perform the following steps: 1. Select the objects whose RMS values you want to measure from the Names pane of the Waveform window. 2. Position Cursor1 and Cursor2 at the start and end times of the interval over which you want to measure the RMS values of the selected objects. 3. Choose View—RMS Values Between Cursors from the Waveform window main menu. A separate window appears, as shown in Figure 6-11 on page 156, displaying the RMS value of each object that you selected over the time interval that you defined with Cursor1 and Cursor2. If you move the cursors, Signalscan Waves recalculates the RMS value of each object accordingly. June 2000 155 Product Version 6.5 Signalscan Waves User Guide Analog Analysis Figure 6-11 RMS Value Between Cursors June 2000 156 Product Version 6.5 Signalscan Waves User Guide 7 Transaction-Based Verification The information presented in this chapter requires a license for the Affirma verification cockpit (#29500), which is available separately. Just as synthesis tools allow you to design at a higher level of abstraction (RTL versus gates), the tools in the transaction-based verification (TBV) package allow you to simulate and debug your design at a higher level of functionality (transactions versus signals). Signalscan allows you to analyze your design’s function at the transaction level, while still retaining the ability to work at the lower level details of your design’s interface protocols when necessary. To work at the transaction level, you create a transactor or TVM (Transaction Verification Module) that handles the transaction details for you. For example, you instruct the TVM to do a read, supply an address, and have the result returned. With this capability, you can construct large-scale tests that exercise TVMs rather than supply all of the protocol details in a vector set. Signalscan makes it easier to analyze simulation results for such systems because it allows you to view the transactions the TVM is performing directly instead of analyze miles of waveforms to figure out exactly what happened in your system. Transaction Representation This section describes the transaction representation used to store transactions in the SST2 database and subsequently view them in Signalscan. A transaction occurs on an interface , which is a collection of signals and buses that are monitored or controlled by a single finite state machine (FSM) in the design being verified. The FSM controls the activity on the interface, and therefore is known as a thread of control. A specific sequence of states (typically from Idle to Idle) that the FSM traverses is a transaction . Examples of transactions include read operations, write operations, and packet transmissions. A transaction has duration: It begins at some specific time and ends at some later time. June 2000 157 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification Figure 7-1 Sample Transaction Sequence on a Thread cpu0 read write write read read simulation time transaction Figure on page -158 shows a sequence of read and write transactions that occur on interface cpu0. All of the activity that occurs on this processor interface between the two arrows represents a write transaction. Only one thing at a time can occur on an interface, so transactions cannot overlap. Transactions that overlap occur on multiple threads. See “Multiple Threads” on page 159. While the sequence of transactions by itself is useful, its value is somewhat limited during debugging. You can associate pieces of information, called properties , with each transaction to aid in your understanding of the system. For example, it is useful to show address and data. Figure 7-2 Transactions with Properties cpu0 read addr:0xffff428a data:0x07f264b9 write addr:0xffff779c data:0x6842d6aa label other properties Figure on page -158 shows two transactions, each with three properties. The top-most property is the label, a short user-defined string that identifies the transaction. Below the label are two additional properties: addr and data. Although it is shown this way in the example, there is no need to have the same properties on different transactions. In this example, addr and data happen to be meaningful on both transactions, but if they were not, there would be no need to carry around unnecessary properties. There is no limit to the number of properties that you can associate on a transaction. Signalscan displays both the property’s name (for example, addr) and its value (for example, 0xffff428a). Property values are integers, floating point numbers, strings of any length, or four-value (0,1,X,Z) bit vectors of any length. June 2000 158 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification Hierarchical Transactions Transactions sometimes occur in phases. The burst read shown in Figure on page -159 below is an example of such a transaction. Figure 7-3 Hierarchical Transaction cpu0 burst_read addr:0xffff428a data:0x07f264b9 init byte0 byte:07 byte1 byte:f2 byte2 byte:64 byte3 byte:b9 The burst read begins with an init phase followed by four single byte reads. In verifying the design, there are times when you only need to consider the top level transaction, and there are other times when the finer granularity of the individual phases is useful. Signalscan makes both available. The subordinate phases are called child transactions. Their parent is the top level burst read. Children occur on the same thread as their parent and cannot overlap, for the same reason that no transaction can overlap on the same thread. A child transaction may begin at (or after) the same time as its parent begins and must end before (or at the same time as) its parent ends. That is, children transactions cannot extend outside of the time bounds of their parents. There is no limit to the number of levels of hierarchy that you can create. You can associate properties with children. The properties of a parent can also be considered to be properties of a child if the child does not specifically set them. In the example in Figure on page -159 above, the children of the read transaction can also be considered to have addr and data as properties. Special deferred properties allow a child to set the property on a parent. Chapter 9, “Recording Transactions,” describes the concept and mechanisms of property inheritance in detail. Multiple Threads A single FSM is typically capable of performing several different types of transactions. However, since single FSMs can only be performing a single traversal of its states at a time, all of its transactions are necessarily sequential (non-overlapping). Many protocols (for example, protocols for pipelined processor buses) have the concept of multiple overlapping operations. However, these protocols actually require two or more interacting FSMs to June 2000 159 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification implement the protocol. Such protocols really represent two independent, yet related, interfaces or threads within a single TVM. These interfaces operate concurrently and independently, but data and control information moves between them. Sometimes, the interfaces of the system interact closely. For example, the address and data tenure interfaces of a pipelined processor bus protocol interact closely to transfer data between a bus master and a bus slave. Other times, the interfaces of a system interact loosely. For example, in a design that bridges traffic from one bus (the processor bus) to another bus (an IO expansion bus), the activity on the processor interface may cause some related activity to occur on the IO interface at some later time. These independent cause and effect transactions are related through the expected operation of the design itself. In addition to allowing you to keep track of activity on a single interface or thread, Signalscan provides a means for you to keep track of the relationships between transactions that occur on different interfaces. The mechanism used relies on transaction tags . Transaction tags allow you to link transactions together, forming predecessor/successor relationships between transactions. With such relationships in place, you can use Signalscan to view the relationships between transactions. A transaction that causes another transaction to occur is the predecessor of the consequent transaction. Conversely, the consequent transaction is the successor of the initiating transaction. For example, consider testing a system where the processor TVM controls both an address tenure interface and a data tenure interface. The test issues a read request to the processor TVM, which causes a transaction on the address tenure interface. Some time later, when the system returns the read data, the related data tenure transaction occurs on the data tenure interface as shown in Figure on page -160: Figure 7-4 Multiple Interacting Threads test read predecessor successor read addr_tenure predecessor successor data_tenure June 2000 read 160 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification The transaction for the address tenure succeeds the test’s transaction (requesting the TVM to perform the read), and the data tenure transaction succeeds the address tenure transaction. Conversely, the test’s read transaction precedes the address tenure transaction and the address transaction precedes the data transaction. These relationships are maintained in the SST2 database and can be viewed in Signalscan. Creating Transactions from Verilog Signalscan provides a set of system tasks, collectively known as the Transaction Recording System Tasks (TRST), that you use to put transaction information into the SST2 database. This section outlines the basic set that you can use to do most of what is necessary to record transactions. The full documentation on all of the TRST functions is in Chapter 9, “Recording Transactions.” Defining Basic Transactions Verification engineers typically use BFMs (Bus Functional Models) as part of their verification process. They use $display calls to write specific information about model activity into a log file. To record transaction information from your BFM or TVM (Transaction Verification Module) into the SST2 database, put a TRST call in the same place that you would normally use $display. At first glance, there are two fundamental ways that you can record transactions. For maximum compatibility with $display, you can use the $trans_display call. For greater functionality, use the $trans call. $trans_display The $trans_display call takes the same arguments as Verilog’s $display call. Its format is: $trans_display(format_string ,args ); In many cases, you can simply replace all of the $display calls that you currently use with $trans_display calls. The effect you get is that a transaction begins (on the thread for that TVM) at the time that the $trans_display executes, and ends at the time the next $trans_display call executes (for that thread). The transaction has a description that matches what the $display would have printed out to the log file. June 2000 161 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification Like $display, $trans_display can take multiple format strings, each with its own argument list. The $trans_display call uses the first format string as the transaction’s label. That is, an alternate way to use $trans_display is: $trans_display(label_format_string ,args ..., description_format_string ,args ...); The label is typically a very short description of the transaction, whereas the description is typically more verbose. Labels allow you to see quite a bit of information in the transaction display when you have zoomed out a little. Descriptions allow you to see more detail after zooming in the Signalscan Waveform Pane. $trans The $trans call is the primary transaction call. It is very similar to $display, but it gives you more control over what gets stored into the transaction record. Specifically, you can assign properties and use options as follows: $trans(options ,property_assignments , label_format_string ,args ..., description_format_string ,args ...) The following example shows how you can assign properties to a transaction. Property assignments identify the name of the property and its value. Note that you can use expressions, and also note the use of the equals sign (=) in the string. The equals sign says you are doing a property assignment. $trans(options , "write_data=",p2_wrdata, "address=",((row_addr<<12)+col_addr), other_property_assignments , label_format_string ,args ..., description_format_string ,args ...) In addition, there are many options that can be applied to a transaction. One such option is the -trans_type option. See “$trans Variant Options” on page 206 for more information on transaction options. Syntactically, an option is specified as follows: $trans("-trans_type",trans_type , June 2000 162 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification other options , property assignments , label_format_string ,args ..., description_format_string ,args ...) $trans_event and $trans_error The $trans_event and $trans_error calls are two other functions that you can use for recording transactions. Both of these functions take the same arguments that the $trans call takes. The $trans_event call generates a zero duration child transaction of the current transaction. This is useful for recording time-specific properties of the parent transaction. The $trans_error call also generates a zero length child transaction. In addition to the properties in the argument list, it sets the error property of the transaction to true, indicating that the current transaction has an error. Errors can be easily searched and viewed in the Signalscan Waveform Pane. In addition, errors are automatically tallied for each TVM individually, as well as globally, and the counts can be viewed in the Waveform Pane along with the individual transactions. Defining Bounded and Hierarchical Transactions The $trans and $trans_display calls are sufficient for most cases. However, they have two limitations: ■ They presume that a given transaction is always active until the next transaction starts. ■ They cannot be used to build deeper hierarchies of transactions. Note that event transactions ($trans_error, $trans_event) are always children of the current transaction. So, in that sense, $trans calls can be used to build two-deep hierarchies. There are two additional calls that address both of these limitations: $trans_begin and $trans_end. These calls can be used to create disjoint transactions or to build transaction hierarchies. The $trans_begin call takes the same arguments as the $trans call takes. The $trans_end call does not take a label or a description, but can be used to set properties on the current transaction before ending it. Figure 7-5 on page 164 shows a simple example that illustrates how to build hierarchical transactions using these calls. This code creates a transaction view that looks similar to Figure 7-3 on page 159. June 2000 163 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification Figure 7-5 Hierarchical Transactions Source: $trans_begin an $trans_end $trans_begin("burst_read"); // starts transaction (parent) $trans_begin("init"); // starts child transaction #5; // do some work $trans_end; #5; // ends "init" child transaction // delay makes transactions disjoint for(i = 0; i < 4; i = i + 1) begin $trans_begin("byte%d",i); // starts child transaction #10; // do some more work $trans_end; // ends "byte" child transaction end $trans_end; // ends parent transaction Any $trans or $trans_begin calls that are executed after a $trans_begin, but before its matching $trans_end, introduce another level of hierarchy in transaction recording. This is useful for simple code segments as shown in Figure 7-5 above, but also can be used to trace nested task executions. You can accomplish this by having all tasks execute a $trans_begin at the beginning of their execution, and a $trans_end prior to finishing. Assigning Properties Previous sections of this document described how you can associate properties with specific transactions by using the $trans call or its variants. However, sometimes it is useful to associate a property with a transaction that has already started. Use the $set_property call to do that. For example, in the case of a read transaction, the read data can be associated with the currently open transaction as shown below: $trans_begin("read"); // start transaction ... // initiate the protocol @(read_acknowledgement) // wait for read data $set_property("data=",rd_data); // associate read data with the // current transaction $trans_end; // end the transaction Alternatively, the read data can be associated with the transaction by using the $trans_end call directly, as shown below: June 2000 164 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification $trans_begin("read"); // start transaction ... // initiate the protocol @(read_acknowledgement) // wait for read data $trans_end("data=",rd_data); // associate read data and // end the transaction TVM Declaration/Registration There are two calls that allow you to identify a module as either a test or a TVM: $bfm; $test; These calls are optional. If a module uses any TRST system tasks and does not use one of these calls, then that module is presumed to be a TVM. TVM transactions and test transactions are displayed in different colors in the Signalscan Waveform Pane. Defining Multi-Threaded TVMs Up to this point, this section has discussed only single threaded TVMs. Many TVMs (for example, TVMs for pipelined processor protocols) have more than one thread of execution, and therefore must record transactions on more than one thread (as shown in Figure 7-4 on page 160). For TVMs with multiple threads, use the following call to identify the different threads: $thread(interface_name ); where the interface_name is a one- to four-character string literal that identifies the name of the interface. The $thread call performs two functions: ■ It declares the name of the interface (if it has not previously been declared). ■ It indicates that all of the TRST calls executed within this block belong to the named interface. In this context, the term block means either a Verilog named block or a Verilog task. Note that once a thread is declared using the $thread call with a string literal argument, subsequent calls to $thread can have a Verilog variable as the argument, where the variable contains the name (32-bit, four-character) of the pre-declared thread. This is useful when using a single Verilog task to perform some function on a variety of different threads. June 2000 165 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification Single-threaded TVMs may use the $thread call, but it is optional. Multi-threaded TVMs must use the $thread call, and must also ensure that: ■ Every task that uses any TRST call has a $thread call to identify which thread the TRST calls belong to. ■ Every initial or always block that uses any TRST calls is a Verilog named block, and has a $thread call that identifies which thread the TRST calls belong to. The following three examples show how to use the $thread call in initial blocks, always blocks, and Verilog tasks. For more detailed information and additional examples, see “Thread System Tasks” on page 198. Example 1 initial begin : block1 // named block $thread("addr"); // Declare thread "addr". // Any number of: // TRST calls, including: // o $trans // o $trans_begin/$trans_end // o $trans_error // o $set_property // o $get_trans_tag // Verilog statements, including: // o begin/end // o fork/join // o task calls // o blocking statements (#, wait) // For example: do_work("addr"); // Call Verilog task, passing // interface info. end // end of named block Example 2 always begin : block2 // named block $thread("data"); // Declare thread "data". June 2000 166 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification // Any number of: // TRST calls, including: // o $trans // o $trans_begin/$trans_end // o $trans_error // o $set_property // o $get_trans_tag // Verilog statements, including: // o begin/end // o fork/join // o task calls // o blocking statements (#, wait) // For example: do_work("data"); // Call Verilog task, passing // interface info. end // end of named block Example 3 task do_work // Verilog task input [31:0] thread; // variable containing thread name begin // block does not have to be named $thread(thread); // Identify which thread the TRST // calls in this task should affect. // This can be a constant. // Any number of: // TRST calls, including: // o $trans // o $trans_begin/$trans_end // o $trans_error // o $set_property // o $get_trans_tag // June 2000 Verilog statements, including: 167 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification // o begin/end // o fork/join // o task calls // o blocking statements (#, wait) end endtask // end task Identifying Related Transactions In addition to creating transactions, the TRST calls allow you to define relationships between transactions. The relationships are stored into the SST2 database along with the other transaction information so that you can see the relationships between these transactions by selecting operations from the Signalscan Control menu, such as: ■ Show Related Transactions ■ Show Predecessors ■ Show Successors Identifying relationships between transactions depends on linking transactions using a transaction tag . This is a three-step process: 1. After starting a transaction (the predecessor transaction) in one module, that module can create a transaction tag for the current transaction, and store the transaction tag into a 64-bit Verilog register. 2. Using any desired mechanism, the module that started the predecessor transaction passes the transaction tag to another module. For example, this could be accomplished by calling a task in the other module, passing the transaction tag as one of the arguments to the task. 3. The other module starts its own transaction (the successor transaction), and links it to the other transaction by using the $trans_tag function with the -link option. See “$trans_tag” on page 211. The following example shows how to use transaction tags to create a relationship between two different threads in a single, multi-threaded TVM: module checker(trigger_event1, trigger_event2, other_input/output_ports); input trigger_event1,trigger_event2; ... June 2000 168 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification reg [31:0] trans_tag; integer thread_ref; always @(trigger_event1) begin : block1 $thread("T1"); $trans_begin("predecessor", "I'm the predecessor!"); trans_tag = $trans_tag_get; // perform some protocol for a while... ... $trans_end; // and then wait for the other thread to grab the trans tag // before proceeding with the next transaction... @(trans_tag); end always @(trigger_event2) begin : block2 $thread("T2"); $trans_begin("successor", "I'm the successor!"); $trans_tag("-link",trans_tag); // signal to the other thread that the trans_tag has been // "grabbed" trans_tag=~trans_tag; // perform some protocol for a while... ... $trans_end; end endmodule This is a simple example of a multi-threaded TVM that shows the basic mechanisms: ■ Getting the transaction tag from the predecessor transaction ($trans_tag_get). June 2000 169 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification ■ Storing it somewhere (trans_tag) where the successor transaction can retrieve it. ■ Linking the successor transaction (-link option on $trans_tag). Since it is a multi-threaded TVM, this example also shows proper use of the $thread call (which was described in “Defining Multi-Threaded TVMs” on page 165). Note: This example also points out another important characteristic of linking transactions with transaction tags: Only one successor transaction can be linked to a predecessor with a single transaction tag. To link several transactions to a single predecessor, you must create a separate transaction tag for each transaction to be linked; each successor transaction is linked to the predecessor using its own transaction tag. This is shown in the next example, which illustrates how you can form a connection between transactions from a test (in one Verilog module) to several independent TVMs (each in separate modules): module top; wire clk; wire[31:0] stimulus; wire[31:0] response; bfm_src master (clk, stimulus); my_design duv (clk, response, stimulus); bfm_sink slave (clk, response); endmodule module test; integer i; initial begin for (i=0;i<20;i=i+1) begin $trans_begin("test_loop_%d",i); fork begin master.stim($trans_tag_get,control_args1); master.stim($trans_tag_get,control_args2); master.stim($trans_tag_get,control_args3); master.stim($trans_tag_get,control_args4); end begin June 2000 170 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification slave.check($trans_tag_get,control_args1); slave.check($trans_tag_get,control_args2); slave.check($trans_tag_get,control_args3); slave.check($trans_tag_get,control_args4); end join $trans_end end end endmodule module bfm_src(clk, stim_out); input clk; output [31:0] stim_out; ... task stim input pred_tag; ... begin $trans_begin("stim task", "I'm one of two successors"); $trans_tag("-link",pred_tag); // Do the protocol for this TVM, // sending stimulus out the stim_out port, to the DUV. ... $trans_end; end endtask endmodule module bfm_sink(clk, resp_in); input clk; input [31:0] resp_in; ... June 2000 171 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification task check input pred_tag; ... begin $trans_begin("response task", "I'm the other of the two successors"); $trans_tag("-link",pred_tag); // Do the protocol for this TVM, // receiving responses from the DUV and checking the results. ... // Mark any errors that occur. if (actual_response !== expected_response) $trans_error("incorrect response!", "expected=",expected_response, "actual=",actual_response); ... $trans_end; end endtask endmodule In this example, the bfm_src TVM sends stimulus to the DUV, which in turn eventually sends responses to the bfm_sink TVM. The DUV (as well as some other details) is not shown, in order to enhance the clarity of the transaction processing example. During simulation, the test starts a transaction of its own and then initiates tasks in both of the TVMs in parallel. The transaction created by the test is the predecessor to the transactions in the TVMs. In this example, every test transaction has eight total successors: four in the stimulus TVM and four in the checking TVM. Again, this is a simple example, but it shows the basic mechanisms: ■ Getting the transaction tag from the predecessor transaction ($trans_tag_get). ■ Storing it somewhere (in the task’s input argument) where the successor transaction can retrieve it. ■ Linking the successor transaction (-link option on $trans_tag). June 2000 172 Product Version 6.5 Signalscan Waves User Guide Transaction-Based Verification This example also shows that there is exactly one transaction tag used to link exactly two transactions: the predecessor and successor. This is enforced by individual calls to $trans_tag_get for every call into the TVMs. One final characteristic to note about the -link option is that it only links that specific transaction (and its children) to the predecessor. More specifically, unless directed otherwise, the trans_tag (and therefore the link) officially ends when the linked transaction ends (for example, when the corresponding $trans_end executes). Once a transaction tag ends, it cannot be referenced again. There are mechanisms that allow you to end transaction tags at other times and to link to transaction tags more than once. These advanced options are described in detail in “$trans_tag” on page 211. Using the techniques described in this section to record relationships between transactions enables you to use the Show Related Transactions , Show Predecessors , and Show Successors features on the Signalscan Waveform Window Control menu. June 2000 173 Product Version 6.5 Signalscan Waves User Guide 8 Viewing Transactions The information presented in this chapter requires a license for the Affirma verification cockpit (#29500), which is available separately. Basic Transaction Elements Thread A thread , or interface , is analogous to a variable. Each thread occupies a single row on the Waveform Window and can be selected from within the Design Browser. Property A property is a name/value pair. Properties can be associated with TVMs, threads, and transactions. The most common usage of properties is for annotating transactions. Transaction Transactions appear as blue boxes on threads. Each transaction contains a set of properties that are shown within the box. Transaction threads, or interfaces, appear in the Design Browser along with signals and variables in each scope. You can select a thread and add it to the Waveform Window in the same manner that you select and add other objects. Each transaction has a label at the top and a set of properties. You can drag the row height control at the right edge of the Name Pane to reveal more or fewer properties in the transaction box (see Figure 8-1 on page 175 below). Select Control—Show Properties to display a window that contains all the properties for the selected transaction. See “Transaction Navigation” on page 176 for a discussion on transaction selection and navigation. June 2000 174 Product Version 6.5 Signalscan Waves User Guide Viewing Transactions Figure 8-1 Transaction Properties Transaction Hierarchies Transactions can be nested in the Verilog source using the $trans_begin and $trans_end calls. For any selected transaction, a subordinate transaction is called its child and its superordinate transaction is called its parent . When you first select a thread and view it in the Waveform Window, the transactions that are visible are the top-most of each transaction hierarchy in the thread. To view more levels, select the thread in the Names Pane on the left side of the window and select Control— Show Child Transactions . This adds one or more transaction rows to the display. These rows have the same name as the thread, with a bracketed number indicating the hierarchy depth that the row represents. Select Control—Show Parent Transactions to add the parent row to the display (see Figure 8-2 on page 176 below). Once added, you can delete child or parent rows as desired. It is not necessary to have all levels of the hierarchy present if you do not need them as you analyze your design. June 2000 175 Product Version 6.5 Signalscan Waves User Guide Viewing Transactions Figure 8-2 Selected and Related (Highlighted) Transactions Transaction Navigation A transaction can be in one of three states: ■ selected ■ highlighted ■ neither highlighted nor selected June 2000 176 Product Version 6.5 Signalscan Waves User Guide Viewing Transactions At most one transaction can be selected at one time. The selected transaction is filled pink by default. Any number of transactions can be highlighted at one time. Highlighted transactions are filled green by default. You can change these colors on the Define Colors form (select Options—Define Colors ). To select a transaction, enter Control-click (click your left mouse button while holding down your Control keyboard key) while your mouse pointer is over that transaction. You can search for transactions that have a specific relationship to the selected transaction. The easiest way is to select Control—Show Related Transactions . This highlights transactions that are related to the selected transaction (see Figure 8-2 on page 176) and displays the Transaction List Window (see Figure 8-3 on page 177 below). Related transactions are located by first searching backward through the predecessor chain of the selected transaction until a transaction is located that has no predecessor. From that transaction, all successors are traversed and highlighted. This locates all transactions that have a common point of origin. Figure 8-3 Transaction List Window The Transaction List Window helps you navigate among transactions. The currently selected transaction appears in the top pane. The model name and the thread name appear along with June 2000 177 Product Version 6.5 Signalscan Waves User Guide Viewing Transactions the transaction begin time and duration. The list below shows all of the transactions that are related by the relationship selected in the pulldown menu at the top of the window. Select a different relationship to list a different set of transactions in the Transaction List Window and highlight the new set of transactions in the Waveform Window. Highlighted transactions do not automatically appear in the Waveform Window. You will see a change in the display only if the thread has already been added to the Waveform Window and the highlighted transaction is currently visible. In the Waveform Window, select Control—Add Unadded Highlighted Transactions to add to the Waveform Window threads with highlighted transactions that are not currently shown in the Waveform Window. Two check boxes in the bottom pane of the Transaction List Window control how much information you see about each transaction. You can turn on or off viewing of the full hierarchical name and the composite label. Buttons along the bottom provide additional navigational control. Prev Trans and Next Trans move the selection to the transaction either immediately prior or just after the selected transaction on the same thread. Prev Error and Next Error also move the selection. The Prev Error button searches for and selects the latest error transaction that is earlier than the currently selected transaction. Next Error searches for and selects the earliest error that is later than the current selection, also on the same thread. The Show Props button does the same thing as the Control—Show Properties menu option: It displays a window that lists all the properties assigned to the selected transaction. Locating Errors Issuing a $trans_error call in the Verilog model causes the enclosing transaction to be flagged as an error. A transaction so flagged appears with a red diamond as shown in Figure 8-4 on page 179. You can select a thread and then select Control—Show Next Error to search for the next error on that thread. The search begins at the position of the cursor. You can also use the Next Error and Prev Error buttons in the Transaction List Window to locate errors on a specific thread. June 2000 178 Product Version 6.5 Signalscan Waves User Guide Viewing Transactions Figure 8-4 Error Transaction Marked with a Red Diamond The error_count Variable Often, you do not know which thread has errors. Signalscan has a global transaction error rollup mechanism that simplifies the chore of locating errors in your design. All of the errors that occurred in your design are rolled up to a single variable called error_count. This variable contains markers for all errors no matter which thread they occurred on (see Figure 8-5 on page 180). At the top level of the design hierarchy is a scope called trans_global. Within that scope is another scope called trans_properties. Inside trans_properties is a variable called error_count. This is the variable that contains the global error rollup. Select this error_count variable and add it to the Waveform Window to provide an easy way to find errors. June 2000 179 Product Version 6.5 Signalscan Waves User Guide Viewing Transactions In the Waveform Window, position Cursor1 and select Control—Show Next Error to find the next error. Then select Control—Show Related Transactions to find out where the error is. This operation selects the error transaction and displays the Transaction List window. The selected error transaction and any related transactions are shown. Use the Prev Error and Next Error buttons to navigate to errors on the same thread, or go back to the error_count variable to find another error. Figure 8-5 Error Rollup: error_count June 2000 180 Product Version 6.5 Signalscan Waves User Guide 9 Recording Transactions The information presented in this chapter requires a license for the Affirma verification cockpit (#29500), which is available separately. Signalscan provides a set of system tasks, collectively known as the Transaction Recording System Tasks (TRST), that you use to put transaction information into the SST2 database. This chapter describes the TRST calls and their options, properties, and any side effects. This chapter discusses: ■ Transaction Objects ■ Properties ■ Transaction Recording System Tasks ■ Error Rollup ■ Verilog Plus Arguments June 2000 181 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Transaction Objects This section describes the kinds of objects that you can create and operate on with TRST calls: module instances (TVMs, tests, and DUVs), threads, transactions, transaction tags, and properties. Module Instances: TVMs, Tests, and DUVs Verilog contains module instances, and these can be BFMs (Bus Functional Models), test modules, or DUVs (modules describing the Design-Under-Verification). In the SST2 Database, they are recorded as TVMs (Transaction Verification Modules). This chapter is focused on the TVM writer and refers to the TVM as a specific kind of module instance. ■ Use the $bfm construct to declare and manipulate information on a BFM object. ■ Use a $test construct to declare and manipulate information on a test object. ■ Use a $duv construct to record transactions from within the Design-Under-Verification itself. Threads: TVM Threads, Test Threads A module instance can consist of multiple threads of execution. The always or initial blocks or branches of a fork can be considered threads in Verilog. A thread represents a single locus of control. A thread can only do one thing at a time. A thread in the TVM is sometimes referred to as an interface . A thread in the test is referred to as a test thread . A TVM can have multiple threads, and each one can do one thing at a time. Use the $thread construct to declare and manipulate information on a thread object. Signalscan displays the transactions on a thread on a single line. The TRST calls allow for flexible user designation of threads. Any named begin-end pair or task can be designated to be operating in a specific thread using a $thread system task. Transactions A thread can perform multiple actions, but only one action at a time. The occurrence of each action is recorded as a transaction . A transaction in the TVM is referred to as a TVM transaction . A transaction in a test is referred to as a test segment . This chapter refers June 2000 182 Product Version 6.5 Signalscan Waves User Guide Recording Transactions to all of these as transactions. Use the $trans, $trans_begin, and $trans_end, constructs to define transactions. Transaction Tags Transaction tags (or trans tags) are used to link cause and effect transactions together across thread boundaries. Use the $trans_tag_get and $trans_tag calls to set and use transaction tags. Properties TVMs, threads, and transactions have characteristics about them, and these characteristics are recorded as properties on the TVM, thread, or transaction. Properties have a name and a value. Both TVMs and threads are time invariant concepts; in a simulation they always exist. A transaction is time variant; in a simulation, it starts at a specific time, and it ends at a specific time. Properties are attached as characteristics to any of the three objects. See “Properties” below for more information. Properties Properties quantify and qualify an object. You can use them during and after a simulation for locating, filtering, sorting, reporting, and taking actions on an object. Properties are treated uniformly by all the property constructs. Properties are displayed as name-value pairs. Property Definitions A property is a value of a particular property definition, also known as a property def. A property definition is an association of the name of a property (see “Property Names” on page 184), the basic property type (see “Basic Property Types” on page 185) and the format used for viewing the property (see “Property Formatting” on page 187). Property definitions can be automatically created for you as you assign properties (see “Creating Property Definitions Automatically” below), or you can create property definitions explicitly (see “-property_definitions” on page 213). June 2000 183 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Searching for Property Definitions If a property definition is not made on an object before a property assignment is made, then higher level objects are searched to see if a property definition of the same name exists on them. For example, if a count property is assigned on a transaction, but the definition of it is not on the transaction, the parent thread is searched for a count property definition, and then the parent module instance is searched for a count definition. The first definition found is used. If no definition is found, then the type information is inferred by the rules in “Creating Property Definitions Automatically” below. Creating Property Definitions Automatically If no property definition exists for a property name, a property definition is created using the information about the value being assigned. The created property definition is placed on the object being given the property: a TVM, thread, or transaction. Both the basic property type (see “Basic Property Types” on page 185) and formatting (see “Property Formatting” on page 187) are inferred from the value as given in the Verilog construct. Table 9-1 illustrates the default type of a property based on the type of the value being assigned to the property. Table 9-1 Property Definition Inference Verilog Argument Basic Property Type Property Formatting null error - string literal or string parameter string ‘a real real none integer expression, integer integer parameter, or integer variable ‘s time variable time ‘d all others vector ‘h Property Names A property name begins with a letter or underscore and can contain letters, numbers or underscores. The names are case sensitive. June 2000 184 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Basic Property Types Property definitions can be one of several basic property types described in this section. You can use the type keyword strings listed in Table 9-2 below with any -property_definitions construct (see “-property_definitions” on page 213). Formatting property values is discussed in “Property Formatting” on page 187. Basic Type Strings Use the following string literals to declare the basic type of a property. In a property definition construct, one of these types must be declared. Table 9-2 Properties: Basic Type Strings Type String Description integer A 32-bit signed integer. string A character string of any length, containing any character except NULL, and terminated with a NULL. fstring Same as string, except the value specified must be a literal string containing format specifiers (%). Additional arguments must be provided for each of the % specifiers. See “Format Specifiers” on page 188. script Same as string except the value is a concatenation of multiple string literals with a newline added as a separator between the literals. The concatenation continues until the end of the $ PLI call is reached or the special string literal <eof> is found. boolean A 1-bit value, where 1 = true, 0 = false. real A double precision real. time A 64-bit time value. It is stored as the unscaled simulator time. vector A variable width 4 value/bit. June 2000 185 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Type Qualifiers The basic types can be qualified with one or more additional words. These words are used to specify special types of properties. Table 9-3 Properties: Basic Type Qualifiers Type Qualifier Description hidden A hint to Signalscan that the property should not be displayed with other transaction properties in the transaction box in the Waveform Window. The property can still be searched on and is viewable in the transaction Properties Window. devoted_line A hint to Signalscan that the property should have a line devoted to it when being displayed. multiline A hint to Signalscan that the value of the property should be displayed in multiple lines. not_genetic Specifies that the property cannot be used to satisfy the query rules set down in “Searching Property Values” on page 192. It is used in special cases to prevent a parent’s property from being inherited by a child. Any property that appears on every transaction is most likely not genetic. Thus most of the built-in properties are not genetic. arg=num Specifies that the property value is a task argument corresponding to position num in the task. input Specifies that the property is an input to the task. Used with arg above. output Specifies that the property is an output to the task. Used with arg above. inout Specifies that the property is an inout to the task. Used with arg above. June 2000 186 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Property Formatting Property formatting can be specified with a -property_definitions construct (see “-property_definitions” on page 213). Property formatting is specified with one of the following keywords: Table 9-4 Property Formatting Keywords Keyword Description ‘b Displays the value as unsigned binary digits. This corresponds to the Signalscan Command Language add command radix attribute of ‘b. ‘o Displays the value as unsigned octal digits. This corresponds to the Signalscan TX Command Language add command radix attribute of ‘o. ‘d Displays the value as unsigned decimal digits. This corresponds to the Signalscan TX Command Language add command radix attribute of ‘d. ‘s Displays the value as signed decimal digits. This corresponds to the Signalscan TX Command Language add command radix attribute of ‘s. ‘h Displays the value as unsigned hexadecimal digits. This corresponds to the Signalscan TX Command Language add command radix attribute of ‘h. ‘a Displays the value as ASCII characters. This corresponds to the Signalscan TX Command Language add command radix attribute of ‘a. none or The value displayed is defaulted by Signalscan TX. empty string Property Type and Format Examples The examples below illustrate the use of the type keywords listed in “Basic Property Types” on page 185 and formatting keywords described in “Property Formatting” on page 187. The -property_definitions construct is discussed in “-property_definitions” on page 213. Thread Properties Example $thread("-property_definitions", "wait_states","integer","‘s", "cycle_type,","string","‘a"); Transaction Properties Example $trans("-property_definitions", June 2000 187 Product Version 6.5 Signalscan Waves User Guide Recording Transactions "address","integer input arg=1","‘h", "rtn_data","integer output arg=2","‘h", "address=",address, "label","description"); Interpolated Format Strings A format string is a string literal that contains format specifiers (see Table 9-5 below). Additional arguments must follow the format string to satisfy the needs of the format specifiers. The result of interpolating a format string is a regular string with the format specifiers replaced with text as described in Table 9-5. Special Substitutions The special substitutions of the format string are the same as Table 14-1 Page 173 of IEEE Std 1364-1995 Specification of Verilog-HDL. Format Specifiers The format specifiers in Table 9-5 below are understood by $trans constructs for label and description, and by assignments to fstring properties. Table 9-5 Format Specifiers Format Specifier Description %d, %D, %i, %I The next argument in sequence is printed as a decimal number with leading spaces. %0d The next argument in sequence is printed as a decimal number with no leading spaces. %width.precisiond The next argument in sequence is printed as a decimal number with a minimum width of width and a maximum width of precision . %h, %H, %x, %X The next argument in sequence is printed as a hexadecimal number with leading spaces. The formats %H or %X print capital A-F characters. %0h The next argument in sequence is printed as a hexadecimal number with no leading spaces. June 2000 188 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Table 9-5 Format Specifiers, continued Format Specifier Description %width.precisionh The next argument in sequence is printed as a hexadecimal number with a minimum width of width and a maximum width of precision . %o, %O The next argument in sequence is printed as an octal number with leading zeros. %0o The next argument in sequence is printed as an octal number with no leading zeros. %width.precisiono The next argument in sequence is printed as an octal number with a minimum width of width and a maximum width of precision . %b The next argument in sequence is printed as a binary number with leading zeros. %0b The next argument in sequence is printed as a binary number with no leading zeros. %width.precisionb The next argument in sequence is printed as a binary number with a minimum width of width and a maximum width of precision . %s The next argument in sequence is printed as a string of characters to whatever width is required. %width.precisions The next argument in sequence is printed as a string of characters with a minimum width of width and a maximum width of precision . %f, %e, %E, %g, %G The next argument in sequence is printed as a floating point number. The %f format prints %6f by default. The %e format is exponential notation. The %g format picks a best fit between %f and %e. %width.precisionf The next argument in sequence is printed as a floating point number with a minimum width of width and a maximum width of precision . June 2000 189 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Table 9-5 Format Specifiers, continued Format Specifier Description %t, %width.precisiont The next argument in sequence is printed in a time format in the timescale of the current module (usually nanoseconds). The time format used can be specified with $tbv_timeformat. The %t specifier uses four format values to format a time quantity: units, precision, suffix, and minimum field width. For TRST calls, all four of these can be set by calling $tbv_timeformat. If you do not call $tbv_timeformat, TRST calls use -9 for units, 3 for precision, a null suffix string, and 20 for the minimum field width. %m, %M, %width.precisionm, %width.precisionM The full Verilog hierarchical instance name is printed as a string of characters similar to %s. No arguments are used. %n, %width.precisionn The Verilog module name of the current module is printed as a string of characters similar to %s. No arguments are used. %W, %width.precisionW The current module and thread name combination is printed if the call is within a thread. Otherwise, an empty string is printed. The form of the string printed is module-instantiation-threadname. The text is printed as a string of characters similar to %s. No arguments are used. %w, %width.precisionw The current thread name is printed if the call is within a thread. Otherwise, an empty string is printed. The text is printed as a string of characters similar to %s. No arguments are used. width If width is specified, then this is the minimum width of characters to be printed. If width begins with a minus sign (-), then the characters are left justified. If the leading digit of width is zero (0), then leading spaces are filled with zeros rather than spaces. precision If precision is specified, then this is the maximum width for non-floating point formats, or it is the number of precision digits for floating point formats. June 2000 190 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Format Specifier Examples The following example: "module %m, hex ‘h%h, decimal ‘d%d",10,10 produces: "module path.to.module, hex ‘hA, decimal ‘d10" Property Assignments The syntax to assign a property to an object with a construct consists of two arguments: ■ Name=. The first argument is a literal string consisting of the property name with a trailing equals sign (for example, count=). ■ Value. The second argument is the value to assign to the property, which can be a literal value, an expression, or a variable. This syntax allows property value assignments to be easily distinguished from options, format strings, and other arguments. It also makes it easy to distinguish the property names from the property values. Property Assignment Examples // Property on an interface: $thread("facility=","pooling"); // Property on a bfm: $bfm("family=","utopia"); // Transaction created with a static and a dynamic property: $trans("addr=",addr, "my_text=","Here is some text", ..); // Append information to an existing transaction: $set_property("-last_trans", "my_text2=","Another text property."); Multiple Property Assignments For any object that has a property assigned to it multiple times, the value of the property is the last value assigned. Previous values of the property are ignored. June 2000 191 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Removing Property Assignments See “-undef” on page 214. Searching Property Values You can search for the values of properties in Signalscan TX. Lower level objects such as a transactions inherit properties from higher level objects, such as a parent transaction, thread, or TVM. The property value search resolution has a strong notion of a child object inheriting the property values of its parent. A transaction can inherit properties from its parent thread or module instance, and a thread can inherit properties from its parent module instance. If the property value does not exist for the object, then the search is false for that property. A property that has a type qualifier of not_genetic is not used to satisfy the query resolution. In that case, the query resolution ignores the property for the purpose of resolving a property value. This is used in cases where the property is on every transaction or the property is not meaningful for child transactions. See “Type Qualifiers” on page 186. Transaction Recording System Tasks This section describes the transaction recording system tasks (TRST) that are available for verification designers, test writers, and model writers to implement transaction-based verification recording. TRST Introduction The TRST are grouped into categories by the objects that they operate on, including module instances, threads, and transactions, as shown in Table 9-6 below. The TRST also are grouped according to the recommended expertise of the user. Basic users only need to use a few calls. The levels of user expertise are: Basic The basic calls are the easiest to use, are the most robust, and require the least prior knowledge. They are not much harder to use than $display calls. Proficient The proficient calls require you to have more knowledge of the system, but are still easy to use. Almost all of the transaction functionality can be obtained with these calls. June 2000 192 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Advanced The advanced calls require you to have advanced knowledge of the system. These calls allow you to use the advanced features of the system if you have mastered the more advanced concepts. TRST calls are summarized in Table 9-6 below: ■ Module instance system tasks (transactor, test, or DUV) ■ Thread system tasks ■ Transaction system tasks ❑ Duration ❑ Event ❑ Replacements for $display ■ Transaction tag system tasks ■ Property system tasks ■ Utility system tasks The calls summarized in Table 9-6 are described in detail below the table. Table 9-6 TRST Calls: Organization and Summary System Task Description Module Instance System Tasks (TVM, Test, or DUV) These calls are used on a module instance. All of these calls accept the standard property options and assignments described in “Property Options” on page 213. See “Module Instance System Tasks” on page 195. $bfm Defines the current module to be a BFM module. $tbv_bfm $test Defines the current module to be a test module. $tbv_test $duv $tbv_duv June 2000 Defines the current module to be a part of the DesignUnder-Verification (DUV). 193 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Table 9-6 TRST Calls: Organization and Summary, continued System Task Description Thread System Tasks These calls define a thread. These calls accept the standard property options and assignments described in “Property Options” on page 213. See “Thread System Tasks” on page 198. $tbv_thread (proficient ) Declares a thread name, associates a thread with a named begin-end pair or a task, and attaches properties to the thread. Takes special arguments. Transaction System Tasks These calls are used to create transactions on threads. You can create duration, event, and display transactions. See “Transaction System Tasks” on page 203. Duration Transactions These calls accept the standard property options and assignments described in “Property Options” on page 213. See “Duration Transactions” on page 206. $thread $trans Creates a transaction with duration to the next transaction. $trans_begin (proficient ) Marks the beginning of a transaction. The transaction has duration until a matching $trans_end. $trans_end (proficient ) Marks the end of a transaction. Must match to a $trans_begin. Event Transactions These calls accept the standard property options and assignments described in “Property Options” on page 213. See “Event Transactions” on page 208. $trans_event Creates an event transaction. $trans_error Creates an event transaction that is an error. Display Transactions These calls do not accept property options or assignments. See “Display Transactions” on page 209. $trans_display Replaces $display for a TVM. $trans_display_error Replaces $display for errors on a TVM. These calls manipulate transaction tags from one thread to another. These calls do not accept property Transaction Tag System Tasks assignments or options. See “Transaction Tag System Tasks” on page 210. June 2000 194 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Table 9-6 TRST Calls: Organization and Summary, continued System Task Description $trans_tag_get (advanced ) Gets a transaction tag to be passed from one thread to another. $trans_tag (advanced ) Allows you to operate on a transaction tag, including linking to it, unlinking to it, and ending it. Property System Tasks See “Property System Tasks” on page 212. $set_property (advanced ) Sets additional properties or changes the values of properties on existing objects. Accepts the standard property assignments and options as listed in “Property Options” on page 213. Utility System Tasks See “Utility System Tasks” on page 215. $tbv_timeformat Sets the formats used by %t when %t is used in a TRST call (see “%t, %width.precisiont” on page 190). This call has the same syntax as $timeformat, but TRST calls use $tbv_timeformat to set format values for %t. Module Instance System Tasks This section describes the system tasks that manipulate information on module instances, including TVMs, threads, and DUVs. All the calls described in this section can accept any of the standard property options and assignments listed in “Property Options” on page 213. $bfm (optional ) Also named $tbv_bfm. Use the $bfm task to declare and manipulate information on a TVM. Model writers can use it to declare TVM objects and perform actions on existing TVMs. If no $bfm, $test, or $duv call occurs before the first transaction recording construct, the module instance is assumed to be a TVM. Declaring The $bfm task declares the module instance as a BFM if it has not been declared before. If the module instance has already been declared, then the additional constructs in the task are applied. The name of the BFM is always the module name of the Verilog module that it is in. June 2000 195 Product Version 6.5 Signalscan Waves User Guide Recording Transactions The BFM has two instance specifications: ■ The Verilog hierarchical scope to the BFM that might be visible using the Verilog $showscopes command. ■ The pair of the module name with the instantiation parameter value. A module instance can only be one of a BFM, a test, or a DUV. It cannot be a combination of them. $bfm Examples module my_bfm; parameter instantiation = 1; initial begin $bfm; ... end In the following example, a BFM of type my_bfm is created. Its test instantiation name is my_bfm-3 because the instantiation parameter is 3 in the test bench. Its Verilog instance name is test_bench.u1. module test_bench; ... my_bfm #(3) u1 (...); end $test Also named $tbv_test. The $test system task is similar to the $bfm system task except it declares the module instance to be a test module. $duv Also named $tbv_duv. The $duv system task is similar to the $bfm system task except it declares the module instance to be part of the Design-Under-Verification. Module Instance Task Options This section lists the options that can be used on $bfm, $test, or $duv. June 2000 196 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Automatic Behavior The module instance task calls are optional. If a thread is declared and no type for the parent module instance has been declared, it is assumed to be a BFM. If you specifically want to designate it as a test or a module from the DUV, you need to explicitly specify the module instance with $test or $duv. Automatic properties are placed on the module instance when it is declared. These include property definitions and property values as described in “Automatic Property Definitions” and “Automatic Property Values” below. Common Options and Assignments The $bfm, $test, and $duv tasks support the following common options: ■ -property_definitions. See “-property_definitions” on page 213. ■ -properties. See “-properties” on page 214. ■ -undef. See “-undef” on page 214. ■ Dash Option (-). See “Dash Option (-)” on page 215. ■ Dash Dash Option (--). See “Dash Dash Option (--)” on page 215. ■ Property assignments. See “Property Assignments” on page 191. Automatic Property Definitions When a BFM is created, the following property definitions are created as property definitions on the BFM: module_instance_id,"integer hidden","‘s" module,"string hidden","‘a" scope,"string hidden","‘a" instantiation,"integer hidden","‘s" module_type,"string hidden","‘a" Automatic Property Values When a BFM is created, the following property values are assigned to the automatic properties on the BFM. They also can be inherited by the threads and transactions under the BFM. (See “Searching Property Values” on page 192). "module_instance_id=", "bfm_id_of_created_bfm " "module=", "module_name_of_Verilog_module " June 2000 197 Product Version 6.5 Signalscan Waves User Guide Recording Transactions "scope=", "scope_of_module_instance " "instantiation=", "value_of_Verilog_parameter_instantiation " "module_type=", ["Bfm"|"Test"|"Duv"] Thread System Tasks Threads are the locuses of control that run concurrently during a simulation. In a Verilog simulation, an example of a thread is an initial or always block. With the TRST system, you can use a $thread call to associate a thread of execution with a Verilog-named beginend pair or task. This allows a large amount of flexibility in how you can manage threads of execution in a multi-threaded BFM. $thread (optional , proficient ) Also named $tbv_thread. Use the $thread task to declare and modify information on threads. Model writers can use it to declare threads and perform actions on existing threads (see “Declarative Form” below) and to switch the focus of activity from one thread to another (see “Switching Form” on page 199). Declarative Form You can use the $thread construct to declare and explicitly name a thread. For the declarative form of $thread, the first argument is the reference name, and the second argument is an optional reference number: ■ The reference name is a literal string that is any number of characters, but the last four characters must be unique. It is an error to specify two different thread reference names with the same last four characters. ■ The optional reference number is a simple integer you can use if you want to have arrayed or parameterized threads. If you do not specify the thread reference number, it is assumed to be the last four characters of the thread reference name. It is an error for the same thread to be declared with two different reference numbers (see “Multiple Declarations of the Same Thread” below). It is also an error to have two different threads with the same reference number. When a $thread executes, it associates the named begin-end pair or task it is executing in with the thread. Any transaction calls, such as $trans, that occur in the same begin-end pair or task are recorded as transactions from the thread. June 2000 198 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Multiple Declarations of the Same Thread If the thread has already been declared, additional constructs on the $thread call apply to the thread. If the thread was not already declared, it is declared when the system task is made. Thus, any number of declarations of the same thread can be made. Any Verilog module with more than one thread name declared is considered to be multithreaded. Multi-threaded modules must have their $thread tasks inside Verilog tasks or named begin-end pairs. Example Declarations In the following example, a thread called datt is created: $thread("datt"); // reference name only The following example declares a thread with a reference name of addt and a reference number of 5: $thread("addt",5); // reference name and number Switching Form The $thread call can also be used to switch from one thread to another dynamically using a variable or expression. The variable or expression needs to be the first argument and needs to evaluate to a reference number for an already-declared thread. Example Switching The following example illustrates declaring two threads with the declarative form of $thread, and then switching between the two using the switching form of $thread: $thread("chan1",1); // declaration $thread("chan2",2); // declaration channel = expression $thread(channel); // switching $trans("send_example"); Automatic Behavior The $thread call is optional. If a $trans call is made and no thread has been declared in the current module instance, a thread is declared with automatic initial properties and the $trans call uses it. If a thread is created in this automatic manner, then you should not use $trans_begin and $trans_end constructs. You still can use $trans and $trans_event constructs. See “$trans Variants” on page 203. June 2000 199 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Side Effects If a module instance has not been declared when the $thread command creates a thread, a module instance is declared with automatic values. These values on the module instance are listed in “Module Instance Task Options” on page 196. Automatic Property Definitions and Properties When a thread is created, the following properties are created as properties on the thread. These properties can be inherited by transactions created in the thread. See “Searching Property Values” on page 192. thread_id,"integer hidden","‘s" thread_ref,"integer hidden","‘s" thread_ref_name,"string hidden","‘a" thread_id = thread_object_id thread_ref_name = ref_name_given_by_user thread_ref = ref_number_assumed_or_given_by_user Common Options and Assignments The $thread command supports the following common options: ■ -property_definitions. See “-property_definitions” on page 213. ■ -properties . See “-properties” on page 214. ■ -undef. See “-undef” on page 214. ■ Dash Option (-). See “Dash Option (-)” on page 215. ■ Dash Dash Option (--). See “Dash Dash Option (--)” on page 215. ■ Property assignments. See “Property Assignments” on page 191. Thread Management Any module instance that uses multiple threads must specify the threads that execute transaction calls. Since more than one thread can be active at one time, care must be taken as to how they share tasks or sequences of code. The easiest way to specify concurrent threads is to have a $thread call at the top of named begin-end pairs or tasks. This is called thread management . If the threads are not managed correctly, then the transaction hierarchy can become mixed between the threads. June 2000 200 Product Version 6.5 Signalscan Waves User Guide Recording Transactions A multi-threaded module is one where more than one thing is happening concurrently. A thread is a line of activity where only one thing is happening at a time. A multi-threaded module is broken up into multiple threads so that all the activity can be seen concurrently. In Signalscan, a thread’s activity is a horizontal line on the screen. To utilize thread management, the threads must be explicitly declared with $thread. Modules without any $thread calls are considered to be single-threaded. Thread Management Rule If a module is multi-threaded, a $thread call must occur in a named begin-end block or task block before a $trans (or equivalent) task. Multiple Block Example /* * The following initial, always, and task execute in the same thread. */ initial begin : block1 $thread("t1"); // As many $trans calls or blocking #, @, or wait as desired. end always begin : block2 $thread("t1"); // As many $trans calls or blocking #, @, or wait as desired. end task my_task; // tasks are considered separately begin $thread("t1"); // As many $trans calls or blocking #, @, or wait as desired. end endtask Fork Example /* * This fork example has 4 threads: t3, t4, t5, and t6. */ begin : block6 $thread("t6"); fork June 2000 201 Product Version 6.5 Signalscan Waves User Guide Recording Transactions begin : block3 $thread("t3"); ... end begin : block4 $thread("t4"); ... end begin : block5 $thread("t5"); ... end join // Automatically considered to be "t6", no $thread needed here. ... end Typical Initial/Forever Thread Example initial begin : addr_ten $thread("addr_ten"); // As many $trans calls or blocking #, @, or wait as desired. ... forever begin // As many $trans calls or blocking as desired. ... end end Multiple Threads in a Single Always Block Since these threads use the same trigger event, they can be merged together: always @(posedge clk) begin $thread("stage1"); // As many $trans calls ... $thread("stage2"); // As many $trans calls ... $thread("stage3"); // As many $trans calls June 2000 : pipe_stages or blocking #, @, or wait as desired. or blocking #, @, or wait as desired. or blocking #, @, or wait as desired. 202 Product Version 6.5 Signalscan Waves User Guide Recording Transactions ... $thread("stage4"); // As many $trans calls or blocking #, @, or wait as desired. end Special Cases If a named begin-end pair does not have a $thread task, but is nested under another named begin-end pair that does have a $thread task, the parent named begin-end block $thread task information is referenced. // This example references a thread in a parent block. begin : block1 $thread("t1"); begin : inside_block1 $trans("label"); // This is in thread "t1". end end A blocking task is a Verilog task that contains a Verilog wait, @, # or another blocking task. If a blocking task is reentered from different threads, transaction collision problems as well as Verilog reg collision problems may occur. Blocking tasks should not be shared concurrently between threads. Transaction System Tasks Transactions are used to document test intent, model intent, or stand-alone intent. Use the $trans call to record transaction information. It is the most basic of the transaction calls. $trans Variants (basic ) In their simplest form, the $trans variant tasks are called with a single string. This is considered to be the label . This label is used with labels from other $trans calls (or $trans_begin or $trans_event) to form a hierarchical label that can be accessed via the transactions they are attached to (this transaction’s parent, children, predecessors, and successors). Additional strings may be specified as arguments, and these are combined to form a description property. Transaction Type Names Each transaction type has a transaction name, determined as follows: June 2000 203 Product Version 6.5 Signalscan Waves User Guide Recording Transactions ■ If there is a -trans_type option on the construct, then the name of the transaction type is the string argument after that option. ■ If there is no -trans_type option on the transaction, the transaction type name is the uninterpolated value of the label. ■ In either case, a trans_type property is created with the string value of the name. Transaction Static Properties When a transaction is created, the following properties are created from the type and arguments of the task call that created the transaction. You may attach additional properties. error=1 (only for $trans_error and $trans_display_error ) event=1 (only for $trans_event ) trans_type=type_name label = interpolated_label ,_first_format_string description = interpolated_text ,_subsequent_strings Automatic Behavior If there is no thread currently defined on the module instance, then one is created with a name that is the module instance name with the instantiation parameter. This is the thread_ref_name for the thread. Any thread created in this default manner should only be allowed to use event and duration transactions, such as $trans_event(…) or $trans(…). Transaction Creation The $trans call creates a new transaction object and attaches it to its parent. The parent is the transaction generated via the last $trans_begin. It may also attach it to its predecessors if there are currently active predecessor transactions. See “Transaction Tag System Tasks” on page 210. Automatic Properties When a transaction is created, the following property values are assigned on the transaction. This includes the properties discussed in “$trans Variants” on page 203. error=boolean event=boolean trans_type=type_name label=interpolated_value_of_the_label description=interpolated_value_of_the_text June 2000 204 Product Version 6.5 Signalscan Waves User Guide Recording Transactions begin_time=current_time end_time=current_time sequence=current_sequence ,_a_unique_ascending_number hierarchical_label= label_of_parent_transaction .label_of_this_transaction composite_label= hierarchical_label :composite_label_of_the_predecessor thread_named_block= full_path_name_to_named_block_or_task_that_has_the_$thread_call transaction_id=id_of_the_created_transaction parent_id=id_of_the_parent_transaction Arguments In addition to options and optional property assignments on the $trans call, the $trans call takes one more argument. The first non-optional argument is a format string that is interpolated and considered to be the label. Additional arguments are used to satisfy the % format specifiers in the format string. Additional format strings can be specified, and these will be used to create a description property. Format Strings The format string in the $trans call is used in a similar fashion to the Verilog $display task format string. Formatting codes are embedded in the format string, and these codes are expanded when the $trans call is made. See “Interpolated Format Strings” on page 188. The first format string is considered to be the label property for the transaction. The second and subsequent format strings are considered to be the description property for the transaction. After the last argument for the format string is specified, another format string can be given. It too can have % specifiers, and these must be provided additional arguments. In this fashion, you can specify as many format strings as you want. This is useful for long and complex notes that may be multi-line. One newline is implied by the whole note, but no intermediate newlines are implied, even if they occur over multiple format strings. Newlines need to be explicitly embedded with \n. Transaction Label The label portion of the $trans is the resultant text in the first format string. For example: $trans("label_part%0d",label_num, "Here is a complex note.\n", June 2000 205 Product Version 6.5 Signalscan Waves User Guide Recording Transactions "Second line of complex note: data = %x\n", data_word, "Third line, Time = %7.2t",$realtime); Required Arguments If a transaction is being created, then at least one argument must be provided to derive the label of the transaction. This must be at least a simple string. For example: $trans("read"); // minimum transaction created $trans Variant Options The $trans command variants support the following special option: -trans_type Explicitly specifies the transaction type of a call. Each $trans_xxx call must have a unique transaction type. Usually this is specified automatically. See “Transaction Type Names” on page 203. Common Options and Assignments The $trans command variants support the following common options: ■ -property_definitions. See “-property_definitions” on page 213. ■ -properties . See “-properties” on page 214. ■ -undef. See “-undef” on page 214. ■ Dash Option (-). See “Dash Option (-)” on page 215. ■ Dash Dash Option (--). See “Dash Dash Option (--)” on page 215. ■ Property assignments. See “Property Assignments” on page 191. Duration Transactions $trans (basic ) The $trans call records actions of a transaction with duration up to the next $trans, $trans_begin, or $trans_end call. A $trans transaction closes any previously open $trans transactions and marks their end time. The actions and options specified under “$trans Variants” on page 203 for the $trans variants apply to the $trans call. June 2000 206 Product Version 6.5 Signalscan Waves User Guide Recording Transactions An event transaction created with the $trans_event or $trans_error calls nests under a $trans transaction. If you do not explicitly declare a thread with a $thread task, then you can only utilize a duration transaction along with an event transaction. This constraint prevents you from nesting transactions more than one deep. It is useful for legacy BFMs where $display constructs are replaced with $trans_display constructs directly. $trans_begin (proficient ) The $trans_begin call records actions of a new begin transaction construct. The transaction hierarchy is pushed one level. Transaction hierarchy can be created to any depth using $trans_begin. A $trans_begin call closes a previously open duration transaction construct created with $trans. A $trans_begin call must be paired with a $trans_end call. The actions and options specified under “$trans Variants” on page 203 for the $trans variants apply to the $trans_begin call. Do not use the $trans_begin call on threads that are declared implicitly. This limitation prevents erroneous transaction nesting. $trans_begin Example In the following example, do_write is the transaction label, and Perform a write to memory is the transaction description: $trans_begin("do_write", "Perform a write to memory."); $trans_end (proficient ) The $trans_end call records actions of an end transaction. The transaction hierarchy is popped at least one level, closing the matching transaction opened as a begin transaction using $trans_begin and any other duration transactions that may be nested deeper. The actions and options specified under “$trans Variants” on page 203 for the $trans variants apply to the $trans_end call. June 2000 207 Product Version 6.5 Signalscan Waves User Guide Recording Transactions $trans_end Example $trans_end; The $trans_end call does not accept label or description arguments as the $trans_begin call does. The -trans_type option is important, however. If unspecified, the $trans_end call matches the last $trans_begin call. If a -trans_type option is specified, then the $trans_end matches the last $trans_begin of the same transaction type. This can cause multiple begin transactions to be ended simultaneously. If there is an open $trans transaction, then it is ended first before the matching $trans_begin transaction is ended. See also “$trans_tag Link Example” on page 211. It is an error to have more $trans_end transactions than $trans_begin transactions. Do not use the $trans_end call on threads that are declared implicitly. This limitation prevents erroneous transaction nesting. Nested $trans_begin, $trans_end Example In the following example, a Verilog disable occurs in the inner loop. The end of do_ten_things also ends any other open transactions in the loop. $trans_begin("do_ten_things"); begin : break_out for(i=1;i<=10;i=i+1) begin $trans_begin("loop%d",i); if(special_condition) disable break_out; $trans_end; end end $trans_end("-trans_type","do_ten_things"); Event Transactions $trans_event (basic ) The $trans_event task records actions of a transaction event with no duration. An event transaction must nest under a duration transaction. An event transaction has a start time, but the end time is the same as the start time. It also has the property event=1 attached to it. June 2000 208 Product Version 6.5 Signalscan Waves User Guide Recording Transactions The actions and options specified under “$trans Variants” on page 203 for the $trans variants apply to the $trans_event call. $trans_event Example $trans_event("data_rdy", "Found that data is ready."); $trans_error (basic ) The is $trans_error call records actions of a transaction event that has an error. It is the same as $trans_event, except the property error=1 is also set. See “Error Rollup” on page 209. The actions and options specified under “$trans Variants” on page 203 for the $trans variants apply to the $trans_error call. $trans_error Example $trans_error("mismatch", "Found data %d, expected %d", data, expected); Error Rollup When $trans_error is called, it performs an error rollup operation as well as creating an error transaction. The error count of its ancestors is incremented as well as the error count of the thread, module instance, and a global error count. See “Property System Tasks” on page 212. Display Transactions $trans_display (basic ) The $trans_display task is a replacement for $display. It processes its arguments like $display and creates a transaction similar to $trans. Except for the way the task processes its arguments, $trans_display behaves exactly like $trans. The $trans_display task does not accept any options or property assignments. June 2000 209 Product Version 6.5 Signalscan Waves User Guide Recording Transactions $trans_display_error (basic ) The $trans_display_error task is the same as the $trans_display task, except the property error=1 is also set. The $trans_display_error task processes its arguments like $display and creates a transaction similar to $trans_error. Except for the way the task processes its arguments, $trans_display_error behaves exactly like $trans_error. The $trans_display_error task does not accept any options or property assignments. Transaction Tag System Tasks The system task calls listed in this section are used to manage transaction tags, which propagate the predecessor/successor relationship of transactions. When you propagate information from one thread to another, you can get a transaction tag to associate with the information. The information is propagated to the other thread along with the tag. The tag is then linked to the receiving thread when the information is accessed. $trans_tag_get (advanced ) The $trans_tag_get task creates a transaction tag and returns a 32-bit identifier for it. You can then propagate the tag with other information going to a destination thread. Note: To avoid memory leaks, every transaction tag returned by $trans_tag_get must eventually be ended, either implicitly (see “$trans_tag Link Example” on page 211) or explicitly (see “$trans_tag("-end",tag)” on page 211). $trans_tag_get Example reg [31:0] transaction_tag_ID; transaction_tag_ID = $trans_tag_get; first_pipe_stage = {transaction_tag_ID,data1,data2,data3}; // transaction tag ID stored with data $trans_tag_get Options The $trans_tag_get task supports the following option: -above This option defines the thread of focus to be the currently focused thread in the module above this module in the Verilog hierarchy. It is used within special BFM task queuers that are instantiated below the test level. June 2000 210 Product Version 6.5 Signalscan Waves User Guide Recording Transactions $trans_tag The $trans_tag system task has various forms that allow you to explicitly link, unlink, or end a transaction tag. Use the -link, -unlink, or -end option to specify these actions. You must always specify one and only one of these three options in any $trans_tag call. These three forms of $trans_tag are described below. $trans_tag("-link",tag) (advanced ) This form of $trans_tag links an existing transaction tag, whose ID was returned from a previous $trans_tag_get call, to the currently open transaction and thread. This creates a predecessor/successor relationship. When the currently open transaction ends, the transaction tags linked to it are also ended, along with the predecessor/ successor relationship. $trans_tag Link Example In the following example, a transaction tag is accessed when information is accessed by a destination thread. The transaction tag is linked to the currently open transaction and its thread of execution. When the transaction ends, the linked transaction tag is also ended. {transaction_tag_ID,data1,data2,data3} = last_pipe_stage; // access transaction tag ID stored with data $trans_begin("later_action"); $trans_tag("-link",transaction_tag_ID); ... $trans_end; // ends $trans_tag as well $trans_tag("-end",tag) (advanced ) This form of $trans_tag ends an existing transaction tag, whose ID was returned from a previous $trans_tag_get call. It cannot be linked again. The ending causes the tag to automatically be unlinked and ends a predecessor/successor relationship. This form allows you to explicitly end a transaction tag. $trans_tag("-unlink",tag) (advanced ) This form of $trans_tag unlinks an existing transaction tag, whose ID was returned from a previous $trans_tag_get call, from the thread it is linked to. Use it in cases where the transaction tag is to be handed off to yet another destination thread. The unlinking ends the predecessor/successor relationship to the current thread. June 2000 211 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Transaction Scoped Transaction Tags Any transaction tags linked during a transaction are implicitly ended at the end of that transaction. Automatic Transaction Tag Management The predecessor/successor relationships are automatically managed by TXA storage and queuing elements. These elements include memories, data queues, and smart queues. Property System Tasks Additional properties, property definitions, and signal groupings can be attached to an object using the $set_property call. $set_property (advanced ) Use the $set_property call to attach additional properties or property definitions to any object listed in “Transaction Objects” on page 182. If no locator object is specified, the $set_property call attaches items to the currently open duration or begin transaction created as with the -current_trans option. $set_property Options In addition to the standard property options and assignments, the $set_property call accepts the following options to control what the properties are being attached to: -current_scope, -current_thread, -current_trans, and -last_trans. -current_scope (advanced ) This option specifies that the property assignment and definitions occur on the current module instance. For example: $set_property("-current_scope","family=","utopia"); -current_thread (advanced ) This option specifies that the property assignments and definitions occur on the current thread. For example: $set_property("-current_thread","pooling=",1); -current_trans (advanced ) This option specifies that the property assignment or definition occurs on the currently open transaction, or the last transaction created with $trans or $trans_begin. Event transactions, such as those created with $trans_event or $trans_error are not referenced since they have no duration. For example: June 2000 212 Product Version 6.5 Signalscan Waves User Guide Recording Transactions $set_property("-current_trans", "wait_states=",5); -last_trans (advanced ) This option specifies that the property assignment or definition occurs on the last transaction created. The -last_trans option can be used to set properties on a previously executed $trans_event or $trans_error. This includes event transactions that have no duration. For example: $set_property("-last_trans","wait_states=",5); Common Options and Assignments The $set_property command supports the following common options: ■ -property_definitions. See “-property_definitions” on page 213. ■ -properties . See “-properties” on page 214. ■ -undef. See “-undef” on page 214. ■ Dash Option (-). See “Dash Option (-)” on page 215. ■ Dash Dash Option (--). See “Dash Dash Option (--)” on page 215. ■ Property assignments. See “Property Assignments” on page 191. Property Options Any TRST call that manipulates properties supports the property options described in this section. This includes the module instance tasks, the $thread task, the transaction tasks, and the $set_property task itself. -property_definitions (advanced ) Use this option to declare a property definition for constructs used by the BFM, threads of the BFM, or transactions created by threads of the BFM. A property definition is a triplet of a name of a property, the basic data type of the property, and formatting information about the property. The property definition applies to properties on the transaction object. The first argument after the option is the property name (see “Property Names” on page 184), the second argument is the base data type (see “Basic Property Types” on page 185), and the third argument is the format string used to print the property (see “Property Formatting” on page 187). You can use as many property definition triplets as you need before the next option to the system task. Transaction objects may have property definitions created automatically when properties are assigned. When created automatically, the property definition information may be copied to June 2000 213 Product Version 6.5 Signalscan Waves User Guide Recording Transactions a lower level object’s definition. See “Creating Property Definitions Automatically” on page 184. -property_definitions Example $bfm("-property_definitions", "wait_states", "integer", "‘s", "retry_count", "integer", "‘s"); Additional Information You can specify as many -property_definitions options as you need for a single call. Once a property definition has been declared on an object, it is an error to declare it differently on the same object. Automatic Behavior Property definitions should be declared before an assignment is made. Otherwise, an automatic definition will be created that will clash with the explicit definition. If a property is assigned to an object and there is no property definition information declared for it, then a property definition is created on the object and given default values based on previously defined properties of the same name, or on the value assigned to the property. See “Creating Property Definitions Automatically” on page 184. -properties (proficient ) Use the -properties option to indicate that the following arguments are property assignments to be made on the transaction object. This option only needs to be specified if the use of the property assignment syntax is ambiguous. Normally you can simply perform property assignments on the object. Property assignments are specified as described in “Property Assignments” on page 191. -properties Example $bfm("-properties","mem_bank=",mb); -undef The -undef option means to remove the property rather than assign it. The property will no longer exist on the object, if it existed before. June 2000 214 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Remove Property Example $bfm("-undef","family"); Dash Option (-) The dash option (-) is the null option: You can use it to end an option list. It performs no other actions. Dash Option Example $bfm("-property_definitions", "mem_bank","integer","‘s", "-", "mem_bank=",mb); Dash Dash Option (--) The dash dash option (--) is the escape option. This option states that the next argument is not an option and is to be taken as an argument. It is useful for specifying format strings that begin with a dash (-). Utility System Tasks $tbv_timeformat (basic ) Use the $tbv_timeformat call to set the format used by %t when %t is used in a TRST call (see “%t, %width.precisiont” on page 190). This call has the same syntax as $timeformat, but TRST calls use $tbv_timeformat to set format values for %t. The syntax of $tbv_timeformat is: $tbv_timeformat (units , precision , suffix , minimum_field_width ); The $tbv_timeformat arguments are the same as the $timeformat arguments: units An integer in the range from 0 to -15. Specifies which units to print the time in. For example, -9 specifies nanoseconds and -12 specifies picoseconds. The default value is -9. precision 3. June 2000 Integer. Specifies the number of decimal places to print. The default value is 215 Product Version 6.5 Signalscan Waves User Guide Recording Transactions suffix String. Specifies the suffix to print. For example, you could specify "NANO" instead of "ns". The default value is null. minimum_field_width Integer. Specifies the minimum width for the entire printed value, including the suffix. The default value is 20. Error Rollup An error_count property is kept on each level of object. If this property does not exist, it is created with an initial value of 0. When a $trans_error call is made, an error rollup function is executed, and the following occurs: 1. The error_count property of each ancestor is incremented. 2. The error_count property of the thread is incremented. 3. The error_count property of the module instance is incremented. 4. A global error_count is incremented. 5. The specific transaction that caused the error is identified. See “Locating Errors” on page 178 for information about finding and viewing error transactions in Signalscan Waves. Verilog Plus Arguments This section describes the Verilog plus arguments that you can use to control the transaction recording mechanism. Logging Operations You can log transaction information into the Verilog log file as you would log $display information. This allows you to intermix transaction information with other log file information in the Verilog log file. There is a performance penalty for doing this, since IO operations to the log file are expensive. The format of the information makes it easy to extract using awk. Each line has a DAITR prefix followed by an object ID number. Then the information, in the form of a property assignment, is displayed. June 2000 216 Product Version 6.5 Signalscan Waves User Guide Recording Transactions Logging All Transactions The following option is used to log all transactions into the log file: +daitr_log_all Logging Error Transactions The following option is used to log only error transactions into the log file: +daitr_log_error June 2000 217 Product Version 6.5 Signalscan Waves User Guide A Saving and Restoring Your Configuration Your Signalscan Waves configuration includes groups, markers, events, and register pages that you have defined. It also includes preferences such as Names Pane formatting, pane and window sizes, colors, print preferences, and many others. Do-Files Use a Do-File to save and restore the configuration of a Signalscan Waves session. A Do-File contains Signalscan Waves commands (see Appendix B, “Signalscan Waves Commands”) that can be loaded and executed by Signalscan Waves. Do-Files are text files that you can edit with any text editor. By convention, Do-Files are named filename .do, but you can give them any name. .signalscanrc File Signalscan Waves automatically attempts to execute a Do-File named .signalscanrc when you launch Signalscan Waves. Your current directory and then your home directory are searched for this file. You may want to use this file to save preferences that you want to use every time you run Signalscan Waves. Other commands that you might want to save are design-specific or simulation-specific, and you do not want to execute them every time you open Signalscan Waves. You can save these commands in separate Do-Files and load them explicitly as described in “Restoring Your Configuration” on page 220. For example, you can save different groups and markers in separate Do-Files to restore different views of a simulation. Saving Your Configuration To write out the current configuration or parts of the current configuration of Signalscan Waves, select File—Save Do-File . A standard file save form is displayed so that you can specify the path and filename for the Do-File. By convention, a Do-File is named June 2000 218 Product Version 6.5 Signalscan Waves User Guide Saving and Restoring Your Configuration filename .do, but you can give it any name. When you click the OK button, the Options for Saving a Do-File form is displayed, as shown in Figure 1-1 on page 219: Figure 1-1 Options for Saving a Do-File To save all items in a particular category, click to select (highlight) the appropriate button on the left side of this form. To save none of the items in a particular category, click to de-select the appropriate button. To save some but not all of the items in a particular category: 1. Click the down-pointing arrow to the right of the category drop-down menu. 2. Click the category you want to modify, such as Groups or Preferences. June 2000 219 Product Version 6.5 Signalscan Waves User Guide Saving and Restoring Your Configuration The list of items in that category is displayed in the scrollable field. 3. Select (highlight) only the items you want to save in this Do-File. To select one item, click on it. To select multiple items in the list, click and drag or click while holding down your Shift or Control key. To de-select all items, click on any currently selected item. To de-select particular items, click on them while holding down your Control key. 4. Select another category or click the OK button. Restoring Your Configuration Restore a configuration from a Do-File either when you invoke Signalscan Waves or from within Signalscan Waves. When You Invoke Signalscan Waves Specify the -do option on the command line. You can specify as many different Do-Files as you want. For example: signalscan -do color.do -do sim1.do design.trn From Within Signalscan Waves Click the ExecDoFile button or select File—Execute Do-File . You are prompted for the name of the file to execute. To automatically use this configuration every time you run Signalscan Waves, append this Do-File to the .signalscanrc file in your home directory. June 2000 220 Product Version 6.5 Signalscan Waves User Guide B Signalscan Waves Commands The Signalscan Waves commands described in this appendix can be entered into a Do-File. To create a Do-File, you should run Signalscan Waves and then select File—Save Do-File . You can use the information in this appendix to modify a Do-File. Lexical Conventions ■ Most keywords can be abbreviated to three (and sometimes two) characters. ■ Keywords are case-insensitive. ■ Backslash (\) is the line continuation character. ■ Carriage return (Return or Enter key) and semicolon (;) are both supported for end of statement. Command Syntax . (period) Continue simulation. ? List all the commands supported by Signalscan Waves. about about [Signalscan] Display program names and versions for both Signalscan Waves and the simulator. June 2000 221 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands add Adding Objects to the Named Group add gr[oup] group-name [object-data-list ] with object-data-list ::= object [radix ] ['(' option-list ')'] [object-data-list ] object ::= reg-expression | object-name | string | bus-description bus-description ::= '{' bus-name (asc[endingorder] | des[cendingorder] | noind[ices]) object-data-list '}' radix ::= '(b|o|d|s|h|a|n|i|mmnemonic-map-name )[+|-]time option-list ::= option [option-list ] option ::= cons[tant] number | comme[nt] | [no]strength | [no]ana[logdisplay] | min[max] min-number max-number | analogh[eight] number | scaleexp number Radix options are: Table B-1 Radix Options Prefix Description 'b binary 'o octal 'd unsigned decimal 's signed decimal 'h hexadecimal 'a ASCII 'n noninverted 'i inverted 'm mnemonic map If the group does not already exist, it is created. If the group exists and has an insertion point, use it. Otherwise add at the end of the group. Wildcard characters * and ? are accepted. June 2000 222 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Constants are created with string (constant number ), and comments are created with string (comment ). Adding Objects to the Selected Group add var[iables] [object-data-list ] with object-data-list ::= object [radix ] ['(' option-list ')'] [object-data-list ] object ::= reg-expression | object-name | string | bus-description bus-description ::= '{' bus-name (asc[endingorder] | des[cendingorder] | noind[ices]) object-data-list '}' radix ::= '(b|o|d|s|h|a|n|i|mmnemonic-map-name )[+|-]time option-list ::= option [option-list ] option ::= cons[tant] number | comme[nt] | [no]strength | [no]ana[logdisplay] | min[max] min-number max-number | analogh[eight] number | scaleexp number Add a set of objects to the selected group at the insertion point. If the object list is not provided, the selected objects are added. Adding One or More Mnemonic Value Pairs to an Existing Mnemonic Mapping add mn[emonic] map[ping] mnemonic-map-name mnemonic-mapping-list mnemonic-mapping-list ::= value mnemonic [mnemonic-mapping-list ] value ::= ([radix ] string ) | * radix ::= '(b|o|d|s|h|a|n|i|mmnemonic-map-name ) mnemonic ::= string Adding Inputs add module input If at least one input or inout port or object connected to an input or inout port of the module containing the selected object in the Waveform Window is recorded, for each input and inout port of the module, the object connected to the port in the higher scope is added. June 2000 223 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Adding Traces add trace Add drivers of the currently selected object in the waveform to the objects. Adding New Elements to an Existing Register Page add reg[isterpage] register-page-name [register-data-list ] register-data-list ::= (text [font-size ] number number text ) | (variable [font-size ] number number (variable-name | bus-description )) | (group [font-size ] number number ('(' register-data-list ')') font-size ::= fonts[ize] (10|12|14|18|24) ali[as] ali[as] [name [existing-command ]] Create an alias for an existing command or list of commands. Multiple commands should be separated by a semicolon (;) since the alias statement takes the string as one object to be processed at the time that the alias is used. If no argument is provided, list the existing command alias(es). always See the arguments for the create break command in “Setting a Permanent Breakpoint” on page 227. Set a repeating breakpoint. This is an alias for the create break command. cd cd [scope-name ] Set the default hierarchical scope. If no argument is given, set it to the very top scope. June 2000 224 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands The standard UNIX directory shortcuts are supported: forward slash (/) for the top of the current design hierarchy, and double dot (..) to go up one module up. cen[ter] cen[ter] [on] (cursor1 | time ) If a time is specified, set Cursor1 to this value. In all cases, redraw the Waveform Window signal data area such that Cursor1 is at the center. clo[se] Closing One or More Simulation Files clo[se] sim[ulation] fil[e] identifier-list identifier-list ::= string [identifier-list ] Closing the Specified Window clo[se] win[dow]((designb[rowser] | wav[eform] | reg[ister]| brea[kpoints] | sou[rce] | eve[nts]) [number ]) col[lapse] col[lapse] seq[uence] [time] ([cur[sor1]] [time ] | bet[weencursors] [time time ] | all) Collapse the sequence time area(s) in the selected region. The default is at Cursor1. con[tinue] con[tinue] [for time | until time | forever ] Continue simulation for a specified amount of time, until a specified absolute simulation time, or forever. When no argument is provided, the argument is obtained from the Control Window button (initially set to Forever ). June 2000 225 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands cop[y] Copy the selected objects in the Waveform Window to the clipboard. cop[y] sim[ulation] fil[e] data from old-name to new-name Make a copy of the groups containing the objects belonging to the first simulation file. Then replace the objects of the groups by the ones with the same names from the new simulation file. cre[ate] Creating a Bus at the Insertion Point cre[ate] bu[s] bus-name ([asc[endingorder] | [des[cendingorder] | noind[ices]) object-data-list Creating a Comment at the Insertion Point cre[ate] com[ment] string Creating a Constant at the Insertion Point cre[ate] con[stant] constant-name value Creating a New Event cre[ate] ev[ent] [event-name event-var-seq ] event-var-seq ::= [object-name string event-var-seq ] Creating a New Group cre[ate] gr[oup] group-name [object-data-list ] See the syntax for the add group command in “Adding Objects to the Named Group” on page 222. Creating a New Marker cre[ate] ma[rker] [marker-name [time ]] The default time is the Cursor1 time in the Waveform Window. June 2000 226 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Creating a New Register Page create reg[isterpage] register-page-name [register-data-list ] register-data-list ::= (text [font-size ] number number text ) | (variable [font-size ] number number (variable-name | bus-description )) | (group [font-size ] number number '(' register-data-list ')') font-size ::= fonts[ize] (10|12|14|18|24) Setting a Permanent Breakpoint cre[ate] break[point] [b[efore] | a[fter]] #relative-time | [@posedge | @negedge] signal | signal = expression | scope-name file-name line-number Setting a One-time (Temporary) Breakpoint cre[ate] tbreak[point] [b[efore] | a[fter]] (#relative-time | ##absolute-time ) | [@posedge | @negedge] signal | signal = expression | scope-name file-name line-number cut cut Cut the selected objects in the Waveform Window, placing them on the clipboard. def[ine] Defining a List of Bookmarks def[ine] boo[kmarks] identifier-list identifier-list ::= string [identifier-list ] June 2000 227 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Defining the Button Bar for a Specific Window Type def[ine] but[tons] win-type button-data-list win-type ::= contr[ol] | designb[rowser] | wav[eform] | register | source | eve[nt] button-data-list ::= [number button-name button-data-list ] The button-name is the abbreviated command for a menu item. Modifying the Current Color Set with the Provided Color Assignment List def[ine] color color-definition-list color-definition-list ::= color-definition [color-definition-list ] color-definition ::= ( #hex-rgb-value-string | color-name | color-rgb-number ) color-rgb-number ::= '(' number number number ')' Defining the Control Window Setup def[ine] con[trol] win[dow] window-attribute-list with window-attribute-list ::= [no]lines The lines option turns on/off line progress reporting. Specifying a User-Defined Design View def[ine] design design-name [scope-mapping-list ] scope-mapping-list ::= scope-mapping-pair [scope-mapping-list ] scope-mapping-pair ::= (dest-scope-name src-scope-name ) | ('(' dest-scope-name src-scope-name ')') Specify a user-defined design view, which is useful for putting a design back together after it has been partitioned. The design view is created if it does not already exist. The destscope-name is the name of the scope in the design to be defined, and the src-scopename is the name of the source scope. Each scope-mapping-pair declaration includes any sub-scope (or sub-hierarchy) of the specified src-scope-name . To delete the design, June 2000 228 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands enter the close sim command. To remove a particular scope from the design, define that scope to the <VOID>:: scope. Setting a Default for the Variable Display Output Format def[ine] display format '(b|o|d|s|h|a|n|i) Setting the Event Search Direction def[ine] event [search] dir[ection] (forward | backward | toggle) Setting Use of the Exit Confirmation Form def[ine] exit [no]pro[mpt] Define whether the exit confirmation form comes up when exiting. Setting the Source Code Window Focus def[ine] focus [on] mod[ule] Set the Source Code Window focus to the current module being displayed. Defining or Re-Defining a Mnemonic Mapping def[ine] mn[emonic] map[ping] mnemonic-map-name mnemonic-mapping-list mnemonic-mapping-list ::= value mnemonic [mnemonic-mapping-list ] value ::= ([radix ]string ) | * radix ::= '(b|o|d|s|h|a|mmnemonic-map-name ) mnemonic ::= string Turning Off Multivalue Indication def[ine] [no]multi[valueindication] Turn off the multivalue indication in the Waveform Window. June 2000 229 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Defining Line Patterns for TimeA, Cursors, and Markers def[ine] patt[ern] pattern-definition-list pattern-definition-list ::= pattern-definition [pattern-definition-list ] pattern-definition ::= object-name pattern-type object-name ::= ( curpos | cursor1 | cursor2 | marker ) pattern-type ::= ( solid | dot | dash ) Define the line pattern for TimeA (curpos), Cursor1, Cursor2, and markers. Defining the Action for Old Live Simulation Data def[ine] prev[ious] sim[ulation] (kee[p] | rep[lace] | cop[y]) Define the action to be taken with old live simulation data when doing resimulation. Setting Values for all Print Options def[ine] print [print-option-list ] print-option-list ::= print-option [print-option-list ] print-option ::= printer name | com[mand] string string | fil[e] | tit[le] name | comp[any] string | desi[gner] name | not[e] string | ran[ge] ( '(' time to time ')' | defa[ult] | visible | all ) | var[iable] ( visible | sel[ected] | all ) | pag[es] number | siz[e] (A|B|A4|A3) | [no]bor[der] See the print command for details in “print” on page 238. Setting the Simulation Progress Direction def[ine] prog[ress] dir[ection] (forward | backward | toggle) Defining the sendmail Command def[ine] sendm[ail] command string June 2000 230 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Defining an Alias Number for a Scope def[ine] sco[pes] number scope-name This alias may be used later as %n. The scope name may contain a file name and a hierarchical scope. Defining the Width of the Sequence Time (Scale) in the Waveform Display def[ine] se[quence] time width number Making the Cursors Snap or Not to Transitions def[ine] [no]snap Make the cursors snap (or not snap) to the nearest object transition. Defining Action for Source File Not Found def[ine] sou[rce] [no]pro[mpt] Define whether a form will pop up if a Verilog source file is not found. Setting the Search Path for Verilog Source Files def[ine] sou[rce] sea[rch] pat[h] string Defining the Source Code Window Setup def[ine] sou[rce] win[dow] window-attribute-list window-attribute-list ::= [no]lin[enumbers] | [no]cod[ecoverage] sou[rce] win[dow] [window-attribute-list ] window-attribute-list ::= ([no]lin[enumbers] | [no]cod[ecoverage]) [window-attribute-list ] Defining the Source Code Debug Step Increment Default def[ine] step [number ] June 2000 231 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Defining a List of Bus Templates def[ine] tem[plate] bus identifier-list identifier-list ::= string [identifier-list ] Setting the Terminal to the Specified Color Set def[ine] term[inal] (aut[omatic] | blac[kandwhite] | blac[kwhite] | gray | grey | colo[r] | colo[r] defa[ult] | colo[r] cla[ssic]) Set the terminal to the specific color set (color, grayscale, or black and white), or ask Signalscan Waves to detect the monitor type and set it to its best mode. The color set classic selects the 3.0 color set, and the color set default selects the new default for Signalscan Waves. Specify the set terminal color command to overwrite the current color set with the predefined set. You can then change any of the colors with the define color command. Setting the Current Units of Time for Display def[ine] time units ( [def[ault] | s | ms | us | ns | ps | fs]) Defining Use of User-Defined Bus Symbol def[ine] [no]user[definedbussymbol] Define whether the name of a user-defined bus is displayed with the user-defined bus symbol (%). Defining the User Guide Directory def[ine] user guid[e] directo[ry] string Defining Attributes for Selected Objects def[ine] var[iables] view-attribute-list view-attribute-list ::= (' b|o|d|s|h|a|n|i) | [no]ana[log-display] | [no]fullh[ierarchy]names] | [no]fil[enames] | [no]fullp[athfilenames] | [no]strength | [no]showfilename June 2000 232 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Define for the selected objects in the Name Panes (across all windows), the following additional attributes: radix, strength, analog display, full hierarchical names, simulation file names, or both the file and hierarchical names. The filenames, fullpathfilenames, and showfilename attributes are global to all objects. Defining the Waveform Window Attributes def[ine] wav[eform] win[dow] window-attribute-list window-attribute-list ::= waves[pace] number | namep[ane] number | listp[ane] number | waveh[eight] number | analogh[eight] number | analogm[inmax] number number Define the Waveform Window attributes: the wavespace, Name and List Panes proportions, the wave and analog heights, and the minimum and maximum values for analog waves. Defining the Web Browser Command def[ine] web brow[ser] command string del[ete] del[ete] object object ::= alias name | ev[ent] name | gr[oup] name | brea[kpoints] number | boo[kmark] identifier-list | mar[ker] name | mn[emonic] map[ping] identifier-list | reg[ister] name | tem[plate] bus [identifier-list ] identifier-list ::= string [identifier-list ] Delete the identified objects. If no object list is provided, the selected object in the active window is deleted. The breakpoint number is the Signalscan Waves number. desel[ect] desel[ect] [all] June 2000 233 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Deselect the selected objects in the Waveform Window. dis[play] dis[play] display-object-list display-object-list ::= object ['(b|o|d|s|h|a|n|i)] display-object-list Show value of a net or register. dup[licate] dup[licate] Duplicate the selected objects in the Waveform Window. exe[cute] exe[cute] do[file] file-name Execute a Do-File script. exit exit [[no]confirm] [sig[nalscan]] Exit Signalscan Waves. If no argument is provided, and a simulator is running, the user is asked whether the simulation should be terminated. In all scenarios, a confirmation is required, unless disabled in the preference settings, or the noconfirm option is used. exp[and] exp[and] seq[uence] [time] ([cur[sor1]] [time ] | bet[weencursors] [time time ] | all) Expand into Sequence Time in the selected area. Default is at Cursor1. June 2000 234 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands find Repeating the More Recent Find Request find next Finding an Object in the Names Pane of the Waveform Window find var[iable] string force force name =value Force an object to the specified value. gen[erate] gen[erate] simm[atrix] [desi[gn] design-name ] do[file] dofile-name [simmatrix-list ] simmatrix-list ::= simmatrix-pair [simmatrix-list ] simmatrix-pair ::= (solver sst-filename ) | ('(' solver sst-filename ')') Generate a Do-File from a design running under the Precedence simulation backplane SimMatrix (for example, Vertue). The simulator(s) must be connected to Signalscan Waves and must be stopped while using this command. The simulator(s) must be running under SimMatrix control. help help [commands ] Display the use of a specified command. If no command is specified, all commands supported by Signalscan Waves are listed. hide hide design design-list design-list := design-name [design-list ] June 2000 235 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Hide a design so that it is not visible in the list of designs above the top level scopes. inc[lude] Including the File Name While Creating a Bookmark inc[lude] boo[kmarks] with[out] filen[ame] Including the File Name While Storing History of Scopes inc[lude] sco[pe] hist[ory] with[out] filen[ame] Include the file name while storing the history of the scopes in the Design Browser. info info Display current simulation time and scope information. init[iate] init[iate] sim[ulation] [string ] Initiate a simulation session, using the provided string to execute the simulator. inv[ert] inv[ert] Invert the selected objects in the Waveform Window. list list [open] sim[ulation] files List the open simulation files. June 2000 236 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands locate Locating an Event locate ev[ent] event-name Locate the specified event and set the current time at this location. Locating a Marker locate ma[rker] marker-name Locate the specified marker and set the current time at this location. me[rge] me[rge] sim[ulation] file[s] to string from file-list file-list ::= string [file-list ] Merge specified incremental simulation files into a single simulation file. mov[e] mov[e] Move the selected objects in the Waveform Window to the insertion point. next next [statement-count ] Step to the next source statement or skip over the statement-count statements. once once See arguments for the create tbreak command in “Setting a One-time (Temporary) Breakpoint” on page 227. Set a one-time breakpoint. This an alias for the create tbreak command. June 2000 237 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands open Opening a Simulation File open sim[ulation] file simulation-file-name If the file is not specified, a file browser is presented for selection. Opening a Window of the Specified Type open win[dow] (((designb[rowser] | wav[eform] | brea[kpoints] | sou[rce] | eve[nts] | reg[ister] [register-name ] [lock] [instance-number ] [geo[metry] x-coord y-coord width height ]) | pref[erences]) register-name ::= reg[ister] string object-name ::= var[iable] string window-format ::= format radix radix ::= '(b|o|d|s|h|a|mmnemonic-map-name ) If an instance-number is not specified or if only one instance of this window type is supported, then the instance number is assumed to be 1. If the specified window already exists, it is activated. pa[ste] pa[ste] Paste the contents of the clipboard to the Waveform Window. print Printing a Waveform print [print-option-list ] print-option-list ::= print-option [print-option-list ] June 2000 238 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands print-option ::= printer name | com[mand] string | fil[e] string | tit[le] name | comp[any] string | desi[gner] name | not[e] string | ran[ge] ( '(' time to time ')' | defa[ult] | visible | all ) | var[iable] ( visible | sel[ected] | all ) | pag[es] number | siz[e] (A|B|A4|A3) | [no]bor[der] Print the waveform to a printer or a Postscript file. If some of these options are not specified, they are obtained from a previous set print command, or from system defaults. If the print command is entered without any arguments, the Print form is displayed. Defining the Print Command to be Used print [com[mand] string ] Setting a Company Name for the Print Header print [comp[any] string ] Setting a Designer Name for the Print Header print [des[igner] string ] Setting the Output Postscript File Name print [fil[e] string ] Setting a Note for the Printer Print Header print [not[e] string ] Setting the Name of the Printer print [pr[inter] string ] Identifying What to Print in the Waveform Window print [ran[ge] ['(' start-time to end-time ')' | visible | all] ] Define a time range, or specify one of the two keywords: visible for what is currently visible in the Waveform Window, or all for the complete simulation time range. June 2000 239 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Setting the Print Title print [tit[le] string ] Identifying Objects to Print print [var[iables] [visible | selected | all] ] Identify the objects to be printed, using one of the three keywords: visible for what is currently visible in the Waveform Window, selected for what is selected in the Waveform Window, or all for all the objects in the Waveform Window. pwd pwd Display the current scope. quit quit [[no]confirm] [sig[nalscan] See “exit” on page 234. rel[ease] rel[ease] object Release a forced object. ren[ame] ren[ame] (gr[oup] | mar[ker] | ev[ent] | reg[isterpage] | mn[emonic] map[ping] (sim[ulation] fil[e])) old-name new-name Rename an object. If no argument is provided, the selected object is renamed and a form is used. rep[lace] rep[lace] sim[ulation] fil[e] data [from old-name ] [by new-name ] June 2000 240 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands Replace data such as group, register, Event, and trace objects from one simulation file to another simulation file. If the second simulation file is not provided, the data is refreshed from the first simulation file. If the first simulation file is missing, and there is only one simulation, the open simulation file is used. reveal reveal design design-list design-list := design-name [design-list ] Reveal a design that has been previously hidden. save save do[file] [file-name ] Save a Do-File script. sel[ect] sel[ect] all Select all objects in the Waveform Window. set Triggering an Event Object set object Setting an Object to the Specified Value set object =value shift shift [(by | to) time ] (variables | group | file) identifier-list identifier-list ::= string [identifier-list ] Shift the specified object or group or file by the specified relative time or to the specified absolute time. June 2000 241 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands show Note: Most of these commands have a different outcome in interactive and post-simulation mode, and the SST2 Database only includes the subset of the design that was recorded. Displaying the Current Breakpoints show brea[kpoints] Showing the Drivers of Specified Objects show drivers name-list name-list ::= name name-list Showing the Loads of Specified Objects show load[s] name-list name-list ::= name name-list Displaying Ports show ports Listing the Child Scopes of the Current Scope show sco[pes] [reg-expression] Listing Specified Objects show var[iables] [reg-expression ] List objects in the current scope, or objects whose name matches the regular expression. source source file-name Read commands from the named file. This is an alias for: execute dofile filename June 2000 242 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands ste[p] ste[p] [statement-count ] Step to the next source statement, or skip over statement-count statements. sto[p] sto[p] Stop the simulation. term[inate] term[inate] sim[ulation] Terminate the simulation session. topl[evel] topl[evel] Go to the top level of the current design. This is an alias for cd /. undo undo Undo the most recent command. Note that this not possible for all commands. upscope upscope Set the current scope to the parent scope of the current scope. wait wait Wait for the pending response from the simulator during a live simulation. June 2000 243 Product Version 6.5 Signalscan Waves User Guide Signalscan Waves Commands write write to vcd string [time [to time ]] ((group | file) identifier-list | variable object-data-list ) identifier-list ::= string [identifier-list ] object-data-list ::= object [radix ] ['(' option-list ')'] [object-data-list ] If the group option is used, the objects in the specified groups are written to a VCD file. If the file option is used, the objects in the specified open simulation files are written to a VCD file. If the variable option is used, the specified objects are written to a VCD file. zoom zoom (in | out | bet[weencursors] [time time | [out]full | at time pixels-per-time sequence-time-width ) pixels-per-time ::= number sequence-time-width ::= number Zoom in, out, between the cursors, full out, or at a specified time in the Waveform Window. If a set of two times is provided with the zoom between command, then the cursors are set to these times before the actual zoom between is executed. You must specify the pixels per time step and the sequence time width as a floating point number when you enter the zoom at command. June 2000 244 Product Version 6.5 Signalscan Waves User Guide C Hot Keys, Colors, and Buttons This appendix describes some of the features of the Signalscan Waves GUI and how to customize them. Hot Keys The Signalscan Waves hot keys, or keyboard shortcuts, are listed in Table C-1. If there is nothing listed in the Windows Systems column, then that hot key is the same for Windows systems as it is for UNIX systems. “Windows Systems” means Windows 95, Windows 98, and Windows NT. Table C-1 Signalscan Waves Hot Keys Menu Option UNIX Systems Windows Systems Edit Menu Create—Group Control-g Create—Marker Control-m Create—Event Control-e Create—Breakpoint Control-p Create—Register Page Control-r Create—Bus Control-w Create—Bookmark Control-k Control Menu Variable Change—Previous Control-v Control-F7 Variable Change—Next Control-n Control-F8 June 2000 245 Product Version 6.5 Signalscan Waves User Guide Hot Keys, Colors, and Buttons Table C-1 Signalscan Waves Hot Keys, continued Menu Option UNIX Systems Windows Systems View Menu Zoom—In Control-i Zoom—Out Control-o Zoom—Between Cursors Control-z Zoom—Out Full Control-f Center on Cursor1 Control-t Expand Sequence Time—At Cursor1 Control-x Control-+ Collapse Sequence Time—At Cursor1 Control-c Control-- Control-n Format Menu Variable Radix—Binary Control-b Variable Radix—Octal Control-l Variable Radix—Decimal Control-d Variable Radix—Signed Control-s Variable Radix—Signed Decimal Control-s Variable Radix—Hex Control-h Variable Radix—ASCII Control-a Custom Buttons You can change which functions are associated with which buttons in each Signalscan Waves window, either by using the GUI within Signalscan Waves, or by entering a Signalscan Waves command into a Do-File. Using the Define Buttons Form Select Options—Define Buttons . The Define Buttons form is displayed, as shown in Figure C-1 on page 247: June 2000 246 Product Version 6.5 Signalscan Waves User Guide Hot Keys, Colors, and Buttons Figure C-1 Define Buttons Form To change the function defined for a button: 1. Select a menu option from the Items in Selected Menu list or from the Items in Selected Submenu list. 2. Click your left mouse button on the current function for the button whose function you want to change. The function you click on below the button number changes to the function that is selected (highlighted) in the menu items lists. To undo any changes you make to the button definitions, click the Cancel button in the Define Buttons form. To return to the default button definitions, click the Default Settings button. 3. To cause your new button definitions to take effect, click the Configure button. These new settings only affect the type of window where you selected Options—Define Buttons . That is, if you changed button definitions on a Design Browser Window and then open a new Design Browser Window, both Design Browser Windows reflect the button definition change. However, other windows, such as a Waveform Window, do not reflect these changes. June 2000 247 Product Version 6.5 Signalscan Waves User Guide Hot Keys, Colors, and Buttons These changes only remain in effect for the current Signalscan Waves session. To save these button definitions, select File—Save Do-File , and in the Options for Saving a Do-File form (after you have specified a name for the Do-File), select Button Bars on the Preferences list, as shown in Figure C-2. To use these new button definitions in a new Signalscan Waves session, execute this Do-File (either on the Signalscan command line or by selecting File—Execute Do-File ). To automatically use your new button definitions every time you run Signalscan Waves, append this Do-File to your .Signalscanrc file in your home directory. Figure C-2 Saving Button Definitions Entering a Signalscan Waves Command Another way to specify the function of a button is to enter a define buttons command into your .Signalscanrc file or into another Do-File that you read. The following example specifies functions for some of the buttons in a Waveform Window: define buttons waveform \ 9 expand \ 10 createmarker \ 11 register:1 \ June 2000 248 Product Version 6.5 Signalscan Waves User Guide Hot Keys, Colors, and Buttons Colors Custom Colors You can change which colors are used for which Signalscan Waves features. Select Options—Define Colors . The Define Colors form is displayed, as shown in Figure C-3: Figure C-3 Define Colors Form To change a color definition: 1. Select a feature from the list on the left side of the Define Colors form. 2. Press and drag your left mouse button to move the Red, Green, Blue, Hue, Brightness, and Saturation sliders. 3. Click the Apply button. June 2000 249 Product Version 6.5 Signalscan Waves User Guide Hot Keys, Colors, and Buttons These new color definitions remain in effect only for this Signalscan Waves session. To use these color definitions again, save them in a Do-File, as described for buttons above, but select Color on the Preferences list in the Options for Saving a Do-File form. Colors When Zooming Out Signal colors in the Waveform Window may appear to change when you zoom out. This is because as you zoom out, multiple pixel values must be represented by a single pixel. Table C-2 shows the algorithm used to determine the pixel color used, listed in order from highest to lowest priority pixel value to use in the conversion. See also “Notes for Table C-2” on page 251. Table C-2 Pixel Colors Used When Zooming Out If Any of the Multiple Pixel Values Then The Pixel Color Used When Zooming Out Is: Is: (1) (4) Undefined "Waveform: Undefined State" (purple) Unknown "Waveform: Unknown State" (red) Mixed Bus "Waveform: Mixed Bus" (yellow) Range (2)(3) "Strength: Range" (yellow) Supply Strength (2) "Strength: Supply" (coral) Strong Strength (2) "Strength: Strong" (green) Pull Strength (2) "Strength: Pull" (purple) Large Strength (2) "Strength: Large" (fuchsia) Weak Strength (2) "Strength: Weak" (aqua) Medium Strength (2) "Strength: Medium" (blue) Small Strength (2) "Strength: Small" (pink) High Z Strength (2) "Strength: High Impedence" (orange) Range (3) "Strength: Range" (yellow) Supply Strength "Strength: Supply" (coral) Strong Strength "Strength: Strong" (green) Pull Strength "Strength: Pull" (purple) Large Strength "Strength: Large" (fuchsia) June 2000 250 Product Version 6.5 Signalscan Waves User Guide Hot Keys, Colors, and Buttons Table C-2 Pixel Colors Used When Zooming Out, continued If Any of the Multiple Pixel Values Then The Pixel Color Used When Zooming Out Is: Is: (1) (4) Weak Strength "Strength: Weak" (aqua) Medium Strength "Strength: Medium" (blue) Small Strength "Strength: Small" (pink) High Z Strength "Strength: High Impedence" (orange) Notes for Table C-2 1. Pixel values are listed in order from the highest to the lowest priority pixel value to use in the color conversion. 2. These values are used when on a transition: from high to low, low to high, value to anything, or anything to value. A transition strength has a higher priority than a nontransition strength. 3. Range means there is a value with a range of possible strengths. 4. The colors in parentheses are the default colors. All these colors are user selectable by selecting Options—Define Colors as described in “Custom Colors” on page 249. June 2000 251 Product Version 6.5 Signalscan Waves User Guide Index Symbols always 224 analog features 132 analog-to-digital conversion 141 display mode 138 expressions 143 escaping special characers 144 grid 137 measurements 146 Overlay Analog checkbox 133 overlay groups 133 pan 137 horizontal 137 vertical 137 printing 134 units 142 zoom horizontal 136 rectangular area 136 vertical 135 -analog option 133 analog waveforms 64, 134 analog-to-digital conversion 141 atod function 145 threshold values 142 atod (analog to digital) function 145 $bfm 165, 182, 193, 195 $display 161 $duv 182, 193, 196 $set_property 164, 195, 212 $shm_probe system task 112 $showscopes 196 $tbv_bfm 193, 195 $tbv_duv 193, 196 $tbv_test 193, 196 $tbv_thread 194, 198 $tbv_timeformat 190, 195, 215 $test 165, 182, 193, 196 $thread 182, 194, 198 $thread call 170 $timeformat 195, 215 $trans 162, 183, 194, 203, 206 limitations 163 $trans_begin 163, 175, 183, 194, 207 $trans_display 161, 194, 209 limitations 163 $trans_display_error 194, 210 $trans_end 163, 175, 183, 194, 207 $trans_error 163, 178, 194, 209, 216 $trans_event 163, 194, 208 $trans_tag 183, 195, 211 $trans_tag_get 169, 183, 195, 210 %t 190 +daitr_log_all 217 +daitr_log_error 217 . (period) 221 .do file 133, 137, 138 .signalscanrc file 248 ? 221 B BFM 161, 182 Bus Functional Model See also TVM multi-threaded 198 block 165 blocking task 203 bookmark 37 bundles. See buses bus functional model See BFM buses Bus Template syntax 43 bus templates 43 creating 99 mnemonics 18, 107 New Name button 101 values 18, 107 A TVM Transaction Verification Module 161 abort 221, 238 -above 210 add 222 AddToWave button 45 alias 224 June 2000 252 Product Version 6.5 Signalscan Waves User Guide buttons customizing Signalscan buttons 246 Design Browser 35, 36 design hierarchy 35 ascending 37 bookmarks 37 descending 36 Design Under Verification. See DUV $display 161 display 234 Do-Files 25, 133, 137, 138, 145, 218, 248 duplicate 234 DUV 172, 182 Design Under Verification C cd 224 center 225 children. See transactions close 225 closing a Signalscan session 22 collapse 225 colors customizing Signalscan colors 249 zooming out 250 comments adding to your design 63 constants adding to your design 105 continue 225 Control menu Add Unadded Highlighted Transactions 178 Show Child Transactions 175 Show Next Error 178 Show Parent Transactions 175 Show Predecessors 168, 173 Show Properties 174, 178 Show Related Transactions 168, 173, 177 Show Successors 168, 173 copy 226 create 226 -current_scope 212 -current_thread 212 -current_trans 212 Cursor1 14, 48, 50, 57, 61 Cursor2 14, 48, 50, 57 cut 227 E Edit>Create>Bus menu option 141 Edit>Overlay menu option 134 Edit>Stack menu option 134 error property 163 error rollup 179, 209, 216 error transactions 179 error_count variable 179, 216 -event option 112 events 14, 48, 96 ExecDoFile button 220 execute 234 exit 234 exiting 22 exiting Signalscan 22 expand 234 Expand Sequence Time See Sequence Time expressions adding to your design 107 escaping special characters 144 F File - Print menu option 117 File>Execute Do-File menu option 220 File>Save Do-File menu option 218 find 235 finite state machine. See FSM force 235 Format menu 61 formatting time $tbv_timeformat 190, 215 FSM 157 Finite State Machine D DAITR prefix 216 database command -event option 112 define 227 Define Buttons menu option 246 Define Colors menu option 249 delete 233 deselect 233 June 2000 253 Product Version 6.5 Signalscan Waves User Guide interacting L 159 label 158, 174 -last_trans 213 list 236 locate 237 log file 216 G gate-level designs 112 generate 235 GetDeepAll button 45 grid display 137 Group A 95 groups 14, 95 copy in the Names Pane 63 move in the Names Pane 62 select in the Names Pane 62 M markers 15, 48, 53, 55 creating 15, 53 merge 237 mnemonic mapping 18, 107 mnemonics 18, 107 module multi-threaded 201 module instances 182 move 237 Multi-List Pane 14, 15, 16, 58, 95, 99, 126 Register Window 21, 128 multi-threaded BFM 198 multi-threaded module 199, 201 multi-threaded TVMs 169 Multivalue Indication 16, 112 H height bracket 64, 134 help 235 hide 235 hierarchical transactions 159 hierarchy level 36 hot keys 245 I N include 236 info 236 initiate 236 insertion marker 61, 62, 64, 95, 98, 100, 134 moving 62 interactive mode 50, 57, 124 interface 174, 182 See also thread 157 address tenure 160 concurrent 160 data tenure 160 interacting 160 invert 236 inverting values 100 Names Pane 60 New Name button 101 not_genetic property type qualifier 192 O objects assignment sequence 113 register pages 121 values 127 once 237 open 237 Options>Define Buttons menu option 246 Options>Define Colors menu option 249 Overlay Analog checkbox 133 overlay groups 133 creating 133 Edit>Overlay 134 K keyboard shortcuts June 2000 186, 245 254 Product Version 6.5 Signalscan Waves User Guide R Edit>Stack 134 printing 134 radix 222 red diamond 179 reference name 198 reference number 198 Register Pages 19, 127 register pages 121, 128 create customized views of your design Register Window 20, 121, 127, 128 See also register pages shift time 127 registers grouping, ungrouping 129 release 240 rename 240 replace 240 reveal 241 P parents. See transactions paste 238 plus args 216 predecessor. See transactions print 238 Printing dialog box (Waveform Window) 117 properties 158, 164, 174, 175, 183 See also transactions $set_property 164, 212 assigning 162 assignments 191 multiple 191 deferred 159 definitions 183 See also property def description 203 error 163 escape option 215 formatting 187, 188 hidden 186 inheritance 192 inherited 159 label 158, 174 names 184 null option 215 removing 214 searching 192 types 185 qualifiers 186 not_genetic 186, 192 See also -property_definitions Properties Window 186 property def 183 -property_definitions 185, 187, 213 protocols 159 pwd 240 S save 241 scopes 36 trans_global 179 trans_properties 179 search events 96 select 241 Sequence Time 16, 112 expanding 17 set 241 shift 241 shift time 127 $shm_probe system task 112 show 242 signals strengths 47 Signalscan analog features 132 close, exit, quit 22 configuration 218 UNIX command line 29 signalscan -analog option 133 Signalscan commands . (period) 221 ? 221 abort 221, 238 add 222 Q quit 240 quitting Signalscan June 2000 22 255 Product Version 6.5 Signalscan Waves User Guide alias 224 always 224 cd 224 center 225 close 225 collapse 225 continue 225 copy 226 create 226 cut 227 define 227 delete 233 deselect 233 display 234 duplicate 234 execute 234 exit 234 expand 234 find 235 force 235 generate 235 help 235 hide 235 include 236 info 236 initiate 236 invert 236 list 236 locate 237 merge 237 move 237 once 237 open 237 paste 238 print 238 pwd 240 quit 240 release 240 rename 240 replace 240 reveal 241 save 241 select 241 set 241 shift 241 show 242 source 242 step 243 stop 243 terminate 243 toplevel 243 June 2000 undo 243 upscope 243 wait 243 write 244 zoom 244 .signalscanrc 25, 218, 220, 248 See also Do-File simulation time 123 source 242 special characters escaping in expressions 144 SST2 database 12, 161, 182 stacked signals Edit>Stack 134 See also overlay groups 133 step 243 stop 243 successor. See transactions system tasks 192 See also TRST calls T tasks blocking 203 nested task execution 164 system 192 See also TRST calls terminate 243 test segment 182 test thread 182 thread 160, 174, 182, 198 See also interface 157 management 200 multiple 158, 200 reference name 198 reference number 198 switching 199 test 182 trigger event 202 threshold values analog-to-digital conversion 142 time format $tbv_timeformat 190, 215 TimeA 14, 21, 48, 49, 56, 123, 128 toplevel 243 trans tags 183 trans_global scope 179 trans_properties scope 179 trans_tag 170, 173 256 Product Version 6.5 Signalscan Waves User Guide -trans_tag_link option 162, 168, 170, 173 -trans_type 206 Transaction List Window 177 Transaction Recording System Tasks. See TRST calls transaction tag management 210 transaction tags 210, 211 Transaction-Based Verification 157 transactions 157, 174 cause and effect 160, 183 child 159, 175 description 203 disjoint 163 error 179, 209 See also $trans_error and $trans_display_error error count 179 See error_count variable and error rollup 179 errors 163 hierarchical 159 hierarchical name 178 hierarchy 163, 175, 203 hierarchy levels 159 label 158, 174, 203, 205 linking 160, 168, 170 logging 216 model intent 203 name 203 options 162 overlap 158 parent 159, 175 predecessor 160, 168, 169 predecessor/successor relationships 160, 210 See also transaction tag management properties 158, 164, 175, 204 See also properties recording 161, 181, 192 See also TRST calls red diamond 178, 179 related 176 See also Control menu and Transaction List Window relationships 160 rows in Waveform Window 175 stand-alone intent 203 successor 160, 168, 170 tags 160, 168, 183 See also trans tags See also trans_tag and -trans_tag_link June 2000 option test 165 test intent 203 test segment 182 TVM 165 type 203 transactor 157 TRST calls 161, 181 Transaction Recording System Tasks $bfm 165, 182, 193 $duv 182, 193 $set_property 164, 195 $tbv_timeformat 195 $test 165, 182, 193 $thread 182, 194 $thread call 170 $trans 162, 183, 194 $trans_begin 163, 183, 194 $trans_display 161, 194 $trans_display_error 194 $trans_end 163, 183, 194 $trans_error 163, 194 $trans_event 163, 194 $trans_tag 183, 195 $trans_tag_get 169, 183, 195 module instance 193 properties 195, 212 thread 194 trans_tag 170 transaction 194, 203 transaction tag 194 transaction tag management 210 TVM 157, 160, 174, 182 $bfm 165 declaration 165 multi-threaded 169 TVM transaction 165, 182 U undo 243 upscope 243 V variable names special characters 144 variables AddToWave button 45 257 Product Version 6.5 Signalscan Waves User Guide copy in the Names Pane 63 display scale 139 GetDeepAll button 45 inverted 127 jump to value change 124 move in the Names Pane 62 select in the Names Pane 62 shift time 127 values 47 vectors 127 VCD files 12 vectors values 127 Verilog log file 216 Verilog plus arguments 216 View>Analog Display Mode menu 138 View>Grid menu option 137 W wait 243 Waveform Window 47 pink dots. See Multivalue Indication transaction rows 175 zooming 54 waveforms analog 47, 64, 134 digital 47 Windows 95 33 Windows 98 33 Windows NT 33 write 244 Z zoom 244 zooming 54 June 2000 258 Product Version 6.5