DC Tutorial
DC Tutorial
DC Tutorial
Copyright 2000 Synopsys, Inc. All rights reserved. This software and documentation contain confidential and proprietary information that is the property of Synopsys, Inc. The software and documentation are furnished under a license agreement and may be used or copied only in accordance with the terms of the license agreement. No part of the software and documentation may be reproduced, transmitted, or translated, in any form or by any means, electronic, mechanical, manual, optical, or otherwise, without prior written permission of Synopsys, Inc., or as expressly provided by the license agreement.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Registered Trademarks
Synopsys, the Synopsys logo, AMPS, Arcadia, CMOS-CBA, COSSAP, Cyclone, DelayMill, DesignPower, DesignSource, DesignWare, dont_use, EPIC, ExpressModel, Formality, in-Sync, Logic Automation, Logic Modeling, Memory Architect, ModelAccess, ModelTools, PathBlazer, PathMill, PowerArc, PowerMill, PrimeTime, RailMill, Silicon Architects, SmartLicense, SmartModel, SmartModels, SNUG, SOLV-IT!, SolvNET, Stream Driven Simulator, Synopsys Eagle Design Automation, Synopsys Eaglei, Synthetic Designs, TestBench Manager, and TimeMill are registered trademarks of Synopsys, Inc.
Trademarks
ACE, BCView, Behavioral Compiler, BOA, BRT, CBA, CBAII, CBA Design System, CBA-Frame, Cedar, CoCentric, DAVIS, DC Expert, DC Expert Plus, DC Professional, DC Ultra, DC Ultra Plus, Design Advisor, Design Analyzer, Design Compiler, DesignTime, Direct RTL, Direct Silicon Access, dont_touch, dont_touch_network, DW8051, DWPCI, ECL Compiler, ECO Compiler, Floorplan Manager, FoundryModel, FPGA Compiler, FPGA Compiler II, FPGA Express, Frame Compiler, General Purpose Post-Processor, GPP, HDL Advisor, HDL Compiler, Integrator, Interactive Waveform Viewer, Liberty, Library Compiler, Logic Model, MAX, ModelSource, Module Compiler, MS-3200, MS-3400, Nanometer Design Experts, Nanometer IC Design, Nanometer Ready, Odyssey, PowerCODE, PowerGate, Power Compiler, ProFPGA, ProMA, Protocol Compiler, RMM, RoadRunner, RTL Analyzer, Schematic Compiler, Scirocco, Shadow Debugger, SmartModel Library, Source-Level Design, SWIFT, Synopsys EagleV, Test Compiler, Test Compiler Plus, Test Manager, TestGen, TestSim, TetraMAX, TimeTracker, Timing Annotator, Trace-On-Demand, VCS, VCS Express, VCSi, VERA, VHDL Compiler, VHDL System Simulator, Visualyze, VMC, and VSS are trademarks of Synopsys, Inc.
Service Marks
TAP-in is a service mark of Synopsys, Inc. All other product or company names may be trademarks of their respective owners.
Printed in the U.S.A. Document Order Number: 00386-000 IA Design Compiler Tutorial, v2000.05
ii
Contents
About This Tutorial 1. Introduction to Design Compiler Whats New in This Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . New Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Known Limitations and Resolved STARs . . . . . . . . . . . . . . . . . . Synthesis Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2 1-2 1-5 1-6 1-6 1-7
Design Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-10 Input Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-10 Output Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-10 User Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-10 Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-11 Choosing the Interface to Use . . . . . . . . . . . . . . . . . . . . . . . . . . 1-11 The Design Analyzer Graphical Interface . . . . . . . . . . . . . . . . . 1-12 The dc_shell Command Line Interface . . . . . . . . . . . . . . . . . . . 1-13
iii
Files and Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-14 Script Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-15 Supported Operating Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-15 Preliminary Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-16 2. Design Analyzer Graphical Interface Fundamentals Starting Design Analyzer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting Design Analyzer in UNIX . . . . . . . . . . . . . . . . . . . . . . . Starting Design Analyzer in the Windows NT OS . . . . . . . . . . . Starting Design Analyzer From Within dc_shell in a Command Prompt Window . . . . . . . . . . . . . . . . . . . Quitting Design Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Running Design Analyzer Remotely . . . . . . . . . . . . . . . . . . . . . . . . Using the Design Analyzer Window . . . . . . . . . . . . . . . . . . . . . . . . Using Design Analyzer Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Designs View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2 2-3 2-3 2-4 2-5 2-5 2-6 2-8 2-9
Using Symbol View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-12 Using Schematic View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-13 Using Hierarchy View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-15 Using the Design Analyzer Command Window. . . . . . . . . . . . . . . . 2-17 Displaying the Command Window . . . . . . . . . . . . . . . . . . . . . . . 2-17 Entering Command-Line Commands . . . . . . . . . . . . . . . . . . . . 2-19 Using the Manage Licenses Window . . . . . . . . . . . . . . . . . . . . . . . 2-20 Returning Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-20
iv
Viewing the List of License Users . . . . . . . . . . . . . . . . . . . . . . . 2-21 3. How to Use Design Analyzer to Optimize a Design Dening the Target Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reading In a Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving a Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Design Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dening the Operating Environment . . . . . . . . . . . . . . . . . . . . . Setting Optimization Constraints . . . . . . . . . . . . . . . . . . . . . . . . 3-2 3-3 3-4 3-7 3-8 3-9
Optimizing the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10 Locating Problem Design Objects . . . . . . . . . . . . . . . . . . . . . . . . . . 3-12 Generating a Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-12 Checking the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13 Jumping to a Design Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14 Generating Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14 Running Script Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 4. How to Use the dc_shell Command-Line Interface Starting dc_shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting dc_shell in UNIX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting dc_shell in the Windows NT OS. . . . . . . . . . . . . . . . . . Prerequisite Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting dc_shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quitting dc_shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 4-2 4-3 4-3 4-4 4-4
Running dc_shell Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Running Commands in Windows NT OS and UNIX OS . . . . . . Running Commands in Design Analyzer . . . . . . . . . . . . . . . . . . Displaying a List of dc_shell Commands . . . . . . . . . . . . . . . . . . About dc_shell Command Output in the Windows NT OS . . . . . . . Executing Operating System Supplied Commands From dc_shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Executing Script Files in dc_shell . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Setting Up the Tutorial How This Tutorial Is Organized . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Tutorial Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Tutorial Directories in UNIX . . . . . . . . . . . . . . . . . . . . Creating Tutorial Directories in the Windows NT OS . . . . . . . . . Tutorial Directory Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The db Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The verilog Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The vhdl Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The appendix_A Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The work Directory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-2 5-4 5-4 5-5 5-7 5-7 5-8 5-8 5-9 5-9
Setting the Path or Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-10 Setting the Path in UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-10 Creating an Alias in UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-11 Setting the Path in the Windows NT OS . . . . . . . . . . . . . . . . . . 5-12 Setting Environment Variables in the Windows NT OS . . . . . . . . . 5-13
vi
About the Environment Variables. . . . . . . . . . . . . . . . . . . . . . . . 5-13 Using Windows Dialog Boxes to Set Variable Values . . . . . . . . 5-15 Setting Environment Variables Using the Command Prompt Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-17 Creating Setup Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-18 Allowed Combinations of Modes and Setup Files . . . . . . . . . . . 5-19 Browsing the System-Wide .synopsys_dc.setup File . . . . . . . . 5-21 Creating a .synopsys_dc.setup File in Your UNIX Home Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-22 Creating a .synopsys_dc.setup File in Your Home Directory in Windows NT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-24 Browsing the Design-Specic .synopsys_dc.setup File. . . . . . . 5-26 6. About the Alarm Clock Design TOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ALARM_BLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TIME_BLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . COMPARATOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ALARM_SM_2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3 6-3 6-6 6-8 6-8 6-9
CONVERTOR_CKT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10 7. Setting the Design Environment Before You Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Choosing an Input Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2 7-2
vii
Choosing an Interface for Design Compiler . . . . . . . . . . . . . . . Using Design Analyzer to Set the Design Environment . . . . . . . . . Starting Design Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
About Reading In a Hierarchical Design . . . . . . . . . . . . . . . . . . 7-6 Reading In a Hierarchical Design. . . . . . . . . . . . . . . . . . . . . 7-6 Reading In the VHDL Package Using Design Analyzer . . . . 7-7 Reading In the Lowest Hierarchy Level . . . . . . . . . . . . . . . . 7-8 Reading In the Second Hierarchy Level . . . . . . . . . . . . . . . . 7-22 Reading In the Top-Level Design . . . . . . . . . . . . . . . . . . . . . 7-27 Setting Attributes Using Design Analyzer . . . . . . . . . . . . . . . . . About Setting Attributes for the TOP Design . . . . . . . . . . . . Setting the Drive Strength on Input Ports. . . . . . . . . . . . . . . Setting the Drive Strength for CLK . . . . . . . . . . . . . . . . . . . . Setting the Load on Output Ports . . . . . . . . . . . . . . . . . . . . . Setting Other Attributes at the Top Level . . . . . . . . . . . . . . . 7-29 7-30 7-30 7-33 7-35 7-38
Saving the Design Using Design Analyzer . . . . . . . . . . . . . . . . 7-42 Using dc_shell to Set the Design Environment . . . . . . . . . . . . . . . . 7-43 Starting dc_shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-45 Starting dc_shell in UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-45 Starting dc_shell in the Windows NT OS . . . . . . . . . . . . . . . 7-46 Reading In a Hierarchical Design Using dc_shell . . . . . . . . . . . Reading In a Hierarchical Design. . . . . . . . . . . . . . . . . . . . . Saving the Design at Any Point Using dc_shell . . . . . . . . . . Reading In the VHDL Package Using dc_shell . . . . . . . . . . Reading In the Lowest Hierarchy Level . . . . . . . . . . . . . . . . Reading In the PLA Design . . . . . . . . . . . . . . . . . . . . . . . . . Reading In the Second Hierarchy Level . . . . . . . . . . . . . . . . Reading In the Top-Level Design . . . . . . . . . . . . . . . . . . . . . 7-47 7-48 7-49 7-50 7-51 7-54 7-55 7-57
viii
Setting Attributes Using the dc_shell Interface . . . . . . . . . . . . . Setting the Drive Strength on Input Ports. . . . . . . . . . . . . . . Setting the Drive Strength for CLK . . . . . . . . . . . . . . . . . . . . Setting the Load on Output Ports . . . . . . . . . . . . . . . . . . . . . Setting Other Attributes at the Top Level . . . . . . . . . . . . . . .
Saving the Design Using dc_shell . . . . . . . . . . . . . . . . . . . . . . . 7-67 8. Dening Optimization Goals and Setting Constraints Before You Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Design Analyzer Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . The dc_shell Command-Line Interface Preliminaries . . . . . . . . Removing Existing Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Setting Design Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . Determining Realistic Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . About Dening Goals for Design TOP . . . . . . . . . . . . . . . . . . . . Using Design Analyzer to Set Design Constraints . . . . . . . . . . . . . Setting Clock Constraints Using Design Analyzer . . . . . . . . . . . 8-3 8-3 8-4 8-4 8-5 8-6 8-6 8-7 8-8
Setting Delay Constraints Using Design Analyzer. . . . . . . . . . . . . . 8-11 Checking the Design, and Exploring and Correcting Errors, Using Design Analyzer . . . . . . . . . . . . . . . . . . . . . . . Check the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Display the Area That Pertains to the Warning . . . . . . . . . . Examine the Additional Messages . . . . . . . . . . . . . . . . . . . . Display the Pin Names Layer . . . . . . . . . . . . . . . . . . . . . . . . Examine the Remaining Errors . . . . . . . . . . . . . . . . . . . . . . Explore an Optional Exercise . . . . . . . . . . . . . . . . . . . . . . . . 8-13 8-13 8-15 8-18 8-18 8-20 8-21
ix
Resolving Multiple Design Instances Using Design Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-22 Saving the Design Using Design Analyzer . . . . . . . . . . . . . . . . 8-25 Using dc_shell to Set Design Constraints . . . . . . . . . . . . . . . . . . . . 8-26 Setting Clock Constraints Using dc_shell . . . . . . . . . . . . . . . . . 8-27 Setting Delay Constraints Using dc_shell . . . . . . . . . . . . . . . . . 8-28 Checking the Design Using dc_shell . . . . . . . . . . . . . . . . . . . . . 8-30 Check the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-31 Display the Pin Names Layer . . . . . . . . . . . . . . . . . . . . . . . . 8-32 Resolving Multiple Design Instances Using dc_shell. . . . . . . . . 8-33 Saving the Design Using dc_shell . . . . . . . . . . . . . . . . . . . . . . . 8-35 9. Compiling a Hierarchical Design Before You Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compiling and Analyzing the Design Using Design Analyzer . . . . . Compiling the Design to Optimize It Using Design Analyzer . . . 9-2 9-4 9-6
Evaluating and Interpreting the Design Using Design Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-15 Analyzing the Area Report Using Design Analyzer . . . . . . . 9-17 Analyzing the Constraint Report Using Design Analyzer . . . 9-18 Exploring the Design Space Using Design Analyzer . . . . . . . . . 9-20 Setting Tighter Time Constraints Using Design Analyzer . . . . . 9-22 Recompiling the Design Using Design Analyzer . . . . . . . . . . . . 9-23 Generating New Reports Using Design Analyzer . . . . . . . . . . . 9-25 Analyzing the New Reports Using Design Analyzer . . . . . . . . . 9-25 Saving the Newly Compiled Version Using Design Analyzer. . . 9-27 Using Alternatives to uniquify in Design Analyzer . . . . . . . . . . . 9-27
Undertaking the set_dont_touch Exercise . . . . . . . . . . . . . . 9-28 Undertaking the ungroup Exercise . . . . . . . . . . . . . . . . . . . . 9-31 Compiling and Analyzing the Design Using dc_shell . . . . . . . . . . . 9-34 Using dc_shell to Compile the Design to Optimize It . . . . . . . . 9-35 Setting Tighter Time Constraints Using dc_shell . . . . . . . . . . . . 9-39 Recompiling the Design Using dc_shell. . . . . . . . . . . . . . . . . . . 9-40 Generating New Reports Using dc_shell . . . . . . . . . . . . . . . . . . 9-40 Saving the Newly Compiled Version Using dc_shell . . . . . . . . . 9-43 Optional Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-43 Setting Attributes on Specic Cells . . . . . . . . . . . . . . . . . . . . . . 9-44 10. Analyzing Design Results Before You Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2 Generating the Schematic View Using Design Analyzer . . . . . . 10-2 Analyzing Design Results Using Design Analyzer . . . . . . . . . . . . . 10-4 Generating Attribute Reports Using Design Analyzer . . . . . . . . 10-5 Bus Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-6 Cell Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-9 Net Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-12 Compile Options Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-15 Generating Analysis Reports Using Design Analyzer . . . . . . . . 10-18 Hierarchy Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-18 Timing Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-21 Point Timing Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-29 Using the Schematic View for Analysis in Design Analyzer. . . . 10-39 Displaying Multiple Design Analyzer Windows . . . . . . . . . . . . . 10-41
xi
Printing Schematics Using Design Analyzer . . . . . . . . . . . . . . . 10-44 Analyzing Design Results Using dc_shell . . . . . . . . . . . . . . . . . . . . 10-48 Generating Attribute Reports Using dc_shell. . . . . . . . . . . . . . . 10-48 Bus Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-49 Cell Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-50 Net Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-52 Compile Options Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-54 Generating Analysis Reports Using dc_shell. . . . . . . . . . . . . . . 10-56 Hierarchy Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-57 Timing Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-58 Point Timing Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-62 Appendix A. Tutorial Script Files A-3 A-8
First Compilation Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-15 Second Compilation Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-16 Design Analysis Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-19 Appendix B. UNIX and the Windows NT OS for Synthesis Products B-2 B-2 B-3 B-4 B-4
Specifying Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparison of UNIX and Windows NT OS Paths . . . . . . . . . . . Universal Naming Convention (UNC) Path Names . . . . . . . . . . Backslash (\) Versus Forward Slash (/) . . . . . . . . . . . . . . . . . . . Using Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xii
Location of Files and Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Operating System Supplied Commands . . . . . . . . . . . . . . . . Appendix C. Creating a Home Directory in the Windows NT Operating System Appendix D. Index Synthesis Programs and Tools
B-5 B-6
xiii
xiv
Figures
Figure 1-1 Figure 2-1 Figure 2-2 Figure 2-3 Figure 2-4 Figure 2-5 Figure 2-6 Figure 2-7 Figure 2-8 Figure 2-9 Figure 2-10 Figure 2-11 Figure 2-12 Figure 2-13 Figure 3-1 Figure 3-2 Synthesis Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Design Analyzer Window . . . . . . . . . . . . . . . . . . . . . . . . UNIX Menu Bar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Windows NT OS Menu Bar. . . . . . . . . . . . . . . . . . . . . . . 1-9 2-6 2-8 2-8
Designs View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10 Design Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11 Symbol View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-13 Schematic View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-14 Zooming In on a Schematic . . . . . . . . . . . . . . . . . . . . . . 2-15 Hierarchy View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-16 Setup Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-18 Command Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-19 Manage Licenses Window . . . . . . . . . . . . . . . . . . . . . . . 2-21 License Users Window . . . . . . . . . . . . . . . . . . . . . . . . . . 2-22 Design Analyzer Save File Window in UNIX. . . . . . . . . . Design Analyzer Save As Dialog Box in Windows NT OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6 3-6
xv
Figure 3-3 Figure 3-4 Figure 3-5 Figure 3-6 Figure 3-7 Figure 5-1 Figure 5-2 Figure 5-3 Figure 6-1 Figure 6-2 Figure 6-3 Figure 6-4 Figure 6-5 Figure 7-1 Figure 7-2 Figure 7-3 Figure 7-4 Figure 7-5 Figure 7-6 Figure 7-7 Figure 7-8 Figure 7-9
Attributes Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-8
Design Optimization Window . . . . . . . . . . . . . . . . . . . . . 3-11 Synopsys Design Analyzer Window Showing a Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13 Attribute Reports in the Report Window . . . . . . . . . . . . . 3-15 Execute File Window . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-17 Tutorial Directory Structure for UNIX Systems . . . . . . . . Tutorial Directory Structure for the Windows NT OS . . . 5-5 5-7
Information Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-14 Alarm Clock Design Hierarchy . . . . . . . . . . . . . . . . . . . . Alarm Clock Block Diagram . . . . . . . . . . . . . . . . . . . . . . Alarm State Machine State Diagram . . . . . . . . . . . . . . . Time State Machine State Diagram . . . . . . . . . . . . . . . . Activate Alarm State Diagram . . . . . . . . . . . . . . . . . . . . 6-2 6-3 6-5 6-7 6-9
Analyze File Window in UNIX . . . . . . . . . . . . . . . . . . . . . 7-10 Analyze File Dialog Box in Windows NT OS. . . . . . . . . . 7-11 Analyze Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12 Elaborate Design Window. . . . . . . . . . . . . . . . . . . . . . . . 7-13 Elaborate Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-14 Synopsys Design Analyzer Window . . . . . . . . . . . . . . . . 7-15 Design Analyzer Read File Window in UNIX . . . . . . . . . 7-17 Design Analyzer Read File Dialog Box in Windows NT OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-18 Reading In the CONVERTOR Design in UNIX . . . . . . . . 7-20
xvi
Figure 7-10 Figure 7-11 Figure 7-12 Figure 7-13 Figure 7-14 Figure 7-15 Figure 7-16 Figure 7-17 Figure 7-18 Figure 7-19 Figure 7-20 Figure 7-21 Figure 7-22 Figure 7-23 Figure 8-1 Figure 8-2 Figure 8-3 Figure 8-4 Figure 8-5
Reading In the CONVERTOR Design in Windows NT OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-21 Synopsys Design Analyzer Window . . . . . . . . . . . . . . . . 7-22 Analyze Window Displaying Analyze Command Activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-24 Elaborate Design Window. . . . . . . . . . . . . . . . . . . . . . . . 7-25 Synopsys Design Analyzer Window for UNIX Showing Second and Third Level Design Icons . . . . . . . 7-26 Synopsys Design Analyzer Window for Windows NT OS Showing Second and Third Level Designs . . . . . 7-27 Synopsys Design Analyzer for UNIX Displaying All Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-29 Synopsys Design Analyzer Window for UNIX Showing Selected Ports . . . . . . . . . . . . . . . . . . . . . . . . . 7-31 Drive Strength Window . . . . . . . . . . . . . . . . . . . . . . . . . . 7-32 Computed Rise and Fall Values Shown in the Drive Strength Window . . . . . . . . . . . . . . . . . . . . . . . 7-34 Load Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-36 Load and Bus Selector Windows . . . . . . . . . . . . . . . . . . 7-37 Wire Load Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-40 Operating Conditions Window . . . . . . . . . . . . . . . . . . . . 7-42 Specify Clock Window . . . . . . . . . . . . . . . . . . . . . . . . . . 8-9
Clock Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-11 Output Delay Window . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-12 Check Design Window . . . . . . . . . . . . . . . . . . . . . . . . . . 8-14 Design Errors Window . . . . . . . . . . . . . . . . . . . . . . . . . . 8-15
xvii
Figure 8-6 Figure 8-7 Figure 8-8 Figure 8-9 Figure 8-10 Figure 8-11 Figure 9-1 Figure 9-2 Figure 9-3 Figure 9-4 Figure 9-5 Figure 9-6 Figure 9-7 Figure 9-8 Figure 9-9 Figure 9-10 Figure 9-11 Figure 9-12 Figure 9-13 Figure 9-14 Figure 9-15
Warning Message in Design Errors Window . . . . . . . . . 8-16 Close-Up of Design Areas in Design Analyzer Window . 8-17 View Style Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-19 Cell Names in the Design Analyzer Window. . . . . . . . . . 8-22 Command Window Showing Uniquify Command Results . . . . . . . . . . . . . . . . . . . . . . 8-24 Design Analyzer WIndow Showing Two CONVERTOR Instances. . . . . . . . . . . . . . . . . . . . . . . . . 8-25 Design Optimization Window . . . . . . . . . . . . . . . . . . . . . Boundary Optimization (Design Analyzer) . . . . . . . . . . . 9-7 9-8
CMOS Optimization Phase. . . . . . . . . . . . . . . . . . . . . . . 9-10 Mapping Optimizations Phase Results . . . . . . . . . . . . . . 9-11 Compile Log Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-12 The Compile Log Window at Completion of Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-13 Designs View With Modied Designs After Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-14 Report Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-16 Area Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-18 Constraints Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-19 Design Space Curve. . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-21 Specify Clock Window . . . . . . . . . . . . . . . . . . . . . . . . . . 9-23 Design Optimization Settings for Recompilation. . . . . . . 9-24 Area and Timing Reports . . . . . . . . . . . . . . . . . . . . . . . . 9-26 Decision Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-28
xviii
Figure 9-16 Figure 10-1 Figure 10-2 Figure 10-3 Figure 10-4 Figure 10-5 Figure 10-6 Figure 10-7 Figure 10-8 Figure 10-9
Hierarchy Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-33 Schematic View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-4 Report Output Window . . . . . . . . . . . . . . . . . . . . . . . . . . 10-7 DISP1 in the Bused Port Section . . . . . . . . . . . . . . . . . . 10-8 Close-Up of the Bused Port in Schematic View . . . . . . . 10-9 Cell Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11 Net Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-13 Schematic View Zoomed In on a Net . . . . . . . . . . . . . . . 10-15 Compile Options Report . . . . . . . . . . . . . . . . . . . . . . . . . 10-17 Hierarchy Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-20
Figure 10-10 Report Options Window . . . . . . . . . . . . . . . . . . . . . . . . . 10-22 Figure 10-11 Timing Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-25 Figure 10-12 Close Up of a Register and Pin in the Critical Path . . . . 10-27 Figure 10-13 Critical Path Trace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-28 Figure 10-14 Report Options Window . . . . . . . . . . . . . . . . . . . . . . . . . 10-30 Figure 10-15 Timing Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-32 Figure 10-16 Schematic View of TOP . . . . . . . . . . . . . . . . . . . . . . . . . 10-34 Figure 10-17 Startpoint and Endpoint of the Path . . . . . . . . . . . . . . . . 10-36 Figure 10-18 Timing Report for the Identied Path . . . . . . . . . . . . . . . 10-38 Figure 10-19 Pin Values Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-40 Figure 10-20 Net Load Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-41 Figure 10-21 Schematic View for COMPARATOR . . . . . . . . . . . . . . . . 10-42 Figure 10-22 Schematic View for ALARM_SM_2 in UNIX . . . . . . . . . . 10-43 Figure 10-23 Schematic View for ALARM_SM_2 . . . . . . . . . . . . . . . . 10-44
xix
Figure 10-24 Schematic Using Schematic Size-A . . . . . . . . . . . . . . . 10-46 Figure 10-25 Plot Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-47 Figure B-1 Figure B-2 Figure C-1 Figure C-2 Figure D-1 UNIX Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . Windows NT OS Directory Structure . . . . . . . . . . . . . . . User Properties Dialog Box . . . . . . . . . . . . . . . . . . . . . . User Environment Prole Dialog Box . . . . . . . . . . . . . . . Logic Synthesis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-6 B-6 C-2 C-3 D-2
xx
Tables
Table 5-1 Table 5-2 Table 5-3 Table 5-4 Table 5-5 Table B-1 List of Script Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-9
System Variables for Windows NT OS . . . . . . . . . . . . . . 5-15 User Environment Variables for Windows NT OS. . . . . . 5-16 Design Compiler Setup Files . . . . . . . . . . . . . . . . . . . . . 5-18 Allowed Combinations of Modes and Setup Files. . . . . . 5-20 UNIX and Windows NT OS Path Specications . . . . . . . B-2
xxi
xxii
FIX ME!
The Design Compiler Tutorial explains how to begin using Design Compiler tools. It explores the two interfaces of the Design Compiler and includes a set of exercises that you can work through to optimize and compile a sample design. The book is organized into two main parts, followed by Appendixes. The two main parts are I: Getting to Know Design Compiler and Its Interfaces Part I explains the basics of synthesis using Design Compiler. It also describes the two interfaces of Design Compiler: the Design Analyzer graphical user interface (GUI) and the Design Compiler dc_shell command-line interface (CLI). II: Using Design Compiler: A Tutorial Session Part II explains how to set up your system to run Design Compiler and describes the sample Alarm Clock design used for the tutorial. Then, using the sample design, it steps you through procedures that describe how to optimize a simple circuit. Description of each procedure begins with pertinent conceptual information. Following the main parts of the book is a set of appendixes that identify scripts les that replicate the tutorial procedures, provide a description of the differences imposed on the operation of the
xxiii
Synopsys synthesis tools by the underlying operating system (whether UNIX or Windows for NT), give instructions on creating a home directory in Windows NT, and provide general product information. This preface includes the following sections: Audience Related Publications SOLV-IT! Online Help Customer Support Conventions
xxiv
Audience
This manual is for engineers who are familiar with ASIC design but are not familiar with Design Compiler. A working knowledge of high-level design techniques, a hardware description language such as VHDL or Verilog, the operating system for your computer, and various commands derived from the UNIX operating system is assumed.
Related Publications
For additional information about Design Compiler, see Synopsys Online Documentation (SOLD), which is included with the software Documentation on the Web, which is available through SolvNET on the Synopsys Web page at http://www.synopsys.com The Synopsys Print Shop, from which you can order printed copies of Synopsys documents, at http://docs.synopsys.com
You might also want to refer to the following documentation for the following related Synopsys products:
Design Compiler User Guide Design Compiler Command Line Interfaces Guide Design Compiler Reference Manual: Constraints and Timing
xxv
Design Compiler Reference Manual: Optimization and Timing Analysis PrimeTime Reference Manual FPGA Compiler User Guide VHDL Compiler Reference Manual HDL Compiler for Verilog Reference Manual Test Compiler Reference Manual Library Compiler Reference Manual, volumes 1 and 2 DesignWare Developer Guide
xxvi
Customer Support
If you have problems, questions, or suggestions, contact the Synopsys Technical Support Center in one of the following ways: Open a call to your local support center from the Web. a. Go to the Synopsys Web page at http://www.synopsys.com and click SolvNET (SOLV-IT! user name and password required). b. Click Enter a Call. Send an e-mail message to support_center@synopsys.com. Telephone your local support center. - Call (800) 245-8005 from within the continental United States. - Call (650) 584-4200 from Canada. - Find other local support center telephone numbers at http://www.synopsys.com/support/support_ctr.
Conventions
The following conventions are used in Synopsys documentation.
Convention
Courier
Description Indicates command syntax. In command syntax and examples, shows system prompts, text from les, error messages, and reports printed by the system.
italic
xxvii
Convention bold
Description In interactive dialogs, indicates user input (text you type). Denotes optional parameters, such as
pin1 [pin2 ... pinN]
[]
(This example indicates that you can enter one of three possible values for an option: low, medium, or high.) _ Connects terms that are read as a single term by the system, such as
set_annotated_delay
Control-c
Indicates a keyboard combination, such as holding down the Control key and pressing c. Indicates a continuation of a command line. Indicates levels of directory structure. Indicates a path to a menu command, such as opening the Edit menu and choosing Copy.
xxviii
Part I:
1
Introduction to Design Compiler 1
Design Compiler synthesizes your HDL description into a technology-dependent, gate-level design. Using Design Compiler, you dene the environmental conditions, constraints, compile methodology, design rules, and target libraries to achieve your design goals. Design Compiler is the core of the Synopsys synthesis software products. It provides constraint-driven sequential optimization and supports a wide range of design styles. This chapter includes topics that introduce aspects of Design Compiler in the following sections: Whats New in This Release Synthesis Process Design Styles
Input Formats Output Formats User Interfaces Files and Directories Script Files Supported Operating Systems Preliminary Requirements
New Features
Design Compiler version 2000.05 includes the following new features: High Performance Arithmetic Component Generator Provides a mechanism in Design Compiler that uses Module Compiler as the arithmetic component generator as well as the datapath block generator. - Arithmetic Generator Component
Module Compiler generated architectures are selected for arithmetic components like adders, multipliers, vector sum, and sum-of-product operations. - Specialized Architecture for Sum-of-Products Module Compiler datapath synthesis capabilities are used to build carry-save adder structures for designs containing vector sums and sum-of-product operations. This feature introduces the new partition_dp command. For additional information, refer to Design Compiler Reference Manual: Constraints and Timing. New Generated Clocks Feature The create_generated_clock command permits a user to generate a new clock, based on an already existing clock, at a specied list of pins or ports of the design. The period and waveform of the newly generated clock can be varied from that of the original clock with arguments specied on the command line. The key advantage of this command is that when parameters controlling the original clock are changed, these changes will be automatically reected in the clocks generated from it. This feature is consistent with the one in PrimeTime. For additional information, refer to Design Compiler Reference Manual: Constraints and Timing. Input Parasitics The new set_input_parasitics command - Models the effect of external RC on delay to input ports. - Improves accuracy of signal arrival times at input ports by accounting for the delay of long nets (from top-level routing) between blocks during synthesis.
For additional information, refer to Design Compiler Reference Manual: Constraints and Timing. Pipeline Retiming The new pipeline retiming feature is a multiclass retiming capability that retimes asynchronous registers and also improves area and delay for designs with mixed asynchronous and synchronous registers. Design Compiler supports retiming on designs containing subblocks that have the dont_touch attribute set. RTL Load Annotation The RTL-load-annotation capability provides more accurate wire loads for top-level nets during early synthesis. It allows users to annotate a load value greater than the load suggested by a statistical wire load model on specic nets. The annotations are retained throughout the synthesis process and are used during structuring, mapping, and placement-independent optimizations. The net with the annotated load can undergo optimization and still retain the annotated load value. Nets without RTL-load annotations use statistical wire load models for optimization. For additional information, refer to Design Compiler Reference Manual: Optimization and Timing Analysis. Automated Chip Synthesis (ACS) Automated Chip Synthesis (ACS) is a new feature in Design Compiler version 2000.05 that automates a divide and conquer strategy for chip-level synthesis in a single command. For more information please refer to the ACS User Guide.
Enhancements
Design Compiler version 2000.05 includes the following enhancements: Area Optimization Improvements Provide further improvements in area optimization by building on changes incorporated for the 1999.10 release. The principal target designs are those designs that are loosely constrained for delay. These designs tend to meet delay optimization goals easily. Hold Time Fixing Enhancements - Improves the hold time xing algorithms to provide faster runtimes and more complete xing with the smallest possible impact to delay and design area. - Adds an option to prefer cell count over area in hold time xing phase. - Enhances the set_prefer -min feature so you can specify a list of buffer/inverter cells to be used for hold time xing. Enhancements to report_timing New options have been added to report_timing to improve ease of use and provide more details for analysis. The new options are -capacitance and -sort_by. The existing -path option supports a new argument, full_clock. -of_objects reporting function in Tcl The get command -of_objects option creates a collection of cells, libraries, nets, pins, ports, library cells, and library cell pins connected to the specied object. For additional information, refer to Design Compiler Command-Line Interface Guide.
Changes
Design Compiler version 2000.05 includes the following changes: Improved set_clock_latency Command The set_clock_latency command has been enhanced to support the -early/-late option for specifying clock source latency. Clock source latency is the time a clock signal takes to propagate from its ideal waveform origin to the clock denition point in the design. Clock source latency can be applied to ideal or propagated clocks. With the -early/-late option, users can estimate the fastest (earliest) and the slowest (latest) times for the clock edge to reach the clock denition point. For additional information, refer to Design Compiler Reference Manual: Constraints and Timing. Setting implicit size_only Improves Design Compiler usability by setting an implicit size_only attribute where the implicit dont_touch attribute has been set. With this change the cell can be mapped and resized and still preserve the reference pin.
2. If prompted, enter your user name and password. If you do not have a SOLV-IT! user name and password, you can obtain them at http://www.synopsys.com/registration. 3. Click Release Notes, then open the Design Compiler Release Notes.
Synthesis Process
Design Compiler optimizes logic designs for speed, area, and routability. This optimization is performed for hierarchical combinational or sequential circuit design descriptions. From the goals you dene for measurable circuit characteristics, Design Compiler synthesizes a circuit and puts it in a target technology. This allows you to generate schematics and netlists compatible with your computer-aided engineering (CAE) tools. The synthesis process in Figure 1-1 follows this general scheme: Read in the design and its subdesigns. See Chapter 7, Setting the Design Environment. Set design attributes on the top-level design. See Chapter 7. Set realistic timing or area goals for the design. See Chapter 8, Dening Optimization Goals and Setting Constraints. Run check_design to verify the design. Identify and correct any errors. See Chapter 7 and Chapter 8. Perform Design Compiler optimization. See Chapter 7. Run area and constraint reports to determine whether design goals are met. See Chapter 9, Compiling a Hierarchical Design.
Reoptimize after modifying attributes or constraints if goals are not met. See Chapter 9. Run additional reports and schematics to analyze results further. See Chapter 10, Analyzing Design Results.
Read In Design
Set Attributes
Change Constraints
No Optimize
Good Results?
No
Yes Done
Design Styles
Designs can be hierarchical or at, sequential or combinational.
Input Formats
The Design Compiler products support VHDL and Verilog design entry formats for the design description. Design Compiler also supports the programmable logic array (PLA) and EDIF 2 0 0 formats. FPGA Compiler supports the Xilinx XNF format.
Output Formats
In addition to the Synopsys binary format (.db format), the Design Compiler products support VHDL, Verilog, and EDIF 2 0 0 output formats. Design Compiler also supports equation, large-scale integration (LSI), Mentor Graphics, PLA, state table, and Tegas formats. FPGA Compiler supports the Xilinx XNF format.
User Interfaces
This section gives a brief introduction to the two Design Compiler user interfaces. It includes these topics: Platform Requirements Choosing the Interface to Use The Design Analyzer Graphical Interface
Platform Requirements
For UNIX systems, if you are using a workstation without the X Window System, you cannot use the Design Analyzer interface to run the tutorial. Viewing schematics of designs requires the X Window System. However, you can use the command-line interface to perform the tutorial procedures. With the Windows NT operating system, you can run the tutorial by using Design Analyzer or you can run it in command-line entry mode running the dc_shell in a command prompt window.
To learn to use Design Compiler, many design engineers rst use the Design Analyzer graphical user interface (GUI). As they become procient with the system, they begin to use the dc_shell commands and scripts. To fully exploit the speed and capabilities of Design Compiler, design engineers often devise strategies that use both dc_shell and Design Analyzer. For example, a design engineer can create script les to be executed from either the dc_shell command line or the Design Analyzer Command Window (dcsh mode only). The engineer might create a script, then run the script from dc_shell repeatedly, modifying values with each cycle to optimize the design. To display schematics or write reports to the Report Output window of the Design Analyzer, the design engineer would run the script periodically from the GUI window rather than from the dc_shell command line. For additional information on the Design Compiler interfaces and how to use Design Compiler, see the Design Compiler User Guide. Note: For the tutorial, you can save the sample design as a .db le in Design Analyzer, which preserves the constraints on the le, and then read the design into dc_shell to continue the tutorial within dc_shell.
For more information on using the Design Analyzer interface of Design Compiler, See Chapter 2, Design Analyzer Graphical Interface Fundamentals, for information about Design Analyzer features See Chapter 3, How to Use Design Analyzer to Optimize a Design, for information on using Design Analyzer to optimize a design
For more detailed information on Design Analyzer features, see the Design Analyzer Reference Manual.
See the Design Compiler User Guide for additional information about the command-line interface See the Design Compiler Command-Line Interfaces Guide for additional information on the dc_shell interface. (This guide also addresses the new tcl-based shell interface.)
Script Files
A script le is a collection of dc_shell commands that you can run using either the Design Analyzer interface or the dc_shell Command-Line interface of Design Compiler. The script les for the commands used in the tutorial exercises are provided online in the appendix_A directory and are listed in Appendix A of this manual. Script le names in this tutorial have the .script le extension if they contain dcsh-mode commands or the .tcl le extension if they contain dctcl-mode commands. Note: You cannot use Tcl scripts in Design Analyzer. For additional information, see Chapter 3, How to Use Design Analyzer to Optimize a Design, which describes how to execute script les from within Design Analyzer Chapter 4, How to Use the dc_shell Command-Line Interface, which describes how to execute script les from the dc_shell command-line interface
Note: When you use the Windows NT OS version of Design Compiler, commands, arguments, and options that interact directly with the dc_shell or Design Analyzer remain in the UNIX style. However, if these commands, arguments, and options interact directly with the Windows operating system, you must use the Windows NT OS commands. See Appendix B, UNIX and the Windows NT OS for Synthesis Products, for a summary of the differences between using the tools under UNIX and Windows NT OS.
Preliminary Requirements
To use Design Compiler, you must be familiar with your workstation operating system and be able to Change directories Create directories Create alias commands View le contents Use a text editor Set environment variables (for UNIX users, set them in your .cshrc le, and for Windows NT users, set them by using system icons).
2
Design Analyzer Graphical Interface Fundamentals 2
This chapter describes the basic tasks you need to perform to run Design Analyzer under the UNIX or Windows NT operating system. It also explores the Design Analyzer views and windows, including the command-line entry window. Fundamental tasks include how to start and quit the program and how to run it remotely. Design Analyzer views and windows are the structures within which you exercise Design Analyzer features and see results. The Command Window allows you to enter Synopsys commands (dcsh mode only) in a text eld and see the results, just as you would in the dc_shell interface. Finally, this chapter describes the Manage Licenses window, which you can use to obtain and relinquish a license to run Design Compiler and to view the list of current license holders.
If you plan to run the tutorial by using the Design Analyzer interface which is the recommended approach for rst-time usersread this chapter before you begin the tutorial exercises covered in Chapter 5, Setting Up the Tutorial, and the chapters that follow it. This chapter includes the following sections: Starting Design Analyzer Quitting Design Analyzer Running Design Analyzer Remotely Using the Design Analyzer Window Using Design Analyzer Views Using the Design Analyzer Command Window Using the Manage Licenses Window
During the tutorial, always start Design Analyzer from the tutorial directory. Starting from this directory causes the variables dened in the tutorial .synopsys_dc.setup to be initialized.
Of these methods, the rst approach is recommended. This method lets you review any error messages reporting conditions that interrupt or abort invocation of Design Analyzer.
dc_shell> da
2. Start a remote shell on the machine servername. This opens and displays the results in a window on your local node hostname.
% rsh servername -n /usr/bin/X11/xterm -display hostname:0 &
View Buttons
The Design Analyzer window consists of the following: Menu bar Presents the primary menus of Design Analyzer. View buttons Change the way Design Analyzer depicts the selected design or instance. Design Analyzer views are shown later in this chapter.
Note: The T button (Text view) is not used in version 3.4 and later. Level buttons Move you up or down through the design hierarchy, allowing you to work at different levels in the design. View window Presents designs, schematics of designs, and design hierarchies. The window includes scroll bars on the right and bottom sides. Message area Displays information about the current level of hierarchy and selected objects. The exact appearance of the window depends on whether you are using the UNIX OS (and, if so, which X-windows window manager) or the Windows NT OS. All primary menus are displayed in the Design Analyzer window. Some menus and menu items are not available at all times. Menus and menu items that are not available appear as dimmed text. For example, when you rst start Design Analyzer, the Edit, View, Attributes, and Tools menus appear dimmed; only the Setup and File menus are available. The dimmed menus are not available until a design is loaded into Design Analyzer. The entries on the menu bar under UNIX and the menu bar under Windows NT OS differ somewhat. See Figure 2-2 for a sample UNIX menu bar. See Figure 2-3 for a sample Windows NT OS menu bar.
Design Analyzer provides buttons and menu items for navigating among views and the design hierarchy. View buttons change between the three Design Analyzer views: the Schematic view, the Symbol view, and the Hierarchy view. Level buttons (up and down arrows) change levels of design hierarchy and allow access to other views from the Designs view. Buttons perform functions that are also available as menu items. View button functions are available as menu items under View > Change View. Level button functions are available as menu items under View > Change Level.
Note: The T button (Text button) is not used in version 3.4 and later. Each Design Analyzer view displays the type of view in the lower right corner of the window.
View Buttons
No Longer Used
View Indicator
View buttons and level buttons are displayed along the left side of all Design Analyzer views. The view buttons are disabled in the Designs view. To move to other views from the Designs view, you must rst push into a design. To push into a design, 1. Click the design icon to select the design. The Symbol view or Schematic view appears. (The Schematic view appears if a schematic was previously generated.) 2. Choose View > Change Level.
Shortcut: You can also push into a design by clicking the down-arrow level button after selecting the design. To return to the Designs view from any other view, Choose View > Change Level > Top. or Click the up-arrow level button one or more times until the Designs view displays. The Designs view uses four types of design icons to identify design formats, as shown in Figure 2-5.
Netlist
Equation
PLA
State Table
Netlist Represents a design when it is read in as a netlist or when the design is optimized into gates by Design Compiler. Equation Represents a design in VHDL, Verilog, or equation format that is partially or completely behavioral. PLA Represents a design in programmable logic array (PLA) format.
State Table Represents a design in state table format. The design les in the Alarm Clock hierarchy do not use state table format.
Bused Ports
View Indicator
View Indicator
The blocks displayed in the schematic are subdesigns of TOP, the design used in the tutorial. For more information on the tutorial design, see Chapter 6, About the Alarm Clock Design. Shortcut: To move from the Symbol view to the Schematic view, double-click the design in the Symbol view. To zoom in on a portion of the schematic, 1. Place the pointer anywhere in the Design Analyzer window. 2. Press the right mouse button, and choose Zoom. The pointer changes to a cross hair.
3. Drag the pointer across the area you want to magnify. When you release the mouse button, the selected area lls the window. See Figure 2-8.
To restore the full view, choose View > Full View. Keyboard Equivalent Press Ctrl-f to display the full view.
To display the Hierarchy view for a design, choose View > Change View > Hierarchy. The Hierarchy view appears, and the Hierarchy view button is highlighted. See Figure 2-9.
Instance Name
View Indicator
In the sample design TOP, the hierarchy level below TOP contains six subdesigns, which are displayed in the window. Scroll back and forth to see all six designs, or enlarge the window by dragging a window border or double-clicking the windows title bar. The names in parentheses following the design names are the instance names.
2. Click Command Window. The Command Window opens. See Figure 2-11.
Design Analyzer (TM) Behavioral Compiler (TM) DC Professional (TM) DC Expert (TM) FPGA Compiler (TM) VHDL Compiler (TM) HDL Compiler (TM) Library Compiler (TM) Test Compiler (TM) Test Compiler Plus (TM) CTV-Interface DesignWare Developer (TM) DesignTime (TM) DesignPower (TM)
Design Analyzer writes the information displayed in the Command Window to the view_command.log le. To minimize the Command Window, click the Minimize button.
If you know the tools and interfaces you need, you can check out the required licenses as soon as you invoke Design Analyzer. Checking out licenses early ensures that a license is available when you are ready to use it. You can use the Manage Licenses window to give up a license when you are nished with it. If you dont use the Manage Licenses window to check out licenses, your Design Analyzer session checks out the required licenses when they are needed during processing. Unless you release a license, your Design Analyzer session keeps any licenses until you exit the Design Analyzer session.
Returning Licenses
To display the Manage Licenses window, Choose Setup > License > Manage. The Manage Licenses window appears, as shown in Figure 2-12.
Shortcut: To move licenses from one column to another, use the left mouse button to double-click the license.
To close the License Users window, click Cancel. For more information about network licensing, see the Design Compiler User Guide and the Licensing Installation and Administration Guide.
3
How to Use Design Analyzer to Optimize a Design 3
Design Analyzer is the graphical interface to Design Compiler. This chapter introduces many of the tasks you perform with Design Analyzer to optimize a design. Beginning with Chapter 7, Setting the Design Environment, the tutorial guides you through these procedures using the sample Alarm Clock design. Before you begin the tutorial for the rst time, using Design Analyzer, read this chapter to gain understanding of Design Analyzer features and the Design Compiler tasks they address. For more details on using Design Analyzer, see the Design Analyzer Reference Manual. This chapter includes the following sections: Dening the Target Library
Reading In a Design Saving a Design Setting Design Attributes Optimizing the Design Locating Problem Design Objects Generating Reports Running Script Files
This displays the Defaults window. The Target Library eld shows the current value of the target_library variable. To change the target library value, 1. Enter the name of the technology library in the Target Library eld. 2. Click OK to set the new value. 3. Click Cancel to close the Defaults window.
Reading In a Design
Before using Design Analyzer or Design Compiler to work on a design, read the design from disk into active memory. This procedure is called reading in a design. As the design is read in, it is translated to a binary format, called .db format. Files in .db format have the .db le extension. Design Compiler provides these commands for reading in les: analyze and elaborate These two commands are always used together to read in Verilog or VHDL design les. The analyze command reads a VHDL or Verilog le, checks for proper syntax and synthesizable logic, and stores the design in an intermediate format. Use analyze to read in each subdesign as well as the top level of the design hierarchy.
The elaborate command creates a design from the intermediate format produced by analyze. The elaborate command replaces the HDL operators in your design with synthetic operators and determines the correct bus sizes. Use elaborate on the top level and on subdesigns to which you are passing parameters. read Use the read command to read in les that are in formats other than HDL, such as db, pla, and other formats supported by Design Compiler. Although read supports HDL formats, it does not do the checking accomplished by analyze and elaborate. Commands for reading in designs are available at the dc_shell prompt or on the File menu in Design Analyzer. Note: For additional information, see the analyze, elaborate, and read Synopsys man pages. You can view the man pages from within dc_shell. After reading in a design, Design Analyzer represents the design as an icon in the Designs View window. The Designs View window is shown in Using Designs View on page 2-9.
Saving a Design
You can save (write to disk) a design at any time and to any name or supported format. Supported output formats are shown in Chapter 1, Introduction to Design Compiler.
Design Compiler does not automatically save designs when you exit. After you modify a design, you must save it to keep any changes made to the design. Some formats, such as VHDL and Verilog, require a license to write to disk. Use the write command in dc_shell to write a le to disk. To save a le by using Design Analyzer menu options, 1. Choose File > Save As in the Design Analyzer menu bar to open the Save File window. Figure 3-1 shows how the Save File window looks when you run Design Analyzer in UNIX.
Figure 3-2 shows how the Save File window looks when you run Design Analyzer in Windows NT OS.
2. After choosing a le format, click OK. The window closes, and the design le is saved on the disk.
How to Use Design Analyzer to Optimize a Design 3-6
For descriptions of all the menu items in the Attributes menu, refer to the Design Analyzer User Guide and the Design Compiler manuals.
Use the Symbol View and the Attributes menu to set attributes on a designs ports. For more information on the Symbol view, see Chapter 2, Design Analyzer Graphical Interface Fundamentals. In Chapter 7, Setting the Design Environment, and Chapter 8, Dening Optimization Goals and Setting Constraints, you set these attributes on a simple hierarchical design.
Choose Attributes > Optimization Constraints > Timing Constraints to set design goals for the timing of your circuit.
2. Choose the optimization options you require. See the Design Compiler Reference Manual: Optimization and Timing Analysis and the Design Analyzer Reference Manual for details on these options. 3. Click OK. The window closes, and Design Compiler optimization begins.
Generating a Schematic
To generate the schematic for a design, 1. Select the design in the Designs view. 2. Click the down arrow. Design Analyzer generates and displays the schematic, as shown in Figure 3-5.
CurrentDesign Indicator
Warning: In design CONVERTOR, output port A0 is connected directly to output port D0. (LINT-31)
Generating Reports
During the tutorial, you can explore some of the reporting features of Design Compiler as well as experiment with other reporting options on your own. Design Compiler reports provide a variety of information about a design. Reports can be general or specic, providing information on a large choice of topics. The Design Analyzer Report window indicates your choices when generating reports. You can generate reports after the design is read in as a netlist or after optimization. To open the Report window, choose Analysis > Report in the Design Analyzer menu bar. See Figure 3-6.
When you click Apply, Design Compiler generates the reports you choose. The window remains open until you click Cancel.
You can direct report output to a report window or to a le. The Design Analyzer tool also writes reports to the view_command.log. For detailed information on Design Compiler reports, see the Design Compiler manuals.
2. Enter the script le name in the File Name eld. You can move up and down the directory structure by clicking a subdirectory or by clicking Move up one directory. The tutorial script les are located in the appendix_A subdirectory. 3. Click OK. The script runs, and the Execute File window closes.
4
How to Use the dc_shell Command-Line Interface
This chapter describes the fundamental tasks you perform when running the Design Compiler dc_shell under the UNIX OS or the Windows NT OS. The dc_shell commands are presented in both the original Synopsys scripting language (dcsh mode), and in the Tool command language (Tcl mode). The dcsh mode is the default mode. To run in the Tcl mode, you must use the -tcl_mode switch when you start dc_shell. This chapter includes the following sections: Starting dc_shell Quitting dc_shell Running dc_shell Commands
About dc_shell Command Output in the Windows NT OS Executing Operating System Supplied Commands From dc_shell Executing Script Files in dc_shell
Starting dc_shell
Before launching dc_shell, set up the tutorial as described in Chapter 5, Setting Up the Tutorial. This section includes the following: Starting dc_shell in UNIX Starting dc_shell in the Windows NT OS
which launches dc_shell in dcsh mode and displays the dc_shell command-line prompt
dc_shell>
or type
which launches dc_shell in Tcl mode and displays the dc_shell command-line prompt
dc_shell-t>
Prerequisite Task
If the PATH statement does not already include the Synopsys executable directory path, modify your PATH variable before you start dc_shell to include the following directory path: c:\Synopsys\msvc50\syn\bin You can use the Windows NT OS set command or the System Properties page to set the PATH variable. Note: If your Synopsys software was installed in a directory other than C:\synopsys, specify the actual installation directory.
Starting dc_shell
To start dc_shell, using a command prompt window, 1. Open a command prompt window. 2. Type dc_shell at the command prompt,
c:\> dc_shell
This action launches dc_shell, displaying the dc_shell command line prompt.
dc_shell>
Quitting dc_shell
To quit dc_shell, at the command line prompt, do the following: Type quit or exit.
dc_shell> quit
or
dc_shell-t> quit
Running Commands in Design Analyzer, which describes how to run dc_shell commands in the Design Analyzer command window. Displaying a List of dc_shell Commands, which identies the Design Compiler dc_shell commands that are similar to commands used in the UNIX operating system.
Analyzer command window. For more information about the Design Analyzer command window, see Chapter 2, Design Analyzer Graphical Interface Fundamentals.
or
dc_shell-t> list_commands
Examples The following command examples are shown with the dc_shell prompt of the dcsh mode. Except for the alias command, you can enter these commands, as shown, in dctcl mode.
dc_shell> cd db
Creates a dc_shell command alias called wv. In this example, wv replaces the write -f verilog command and writes the le you specify to disk in Verilog format.
dc_shell> pwd
Displays a list of previously executed commands in dc_shell. The list is n commands long.
dc_shell> !n
Runs command number n in a history list of commands. Use the history command to determine the number n.
dc_shell> !!
Runs the most recent command beginning with the character string you specify.
dc_shell> man any_command
or
dc_shell-t> eval sh {lpr filename}
or
dc_shell-t> eval sh {lpr -S server -P printer filename }
In the above commands, server is your print server and printer is the name of the printer.
or
dc_shell-t> source script_file
Part II:
5
Setting Up the Tutorial 5
This chapter describes the structure of the tutorial and how to set up the tutorial for both UNIX and Windows NT operating system environments . Before you begin the tutorial exercises described in Setting the Design Environment in Chapter 7, you must set up the tutorial. You do this by creating your tutorial directories and then copying and modifying Design Compiler initialization les. Before you begin the tutorial, To learn about the Design Analyzer views, menus, and other interface features that allow you to execute functions, see results, and navigate the GUI, read Chapter 2, Design Analyzer Graphical Interface Fundamentals. To learn about the dc_shell command-line interface, read Chapter 4, How to Use the dc_shell Command-Line Interface.
This chapter includes the following sections: How This Tutorial Is Organized Creating Tutorial Directories Tutorial Directory Contents Setting the Path or Alias Setting Environment Variables in the Windows NT OS Creating Setup Files
Contains exercises you perform to dene optimization goals and constraints before you optimize the design. During optimization of the design, Design Compiler algorithms assess how best to implement the design by using the constraints you specify. Chapter 9: Compiling a Hierarchical Design Contains exercises you perform to optimize the hierarchical design by using the attributes and constraints you set earlier. Chapter 10: Analyzing Design Results Describes how to generate and analyze reports, including how to generate bus, cell, net, compile options, and hierarchy reports; how to analyze circuits, using schematics; how to report point-to-point timing; and how to generate a sized schematic for printing. These chapters have a similar structure, including the following parts: Preliminary information and tasks You must complete these tasks before undertaking the exercises. You perform these preliminary tasks before using either interface for the main exercises. How to perform the exercises, using Design Analyzer For each task in the set of related tasks, this section contains conceptual information followed by steps explaining how to perform the task when using Design Analyzer. How to perform the exercises, using dc_shell For each task in the set of related tasks, this section contains conceptual information followed by commands and discussion explaining how to perform the task when using dc_shell.
Setting Up the Tutorial 5-3
For each chapter, Appendix A, Tutorial Script Files, contains listings of script les whose commands replicate the tasks covered in that chapter. The appendix also identies the location of the script les themselves.
The tutorial les are located in the Synopsys installation directory at your site. Throughout the tutorial, the variable usr/synopsys denotes your installation root directory. Where you read usr/synopsys in text, examples, and commands, substitute your own installation directory for UNIX. For Windows NT, you must substitute C:\Synopsys for usr/synopsys.
% cp -r /usr/synopsys/doc/syn/tutorial
3. Check the contents of the tutorial directory and subdirectories against the directories and their les listed in Tutorial Directory Contents. After you copy the tutorial les into your home directory, your directory structure has the structure shown in Figure 5-1.
tutorial/
db/
verilog/
vhdl/
appendix_A/
work/
The db, verilog, and vhdl directories contain the same designs in different formats. Any one of the three directories is sufcient for performing the tutorial exercises. If you have a Verilog license, you can use the design les in the verilog directory; however, the exercises in the documentation use the vhdl format.
The les needed for the tutorial are in the c:\synopsys\msvc50\doc\syn\tutorial directory. To create a tutorial directory under your home directory and copy all subdirectories and les from the tutorial directory, 1. Change to your home directory. 2. Enter the following command:
copy c:\synopsys\msvc50\doc\syn\tutorial c:\users\%username%\
3. Check the contents of the tutorial directory and subdirectories against the directories and their les listed in Tutorial Directory Contents. After you copy the tutorial folders and les into your home directory, your tutorial directory hierarchy has the structure shown in Figure 5-2.
tutorial\
db\
verilog\
vhdl\
appendix_A\
work\
The db Directory
The db directory contains tutorial design les in Synopsys database (.db) format.
ALARM_BLOCK.db ALARM_COUNTER.db ALARM_SM_2.db ALARM_STATE_MACHINE.db COMPARATOR.db HOURS_FILTER.db MUX.db TIME_BLOCK.db TIME_COUNTER.db TIME_STATE_MACHINE.db
CONVERTOR.pla CONVERTOR_CKT.db
TOP.db
CONVERTOR_CKT.vhd
To nd and run Design Analyzer and Design Compiler, make sure your system points to the installation path name for your Synopsys synthesis tools. To set a pointer to the installation path, Add the path name to your path environment variable or for UNIX environments, create an alias command that points to the path name.
Substitute your installation directory for usr/synopsys and your machine architecture for arch (for example, decmips, hp300, and sparc).
This path allows you to run the design_analyzer and dc_shell commands. To add the path name to your UNIX path variable, 1. Add this line to the PATH variable in your .cshrc le:
/usr/synopsys/arch/syn/bin
Substitute your installation directory for usr/synopsys and your machine architecture for arch. 2. Enter these UNIX commands:
% source .cshrc % rehash
This path allows you to run the Design Analyzer and dc_shell commands. To add the path name to your Windows NT OS path variable, 1. Right-click on the My Computer icon. 2. Choose Properties. The System Properties window appears. 3. Click the Environment tab. 4. Highlight PATH under System variables. 5. Add the following path name to the list of directories in the Value eld for the PATH variable: c:\synopsys\msvc50\syn\bin. 6. Click the Set button in the lower right corner. 7. Click Apply. 8. Click OK.
The user variables required for the Synopsys synthesis tools for the Windows NT OS, whose settings affect only the currently logged-in user, are SYNOPSYS_KEY_FILE HOME
You can set these variables by using the iconic approach or the command-line approach. This section explains both methods.
After you click Yes to make the agreement, the installation program displays the Information screen shown in Figure 5-3.
This screen identies the environment variables you must set. It is important to note that the values for these variables are not automatically assigned by the installation softwareyou must set them. After reading the Information screen, click Next to display the System Properties dialog box. You use the Environment tab of the System Properties dialog box to set the environment variable values. The next section, Using Windows Dialog Boxes to Set Variable Values, explains how to do this.
To set the environment variables from a command window, which limits their effect to that window environment, see Setting Environment Variables Using the Command Prompt Window on page 5-17.
To set the system environment variables, 1. Select the variable in the System Variables section. The selected variable appears in the Variable eld below. 2. In the Value eld, enter the value to be assigned to the selected variable. 3. Click Set.
4. Repeat steps 1 through 3 for the remaining two system environment variables. You also use the Environment page of the System Properties dialog box to set the user environment variables. Table 5-3 shows the user environment variables and common, sample values you set for them:
To set the user variables, 1. Select the variable in the User Variables for username section. The selected variable appears in the Variable eld below. 2. In the Value eld, enter the value to be assigned to the selected variable. 3. Click Set. 4. Repeat steps 1 through 3 for the other user environment variable. 5. Click OK.
4. At the command prompt, enter the following commands to set the system environment variables:
c:\ > set SYNOPSYS_FILE_NAME_DELIM=/ c:\ > SYNOPSYS_COMSPEC=c:\winnt\system32\cmd.exe c:\ > SYNOPSYS_COMSPEC_SWITCH=/c
5. At the command prompt, enter the following commands to set the user environment variables:
c:\ > SYNOPSYS_KEY_NAME_FILE=c:\flexlm\license.dat c:\ > HOME=c:\ c:\ > set
Setting Up the Tutorial 5-17
.synopsys_dc.setup
.synopsys_dc.setup
Design directory
Depending on the order in which these les are read, information in one le overrides that in the previously read le. Design Compiler uses the denitions for common information from the last le it reads.
In general, the .synopsys_dc.setup les are searched and read in the following order: 1. The Synopsys root directory. This system-wide le resides in /usr/ SYNOPSYS/admin/setup for UNIX. For Windows NT, this system-wide le resides in the C:\Synopsys\msvc50\admin\setup folder. 2. Your home directory. 3. The directory from which you start Design Compiler, referred to as the design directory or the user directory. This le contains project- or design-specic variables. Therefore, settings in the design directory override settings in your home directory, which in turn override those in the Synopsys system directory. Note: You cannot use operating system environment variables in a .synopsys_dc.setup le. Examples in this manual use the UNIX variable syntax for operating system environment variables. UNIX variables have a $ character as the initial character.
dene_design_lib dene_name_rules getenv get_unix_variable group_variable if set setenv set_layer set_unix_variable source
The startup les in your home directory and in your current working directory can be dened in either dcsh or dctcl scripting language. However, only certain combinations of the scripting languages are allowed. In particular, the combination of dcsh in the home directory and Tcl in the current working directory is not supported. See Table 5-5 for allowed combinations.
dctcl mode
Tcl-s
Tcl
Note: In dcsh mode, the Tcl setup les in your home and local directories must have a # character in the rst column of the rst line.
To browse the contents of the system-wide .synopsys_dc.setup le in Windows NT, open the le in WordPad or another word processor. The .synopsys_dc.setup le is located in the C:\Synopsys\msv50\admin\setup installation directory. If you installed the Synopsys les in a directory other than the recommended one, substitute that directory.
This sample le has the .setup1 le name extension to avoid confusion with setup les you might already be using. 2. Browse the contents of this setup le, change to your home directory, and enter
% more .synopsys_dc.setup1
Species the company name that appears on hardcopy reports and schematics.
designer = your_name;
Determines the background color for the Design Analyzer window. The default is black. The images of screens in this tutorial use view_background = white. 3. Customize your work environment by using a text editor to dene your name, company, and the background color you prefer. If you already have a .synopsys_dc.setup le in your home directory, include the contents of .synopsys_dc.setup1 in your .synopsys_dc.setup le. If you do not already have a .synopsys_dc.setup le in your home directory, rename .synopsys_dc.setup1 as .synopsys_dc.setup. To rename the setup le, Enter the following command at the operating system prompt:
% cp .synopsys_dc.setup1 .synopsys_dc.setup
Renaming the le with the correct setup le name allows Design Compiler to nd and set the information on startup.
This sample le has the .setup1 le extension to avoid confusion with setup les you might already be using. 2. Look over the contents of this setup le within WordPad or another word processor. The le contains these variables and values:
company = your_company;
Species the company name that appears on hardcopy reports and schematics.
designer = your_name;
Determines the background color for the Design Analyzer window. The default is black. The images of screens in this tutorial use view_background = white. 3. Customize your work environment by editing the pertinent variable values. If you already have a .synopsys_dc.setup le in your home directory, include the contents of .synopsys_dc.setup1 in your .synopsys_dc.setup le. 4. Save the modied le as .synopsys_dc.setup1. Renaming the le with the correct setup le name allows Design Compiler to nd and set the information on startup.
2. To see the contents of the design-specic setup le for the tutorial, enter
% more .synopsys_dc.setup
dcsh mode
search_path = . + search_path link_library = {class.db}; target_library = {class.db}; symbol_library = {class.sdb}; define_design_lib work -path work;
Tcl mode
set search_path [concat [list] $search_path] set link_library [list class.db] set target_library [list class.db] set symbol_library [list class.sdb] define_design_lib work -path work
The tutorial uses libraries located in the tutorial directory. You can designate technology libraries when you optimize a design, using variables entered at the command line. However, it is convenient to place variables you commonly use into a setup le. The .synopsys_dc.setup le in the tutorial directory sets the following variables for the tutorial: search_path Provides Design Compiler with the directories to search for unresolved design references. If you installed the tutorial directories and les in a directory other than your home directory, you need to alter the search_path variable. In dcsh mode, change the search path to
link_library Identies the location of subdesigns that are referenced by the design. When a design references other design les, Design Compiler software uses link_library to locate the referenced designs. If a designs full path name is not dened by link_library, set the search_path variable to include the directory locations of any referenced designs. The tutorial uses class.db as both the link library and the target (technology) library. target_library Identies a technology or a list of technology libraries of the components to use when you optimize a design. This tutorial uses class.db as the technology library. symbol_library Identies symbol libraries to use for generating and viewing schematics. The value can be one or more symbol libraries. This tutorial uses class.sdb as the symbol library. define_design_lib Identies the directory in which to store the intermediate les created by the analyze command. This tutorial uses the work directory.
6
About the Alarm Clock Design 6
This tutorial optimizes a simple hierarchical design for a digital display alarm clock. The TOP design contains the six blocks, or subdesigns, of the alarm clock design. These subdesigns are described in the following sections: TOP ALARM_BLOCK TIME_BLOCK MUX COMPARATOR ALARM_SM_2 CONVERTOR_CKT
These blocks are used for most of the exercises in the tutorial.
Figure 6-1 shows the hierarchy for the Alarm Clock design.
ALARM_BLOCK
MUX
CONVERTOR_CKT
COMPARATOR
ALARM_SM_2
TIME_BLOCK
ALARM_COUNTER
ALARM_STATE_MACHINE
CONVERTOR(2)
HOURS_FILTER
TIME_STATE_MACHINE
TIME_COUNTER
The design blocks are arranged schematically as shown in Figure 6-2. Some design blocks have a further layer of hierarchy: ALARM_BLOCK, CONVERTOR_CKT, and TIME_BLOCK contain two additional designs each. Figure 6-2 shows the block diagram for the Alarm Clock design.
ALARM_BL
AM_PM_DISPLAY
MUX
OUTBUS[1:10] CONVERTOR_CKT
DISP1[13:0] DISP2[13:0]
COMPARATOR
ALARM_SM_2 SPEAKER_OUT
TOGGLE_SWITCH
TOP
TOP is the top-level block of the alarm clock design. TOP contains references to all the subdesigns. Each subdesign performs a separate function of the Alarm Clock design.
ALARM_BLOCK
ALARM_BLOCK is a two-level hierarchical block. ALARM_BLOCK controls the alarm-setting function of the design.
ALARM_BLOCK has four input signals: ALARM is used with HRS or MINS to set alarm time. CLK is the system clock. HRS is used with ALARM to set alarm hours. MINS is used with ALARM to set alarm minutes.
ALARM_BLOCK has two output signals that are hours and minutes of the alarm time. The output signals are input signals to the MUX and COMPARATOR blocks. ALARM_BLOCK instantiates two subdesigns: ALARM_COUNTER increments alarm hours and minutes and reects AM and PM settings. ALARM_STATE_MACHINE sets the alarm time. It has three states, shown in Figure 6-3.
IDLE ALARM = 1 & HRS = 0 & MINS = 1 / MINS_OUT = 1 ALARM = 1 & HRS = 1 & MINS = 0 / HRS_OUT = 1
If the block state is IDLE, it waits for a set of input signals that can change the state to SET_MINUTES or SET_HOURS. When ALARM = 1, HRS = 0, and MINS = 1, the state changes to SET_MINUTES. From this state, a MINS_OUT pulse is fed into the ALARM_COUNTER block, which increments the minutes count. As long as the block is in the SET_MINUTES state, the minutes continue to increment in ALARM_COUNTER. The SET_HOURS state functions the same as SET_MINUTES, except SET_HOURS is activated when ALARM = 1, HRS = 1, and MINS = 0. SET_HOURS sends an HRS_OUT pulse to ALARM_COUNTER to increment the hours.
TIME_BLOCK
TIME_BLOCK is similar to ALARM_BLOCK; however, it controls the time-of-day feature of the design. TIME_BLOCK is a two-level hierarchical block. TIME_BLOCK has four input signals: SET_TIME is used with HRS or MINS to set the time of day. CLK is the system clock. HRS is used with SET_TIME to set time-of-day hours. MINS is used with SET_TIME to set time-of-day minutes.
Time-of-day hours and minutes are the two TIME_BLOCK output signals. These output signals are input signals to the MUX and COMPARATOR blocks. TIME_BLOCK instantiates two subdesigns: TIME_COUNTER increments hours and minutes for the time of day and reects AM and PM settings. TIME_STATE_MACHINE is used to set and keep the time of day. The state machine has three states, shown in Figure 6-4.
SET_TIME = 1 & HRS = 0 & MINS = 1 / MINS_OUT = 1 SET_TIME = 1 & HRS = 1 & MINS = 0 / HRS_OUT = 1
When TIME_STATE_MACHINE is in the COUNT_TIME state, it outputs a pulse every second that updates the time of day. This pulse is fed into the TIME_COUNTER block. The block stays in the COUNT_TIME state until it receives a set of inputs that change the state to SET_MINUTES or SET_HOURS. When SET_TIME = 1, HRS=0, and MINS = 1, the state changes to SET_MINUTES. From this state, a MINS_OUT pulse is fed into the TIME_COUNTER block to increment the minutes. As long as the block is in the SET_MINUTES state, the minutes continue to increment in TIME_COUNTER.
The SET_HOURS state functions the same as SET_MINUTES, except the SET_HOURS state is activated when SET_TIME = 1, HRS = 1, and MINS = 0. SET_HOURS sends an HRS_OUT pulse to TIME_COUNTER to increment the hours.
MUX
MUX determines the time setting to display. MUX enables either the time-of-day or the alarm time to be displayed. MUX has ve main input signals: ALARM is used with HRS or MINS to set alarm time. ALARM_HRS is alarm hours from ALARM_BLOCK. ALARM_MIN is alarm minutes from ALARM_BLOCK. TIME_HRS is time-of-day hours from TIME_BLOCK. TIME_MIN is time-of-day minutes from TIME_BLOCK.
MUX processes these input signals and feeds the information to CONVERTOR_CKT, allowing CONVERTOR_CKT to display the appropriate time. The default display is the time of day. When ALARM = 1, the alarm time is displayed. MUX also processes and enables the AM and PM settings.
COMPARATOR
COMPARATOR compares the time-of-day to the alarm time. COMPARATOR has four main input signals:
About the Alarm Clock Design 6-8
ALARM_HRS is alarm hours from ALARM_BLOCK. ALARM_MIN is alarm minutes from ALARM_BLOCK. TIME_HRS is time-of-day hours from TIME_BLOCK. TIME_MIN is time-of-day minutes from TIME_BLOCK.
When the alarm, time-of-day, AM, and PM settings are equal, COMPARATOR sends a signal to the ALARM_SM_2 block.
ALARM_SM_2
ALARM_SM_2 is a state machine that has two states, IDLE and ACTIVATE, as shown in Figure 6-5.
IDLE
COMPARE_IN is from the COMPARATOR block; it equals 1 when time-of-day equals alarm time. TOGGLE_ON turns the alarm on or off. CLOCK is the system clock.
When the alarm time equals the time of day and TOGGLE_ON = 1 (or ON), ALARM_SM_2 goes to the ACTIVATE state. From this state, the block sends a signal to RING to enable the alarm to sound. ALARM_SM_2 remains in the ACTIVATE state as long as TOGGLE_ON is ON or until the alarm time is reset.
CONVERTOR_CKT
The CONVERTOR_CKT hierarchical block implements a binary-coded-decimal (BCD)-to-seven-segment decoder function. CONVERTOR_CKT converts the alarm time or time-of-day binary representations to signals that determine the alarm clock number display. CONVERTOR_CKT instantiates two subdesigns: CONVERTOR has two instances in the CONVERTOR_CKT design. One CONVERTOR instance converts the binary representation of hours; the other CONVERTOR instance converts minutes. CONVERTOR_CKT prepares the converted information for a seven-segment light-emitting diode (LED) display. HOURS_FILTER disables a zero-digit display in the ten-digit column of the hours for time settings under 10:00 and over 12:59. For example, hours are ltered so that the time-of-day display for nine oclock is 9:00 instead of 09:00.
7
Setting the Design Environment 7
Before you synthesize a design, you need to establish its basic design environment. The basic design environment is a minimum set of attributes and constraints necessary for synthesis. Model the environment surrounding the design as accurately as possible. Accurate modeling of the environment results in a design that works properly when used in the system for which it is designed. Allow less than two hours to complete the exercises in this section. This chapter comprises the following main sections: Before You Begin Explains the preliminary decisions you must make. That is, you must choose the input format for the design example and the Design Compiler interface to use.
Using Design Analyzer to Set the Design Environment Contains the complete set of tasks and exercises you perform to set the environment for the Alarm Clock design. This section begins with how to start Design Analyzer and concludes with how to save the design settings. For a list of the exercises, see the introduction to the section.
Using dc_shell to Set the Design Environment Contains the complete set of tasks and exercises you perform, using the dc_shell commands (in both dcsh and dctcl modes), to set the environment for the Alarm Clock design example. This section begins with how to start dc_shell and concludes with how to save the design settings. For a list of the exercises, see the introduction to the section.
VHDL (le extension .vhd, located in the vhdl directory) Verilog (le extension .v, located in the verilog directory) If you use Verilog format, - Use the les in the verilog directory. - Substitute the .v le extension for .vhd in the exercises. - Use the VHDL analyze and elaborate procedures to read your designs.
Synopsys database (le extension .db, located in the db directory) If you use Synopsys database format, - Use the les in the db directory. - Substitute the .db le extension for .vhd in the exercises. - Use the File >Read command in place of the analyze and elaborate commands to read your designs.
Instructions, examples, and messages throughout this chapter reect the VHDL version of the design. Results are similar for all formats; differences in displays and messages are noted.
If you use Design Analyzer, read Chapter 2, Design Analyzer Graphical Interface Fundamentals, to gain familiarity with the Design Analyzer views, menus, and windows to use during the tutorial. If you use the dc_shell command-line interface, read Chapter 4, How to Use the dc_shell Command-Line Interface, to gain an overall sense of how to use dc_shell to execute Synopsys commands, operating system commands, and script les.
When performing the exercises in the tutorial, whether you are using Design Analyzer or dc_shell, always start Design Compiler from your tutorial directory.
Contains tasks describing how to use Design Analyzer to set the drive strength on input ports, set the load on output ports, and set other attributes at the top level of the design. Saving the Design Using Design Analyzer Explains how to save the design environment settings using Design Analyzer.
On a UNIX machine, you invoke Design Analyzer from a UNIX shell, either directly on your machine or in a shell created on the remote host. From within your tutorial directory, type the following command in your command window:
% design_analyzer &
For complete instruction, see Starting Design Analyzer in UNIX on page 2-3.
On a Windows NT OS machine, you can use the command prompt window or icons to start Design Analyzer.
To start Design Analyzer from within dc_shell using a command prompt window, 1. Open a command prompt window. 2. At the command prompt, enter
c:\> dc_shell
For complete instructions, see Starting Design Analyzer in the Windows NT OS on page 2-3.
or more subdesigns. The design that calls or references the subdesigns in the hierarchy is the top-level design. The Alarm Clock design is hierarchical; TOP is the top-level design. The design is a VHDL netlist and references the subdesigns in the hierarchy. Viewing the Top-Level Design File in UNIX Under UNIX, to view the contents of the top-level design le, change to your tutorial/vhdl/ directory and enter
% cat TOP.vhd
Viewing the Top-Level Design File in the Windows NT OS Under the Windows NT OS, to view the contents of the top-level design le, use Windows NT Explorer to change to your tutorial\vhdl directory and open the TOP.vhd le in WordPad or another word processor.
2. Double-click vhdl to change to the vhdl directory. 3. Select synopsys.vhd. 4. Click OK. The VHDL window appears and displays the activities. 5. When the Design Analyzer prompt (design_analyzer>) appears, click Cancel in the VHDL window. (The VHDL window might be obscured by the Design Analyzer window after the reading-in process is complete.) The following sections describe using the analyze and elaborate commands to read in VHDL designs.
Use the read command to read in CONVERTOR because it is in PLA format. Analyzing the VHDL Designs Use the analyze and elaborate commands to read in the ve VHDL les. You can analyze these les in one invocation because they have the same format, but you must elaborate them individually. As you analyze designs, Design Compiler stores the resulting les in the WORK directory. Read in the VHDL les and create their intermediate vhdl design les. To analyze the VHDL designs, 1. Choose File > Analyze. The Analyze File window appears. You need to analyze each VHDL design. 2. Select one design using the left mouse button. Select ALARM_COUNTER.vhd. When you run Design Analyzer in UNIX to analyze the ALARM_COUNTER design, the Analyze File window displays the ALARM_COUNTER.vhd le name in the File Name(s) eld, as shown in Figure 7-1; it also displays the WORK directory in the Library eld.
As shown in Figure 7-2, under Windows NT OS, Design Analyzer displays the ALARM_COUNTER.vhd le name and its full path in the File Name(s) eld, and displays the WORK directory in the Library eld.
3. Select the remaining designs, using the middle mouse button: ALARM_STATE_MACHINE.vhd HOURS_FILTER.vhd TIME_COUNTER.vhd TIME_STATE_MACHINE.vhd As you select each name, it is added to any le names in the File Name(s) eld. Only one le at a time is highlighted in the list; however, the selected le names concatenate in the File Name(s) eld.
4. Click OK. The Analyze window, shown in Figure 7-3, appears and displays the activities of the analyze command, stores the intermediate les in the work directory.
5. Click Cancel to close the Analyze window. Elaborating the VHDL Designs Elaborate the ve VHDL designs individually. The elaborate command translates the intermediate design les created by analyze into .db format. To elaborate each VHDL design, 1. Choose File > Elaborate. The Elaborate Design window, shown in Figure 7-4, appears after a short time.
2. Scroll the Library list, and select WORK. The Elaborate Design window displays the contents of the WORK directory. 3. Click Re-Analyze Out-Of-Date Libraries to select it. 4. Scroll the Design list and select ALARM_COUNTER(BEHAVIOR).
5. Click OK. The Elaborate window, shown in Figure 7-5, appears and displays the activities of the elaborate command.
The Design Analyzer window, shown in Figure 7-6, displays the icon for the elaborated ALARM_COUNTER.
6. Repeat the elaboration process (from step 1) for ALARM_STATE_MACHINE (BEHAVIOR) HOURS_FILTER (BEHAVIOR) TIME_COUNTER (BEHAVIOR) TIME_STATE_MACHINE (BEHAVIOR) 7. Click Cancel to close the Elaborate window. The Designs view displays the icons for these designs.
Reading In the PLA Design Use the read command for formats other than VHDL and Verilog. The CONVERTOR.pla design is in PLA format. To read in the CONVERTOR block of the Alarm Clock design, 1. Choose File > Read. The Read File window appears. 2. Select the db directory. The db directory contains the design les in Synopsys .db format. 3. Click OK. The Read File window appears and lists the design les in the db directory. Figure 7-7 shows the Read File window you use to read in designs when you run Design Analyzer under UNIX.
Figure 7-8 shows the Read File dialog box you use to read in designs when you run Design Analyzer under Windows NT OS.
You can also open the db directory by double-clicking the entry in the Read File list. 4. Scroll down to view the remaining les. The Read File window lists the les that can be read in from your directory. Only les with sufxes dened by the view_read_le_sufx variable in the system .synopsys_dc.setup le are displayed. This variable denes the sufxes used for design formats accepted by Design Compiler (for example, .vhd for a VHDL le, and .pla for a PLA design le). For more information about view_read_le_sufx and other Synopsys variables, see the Synopsys online man pages for view_read_le_sufx.
Setting the Design Environment 7-18
5. Select the CONVERTOR.pla le. Figure 7-9 shows the Design Analyzer Read File window used to read in the CONVERTOR design in UNIX. The File Name(s) eld displays the le name, and the File Format eld changes to display PLA. The File Format eld in the Read File window displays the design le format. The default is db. If you select a le with a format other than db, Design Analyzer automatically displays the correct design format in this eld.
Figure 7-10 shows the Design Analyzer Read File dialog box used to read in the CONVERTOR design in Windows NT OS. The File Name(s) eld displays the le name, and the File Format eld changes to display PLA. The Look in: eld shows the name of the directory that contains the design lein this case, db. The CONVERTOR.pla le is the selected one in the db directory.
6. Choose Setup > Command Window. The Command Window opens. 7. Click OK in the Read File window. Design Analyzer reads in the le and closes the Read File window. The Command Window displays the activities. Design Analyzer reports reading in CONVERTOR.pla and displays its icon with the other icons for the third-level designs in the Synopsys Design Analyzer window, shown in Figure 7-11.
Analyzing the VHDL Designs You can analyze these design les in one invocation because they are in the same format. To analyze the six designs in the second level of hierarchy, 1. Choose File > Analyze. The Analyze File window appears. 2. Select one design by using the left mouse button. Select ALARM_BLOCK.vhd. 3. Select the remaining designs using the middle mouse button: ALARM_SM_2.vhd COMPARATOR.vhd CONVERTOR_CKT.vhd MUX.vhd TIME_BLOCK.vhd Each name concatenates in the File Name(s) eld. 4. Click OK. The Analyze window appears and displays the activities of the analyze command, as shown in Figure 7-12.
5. Click Cancel to close the Analyze window. Elaborating the VHDL Designs You must elaborate each design individually. To elaborate the ve VHDL designs, 1. Choose File > Elaborate. The Elaborate Design window, shown in Figure 7-13, appears. The Library eld displays WORK.
2. Select ALARM_BLOCK(BEHAVIOR), and click OK. The Elaborate window appears and displays the activities of the elaborate command. 3. Repeat the elaboration process (from Step 1) for COMPARATOR (BEHAVIOR) CONVERTOR_CKT (BEHAVIOR) MUX (BEHAVIOR) TIME_BLOCK (BEHAVIOR) ALARM_SM_2 (BEHAVIOR) 4. Click Cancel to close the Elaborate window.
The Synopsys Design Analyzer window displays the icons for the second-level and third-level designs. ALARM_BLOCK, TIME_BLOCK, and CONVERTOR_CKT contain no unmapped logic, so the NAND gate icon is used for these three designs. The Y=A+B icon represents designs that are not yet mapped to gates. Figure 7-14 shows the Synopsys Design Analyzer window for UNIX.
Figure 7-14 Synopsys Design Analyzer Window for UNIX Showing Second and Third Level Design Icons
Figure 7-15 shows the Synopsys Design Analyzer window for Windows NT OS.
Figure 7-15 Synopsys Design Analyzer Window for Windows NT OS Showing Second and Third Level Designs
To elaborate TOP, 1. Choose File > Elaborate to display the Elaborate Design window. 2. Select TOP (BEHAVIOR). 3. Click OK. The Elaborate window appears and displays the activities. 4. Click Cancel to close the Elaborate window. After you read in TOP, the entire design hierarchy is read in and the Designs view displays the 13 icons for the Alarm Clock design. To view all 13 icons when using Design Analyzer in UNIX, either scroll horizontally or resize the Synopsys Design Analyzer window, as indicated in Figure 7-16.
Figure 7-16 Synopsys Design Analyzer for UNIX Displaying All Designs
View indicator
Setting the Drive Strength on Input Ports Setting the Drive Strength for CLK Setting the Load on Output Ports Setting Other Attributes at the Top Level
Figure 7-17 Synopsys Design Analyzer Window for UNIX Showing Selected Ports
To set drive strengths, 1. Choose Attributes > Operating Environment > Drive Strength to display the Drive Strength window, as shown in Figure 7-18.
If you select one port, the Port Name eld displays the name of the port when you open the Drive Strength window. If you select more than one port, the Port Name eld is blank. Values entered in the window are set for all selected ports. 2. Type the value 0.08 in the Rise Strength eld. The Fall Strength eld is set automatically to 0.08 because the Same Rise and Fall option is set by default,. 3. Click Apply to set the values. You can set port drive values equal to the drive strength of library cell output pins. When you do not know the value of the pin you want in the library, you use the drive_of command to nd out and set the drive value. Assume that the drive strength on CLK needs to be equal to the drive strength of pin Z of the driver cell B4I, a buffer in the target library. Note: This tutorial uses set_drive to set drive strength. However, set_driving_cell offers an advantage over the set_drive command. The set_driving_cell command associates an input with a driving
cell rather than with a specic drive value. See the Design Compiler Reference Manual for more information about Design Compiler commands.
Design Analyzer duplicates this command in the Fall Strength eld. (Assume that B4I is a balanced driverthe rise and fall drive values are equal). 4. Click Apply. The computed rise and fall values (0.0335) appear, as shown in Figure 7-19.
Figure 7-19 Computed Rise and Fall Values Shown in the Drive Strength Window
Changing the Drive Strength You can change attribute values after they are set. Assume that the drive strength set previously for input port SET_TIME is incorrect. Change it with the following procedure. To change the drive strength for SET_TIME, 1. Select the SET_TIME input port. The Drive Strength window changes to reect the values for SET_TIME. 2. Replace the contents of the Rise Strength eld with 0.06. The Fall Strength eld is updated simultaneously with this value. 3. Click Apply to set the new drive strength. 4. Click Cancel to close the Drive Strength window.
Setting the Load for SPEAKER_OUT Load values are used to model the capacitive load on the output ports of the constrained module. You can set port load values equal to the load values of library cell input pins. When you dont know the library cell value you want, use the load_of command to determine and set a load value. Assume port SPEAKER_OUT drives a load of ve inverters. Assume also that the inverters are the same as cell IVA (an inverter in the target library class). To set the load for SPEAKER_OUT, 1. Select the SPEAKER_OUT port. 2. Choose Attributes > Operating Environment > Load to open the Load window, as shown in Figure 7-20.
Leave a space before and after the asterisk (*). Note that pin A is the input pin of IVA. 4. Click Apply. The computed capacitive load value 7.50 appears. SPEAKER_OUT drives a load of ve inverters. The load value of each inverter is 1.5 (load of cell IVA, pin A in the target library), so the load value for SPEAKER_OUT is calculated as 1.5 * 5 = 7.50. 5. Click Cancel to dismiss the Load window. Setting the Load on Bus Bits Assume that ports DISP1 and DISP2 each drive a load of 3 (standard loads) and AM_PM_DISPLAY drives a load of 2 (standard loads).
To set load values on DISP1, 1. Select DISP1. 2. Choose Attributes > Operating Environment > Load. Two windows appearLoad and Bus Selectoras shown in Figure 7-21. If the windows overlap, move one beside the other so both are fully visible.
Use the Bus Selector window to select the bits on which to set attributes. In this window, all bits are selected. If you want to set attributes on a single bit, click that bit, and then type the values in the Load window. For this exercise, set the same attributes for the entire bus. 3. Click Cancel in the Bus Selector window. 4. Type the value 3 in the Capacitive load eld of the Load window.
5. Click Apply. The load value is set for DISP1. To set load values on DISP2, 1. Select DISP2 in the Design Analyzer window. 2. Type 3 in the Capacitive load eld. 3. Click Apply. Setting the Load for AM_PM_DISPLAY Set the load on the remaining output port to 2.0. To set the capacitive load for AM_PM_DISPLAY, 1. Select AM_PM_DISPLAY. 2. Type 2 in the Capacitive load eld. 3. Click Apply. 4. Click Cancel in the Load window.
Setting the Wire Load for the Design Design Compiler optimization uses net fanout as a basis for estimating interconnect wire length from the wire load model. Design Compiler uses this information to calculate interconnect wiring and transition delays. The wire load model for a design depends on the estimated die size of the design. Wire load models are dened in the target library. Design Compiler uses area as a basis for automatically selecting the wire load tables if your ASIC libraries support this feature. To set the wire load on TOP, 1. Select TOP. 2. Choose Attributes > Operating Environment > Wire Load. The Wire Load window, shown in Figure 7-22, opens, listing the wire load models and the target library.
3. Select 10x10 (class). As dened in the library le, 10x10 corresponds to a die size of 1 mm x 1 mm. 4. Click OK to set the wire load model and close the window. Setting the Operating Conditions for the Design Operating conditions are the temperature, process, and voltage in which the design operates. The target library denes the operating conditions. Library vendors dene default operating conditions, which can differ from one vendor to another. Common default operating conditions are Temperature 25 C Process 1
Voltage 5
The Design Compiler static timing analyzer models the effects of variation in the drive strength, arrival time, and load values on a circuits timing characteristics. In a similar way, you can analyze a design for best-case, nominal-case, and worst-case performance or operating conditions. To set the operating conditions for the design, 1. Choose Attributes > Operating Environment > Operating Conditions. The Operating Conditions window, shown in Figure 7-23, appears and lists operating conditions from the target library. Each set of operating conditions is followed by the name of the target library in parentheses.
2. Select WCCOM (class) in the Operating Conditions window. For this design, assume that operating conditions are worst-case commercial (WCCOM), as dened in the target library, class.db. As specied in the library le, the temperature is 70.0 ,Fthe process is 1.5, and the voltage is 4.75. 3. Click OK. The operating conditions are set.
To save TOP design in .db format, 1. Choose File > Save As to open the Save Design window. The File Name eld displays TOP.db. 2. Change to your tutorial/db/ directory. 3. Enter TOP_attributes.db in the File Name eld to save this le in your db directory. 4. Verify that the Save All Designs in Hierarchy option is set to on. 5. Click OK. Design Analyzer saves the design and attribute settings. Then quit Design Analyzer (as described in the following section) or go on to the next chapter. To quit Design Analyzer, Enter quit in the Design Analyzer Command Window text eld. or Choose File > Quit. When you quit Design Analyzer, licenses checked out for your Design Analyzer session are automatically checked back in.
Explains how to start the dc_shell interface to Design Compiler in UNIX and in the Windows NT OS. Reading In a Hierarchical Design Using dc_shell Contains tasks that specify the command or commands you enter at the dc_shell prompt to read in the entire design, level by level. Exercises to read in the design begin with the VHDL package, followed by the three hierarchy levels from lowest to TOP. Setting Attributes Using the dc_shell Interface Contains tasks (and the dc_shell commands to carry them out) for setting the drive strength on input ports, setting the load on output ports, and setting other attributes at the top level of the design. Saving the Design Using dc_shell Explains how to save the design environment settings, using the dc_shell interface. Note: Commands are given in both dcsh mode and dctcl mode. However, before you can run dcsh-mode commands or dctcl-mode commands, you must ensure that you are using the correct setup le. Your tutorial directory contains setup les for both modes. The dcsh-mode le name is .synopsys_dcsh.setup, and the dctcl-mode le name is .synopsys_dctcl.setup. Copy the appropriate le to .synopsys_dc.setup, depending on which mode you intend use when running the dc_shell commands.
At any point in these exercises, you can save the design with the settings you specied. Then you can read the design into Design Analyzer and perform some or all of the remaining tasks with Design Analyzer. You might want to do this, for example, to collectively analyze a group of designs. You can complete the exercises in this chapter in about two hours.
Starting dc_shell
Before launching dc_shell, set up the tutorial as described in Chapter 5, Setting Up the Tutorial. This section includes the following: Starting dc_shell in UNIX Starting dc_shell in the Windows NT OS
which launches dc_shell in dcsh mode and displays the dc_shell command-line prompt
dc_shell>
or type
mysystem% dc_shell -tcl_mode
which launches dc_shell in Tcl mode and displays the dc_shell command-line prompt
dc_shell-t>
Note: If your Synopsys software is installed in a directory other than c:\synopsys, specify the actual installation directory. Starting dc_shell You can start dc_shell in either the dcsh or dctcl mode. To start dc_shell using a command prompt window, 1. Open a command prompt window. 2. At the command prompt, type either
c:\> dc_shell
which launches dc_shell in dcsh mode and displays the dc_shell command-line prompt
dc_shell>
or type
c:\> dc_shell -tcl_mode
which launches dc_shell in dctcl mode and displays the dc_shell command-line prompt
dc_shell-t>
Here are the contents of this section: Reading In a Hierarchical Design Saving the Design at Any Point Using dc_shell Reading In the VHDL Package Using dc_shell Reading In the Lowest Hierarchy Level Reading In the PLA Design Reading In the Second Hierarchy Level Reading In the Top-Level Design Analyzing the Top-Level Design Elaborating the VHDL Designs
Throughout these exercises, notice that both dc_shell modes display the number 1 following output produced during command execution. The number 1 is a completion code indicating that the command completed successfully.
Viewing the Top-Level Design File in UNIX Under UNIX, to view the contents of the top-level design le, change to your tutorial/vhdl directory and enter
% cat TOP.vhd
Viewing the Top-Level Design File in the Windows NT OS Under Windows NT OS, to view the contents of the top-level design le, use the Windows NT Explorer to change to your tutorial\vhdl directory and open the TOP.vhd le in WordPad or another word processor.
For a complete explanation of the write command and its parameters, see the Design Compiler User Guide.
or
dc_shell-t> read_file -format vhdl [list {./vhdl/ synopsys.vhd}]
Example Output After executing the read command successfully, dc_shell displays the following output:
Loading db file /usr/synopsys/myarch/libraries/syn/standard.sldb Loading db file /usr/synopsys/myarch/libraries/syn/gtech.db Loading vhdl file /usr/synopsys/tutorial/vhdl/synopsys.vhd Reading in the Synopsys vhdl primitives. /bohm/tutorial/vhdl/synopsys.vhd: Information: Saving the package synopsys. (HDL-202) No designs were read {}
The following sections describe using the analyze and elaborate commands to read VHDL designs.
dc_shell> analyze -format vhdl -lib WORK {./vhdl/ALARM_COUNTER.vhd, ./vhdl/ALARM_STATE_MACHINE.vhd, ./vhdl/HOURS_FILTER.vhd, ./vhdl/ TIME_COUNTER.vhd,./vhdl/TIME_STATE_MACHINE.vhd}
or
dc_shell-t> analyze -format vhdl -lib WORK [list ./vhdl/ALARM_COUNTER.vhd ./vhdl/ALARM_STATE_MACHINE.vhd ./vhdl/HOURS_FILTER.vhd ./vhdl/ TIME_COUNTER.vhd ./vhdl/TIME_STATE_MACHINE.vhd]
Example Output When you analyze the lowest level of the VHDL design using the analyze command, dc_shell generates the following output:
/bohm/tutorial/vhdl/ALARM_COUNTER.vhd: /bohm/tutorial/vhdl/ALARM_STATE_MACHINE.vhd: /bohm/tutorial/vhdl/HOURS_FILTER.vhd: /bohm/tutorial/vhdl/TIME_COUNTER.vhd: /bohm/tutorial/vhdl/TIME_STATE_MACHINE.vhd: 1
Note: In this output example, and in all cases shown in the tutorial, the numeral 1 concluding the output is a completion code indicating that the command completed successfully. Elaborating the VHDL Designs Elaborate the ve VHDL designs individually. The elaborate command translates the intermediate design les created by analyze into .db format. Elaborating a given design makes it the current one. In analyzing the VHDL designs for the tutorial, you specify BEHAVIOR as the architecture. (In VHDL, the default architecture is the most recently analyzed architecture.) You use the -lib parameter of the analyze command to specify the name of the library to which the work is mapped. By default, Design Compiler looks in the WORK library
for the design to be built. The -lib parameter allows you to temporarily change this directory. However, for the tutorial, use the WORK directory. To elaborate the designs,
dc_shell> dc_shell> dc_shell> dc_shell> dc_shell>
or
dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> elaborate elaborate elaborate elaborate elaborate ALARM_COUNTER -arch {BEHAVIOR} -lib WORK -update ALARM_STATE_MACHINE -arch {BEHAVIOR} -lib WORK -update HOURS_FILTER -arch {BEHAVIOR} -lib WORK -update TIME_COUNTER -arch {BEHAVIOR} -lib WORK -update TIME_STATE_MACHINE -arch {BEHAVIOR} -lib WORK -update
Example Output When you elaborate a VHDL design, using the elaborate command, dc_shell generates output similar to the output shown below. Elaborating a given design makes it the current one. The elaborate commands for the VHDL designs include the -update keyword, which directs the compiler to automatically reanalyze out-of-date intermediate les if the source is available. Here is an example of the elaborate command and the output it produces:
dc_shell> elaborate ALARM_COUNTER -arch BEHAVIOR -lib WORK -update Inferred memory devices in process in routine ALARM_COUNTER line 11 in file /bohm/tutorial/vhdl/ALARM_COUNTER.vhd. =========================================================================== Register Name | Type | Width | Bus | MB | AR | AS | SR | SS | ST
============================================================================= AM_PM_OUT_reg | Flip-flop | 1 | - | - | N | N | N | N | N HOURS_OUT_reg | Flip-flop | 4 | Y | N | N | N | N | N | N MINUTES_OUT_reg | Flip-flop | 6 | Y | N | N | N | N | N | N ============================================================================== Current design is now ALARM_COUNTER 1
or
dc_shell-t> read_file -format pla [list {./vhdl/ CONVERTOR.pla}]
Example Output When you read in the CONVERTOR block by using the read command, you specify the input format as PLA. The dc_shell compiler executes the command and generates the output shown below.
dc_shell> read -format pla {./vhdl/CONVERTOR.pla} Loading pla file /bohm/tutorial/vhdl/CONVERTOR.pla Current design is now /bohm/tutorial/vhdl/ CONVERTOR.db:CONVERTOR {CONVERTOR}
dc_shell> analyze -format vhdl -lib WORK {./vhdl/ALARM_BLOCK.vhd, ./vhdl/ALARM_SM_2.vhd, ./vhdl/COMPARATOR.vhd, ./vhdl/CONVERTOR_CKT.vhd, ./vhdl/MUX.vhd, ./vhdl/TIME_BLOCK.vhd}
or
dc_shell-t> analyze -format vhdl -lib WORK [list ./vhdl/ALARM_BLOCK.vhd ./vhdl/ALARM_SM_2.vhd ./vhdl/COMPARATOR.vhd ./vhdl/CONVERTOR_CKT.vhd ./vhdl/MUX.vhd ./vhdl/TIME_BLOCK.vhd]
Elaborating the VHDL Designs You must elaborate each design individually. The elaborate command translates the intermediate design les created by analyze into .db format. Elaborating a given design makes it the current one.
In analyzing the VHDL designs for the tutorial, you specify BEHAVIOR as the architecture. (In VHDL, the default architecture is the most recently analyzed architecture.) You use the -lib parameter of the analyze command to specify the name of the library to which the work is mapped. By default, Design Compiler looks in the WORK library for the design to be built. The -lib parameter allows you to temporarily change this directory. However, for the tutorial, use the WORK directory. To elaborate the analyzed designs in the second hierarchy level,
dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell>
Enter
elaborate elaborate elaborate elaborate elaborate elaborate ALARM_BLOCK -arch BEHAVIOR -lib WORK -update COMPARATOR -arch BEHAVIOR -lib WORK -update CONVERTOR_CKT -arch BEHAVIOR -lib WORK -update MUX -arch BEHAVIOR -lib WORK -update TIME_BLOCK -arch BEHAVIOR -lib WORK -update ALARM_SM_2 -arch BEHAVIOR -lib WORK -update
or
dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> elaborate elaborate elaborate elaborate elaborate elaborate ALARM_BLOCK -arch {BEHAVIOR} -lib WORK -update COMPARATOR -arch {BEHAVIOR} -lib WORK -update CONVERTOR_CKT -arch {BEHAVIOR} -lib WORK -update MUX -arch {BEHAVIOR} -lib WORK -update TIME_BLOCK -arch {BEHAVIOR} -lib WORK -update ALARM_SM_2 -arch {BEHAVIOR} -lib WORK -update
Example Output This example shows the output for the last pair of commands. When you elaborate an analyzed design, dc_shell generates output similar to the following output, produced by analyzing the ALARM_SM_2 design.
dc_shell> elaborate ALARM_SM_2 -arch BEHAVIOR -lib WORK -update
Inferred memory devices in process SYNCH in routine ALARM_SM_2 line 32 in file /bohm/tutorial/vhdl/ALARM_SM_2.vhd. ======================================================================== Register Name | Type | Width | Bus | MB | AR | AS | SR | SS | ST ========================================================================== Current State | Flip-flop | 1 | - | - | N | N | N | N | N ========================================================================== Current design is now ALARM_SM_2 1
or
dc_shell-t> analyze -format vhdl -lib WORK [list {./vhdl/TOP.vhd}]
Example Output When you have successfully analyzed the top-level design, dc_shell generates the following output:
/bohm/tutorial/vhdl/TOP.vhd: 1
Elaborating the VHDL Designs To elaborate the TOP design, Enter one of the following commands at the dc_shell prompt:
or
dc_shell-t> elaborate TOP -arch {BEHAVIOR} -lib WORK -update
Example Output When you elaborate the TOP design, dc_shell generates the following output:
Current design is now TOP 1
Setting the Load on Output Ports Setting Other Attributes at the Top Level
or
dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> set_drive set_drive set_drive set_drive set_drive set_drive set_drive set_drive set_drive set_drive -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall .08 .08 .08 .08 .08 .08 .08 .08 .08 .08 {ALARM} {ALARM} {HRS} {HRS} {MINS} {MINS} {SET_TIME} {SET_TIME} {TOGGLE_SWITCH} {TOGGLE_SWITCH}
Note: If you do not specify the -rise or -fall option, both will be set. Also, you can specify all the ports sequentially as arguments to a single set_drive command. Example Output The following output is displayed when you set the rise drive strength on port ALARM:
Performing set_drive on port ALARM. 1
The following output is displayed when you set the fall drive strength on port ALARM:
Performing set_drive on port ALARM. 1
or
dc_shell-t> set_drive -rise [drive_of {class/B4I/Z}] {CLK} dc_shell-t> set_drive -fall [drive_of {class/B4I/Z}] {CLK}
Example Output When you set either the rise or fall drive strength of clock equal to pin Z of B4I, dc_shell displays the following output:
Performing drive_of on port Z. Performing set_drive on port CLK 1
Setting the Load for SPEAKER_OUT Load values are used to model the capacitive load on the output ports of the constrained module. You can set port load values equal to the load values of library cell input pins. When you dont know the library cell value you want, use the load_of command to nd out and set a load value. Assume port SPEAKER_OUT drives a load of ve inverters. Assume also that the inverters are the same as cell IVA (an inverter in the target library class). To set the load for SPEAKER_OUT, Enter one of the following commands from the dc_shell prompt:
or
dc_shell-t> set_load [expr [load_of {class/IVA/A}] * 5] {SPEAKER_OUT}
Example Output When you set the load for SPEAKER_OUT, dc_shell displays the following output:
Performing load_of on port A Performing set_load on port SPEAKER_OUT 1
Setting the Load on Bus Bits Assume that ports DISP1 and DISP2 each drive a load of 3 (standard loads) and AM_PM_DISPLAY drives a load of 2 (standard loads).
You can enter these commands collectively, using a script le. See Appendix A, Tutorial Script Files. To set the load values on DISP1, Enter the following commands from the dc_shell prompt:
dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 DISP1[13] DISP1[12] DISP1[11] DISP1[10] DISP1[9] DISP1[8] DISP1[7] DISP1[6] DISP1[5] DISP1[4] DISP1[3] DISP1[2] DISP1[1] DISP1[0]
or
dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 {DISP1[13]} {DISP1[12]} {DISP1[11]} {DISP1[10]} {DISP1[9]} {DISP1[8]} {DISP1[7]} {DISP1[6]} {DISP1[5]} {DISP1[4]} {DISP1[3]} {DISP1[2]} {DISP1[1]} {DISP1[0]}
Shortcut: Instead of setting the load values individually, you can use a wildcard. For example, you can enter set_load 3.0 DISP1[*] and obtain the same results. To set the load values on DISP2, Enter the following commands from the dc_shell prompt, or run the script containing them (see Appendix A, Tutorial Script Files):
dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 DISP2[13] DISP2[12] DISP2[11] DISP2[10] DISP2[9] DISP2[8] DISP2[7] DISP2[6] DISP2[5] DISP2[4] DISP2[3] DISP2[2] DISP2[1] DISP2[0]
or
dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load set_load 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 {DISP2[13]} {DISP2[12]} {DISP2[11]} {DISP2[10]} {DISP2[9]} {DISP2[8]} {DISP2[7]} {DISP2[6]} {DISP2[5]} {DISP2[4]} {DISP2[3]} {DISP2[2]}
Example Output
Performing set_load on port DISP1[13]. 1
Setting the Load for AM_PM_DISPLAY Set the load on the remaining output port to 2.0. To set the capacitive load for AM_PM_DISPLAY, Enter one of the following commands from the dc_shell prompt:
dc_shell> set_load 2.0 AM_PM_DISPLAY
or
dc_shell-t> set_load 2.0 {AM_PM_DISPLAY}
Example Output When you set the load on the AM_PM_DISPLAY output port, dc_shell displays the following output:
Performing set_load on port AM_PM_DISPLAY. 1
Setting the Wire Load for the Design. Setting the Operating Conditions for the Design.
Setting the Wire Load for the Design Design Compiler optimization uses net fanout as a basis for estimating interconnect wire length from the wire load model. Design Compiler uses this information to calculate interconnect wiring and transition delays. The wire load model for a design depends on the estimated die size of the design. Wire load models are dened in the target library. Design Compiler uses area as a basis for automatically selecting the wire load tables if your ASIC libraries support this feature. To set the wire load, Enter one of the following commands at the dc_shell prompt:
dc_shell> set_wire_load 10x10 -library class
or
dc_shell-t> set_wire_load {10x10} -library {class}
Example Output
Using wire_load model 10x10 found in library class.
Setting the Operating Conditions for the Design Operating conditions are the temperature, process, and voltage in which the design operates. The target library denes the operating conditions. Library vendors dene default operating conditions, which can differ from one vendor to another. Common default operating conditions are
Setting the Design Environment 7-66
The Design Compiler static timing analyzer models the effects of variation in the drive strength, arrival time, and load values on a circuits timing characteristics. In a similar way, you can analyze a design for best-case, nominal-case, and worst-case performance or operating conditions. To set the operating conditions, Enter one of the following commands from the dc_shell prompt:
or
dc_shell-t> set_operating_conditions -library {class} {WCCOM}
Example Output When you set the operating conditions for the design, dc_shell displays the following conrmation output:
Using operating conditions WCCOM found in library class.
or
dc_shell-t> write -format db -hierarchy -output {./db/TOP_attributes.db} [list {TOP.db:TOP}]
Then quit dc_shell, or go on to the next chapter. To quit dc_shell, At the command line prompt, type quit or exit.
8
Dening Optimization Goals and Setting Constraints 8
During optimization of a design, Design Compiler algorithms assess how best to implement the design. You direct Design Compiler decisions by dening optimization goals before you optimize. Your optimization goals are called constraints. Constraints are measurable circuit characteristics for timing, area, and power that you set on a design. Design Compiler checks your constraint goals during optimization and tries to meet them while synthesizing the design to your technology library. Your technology library contains important specications of timing, area, and power. During optimization, Design Compiler constructs complex models and makes detailed calculations, using specications in the technology library and your design constraints. For accurate results, dene constraint values that are as realistic as possible.
Dening Optimization Goals and Setting Constraints 8-1
You can also use constraints to specify internal design timing, logical and electrical connections of ports, and subdesign interfaces. Allow about one hour to complete the exercises in this chapter. This chapter includes the following sections: Before You Begin Explains the preliminary tasks you perform before undertaking the exercises you use to set the optimization goals. Preliminary tasks are provided for both interfacesDesign Analyzer and dc_shell. Removing Existing Constraints Explains, for both interfaces, how to remove existing constraints on the design, if any, in order to prepare for setting them anew. About Setting Design Constraints Explains what design constraints are and how to assess realistic goals for a design prior to setting constraints for it, in order to get the best results from Design Compiler. Using Design Analyzer to Set Design Constraints Contains the complete set of tasks and exercises you perform to set the design constraints for optimizing the sample design. This section begins with an explanation of how to remove existing constraints. Then it addresses how to set the various design constraints, check the design, and resolve multiple instances of a design created through multiple references to it. This section concludes with instructions about how to save your design. For a list of the exercises, see the introduction to the section.
Using dc_shell to Set Design Constraints Contains the complete set of tasks and exercises you perform to set the design constraints for optimizing the sample design. The dc_shell commands are given in both dcsh and dctcl modes. This section begins with an explanation of how to remove existing constraints. Then it addresses how to set the various design constraints, check the design, and resolve multiple instances of a design created through multiple references to it. This section concludes with instructions about how to save your design. For a list of the exercises, see the introduction to the section.
or
dc_shell-t> read_file -format db [list {./db/ TOP_attributes.db}]
The remove_constraint command does not remove the attributes set as part of the design environment in Chapter 7, Setting the Design Environment.
To set a more restrictive time constraint, assume that the alarm clock should operate at a period of 25 ns, or 40 MHz. In addition, the signal should reach the output ports before the next clock cycle (before 25 ns). To ensure that this goal is met, constrain the output ports to require the signals to reach these ports before 20 ns. Suppose the design area must not exceed 1100 gate equivalents. You do not, however, need to set an area constraint. Optimization produces the smallest circuit that meets the timing constraints.
Presents a set of exercises you undertake to check the design for problems, display areas warned about, display the pin names layer, and explore other error messages. Resolving Multiple Design Instances Using Design Analyzer Explains how multiple instances of subdesigns can occur through multiple references to the same subdesign. Also discusses different approaches to resolving the problem. Saving the Design Using Design Analyzer Explains how to save the design, using Design Analyzer before you quit or go on to the next chapter.
Before you perform this task, read About Setting Design Constraints on page 8-5. To create the clock object for CLK, 1. Select CLK in the Symbol view. 2. Choose Attributes > Clocks > Specify. The Specify Clock window, as shown in Figure 8-1, opens.
When the value in this eld is applied, a setup constraint is set on each D pin of the ip-ops driven by CLK. The Fix Hold option causes Design Compiler to x violated hold times. Usually you request that Design Compiler rst x setup time violations. Then, after compilation, you check for hold-time violations. If hold-time violations exist after compilation, you recompile the design with Fix Hold selected. The Fix Hold option is not needed in this exercise. 4. Click Apply. 5. Click Cancel to close the Specify Clock window. The clock constraint is set. Note that the values in the Specify Clock window are not changed. The clock object is created on CLK. Note the small waveform symbol attached to the CLK port. See Figure 8-2.
Waveform
The period of the clock is 25 ns, and the outputs are required to arrive at 20 ns. This timing relationship denes an output delay of 5 ns for all output ports. Thus, the delay constraint on the output ports is 5 ns. To set the delay constraints on the output ports, 1. Select the four output ports of TOP. 2. Choose Attributes > Operating Environment > Output Delay. The Output Delay window, as shown in Figure 8-3, opens.
3. Select CLK.
CLK becomes highlighted, and the Relative To Clock eld displays the CLK value. 4. Enter 5 in the Max Rise and Max Fall elds. 5. Click Apply. 6. Click Cancel to close the Output Delay window. Design Analyzer sets the constraints on the output ports and displays this message:
Output delay attributes set on selected paths
Checking the Design, and Exploring and Correcting Errors, Using Design Analyzer
After you set constraints on a design and before you compile the design, check the design to identify and correct any problems. This process checks the internal representation of the design for correctness and issues appropriate warnings or errors.
By default, Detailed Warnings and Check All Levels are selected. These options provide explicit warning and error information and check all subdesigns in the hierarchy. 2. Click Check Timing to select it. Check Timing checks the timing attributes placed on the design. 3. Click OK. The Design Errors window, shown in Figure 8-5, appears.
Warning messages are issued for CONVERTOR_CKT and CONVERTOR. To read an entire warning message, use the scroll bar at the bottom of the window or drag the window border to make it larger.
2. Select the rst warning message in the Design Errors window shown in Figure 8-6:
Warning: In design CONVERTOR_CKT, a pin submodule U7 is connected to logic 1 or logic 0. (LINT-32)
The warning message is highlighted, and the Show and Next buttons are enabled. 3. Click Show. Design Analyzer displays a close-up view of the design areas related to the warning message.
CONVERTOR is selected in the Schematic view and the CONVERTORs name appears in the message area. CONVERTOR has instance name U7 and is a submodule of CONVERTOR_CKT. (CONVERTOR is instantiated by CONVERTOR_CKT.)
Pin T0 is selected in the schematic. Design Analyzer updates the schematic in the Design Analyzer window. 2. Click Next to highlight the next message:
Pin T1 is connected to logic 0.
Pin T1 is selected in the schematic. 3. Zoom in on the area that contains pins T0 and T1. The pin names for T0 and T1 are not displayed in the schematic because pin names are turned off by default. Schematics are composed of transparent layers, each layer containing different information. A layer of information is visible only if it is turned on.
Browse the list of layers. Each layer name describes the text or graphic it displays. Use the View Style window to review layer settings and set additional layers. 2. Scroll down the list to pin_name_layer, and select it. The Visible option for this layer is set to Off. 3. Click the Visible option On, and then click Apply.
Dening Optimization Goals and Setting Constraints 8-19
The schematic displays pin names. 4. Click Cancel to close the View Style window.
This message and the previous three warning messages are issued because unconnected input ports are automatically connected to logic 0 by Design Compiler. Because these warnings do not reect problems in the design, you can ignore them. If youre using Verilog, the net name Logic0 is connected to T0 and T1. 2. Click Next in the Design Errors window.
Warning: Design CONVERTOR is instantiated 2 times. (LINT-45) Cell U7 in design CONVERTOR_CKT Cell U8 in design CONVERTOR_CKT
This message is issued because CONVERTOR is referenced more than once in design CONVERTOR_CKT. Resolve the multiple instances of CONVERTOR before optimization, as shown in the next section, Resolving Multiple Design Instances Using Design Analyzer. 3. Click Cancel to close the Design Errors window.
Use the compile-once-dont-touch method (set_dont_touch command). This method preserves the subdesign during optimization of the design by setting the dont_touch attribute on cells or references.
Remove the hierarchy (ungroup command). This method removes the hierarchy and generates designs with unique names for all cells and references in the current design hierarchy.
Make each instance unique by making a copy for each instance (uniquify command). This method generates designs with unique names for all cells and references in the current design hierarchy.
This exercise uses the third method of issuing the uniquify command to resolve multiple instances. The uniquify multiple command creates one copy of the subdesign each time it is referenced in the design and assigns a unique design name to the copy. References to the subdesign are updated to reect the new names wherever they occur in the hierarchy. During compilation, the Design Compiler optimization maps each instance to its unique environment. For the Alarm Clock design, the uniquify option is the most effective method because each instance of CONVERTOR needs to be optimized with respect to its environment and the hierarchy for the alarm clock needs to be preserved. The set_dont_touch and ungroup commands appear in Using Alternatives to uniquify in Design Analyzer in Chapter 9.
To resolve multiple references to a subdesign, 1. Click the Up Arrow twice in the Schematic view of CONVERTOR_CKT. 2. Select the Designs view, and then select TOP design. 3. Choose Edit > Uniquify > Hierarchy. The uniquify command runs for TOP. The results appear in the Command Window, as shown in Figure 8-10.
In the Designs view, the message Design TOP uniquied and two new PLA icons appearCONVERTOR_0 and CONVERTOR_1 which correspond to the two instances of CONVERTOR in TOP. See Figure 8-11. During optimization, CONVERTOR_0 and CONVERTOR_1 are optimized in the context of their different environments.
CONVERTOR instances
4. Enter TOP_before_compile.db in the File Name eld. 5. Click the Save All Designs in Hierarchy option to select it. 6. Click OK. Then quit Design Analyzer, or go on to the next chapter. To quit Design Analyzer, Enter quit in the Design Analyzer Command Window text eld or Choose File > Quit.
Describes what input delays and output delays are and explains how to assess constraints to dene them for a design. Species the dc_shell commands you use to set delay constraints and tells you where to nd the tutorial script le of these commands, which you can run instead. Checking the Design Using dc_shell Explains how to run the check_design command to identify and correct any problems after you set constraints on a design and before you compile it. Resolving Multiple Design Instances Using dc_shell Explains how multiple instances of subdesigns can occur through multiple references to the same subdesign. Also discusses different approaches to resolving the problem, and gives commands for resolving multiple instances of a subdesign, using the uniquify command in dc_shell. Saving the Design Using dc_shell Explains how to save the design in dc_shell before you quit or go on to the next chapter.
A clock has a source that can be an input port of the design or the output pin of a component in the design. A clock object can be attached to a clock source. For the Alarm Clock design example, the clock source is port CLK. In this exercise, you assign clock-related values (constraints and attributes) to the clock object. Before you perform this task, read About Setting Design Constraints on page 8-5. To create a clock object and then set a clock constraint, enter one of the following commands at the dc_shell prompt:
dc_shell> create_clock -name CLK -period 25 -waveform { 0 12.5 } { CLK }
or
dc_shell-t> create_clock -name CLK -period 25 -waveform [list 0 12.5 ] [list CLK ]
The -name option species the name of the clock, -period gives the period of the clock waveform in library time units, and -waveform gives the rise and fall edge times of the clock over an entire clock period in library time units. In response, dc_shell displays the following output:
Performing create_clock on port, CLK.
Output delays model the external delays leaving the output ports of the constrained module. Output delays must be dened relative to a real or virtual clock to act as a path constraint. The output delay corresponds to the time before the next rising edge. The period of the clock is 25 ns, and the outputs are required to arrive at 20 ns. This timing relationship denes an output delay of 5 ns for all output ports. Thus, the delay constraint on the output ports is 5 ns. These are the commands you use to set delay constraints on the output ports for the Alarm Clock design example. Instead of entering these commands singly, you can use the optgoals.script or optgoals.tcl script le of these commands to set delay constraints on the output ports for this exercise. All the Design Compiler Tutorial scripts are available in the tutorial/appendix_A directory and are listed in Appendix A, Tutorial Script Files.
dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> . . . dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> dc_shell> . . set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK -max -max -max -max -max -max -max -max -max -max -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall 5 5 5 5 5 5 5 5 5 5 SPEAKER_OUT SPEAKER_OUT AM_PM_DISPLAY AM_PM_DISPLAY DISP2[13] DISP2[13] DISP2[12] DISP2[12] DISP2[11] DISP2[11]
5 5 5 5 5 5 5 5
. dc_shell> set_output_delay -clock CLK -max -rise 5 DISP1[0] dc_shell> set_output_delay -clock CLK -max -fall 5 DISP1[0]
In Tcl mode, the commands are the same except that quotation marks are replaced by braces in the port names. For example,
dc_shell-t> dc_shell-t> dc_shell-t> dc_shell-t> . . . dc_shell-t> dc_shell-t> set_output_delay set_output_delay set_output_delay set_output_delay -clock -clock -clock -clock CLK CLK CLK CLK -max -max -max -max -rise -fall -rise -fall 5 5 5 5 {SPEAKER_OUT} {SPEAKER_OUT} {AM_PM_DISPLAY} {AM_PM_DISPLAY}
set_output_delay -clock CLK -max -rise 5 {DISP1[0]} set_output_delay -clock CLK -max -fall 5 {DISP1[0]}
Example Output After each command is executed, dc_shell displays a conrmation message similar to the following one displayed when the output delay is set on port SPEAKER_OUT:
Performing set_output_delay on port SPEAKER_OUT.
or
dc_shell-t> check_design dc_shell-t> check_timing
These commands issue appropriate warnings or errors. Example Output When the check_design command completes execution, dc_shell displays the following messages:
Warning: In design CONVERTOR_CKT, a pin on submodule U7 is connected to logic 1 or logic 0. (LINT-32) Net data _in1[5] is connected to pins T0, T1. Warning: Design CONVERTOR is instantiated 2 times. (LINT-45) Cell U7 in design CONVERTOR_CKT Cell U8 in design CONVERTOR_CKT 1
A section of the informative, cautionary, and error messages the dc_shell displays when the check_timing command completes execution follows:
Information: Updating design information...(UID-85) Allocating blocks in U1/U1 Reading in the Synopsys synthetic primitives. . . . Warning: Design TOP contains unmapped cells. Use report_cell to list unmapped cells in the design. (OPT-309)
Warning: The following end-points are not constrained for maximum delay. End point --------------AM_PM_DISPLAY DISP1[0] DISP1[1] DISP1[2] DISP1[3] DISP1[4] DISP1[5] DISP1[6] DISP1[7] DISP1[8] DISP1[9] DISP1[10] DISP1[11] DISP1[12] DISP1[13] DISP2[0] DISP2[1] DISP2[2] DISP2[3] . . .
The warning message at the beginning of the output indicates that not all of the reported endpoints have been constrained. (After the endpoints are constrained, the warning message will not be issued.)
visible TRUE line_width 1 plot_line_width 0 red 65535 green 65535 blue 65535
This method generates designs with unique names for all cells and references in the current design hierarchy. This exercise uses the third method of issuing the uniquify command. The uniquify command creates one copy of the subdesign each time it is referenced in the design and assigns a unique design name to the copy. References to the subdesign are updated to reect the new names wherever they occur in the hierarchy. During compilation, the Design Compiler optimization maps each instance to its unique environment. For the Alarm Clock design, the uniquify option is the most effective method because each instance of CONVERTOR needs to be optimized with respect to its environment and the hierarchy for the alarm clock needs to be preserved. The set_dont_touch and ungroup commands appear in optional exercises at the end of Chapter 9, Compiling a Hierarchical Design. To resolve multiple references to a subdesign, Enter the following command at the dc_shell prompt:
dc_shell> uniquify
or
dc_shell-t> uniquify
Example Output When you execute the uniquify command, dc_shell displays the following output:
Uniquifying cell U8 in design CONVERTOR_CKT. New design is CONVERTOR_0. Uniquifying cell U7 in design CONVERTOR_CKT. New design is CONVERTOR_1.
or
dc_shell-t> write -format db -hierarchy -output {./db TOP_before_compile.db} [list {TOP_attributes.db:TOP}]
Then quit dc_shell or go on to the next chapter. To quit dc_shell, At the dcsh or dctcl mode command line prompt, type quit or exit.
9
Compiling a Hierarchical Design 9
Optimization is the step in the synthesis process that attempts to implement a combination of library cells that meets the functional, area, and speed requirements of the design. The Design Compiler compile command invokes optimization. The compile process modies and optimizes the design as it attempts to create a circuit that meets the specied constraints. This chapter includes the following sections: Before You Begin Explains how to read in the design, using either interface, Design Analyzer or dc_shell. This section also summarizes the design environment and attribute settings you have already made in previous chapters to prepare to compile the design. Compiling and Analyzing the Design Using Design Analyzer
Explains how to compile the design for optimization and how to evaluate and interpret the results. It discusses how to explore the design space to review the results. Then, it explains how to set tighter constraints and recompile the design. Finally, it explains how to generate reports and analyze them. Compiling and Analyzing the Design Using dc_shell Explains how to use dc_shell in both the dcsh and dctcl modes to compile and optimize a design, set tighter constraints, and generate reports. Optional Exercises Gives optional exercises that show you how to use dc_shell commands to manipulate instances and report their attributes. Other optional exercises show you how to resolve multiple instances, using the set_dont_touch and ungroup commands.
3. Choose File > Read to read in TOP_before_compile.db from the db directory. To prepare for the exercises in this chapter if you are using the dc_shell interface, Enter one of the following pairs of commands:
dc_shell> remove_design -all dc_shell> read -format db {./db/TOP_before_compile.db}
or
dc_shell-t> remove_design -all dc_shell-t> read_file -format db [list {./db/ TOP_before_compile.db}]
Review the tasks you performed and the constraints you set in Chapter 7, Setting the Design Environment, and Chapter 8, Dening Optimization Goals and Setting Constraints. Here is a review of the attributes and constraints you have already set for the TOP_before_compile.db design. You have Set these attributes on TOP: - Drive strength values ALARM = 0.08 CLK = 0.0335 (used drive_of command on pin Z of target library cell B4I to assign rise and fall values) HRS = 0.08 MINS = 0.08 SET_TIME = 0.06 TOGGLE_SWITCH = 0.08
Compiling a Hierarchical Design 9-3
- Load values AM_PM_DISPLAY = 2 DISP1 = 3 DISP2 = 3 SPEAKER_OUT = 7.5 (used load_of command on pin A of target library cell IVA) - Wire load model, 10X10 - Operating conditions, WCCOM Set these constraints on TOP - Clock period of 25 on port CLK - Output delay constraint of 5 on all output ports Run uniquify to resolve multiple design instances
Generating New Reports Using Design Analyzer Analyzing the New Reports Using Design Analyzer Saving the Newly Compiled Version Using Design Analyzer
Design Compiler automatically compiles all levels of the design hierarchy, upholding the hierarchical structure of the design. During compilation, these ve major phases of gate-level optimization of a module can occur in a design: 1. Initial sequential optimization 2. Combinational optimization 3. I/O pad optimization 4. Final sequential optimization 5. Localized adjusting After compiling each module in the design, Design Compiler continues to optimize the circuit until the constraints are met. Sometimes this process requires recompiling subdesigns on a critical path. When the performance goals are achieved or when no further improvement can be made, the compile process stops. By default, each subdesign in a hierarchical design is compiled separately. During compilation of subdesigns, Design Compiler optimization takes into account the unique boundary conditions of each subdesign. Before compilation, resolve any multiple instances of the same design by using the uniquify set_dont_touch or ungroup command.
To check and set options, 1. Note the default settings. Map Design (mapping) is selected. Medium Map Effort (the CPU effort used to map a design) is selected. Use these default settings. For most optimizations, the defaults are sufcient to meet dened constraints. 2. Click Verify Design to select it.
This checks that the new synthesized design is functionally equivalent to the original design. Select Verify Effort Low (the CPU effort used to verify the design). 3. Click Allow Boundary Optimization to select it. Boundary optimization allows for logic optimization across module boundaries. For example, if the signal to an input port of a subdesign is always logic 0, boundary optimization can simplify the logic in the subdesign, as shown in Figure 9-2.
Block1 X
Block2 A B
L O G I C
Block1 X C
Block2 A B
L O G I C
Two input ports in the CONVERTOR module are not being used. With boundary optimization, the logic associated with these two input ports is optimized away. Compilation can run in either the background or the foreground. In this exercise, you compile in the foreground. Note: Compiling in the background has advantages. You can continue to work on the design while compiling it and you can save different versions of a compiled design in separate directories. Saving different versions allows you to select the one with the best results.
To initiate optimization in the foreground, Click "Execute in: Foreground" and in the Design Optimization window click OK to begin optimization.
After reading in the default variables and design for compile, Design Compiler begins CMOS optimization. Figure 9-3 shows the reported results. During this phase, Design Compiler attempts to meet the specied constraints.
The process proceeds to the mapping optimizations phase; the logged results are shown in Figure 9-4.
During the mapping optimizations phase, Design Compiler does structuring and mapping. In the Compile log, note two newly created designs related to resource sharing. The subdesigns ALARM_COUNTER and TIME_COUNTER use a synthetic resource to implement a multiple addition operation. Only one resource is needed by both designs to implement all addition operations. This resource is the synthetic module DW01_inc_no (incrementor). During the next stage, Design Compiler tries different strategies to meet the constraints and further improve the circuit.
Compiling a Hierarchical Design 9-11
Your results might vary slightly from those shown in Figure 9-5:
When optimization is complete, the Compile Log window looks like the one shown in Figure 9-6:
After compilation nishes, Design Analyzer updates the Designs view, as shown in Figure 9-7.
Note the two new icons in the Design Analyzer window. These two icons represent the two synthetic modules, ALARM_COUNTER_DW01_inc_6_0 and TIME_COUNTER_DW01_inc_6_0, that implement the addition operation. The synthetic modules create a new level of hierarchy. The icons are gate symbols because the designs are mapped. When all designs are mapped to gates, you can determine the area and speed of the design.
To generate area and constraint reports, 1. If options are set, click Clear Choices. 2. Under Analysis Reports, click Area and Constraints to select them.
3. Click the Send Output To: Window to select it. or Click "Send Output To: File" and send report results to a le. 4. Click Apply to generate the reports.
In this constraint report, all the design constraints are met, including the design path delay of 20 ns and the clock period of 25 ns. You dene the design path delay of 20 ns by setting the external output delay to 5 ns. Calculate the design path delay by subtracting the output delay from the clock period.
After examining the reports, click Cancel in the Report window and in the Report Output window to close the windows.
Area
1100
0 0 30 Delay
In the following exercise, you explore a smaller part of the design space curve. Recompiling your previously compiled design reduces compile time. However, if you need to take full advantage of all optimization steps, recompile the design from the source code. Currently the design has an area of 884, a clock period of 25 ns, and a path delay of 20 ns. This design does not have an area constraint set; however, in Chapter 8, the upper limit for area was determined to be 1100. Because the design is not far under the area goal of 1100, there is some room to experiment. Still, you can determine whether the design can be made even faster by allowing optimization to give up some area results for faster performance.
3. Leave the other settings from the previous compilation, as shown in Figure 9-13.
4. Click OK. The Compile Log window appears and displays the activities and results of the design optimization. 5. Browse the Compile Log window. 6. Click Cancel to close the window.
To close the reports after examining them, click Cancel in each window.
No
ungroup
dont_touch
uniquify
After one of the three options is successfully completed, run compile to optimize your design.
to avoid changing the design in subsequent optimization sessions. This method of handling subdesigns is called the compile-once-dont-touch method. Before you begin, 1. Delete any designs in the Designs view. 2. Read in the design TOP_attributes.db. 3. Select TOP and run check_design with Check Timing not selected. The warnings displayed earlier in this chapter are regenerated. Before you apply the dont_touch attribute, optimize CONVERTOR to gates so that timing information is available. To optimize CONVERTER, 1. Display the Symbol view for CONVERTOR. 2. Choose Tools > Design Optimization. 3. Click OK to use the default options in the Design Optimization window. The Compile Log window appears and displays the activities of compile. When the compilation nishes, design CONVERTOR is mapped to gates. The CONVERTOR icon in the Designs view changes from PLA to a NAND gate. This mapped design replaces the PLA description for CONVERTOR. 4. Click Cancel to close the Compile Log window.
To set the dont_touch attribute on CONVERTOR, 1. Choose Attributes > Optimization Directives > Design. Attribute values of the selected design are displayed or modied in the Design Attributes window. 2. Select Dont Touch. 3. Click Apply. The dont_touch attribute is set on CONVERTOR. 4. Click Cancel to close the Design Attributes window. To check the TOP design again, 1. Select TOP in the Designs view. 2. Choose Analysis > Check Design. 3. Make sure that Check Timing is not selected 4. Click OK. No warnings are issued about multiple design instances. A new warning is issued as a result of the optimization run earlier on CONVERTOR to map it to gates. Because ports A0 and D0 are identical, the two ports are shorted during compile. This warning is informational and does not reect an error. 5. Click Cancel to close the Design Errors window. After the dont_touch attribute is set on the subdesign, optimize the top-level design TOP. The subdesign is not changed by compile during optimization of the hierarchical design.
No warnings are issued about multiple design instances. A new warning is issued as a result of the optimization run earlier on CONVERTOR to map it to gates. Because ports A0 and D0 are identical, the two ports are shorted during compile. This warning is informational and does not reect an error. 5. Click Cancel to close the Design Errors window. When you optimize TOP, the CONVERTOR design merges with the top-level logic. After optimizing TOP (use Tools > Design Optimization), run a hierarchy report to view the results. Figure 9-16 shows the hierarchy report.
These tasks and exercises are presented in both dcsh and dctcl modes.
or
dc_shell-t> compile -map_effort medium -verify -verify_effort low -boundary_optimization
The options used for compilation of the design example direct Design Compiler to Dedicate the standard CPU effort to the mapping phase of the compilation (-map_effort) Perform a functional comparison between the initial design and the synthesized result (-verify) Dedicate a relatively low amount of CPU time for the verication phase of the compilation (-verify_effort)
Optimize the design across all hierarchical boundaries. This can change the function of the design so that it can operate only in its current environment (-boundary_optimization) Note: Though used for the tutorial, the -verify and -boundary_optimization parameters are optional.
Example Output The compilation process produces extensive output, segments of which are shown and explained here. At the outset of compilation, dc_shell displays initialization and loading information such as the following in the shell window:
Loading target library class Loading design TOP . . . Using non-hierarchical verification because of boundary optimization. Copying Design (for verification) Allocating blocks in U1/U1 Allocating blocks in U1/U2 Allocating blocks in U6 Allocating blocks in U2/U1 Allocating blocks in U2/U2 Allocating blocks in U5 Allocating blocks in U3/U9 Allocating blocks in U4
After reading in the default variables and design for the compile, Design Compiler begins CMOS optimization. During this phase, Design Compiler tries to meet the specied constraints.
Beginning CMOS optimization ----------------------------
Beginning Resource Allocation (constraint driven) ----------------------------Structuring COMPARATOR Mapping COMPARATOR Structuring HOURS_FILTER Mapping HOURS_FILTER . . . Structuring TIME_STATE_MACHINE Mapping TIME_STATE_MACHINE Allocating blocks in U1/U1 Allocating blocks in U1/U2 Allocating blocks in U6 . . .
The process proceeds to the mapping optimizations phase. During the mapping optimizations phase, Design Compiler structures and remaps the design. Two new designs, related to resource sharing, are created. The subdesigns ALARM_COUNTER and TIME_COUNTER use a synthetic resource to implement a multiple addition operation. Only one resource is needed by both designs to implement all additional operations. The resource is the synthetic module DW01_inc_no (incrementor).
Beginning Mapping Optimizations (Medium effort) ----------------------------------------------Structuring TIME_COUNTER_DW01_inc_6_1 Mapping TIME_COUNTER_DW01_inc_6_1 Structuring TIME_COUNTER_DW01_inc_6_0 Mapping TIME_COUNTER_DW01_inc_6_0 Structuring ALARM_COUNTER_DW01_inc_6_0 Mapping ALARM_COUNTER_DW01_inc_6_0 Structuring COMPARATOR Mapping COMPARATOR Structuring HOURS_FILTER Mapping HOURS_FILTER
. . .
During the next phase, Design Compiler tries different strategies to meet the constraints and further improve the circuit.
Beginning Incremental Mapping Optimizations ------------------------------------------Selecting implementations in U1/U2 Selecting implementations in U2/U2
ACTION --------
AREA ----
Beginning Area-Recovery Phase (cleanup) TOTAL NEG SLACK ----0.0 0.0 0.0 DESIGN RULE COST ---------0.0 0.0 0.0
sdn_single_size sdn_single_size
179 25
0.00 0.00
0.00 0.00
0.0 0.0
0.0 0.0
Transferring Design CONVERTOR_0 to database compile.db . . . TIME_COUNTER_DW01_inc_6_1 to database compile.db TIME_COUNTER_DW01_inc_6_0 to database compile.db ALARM_COUNTER_DW01_inc_6_0 to database compile.db ALARM_COUNTER to database compile.db ALARM_BLOCK to database compile.db MUX to database compile.db . . .
Verifying Designs TOP (Low effort) Verification Succeeded Current design is TOP 1
or
dc_shell-t> create_clock -name CLK -period 23 -waveform [ list 0 11.5 ] CLK
or
dc_shell-t> compile -map_effort dc_shell-t> set current_design {compile.db:TOP}
or
dc_shell-t> report_area
dc_shell-t> report_constraints
Example Output Use the area report to nd out the circuit area. The area report lists the number of ports, nets, cells, and references in the design. The area of the design is divided into combinational, noncombinational, and net interconnect. Some ASIC vendors provide a number that is used with the fanout value to estimate the net interconnect area. For this library, the information is not available. The net interconnect area is zero because the wire load model wire area is zero.
************************************************* Report : area Design : TOP Version : 1998.08 Date : Thu Oct 15 1998 ************************************************* Library(s) used: class (File: /usr/synopsys/libraries/syn/class.db) Number Number Number Number of of of of ports: 36 nets: 69 cells: 6 references: 6 653.000000 231.000000 undefined (Wire load has zero net area) 884.000000
Combinational area: Noncombinational area: Net Interconnect area: Total cell area: Total area: 1
Use the constraint report to nd out whether constraints are met. The constraint report provides information about design rules and optimization constraints. The report includes all violations.
In this constraint report, all the design constraints are met, including the design path delay of 20 ns and the clock period of 25 ns. You dene the design path delay of 20 ns by setting the external output delay to 5 ns. Calculate the design path delay by subtracting the output delay from the clock period.
************************************* Report: constraint Design: TOP Version: 1998.08 Date: Thu Oct 15 17:52:27 1998 ************************************** Weighted Group (max_delay/setup) Cost Weight Cost ---------------------------------------------------CLK 0.00 1.00 0.00 default 0.00 1.00 0.00 ----------------------------------------------------max_delay/setup 0.00 Total Neg Critical Group(critical_range) Slack Endpoints Cost -------------------------------------------------critical_range 0.00 Weighted Group (min_delay/hold) Cost Weight Cost ---------------------------------------------------CLK (no fix_hold) 0.00 1.00 0.00 default 0.00 1.00 0.00 ----------------------------------------------------min_delay/hold 0.00 Constraint Cost ----------------------------------------------------max_delay/setup 0.00 (MET) critical_range 0.00 (MET)
or
dc_shell-t> write -format db -hierarchy -output {./db/TOP_compiled.db} [list {compile.db:TOP}]
Optional Exercises
You can perform optional exercises, using dc_shell to set attributes on specic cells and experiment with alternative ways to resolve multiple instances of a subdesign. The following section provides exercises that set attributes on specic cells. Note: Except for the read command, all commands in these exercises are the same in dcsh and dctcl modes.
To read in the design, 1. Change to your tutorial directory. At the operating system prompt, enter
% cd ~/tutorial
or
% dc_shell-t
or
dc_shell-t> read_file -format db [list {./db/ TOP_before_compile.db}]
To move down the design hierarchy to instance U7, 1. Set the current design to the top of the hierarchy. At the dc_shell prompt, enter
dc_shell> current_design TOP
The command is the same in dctcl mode. 2. Change to instance U3, which is CONVERTOR_CKT TOP/U3. At the dc_shell prompt, enter
dc_shell> current_instance U3
The command is the same in dctcl mode. 3. Change to instance U7, which is CONVERTOR_1 TOP/U3/U7. At the dc_shell prompt, enter
dc_shell> current_instance U7
The command is the same in dctcl mode. To change pin capacitance, 1. Before changing the pin capacitance of U7, generate a net report. At the dc_shell prompt, enter
dc_shell> report_net
The command is the same in dctcl mode. The load value for net A0 is 3.53. This value is calculated as the sum of the pin load (3) plus the wire load (0.53).
2. Annotate the capacitance on pin A0 of instance U7. At the dc_shell prompt, enter
The command is the same in dctcl mode. Generate another net report. At the dc_shell prompt, enter
dc_shell> report_net
The command is the same in dctcl mode. The load for net A0 now is 5.50. This value is calculated as the sum of the pin load (3) and the value of 2.5 assigned in the set_load command. The wire load is not included in the load value because the load has changed since the last compile. To move up the design hierarchy, 1. Display the current instance. At the dc_shell prompt, enter
dc_shell> current_instance .
The command is the same in dctcl mode. 2. Move up one level in the design hierarchy. At the dc_shell prompt, enter
dc_shell> current_instance ..
The command is the same in dctcl mode. 3. Move up to the top level of the hierarchy. At the dc_shell prompt, enter
dc_shell> current_instance
4. After reaching the top level, exit dc_shell. At the dc_shell prompt, enter
dc_shell> quit
10
Analyzing Design Results 10
Throughout the tutorial exercises in the previous chapters, you generate and analyze area, constraints, and timing reports. This chapter describes how to generate and analyze other reports. It explains how to generate bus, cell, net, compile options, and hierarchy reports, analyze circuits by using schematics; report point-to-point timing; and generate a sized schematic for printing. Allow less than two hours to complete the exercises in this chapter. This chapter includes the following sections: Before You Begin Explains how to generate the schematic view, using Design Analyzer. Analyzing Design Results Using Design Analyzer
Contains the complete set of tasks and exercises you perform to generate reports and analyze design results, using Design Analyzer. For a list of the exercises, see the introduction to the section. Analyzing Design Results Using dc_shell Contains the complete set of tasks and exercises you perform focusing on the commands you useto generate reports and analyze design results.
Note: You can skip these steps if you did not quit the tutorial after performing the previous exercise. Figure 10-1 shows the schematic for TOP in schematic view.
Generating Analysis Reports Using Design Analyzer Explains how to generate hierarchy, timing, and port timing reports.
Using the Schematic View for Analysis in Design Analyzer Explains how to display timing or load values for points in the schematic to check these values instead of generating reports.
Displaying Multiple Design Analyzer Windows Explains how to generate two schematic views and display them at one time.
Printing Schematics Using Design Analyzer Explains how to resize and print a schematic.
Provides information about fanout, fanin, loading, attributes, and the number of pins connected to each net. Compile Options Report Summarizes the compile options applied to the submodules. The results in your reports and schematics might vary from those displayed.
Bus Report
The bus report lists the bused ports and nets in the current design. The information in the report is linked to the schematic. To generate the bus report, 1. Select Busing in the open Report window. 2. Click Apply. The Report Output window, shown in Figure 10-2, appears and displays the bus report.
Buses are usually indexed in ascending order. If the bus is in descending order, the numbers in the Step column are negative. To determine the bused ports locations, 1. Move the Report and Report Output windows next to the Design Analyzer window.
Analyzing Design Results 10-7
2. Select DISP1 in the Bused Port section. Design Analyzer highlights the line, as shown in Figure 10-3.
3. Click Show. This action selects and zooms in on the port in the Schematic view, shown in Figure 10-4.
4. Click Next to display the schematics of the next bused port and highlight DISP2 in the Schematic View.
Cell Report
The cell report lists cells and subdesigns in the design with Reference names Source library, if applicable Area
Analyzing Design Results 10-9
Attributes
To generate the cell report, 1. Make sure that Busing is not selected in the Report window. 2. Select Cell. 3. Click Apply. The cell report appears, as shown in Figure 10-5.
The TOP design contains only subdesigns, which are listed in the report with cell (instance) and reference names. Library Lists the library that contains the reference. This column is empty because these designs are not library cells. Area Lists the area for each cell.
Attributes Lists the design attributes. The Attributes key denes the letters listed in the Attributes column. Subdesigns have an h because they are always hierarchical. Subdesigns that contain sequential elements also have an n, for noncombinational.
Net Report
The net report lists nets in the current design with Fanout Fanin Load values Number of pins Attributes for the nets, if any
To generate the net report, 1. Make sure Cell is not selected. 2. Select Net. 3. Click Apply. The net report appears, as shown in Figure 10-6.
After place and route tools create the circuit layout, the load values
of interconnect nets can be derived. You can input load values to Design Compiler to model the synthesized circuit more accurately. This process is called back-annotation. If a net is assigned an annotated capacitance or resistance value, a c or an r appears in the Attributes column. To view a net in the schematic, 1. Select ALARM in the Report Output window. 2. Click Show. This action selects and zooms in on the net in the Schematic View, as shown in Figure 10-7.
3. Click Next to display the schematic of the next net in the report (CLK). Note: Even though Show and Next are highlighted when you select DISP1[0], you cannot use them to view single bits of a bus.
To generate the compile options report, 1. Make sure Net is not selected. 2. Select Compile Options. 3. Click Apply. The compile options report appears, as shown in Figure 10-8.
Default compile options were used previously for atten and structure.
The atten option is off by default. The structure option is on and is timing-driven. These options are reected in the report for the subdesigns.
Hierarchy Report
The hierarchy report lists all the cells in the current design or current instance. The hierarchy is shown by using indentations in the report.
To generate a hierarchy report, 1. Click Clear Choices. 2. Select Hierarchy. 3. Click Apply. The hierarchy report appears, as shown in Figure 10-9.
Timing Report
A timing report provides timing information for dened endpoints and constrained pins. If no endpoints or constrained pins are explicitly specied, the report includes timing information only for the most critical path in the design. To select the timing report option, 1. Click Clear Choices. 2. Select Timing. When you select Timing to be on, Set Options is enabled. To open the Report Options window, 1. Click Set Options in the Report window. The Report Options window appears, as shown in Figure 10-10.
2. In the Hierarchy Options section of the window, make sure First Instance Only is selected. Only the rst occurrence of a submodule that is used multiple times in the hierarchy is shown. 3. In the Constraint Options section of the window, select Verbose.
In the Constraint Options section, Worst Violations and All Violations apply only to the constraint report. Do not use them for timing reports. The FPGA Options section applies only when the designs target library is an FPGA library. To select the path delay type, In the Timing Report Options section of the window, open the Path Delay Type menu and choose Maximum.
To select endpoints, 1. Open the Report Points and choose Entire Path.
Displays the endpoints and the associated delay Displays the startpoint and endpoint of each path and the associated delay Traces a path from each startpoint to the endpoint (default)
The rise or fall delay, including the incremental delay from the driver, is displayed for each point in the path.
2. Type 3 in the "Max Paths to Show" eld to list the three paths that have the longest delay. 3. Click OK. The Report Options window closes. 4. Click Apply in the Report window. The timing report, shown in Figure 10-11, appears,. It lists the three most critical paths in the design.
U2/U1/CURRENT_STATE_reg[0]/CP
You might have identied another path as the most critical in your design. To trace the critical path, 1. Click the line in the Report Output window that displays the rst cell (U2/U1/CURRENT_STATE_reg[0]/CP) in the path. 2. Click Show to select and zoom in on the register (and pin) in the Schematic View, as shown in Figure 10-12. Click Show again to enhance the highlighting.
3. Click Next three times to highlight the next three points in the path, as shown in Figure 10-13.
To continue tracing the critical path, 1. Continue examining the critical path, using Next and Show. 2. When you nish following the critical path, click Cancel. 3. Choose Analysis > Highlight > Clear to remove the highlighting on the path in the Schematic view. You can also remove the highlighting on the critical path by placing the pointer in the Design Analyzer window and pressing Ctrl-h.
For more information about types of reports and report options, see the Design Analyzer Reference Manual and the report commands in the man pages.
To select timing report options, 1. Open the Path Delay Type menu and choose Maximum. 2. Open the Report Points menu and choose Only End Points. 3. Set "Max Paths to Show" to 10.
4. Set "Max Paths to Show per end-point" to 1. 5. Click OK. To generate the timing report, 1. In the Report window, select "Send Output To:" to Window. 2. Click Apply. The timing report, shown in Figure 10-15, appears.
By default, the timing endpoints that Design Compiler reports are the ip-op D pins and output ports. The D pins have setup constraints derived because of the clock period constraint. The output ports have
the max_delay constraint. You can determine the time when a signal arrives at pins other than those reported by the default option by completing the following tasks: To zoom in on an area, 1. Display the Schematic view of TOP. 2. Zoom in on the part of the schematic for TOP that contains COMPARATOR and ALARM_SM_2, as shown in Figure 10-16.
To display the pin names layer, 1. Choose View > Style to display the View Style window. 2. Select pin_name_layer from the list. 3. Click Visible option to On. 4. Click Apply to turn on the pin_name_layer. 5. Click Cancel to close the View Style window.
To select two input pins, 1. Select input pin COMPARE_IN of subdesign ALARM_SM_2 (U5/ COMPARE_IN). Pin COMPARE_IN receives input from the COMPARATOR block. 2. Make sure the pin is selected instead of the net. Check the lower left corner of the Design Analyzer window. 3. Select input pin CLOCK_AM_PM of subdesign COMPARATOR (U4/CLOCK_AM_PM) with the middle mouse button. A startpoint and an endpoint are selected for a path, as shown in Figure 10-17.
To generate a point timing report, 1. Click Clear Choices in the Report window. 2. Select Point Timing. 3. Click Set Options to open the Report Options window. 4. Open the Report Points menu and choose Entire Path. 5. Click OK in the Report Options window. 6. Click Apply in the Report window.
Design Analyzer displays the timing report for the path between the selected points, as shown in Figure 10-18.
The startpoint and endpoint of the path are denoted by the <-. The requested subpath starts with cell U1/U2/AM_PM_OUT_reg/Q (driving pin U4/CLOCK_AM_PM) and ends at cell U4/U41/Z (driving pin U5/COMPARE_IN). The full path through the pins is listed.
Analyzing Design Results 10-38
When you are nished examining the report, click Cancel in the Report Output window and Report window.
3. Click Cancel in the Pin Values window. To determine the load on a net, 1. Select the net connecting COMPARE_IN to the COMPARATOR block. 2. Choose Analysis > Show Net Load. The Net Load window shown in Figure 10-20 appears. The load is 1.53.
Both windows view the same database. Changes to the database are reected in all current Design Analyzer windows. 4. Generate the schematic view for ALARM_SM_2 in the other window. Using the two windows, you can display different views for the same design at one time.
Figure 10-22 shows the schematic view for ALARM_SM_2 for UNIX.
Figure 10-23 shows the schematic view for ALARM_SM_2 for the Windows NT OS.
For more information about sheet sizes, see the create_schematic command in the man pages and the Design Compiler User Guide.
Resize and print a schematic by completing the following tasks: Reset the default schematic size. Regenerate the schematic. Print the schematic.
To reset the default schematic size, 1. Select CONVERTOR_0 in the Designs view. 2. Generate the Schematic view. 3. Choose Setup > Defaults to display the Defaults window. The current value for Schematic Options is -size innite. 4. Change innite to A in the Schematic Options eld. 5. Click OK. The default schematic size is set to size A. To recreate the schematic, To view the Schematic view for size A, choose View > Recreate. Design Analyzer regenerates the view, as shown in Figure 10-24.
Figure 10-24
This schematic view formats the schematic of CONVERTOR_0 to t onto 13 size-A pages. You can view other pages by choosing View > Change Sheet. To print the schematic, 1. Choose File > Plot. The Plot window opens, as shown in Figure 10-25.
2. Select Current Sheet. Current Sheet prints only the sheet shown in the Schematic view. 3. In the Command eld, enter the print command for your local printer. 4. Click OK. The current schematic sheet prints.
To restore the size, 1. Choose Setup > Defaults. 2. Change A to innite in the Schematic Options eld. 3. Click OK. 4. Choose View > Recreate to re-create the size innite Schematic View. The size is restored.
Note: In the following sections, all commands are presented in dcsh mode. The commands are identical in Tcl mode except in three instances. The Tcl form of the command is shown for these exceptions.
Identies the width of buses. Use for buses and nets. Cell Report Displays information about cells and subdesigns in the current design. Includes cell (instance) and reference names, their libraries, and the area for each cell. Net Report Provides information about fanout, fanin, loading, attributes, and the number of pins connected to each net. Compile Options Report Summarizes the compile options applied to the submodules.
Bus Report
The bus report lists bused ports and nets in the current design. Information in the report is linked to the schematic. To generate the bus report, Enter the following command at the prompt:
dc_shell> report_bus
Example Output Buses are usually indexed in ascending order. If the bus is in descending order, the numbers in the Step column are negative.
Loading db file /usr/synopsys/libraries/syn/class.db Loading db file /usr/synopsys/libraries/syn/gtech.db Loading db file /usr/synopsys/libraries/syn/standard.sldb
************************************** Report : bus Design : TOP Version: 1998.08 Date : Mon Oct 19 19:21:28 1998 ************************************* Bussed Port Dir From To Step Width Type -----------------------------------------------------DISP1 out 13 0 -1 14 array DISP2 out 13 0 -1 14 array
Bussed Net From To Step Width Type ------------------------------------------------------DISP1 13 0 -1 14 array DISP2 13 0 -1 14 array KONNECT10 0 59 1 6 range KONNECT6 1 12 1 4 range KONNECT7 0 59 1 6 range KONNECT9 1 12 1 4 range KONNECT13 10 0 -1 11 array U3/connect13 9 0 -1 10 array U3/disp1 13 1 -1 13 array U6/OUTBUS 10 0 -1 11 array 1
Cell Report
The cell report lists cells and subdesigns in the current design with Reference names Source library, if applicable Area Attributes
To generate the cell report, Enter the following command at the prompt:
dc_shell> report_cell
The TOP design contains only subdesigns, which are listed in the report with cell (instance) and reference names. Library Lists the library that contains the reference. This column is empty in this example because these designs are not library cells. Area Lists the area for each cell. Attributes Lists the design attributes. The Attributes key denes the letters listed in the Attributes column. Subdesigns have an h because they are always hierarchical. Subdesigns that contain sequential elements have an n, for noncombinational. Example Output
Information: Updating design information... (UID-85) ***************************************** Report : cell Design : TOP Version: 1998.08 Date : Mon Oct 19 19:57:40 1998 ****************************************** Attributes: b - black box (unknown) h - hierarchical n - noncombinational r - removable
u - contains unmapped logic Cell Reference Library Area Attributes -------------------------------------------------------U1 TIME_BLOCK 331.00 h, n U2 ALARM_BLOCK 204.00 h, n U3 CONVERTOR_CKT 325.00 h U4 COMPARATOR 44.00 h U5 ALARM_SM_2 11.00 h, n U6 MUX 55.00 h ----------------------------------------------------Total 6 cells 970.00 1
Net Report
The net report lists nets in the current design with Fanout Fanin Load values Number of pins Attributes for the nets, if any
Example Output After place and route tools create the circuit layout, load values of interconnect nets can be derived. You can input load values to Design Compiler to model the synthesized circuit more accurately. This process is called back-annotation. If a net is assigned an annotated capacitance or resistance value, a c or an r appears in the Attributes column. (This is not the case for the example design.)
**************************************************** Report : net Design : TOP Version: 1998.08 Date : Mon Oct 19 20:06:20 1998 ********************************* Operating Conditions: WCCOM Wire Loading Model Mode: top Library: class
Design Wire Loading Model Library -------------------------------------------------TOP 10X10 class Net Fanout Fanin Load Resistance Pins Attributes ---------------------------------------------------------------------ALARM 13 1 28.26 0.00 14 AM_PM_DISPLAY 1 1 2.53 0.00 2 CLK 33 1 43.48 0.00 34 DISP1[0] 2 1 4.84 0.00 3 DISP1[1] 1 1 3.53. 0.00 2 DISP1[2] 1 1 3.53 0.00 2 DISP1[3] 1 1 3.53. 0.00 2 DISP1[4] 1 1 3.53. 0.00 2 DISP1[5] 1 1 3.53. 0.00 2 DISP1[6] 1 1 3.53. 0.00 2 DISP1[7] 1 1 3.00 0.00 2 DISP1[8] 4 1 13.46 0.00 5 DISP1[9] 1 1 13.46 0.00 5 . . . DISP2[7] DISP2[8] DISP2[9] 1 1 1 1 1 1 0.53 0.53 0.53 0.00 0.00 0.00 2 2 2
DISP2[10] DISP2[11] DISP[12] DISP[13] HRS KONNECT6[0] KONNECT6[1] KONNECT6[2] KONNECT6[3] KONNECT6[0]
2 1 1 2 4 5 6 5 6 6
1 1 1 1 1 1 1 1 1 1 . . .
0.84 0.53 0.53 0.84 5.46 7.77 10.09 8.77 9.09 10.09
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
3 2 2 3 5 6 7 6 7 7
KONNECT13[8] 4 1 6.46 0.00 5 KONNECT13[9] 4 1 15.02 0.00 10 KONNECT13[10] 8 1 11.71 0.00 9 MINS 4 1 5.46 0.00 5 SET_TIME 2 1 2.84 0.00 3 SPEAKER_OUT 1 1 8.03 0.00 2 TOGGLE_SWITCH 1 1 2.53 0.00 2 -----------------------------------------------------------------Total 69 nets 260 69 440.94 0.00 329 Maximum 33 1 43.48 0.00 34 Average 3.77 1.00 6.39 0.00 4.77 1
Example Output Default compile options were used previously for atten and structure. The atten option is off by default. The structure option is on and is timing-driven. These options are reected in the report for the subdesigns.
************************************************ Report : compile_options Design : TOP Version: 1998.08 Date : Tue Oct 20 07:04:18 1998 ************************************************** Design Compile Option Value -------------------------------------------------------TOP flatten false structure true structure_boolean false structure_timing true TIME_BLOCK flatten structure structure_boolean structure_timing flatten structure structure_boolean structure_timing flatten structure structure_boolean structure_timing false true false true false true false true false true false true false true false true false true false true
TIME_STATE_MACHINE
TIME_COUNTER
TIME_COUNTER_DW01_inc_6_0 flatten structure structure_boolean structure_timing MUX flatten structure structure_boolean structure_timing
ALARM_BLOCK
CONVERTOR_0
flatten structure structure_boolean structure_timing . . . flatten structure structure_boolean structure_timing flatten structure structure_boolean structure_timing
HOURS_FILTER
COMPARATOR
Point Timing Report Analyzes the timing between the points you select.
The results in your reports and schematics might vary from those displayed.
Hierarchy Report
The hierarchy report lists all the cells in the current design or current instance. To generate a hierarchy report, Enter
dc_shell> report_hierarchy
Example Output As is the case with example output for other reports with lengthy output, an abbreviated version of it is shown here, mainly to give you a sense of the report content. When you enter the command and it completes execution successfully, you will see the full report.
************************************************ Report : hierarchy Design : TOP Version: 1998.08 Date : Tue Oct 20 07:28:38 1998 *********************************** TOP ALARM_BLOCK ALARM_COUNTER ALARM_COUNTER_DW01_inc_6_0 ENI EOI IVI ND2I
IVI MUX21L ND2I NR2I ALARM_STATE_MACHINE AN2I FD1S IVI ND2I NR2I ALARM_SM_2 . . . TIME_STATE_MACHINE AN2I FD1 FD1S IVI ND2I NR2I 1
Timing Report
A timing report provides timing information for dened endpoints and constrained pins. If no endpoints or constrained pins are explicitly specied, the report includes timing information only for the most critical path in the design. To generate the timing report, Enter
The FPGA Options section applies only when the designs target library is an FPGA library. Example Output The rst cell in the rst path is the register
U2/U1/CURRENT_STATE_reg[0]/CP
You might have identied another path as the most critical in your design.
************************************************ Report : timing -path full -delay max -max_paths 3 Design : TOP Version: 1998.08 Date : Tue Oct 20 07:40:15 1998 *********************************** Operating Conditions: WCCOM Library: class Wire Loading Model Mode: top Design Wire Loading Model Library ------------------------------------------TOP 10X10 class Startpoint: U1/U1/CURRENT_STATE_reg[0] (rising edge-trimmed flip-flop clocked by CLK) Endpoint: U1/U2/HOURS_OUT_reg[3] (rising edge-trimmed flip-flop clocked by CLK) Path Group: CLK Path Type: max
Point Incr Path --------------------------------------------------clock CLK (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 U1/U1/CURRENT_STATE_reg[0]/CP (FD1S) 0.00 0.00 r U1/U1/CURRENT_STATE_reg[0]/QN (FD1S) 3.73 3.73 r . . .
16.22 . . . clock CLK (rise edge) 23.00 23.00 clock network delay (ideal) 0.00 23.00 U1/U2/HOURS_OUT reg[1]/CP (FD1) 0.00 23.00 library setup time -0.80 22.20 data required time 22.20 ------------------------------------------------------------data required time 22.20 data arrival time -14.65 -------------------------------------------------------------slack (MET) 7.55 1
dc_shell> current_instance U1/U1 dc_shell> remove_highlighting -all -hier dc_shell> report_timing -path full -delay max -max_paths 3 -nworst 1
In Tcl mode, the quotation marks are replaced by braces in the rst command above:
dc_shell-t> current_instance {U1/U1}
Example Output This section shows each discrete command, displays the output, and shows an abbreviated version of the report. When you run the command and it completes execution successfully, you see the following report:
dc_shell> current_instance U1/U1 Current instance is TOP/U1/U1. "TOP/U1/U1" Generating schematic for design: TIME_STATE_MACHINE The schematic for design TIME_STATE_MACHINE has 1 page(s). 1
dc_shell> remove_highlighting -all -hier 1 dc_shell> report_timing -path full -delay max -max_paths 3 -nworst 1 ************************************************ Report : timing -path full -delay max -max_paths 3 Design : TOP Version: 1998.08 Date : Tue Oct 20 08:18:24 1998 *********************************** Operating Conditions: WCCOM Library: class Wire Loading Model Mode: top Design Wire Loading Model Library ----------------------------------------TOP 10X10 class Startpoint: U1/U1/CURRENT_STATE_reg[0] (rising edge-trimmed flip-flop clocked by CLK) Endpoint: U1/U2/HOURS_OUT_reg[3] (rising edge-triggered flip-flop clocked bk CLK) Path Group: CLK Path Type: max Point Incr Path ---------------------------------------------------------clock CLK (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 U1/U1/CURRENT_STATE_reg[0]/CP (FD1S) 0.00 0.00 r U1/U1/CURRENT_STATE_reg[0]/QN (FD1S) 3.73 3.73 r . . . U1/U2/U361/Z (ND2I) 0.40 13.21 f U1/U2/U341/Z (MUX21H) 2.31 15.52 f U1/U2/HOURS_OUT_reg[2]/D (FD1) 0.00 15.52 data arrival time clock CLK (rise edge) clock network delay (ideal) U1/U2/HOURS_OUT_reg[2]/CP (FD1) library setup time data required time 23.00 0.00 0.00 -0.80 23.00 23.00 23.00 r 22.20 22.20
------------------------------------------------------------data required time 22.20 data arrival time -15.52 -------------------------------------------------------------slack (MET) 6.68 Startpoint: U1/U1/CURRENT_STATE_Reg[0] (rising edge-triggered flip-flop clocked by CLK) Endpoint: U1/U2/HOURS_OUT_reg[1] (rising edge-triggered flip-flop clocked by CLK) Path Group: CLK Path Type: max Point Incr Path ------------------------------------------------------------clock CLK (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 U1/U1/CURRENT_STATE_reg[0]/CP (FD1S) 0.00 0.00 r U1/U1/CURRENT_STATE_reg[0]/QN (FD1S) 3.73 3.37 r . . . data required time 22.20 data arrival time -14.65 -------------------------------------------------------------slack (MET) 7.55 1
In Tcl mode, the quotation marks are replaced by braces in the rst command above:
dc_shell-t> current_instance {../..}
Example Output An abbreviated version of the point timing report is shown here. You see the complete report when you run the report_timing command and it successfully completes execution.
dc_shell> current_instance ../.. Current instance is the top-level of design 1 dc_shell> report_timing -path end -delay max -max_paths 10 -nworst 1 **************************************** Report : timing -path full -delay max -max_paths 10 Design : TOP Version: 1998.08 Date : Tue Oct 20 10:03:49 1998 ***************************************** Operating Conditions: WCCOM Library: class Wire Loading Model Mode: top Design Wire Loading Model Library ----------------------------------------TOP 10X10 class Endpoint Path Delay Path Required Slack ------------------------------------------------------------------------U1/U2/HOURS_OUT_reg[3]/D (FD1) 16.22 f 22.20 5.98
U1/U2/HOURS_OUT_reg[2]/D (FDI) 15.52 f U1/U2/HOURS_OUT_reg[1]/D (FDI) 14.65 f U1/U2/AM_PM_reg/D (FD1) 14.49 f . . . U1/U2/MINUTES_OUT_reg[3]/D (FD1) 12.10 r 1
22.20
10.10
To display the pin layer, select two input pins, and generate a point timing report, Enter
dc_shell> set_layer pin_name_layer visible TRUE dc_shell> set_layer pin_name_layer line_width 1 dc_shell> set_layer pin_name_layer plot_line_width 0 dc_shell> set_layer pin_name_layer red 65535 dc_shell> set_layer pin_name_layer green 65535 dc_shell> set_layer pin_name_layer blue 65535 dc_shell> report_timing -path full -delay max -max_paths 10 -nworst 1 -from find( pin, { U4/CLOCK_AM_PM } ) -to find( pin, { U5/COMPARE_IN } )
Example Output You can use the point timing report to determine when a signal arrives at pins other than those reported by the default option. Here is an abbreviated version of the point timing report, the complete version of which is displayed when you issue the report_timing command.
**************************************** Report : timing -path full -delay max -max_paths 10 Design : TOP Version: 1998.08 Date : Tue Oct 20 10:27:28 1998 *****************************************
Operating Conditions: WCCOM Library: class Wire Loading Model Mode: top Design Wire Loading Model Library -----------------------------------------TOP 10x10 class Startpoint: U1/U2/AM_PM_OUT_reg (rising edge-triggered flip-flop clocked by CLK) Endpoint: U5/CURRENT_STATE_reg (rising edge-triggered flip-flop clocked by CLK) Path Group: CLK Path Type: max Point Incr Path -----------------------------------------------clock CLK (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 U1/U2/AM_PM_OUT_reg/CP (FD1) 0.00 0.00 r U1/U2/AM_PM_OUT_reg/Q (FD1) 3.70 3.70 r . . . data arrival time 7.79 clock CLK (rise edge) 23.00 23.00 clock network delay (ideal) 0.00 23.00 U5/CURRENT_STATE_reg/CP (FD15) 0.00 23.00 r library setup time -1.30 21.70 data required time 21.70 ----------------------------------------------------data required time 21.70 data arrival time -7.79 ----------------------------------------------------slack (MET) 13.91 1
A
Tutorial Script Files A
This appendix contains script les for the tutorial exercises. These script les contain Design Compiler commands and produce the same design results as the exercises in Chapters 7 to 10. The scripts are available in both dcsh mode and dctcl mode in your tutorial/ appendix_A directory. You can run a script from the dc_shell command-line interface or in Design Analyzer by using either the Command Window or the Execute File window. You cannot run a dctcl mode script in Design Analyzer. To run a script in dcsh mode, enter the command
include script_filename
Note: Before you can run a dcsh-mode script or a dctcl-mode script, you must ensure that you are using the correct setup le. Your tutorial directory contains setup les for both modes. The dcsh-mode le name is .synopsys_dcsh.setup, and the dctcl-mode le name is .synopsys_dctcl.setup. Copy the appropriate le to .synopsys_dc.setup, depending on which mode you intend to use when running the scripts. The script le names with their corresponding chapter numbers are listed below (dcsh mode and dctcl mode script les are identied by their .script and .tcl le extensions). setenv.script and setenv.tcl Use either script to set environment variables. The scripts correspond to the tasks of Chapter 7. optgoals.script and optgoals.tcl Use either script to dene optimization goals and set constraints. The scripts correspond to the tasks of Chapter 8. cmpldes1.script and cmpldes1.tcl Use either script to compile the design. The scripts correspond to the tasks of Chapter 9. cmpldes2.script and cmpldes2.tcl Use either script to recompile the design with different parameter values. The scripts correspond to the tasks of Chapter 9. analyzres.script and analyzres.tcl
Use either script to generate reports on the results of design compilation. The scripts correspond to the tasks of Chapter 10. In the scripts, the le names following the read commands are in .db format. If you are reading in the design in either Verilog or VHDL format, substitute the appropriate format and le names in the scripts. Note: If you are using VHDL format, read in the synopsys.vhd package, located in the vhdl directory, before you read in the rst design le.
elaborate TIME_STATE_MACHINE -arch BEHAVIOR -lib WORK \ -update create_schematic -size infinite -gen_database /* Read CONVERTOR.pla in the lowest hierarchy level */ read -format pla {./vhdl/CONVERTOR.pla} create_schematic -size infinite -gen_database /* Analyze and elaborate designs in the second hierarchy level */ analyze -format vhdl -lib WORK {./vhdl/ALARM_BLOCK.vhd, \ ./vhdl/ALARM_SM_2.vhd, ./vhdl/COMPARATOR.vhd, \ ./vhdl/CONVERTOR_CKT.vhd, ./vhdl/MUX.vhd, ./vhdl/\ TIME_BLOCK.vhd} elaborate ALARM_BLOCK -arch BEHAVIOR -lib WORK -update create_schematic -size infinite -gen_database elaborate COMPARATOR -arch BEHAVIOR -lib WORK -update create_schematic -size infinite -gen_database elaborate CONVERTOR_CKT -arch BEHAVIOR -lib WORK -update create_schematic -size infinite -gen_database elaborate MUX -arch behavior -lib WORK -update create_schematic -size infinite -gen_database elaborate TIME_BLOCK -arch BEHAVIOR -lib WORK -update create_schematic -size infinite -gen_database elaborate ALARM_SM_2 -arch BEHAVIOR -lib WORK -update create_schematic -size infinite -gen_database /* Analyze and elaborate the top-level design */ analyze -format vhdl -lib WORK {./vhdl/TOP.vhd} elaborate TOP -arch BEHAVIOR -lib WORK -update create_schematic -size infinite -gen_database /* current_design ~tutorial/vhdl/TOP.db:TOP */ create_schematic -size infinite -symbol_view create_schematic -size infinite -hier_view create_schematic -size infinite -schematic_view current_instance U2 create_schematic -size infinite -symbol_view -reference create_schematic -size infinite -hier_view -reference create_schematic -size infinite -schematic_view \ -reference current_instance .. /* Set design attributes*/ set_drive -rise .08 ALARM set_drive -fall .08 ALARM
set_drive -rise .08 HRS set_drive -fall .08 HRS set_drive -rise .08 MINS set_drive -fall .08 MINS set_drive -rise .08 SET_TIME set_drive -fall .08 SET_TIME set_drive -rise .08 TOGGLE_SWITCH set_drive -fall .08 TOGGLE_SWITCH set_drive -rise drive_of (class/B4I/Z) CLK set_drive -fall drive_of (class/B4I/Z) CLK set_drive -rise 0.06 SET_TIME set_drive -fall 0.06 SET_TIME set_load load_of (class/IVA/A) * 5 SPEAKER_OUT set_load 3.0 DISP1[13] set_load 3.0 DISP1[12] set_load 3.0 DISP1[11] set_load 3.0 DISP1[10] set_load 3.0 DISP1[9] set_load 3.0 DISP1[8] set_load 3.0 DISP1[7] set_load 3.0 DISP1[6] set_load 3.0 DISP1[5] set_load 3.0 DISP1[4] set_load 3.0 DISP1[3] set_load 3.0 DISP1[2] set_load 3.0 DISP1[1] set_load 3.0 DISP1[0] set_load 3.0 DISP2[13] set_load 3.0 DISP2[12] set_load 3.0 DISP2[11] set_load 3.0 DISP2[10] set_load 3.0 DISP2[9] set_load 3.0 DISP2[8] set_load 3.0 DISP2[7] set_load 3.0 DISP2[6] set_load 3.0 DISP2[5] set_load 3.0 DISP2[4] set_load 3.0 DISP2[3] set_load 3.0 DISP2[2] set_load 3.0 DISP2[1] set_load 3.0 DISP2[0] set_load 2.0 AM_PM_DISPLAY /* Set wire load model and operating conditions */ set_wire_load 10x10 -library class set_operating_conditions -library class WCCOM
/* Save the design */ write -format db -hierarchy -output ./db/ \ TOP_attributes.db {TOP.db:TOP} quit
current_instance {U2}
# Set design attributes set_drive -rise .08 {ALARM} set_drive -fall .08 {ALARM} set_drive -rise .08 {HRS} set_drive -fall .08 {HRS} set_drive -rise .08 {MINS} set_drive -fall .08 {MINS} set_drive -rise .08 {SET_TIME} set_drive -fall .08 {SET_TIME} set_drive -rise .08 {TOGGLE_SWITCH} set_drive -fall .08 {TOGGLE_SWITCH} set_drive -rise [drive_of class/B4I/Z] {CLK} set_drive -fall [drive_of class/B4I/Z] {CLK} set_drive -rise 0.06 {SET_TIME} set_drive -fall 0.06 {SET_TIME} set_load [expr [load_of class/IVA/A] * 5] {SPEAKER_OUT} set_load 3.0 {DISP1[13]} set_load 3.0 {DISP1[12]} set_load 3.0 {DISP1[11]} set_load 3.0 {DISP1[10]} set_load 3.0 {DISP1[9]} set_load 3.0 {DISP1[8]} set_load 3.0 {DISP1[7]} set_load 3.0 {DISP1[6]} set_load 3.0 {DISP1[5]} set_load 3.0 {DISP1[4]} set_load 3.0 {DISP1[3]} set_load 3.0 {DISP1[2]} set_load 3.0 {DISP1[1]} set_load 3.0 {DISP1[0]} set_load 3.0 {DISP2[13]} set_load 3.0 {DISP2[12]} set_load 3.0 {DISP2[11]} set_load 3.0 {DISP2[10]} set_load 3.0 {DISP2[9]} set_load 3.0 {DISP2[8]} set_load 3.0 {DISP2[7]} set_load 3.0 {DISP2[6]} set_load 3.0 {DISP2[5]} set_load 3.0 {DISP2[4]} set_load 3.0 {DISP2[3]} set_load 3.0 {DISP2[2]} set_load 3.0 {DISP2[1]}
set_load 3.0 {DISP2[0]} set_load 2.0 {AM_PM_DISPLAY} # Set wire load model and operating conditions set_wire_load {10x10} -library {class} set_operating_conditions -library {class} {WCCOM} # Save the design write -format db -hierarchy -output {./db/TOP_attributes.db} [list {TOP.db:TOP}] quit
set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay
-clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock
CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK
-max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max
-fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
AM_PM_DISPLAY DISP2[13] DISP2[13] DISP2[12] DISP2[12] DISP2[11] DISP2[11] DISP2[10] DISP2[10] DISP2[9] DISP2[9] DISP2[8] DISP2[8] DISP2[7] DISP2[7] DISP2[6] DISP2[6] DISP2[5] DISP2[5] DISP2[4] DISP2[4] DISP2[3] DISP2[3] DISP2[2] DISP2[2] DISP2[1] DISP2[1] DISP2[0] DISP2[0] DISP1[13] DISP1[13] DISP1[12] DISP1[12] DISP1[11] DISP1[11] DISP1[10] DISP1[10] DISP1[9] DISP1[9] DISP1[8] DISP1[8] DISP1[7] DISP1[7] DISP1[6] DISP1[6] DISP1[5] DISP1[5] DISP1[4]
set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay /* Run check design */
5 5 5 5 5 5 5 5 5
check_design check_timing current_design TOP_attributes.db:CONVERTOR_CKT create_schematic -size infinite -symbol_view create_schematic -size infinite -hier_view create_schematic -size infinite -schematic_view /* Show the pin name layer */ set_layer pin_name_layer visible TRUE set_layer pin_name_layer line_width 1 set_layer pin_name_layer plot_line_width 0 set_layer pin_name_layer red 65535 set_layer pin_name_layer green 65535 set_layer pin_name_layer blue 65535 current_design TOP_attributes.db:TOP /* Use uniquify to resolve multiple design instances */ uniquify create_schematic -size infinite -gen_database /* Save the design */ write -format db -hierarchy -output ./db/\ TOP_before_compile.db \ {TOP_attributes.db:TOP} /* Delete designs for the optional exercises */ remove_design find(design,*) /* Read in TOP_attributes (from Chapter 7) */ read -format db {./db/TOP_attributes.db} create_schematic -size infinite -gen_database
/* Run check design to recreate the warning message about multiple */ /* design instances */ check_design current_design TOP_attributes.db:CONVERTOR create_schematic -size infinite -symbol_view create_schematic -size infinite -hier_view /* Map design CONVERTOR to gates */ compile -map_effort medium current_design = TOP_attributes.db:CONVERTOR create_schematic -size infinite -gen_database create_schematic -size infinite -schematic_view \ -symbol_view -hier_view /* Place the dont_touch attribute on design CONVERTOR */ set_dont_touch TOP_attributes.db:CONVERTOR current_design TOP_attributes.db:TOP /* Rerun check design */ check_design /* Delete designs to run optional exercise on ungroup */ remove_design find(design,*) /* Read in TOP_attributes (from Chapter 7) */ read -format db {./db/TOP_attributes.db} create_schematic -size infinite -gen_database /* Rerun check design to recreate the warning message on multiple */ /* design instances */ check_design current_design TOP_attributes.db:CONVERTOR /* Set the ungroup attribute on design CONVERTOR */ set_ungroup TOP_attributes.db:CONVERTOR /* Rerun check design */ current_design = TOP_attributes.db:TOP check_design
quit
set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay set_output_delay # Run check design check_design check_timing # Show the pin name layer set_layer set_layer set_layer set_layer set_layer set_layer
-clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock -clock
CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK
-max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max -max
-rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall -rise -fall
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
{DISP2[2]} {DISP2[2]} {DISP2[1]} {DISP2[1]} {DISP2[0]} {DISP2[0]} {DISP1[13]} {DISP1[13]} {DISP1[12]} {DISP1[12]} {DISP1[11]} {DISP1[11]} {DISP1[10]} {DISP1[10]} {DISP1[9]} {DISP1[9]} {DISP1[8]} {DISP1[8]} {DISP1[7]} {DISP1[7]} {DISP1[6]} {DISP1[6]} {DISP1[5]} {DISP1[5]} {DISP1[4]} {DISP1[4]} {DISP1[3]} {DISP1[3]} {DISP1[2]} {DISP1[2]} {DISP1[1]} {DISP1[1]} {DISP1[0]} {DISP1[0]}
visible TRUE line_width 1 plot_line_width 0 red 65535 green 65535 blue 65535
current_design {TOP_attributes.db:TOP} # Use uniquify to resolve multiple design instances uniquify # Save the design write -format db -hierarchy -output {./db/TOP_before_compile.db} [list {TOP_attributes.db:TOP}] # Delete designs for the optional exercises remove_design [find design {*}] # Read in TOP_attributes (from Chapter 7) read_file -format db [list {./db/TOP_attributes.db}] # Run check design to recreate the warning message about multiple # design instances check_design current_design {TOP_attributes.db:CONVERTOR} # Map design CONVERTOR to gates compile -map_effort medium set current_design {TOP_attributes.db:CONVERTOR} # Place the dont_touch attribute on design CONVERTOR set_dont_touch {TOP_attributes.db:CONVERTOR} current_design {TOP_attributes.db:TOP} # Rerun check design check_design # Delete designs to run optional exercise on ungroup remove_design [find design {*}] # Read in TOP_attributes (from Chapter 7) read_file -format db [list {./db/TOP_attributes.db}] # Rerun check design to recreate the warning message on multiple
# design instances check_design current_design {TOP_attributes.db:CONVERTOR} # Set the ungroup attribute on design CONVERTOR set_ungroup {TOP_attributes.db:CONVERTOR} # Rerun check design set current_design {TOP_attributes.db:TOP} check_design quit
remove_design -all /* Read in the optimized design */ read -format db {./db/compile.db} create_schematic -size infinite -gen_database current_design = compile.db:TOP create_schematic -size infinite -symbol_view create_schematic -size infinite -hier_view /* Generate the area and constraints reports */ report_area report_constraints /* Set new constraints */ create_clock -name CLK -period 23 -waveform { 0 11.5 } { CLK } /* Reoptimize the design and explore the design space */ compile -map_effort medium -verify -verify_effort low \ -boundary_optimization current_design = compile.db:TOP create_schematic -size infinite -schematic_view \ -symbol_view -hier_view /* Generate area and constraints reports on the optimized design */ report_area report_constraints /* Save the optimized design */ write -format db -hierarchy -output ./db/TOP_compiled.db \ {compile.db:TOP} /* Delete designs */ remove_design find(design,*) /****** Optional Exercise - Instance-Specific Hierarchy ******/ read -format db {./db/TOP_before_compile.db} /* set current design to TOP */ current_design = TOP
/* set current instance to CONVERTOR_CKT TOP/U3 */ current_instance U3 /* set current instance to CONVERTOR_1 TOP/U3/U7 */ current_instance U7 report_net set_load 2.5 A0 report_net current_instance . current_instance .. current_instance quit
report_area report_constraint # Save the optimized design write -format db -hierarchy -output {./db/TOP_compiled.db} [list {compile.db:TOP}] # Delete designs remove_design [find design {*}] # ****** Optional Exercise - Instance-Specific Hierarchy ****** read_file -format db [list {./db/TOP_before_compile.db}] # set current design to TOP set current_design TOP # set current instance to CONVERTOR_CKT TOP/U3 current_instance U3 # set current instance to CONVERTOR_1 TOP/U3/U7 current_instance U7 report_net set_load 2.5 A0 report_net current_instance . current_instance .. current_instance quit
/* Show timing to a specific pin */ report_timing -path full -delay max -max_paths 10 -nworst 1 \ -from find( pin, { U4/CLOCK_AM_PM } ) -to find( pin, \ { U5/COMPARE_IN } ) /* Set current_design to CONVERTOR_0 */ current_instance U4 create_schematic -size infinite -symbol_view -reference
create_schematic -size infinite -hier_view -reference create_schematic -size infinite -schematic_view -reference current_instance ../U5 create_schematic -size infinite -symbol_view -reference create_schematic -size infinite -hier_view -reference create_schematic -size infinite -schematic_view -reference current_instance .. current_design TOP_compiled.db:CONVERTOR_0 create_schematic -size infinite -symbol_view create_schematic -size infinite -hier_view create_schematic -size infinite -schematic_view /* Set default schematic option to size A */ designer = Mike company = Synopsys link_library = class.db target_library = class.db symbol_library = class.sdb default_schematic_options = -size A hdlin_source_to_gates = off /* Recreate schematic on size A sheets */ create_schematic -size a -schematic_view -symbol_view \ -hier_view /* Set default schematic option to size infinite */ designer = Mike company = Synopsys link_library = class.db target_library = class.db symbol_library = class.sdb default_schematic_options = -size infinite hdlin_source_to_gates = off create_schematic -size infinite -schematic_view \ -symbol_view -hier_view /* Perform a check_design and check_timing on design TOP */ current_design TOP_compiled.db:TOP check_design check_timing quit
# Show timing to a specific pin report_timing -path full -delay max -max_paths 10 -nworst 1 \ -from [find pin [list {U4/CLOCK_AM_PM}]] -to [find pin \ [list {U5/COMPARE_IN}]] # Set current_design to CONVERTOR_0 current_instance {U4} current_instance {../U5} current_instance {..} current_design {TOP_compiled.db:CONVERTOR_0}
# Perform a check_design and check_timing on design TOP current_design {TOP_compiled.db:TOP} check_design check_timing quit
B
UNIX and the Windows NT OS for Synthesis Products B
The Synopsys synthesis products are designed to operate similarly on UNIX systems and Windows NT systems. With care and third-party tools, the same designs and script les can be made to run in all environments; however, the underlying operating systems do impose some differences. This appendix summarizes those differences and discusses their impact on the operation of the Synopsys synthesis tools. This appendix includes the following sections: Specifying Files Using Environment Variables Location of Files and Directories Using Operating System Supplied Commands
Because a command can modify your input before the command accesses the operating system, the differences between, for example, path specications under the Windows NT operating system and UNIX might not apply when you are specifying arguments to that command. Specically, dc_shell is designed to accept path names in the UNIX style whether it is running on UNIX or the Windows NT operating system. However, the dc_shell command sh passes arguments to an operating system supplied command. That operating system supplied command might have requirements that differ from the dc_shell requirement. Test your specic environment to determine the correct combinations.
Specifying Files
How you specify a le depends on whether you are using a UNIX system or a Windows NT system and whether you are operating within the dc_shell or using third-party utilities.
..\designers\my_design.db
The UNIX paths are relative to the local le system root, and the Windows NT operating system paths are relative to the root of a drive or partition. Under both systems, les located on a le server can be mounted to appear as part of the local le system. Under UNIX, the remote les appear as a portion of the local le system, whereas under the Windows NT operating system, the remote les appear under a drive letter that is dened when the remote le system is imported.
Windows NT
In addition to the command-line syntax illustrated here, with the Windows NT operating system, several environment variables are set by using an installation wizard when a product is installed, or they use the Control Panel.
$SYNOPSYS Platform-independent
admin
aux
doc
dw
interfaces
libraries packages
<arch1>
<arch2>
Note that the UNIX operating system versions contain a directory aux. Figure B-2 illustrates the Windows NT OS version.
%SYNOPSYS% Platform-independent
admin
auxx
doc
dw
interfaces
libraries packages
<arch1>
<arch2>
Under the Windows NT operating system, the directory equivalent to aux is auxx.
because the commands are made available by the operating system, the availability, syntax, and semantics of the actual commands might differ. Here are some examples: The UNIX command set is unavailable on most Windows NT systems The command lpr is available on both UNIX and Windows NT operating systems and performs the same function; however, the syntax is different. Under UNIX, the syntax is as follows:
dc_shell> sh "lpr filename"
or
dc_shell-t> eval sh {lpr filename}
or
dc_shell-t> eval sh {lpr -S server -P printer filename}
The command date is available on both UNIX and Windows NT operating systems, but the semantics differ. On UNIX systems the date command is most commonly used to report the current date and time, whereas on Windows NT systems, the command is used to change the date and time maintained by the system clock.
For some applications, you might want to supplement the commands supplied as part of the Windows NT system with the third-party product MKS Toolkit.
UNIX and the Windows NT OS for Synthesis Products B-7
C
Creating a Home Directory in the Windows NT Operating System C
To run the tutorial under the Windows NT operating system, you set up the tutorial directory structure in your home directory. In order to do so, you must dene a home directory or a folder. This appendix explains how to create a home directory. To create a home directory, you must have administrator capability. To create a home directory, 1. Log on to the Windows NT OS as administrator. 2. Double-click the My Computer icon. 3. Double-click the C: drive to display its contents. 4. Open the File menu: choose New, then choose Folder. 5. Name the new folder users.
6. Open the Start menu, choose Programs, then choose Administrative Tools, and nally choose User Manager. 7. Locate your name in the User Accounts List, and double-click it. If you do not nd your name in the User Accounts List, open the User menu and choose New User. To create a new user for yourself, ll in the elds of the User Properties dialog box shown in Figure C-1, then click Prole at the bottom of the screen.
The User Environment Prole dialog box appears, shown in Figure C-2 on page C-3. 8. In the Home Directory section of the User Environment Prole dialog box, enter the Local Path:
C:\users\%username%
9. Click OK to save the information, and close the User Environment Prole dialog box.
10. Click OK to close the User Properties dialog box, then click the close box to close the User Manager window. 11. Click the Users folder. This is your home directory.
D
Synthesis Programs and Tools D
Synthesis is the process of transforming a circuit dened at one level of abstraction into a lower-level denition. During this transformation, user-dened constraints dene the goal of Design Compiler synthesis. Design Compiler software offers Architectural synthesis based on a hardware description language (HDL) Logic synthesis based on a gate-level description
Figure D-1 shows the synthesis of an HDL format, such as Verilog or VHDL, to a gate-level format.
DesignWare
Cell Library
Existing designs described in gate-level netlist formats can be reoptimized by using gate-level optimization. Figure D-1 shows the following tools and libraries: Design Analyzer Consists of a graphical menu-based interface to the Synopsys tool set. HDL Compiler products Read and optimize Verilog and VHDL designs at the architectural level. A design is optimized before the gate-level netlist is passed to Design Compiler. Architectural-level optimization includes these processes: - Arithmetic optimization
Synthesis Programs and Tools D-2
- Timing-and-area-based resource sharing - Subexpression removal - Constraint-driven resource selection and parameterization - Inference of synthetic parts (DesignWare) For more information about HDL Compiler products, see the VHDL Compiler Reference Manual and the HDL Compiler for Verilog Reference Manual. DesignWare Provides a library of operator-level components, such as adders and multipliers. HDL Compiler selects the correct type of component, based on the HDL description and your area and timing goals. DesignWare Developer Creates DesignWare libraries. Design Compiler products Optimize designs at the gate level. You can dene the designs in a variety of HDL formats and gate-level netlist formats. The optimization produces a gate-level netlist by using cells selected from your target cell library. Cell Library Library of cells, such as AND and OR cells, used by Design Compiler. For FPGA Compiler, this library can contain more complex cells, such as Xilinx congurable logic blocks (CLBs) and IOBs. Library Compiler Creates cell libraries.
Index
A
ALARM 6-4, 6-8 alarm clock design block diagram 6-3 blocks in 6-1 hierarchical structure of 7-7, 7-48 ALARM_BLOCK, design block 6-4 ALARM_COUNTER 6-4 ALARM_HRS 6-8, 6-9 ALARM_MIN 6-8, 6-9 ALARM_SM_2 design block 6-9 input signals to 6-9 ALARM_STATE_MACHINE 6-4 alias, creating for tutorial iin UNIX 5-11 analysis reports 10-18, 10-56 analyze, command read command, difference 3-3 tutorial exercise 7-8, 7-50 see also analyzing analyzing analysis reports, generating 10-18, 10-56 area report 9-17 constraint report 9-18 designs, reading in 7-23 schematics, using 10-39 selecting le names for 7-11 window for 7-10 area report 9-17 area report, analyzing 9-17 area versus time 9-20 arrival time, signal, determining 10-39 attribute reports 10-5, 10-48 attributes attribute reports, generating 10-5, 10-48 dened 3-7 Design Analyzer, setting with 3-8 design environment, specifying 7-29, 7-58 dont_touch 9-28 drive strength 3-7, 7-30, 7-59 load 3-8, 7-35, 7-62 operating conditions 7-40, 7-41 operating environment 3-8 removing constraints 8-4 reporting 10-5, 10-48 setting 3-7, 3-8, 7-29, 9-44 wire load 7-39, 7-66 wire load model 7-39
B
back-annotation, dened 10-14, 10-53 background, optimization in 9-8 boundary optimization 9-8 bus
IN-1
report 10-7 setting bit load values 7-37 setting load 7-36, 7-62 bus report 10-49 buttons gure of 2-6 level 2-7 views, changing 2-10
C
cell report 10-9, 10-10, 10-49 check_design command 3-13 checking a design command for 3-13, 8-27, 8-30 Design Errors window 8-14 objects, locating after 3-14 running check_design 8-13, 8-31 checking out licenses 2-20 circuit designs used for 1-7 class.db 5-27 class.sdb 5-27 CLK 6-4, 6-6 CLOCK 6-10 clocks combinational design, in 8-7, 8-8, 8-26, 8-28 constraints, dening for 8-8 dening 8-7, 8-8, 8-26, 8-28 Command Window 7-21 displaying 2-17 gure of 2-18 purpose of 2-17 using 2-17 command-line interface Design Analyzer 2-17, 2-19 entering commands in 2-19 using without X Window System 1-11 commands analyze 3-3 command-line commands 2-19 compile 9-6
dc_shell 4-4 Design Analyzer, starting 2-3, 7-5 elaborate 3-3 quit 2-5, 7-43, 8-26 read 3-4 set_dont_touch 9-5, 9-35 set_dont_touch command 9-28 set_drive and set_driving_cell, difference 7-32, 7-59 set_driving_cell 7-32, 7-59 ungroup 9-5, 9-31, 9-35 UNIX, using 4-8 COMPARATOR, design block 6-8 COMPARE_IN 6-10 compile hierarchical 9-5, 9-34 optimization stages involved 9-5 report, options 10-15, 10-54 using dc_shell 9-34 see also optimization compile options report 10-15, 10-49, 10-54 constraints affect when unrealistic 8-5 and goals 8-6 choosing realistic 8-5 dened 8-1, 8-5 delay 8-11, 8-28, 8-29 design rule 3-9, 8-5 optimization, dened 3-9 optimization, setting in Design Analyzer 3-9 preliminary tasks in dc_shell 8-4 preliminary tasks in Design Analyzer 8-3 removing 8-4 report 9-18 setting for clock 8-8 setting to optimize the design 8-1 setting, using Design Analyzer 8-7 test constraints 3-9 tightening, effect of 9-22 windows for setting 3-9 CONVERTOR design 6-10
IN-2
resolving multiple instances of 8-23, 8-34 CONVERTOR block 7-16 CONVERTOR_CKT design block 6-10 instantiated designs 6-10 creating a clock object 8-7, 8-8, 8-26, 8-28 creating tutorial directories in UNIX 5-4 in Windows NT OS 5-5 critical path, viewing 10-26 customizing appearance, interface 5-23, 5-25
D
.db les, location in tutorial 7-3 reading designs .db format 3-4 dc_shell command examples 4-6 command output in Windows NT 4-7 command-line interface 1-13 commands 4-4 compiling a design using 9-35 displaying command list 4-6 executing script les in 4-9 executing UNIX commands in 4-8 generating reports in 9-40 how to use 4-1 path names B-2 quitting 4-4 reading in the lowest hierarchy 7-51 reading in the PLA design 7-54 recompiling a design using 9-40 running commands in Design Analyzer 4-5 running commands in UNIX 4-5 running UNIX commands in 4-8 saving the design 7-49, 9-43 starting in a command window 7-47 starting in Windows NT OS 4-3 tightening design constraints 9-39 when to use 1-12
dene_design_lib 5-27, 5-28 dening clock objects 8-7, 8-8, 8-26, 8-28 delay deriving 8-6 deriving from netlist 8-6 input, setting 8-28 output, setting 8-11, 8-29 reporting path timing 10-23 setting 8-12 tracing critical path 10-26 delay constraints deriving 8-6 setting on output ports 8-12 Design Analyzer changing appearance of 5-23, 5-25 Command Window 1-12, 2-17 command-line interface 2-17 displaying multiple views 10-41 graphical user interface, overview 1-12 how to use 3-1 Level buttons 2-7 menu bar 2-6 message area 2-7 Next button 8-16 path name 5-12 quitting 2-3, 2-5, 7-5 running remotely 2-5, 3-2 saving the design 7-42 Show button 8-16 starting 2-3 starting from within dc_shell 2-4 starting in UNIX 2-3, 7-5 starting in Windows NT 2-3, 7-5 starting in Windows NT OS 7-5 starting in Wndows NT OS 2-3 View buttons 2-6 views 2-8 when to use 1-12 window 2-6 Design Compiler 1-1 dened 1-1
IN-3
platforms it runs on 1-14 design environment 7-1 setting using dc_shell 7-43 Design Errors window 3-13 design ow 1-7 design instances, resolving multiple introduction 8-22, 8-33 using set_dont_touch 9-28 using ungroup 9-31 using uniqify 8-34 using uniquify 8-23 design object, nding source of error 3-14 design rule constraints 8-5 design rules, dened 3-9 design space, exploring 9-20 design_analyzer command 2-3, 7-5 designer, variable 5-23, 5-25 designs alarm clock 6-1, 7-7, 7-48 ALARM_BLOCK 6-3 analyzing 7-23 checking 8-27, 8-30 combinational, creating clock for 8-7, 8-8, 8-26, 8-28 determining constraints 8-6 elaborating 7-55 entry formats supported 1-10 evaluating 9-15 exploring design space 9-20 hierarchical example 6-1 icons for formats 2-11 interpreting 9-15 multiple design instances 8-22, 8-33, 9-27 MUX 6-8 pushing into 2-12 reading in 3-3, 7-23, 7-54 recompiling 9-23 saving 3-4, 7-43, 9-27 setting goals for 8-6 space curve 9-21 specifying environment of 7-29, 7-58
style 1-10 tutorial design 6-1 tutorial les 5-1 Designs view 9-13 designs, tutorial ALARM_BLOCK 6-3 ALARM_COUNTER 6-5 ALARM_SM_2 6-9 ALARM_STATE_MACHINE 6-4 COMPARATOR 6-8 CONVERTOR_CKT 6-10 TIME_BLOCK 6-6 directories, contents of appendix_A 5-9 db 5-7 verilog 5-8 vhdl 5-8 directories, creating structure of 5-5 disk, saving design to 7-43 displaying errors 8-15 multiple windows 10-41 pin values 10-39 dont_touch attribute 9-28 drive strength changing 7-34 setting 3-7, 7-30, 7-32, 7-59 using drive_of 7-32, 7-59 using set_driving_cell 7-32, 7-59 drive strength, setting 7-59 drive_of command 7-32, 7-59
E
elaborate command 3-3 elaborating VHDL les 7-24, 7-55 enlarging view 2-14, 2-16 Environment tab for setting the path in Windows NT OS 5-12 environment variables
IN-4
dened 5-14 setting in Windows NT OS 5-13, 5-15 system-wide variables 5-13 user variables 5-13 environment, specifying 7-29, 7-58 errors nding in schematic 8-15 generating with check_design 8-13, 8-31 locating design object for 3-12 evaluating design 9-15 Execute File window 3-17 exiting, see quitting exploring design space 9-20
view, generating 2-15 hierarchy report 10-18, 10-57 hold times, xing violated 8-10 HOURS_FILTER 6-10 HRS 6-4, 6-6
I
icons 2-11 include command 4-9 input delays clock edge 8-28 clocks, real and virtual 8-28 setting 8-28 input formats choosing 7-2 listed 1-10 installation directory 5-4 interface choosing 7-3 customizing appearance of 5-23, 5-25 quitting Design Analyzer 2-5 quitting Design Compiler 4-4, 7-68, 8-35 interpreting a design 9-15
F
le formats 7-19, 7-20 les and directories location 1-14 x hold option 8-10 ow, design process 1-7
G
gate-level optimization, see optimization generating reports 10-48, 10-56 analysis reports 10-18 attribute reports 10-5 how to 3-14, 9-15
J
jumping to design object 3-12
H
HDL formats, reading in 3-3 hierarchical design compiling 9-5, 9-34 dened 7-6, 7-48 reading in 7-6, 7-48 reading in using dc_shell 7-47 hierarchy alarm clock design, of 6-2 changing in Design Analyzer 2-7 reporting 10-19, 10-57
L
layers in schematic 8-18 Level buttons 2-7, 2-8 libraries class.db 5-27 class.sdb 5-27 License Users window 2-21 licenses 2-20 managing 2-20 viewing users 2-21
IN-5
link_library, variable 5-27 load values setting 7-62 setting for buses 7-36, 7-62 setting for output ports 7-35, 7-61 load_of command 7-35, 7-62
M
managing licenses 2-20 menus differences between UNIX and Windows NT 2-7 menu bar 2-6 message area 2-7 MINS 6-4, 6-6 mouse selecting designs 7-23 multiple design instances alternatives to uniquify 9-27 CONVERTOR, example of 8-23, 8-34 methods of resolving 8-22, 8-33 resolving, introduction 8-22, 8-33 using set_dont_touch 9-28 using ungroup 9-31 using uniqify 8-34 using uniquify 8-23 MUX design block 6-8 input signals for 6-8
N
net report 10-12, 10-49, 10-52 Next button 8-16
operating environment dening 3-8 menus and windows for setting 3-8 setting, tutorial 7-29, 7-58 operating systems supported 1-15 optimization 1-7 background mode 9-8 boundary 9-8 Design Analyzer window for 3-10 hierarchical compile 9-5, 9-34 initiating 9-9 introduction 9-1 phases, list of 9-5, 9-34 preparation for, using dc_shell 9-3 preparation for, using Design Analyzer 9-2 specifying goal of 8-1 stages during compilation 9-5 tradeoffs, area for time 9-20 tutorial exercise 9-6, 9-35 using dc_shell 9-35 window 3-11 optimization constraints 3-9 optional exercises alternatives to uniquify 9-27 resolving multiple instances 9-28, 9-31 options, when generating reports timing reports 10-21 output delays clock edge 8-11, 8-29 clocks, real and virtual 8-11, 8-29 setting 8-11, 8-29 output formats supported 1-10 overview, design ow 1-7
P
path setting for in Windows NT OS 5-12 UNIX 5-10 path delay, selecting for report 10-23 PATH statement
O
operating conditions 7-40, 7-66 specifying 7-40, 7-41 window for setting 7-40
IN-6
for Windows NT OS 4-3 path, setting for tutorial 5-12 pin_name_layer command 8-19 pins names, displaying 8-18 values, displaying 10-39 PLA design reading in 7-16 platforms, supported 1-16 point timing report 10-29, 10-62 ports, selecting 7-30 printing schematics 10-44 problems, locating in schematic 3-14 process, operating conditions 7-40 pushing into a design 2-12
Q
quitting Design Analyzer 2-5, 7-43 Design Compiler 4-4, 7-68, 8-35
R
reading designs analyze and elaborate, difference 3-3 analyze and elaborate, tutorial exercise 7-8, 7-50 commands for 3-3 dened 3-3 hierarchical design 7-6, 7-48 read command for special formats 3-4 VHDL package 7-7 reading in designs from the lowest hierarchy 7-8 remote session 2-5, 3-2 removing constraints 8-4 report options full path timing 10-21 point timing 10-30 report window
gure of 3-14 tutorial exercise 9-15 reports analysis 9-25, 10-18, 10-56 area 9-17 attribute 10-5 bus 10-6, 10-49 cell 10-10, 10-49 compile options 10-15, 10-49, 10-54 constraint 9-18 generating 3-14, 9-15, 9-25, 10-5, 10-48 hierarchy 9-33, 10-19, 10-57 net 10-12, 10-49, 10-52 options when generating 10-21 path delay, selecting 10-23 point timing 10-29, 10-62 timing 10-21, 10-58 resolving multiple instances set_dont_touch 9-28 ungroup 9-31 resource sharing 9-11 returning licenses 2-20 root directory 5-4 running script les 3-17
S
Save File window 3-6 saving designs 3-4, 7-43 Schematic view 2-13, 3-13, 10-2, 10-41 schematic view 10-41 schematics analysis, using for 10-39 critical path, viewing 10-26 enlarging portion of 2-14 generating 3-12, 10-2 printing 10-44 resizing (re-creating) 10-45 specifying layers in 8-18 script les cmpldes.1.script A-15
IN-7
dc_shell command to run 4-9 dened 3-16 Execute File window 3-16 executing using dc_shell 4-9 using Design Analyzer 1-15, 4-9 running in Design Analyzer 3-16, 4-9 setenv.script A-3 tutorial exercises A-15, A-20 tutorial exercises, for A-3 search order, setup les 5-19 search_path variable 5-27 selecting designs 7-23 set_dont_touch command 9-28, 9-35 set_drive 7-32, 7-59 set_driving_cell 7-32, 7-59 SET_TIME 6-6 setting attributes 3-7 constraints 8-1 drive strength 7-32, 7-59 load, bits of a bus 7-37 operating environment 3-8 path in .cshrc 5-12 wire load 7-39, 7-66 setup le creating 5-18 creating in your home directory for UNIX 5-22 creating in your home directory for Windows NT 5-24 design-specic 5-26 home directory 5-22 search order 5-19 system-wide 5-21 see also startup le sheet sizes, printing 10-44 Show button 8-16 signal arrival time, determining 10-39 Specifying les B-2 starting Design Analyzer 2-3
starting Design Analyzer 2-3, 7-5 startup le affecting Design Analyzer appearance 5-22, 5-25 creating 5-24 search order 5-19 subdesigns, dened 7-6 Symbol view displaying 7-30 symbol_library variable 5-27, 5-28 Synopsys variables 7-18 .synopsys_dc.setup, see startup le synopsys_dc.setup le 3-2 synthesis description D-1 gure of D-2 process 1-7 tools for D-1 see also optimization Synthesis tools, directory structure B-5 synthetic modules 9-11
T
T button 2-7, 2-9 target library 7-40, 8-1 dening 3-2 variable for 3-2, 5-27 target_library 3-2 technology library, see target library temperature, operating conditions 7-40 test constraints 3-9 Text View button 2-7, 2-9 time versus area 9-20 TIME_BLOCK, design block 6-6 TIME_COUNTER 6-6 TIME_HRS 6-8, 6-9 TIME_MIN 6-8, 6-9 TIME_STATE_MACHINE 6-6 timing
IN-8
affect on area results 9-22 path delay, selecting for report 10-23 report 10-21, 10-58 TOGGLE_ON 6-10 tools, synthesis D-1 TOP design, reading in 7-28, 7-57 tutorial creating alias for 5-11 design les, location of 5-4 setting up 5-1 tutorial subdirectories, naming conventions 5-5, 5-6
U
ungroup command 9-31, 9-35 uniquify alternatives to 9-27 command, using 8-23, 8-34 UNIX and Windows NT environment variables B-4 tools using B-4 UNIX commands copying tutorial directories 5-5 running in dc_shell 4-8 UNIX systems platform requirements 1-11 starting dc_shell in 7-45 User Environment Prole dialog box C-2 user interfaces dc_shell 1-10 Design Analyzer 1-10 strategies for using both 1-12 User Properties dialog box C-2 Using Operating System Supplied Commands B-6 usr/synopsys directory 5-4
variables 7-18 company 5-22, 5-25 dene_design_lib 5-27 designer 5-23, 5-25 link_library 5-27 search_path 5-27 symbol_library 5-27 target_library 3-2, 5-27 view_background 5-23, 5-25 .vhd les 7-3 VHDL design analyzing 7-9 elaborating 7-12 reading in dc_shell 7-50 VHDL package, reading 7-7 View Style window 8-18 view_background variable 5-23, 5-25 view_read_le_sufx 7-18 views, Design Analyzer buttons in 2-6, 2-10 Designs View 2-9 enlarging view 2-14 Hierarchy View 2-15 Schematic View 2-13 Schematicview 10-4 Symbol view 2-12 violated hold times, xing 8-10 voltage, operating conditions 7-40
W
warnings, locating design object for 3-12, 8-15 WCCOM, operating conditions 7-42 windows Analyze File 7-10 compile log 9-12 Design Analyzer, for UNIX 7-26 Design Analyzer, for Windows NT 7-26 Design Errors 3-13 displaying multiple 10-41 Elaborate Design 7-24
V
.v les 7-3
IN-9
Execute File 3-16 Load 7-36 net report 10-13 Report 9-15, 10-18 Report Output 10-6 Save File 3-6 Wire Load 7-39 Windows NT creating a home directory C-1 platform requirements 1-11 starting dc_shell in 7-46 UNC names and drive letters B-3 User Environment Prole dialog box C-2 User Properties dialog box C-2 using UNC path names B-3
wire load 7-39, 7-66 write command 3-5 writing designs to disk 3-4, 3-5, 7-43
X
X Window System, command-line interface 1-11
Z
zooming magnifying view 2-14 restoring full view 2-15
IN-10