Eetop.cn Getting Started With Hercules
Eetop.cn Getting Started With Hercules
Hercules™ Tutorial
Version W-2004.12-SP1, April 2005
Copyright Notice and Proprietary Information
Copyright 2005 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.
Right to Copy Documentation
The license agreement with Synopsys permits licensee to make copies of the documentation for its internal use only.
Each copy shall include all copyrights, trademarks, service marks, and proprietary rights notices, if any. Licensee must
assign sequential numbers to all copies. These copies shall contain the following legend on the cover page:
“This document is duplicated with the permission of Synopsys, Inc., for the exclusive use of
__________________________________________ and its employees. This is copy number __________.”
Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of America.
Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader’s responsibility to
determine the applicable regulations and to comply with them.
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, AMPS, Arcadia, C Level Design, C2HDL, C2V, C2VHDL, Cadabra, Calaveras Algorithm, CATS, CSim, Design
Compiler, DesignPower, DesignWare, EPIC, Formality, HSPICE, Hypermodel, iN-Phase, in-Sync, Leda, MAST, Meta,
Meta-Software, ModelAccess, ModelTools, NanoSim, OpenVera, PathMill, Photolynx, Physical Compiler, PowerMill,
PrimeTime, RailMill, Raphael, RapidScript, Saber, SiVL, SNUG, SolvNet, Stream Driven Simulator, Superlog, System
Compiler, Testify, TetraMAX, TimeMill, TMA, VCS, Vera, and Virtual Stepper are registered trademarks of Synopsys, Inc.
Trademarks (™)
abraCAD, abraMAP, Active Parasitics, AFGen, Apollo, Apollo II, Apollo-DPII, Apollo-GA, ApolloGAII, Astro, Astro-Rail,
Astro-Xtalk, Aurora, AvanTestchip, AvanWaves, BCView, Behavioral Compiler, BOA, BRT, Cedar, ChipPlanner, Circuit
Analysis, Columbia, Columbia-CE, Comet 3D, Cosmos, CosmosEnterprise, CosmosLE, CosmosScope, CosmosSE,
Cyclelink, Davinci, DC Expert, DC Expert Plus, DC Professional, DC Ultra, DC Ultra Plus, Design Advisor, Design
Analyzer, Design Vision, DesignerHDL, DesignTime, DFM-Workbench, DFT Compiler, Direct RTL, Direct Silicon Access,
Discovery, DW8051, DWPCI, Dynamic-Macromodeling, Dynamic Model Switcher, ECL Compiler, ECO Compiler,
EDAnavigator, Encore, Encore PQ, Evaccess, ExpressModel, Floorplan Manager, Formal Model Checker,
FoundryModel, FPGA Compiler II, FPGA Express, Frame Compiler, Galaxy, Gatran, HDL Advisor, HDL Compiler,
Hercules, Hercules-Explorer, Hercules-II, Hierarchical Optimization Technology, High Performance Option, HotPlace,
HSPICE-Link, iN-Tandem, Integrator, Interactive Waveform Viewer, i-Virtual Stepper, Jupiter, Jupiter-DP, JupiterXT,
JupiterXT-ASIC, JVXtreme, Liberty, Libra-Passport, Library Compiler, Libra-Visa, Magellan, Mars, Mars-Rail, Mars-Xtalk,
Medici, Metacapture, Metacircuit, Metamanager, Metamixsim, Milkyway, ModelSource, Module Compiler, MS-3200,
MS-3400, Nova Product Family, Nova-ExploreRTL, Nova-Trans, Nova-VeriLint, Nova-VHDLlint, Optimum Silicon,
Orion_ec, Parasitic View, Passport, Planet, Planet-PL, Planet-RTL, Polaris, Polaris-CBS, Polaris-MT, Power Compiler,
PowerCODE, PowerGate, ProFPGA, ProGen, Prospector, Protocol Compiler, PSMGen, Raphael-NES, RoadRunner,
RTL Analyzer, Saturn, ScanBand, Schematic Compiler, Scirocco, Scirocco-i, Shadow Debugger, Silicon Blueprint, Silicon
Early Access, SinglePass-SoC, Smart Extraction, SmartLicense, SmartModel Library, Softwire, Source-Level Design,
Star, Star-DC, Star-MS, Star-MTB, Star-Power, Star-Rail, Star-RC, Star-RCXT, Star-Sim, Star-SimXT, Star-Time, Star-XP,
SWIFT, Taurus, Taurus-Device, Taurus-Layout, Taurus-Lithography, Taurus-Process, Taurus-Topography, Taurus-Visual,
Taurus-Workbench, TimeSlice, TimeTracker, Timing Annotator, TopoPlace, TopoRoute, Trace-On-Demand, True-Hspice,
TSUPREM-4, TymeWare, VCS Express, VCSi, Venus, Verification Portal, VFormal, VHDL Compiler, VHDL System
Simulator, VirSim, and VMC are trademarks of Synopsys, Inc.
Service Marks (SM)
MAP-in, SVP Café, and TAP-in are service marks of Synopsys, Inc.
SystemC is a trademark of the Open SystemC Initiative and is used under license.
ARM and AMBA are registered trademarks of ARM Limited.
All other product or company names may be trademarks of their respective owners.
ii
Contents
iii
Licensing Hercules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Getting Hercules to Run: Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
How to Set Up Your Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.
An Error-Free Design for DRC
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Learning Method: the Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Layout Editors in This Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Overview of the Runset File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
The Runset File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Example of a Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Runset Header Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
LAYOUT_PATH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
INLIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
BLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
OUTLIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
OUTPUT_BLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
GROUP_DIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Runset Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
WIDTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Preprocessing Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
CHECK_PATH_90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Layer Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
SNAP Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ASSIGN_LAYERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
GRID Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
ASSIGN_LAYERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
CHECK_45. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
DRC Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
EXTERNAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Running Hercules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
iv
How to Run Hercules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Run File Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
What if My Output Is Not Correct? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Explanation of Error and Summary Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
AD4FUL.RESULTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
AD4FUL.LAYOUT_ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
AD4FUL.sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Design Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hierarchical Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Horizontal Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Efficient Versus Inefficient Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Explanation of Output Tree Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Hierarchy Tree Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
AD4FUL.tree0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
ADFUL.tree1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
AD4FUL.tree3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Miscellaneous Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
AD4FUL.tech and AD4FUL.vcell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
evaccess/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
evaccess/AD4FUL.ev. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.
Single Design Error for DRC
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Learning Objectives for This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Running Hercules on the Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Output Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
AD4FUL.LAYOUT_ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Geometric Representation of Error . . . . . . . . . . . . . . . . . . . . . . . . . 52
AD4FUL.sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Running Enterprise and Viewing Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
How to run Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
The initial Enterprise Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Viewing the EX_ADDER_2 Library File Names . . . . . . . . . . . . . . . . . . . . 56
EX_ADDER Input and Output Files . . . . . . . . . . . . . . . . . . . . . . . . . 58
v
Viewing Data in Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Layout Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Output Hierarchy Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.
A Complete Design for DRC
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Learning Objectives for This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A Summary of Design Rule Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Operations Allowed by Hercules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Examining the Runset Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Writing Output Results to Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Error Hierarchy Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Permanent Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Temporary Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
EXTERNAL Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
metal1 to metal1 Spacing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
metal2 to metal2 spacing - longedge Option . . . . . . . . . . . . . . . . . . 74
metal1 to metal2 spacing - touch Option . . . . . . . . . . . . . . . . . . . . . 74
INTERNAL Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
poly width - edge_45 Option. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
metal2 width - corner Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
CUT Checks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Cut poly by diffusion - cut_outside Option . . . . . . . . . . . . . . . . . . . . 76
AREA Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Via area - range Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
DATA CREATION / INTERNAL Checks . . . . . . . . . . . . . . . . . . . . . . . . . . 78
BOOLEAN poly AND tox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
BOOLEAN gate AND psel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
BOOLEAN gate NOT pgate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Internal pgate Dimension Operator . . . . . . . . . . . . . . . . . . . . . . . . . 80
Internal ngate dimension Operator. . . . . . . . . . . . . . . . . . . . . . . . . . 80
DATA CREATION Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
BOOLEAN cont NOT poly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
ENCLOSE Check. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
ENCLOSE toxcont by tox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
ENCLOSE toxcont by metal1 - touch, overlap, and parallel Options 82
vi
From Rules to Runsets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Running Hercules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Output Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Error File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Summary File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Viewing Data Creation Layers in Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Introducing Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Running Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Viewing Errors Using Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . 104
Using the Checks Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Running Hercules Inside of Hercules-Explorer . . . . . . . . . . . . . . . . . . . . 108
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.
Hercules DRC Migration
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Learning Objectives for This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
What Is Drac2He? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Using the Migration Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Learning method: Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Getting Started with Drac2He . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
-OutType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
-rc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
-N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Other Dracula Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
How to Run Drac2He . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Translation Results for Migration1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Output from First Dracula Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Dracula_DEFAULTS, OPTIONS Section . . . . . . . . . . . . . . . . . . . . . 120
OUTPUT Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
COMMENT Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
COMMENTS in the Hercules Runset . . . . . . . . . . . . . . . . . . . . . . . . 121
CASE of LAYERS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
CONJUNCTIVE and COPY Commands . . . . . . . . . . . . . . . . . . . . . 121
Output with PERM Omitted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
vii
-rc and -N Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Running Drac2He with Warnings and Errors . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Translation Results for Migration2 Example. . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Output of Translated migration2.drc File . . . . . . . . . . . . . . . . . . . . . . . . . 125
error.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.
Hercules Migration with Hercules-Explorer
Summary of Progress to This Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Generating a Runset with Drac2He . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Translation Results for Migration3 Example. . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Setting up Hercules in the Opus Environment . . . . . . . . . . . . . . . . . . . . . . . . . 133
Starting Opus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Loading Synopsys SKILL Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Opening Your Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Setting Hercules Startup Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Streaming Out from Virtuoso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Opening Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Debugging with Hercules-Explorer in the Opus Environment . . . . . . . . . . . . . 138
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
7.
Introduction to Hercules HLVS
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Before You Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Learning Method: the Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
What are LVS and Its Components? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
What is Hierarchical LVS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Hierarchical Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Layers That Make Up a Device Should Be in the Same Block . . . . 147
Hierarchical Texting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Match Text Appropriately at all Hierarchical Levels . . . . . . . . . . . . . 149
Use Different Texting Layers for Different Polygon Layers . . . . . . . . 150
viii
Hierarchical Netlist Comparison. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Designing to Benefit from Hierarchical LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Match the Hierarchy Between Schematic and Layout . . . . . . . . . . . . . . . 153
Defining the Most Beneficial Equivalence Points . . . . . . . . . . . . . . . . . . 154
Match Layout Block Name to Schematic Block Name . . . . . . . . . . . . . . . 155
Match Block Port Names for Blocks That Will Be Equivalence Points . . . 156
Difficulties Presented by Hierarchy in LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Devices Floating Out of Equivalence Points. . . . . . . . . . . . . . . . . . . . . . . 156
Port Swappability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Detecting Swappable Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Equivalence Points That are Resolved in Their Parent . . . . . . . . . . . . . . 158
Different Number of Instances of a Cell in the Layout and Schematic . . . 158
Overview of Required and Optional Input Files for LVS . . . . . . . . . . . . . . . . . . 159
The Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Example of an Actual Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
General Runset File Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Runset Header Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
General Runset Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Preprocessing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Texting Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Layer Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
LVS Netlist Extraction Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Device Layer Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Device Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Connectivity Commands and Options . . . . . . . . . . . . . . . . . . . . . . . 171
Texting Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Layout Netlisting Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Graphical Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
LVS Comparison Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
LVS Device Equate Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
LVS Comparison Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
The Schematic Netlist File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
NetTran. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Executing NetTran as a UNIX Shell Command . . . . . . . . . . . . . . . . 181
Executing NetTran by Specifying a SCHEMATIC_FORMAT . . . . . . 185
The EDTEXT File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
The Equivalence File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Running Hercules LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
How to run Hercules LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
ix
Run File Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
What if Your Output Is Not Correct? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Overview of Hercules LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
LVS Device Extraction Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
DAC96.LAYOUT_ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
DAC96.acct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
DAC96.sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
DAC96.net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Tree Files and Technology Option Files . . . . . . . . . . . . . . . . . . . . . . 207
LVS Comparison Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
DAC96.LVS_ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
DAC96.cmpsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
DAC96.cmperr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Compare Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
./lvsflow Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Progress Review of Hercules LVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
8.
HLVS Advanced Concepts
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Before You Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
General Requirements of a Strict LVS Flow Comparison . . . . . . . . . . . . . . . . 260
Comparing Top-Block Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Requiring Ports to Match by Name . . . . . . . . . . . . . . . . . . . . . . . . . 262
Requiring All Ports to be Texted . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Symmetry: Independent and Dependent Swappability . . . . . . . . . . . . . . 263
Guaranteeing Equivalence Point Matching . . . . . . . . . . . . . . . . . . . . . . . 264
Reuse of IP Blocks and Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Debugging Large Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Guidelines for a Good Equivalence File . . . . . . . . . . . . . . . . . . . . . . 265
Guaranteeing Devices Are Netlisted in the Cell Where They Are Designed 265
MOS_REFERENCE_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
PUSH_DOWN_DEVICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Setting up Error and Warning Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Hercules Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Running Hercules LVS for Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Runfile Results for Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Running Hercules LVS for Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
x
Runfile Results for Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
EQUATE, EQUIV, and COMPARE—Which Setting Takes Priority? . . . . . . . . . 296
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
9.
Hercules HLVS Debugging
Learning Objectives for This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Before You Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Quick Checklist for LVS Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
LVS Extraction Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
STEP 1: Check for Texting or Device Extraction Errors. . . . . . . . . . . . . . 298
Missing Terminals - Device Extraction Errors . . . . . . . . . . . . . . . . . 298
Too Many Terminals - Device Extraction Errors . . . . . . . . . . . . . . . . 300
Unused Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Text Opens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Text Shorts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
STEP 2: Review Your TEXT_OPTIONS, ASSIGN, and TEXT Sections, 303
STEP 3: Debug All Device Extraction Errors.. . . . . . . . . . . . . . . . . . . . . . 304
STEP 4: Rerun Your Hercules LVS Job.. . . . . . . . . . . . . . . . . . . . . . . . . . 304
LVS Comparison Debug. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
STEP 5: Review the Equivalence Points. . . . . . . . . . . . . . . . . . . . . . . . . . 304
Filtering Options Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Merging Options Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
POWER/GROUND Shorts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
LAYOUT POWER or LAYOUT GROUND Definitions Missing . . . . . 305
Schematic Globals Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
STEP 6: Fix COMPARE Errors and Rerun Hercules. . . . . . . . . . . . . . . . 306
Running Hercules LVS with Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Debugging Your Hercules LVS Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
STEP 1: Check for Texting or Device Extraction Errors. . . . . . . . . . . . . . 309
Short Finding in Hercules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Short Finding in Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . 310
Loading Extract Errors in Hercules-Explorer . . . . . . . . . . . . . . . . . . 312
Loading Text Short Coordinates Into Shortest Path Tool . . . . . . . . . 313
Setting Error Highlight Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Viewing Text Short Errors in Enterprise . . . . . . . . . . . . . . . . . . . . . . 315
Fixing the Short Between DINT15 and ICDOUT15 . . . . . . . . . . . . . 318
Using Hercules-Explorer Shortest Path for VDD/GND Short . . . . . . 319
Selecting Start and Stop Points Manually . . . . . . . . . . . . . . . . . . . . 324
xi
Correcting the VDD/GND Short . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Short Finding with FSPBTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Running Hercules with FSPBTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Viewing the Shortest Path Output . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed . . . . . 332
Step 2: Review your TEXT_OPTIONS, ASSIGN, and TEXT Sections. . . 333
Step 3: Debug All Device Extraction Errors.. . . . . . . . . . . . . . . . . . . . . . . 333
Step 4: Rerun Your Hercules LVS Job . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Step 5: Review the Equivalence Points.. . . . . . . . . . . . . . . . . . . . . . . . . . 333
Linking Hercules-Explorer to HTML Interface . . . . . . . . . . . . . . . . . 333
Reviewing the LVSDEBUG File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors . . . . . . . 339
STEP 6: Fix COMPARE Errors and Rerun Hercules. . . . . . . . . . . . . . . . 339
Where to Start Debugging LVS Errors . . . . . . . . . . . . . . . . . . . . . . . 341
Loading buf4x for Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Files Available in Hercules-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . 344
Reading the sum.block.block File . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Table on Schematic and Layout Net Relationships . . . . . . . . . . . . . 348
Highlighting Nets and Devices in the Layout . . . . . . . . . . . . . . . . . . 349
Using Information About Matched Devices Connected to Unmatched Nets
351
Analyzing the Highlight Information . . . . . . . . . . . . . . . . . . . . . . . . . 352
Loading cs_add for Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Highlighting to Find an Open Between Two Nets . . . . . . . . . . . . . . . 355
An Exercise for the Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
When Do You Rerun Hercules? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
xii
Netlisting Consistency Between Composer and Hercules-Explorer . . . . 377
Case Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Setting up Hercules in the Opus Environment . . . . . . . . . . . . . . . . . . . . . . . . . 378
Starting Opus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Loading Synopsys SKILL Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Opening Your Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Connecting Hercules-Explorer to Virtuoso and Composer . . . . . . . . . . . 380
Executing Hercules LVS in the Opus Environment . . . . . . . . . . . . . . . . . . . . . 382
Highlighting in Virtuoso and Composer . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Debugging with Hercules-Explorer Connected to Virtuoso and Composer . . . 386
Opening the sum.block.block File in Hercules-Explorer. . . . . . . . . . . . . . 386
Detailed Flow: Dracula Rule Files to Hercules LVS Output . . . . . . . . . . . . . . . 391
Hercules Parses the Output of Drac2He as Input . . . . . . . . . . . . . . . . . . 393
Reading and Converting the CDL Netlist . . . . . . . . . . . . . . . . . . . . . . . . . 394
Streaming in Your GDSII File with gdsin . . . . . . . . . . . . . . . . . . . . . . . . . 395
Device Extraction and Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Generic Differences in Hercules and Dracula Device Extraction . . . 396
MOSFET Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
BIPOLAR Device Extraction (BJTs) . . . . . . . . . . . . . . . . . . . . . . . . . 397
DIODE Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
CAPACITOR Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
RESISTOR Device Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Layout Netlist Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Generating Schematic Globals, Equates, and the Equivalence File . . . . 400
Details on Filter Option Translation . . . . . . . . . . . . . . . . . . . . . . . . . 402
Details of Merging, Gate Formation, and Filtering Options . . . . . . . 403
How the EQUIVALENCE File Is Generated . . . . . . . . . . . . . . . . . . . 404
Comparing the Layout and Schematic Netlists . . . . . . . . . . . . . . . . . . . . 405
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
xiii
The Runset File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
DRC Checks in the Runset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
LVS Checks in the Runset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Enterprise Interface Tutorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
How to Run the Hercules Runset Debugger with Enterprise . . . . . . . . . . 413
Using the Setup Window in the Runset Debugger . . . . . . . . . . . . . . . . . . 415
Filling in the Setup Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Analyzing the Errors window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Correcting Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Verifying Corrected Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Using the Watchpoints and Review Windows in the Runset Debugger . . 420
Selecting Watchpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Using the Review Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Using the Exec Window to Run Hercules and Generate Debug Data . . . 427
Using the Results Window and Debugging . . . . . . . . . . . . . . . . . . . . . . . 429
Opening the Output Library and Cell . . . . . . . . . . . . . . . . . . . . . . . . 430
Viewing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Solving the Device Extraction Errors . . . . . . . . . . . . . . . . . . . . . . . . 433
Checking the Updated Runset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Adding the DRC Checks as Debug Points . . . . . . . . . . . . . . . . . . . . 437
Solving the DRC Check Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Verifying the Debugged Runset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Virtuoso Interface Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
How to Run the Hercules Runset Debugger with Virtuoso . . . . . . . . . . . 444
Loading Synopsys SKILL Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Streaming Out the QA Cells. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Starting the Runset Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Using the Setup Window in the Runset Debugger . . . . . . . . . . . . . . . . . . 449
Filling in the Setup Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Analyzing the Errors Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Correcting Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Verifying Corrected Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Using the Watchpoints and Review Windows in the Runset Debugger . . 458
Selecting Watchpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Using the Review Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Using the Exec Window to Run Hercules and Generate Debug Data . . . 464
Using the Results Window and Debugging . . . . . . . . . . . . . . . . . . . . . . . 465
Opening the Output Library and Cell . . . . . . . . . . . . . . . . . . . . . . . . 467
xiv
Viewing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Solving the Device Extraction Errors . . . . . . . . . . . . . . . . . . . . . . . . 469
Looking at NMOS Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Index
xv
xvi
About This Tutorial
The Getting Started with Hercules Tutorial assists the first-time user of
Hercules in installing and running the Hercules software.
Using the tutorials, you quickly learn to read Hercules runset files and to debug
problems. This tutorial includes a detailed explanation of hierarchical design
structure and how Hercules takes advantage of it. You also explore advanced
Hercules applications, runset debugging information, and hints on how to get
the most out of Hercules.
This tutorial contains directions for using Hercules in the Synopsys Milkyway™
and Cadence Opus environments and includes steps for translating all data
from Cadence Dracula®. There are examples of input files, output files, and
results, all of which can be found in the ./tutor directory of your Hercules
installation. (See Chapter 1, “Installation and Setup,” for a complete
description.)
xvii
About This Tutorial
What Is Hercules?
What Is Hercules?
Hercules is a powerful software package that speeds the process of verifying
integrated circuit layouts. Hercules is not just a single tool, but a suite of
programs. Hercules can verify layout Design Rule Checks (DRC), perform
Electrical Rule Checks (ERC), extract layout structures and compare them to
an original design netlist by using the Layout versus Schematic (LVS)
application, and generate or modify data for mask preparation. The hierarchical
checking of algorithms make Hercules particularly well-suited for large and
complex IC verification.
Document Outline
The tutorial is divided into three sections.
• The first section covers the Hercules HDRC tool. It is divided into six
chapters, outlined in the last section of this preface.
• The second section covers the Hercules HLVS tool. It is divided into four
chapters.
• The last section covers the Hercules Runset Debugger tool. It has one
chapter.
xviii
About This Tutorial
Document Outline
xix
About This Tutorial
Learning Schedule
Learning Schedule
We suggest you complete the chapters of this tutorial in the order given below.
xx
About This Tutorial
Learning Schedule
Hercules in general (Chapters 1 and 2), of how Dracula and Hercules relate
to each other (Chapters 5 and 6), and, finally, learn detailed information on
Hercules (Chapter4), which you need for debugging the runsets you write.
Estimated time to complete Chapter 4: 20 minutes.
• If you do not use Dracula in any way, go from Chapter 3 directly to Chapter
4 on detailed debugging in the Hercules environment. You can then skip
Chapters 5 and 6.
Estimated completion time: 20 minutes.
xxi
About This Tutorial
Related Publications
tutorial to the Hercules Runset Debugger. Please note that you must have
an Enterprise license and Enterprise installed on your system to complete
this tutorial.
Related Publications
For additional information about Hercules, see
• Documentation on the Web, which provides HTML and PDF documents and
is available through SolvNet at http://solvnet.synopsys.com.
• Synopsys Online Documentation (SOLD), which is included with the
software for CD users or is available to download through the Synopsys
Electronic Software Transfer (EST) system
• The Synopsys MediaDocs Shop, from which you can order printed copies
of Synopsys documents, at http://mediadocs.synopsys.com.
Conventions
The following conventions are used in Synopsys documentation.
Convention Description
Regular bold User input that is not Synopsys syntax, such as a user
name or password you enter in a GUI.
xxii
About This Tutorial
Customer Support
Convention Description
Edit > Copy Indicates a path to a menu command, such as opening the
Edit menu and choosing Copy.
Customer Support
Customer support is available through SolvNet online customer support and
through contacting the Synopsys Technical Support Center.
Accessing SolvNet
SolvNet includes an electronic knowledge base of technical articles and
answers to frequently asked questions about Synopsys tools. SolvNet also
gives you access to a wide range of Synopsys online services including
software downloads, documentation on the Web, and “Enter a Call to the
Support Center.”
To access SolvNet,
1. Go to the SolvNet Web page at http://solvnet.synopsys.com.
xxiii
About This Tutorial
Customer Support
2. If prompted, enter your user name and password. (If you do not have a
Synopsys user name and password, follow the instructions to register with
SolvNet.)
If you need help using SolvNet, click SolvNet Help in the Support Resources
section.
xxiv
1
Installation and Setup1
1
Installation and Setup
Creating Directories and Getting the Files
Download
Go to the Synopsys public website (www.synopsys.com) and do the following:
1. Click the SolvNet tab (you must be a registered user).
2. Choose Software and Installation > Electronic Software Transfer.
2
Installation and Setup
Extracting the Zipped File
Untar File
At the UNIX prompt, enter:
tar xvf your_path/hercules_vW-2004.12_SYS.tar
tar xvf your_path/hercules_vW-2004.12-common.tar
3
Installation and Setup
Ensuring Your Environment Accommodates Hercules
Note:
As mentioned earlier, the setup files create the HERCULES_HOME_DIR
environment variables, which are set to the target directory you created for
your software installation, your_path.
Or, rather than edit your .cshrc or .profile files, you can add the applicable
environment variables that are defined in the hercules_setup.csh file directly to
your .cshrc, .kshrc, or .profile configuration files.
4
Installation and Setup
Licensing Hercules
Licensing Hercules
Synopsys uses the FLEXlm software for licensing. The FLEXlm documentation
is located in the /your_path/doc/ps/flexlm or /your_path/html/flexuser/ directory.
Print out the postscript file or bring up the HTML file in your browser for
complete instructions on licensing. You must start FLEXlm with a valid
Synopsys license file to be able to continue with the Hercules tutorials.
5
Installation and Setup
How to Set Up Your Account
What’s Next?
If you have completed all the steps in this chapter, you are now ready to get
started with Hercules. Before you begin Chapter 2, “An Error-Free Design for
DRC,” we suggest that you read “Document Outline” and “Learning Schedule”
sections in “About this Tutorial” for a general idea of the tutorials in this manual
and how they apply to your design environment.
6
2
An Error-Free Design for DRC2
7
An Error-Free Design for DRC
Learning Objectives for This Chapter
8
An Error-Free Design for DRC
Overview of the Runset File
9
An Error-Free Design for DRC
Overview of the Runset File
• Assignments
• Checks
Example 1 adderdrc1.ev Runset File
/* HDRC EXAMPLE RUNSET */
HEADER {
LAYOUT_PATH = ./
INLIB = EX_ADDER_1
BLOCK = AD4FUL
OUTLIB = EX_ADDER_1
OUTPUT_BLOCK = TOP_ERR
GROUP_DIR = ./run_details/group
FORMAT = MILKYWAY
}
WIDTH = 2
}
10
An Error-Free Design for DRC
Runset Header Information
LAYOUT_PATH
This variable tells Hercules where to find the Milkyway database on your
system. If you are reading a GDSII input file, which we do later in the tutorial,
this variable is not used. The path you set must match the database path you
set for your Milkyway libraries during the installation process. Your libraries
should be in the directories your_path/tutorial/Getting_Started_Hercules_DRC/
addertest*. (We use the asterisk [*] as a wildcard to represent multiple files.)
Since you will actually execute your Hercules jobs from the same directory in
which the libraries are located, the LAYOUT_PATH is set to ./ (the current
directory). This line is optional, because you can also set the LAYOUT_PATH
environment variable to point to the libraries (this would be set to your_path/
tutorial/Getting_Started_Hercules_DRC/addertest1/ for our first example).
INLIB
The INLIB variable tells Hercules the name of the input library you want to
check. EX_ADDER_1 is our first tutorial example library. If you use GDSII-
formatted data, the INLIB line needs to specify a complete path and GDSII file
11
An Error-Free Design for DRC
Runset Header Information
BLOCK
BLOCK tells Hercules the name of the top-level input structure you wish to
verify. Our four-bit adder block is named AD4FUL, and we have placed the
design in the tutorial library, EX_ADDER_1.
OUTLIB
The OUTLIB setting tells Hercules the name of the output library, which
contains all the permanent output layers (created by Hercules), error output,
and newly-created graphical layers. (Chapter 4, “A Complete Design for DRC,”
explains permanent layers.) In our example the line is redundant, because
Hercules defaults to EX_ADDER_1 (the INLIB library) as the output library if it
is not declared. Be aware that there are trade-offs to using the same library for
input and output files. We illustrate this with an alternate approach for storing
output files later on in the tutorial.
OUTPUT_BLOCK
The OUTPUT_BLOCK setting tells Hercules what to call the top-level output
structure that holds all of your error hierarchy and permanent output layer
placements. You can use this structure as an overlay on your design block to
assess quickly the results of your DRC check run. TOP_ERR is the structure
name. The setting is optional, with Hercules defaulting to the name
EV_OUTPUT if an explicit name is not declared.
GROUP_DIR
The GROUP_DIR setting tells Hercules where to place all the group files it
temporarily creates. Group files contain the data on which Hercules works
during runset execution. The setting is optional, with Hercules creating a
run_details/group/ directory in the path of the current directory as the default. In
our example the line is redundant. The directory should be local to the machine
executing Hercules.
12
An Error-Free Design for DRC
Runset Options
FORMAT
This setting indicates that we are using Milkyway-formatted input data. We
could have used GDSII as an alternative.
If you want to try using the GDS data as input:
1) Make sure that the EX_ADDER_*.GDS files are in the appropriate addertest
directories.
2) Set FORMAT to GDSII.
3) Use the INLIB path for GDSII input (described in “INLIB” on page 11).
You should try this after you have completed your first Hercules run.
Runset Options
The OPTIONS section allows you to specify global assignments for various
Hercules processes. Hercules also has a DRC_OPTIONS section. All variables
in the DRC_OPTIONS section may also be placed in the OPTIONS section.
For example, WIDTH is a DRC_OPTION, and you find it in the OPTIONS
section of the Hercules Reference Manual. To simplify our example, we have
placed the WIDTH variable under the OPTIONS section. You need to specify
an option value only when you wish to override the Hercules default. In our
example, we have selected just a few of the many Hercules options you can
use. Refer to the Hercules Reference Manual for a complete OPTIONS list.
WIDTH
This option specifies the path width, in microns, to assign to polygons
generated by checks that produce lines rather than rectangles (such as those
output by the CUT command). In this design, a setting of 2 makes it easier to
see the error polygons than the default setting of 0, which is the width of a
drawn line. The appropriate width is determined by the design rules used for
the layout, where small geometry layouts require smaller path widths.
Preprocessing Options
The PREPROCESS_OPTIONS section allows you to specify the output of
information and the setting of path grid checking options. You can set options
13
An Error-Free Design for DRC
Layer Assignments
for increased information in the block.LAYOUT_ERRORS file and the tree files.
You can also set options for path grid checking, which is done when the layers
are read during the ASSIGN section. The remainder of the grid checking is
done during the GRID_CHECK command, which is discussed later in this
tutorial.
CHECK_PATH_90
Setting this option to FALSE allows you to have 45-degree path data in your
design. If you look at our design in a layout editor, you will notice that we have
45-degree POLY paths. As a result, you must set CHECK_PATH_90 to FALSE
to avoid false errors. Although we do not explicitly write the CHECK_PATH_45
option in our runset, it is set to TRUE by default. Therefore, we are checking to
make sure these 45-degree paths are on grid.
Layer Assignments
The ASSIGN section assigns names to the database layers found in the
design. Our design uses eight polygon layers and one text layer. All input
polygon and text layers must be named and defined in this section before they
can be used in the remainder of the runset. In our example, there is a one-to-
one correlation between a layer name and a layer number.
SNAP Command
The SNAP command section forces data to conform to a grid resolution during
a run. That resolution is the number following ASSIGN_LAYERS. If a SNAP
command is not issued, Hercules automatically creates one using
ASSIGN_LAYERS and the RESOLUTION command, which defaults to the
database resolution. In this example, we have chosen to define explicitly the
SNAP command and its input (temp=snap_out; see Chapter 4, “A Complete
Design for DRC,” for an explanation of temporary files).
ASSIGN_LAYERS
We have set the SNAP command variable, ASSIGN_LAYERS=0.010, causing
all of the input layers to be snapped to a resolution of 0.010. The AREF and
SREF origins are not snapped. Refer to INSTANCE_RESOLUTION in the
14
An Error-Free Design for DRC
GRID Checks
Hercules Reference Manual for snapping of this data. Text is typically not
snapped unless the snapping of a polygon causes the text over that polygon to
move outside the boundary of the polygon. In such a case, the text is shifted so
that it is inside the polygon’s boundary, but no effort is made to place the
relocated text on a grid point.
GRID Checks
The GRID_CHECK command performs grid checking after group file creation
and must appear in the runset after the ASSIGN section. We have included two
options for this section.
ASSIGN_LAYERS
Setting ASSIGN_LAYERS to TRUE verifies that all layers in the ASSIGN
section are grid checked to the database default. The grid check functions that
are performed on the ASSIGN layers depend on the rest of the options list. A
layer in the ASSIGN section may be grid checked differently from the rest of the
ASSIGN layers by assigning that layer a different GRID_CHECK value.
CHECK_45
Setting the CHECK_45 value to TRUE verifies that all layout data is either
orthogonal or at 45-degree line angles. This is a requirement for many DRC
rule sets. With this option in the file, Hercules performs a line angle check and
reports the results.
DRC Checks
For our basic example, we have one command to check a DRC violation,
EXTERNAL.
EXTERNAL
The EXTERNAL check is a spacing check between adjacent metal1 polygons
that reside on the same layer (Figure 1). The rule creates an error polygon for
any metal1 polygons that are spaced less than 3 µm apart. Specifying a
number in parentheses, for example, (101), at the end of the statement results
15
An Error-Free Design for DRC
Running Hercules
in any error vectors or polygons appearing in the error hierarchy for the design
output layer 101. The error hierarchy contains all the errors for the entire
design. (This concept is demonstrated more thoroughly later in the tutorial.) In
addition, data output that is created from design rule statements can be sent to
database locations other than the error hierarchy. We explore this in detail
when we show examples of statements that create data other than errors.
The diagram in Figure 1 illustrates our runset design rule.
Figure 1 EXTERNAL Check - 3-µm Spacing Rule
metal1
Spacing must be at least 3 µm between metal1 objects
metal1
Running Hercules
Now that we have explained the contents of the runset file, you need to run
Hercules on the adderdrc1.ev runset in order to evaluate AD4FUL in the
EX_ADDER library as a check against the design example.
16
An Error-Free Design for DRC
Running Hercules
./run_details:
AD4FUL.sum AD4FUL.tree0 AD4FUL.tree3 evaccess
AD4FUL.tech AD4FUL.tree1 AD4FUL.vcell group
./run_details/evaccess:
AD4FUL AD4FUL.errbin AD4FUL.errstr AD4FUL.ev AD4FUL.msg VA.libs
17
An Error-Free Design for DRC
Explanation of Error and Summary Files
AD4FUL.RESULTS
The AD4FUL.RESULTS file, shown in Example 3, is a high level summary file
of the Hercules run. It includes the:
• version of Hercules
• path to the executable that was run
• summary of the class of checks (for example, DRC or LVS)
• overall runtime for your entire Hercules job
Be sure to verify that the
• path of your Hercules executable in the log file at this time accesses the
latest software you installed
• correct checks were made
• runtimes were within acceptable limits
18
An Error-Free Design for DRC
Explanation of Error and Summary Files
If the Hercules run results in an error, the block.RESULTS file prints ERROR
instead of DONE next to the module where an error was generated and it refers
you to a file to get more details on this error.
AD4FUL.LAYOUT_ERRORS
The DRC/ERC/EXTRACT checks on the design block generate this error file. In
the example, we specified AD4FUL in the HEADER section of the adderdrc1.ev
runset file. There are no errors, so the file contents are minimal and contain
only some repeated runset information:
Example 4 AD4FUL.LAYOUT_ERRORS File (No Errors)
LAYOUT ERRORS RESULTS: CLEAN
#### # ##### ## # #
# # # # # ## #
# # #### ###### # # #
# # # # # # ##
#### ##### ##### # # # #
======================================================================
19
An Error-Free Design for DRC
Explanation of Error and Summary Files
ERROR SUMMARY
ERROR DETAILS
Additional files generated during the Hercules run are stored in the run_details
directory. These files include the detailed run summary files, all of the hierarchy
related files, and log files. You should first examine the files mentioned above.
The following sections contain more information on some of files found under
run_details directory.
AD4FUL.sum
The AD4FUL.sum summary file also gets its name from the block (AD4FUL)
specified. The summary file contains information about the steps Hercules
executed and the resources used in each step. It repeats much of the
information that appeared in the runset file, with the addition of a full list of
options in the various runset sections, complete with user and default settings.
Example 5 shows the summary file AD4FUL.sum, which you should have in
your directory after your Hercules run is completed. Various parts of the
summary file are explained in the following sections, with notes throughout the
file. Notice that many sections and options appear that were not in your original
runset file. These are default settings provided for your information. At the end
of the file we find the most important information: that no errors were found
during the check (shown in emphasized type at the end of the file).
Example 5 AD4FUL.sum File (No Errors)
Hercules (R) Hierarchical Design Verification, Release DATA OMITTED
The information here shows the source of Hercules, followed by the command
you typed (hercules adderdrc1.ev) to process the runset.
The following line shows the version of EV_Engine used to run the DRC
checking. All polygon processing is done with EV_Engine. The naming
convention for each release of this executable is as follows:
year.quarter.compile#. If there is a patch release the naming convention
changes to: year.quarter.patch#.compile#
20
An Error-Free Design for DRC
Explanation of Error and Summary Files
The following information shows the names of the input and output files,
as well as the sources and destinations of each.
The OPTIONS section lists the settings you used to analyze and display
data, including the default settings your runset did not alter.
OPTIONS {
ALL_TEXT_GLOBAL=FALSE
ASCII_ONLY=FALSE
ATTACH_TEXT=FALSE
BOX_CORNER=FALSE
CHECK_REF_LIB=TRUE
COUNT_TRAPS=FALSE
ERR_LIMIT_PER_CHECK = UNLIMITED
ERR_PREFIX = ERR
EXPLODE_AREFS=FALSE
EXPLODE_HOLDING_CELL_LIMIT=0
21
An Error-Free Design for DRC
Explanation of Error and Summary Files
EXPLODE_LIMIT=0
FLAG_ALL_AREF_ERRORS=FALSE
FLAT_COUNT=FALSE
FLAT_ERROR=FALSE
GENERATE_INSTANCE_NAME=TRUE
HIERARCHICAL_DELIMITER = \
IGNORE_CASE=FALSE
INCREMENTAL_CELLS=FALSE
INCREMENTAL_CELLS_FILE =
INSTANCE_PREFIX =
NET_PREFIX =
SELECT_CELL_TO_NO_EXPLODE=TRUE
EQUIV_TO_NO_EXPLODE=TRUE
SCHEMATIC_TO_NO_EXPLODE=TRUE
BLACK_BOX_TO_NO_EXPLODE=TRUE
PROTOTYPE_PLACEMENTS=FALSE
NO_MERGE=FALSE
GENERATE_INSTANCE_NAME=TRUE
PRINT_ERRSUM_FILE=TRUE
MAXIMUM_CELLNAME_LENGTH=32
SIZE_ENDPOINTS=FALSE
SNAP_RES=TRUE
SQUARE_CORNER=FALSE
STOP_ON_GROUP_ERROR=TRUE
TEXT_RECT=0.000
USE_EXPLODED_TEXT=FALSE
EXPLORER_DATA=FALSE
WIDTH=2.000
MAGNIFICATION_FACTOR=1.000
OUTPUT_MAGNIFICATION_FACTOR=1.000
POLYGON_COUNT_IN_ASSIGN = FALSE
FLAT_POLYGON_COUNT = FALSE
}
PREPROCESS_OPTIONS {
CELL_PROFILE = FALSE
CELL_PROFILE_CNT=20
CHECK_PATH_ENDPOINTS = TRUE
CHECK_PATH_45 = TRUE
CHECK_PATH_90 = FALSE
22
An Error-Free Design for DRC
Explanation of Error and Summary Files
DESIGN_STATS = TRUE
TREE = TRUE
CELL_STATS = TRUE
PRINT_PREPROCESS_FILES = TRUE
}
Because we did not change any of the TECHNOLOGY_OPTIONS in our runset,
they are all default hierarchy optimization options.
TECHNOLOGY_OPTIONS {
VIA_AUTO_EXPLODE = TRUE
SUBLEAF_AUTO_EXPLODE = 6
ALLOW_EXPLODE_WITH_TEXT = TRUE
POST_VCELL_EXPLODE_CELL_SIZE <= 10
EXPLODE_CELL_SIZE_PERCENT = 70
CELL_SIZE_AUTO_EXPLODE <= 10
EXPLODE_AREFS = FALSE
EXPLODE_1XN_AREFS = FALSE
EXPLODE_DATA_CELL_LIMIT = 4
POST_VCELL_EXPLODE_DATA_CELL_LIMIT = 12
EXPLODE_CELL_SIZE_PERCENT_OF_TOP = 70
EXPLODE_BIG_SPARSE_CELL = TRUE
EXPLODE_HOLDING_CELL_LIMIT = 1
EXPLODE_PLACEMENT_LIMIT = 1
POST_VCELL_EXPLODE_HIER_SPARSE_CELL = TRUE
}
EVACCESS_OPTIONS {
PATH = /remote/wwas1/hercules/venu/HERCULES_DOC/tutorial/
Getting_Started_Hercules_DRC/addertest1/run_details/evaccess
LIBRARY = AD4FUL
CREATE_MSG_VIEW = TRUE
CREATE_NETLIST_VIEW = TRUE
CREATE_XREF_VIEW = TRUE
CREATE_GRAF_VIEW = TRUE
}
ASSIGN {
tox (1)
poly (5)
well (31)
psel (14)
cont (6)
met1 (8) text(110)
met2 (10)
23
An Error-Free Design for DRC
Explanation of Error and Summary Files
via (19)}
NOTE: If no options are specified, Hercules uses the default values for
the TECHNOLOGY options, as explained above.
For each command executed, Hercules reports actual time, user (CPU) time,
system time (I/O and other non-CPU events) and memory usage in megabytes
(MB). This example uses runset explode and flatten default options from
the TECHNOLOGY_OPTIONS section. Later in "Design Structure" on page 29
we will examine the concept of explode and look at the tree1 file for
what is exploded.
TECHNOLOGY_OPTIONS {
VCELL_PASS {
STYLE = PAIRS
ITERATE_MAX = 15
ARRAY_ID = TRUE
EXPLODE_INTO_VCELL = SMART
MIN_COUNT = 20
TOP_PERCENT_OF_VALUE = 40
}
}
VCELL_PASS 1, no changes.
24
An Error-Free Design for DRC
Explanation of Error and Summary Files
Checking database:
SNAP {
ASSIGN_LAYERS = 0.010
tox {0.010000}TEMP=tox
poly {0.010000}TEMP=poly
well {0.010000}TEMP=well
psel {0.010000}TEMP=psel
cont {0.010000}TEMP=cont
met1 {0.010000}TEMP=met1
met2 {0.010000}TEMP=met2
via {0.010000}TEMP=via
}TEMP=snap_out
No output written.
Layer "snap_out" is empty.
1 polygon snapped.
Check time = 0:00:00 User=0.01 Sys=0.01 Mem=6.380
GRID_CHECK {
ASSIGN_LAYERS=TRUE
tox={ CHECK_45=TRUE }
poly={ CHECK_45=TRUE }
well={ CHECK_45=TRUE }
psel={ CHECK_45=TRUE }
25
An Error-Free Design for DRC
Explanation of Error and Summary Files
cont={ CHECK_45=TRUE }
met1={ CHECK_45=TRUE }
met2={ CHECK_45=TRUE }
via={ CHECK_45=TRUE }
}(100)
The number of violations appears here after commands that perform checks.
In this case, the GRID_CHECK command and EXTERNAL met1 (testing for a
spacing of less than 3 um) yielded no violations.
EXTERNAL met1{
SPACING<3.000 } (101)
0 spacing violations found.
Check time = 0:00:00 User=0.01 Sys=0.00 Mem=8.208
Checks complete.
The "Total check time" shows the total time and the maximum memory used
for completing the checks.
Here is the total time and the maximum memory used for the run (checks,
plus preprocessing):
Because we did not find any errors in our example, there is no need to look at
any graphical output. Hercules does not create any graphical output files for a
runset file which produces no errors.
26
An Error-Free Design for DRC
Design Structure
Design Structure
So far, we have been discussing individual cells and individual output files. At
this point we explain hierarchy so you will better understand the concept of
hierarchical output.
As noted previously, our test design is a four-bit, full adder, arithmetic building
block. The adder is built hierarchically, meaning that cells or blocks are placed
inside other cells, thus creating design levels. One significant output is the tree
file, that analyzes the design hierarchies, or levels. When examining tree files,
you can appreciate the difference between true hierarchical design, and
inefficient hierarchical designs. Now we discuss the concept of hierarchical
design in order to interpret the tree files.
Hierarchical Design
A hierarchical design has nested cells; a cell contains one or more instances of
another cell, which may contain one or more instances of still another cell, and
so forth. The top-level structure holds all other structures and represents the
overview of the entire design. Any structure at the top level is called Level 0.
Any structure nested within the Level 0 structure, but one level down, is called a
Level 1 structure. Nested within the Level 1 structure may be other structures,
and these are at Level 2. Level 2 may contain Level 3 structures, and so forth.
In essence, you develop a tree of structures, with each structure containing
other structures. In Figure 2, numbers in parentheses indicate the number of
placements, or instances, of a cell in the structure above it. Cell A contains four
Cs, as well as three Bs, each of which contain five Ds and four Es. Cell E
contains two Cs.
27
An Error-Free Design for DRC
Design Structure
A Level 0
C (2) Level 3
Note that there are four HIERARCHICAL levels (Level 0 to Level 3) of nested
cells. There are five unique cells, A to E. To find the number of HIERARCHICAL
cell placements, add all the placements of a cell at all levels. For example, C is
4+2=6. In other words, there are four C cells at Level 1 and two at Level 3. If
you wanted to find the TOTAL or FLAT number of C cells, you would 1) multiply
the number of C cells found within the holding cell; and 2) add all the instances
of this situation. For example, C = two C cells multiplied by four E holding cells,
multiplied by three B holding cells, plus four C cells held directly under A,
making a total of 28 C cells. That is, (2 x 4 x 3) + 4 = 28.
Horizontal Design
In a horizontal design, you repeat uses of a cell below each level; that is, there
is very little nesting. Therefore, only a few levels of hierarchy exist. In Figure 3
there are 30 instances of Cell D directly under A at Level 0. Again, the numbers
in parentheses refer to the number of times the cell appears in the structure
immediately above.
28
An Error-Free Design for DRC
Design Structure
A Level 0
In Figure 3, very little nesting is present, with multiple instances of a cell being
directly under Level 0. The more horizontal a hierarchy, the closer the number
of hierarchical placements is to the number of flat placements. In contrast, the
more vertical a hierarchy, the smaller the number of hierarchical placements
are in comparison to flat placements. Notice that if the hierarchical design in
Figure 2 were flattened out, the 28 C cells would be directly under A.
29
An Error-Free Design for DRC
Explanation of Output Tree Files
Cell A Cell A
Cell B
Cell Cell
C C
30
An Error-Free Design for DRC
Explanation of Output Tree Files
LEVEL 0 AD4FUL
(20) (4)
(6)
LEVEL 4 CONT
Assume you have an error in the INV cell. Locate INV in Figure 5 at Level 2 in
the diagram. The adder uses 24 instances of the INV cell in the design (six INV
cells in ADFULAH, and four ADFULAH cells in AD4FUL). But notice that there
is really only one structure that contains an error, and this error is repeated in
24 different places on the layout. Hercules checks the design hierarchically,
determines that the INV cell has an error, and reports a single error in its output
files.
AD4FUL.tree0
The tree0 file lists information about the original hierarchy of the design, such
as cell names, and where structures appear in the hierarchy. Detailed
placement information is shown for the AD4FUL structure in Example 6; the
tree file includes the placement information for all the structures in the design.
Only a portion of this file is shown here.
31
An Error-Free Design for DRC
Explanation of Output Tree Files
PRE_TREE
**********************************************************************
Compare the number of levels, unique cells, and placements with the layout
styles in Figure 7, Figure 9, and Figure 10.
Hierarchical levels = 5
Unique cells = 9
Hierarchical placements = 109
Total design placements = 749
Exploded references = 0
Exploded placements = 0
Total rect count = 1709
Total poly count = 148
Total path count = 204
32
An Error-Free Design for DRC
Explanation of Output Tree Files
**********************************************************************
**********************************************************************
CELL STATISTICS
Notice that you can compare the number of hierarchical placements to the
number of flat placements for each cell. For example, AD4FUL has the same
number of flat and hierarchical placements, 1. VIA has 53 hierarchical
placements and 168 flat placements.
CELL = AD4FUL
Cell Status = USED
MILKYWAY Library = /remote/wwas1/hercules/venu/
HERCULES_DOC/tutorial/Getting_Started_Hercules_DRC/addertest1
MILKYWAY Cell Extents (LL,UR) = (0.000, 0.000) (394.000, 348.000)
Cell Area = 137112.00
Hierarchical Placements = 1
Flat Placements = 1
33
An Error-Free Design for DRC
Explanation of Output Tree Files
SREFS = 24
AREFS = 0
AREF placements = 0
Exploded references = 0
Exploded placements = 0
DATA = 29
TEXT = 0
Via = 0
Layer Usage of Original Cell:
Name Data/Text Layer:Dtype Layer Extents (LL,UR) Lyr Area VIEW Ver.Obj
---- -------- ----------- -------------------- ------- ---- ------
met1 20/0 8:0 (0.00, 18.50) (394.00, 337.50) 1458.50 CEL 1
met2 9/0 10:0 (0.50, 0.00) (372.00, 348.00) 3348.00 CEL 1
For the VIA cell, there are 53 hierarchical placements and 163 flat
placements, but the cell only has 3 polygons. You will notice in later
tree files that the VIA cell is AUTO_EXPLODED. Because of the large number
of placements versus the small polygon count, it is considered inefficient
hierarchy
CELL = VIA
Cell Status = USED
MILKYWAY Library = /remote/wwas1/hercules/venu/
HERCULES_DOC/tutorial/Getting_Started_Hercules_DRC/addertest1
MILKYWAY Cell Extents (LL,UR) = (0.000, 0.000) (4.000, 4.000)
Cell Area = 16.00
Hierarchical Placements = 53
Flat Placements = 168
SREFS = 0
AREFS = 0
AREF placements = 0
Exploded references = 0
Exploded placements = 0
DATA = 3
TEXT = 0
Via = 1
Layer Usage of Original Cell:
Name Data/Text Layer:Dtype Layer Extents (LL,UR) Lyr Area VIEW Ver.Obj
---- -------- ----------- -------------------- ------- ---- ------
met1 1/0 8:0 (0.50, 0.50) (3.50, 3.50) 9.00 CEL 1
met2 1/0 10:0 (0.00, 0.00) (4.00, 4.00) 16.00 CEL 1
via 1/0 19:0 (1.00, 1.00) (3.00, 3.00) 4.00 CEL 1
34
An Error-Free Design for DRC
Explanation of Output Tree Files
Notice the complete summary of all the polygon and text data found in
each cell. If you want to verify that you have read in the correct polygon
layer or text layer, you can check this file to make sure that the number
of elements matches the number you think are in your design.
ADFUL.tree1
A partial ADFUL.tree1 file in Example 7 describes the structures after explicit
explode and flatten operations; see the explode and flatten options in the
TECHNOLOGY_OPTIONS section. Since all of the hierarchy changes are
made during the tree1 phase, Hercules automatically determines that it would
be more advantageous to process this resulting hierarchy than the original
hierarchy it was given. The 1 after tree represents the number of preprocess
steps that Hercules has performed on your design. In Example 7, we show the
salient aspects of the tree1 file. (Sections that are the same as the tree0 file
have been omitted.) Pay particular attention to emphasized items and compare
the text closely with Figure 5.
Example 7 Partial tree1 File
*** AD4FUL
POST_TREE
DESIGN STATISTICS DEFINITIONS
Hierarchical levels = 4
Unique cells = 6
Hierarchical placements = 18
Total design placements = 73
Exploded references = 8
Exploded placements = 91
Total rect count = 1709
Total poly count = 148
Total path count = 204
Total vect count = 0
Total data count = 2061
SREF placements = 73
AREFS = 0
AREF placements = 0
DATA = 332
35
An Error-Free Design for DRC
Explanation of Output Tree Files
TEXT = 2
**********************************************************************
HIERARCHICAL TREE FOR BLOCK "AD4FUL".
TOTAL SREF AREF
AD4FUL Level=0 Count= 1 1 0
ADFULAH Level=1 Count= 4 4 0
DGATE Level=2 Count= 3 3 0
TGATE Level=3 Count= 2 2 0
INV Level=2 Count= 6 6 0
INVH Level=2 Count= 2 2 0
**********************************************************************
CELL STATISTICS
CELL = AD4FUL
Hierarchical Placements = 1
Flat Placements = 1
SREFS = 4
AREFS = 0
AREF placements = 0
Exploded references = 1
Exploded placements = 20
DATA = 89
TEXT = 0
Via = 0
Current Data Counts for Cell:
Name Data Text
----- ----- -----
met1 40 0
met2 29 0
via 20 0
CELL = ADFULAH
Hierarchical Placements = 4
Flat Placements = 4
SREFS = 11
AREFS = 0
AREF placements = 0
Exploded references = 2
Exploded placements = 39
DATA = 156
TEXT = 0
Via = 0
Current Data Counts for Cell:
36
An Error-Free Design for DRC
Explanation of Output Tree Files
CELL = INV
Hierarchical Placements = 6
Flat Placements = 24
SREFS = 0
AREFS = 0
AREF placements = 0
Exploded references = 1
Exploded placements = 8
DATA = 19
TEXT = 0
Via = 0
Current Data Counts for Cell:
Name Data Text
----- ----- -----
tox 2 0
poly 3 0
well 1 0
psel 2 0
cont 8 0
met1 3 0
CELL = DGATE
Hierarchical Placements = 3
Flat Placements = 12
SREFS = 2
AREFS = 0
AREF placements = 0
Exploded references = 2
Exploded placements = 5
DATA = 23
TEXT = 0
Via = 0
Current Data Counts for Cell:
Name Data Text
----- ----- -----
poly 7 0
cont 3 0
37
An Error-Free Design for DRC
Explanation of Output Tree Files
met1 8 0
met2 3 0
via 2 0
CELL = INVH
Hierarchical Placements = 2
Flat Placements = 8
SREFS = 0
AREFS = 0
AREF placements = 0
Exploded references = 1
Exploded placements = 13
DATA = 29
TEXT = 0
Via = 0
Current Data Counts for Cell:
Name Data Text
----- ----- -----
tox 2 0
poly 7 0
well 1 0
psel 3 0
cont 13 0
met1 3 0
CELL = TGATE
Hierarchical Placements = 2
Flat Placements = 24
SREFS = 0
AREFS = 0
AREF placements = 0
Exploded references = 1
Exploded placements = 6
DATA = 16
TEXT = 2
Via = 0
Current Data Counts for Cell:
Name Data Text
----- ----- -----
tox 2 0
poly 2 0
well 1 0
psel 1 0
cont 6 0
met1 4 2
38
An Error-Free Design for DRC
Explanation of Output Tree Files
CELL = VIA
Hierarchical Placements = 0
Flat Placements = 0
SREFS = 0
AREFS = 0
AREF placements = 0
Exploded references = 0
Exploded placements = 0
DATA = 3
TEXT = 0
Via = 1
Current Data Counts for Cell:
Name Data Text
----- ----- -----
met1 1 0
met2 1 0
via 1 0
CELL = POLYHD
Hierarchical Placements = 0
Flat Placements = 0
SREFS = 0
AREFS = 0
AREF placements = 0
Exploded references = 0
Exploded placements = 0
DATA = 3
TEXT = 0
Via = 1
Current Data Counts for Cell:
Name Data Text
----- ----- -----
poly 1 0
cont 1 0
met1 1 0
CELL = CONT
Hierarchical Placements = 0
Flat Placements = 0
SREFS = 0
AREFS = 0
AREF placements = 0
Exploded references = 0
Exploded placements = 0
39
An Error-Free Design for DRC
Explanation of Output Tree Files
DATA = 1
TEXT = 0
Via = 1
Current Data Counts for Cell:
Name Data Text
----- ----- -----
cont 1 0
.................... DATA OMITTED ....................
AD4FUL.tree3
The tree3 file lists information about the hierarchy of the design after Hercules
has internally optimized the way it processes the hierarchy. Here, as indicated
by 3 after tree, Hercules has performed three preprocess steps on your design.
For very large designs the number is higher. Hercules does not print out all of
these files, but instead prints the first two, tree0 and tree1, and then the final
statistics in the last file, which is tree3 in this example. You notice that there are
usually fewer levels of hierarchy in the tree3 file than there were in the tree0 file.
However, in our example, the tree1 file and tree3 file show the same hierarchy.
Hercules automatically runs five preprocessing passes on all designs to
optimize hierarchy, but, in the case of this design, Hercules found the hierarchy
to be optimal after the first step of preprocessing. For a more detailed
explanation of hierarchy processing and how you can control it, refer to the
TECHNOLOGY_OPTIONS section in the Hercules Reference Manual. Only a
portion of this file is shown in Example 8.
Example 8 Partial AD4FUL.tree3 File
*** AD4FUL
40
An Error-Free Design for DRC
Explanation of Output Tree Files
**********************************************************************
Hierarchical levels = 4
Unique cells = 6
Hierarchical placements = 18
Total design placements = 73
Exploded references = 7
Exploded placements = 71
Total rect count = 1709
Total poly count = 148
Total path count = 204
Total vect count = 0
Total data count = 2061
SREF placements = 73
AREFS = 0
AREF placements = 0
DATA = 332
Notice that the DATA count stays the same as it was in the tree0 file.
TEXT = 2
*********************************************************************
41
An Error-Free Design for DRC
Explanation of Output Tree Files
**********************************************************************
CELL STATISTICS
CELL = AD4FUL
Cell Status = USED
MILKYWAY Library = /remote/wwas1/hercules/venu/
HERCULES_DOC/tutorial/Getting_Started_Hercules_DRC/addertest1
MILKYWAY Cell Extents (LL,UR)= (0.000, 0.000) (394.000, 348.000)
Cell Area = 137112.00
Hierarchical Placements = 1
Flat Placements = 1
SREFS = 4
AREFS = 0
AREF placements = 0
Exploded references = 0
Exploded placements = 0
DATA = 89
TEXT = 0
Via = 0
Current Data Counts for Cell:
Name Data Text
----- ----- -----
met1 40 0
met2 29 0
via 20 0
CELL = ADFULAH
Cell Status = USED
MILKYWAY Library = /remote/wwas1/hercules/venu/
HERCULES_DOC/tutorial/Getting_Started_Hercules_DRC/addertest1
MILKYWAY Cell Extents (LL,UR)= (0.000, -18.500) (376.000, 70.500)
Cell Area = 33464.00
Hierarchical Placements = 4
Flat Placements = 4
SREFS = 11
AREFS = 0
AREF placements = 0
Exploded references = 2
Exploded placements = 39
42
An Error-Free Design for DRC
Miscellaneous Output Files
DATA = 156
TEXT = 0
Via = 0
Current Data Counts for Cell:
Name Data Text
----- ----- -----
poly 12 0
cont 8 0
met1 59 0
met2 46 0
via 31 0
CELL = VIA
Cell Status = AUTO_EXPLODED (DATA_CELL_LIMIT CELL)
MILKYWAY Library = /remote/wwas1/hercules/venu/
HERCULES_DOC/tutorial/Getting_Started_Hercules_DRC/addertest1
MILKYWAY Cell Extents (LL,UR)= (0.000, 0.000) (4.000, 4.000)
Cell Area = 16.00
Hierarchical Placements = 0
Flat Placements = 0
SREFS = 0
AREFS = 0
AREF placements = 0
Exploded references = 0
Exploded placements = 0
DATA = 3
TEXT = 0
Via = 1
Current Data Counts for Cell:
Name Data Text
----- ----- -----
met1 1 0
met2 1 0
via 1 0
43
An Error-Free Design for DRC
Miscellaneous Output Files
evaccess/
An evaccess/ directory is created for EVACCESS database files and
referenced by Hercules-Explorer (discussed later in this tutorial) and other
programs in the Synopsys suite of tools. Several layers of directories are
created; however, only the main evaccess directory is shown. The only file of
general interest to the user is AD4FUL.ev.
evaccess/AD4FUL.ev
Examine the AD4FUL.ev file, shown in Example 9, noting all explicit
assignments of variables (such as HEADER variables) and runset
programming options. For example, if, in the adder1drc.ev runset, you use an
environment variable in an IF/ELSE statement, the AD4FUL.ev file includes
only the commands that are executed based on the value of the runset
environment variable.
Example 9 AD4FUL.ev File
HEADER {
INLIB = EX_ADDER_1
INLIB_PATH = ./ /* For Synopsys internal use only! */
OUTLIB = EX_ADDER_1
OUTLIB_PATH = ./ /* For Synopsys internal use only! */
BLOCK = AD4FUL
GROUP_DIR = /remote/wwas1/hercules/venu/HERCULES_DOC/tutorial/
Getting_Started_Hercules_DRC/addertest1
FORMAT = MILKYWAY
OUTPUT_FORMAT = MILKYWAY
LAYOUT_PATH = /remote/wwas1/hercules/venu/HERCULES_DOC/tutorial/
Getting_Started_Hercules_DRC/addertest1
OUTPUT_BLOCK = TOP_ERR
COMPARE_DIR = /remote/wwas1/hercules/venu/HERCULES_DOC/tutorial/
44
An Error-Free Design for DRC
Miscellaneous Output Files
Getting_Started_Hercules_DRC/addertest1/run_details/compare
RUN_DETAILS_DIR = /remote/wwas1/hercules/venu/HERCULES_DOC/
tutorial/Getting_Started_Hercules_DRC/addertest1/run_details
}
TECHNOLOGY_OPTIONS {
EXPLODE_AREFS = FALSE
EXPLODE_CELL_SIZE_PERCENT = 70
EXPLODE_CELL_SIZE_PERCENT_OF_TOP = 70
EXPLODE_BIG_SPARSE_CELL = TRUE
POST_VCELL_EXPLODE_CELL_SIZE <= 10
VIA_AUTO_EXPLODE = TRUE
SUBLEAF_AUTO_EXPLODE = 6
CELL_SIZE_AUTO_EXPLODE <= 10
EXPLODE_DATA_CELL_LIMIT = 4
POST_VCELL_EXPLODE_DATA_CELL_LIMIT = 12
POST_VCELL_EXPLODE_HIER_SPARSE_CELL = TRUE
EXPLODE_HOLDING_CELL_LIMIT = 1
EXPLODE_PLACEMENT_LIMIT = 1
VCELL_PASS {
STYLE = PAIRS
ITERATE_MAX = 15
ARRAY_ID = TRUE
EXPLODE_INTO_VCELL = SMART
MIN_COUNT = 20
TOP_PERCENT_OF_VALUE = 40
}
}
EVACCESS_OPTIONS {
PATH = /remote/wwas1/hercules/venu/HERCULES_DOC/tutorial/
Getting_Started_Hercules_DRC/addertest1/run_details/compare
LIBRARY = AD4FUL
CREATE_MSG_VIEW = TRUE
CREATE_NETLIST_VIEW = TRUE
CREATE_XREF_VIEW = TRUE
CREATE_GRAF_VIEW = TRUE
CREATE_RUNSET_VIEW = TRUE
}
OPTIONS {
WIDTH = 2.000
}
PREPROCESS_OPTIONS {
CHECK_PATH_90 = FALSE
}
ASSIGN {
45
An Error-Free Design for DRC
Miscellaneous Output Files
tox (1)
poly (5)
well (31)
psel (14)
cont (6)
met1 (8) text(110)
met2 (10)
via (19)}
SNAP {
ASSIGN_LAYERS=0.010
tox {0.010000}TEMP=tox
poly {0.010000}TEMP=poly
well {0.010000}TEMP=well
psel {0.010000}TEMP=psel
cont {0.010000}TEMP=cont
met1 {0.010000}TEMP=met1
met2 {0.010000}TEMP=met2
via {0.010000}TEMP=via
}TEMP=snap_out
GRID_CHECK {
ASSIGN_LAYERS=TRUE
tox={ CHECK_45=TRUE }
poly={ CHECK_45=TRUE }
well={ CHECK_45=TRUE }
psel={ CHECK_45=TRUE }
cont={ CHECK_45=TRUE }
met1={ CHECK_45=TRUE }
met2={ CHECK_45=TRUE }
via={ CHECK_45=TRUE }
}(100)
EXTERNAL met1 {
SPACING<3.000 } (101)
46
An Error-Free Design for DRC
What’s Next?
What’s Next?
Thus far you have compared runsets and examined output files to learn about
the information they contain. In Chapter 3, “Single Design Error for DRC,” we
examine a design with one error and introduce you to the different output
formats for viewing this error, including Hercules-Explorer, a graphical debug
tool. All users should proceed to Chapter 3.
47
An Error-Free Design for DRC
What’s Next?
48
3
Single Design Error for DRC3
49
Single Design Error for DRC
Running Hercules on the Runset File
• Run Hercules on the adder design with an error introduced, and then learn
how to interpret the output files to locate errors.
• Examine the graphic output for the Hercules run in Enterprise. This output
illustrates how hierarchical checking works and helps you to spot and
understand design errors.
50
Single Design Error for DRC
Output Results
Hercules now processes the runset file to perform a check on the block
AD4FUL in the EX_ADDER_2 library. The block contains a single error.
Have Hercules process the runset file, adderdrc2.ev. Enter:
hercules adderdrc2.ev
As before, your active window displays the execution process.
Output Results
Running Hercules on the runset file adderdrc2.ev creates the
AD4FUL.LAYOUT_ERRORS file in the current directory, with a known error
that violates the EXTERNAL spacing check. Notice that the directory structure
has not changed. However, the files created by Hercules now contain different
information (shown emphasized in Example 11).
AD4FUL.LAYOUT_ERRORS
Example 11 AD4FUL.LAYOUT_ERRORS File (with Errors)
LAYOUT ERRORS RESULTS: ERRORS
======================================================================
Library name: EX_ADDER_2
Structure name: AD4FUL
ERROR SUMMARY
No Comment
EXTERNAL met1 { } (101) ............................ 1 violation found.
ERROR DETAILS
EXTERNAL met1 {
51
Single Design Error for DRC
Output Results
SPACING<3.000
WIDTH=2.000 } (101)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - -- - - - - - - - - - - - - - - - - - - - - - -
INV (16.500, 5.000) (21.500, 7.000) 2.000
met1 layer
error
polygon
(21.5,7)
2
(16.5,5) 5
met1 layer
The error file tells us that we have only a 2-µm spacing between adjacent
metal1 objects. The coordinates pinpoint the actual location of the error within
52
Single Design Error for DRC
Output Results
the cell INV. Later, we discuss this INV cell with its error as the ERR_INV
structure.
AD4FUL.sum
The AD4FUL.sum summary file in the run_details directory provides a quick
way to scan through your checks and notice any violations. The summary file
looks very similar to the one created for our clean run, except that it warns that
an error has been produced. Use your system editor, such as vi (or use the
UNIX command more) to view the AD4FUL.sum text file. At the very end of the
file you see:
EXTERNAL met1 {
SPACING<3.000 } (101)
WARNING - 1 spacing violation found.
Check time = 0:00:00 User=0.00 Sys=0.02 Mem=8.279
You should locate this error (shown here emphasized) in the AD4FUL.sum file
in Example 12. Also, notice at the bottom of the file the emphasized section
specifying the time it takes to save the error structure. Because there were no
errors in our first example, this line was not in its summary file. Major sections
of the AD4FUL.sum file have been omitted from Example 12, because they are
identical to those in the AD4FUL.sum for addertest1.
Example 12 AD4FUL.sum File (with Errors)
Hercules (R) Hierarchical Design Verification, Release ... DATA
OMITTED
Synopsys. All rights reserved.
53
Single Design Error for DRC
Running Enterprise and Viewing Results
EXTERNAL met1 {
SPACING<3.000
WIDTH=2.000 } (101)
WARNING - 1 spacing violation found.
Check time = 0:00:00 User=0.00 Sys=0.02 Mem=8.279
54
Single Design Error for DRC
Running Enterprise and Viewing Results
Note:
Many of you use Hercules-Explorer, the Synopsys graphical debug tool
designed for viewing errors in Hercules. This section of the tutorial is
included to make you familiar with the input design hierarchy and the error
hierarchy that Hercules generates.
55
Single Design Error for DRC
Running Enterprise and Viewing Results
56
Single Design Error for DRC
Running Enterprise and Viewing Results
Enter the library name EX_ADDER_2. You can also browse through the
directories to select the library.
In the graphical window, choose Cell > Open. You can also invoke the
command by placing your cursor in the command window in the lower left
corner of the screen by entering:
gxwOpenCell
57
Single Design Error for DRC
Running Enterprise and Viewing Results
You see a pop-up window prompting you to enter the cell name. A list of cells
for our design appears on the screen, as shown in Figure 9. Double-click on
cell AD4FUL to open the cell.
58
Single Design Error for DRC
Viewing Data in Enterprise
Note:
All error hierarchy files begin with ERR as a default, unless you choose a
different prefix and set it in the OPTIONS section of the runset file
(ERR_PREFIX option).
Locate INV in the hierarchy tree in Figure 5 on page 31 in Chapter 2, “An Error-
Free Design for DRC,” and notice that the cell occurs in ADFULAH and also in
the top level, AD4FUL. Recall from the previous section on design structure
that the error occurs in INV (ERR_INV), but Hercules outputs all the structures
(ERR_ADFULAH and ERR_AD4FUL) that contain a reference to the cell.
These ERR_ files appear only when Hercules finds a design error.
TOP_ERR is the holding structure for errors, as defined by OUTPUT_BLOCK
in the runset HEADER section, and any other permanent layers that you might
create. (Permanent layers are explained in Chapter 4, “A Complete Design for
DRC.”) The TOP_ERR file appears only when Hercules finds a design error.
In our layout, you have to fix only the cell INV. Because the design is
hierarchical, and because Hercules retains the hierarchy throughout the
checking procedure, fixing INV fixes all references to INV throughout the
design.
59
Single Design Error for DRC
Viewing Data in Enterprise
Because you have not looked at the error polygon, you may not be able to spot
the area that contains the design rule violation. Also, at this point you are not
familiar with the layout, and no dimensioned grid is shown.
Open Enterprise in the addertest2 directory by entering the command:
Enterprise &
Now execute the next series of commands to open the library and reference the
output library. This allows you to overlay the dimensional error on your original
design.
Choose Library > Reference Libraries > Add.
60
Single Design Error for DRC
Viewing Data in Enterprise
A Create Cell Instance pop-up window appears, as shown in Figure 12. Click
the browse symbol next to the Cell Name field to browse list of cells.
Select the EX_ADDER_2_OUT library by choosing the down arrow key of the
All Cells option in the Browse Cell window (see Figure 13).
Select cell ERR_INV and click Close. This adds the cell name to the Create
Cell Instance window.
61
Single Design Error for DRC
Viewing Data in Enterprise
Enter the coordinates (0 0) as shown in Figure 14. Click Apply. This creates a
cell instance of the master gate_INV from the reference library
EX_ADDER_2_OUT at the coordinates (0, 0).
Figure 14 Create Cell Instance
You now have the met1 layer 101 overlaid on your original design. You can
reference as many of the other layers as you like.
62
Single Design Error for DRC
Viewing Data in Enterprise
With the error polygon overlaid on the INV structure, you see that the metal1
which connects the drains of the N and P channel devices and makes up the
inverter is too long. The error polygon in Figure 15 shows that metal1 is only
2 µm away from adjacent metal1, instead of the 3 µm required by the design
rule.
If you are the layout person responsible for fixing errors and have a full
Enterprise license, the standard methodology at this point is to fix the design
error. Enterprise layout edits are beyond the scope of this tutorial; refer to the
Enterprise User Guide or the Enterprise Reference Manual. When you make
your edits, shorten the metal1 strip by 1 µm to allow 3-µm spacing between
adjacent metal polygons. Otherwise, use your layout editor of choice to correct
the error.
The corrected INV cell looks like Figure 16.
63
Single Design Error for DRC
Layout Topology
The single error polygon indicates that this is the only error for the design.
Fixing metal1 cures the problem in this example. In a real design, of course,
you have to make sure that any editing does not affect other design rules on the
same or other design layers.
Now, to exit the structure:
Choose Cell > Save in the graphical window to save the cell.
Layout Topology
For our example, we know that fixing the metal1 error fixes the design. But to
see how the INV error manifests itself in the rest of the design, look at the
layout topology in Figure 17.
64
Single Design Error for DRC
Layout Topology
DGATE
DGATE
DGATE
INVH
INVH
INV
INV
INV
INV
INV
INV
ADFULAH
DGATE
DGATE
DGATE
INVH
INVH
INV
INV
INV
INV
INV
INV
ADFULAH
DGATE
DGATE
DGATE
INVH
INVH
INV
INV
INV
INV
INV
INV
ADFULAH
DGATE
DGATE
DGATE
INVH
INVH
INV
INV
INV
INV
INV
INV
ADFULAH
From the hierarchy tree shown in Figure 5 on page 31 in Chapter 2, “An Error-
Free Design for DRC,” you know that INV is placed six times in the ADFULAH
structure, and that ADFULAH is placed four times in the top level structure,
AD4FUL. Therefore, you have 24 occurrences of INV, and 24 occurrences of
the same design rule error in the design. Figure 18 helps you anticipate where
the 24 error polygons are approximately located.
Open the AD4FUL structure by selecting Cell > Open in the graphics window.
The view of the layout shows the actual polygons, complete with all metal
interconnections. While there is too much information to be used effectively in
this tutorial, you do see the actual layout from the AD4FUL top level. To get a
diagram without labels, in the command window enter:
gwxRedraw 1 "g" 0
65
Single Design Error for DRC
Layout Topology
Choose Cell > Close in the graphical window to close the cell.
Choose Library > Close to close the library.
To quit Enterprise, in the command window enter:
exit
Or, choose Tools > Quit from the command window.
66
Single Design Error for DRC
Output Hierarchy Options
TOP_ERR
ERR_AD4FUL met_sp_AD4FUL
ERR_ADFULAH met1_sp_ADFULAH
67
Single Design Error for DRC
What’s Next?
Using the VERBOSE option with any command directed to a PERM or TEMP
file enables reporting to the block.LAYOUT_ERRORS file (resulting from errors
in the file designated by BLOCK in the runset HEADER section).
What’s Next?
After you fix the error, move on to Chapter 4, “A Complete Design for DRC,” to
apply the concepts you have just learned to a more challenging example with a
multiple-error design. If you are now using Dracula and trying to transition to
Hercules, skip Chapter 4 and go to Chapter 5, “Hercules DRC Migration.”
68
4
A Complete Design for DRC4
69
A Complete Design for DRC
A Summary of Design Rule Checks
70
A Complete Design for DRC
Examining the Runset Rules
71
A Complete Design for DRC
Examining the Runset Rules
tells Hercules to send all output from the check to the error hierarchy on the
layer specified, in this case, 101. Checks producing error polygons are usually
sent to the error hierarchy.
Permanent Output
Permanent means that the layer is written to the PERM hierarchy and can be
used later in the runset.
Creating a check with an output layer specified in the form
Check {options} PERM=outlayer1 (101)
72
A Complete Design for DRC
Examining the Runset Rules
Temporary Output
Temporary layers can be used when output created during the check needs to
be made available for another check, but does not need to be stored as a
permanent result. Temporary files are most often used with Data Creation
statements, which we explain in detail in this section. Creating a check with an
output layer specified in the form
Check {options} TEMP=outlayer2
EXTERNAL Checks
The simple runset of our first two examples has already introduced us to
EXTERNAL checks. EXTERNAL checks verify distances between polygons,
with the measurement specified for polygons on the same layer or between
different layers. When checking spacings, the measurement can be for edge-to-
edge spacings, corner-to-corner spacings, or corner-to-edge spacings.
Spacing checks can also be restricted to polygons that meet specified internal
width values.
For our sample design, we have selected three specific EXTERNAL checks:
• metal1 to metal1 spacing
• metal2 to metal2 spacing - longedge option
• metal1 to metal2 spacing - touch option
This is the familiar check we have already employed. It flags any spacings for
metal1 to metal1 distances less than 3 µm, and places all error output in the
error hierarchy on layer 101.
73
A Complete Design for DRC
Examining the Runset Rules
The EXTERNAL check syntax allows two separate checks, one for parallel
metal2 runs shorter than 50 µm, and one for those longer than 50 µm. For
shorter runs, the command in this form flags metal2 to metal2 spacings less
than 3 µm. When two parallel metal2 runs maintain a constant spacing for a
length of at least 50 µm, the command imposes a stricter spacing check of a
minimum of 5 µm. This type of check is employed in a design when long parallel
metal runs need to be farther apart than short runs to meet process
specifications.
This check measures spacing between different metal1 and metal2 layers, and
also flags any metal1 polygons that touch metal2 polygons. For a two-layer
EXTERNAL check (as in our example), a touch is considered either an edge or
point touch. For a one-layer EXTERNAL check, only a point touch is flagged.
Refer to the drawings in Figure 20.
74
A Complete Design for DRC
Examining the Runset Rules
INTERNAL Checks
INTERNAL checks measure polygon widths; the check is always for polygons
on the same layer. As with EXTERNAL checks, the measurement can be for
edge-to-edge spacings, corner-to-corner spacings, or corner-to-edge spacings.
For our sample design, we have selected two specific INTERNAL checks:
• poly width - edge_45 option
• metal2 width - corner option
This check measures all poly edges and corners against the two-µm width
value specified. Any poly layer that is thinner than the rule is flagged. The
75
A Complete Design for DRC
Examining the Runset Rules
EDGE_45 option applies a 2.5 µm width rule to poly segments set at any angle
other than 90×.
This check measures all metal2 edges against the 4-µm width value specified.
For convex-to-convex corners (as indicated in Figure 21 by the arrows), a
different value of 4.5 µm is specified. All other corners are checked against the
4.0 µm SPACING value. Hercules can check a variety of corner types; refer to
the Hercules Reference Manual for a complete discussion.
Figure 21 CONVEX-TO-CONVEX Corner Check
CUT Checks
The CUT check selects edges of polygons that intersect by a certain spacing
(and, with options, those that TOUCH or are ENCLOSED). For our example,
the CUT check provides a way to select a polygon that overlaps portions of
another polygon, and must maintain specific distances between polygon
edges. We have selected one check.
This check measures the overlap of poly against diffusion, to be sure that a
MOS gate is properly formed. The CUT check itself selects only edges. The
76
A Complete Design for DRC
Examining the Runset Rules
edges selected with the rule are the diffusion edges, which are inside the poly
edges. To understand this concept, we look at a simple drawing of a gate
formed by poly and diffusion (represented by the layer name tox).
Figure 22 Illustration of CUT Check
Selected CUT
edge
poly
tox
Selected CUT
edge Spacing check
In Figure 22 the heavier, short, horizontal lines are the edges of diffusion,
which are inside poly. In other words, poly is cut by diffusion in these two
places. The CUT_OUTSIDE option checks that any poly that continues outside
the diffusion has an edge parallel to the cut edge, and is outside the cut edge
by at least 1.5 µm.
AREA Checks
The AREA check is a simple check that checks for a polygon area, flagging
areas that are within the range specified. We have selected a single check:
77
A Complete Design for DRC
Examining the Runset Rules
The check measures areas of via cells, and reports as errors those falling
within the specified range of 0 to 2 µm.
The BOOLEAN operator creates AND, OR, NOT, and XOR relationships
between polygons. The PERM statement places the result of the Data Creation
operation on a graphical output layer. This step creates a layer from the
intersection of poly and tox, which forms a MOS gate structure. A new
permanent output layer, gate, is created. (Refer to Figure 23.)
Note:
Usually the Data Creation output is written to TEMP layers. We are writing
them to PERM layers in our example because later in this chapter we
demonstrate how to view the layers we create.
78
A Complete Design for DRC
Examining the Runset Rules
Now look at Figure 24 for how the specific gates pgate and ngate are formed
from psel.
This Boolean operator looks for all gate polygons inside the psel layer and
creates a layer from the intersection of gate and psel. A new output layer,
pgate, is formed, as shown in Figure 24. This layer has the same dimensions
as any PMOS gate in the design.
This Boolean operator looks for all gate polygons that are not pgate and
creates a layer by subtracting the pgate layer from the gate layer. A new output
layer, ngate, is formed, also shown in Figure 24. This layer has the same
dimensions as any NMOS gate in the design.
79
A Complete Design for DRC
Examining the Runset Rules
pgate
psel
ngate
We have already discussed the INTERNAL check. This particular rule uses the
DIMENSION option, which checks polygon widths and lengths against a single
or multiple set of values. For our example, the rule checks the pgate layer that
was formed by the Boolean operator. The rule states that all pgates must be
rectangles of exactly 2 µm by 12 µm. Any polygons falling outside the check
limits are flagged on error layer 114.
This check performs a DIMENSION measurement on the ngate layer, with error
output on layer 115.
80
A Complete Design for DRC
Examining the Runset Rules
This Boolean operator looks for every contact layer that does not have poly
underneath. The result is the desired metal1 to tox contact. A permanent output
layer, toxcont, is formed that allows you to look at the output, as shown in
Figure 25. However, because the output layer is not required for viewing it can
be designated a TEMP layer.
Figure 25 Metal vs. Poly Contacts
poly
contact
metal1
contact
(toxcont)
81
A Complete Design for DRC
Examining the Runset Rules
ENCLOSE Check
The ENCLOSE Dimensional Check option checks spacings for polygons
nested inside other polygons. A spacing measurement determines precisely
where one polygon is situated inside another. Both edges and corners can be
checked. ENCLOSE checks can also be qualified, based on the characteristics
of the polygon. We have two ENCLOSE checks in our runset.
This checks our newly formed toxcont layer to ensure that the contact is inside
the tox layer by at least 1.5 µm.
This checks our newly formed toxcont layer to ensure that the contact is inside
the metal1 layer by at least 1 µm. In addition, the TOUCH and OVERLAP
options flag any toxcont layers that are not completely surrounded by metal1.
The PARALLEL option specifies that only parallel orthogonal edges are
checked.
82
A Complete Design for DRC
Examining the Runset Rules
83
A Complete Design for DRC
Running Hercules
CHECK_45 = true
} (100)
Running Hercules
Be sure that you are in the directory where your adderdrc3.ev file is located;
that is, your_path/tutorial/Getting_Started_Hercules_DRC/addertest3.
To run Hercules, use the command:
hercules adderdrc3.ev
As before, your active window displays the execution process.
Output Results
As you can see by the activity during the execution process, our files are much
larger and contain more information than in previous examples. We carefully
examine the error and sum files, and explain in detail how to correlate the text
file results to the graphical files to be reviewed in Enterprise.
84
A Complete Design for DRC
Output Results
Error File
The error file, AD4FUL.LAYOUT_ERRORS, has a list of runset rule violations,
headed by ERR_. In fact, most of the selected rules trigger at least one error
polygon. By understanding how to interpret the results, you can easily scan the
file and quickly locate and fix the errors in the graphical database.
Example 14 AD4FUL.LAYOUT_ERRORS File for EX_ADDER_3 Library
name: EX_ADDER_3
LAYOUT ERRORS RESULTS: ERRORS
##### #### #### ### #### ####
# # # # # # # # # #
#### #### #### # # #### ###
# # # # # # # # # #
##### # # # # ### # # ####
======================================================================
ERROR SUMMARY
No Comment
EXTERNAL met1 { } (101) ........................... 2 violations found.
No Comment
EXTERNAL met2 { } (102) ........................... 2 violations found.
No Comment
EXTERNAL met1 met2 { } (103) ...................... 2 violations found.
No Comment
INTERNAL poly { } (104) ............................ 1 violation found.
No Comment
INTERNAL met2 { } (105) ........................... 2 violations found.
No Comment
CUT poly BY tox { } (106) .......................... 1 violation found.
No Comment
INTERNAL pgate { } (114) ........................... 1 violation found.
85
A Complete Design for DRC
Output Results
No Comment
INTERNAL ngate { } (115) ........................... 1 violation found.
No Comment
ENCLOSE toxcont BY tox { } (122) .................. 4 violations found.
No Comment
ENCLOSE toxcont BY met1 { } (123) ................. 4 violations found.
ERROR DETAILS
EXTERNAL met1 {
SPACING<3.000
WIDTH=2.000 } (101)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
INVH (16.500, 39.000) (21.500, 41.000) 2.000
ADFULAH (207.500, 64.000) (238.000, 66.000) 2.000
EXTERNAL met2 {
SPACING<3.000
LONGEDGE>=50.000
LONGEDGE_TO_EDGE<5.000
WIDTH=2.000 } (102)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ADFULAH (103.500, 17.000) (104.000, 58.500) 0.500
AD4FUL (4.500, 60.000) (8.500, 278.000) 4.000
86
A Complete Design for DRC
Output Results
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DGATE (28.500, 8.000) (28.500, 18.000) 0.000
DGATE (28.500, 23.000) (28.500, 38.000) 0.000
INTERNAL poly {
SPACING<2.000
EDGE_45<2.500
WIDTH=2.000 } (104)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DGATE (21.090, 16.090) (28.910, 23.910) 1.994
INTERNAL met2 {
SPACING<4.000
CONVEX_TO_CONVEX<4.500
WIDTH=2.000 } (105)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ADFULAH (204.000, 53.000) (207.000, 60.000) 3.000
AD4FUL (368.000, 268.000) (371.000, 269.000) 3.162
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
INV (11.500, 6.500) (13.500, 7.500)
87
A Complete Design for DRC
Output Results
INTERNAL pgate {
WIDTH=2.000
DIMENSIONS = [2.000,12.000] } (114)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
INVH (24.500, 26.500) (27.000, 38.500) 0.000
INTERNAL ngate {
WIDTH=2.000
DIMENSIONS = [2.000,6.000] } (115)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TGATE (11.500, 0.000) (14.000, 6.000) 0.000
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TGATE (21.500, 20.500) (22.000, 23.500) 0.500
TGATE (3.000, 1.000) (4.000, 4.000) 1.000
TGATE (4.000, 0.000) (7.000, 1.000) 1.000
TGATE (3.000, 0.000) (4.000, 1.000) 1.414
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure ( lower left x, y ) ( upper right x, y ) Distance
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
88
A Complete Design for DRC
Output Results
Summary File
Before we begin to explore these errors, we complete our text file examination
by looking at the summary file located in the run_details directory. The .sum file
appears to repeat the information in the error file, listing each runset rule and
summarizing the number of violations for each. However, the .sum file also
provides information on the Data Creation layers, which were created by the
additional statements in adderdrc3.ev. Combining the information in the two
files gives us a fairly complete picture of our design and tells us what we need
to observe when we get into Hercules-Explorer.
In Example 15, notice the emphasized sections.
Example 15 AD4FUL.sum File for EX_ADDER_3
89
A Complete Design for DRC
Output Results
OPTIONS {
ALL_TEXT_GLOBAL=FALSE
ASCII_ONLY=FALSE
ATTACH_TEXT=FALSE
BOX_CORNER=FALSE
CHECK_REF_LIB=TRUE
COUNT_TRAPS=FALSE
ERR_LIMIT_PER_CHECK = UNLIMITED
ERR_PREFIX = ERR
EXPLODE_AREFS=FALSE
EXPLODE_HOLDING_CELL_LIMIT=0
EXPLODE_LIMIT=0
FLAG_ALL_AREF_ERRORS=FALSE
FLAT_COUNT=FALSE
FLAT_ERROR=FALSE
GENERATE_INSTANCE_NAME=TRUE
HIERARCHICAL_DELIMITER = \
IGNORE_CASE=FALSE
INCREMENTAL_CELLS=FALSE
INCREMENTAL_CELLS_FILE =
INSTANCE_PREFIX =
NET_PREFIX =
SELECT_CELL_TO_NO_EXPLODE=TRUE
EQUIV_TO_NO_EXPLODE=TRUE
SCHEMATIC_TO_NO_EXPLODE=TRUE
BLACK_BOX_TO_NO_EXPLODE=TRUE
PROTOTYPE_PLACEMENTS=FALSE
NO_MERGE=FALSE
GENERATE_INSTANCE_NAME=TRUE
PRINT_ERRSUM_FILE=TRUE
MAXIMUM_CELLNAME_LENGTH=32
SIZE_ENDPOINTS=FALSE
SNAP_RES=TRUE
SQUARE_CORNER=FALSE
STOP_ON_GROUP_ERROR=TRUE
TEXT_RECT=0.000
USE_EXPLODED_TEXT=FALSE
EXPLORER_DATA=TRUE
WIDTH=2.000
90
A Complete Design for DRC
Output Results
MAGNIFICATION_FACTOR=1.000
OUTPUT_MAGNIFICATION_FACTOR=1.000
POLYGON_COUNT_IN_ASSIGN = FALSE
FLAT_POLYGON_COUNT = FALSE
}
PREPROCESS_OPTIONS {
CELL_PROFILE = FALSE
CELL_PROFILE_CNT=20
CHECK_PATH_ENDPOINTS = TRUE
CHECK_PATH_45 = TRUE
CHECK_PATH_90 = FALSE
DESIGN_STATS = TRUE
TREE = TRUE
CELL_STATS = TRUE
PRINT_PREPROCESS_FILES = TRUE
}
TECHNOLOGY_OPTIONS {
VIA_AUTO_EXPLODE = TRUE
SUBLEAF_AUTO_EXPLODE = 6
ALLOW_EXPLODE_WITH_TEXT = TRUE
POST_VCELL_EXPLODE_CELL_SIZE <= 10
EXPLODE_CELL_SIZE_PERCENT = 70
CELL_SIZE_AUTO_EXPLODE <= 10
EXPLODE_AREFS = FALSE
EXPLODE_1XN_AREFS = FALSE
EXPLODE_DATA_CELL_LIMIT = 4
POST_VCELL_EXPLODE_DATA_CELL_LIMIT = 12
EXPLODE_CELL_SIZE_PERCENT_OF_TOP = 70
EXPLODE_BIG_SPARSE_CELL = TRUE
EXPLODE_HOLDING_CELL_LIMIT = 1
EXPLODE_PLACEMENT_LIMIT = 1
POST_VCELL_EXPLODE_HIER_SPARSE_CELL = TRUE
}
EVACCESS_OPTIONS {
PATH = /remote/wwas1/hercules/venu/HERCULES_DOC/tutor/
TUTORIAL_LAB/Getting_Started_Hercules_DRC/addertest3/
run_details/evaccess
LIBRARY = AD4FUL
CREATE_MSG_VIEW = TRUE
CREATE_NETLIST_VIEW = TRUE
CREATE_XREF_VIEW = TRUE
CREATE_GRAF_VIEW = TRUE
}
ASSIGN {
tox (1)
poly (5)
well (31)
psel (14)
91
A Complete Design for DRC
Output Results
cont (6)
met1 (8)
met2 (10)
via (19)}
TECHNOLOGY_OPTIONS {
VCELL_PASS {
STYLE = PAIRS
ITERATE_MAX = 15
ARRAY_ID = TRUE
EXPLODE_INTO_VCELL = SMART
MIN_COUNT = 20
TOP_PERCENT_OF_VALUE = 40
}
}
Preprocess Step 2 : Vcell_pass Arrays and Pairs Iteration 1
Pairs time = 0:00:00 User=0.01 Sys=0.00 Mem=6.936
VCELL_PASS 1, no changes.
Checking database:
92
A Complete Design for DRC
Output Results
SNAP {
ASSIGN_LAYERS = 0.010
tox {0.010000}TEMP=tox
poly {0.010000}TEMP=poly
well {0.010000}TEMP=well
psel {0.010000}TEMP=psel
cont {0.010000}TEMP=cont
met1 {0.010000}TEMP=met1
met2 {0.010000}TEMP=met2
via {0.010000}TEMP=via
}TEMP=snap_out
No output written.
Layer "snap_out" is empty.
1 polygon snapped.
Check time = 0:00:00 User=0.01 Sys=0.01 Mem=6.380
GRID_CHECK {
ASSIGN_LAYERS=TRUE
tox={ CHECK_45=TRUE }
poly={ CHECK_45=TRUE }
well={ CHECK_45=TRUE }
psel={ CHECK_45=TRUE }
cont={ CHECK_45=TRUE }
met1={ CHECK_45=TRUE }
met2={ CHECK_45=TRUE }
via={ CHECK_45=TRUE }
}(100)
0 non-45 violations found.
No output written.
Check time = 0:00:00 User=0.01 Sys=0.00 Mem=6.302
EXTERNAL met1 {
SPACING<3.000 } (101)
WARNING - 2 spacing violations found.
Check time = 0:00:01 User=0.01 Sys=0.04 Mem=8.544
EXTERNAL met2 {
SPACING<3.000
LONGEDGE>=50.000
LONGEDGE_TO_EDGE<5.000 } (102)
WARNING - 2 spacing violations found.
Check time = 0:00:00 User=0.00 Sys=0.00 Mem=8.746
93
A Complete Design for DRC
Output Results
SPACING<1.000
TOUCH=TRUE } (103)
WARNING - 2 spacing violations found.
Check time = 0:00:00 User=0.01 Sys=0.00 Mem=7.653
INTERNAL poly {
SPACING<2.000
EDGE_45<2.500 } (104)
WARNING - 1 width violation found.
Check time = 0:00:00 User=0.01 Sys=0.01 Mem=7.590
INTERNAL met2 {
SPACING<4.000
CONVEX_TO_CONVEX<4.500 } (105)
WARNING - 2 width violations found.
Check time = 0:00:00 User=0.00 Sys=0.00 Mem=8.684
INTERNAL pgate {
DIMENSIONS = [2.000,12.000] } (114)
WARNING - 1 violation found.
Check time = 0:00:00 User=0.00 Sys=0.01 Mem=8.575
94
A Complete Design for DRC
Output Results
INTERNAL ngate {
DIMENSIONS = [2.000,6.000] } (115)
WARNING - 1 violation found.
Check time = 0:00:00 User=0.00 Sys=0.00 Mem=8.622
Checks complete.
Total check time = 0:00:01 User=0.10 Sys=0.11 Mem=8.887
95
A Complete Design for DRC
Viewing Data Creation Layers in Enterprise
96
A Complete Design for DRC
Viewing Data Creation Layers in Enterprise
97
A Complete Design for DRC
Viewing Data Creation Layers in Enterprise
98
A Complete Design for DRC
Introducing Hercules-Explorer
You now have the gate layer 111 overlaid on your original design. You can
reference as many of the other layers as you like. For example, you can
reference pgate_inv. Also, if you would rather look at only INV, replace all
instances of INV with DGATE in the previous instructions.
If you would like to view the error polygon structures in Enterprise, you can do
so now by opening the TOP_ERR block in the EX_ADDER_3_ref library. You
should, however, also complete the next part of the tutorial, which uses
Hercules-Explorer to view the design errors.
Note:
Once you have finished viewing the error polygon structures, close the
existing library and exit the Enterprise session. To quit Enterprise, in the
command window enter:
exit
Introducing Hercules-Explorer
Hercules-Explorer, used in combination with Enterprise,Virtuoso, LTL, or
ICStation, makes it easy to locate a design error. The following sections
introduce the fundamentals of running Hercules-Explorer and provide basic
examples to familiarize you with the program. These examples assume you are
using Enterprise as your layout viewing tool. For instructions on using other
layout tools, refer to the Hercules Reference Manual.
The following instructions for using Hercules-Explorer to process runsets
assume that you have not run Hercules on adderdrc3.ev in the UNIX shell. If
you have run in the UNIX shell, be aware that most of the information in the
Hercules-Explorer dialog boxes is filled in automatically.
Running Hercules-Explorer
Begin by making sure you are in the addertest3 directory.
Run Enterprise by using the command:
Enterprise
From the Verification menu choose Explorer > Explorer DRC.
The Hercules-Explorer dialog box appears, as shown in Figure 30.
99
A Complete Design for DRC
Introducing Hercules-Explorer
Choose the File button in the upper left of the screen. A pull-down menu
appears, as shown in Figure 31.
100
A Complete Design for DRC
Introducing Hercules-Explorer
Choose Load from the pull-down menu. The Load Hercules Data dialog box
appears.
Figure 32 Load Hercules Pop-Up
101
A Complete Design for DRC
Introducing Hercules-Explorer
Choose AD4FUL in the Layout Block window. When the structures load,
Enterprise displays the top-level AD4FUL structure. The window appears as
shown in Figure 34.
102
A Complete Design for DRC
Introducing Hercules-Explorer
103
A Complete Design for DRC
Introducing Hercules-Explorer
104
A Complete Design for DRC
Introducing Hercules-Explorer
Keep ADFULAH as your selected Layout Block and choose the EXTERNAL
met2 rule.
Again, a spacing violation is flagged. This time, met2 must have a distance of 3
µm from the other met2 (on layer 10), as shown in Figure 36.
Figure 36 ADFULAH EXTERNAL Error Displayed in Enterprise Using
Hercules-Explorer
105
A Complete Design for DRC
Introducing Hercules-Explorer
To view errors with this organization, start by choosing the Options menu button
along the top of the main window.
Choose Checks from the pull-down menu. A new window opens, as shown in
Figure 37.
Figure 37 List of Design Rules after Choosing Checks Menu
The window lists all design rules that generate error polygons. Initially the
window enables the display of all vectors. Selecting a vector toggles its display
status, while globally selecting All Checks On or All Checks Off changes the
display status of all vectors.
Choose All Checks Off.
Choose the EXTERNAL met2 rule to enable the display of only this single
vector.
106
A Complete Design for DRC
Introducing Hercules-Explorer
Choose ADFULAH from the Layout Block window. The main Hercules-Explorer
window appears as shown in Figure 38.
Figure 38 Hercules-Explorer Main Window with Single Vector Display Enabled
The window shows only those structures affected by the selected rule. Any
single rule or combination of rules can be selected with this method to further
aid you in analyzing your design.
As these examples show, Hercules-Explorer makes the analysis job much
easier than opening structures and analyzing the error polygons that appear.
You can also continue to use Hercules-Explorer while editing the design if you
have a complete Enterprise editing license or are using Hercules-Explorer with
another supported editing tool. To correct all the design errors in this mode, be
sure to read the Hercules-Explorer chapter in the General Information on Using
Hercules, Chapter 7, which provides a complete list of the HXDRC features
and capabilities.
107
A Complete Design for DRC
Introducing Hercules-Explorer
Note:
The chosen runset rules for the tutorial examples flag errors that cannot
easily be fixed.
108
A Complete Design for DRC
Introducing Hercules-Explorer
109
A Complete Design for DRC
What’s Next?
What’s Next?
Chapter 5, “Hercules DRC Migration,” is for Dracula users who need to convert
Dracula runsets to Hercules runsets. You learn how to use various translation
options in order to become familiar with operational and syntactical differences
between the two tools. If you have already completed Chapters 5 and 6, or if
you are not a current Dracula user, continue on to Chapter 7, “Introduction to
Hercules HLVS,” for an introduction to Hercules LVS.
110
5
Hercules DRC Migration5
111
Hercules DRC Migration
What Is Drac2He?
What Is Drac2He?
Hercules contains a Dracula rule file translator, Drac2He. You execute the
translator from your UNIX command line using your Dracula DRC, LVS, or ERC
rule file as an argument.
Note:
Hercules also has the -dracula command-line option, which allows you to
give Hercules a Dracula rule file as input instead of a Hercules runset, and
run Drac2He as part of Hercules. Because this part of the tutorial
concentrates on the output from Drac2He, we do not use the -dracula option
to run Drac2He inside of Hercules, but instead run Drac2He separately on
the command line.
112
Hercules DRC Migration
Using the Migration Tutorials
-OutType
As you learned in the initial Hercules runset example in Chapter 2, “An Error-
Free Design for DRC,” you can output PERM layers or ERROR hierarchy or
both. When you run Drac2He, the default outputs both PERM layers and
ERROR hierarchy. This directly mimics what Dracula requires as output for all
dimensional checks. The -OutType option allows you to specify outputting
PERM layers or ERROR hierarchy. We demonstrate turning off the output of
the PERM layers and only outputting the ERROR hierarchy. Because the
113
Hercules DRC Migration
Getting Started with Drac2He
Hercules syntax does not require a PERM layer to be defined, outputting only
ERROR hierarchy is the preferred methodology, unless you want to add the
layer to your database or view it in a layout editor. For a more detailed
explanation of PERM, ERROR, and TEMP layer outputs, refer to “Writing
Output Results to Files” in Chapter 4, “A Complete Design for DRC.”
-rc
Historically, Hercules runsets use uppercase for input layers and lowercase for
derived layers. This is not required, but recommended to help make the runset
easier to read. By default, Drac2He automatically generates lowercase derived
layers and uppercase input layers. To produce a runset that has the identical
case as the input runset, you need to specify the -rc command line option.
-N
All of the Dracula syntax is copied by default into the translated runset and
placed in comments. This makes it easy for previous Dracula users to see the
correlation between the Dracula and Hercules commands and options. In some
cases, however, it makes it harder to read the resulting runsets because they
are filled with extraneous comments. The -N option allows you to disable the
generation of those comments.
114
Hercules DRC Migration
Getting Started with Drac2He
Argument Description
-BaseCell cellname Specifies gate array base cell. Uses double quotes
around the list when specifying more than one.
-OutType error | perm Chooses error hierarchy or PERM output definitions for
Dracula OUTPUT cells.
115
Hercules DRC Migration
How to Run Drac2He
Argument Description
116
Hercules DRC Migration
Translation Results for Migration1 Example
;*********************************************************************
*/
/* *DESCRIPTION
PRIMARY = AD4FUL
SYSTEM = GDS2
INDISK = DRAC_example.GDS
OUTDISK = OUTPUT
SCALE = 0.001 MICRONS
RESOLUTION = 0.001 MICRONS
MODE = EXEC NO
PROGRAM-DIR = ~/example/drac/
KEEPDATA = INQUERY
LISTERROR = 300
CHECK-MODE = FLAT
*END */
HEADER {
INLIB = DRAC_example.GDS
OUTLIB = EV_OUT
BLOCK = AD4FUL
GROUP_DIR = group
FORMAT = GDSII
OUTPUT_FORMAT = LTL
117
Hercules DRC Migration
Translation Results for Migration1 Example
OUTPUT_LAYOUT_PATH = .
}
OPTIONS {
IGNORE_CASE=TRUE
DRACULA_DEFAULTS=TRUE
RESOLUTION=0.001
NET_PREFIX = N_
}
EVACCESS_OPTIONS {
PATH = evaccess
CREATE_VIEWS = FALSE
}
TEXT_OPTIONS {
USE_COLON_TEXT=TRUE
TRUNCATE_FLAG=FALSE
REMOVE_TEXT_FROM_SHORT=TRUE
CONNECT_BY_NAME = MIXED_MODE
ATTACH_TEXT = ALL
}
/*
;*********************************************************************
; I N P U T - L A Y E R B L O C K
;*********************************************************************
*/
/* END BLOCK */
/* *END */
/*
;*********************************************************************
; O P E R A T I O N B L O C K
118
Hercules DRC Migration
Translation Results for Migration1 Example
;*********************************************************************
*/
119
Hercules DRC Migration
Translation Results for Migration1 Example
OUTPUT Hierarchy
As was mentioned previously, all of the output data from dimensional checks is
written to a PERM layer. For example, the first dimensional command,
INTERNAL, has the output written to PERM=cont_err1_out (98). The
VERBOSE option is also set in the dimensional commands, causing the output
of the INTERNAL to be written to the ERROR hierarchy. This is done to match
the OUTPUT of Dracula, but is not necessary. In the next translation of
migration1.drc, the OUTPUT is written only to the ERROR hierarchy.
120
Hercules DRC Migration
Translation Results for Migration1 Example
COMMENT Option
Each Hercules dimensional command contains the COMMENT option. This
option adds user comments, which appear in the summary file and in the error
file. The comments also appear in the Hercules-Explorer information window
with each command. Drac2He automatically copies the original Dracula
command into the COMMENT option to help former Dracula users understand
the Hercules version of the command they are trying to execute.
CASE of LAYERS
All ASSIGN_LAYERS are in uppercase and all TEMP layers, or derived layers,
are in lower case. For example, MET1, CONT, and MET2 are ASSIGN layers.
TEMP layers are met1_edges and toxcont.
121
Hercules DRC Migration
Translation Results for Migration1 Example
*/
122
Hercules DRC Migration
Translation Results for Migration1 Example
HEADER {
INLIB = DRAC_example.GDS
OUTLIB = EV_OUT
BLOCK = AD4FUL
GROUP_DIR = group
FORMAT = GDSII
OUTPUT_FORMAT = LTL
OUTPUT_LAYOUT_PATH = .
}
OPTIONS {
IGNORE_CASE=TRUE
DRACULA_DEFAULTS=TRUE
RESOLUTION=0.001
NET_PREFIX = N_
}
EVACCESS_OPTIONS {
PATH = evaccess
CREATE_VIEWS = FALSE
}
TEXT_OPTIONS {
USE_COLON_TEXT=TRUE
TRUNCATE_FLAG=FALSE
REMOVE_TEXT_FROM_SHORT=TRUE
CONNECT_BY_NAME = MIXED_MODE
ATTACH_TEXT = ALL
}
ASSIGN {
TOX (1)
POLY (5)
WELL (31)
PSEL (14)
CONT (6)
MET1 (8) text(63)
MET2 (10)
VIA (19)
}
INTERNAL CONT {
COMMENT = "WIDTH[L] CONT SELNE 0.3 OUTPUT CONT_err1 98 "
VERBOSE=TRUE
123
Hercules DRC Migration
Translation Results for Migration1 Example
EXTERNAL MET1 {
COMMENT = "EXT MET1 LT 3 OUTPUT MET1_err1 100 "
SPACING<3.000
VERBOSE=TRUE } PERM=MET1_err1_Out (100)
INTERNAL MET1 {
POINT_TOUCH=FALSE
NON_PARALLEL=FALSE
OUTPUT_EDGES=TRUE
SEGMENT>10.000} TEMP=MET1_edges
EXTERNAL MET1_edges {
COMMENT = "EXT MET1 LT 0.4 &"
SPACING<0.400
OUTPUT_EDGES=TRUE } PERM=E02420_Out (80)
DISCONNECT
This concludes our first set of simple Drac2He examples. The next section
goes into more detail on how substrate processing and Drac2He errors are
handled.
124
Hercules DRC Migration
Running Drac2He with Warnings and Errors
125
Hercules DRC Migration
Translation Results for Migration2 Example
/* *DESCRIPTION
PRIMARY = test2
SYSTEM = GDS2
INDISK = test2.gdsii
OUTDISK = test2_out.gds
SCALE = 0.001 MICRONS
RESOLUTION = 0.001 MICRONS
MODE = EXEC NOW
PROGRAM-DIR = /apps/cadence/dracula/bin/
FLAG-SELFTOUCH = YES
FLAG-ACUTEANGLE = YES
FLAG-NON45 = YES
FLAG-OFFGRID = YES 0.01
FLAG-SELFINTERS = YES
KEEPDATA = INQUERY
LISTERROR = YES
CHECK-MODE = FLAT
TRANSISTOR-NUM = 20000000
*END */
HEADER {
INLIB = test2.gdsii
OUTLIB = EV_OUT
BLOCK = test2
GROUP_DIR = group
FORMAT = GDSII
OUTPUT_FORMAT = LTL
OUTPUT_LAYOUT_PATH = .
}
/*
;**************************************************************
*/
126
Hercules DRC Migration
Translation Results for Migration2 Example
/* END BLOCK */
/* *END */
127
Hercules DRC Migration
Translation Results for Migration2 Example
/* ;----------------------------------------------------------
; CONTACT RULES
;--------------------------------------------------------------
*/
/* END BLOCK */
/* *END */
DISCONNECT
error.out
Example 20 shows the error.out file you created in your second translation of
the migration2.drc runset. Notice that all of your error and warning messages
are now in this file. You should take a minute to view the drc2_errorout.ev
runset. Notice that there are no errors or warnings in the Hercules runset file.
Finally, be aware that a detailed explanation accompanies each warning on the
SUBSTRATE translation. In general, warnings are just informational messages
noting an operation difference between Dracula and Hercules.
Example 20 Drac2He Error Output File with -E Option: error.out
/*parse error*//*PARSE ERROR: Line 121 -> .3*/
/*PARSE ERROR: Line 121 -> .3*/
/*PARSE ERROR: Line 121 -> output*/
/*PARSE ERROR: Line 121 -> co1*/
/*PARSE ERROR: Line 121 -> 54*/
If you would like to fix the syntax error and re-translate, execute the following
steps:
1. Edit the migration2.drc file.
2. Go to line 121, as the ERROR indicates.
3. Change the first command, wide, to width. Leave the rest of the line the
same and save the file. Enter:
128
Hercules DRC Migration
What’s Next?
What’s Next?
Now that you are familiar with the Drac2He translator, you can move on. In
Chapter 5, “Hercules DRC Migration,” you run another Drac2He translation and
then run Hercules on the resulting file. The Hercules run generates some
design rule violations that you view using Hercules-Explorer interfaced to
Virtuoso.
129
Hercules DRC Migration
What’s Next?
130
6
Hercules Migration with Hercules-Explorer6
131
Hercules Migration with Hercules-Explorer
Generating a Runset with Drac2He
132
Hercules Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
Starting Opus
The icfb command starts the Cadence Opus, version 4.2.2 or higher. See the
Hercules Reference Manual for earlier versions.
Enter the command:
133
Hercules Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
icfb &
Note:
If your SKILL load fails, include an explicit path. For example:
load "/l0/synopsys/bin/SUN32_58/skill_menu_4.4.il"
At this time you start a layout window in Opus, begin your Virtuoso session, and
then open the AD4FUL library.
134
Hercules Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
Now you should have the AD4FUL library in your path and you can continue.
1. Under Library choose AD4FUL.
2. Under Cell choose AD4FUL.
3. Under View double click Layout.
Now you should have the AD4FUL layout open in Virtuoso. Finally, before you
can run Hercules, you need to bring up the Synopsys GUI-based tools.
You should be prompted to enter or verify the Hercules run directory and
optional remote host for Hercules-Explorer. Complete the following steps:
1. Verify that the Hercules run directory is your_path/tutorial/
Getting_Started_Drac2he_DRC/migration3.
2. Under Hercules Runset, enter drc3.ev.
3. Under GDSII Scale uu/DBU, enter 0.001.
4. Verify that the GDSII unit is set to micron and GDSII case sensitivity is set
to preserve.
5. Verify that GDSII User Property Separator is a comma (,)
6. Click OK at the top of the menu.
135
Hercules Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
Opening Hercules-Explorer
When the run is complete, the Hercules-Explorer LVS window appears with the
words “Layout Extract Errors” in the Schematic Layout box (see Figure 43).
136
Hercules Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
Select this text with the cursor and the Hercules-Explorer DRC window
appears.
137
Hercules Migration with Hercules-Explorer
Debugging with Hercules-Explorer in the Opus Environment
Your Hercules job should now be complete and a list of design errors should be
loaded in your Hercules-Explorer DRC window.
138
Hercules Migration with Hercules-Explorer
Debugging with Hercules-Explorer in the Opus Environment
When DGATE is selected, the Virtuoso editing window automatically loads the
selected block, as shown in Figure 46
Figure 46 DGATE
139
Hercules Migration with Hercules-Explorer
Debugging with Hercules-Explorer in the Opus Environment
All the error categories are displayed in the Error Check selection box. Select
“1 : Grid (non-90 path center line)” in the Error Check selection box (see
Figure 47).
Note:
This is the first and only error in the DGATE block. The 1 before the colon (:)
indicates the number of violations described on the right side of the colon.
Figure 47 Error Check Selection Box
When the error is selected, a description of the error appears in the Description
box (see Figure 47). The actual error appears in the Virtuoso editing window,
as shown in Figure 48.
140
Hercules Migration with Hercules-Explorer
Debugging with Hercules-Explorer in the Opus Environment
Figure 48 Grid (non-90 path center line) Error in Virtuoso Editing Window
141
Hercules Migration with Hercules-Explorer
Debugging with Hercules-Explorer in the Opus Environment
The ADFULAH block is then opened in the Virtuoso editing window, as shown
in Figure 50.
Figure 50 ADFULAH Block Shown in Virtuoso Editing Window
142
Hercules Migration with Hercules-Explorer
What’s Next?
Select the first error in the ADFULAH block, EXTERNAL MET1. The
description of the error is displayed in the Description box, while the actual
error appears in the Virtuoso editing window (see Figure 51).
Figure 51 External Met1 Error in Virtuoso Editing Window
To view the next error, EXTERNAL MET2, select it by clicking the cursor on the
error, or by clicking the down arrow in the top right-hand corner of the Hercules-
Explorer DRC window. (The up arrow displays the previous error.)
After you have fixed all or some of the errors, you can again choose Stream Out
and Run Hercules under the Synopsys Tools menu to rerun Hercules and verify
edits.
What’s Next?
You have now completed a Dracula to Hercules translation, job execution, and
debug example. If you plan to write Hercules runsets in the future, or if you
want more details on Hercules commands, go back and complete the tutorial in
Chapter 4. If you have already completed Chapter 4, or if you are not interested
in this aspect of Hercules DRC, continue on to Chapter 7 for an introduction to
Hercules LVS.
143
Hercules Migration with Hercules-Explorer
What’s Next?
144
7
Introduction to Hercules HLVS7
145
Introduction to Hercules HLVS
Before You Start
146
Introduction to Hercules HLVS
What is Hierarchical LVS?
147
Introduction to Hercules HLVS
What is Hierarchical LVS?
example of these situations. Notice that the polygons either abut or only slightly
overlap.
Figure 52 Interaction of Data Across the Hierarchy
Well
co pc co
rx bp
m1
Notice that this p-device has an instance of block a within block b. Block a, in
turn, has layers pc, rx, co, and m1, each layer having one or more geometries.
However, bp is in block b. Because bp is not in block a, there is some data
interaction across the hierarchy. Preferably, bp would be a part of block a.
148
Introduction to Hercules HLVS
What is Hierarchical LVS?
Hierarchical Texting
Hercules looks at text hierarchically. Therefore, text placed in lower level cells,
or what many refer to as pin text in library cells, can be read by Hercules and
attached to the nets in that cell. This is also true for text placed on pins in
memory blocks or other blocks (cells) besides the top one. In some cases, text
is placed over a layer or net but at a different level of the hierarchy. You must tell
Hercules the rules for attaching this type of text by setting the ATTACH_TEXT
option in the TEXT_OPTIONS section of the runset. This option is reviewed
later in the chapter, when we go through our Hercules LVS runset in detail.
Schematic Layout
{ block b
{ port A TOP-NET
{ inst m1=n
{pin A=GATE... } block b
}
A
{block topblock
{ inst x1=block b m1
{ pin TOP-NET=A... }
}
149
Introduction to Hercules HLVS
What is Hierarchical LVS?
150
Introduction to Hercules HLVS
What is Hierarchical LVS?
The equivalence file is not a required input file; however, if you do not supply
the file, Hercules adds a preprocessing step to analyze quickly the devices and
connections of each cell in the layout and schematic, automatically generating
this file. For details on the equivalence file and setting its options and variables,
refer to the Hercules Reference Manual.
Hercules works its way up the hierarchy, comparing each sub-block listed in the
equivalence file. Once a sub-block is compared, Hercules creates a model of
the port relationship of the sub-block, to be used at the next level of hierarchy.
Once the devices in a sub-block are compared, Hercules never needs to
process the information on those devices again. If you have a very good
hierarchical design, when Hercules reaches the top block it probably compares
only port relationships between sub-blocks. In other words, instead of
comparing five million transistors in the top block, it compares only a few
hundred sub-block port relationships.
Figure 54 is an example of how hierarchy might look in a schematic and layout
netlist. Following Figure 54 is list of steps describing how Hercules would
process the hierarchy and compare the two netlists. For this example, if the
names of two cells are the same, they contain the same logic. Remember, you
cannot always assume this fact in all designs.
151
Introduction to Hercules HLVS
What is Hierarchical LVS?
Schematic Layout
A A
B C
C
D
B
E F G
F G
I J H I J
M N
K L K L
1. Hercules reads in the schematic and layout netlists and the equivalence file.
2. Hercules determines which sub-blocks in the equivalence file make up the
lowest level of hierarchy. In our example, those are I, K, L, F, and G. The
lowest level of hierarchy is defined as the bottom of each branch of a tree.
3. A flat representation of the netlists for each of the sub-blocks is generated.
In our example, G is the only sub-block that has hierarchy beneath it. Sub-
blocks M and N would be flattened into the layout netlist of G before the
schematic and layout netlists of G are compared.
4. These flat sub-blocks are compared, and, if they match, a port
representation of each is created and saved for use in the next level of
hierarchy.
5. Next, Hercules reads in the sub-blocks at the next level. In our example,
these are J and C. B is not included in this level because it depends on J, so
it must wait until J is compared. B is in the next level of hierarchy.
6. Flat netlists are generated for sub-blocks J and C. In order to do this, port
relationships for child cells, generated in step 4, are substituted into the
netlists in place of the cell definitions and instances of the child cells.
7. The flat sub-blocks are compared and, if they match, a port representation
of each of these, J and C, is created.
8. The same process is repeated for the next level, which contains cell B, and
finally the top cell, A.
This example of hierarchy comparison is a very simple one. Many variations of
this hierarchy comparison exist. For example, what if cell K in the schematic did
152
Introduction to Hercules HLVS
Designing to Benefit from Hierarchical LVS
not match cell K in the layout? In the following chapters, we go through different
flows of hierarchy processing, each of which depends on different ways of
telling the Hercules comparison engine to operate. For now, however, our
tutorial in this chapter uses a sample flow similar to the one described
previously.
153
Introduction to Hercules HLVS
Designing to Benefit from Hierarchical LVS
Schematic Layout
Top Top
A C A C
B D B D
Schematic Layout
Top Top
B
A C A F
C E
B D
Notice the major problem with this design: block names, such as the bottom
ones, B and D vs. C and E, are not the same, making it difficult to find the levels
in the layout that do correspond to those in the schematic.
154
Introduction to Hercules HLVS
Designing to Benefit from Hierarchical LVS
Choose your equivalence points based on easy debug points and natural
breaks in the design hierarchy. For example, in a standard cell or ASIC design,
the library cells or standard cells are natural equivalence points, because most
design flows require the schematic and layout blocks to match at this level.
Functions built from these standard cells are another natural point for
equivalences, but are not required for improved performance and might not be
a requirement of your design style.
You should include functions as equivalence points to get another level at which
to debug errors before you reach the macro block level. Macro blocks are
usually required equivalence points in a standard cell design. They should be
listed in the equivalence file to improve your runtime, memory usage, and to
give you a good intermediate level of hierarchy for debug.
In the case of memory blocks, there should be an equivalence point set up for a
register level block (8 or 9 bits), or, if that is not available, a bit cell. Also, if
possible, there should be one or two intermediate points, below the top
memory block and at the top memory block level.
Good:
Bad:
155
Introduction to Hercules HLVS
Difficulties Presented by Hierarchy in LVS
Good:
Bad:
156
Introduction to Hercules HLVS
Difficulties Presented by Hierarchy in LVS
Port Swappability
The major difficulty hierarchy presents in the comparison stage is determining
port swappability of sub-blocks. There are two types of swappable ports:
• Independently swappable ports are logically equivalent ports that can be
interchanged without affecting their function within the block. For example,
any inputs of an NAND gate can be swapped without changing the function
of the gate.
• Dependently swappable ports rely on their functional relationship within the
block and, therefore, cannot be separated from one another.
We go through a simple explanation of each in this chapter.
A X
B Y
OUT
C X
D Y
Hercules has algorithms built into the code to determine the most complex
swappability cases, but, in some flows, the designers might want to restrict
what blocks are allowed to have swappable ports. You should set
DETECT_PERMUTABLE_PORTS to TRUE in the COMPARE options section,
157
Introduction to Hercules HLVS
Difficulties Presented by Hierarchy in LVS
and then set the same option to FALSE in the equivalence file for each block
whose swapping you want to restrict.
158
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
Before AUTO_EXCLUDE_EQUIV
Schematic Layout
Block Block
Buffer Buffer
Buffer
After AUTO_EXCLUDE_EQUIV
Schematic Layout
Block Block
159
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
Before we execute our first Hercules LVS job, we review the format and content
of these four files.
160
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
EQUIVALENCE = dac96.eqv
SCHEMATIC = dac96.hrc
SCHEMATIC_FORMAT = HERCULES
}
/*=====================================================*/
/* LVS NETLIST EXTRACTION SECTION OF RUNSET */
/*=====================================================*/
161
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
162
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
SUBSTRATE by subtie
}
/*=====================================================*/
/* LVS COMPARISON SECTION OF RUNSET */
/*=====================================================*/
163
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
164
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
Hercules can find the layout libraries and other input files, as well as where to
write intermediate processing files and output files. A description of
LAYOUT_PATH, INLIB, BLOCK, OUTLIB, FORMAT, and GROUP_DIR can be
found in Chapter 2, “An Error-Free Design for DRC.”. These variables are
generally set for all types of Hercules jobs. We describe the remaining variables
listed in the HEADER section. These four are unique to Hercules LVS jobs:
COMPARE_DIR. This setting tells Hercules where to place all the COMPARE
output files it temporarily or permanently creates. The default value for the
COMPARE_DIR variable is run_details/compare/. The COMPARE directory
contains all of the intermediate files Hercules uses during the actual layout
netlist versus schematic netlist comparison. This directory also contains debug
information for each cell that Hercules LVS uses as a comparison point. We
describe this in more detail when we examine the output files written to this
directory.
SCHEMATIC. This variable is set to the file name, including the path, of the
schematic netlist file. This variable is required to execute a Hercules LVS run. If
you do not specify this file, or if Hercules cannot find the file you specify, the
Hercules job terminates with an error indicating that the schematic file is not
specified or that Hercules cannot open the schematic netlist for reading.
165
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
than Hercules, Hercules calls NetTran, the netlist translation utility. See the
section “NetTran” later in this chapter.
166
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
VBB
VEE
VSS
GND
GROUND
EDTEXT. The EDTEXT option specifies a path and file name that contains text
placement information. The text from this file is placed in the extracted netlist
along with any text found in the layout. If there is text in the layout and text in an
EDTEXT file located on the same net, the text in the EDTEXT file takes priority
over the layout text and is applied to the net. We review the dac96.text file later
in this chapter. An EDTEXT file is not required for Hercules LVS.
167
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
NET_PREFIX. Hercules generates unique numbers for all nets that are not
texted in the layout or in an EDTEXT file. The NET_PREFIX option allows you
to specify a string that is added to the front of the numeric net names. This
helps you distinguish nets named by Hercules and nets with numeric text. In
our example, NET_PREFIX is set to XX_. Another typical NET_PREFIX is
NET_.
If a NET_PREFIX is not specified and numeric text is found in the layout, the
text is discarded to avoid shorts between the numeric text and a net number
Hercules assigns. If a NET_PREFIX is specified and text is found that begins
with the NET_PREFIX and contains only numeric text, the text is discarded to
avoid shorts between the text and a net number.
Preprocessing Options
The PREPROCESS_OPTIONS section allows you to specify the printing of
information to show the Hercules efficiency at processing the design hierarchy,
as well as to specify the setting of path grid checking options. You can set
options for increased information in the block.LAYOUT_ERRORS file and the
tree files. You can also set options for path grid checking, to be done when the
layers are read during the ASSIGN section. The remainder of the grid checking
is done during the brace command, discussed in Chapter 2, “An Error-Free
Design for DRC.”. You may also want to use the CHECK_PATH_90 option; refer
to Chapter 2.
Texting Options
The TEXT_OPTIONS section allows you to define how your text is attached to
polygon data, and to replace text strings or text characters, if necessary. There
is also a section where you can define nets for
FIND_SHORTEST_PATH_BETWEEN_TEXT_SHORTS. We have an example
of this option later in the tutorial. In this example, we define only one of the
TEXT_OPTIONS.
ATTACH_TEXT. The ATTACH_TEXT option defines how the text in the layout
is attached to the polygon data across the hierarchy. In our example we define
ATTACH_TEXT as ALL. This tells Hercules to create new ports and nets, if
necessary, for attaching text. When text from a cell is being applied, if no
polygon in the cell interacts with the text origin, this option checks to see if
polygons on the lower level cells interact with the text origin. If these polygons
exist and do not form a physical port to the cell containing the text, this option
creates a port, from a polygon of a lower level cell to the cell containing the text.
168
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
This new port connects to a newly created net in the cell containing the text. It
is named by that text. In Figure 59 we give an example of how this might occur
in a design.
Figure 59 Attaching Text
* A1
* A2
* A3
Cell B
Cell A
* A1
* A2
* A3
Layer Assignments
The ASSIGN section assigns symbolic names to the database layers found in
the design. Our design uses 11 polygon layers and 4 text layers. All input
polygon and text layers must be defined in this section before they are used in
the remainder of the runset. In our example, notice that we have merged layers
1 and 2 together and defined a new layer, DIFF. You can read in a single layer
and assign it to different names or combine layers, as we have done. We do not
actually process the DIFF layer in our example, but have done this just to give
an example of syntax.
169
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
Device Definitions
This section of the runset contains the designed device commands for PMOS,
NMOS, RES, and DIODE extraction. Hercules extracts and netlists these
devices based on the layers defined in the commands and the type of
command used. Hercules also supports a CAPACITOR command for capacitor
extraction, DEVICE and GENDEV commands for generic device extraction,
and an NPN or PNP command for bipolar transistor extraction. A complete
definition of each of these commands and their options is in Chapter 5 of the
Hercules Reference Manual.
In general, each design device command is followed by a device name, in our
example, ndio, rp, n, and p. The next argument is the device layer used to
define the body of the device. In the case of the diode and resistor, the device
layer should interact with one polygon from each terminal layer. For the
MOSFETs, the device layer polygon must edge touch exactly one polygon of
each of the terminals, unless the MOS_SINGLE_SD or
MOS_MULTITERM_EXTRACT options are set to TRUE. The two terminal
layers follow the device layer, and, finally, in the case of the MOSFETs and
diode, the last layer listed is the bulk layer. The bulk layer must completely
enclose the device layer. Example 26 is a general example of syntax for a
designed device command. Later in the tutorial we go into more graphical detail
on designed device extraction.
Example 26
NMOS device_name device_layer terminal terminal bulk {
options....} temp = output_definition
170
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
Texting Commands
The TEXT command defines how the text files defined in the ASSIGN section
or from text files (for example, EDTEXT) are associated with polygon layers.
For example, all text defined for M1 in the ASSIGN section should be attached
to the M1 layer, and all of the text defined by POLY in the ASSIGN section
should be attached to the field_poly layer (defined as texting). You can also text
a layer with a string. In our example we text NWELL with the VDD string and
SUBSTRATE with the GND string. The origins of TEXT placements in the text
layer must overlap the polygons in order to be applied.
Graphical Output
The GRAPHICS command contains layer assignments for the special graphic
database, which can be created from the extracted database. The database is
identical to the internal database from which the netlist was extracted. This
database includes any modification caused by TECHNOLOGY_OPTIONS,
Boolean commands, or any other commands specified in the runset file. Netlist
information is attached to the graphic data in the form of properties. This
information includes net number, net text (if any), whether the net is an I/O for
the block, instance number, device number, and device type. The
NET_PREFIX is added to the net numbers, the instance numbers are prefixed
with I, and the device numbers are prefixed with the device name.
171
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
This database can be viewed in any layout editor to aid in the debugging of the
netlist extraction. Hercules-Explorer, a graphical debugger, can also be used to
read this database for easy graphical debug of extraction problems. Any layer
generated in the Hercules runset can be output to this database. To
automatically generate a list of the layers required by Hercules-Explorer, we
have used the explorer_layers (100) option. This outputs all of the layers used
to generate devices and connectivity starting at layer 100. The block.sum file
we discuss later contains a complete list of the layers and layer numbers
generated by this option.
172
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
173
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
FILTER. We have set the FILTER option to TRUE so that devices that are
unused in either the layout or schematic are removed before comparison. The
types of unused devices filtered out depend on the FILTER_OPTIONS
specified in the EQUATE for each device.
174
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
175
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
D
D
G1
G1 G#1 SD#1
G2 G2 G#2
G3 G#3
G3 SD#2
S
S
176
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
D D
G G
S S
177
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
D D
G1
SD#1 SD#1
G1 G1
G#1 G#1
G2 G3 G2 G#2 G3 G#2
G4 G#3 G4 G#3
SD#2 SD#2
G4
S S
A G1 SD#1
G#1
G2
G1 G#2
SD#2 G1 SD#1
G#1
B
G3
G#2
G2 G3
G2 SD#1 SD#2
G#1
C G3
B G#2
SD#2
178
Introduction to Hercules HLVS
Overview of Required and Optional Input Files for LVS
179
Introduction to Hercules HLVS
The Schematic Netlist File
MOSFET is in cell B and all of the gate is in cell B. However, there is a portion
of the source/drain region that is also in cell A, the parent of B.
When the Boolean operations are performed to generate the MOSFET layers in
the layout extraction, and there are instance specific interactions across the
hierarchy, the device is generated in cell A (the parent), even though it was
intended to be placed in cell B. An instance-specific interaction would be a case
where one placement of cell A interacts with cell B differently than the other
placements.
A device must have all terminals directly connected to ports on a cell, and this
connectivity must be consistent across all instances of that cell. In such a case,
those devices would be removed from the higher level and replaced in the cell.
The default for this option is FALSE. In general, for designs that were not
designed with hierarchical verification in mind (in other words, they do not
follow the guidelines of good hierarchical design given in Chapter 8), you
should set PUSH_DOWN_DEVICES = TRUE.
DETECT_PERMUTABLE_PORTS. DETECT_PERMUTABLE_PORTS
automatically extracts and applies swappability rules. The default is FALSE, but
you should set this option to TRUE to avoid miscompares due to swappability
issues. It handles dependent or independent swappability without additional
input. The option can be set in the COMPARE section, as we have done here,
or in the EQUIV file for individual cells. The DETECT_PERMUTABLE_PORTS
option extracts the symmetries for each block, and then the information is
applied when determining equivalence for the parent cell of the block.
Therefore, when DETECT_PERMUTABLE_PORTS is specified globally, it does
not operate on the top-level block. To extract symmetries for the top-level block,
you must explicitly invoke DETECT_PERMUTABLE_PORTS in the entry for the
top-level block in the EQUIV file.
180
Introduction to Hercules HLVS
The Schematic Netlist File
utility NetTran (executed as nettran). To avoid too much confusion, our first
example starts with a Hercules-formatted netlist. The following is a brief
overview of NetTran and its functionality. For more details see the Hercules
Reference Manual.
NetTran
NetTran is a netlist translation utility. There are two ways to execute NetTran.
Argument Description
181
Introduction to Hercules HLVS
The Schematic Netlist File
Argument Description
182
Introduction to Hercules HLVS
The Schematic Netlist File
Argument Description
-sp-od pattern Define the order of the output ports from Verilog
to Spice.
183
Introduction to Hercules HLVS
The Schematic Netlist File
Argument Description
-verilog-busLSB Verilog bus starts with least significant bit (0) first.
184
Introduction to Hercules HLVS
The Schematic Netlist File
Argument Description
{PROP_DEFAULT}
{CELL INVA
{PORT IN OUT}
{INST $1I1=N
{PROP L=1}{PROP W=13}
{PIN OUT=D IN=G GND=S GND=VBB}}
{INST $1I2=P
{PROP L=1}{PROP W=20.5}
{PIN VDD=D IN=G OUT=S VDD=VBB}}
}
{CELL DATBIDIR
{PORT DIN DIO DOUT EN}
{INST $1I10=INVA
{PIN DIN=IN $1N15=OUT}}
{INST $1I11=INVA
{PIN DIO=IN $1N34=OUT}}
{INST $1I3=N
{PROP L=1}{PROP W=13}
{PIN DIO=D $1N23=G GND=S GND=VBB}}
{INST $1I4=P
{PROP L=1}{PROP W=20.5}
{PIN VDD=D $1N19=G DIO=S VDD=VBB}}
{INST $1I49=INVA
{PIN $1N15=IN $1N17=OUT}}
{INST $1I5=NAND2
{PIN $1N19=QN $1N17=A $1N66=B}}
{INST $1I50=INVA
{PIN $1N74=IN $1N66=OUT}}
185
Introduction to Hercules HLVS
The Schematic Netlist File
{INST $1I51=INVA
{PIN $1N34=IN DOUT=OUT}}
{INST $1I53=INVA
{PIN $1N34=IN DOUT=OUT}}
{INST $1I55=NOR2
{PIN $1N23=QN $1N74=A $1N17=B}}
{INST $1I61=INVA
{PIN EN=IN $1N74=OUT}}
}
{CELL NAND2
{PORT QN A B}
{INST $1I1=N
{PROP L=1}{PROP W=13}
{PIN $1N20=D A=G GND=S GND=VBB}}
{INST $1I25=N
{PROP L=1}{PROP W=13}
{PIN QN=D B=G $1N20=S GND=VBB}}
{INST $1I3=P
{PROP L=1}{PROP W=20.5}
{PIN VDD=D B=G QN=S VDD=VBB}}
{INST $1I4=P
{PROP L=1}{PROP W=20.5}
{PIN VDD=D A=G QN=S VDD=VBB}}
}
{CELL NOR2
{PORT QN A B}
{INST $1I1=N
{PROP L=1}{PROP W=13}
{PIN QN=D A=G GND=S GND=VBB}}
{INST $1I2=N
{PROP L=1}{PROP W=13}
{PIN QN=D B=G GND=S GND=VBB}}
{INST $1I3=P
{PROP L=1}{PROP W=20.5}
{PIN $1N5=D B=G QN=S VDD=VBB}}
{INST $1I4=P
{PROP L=1}{PROP W=20.5}
{PIN VDD=D A=G $1N5=S VDD=VBB}}
}
186
Introduction to Hercules HLVS
The EDTEXT File
STRUCTURE meddec8
VDD 28 0 2.5 -590.5
VDD 28 0 2.5 -418.5
VDD 28 0 2.5 -246.5
VDD 28 0 2.5 -74.5
VDD 28 0 2.5 528.5
VDD 28 0 2.5 356.5
VDD 28 0 2.5 700.5
VDD 28 0 2.5 183.5
STRUCTURE ce64kd
BL0 30 0 2.5 5.5
BLN0 30 0 10.5 5.5
BL128 30 0 1666.5 5.5
BLN128 30 0 1673.5 5.5
WL255 25 0 13 3.5
WL127 25 0 13 2755.5
VDD 28 0 2.5 21.5
VDD 28 0 2.5 2773.5
The layer number and data type must be the same as those in a corresponding
ASSIGN section TEXT entry. The data type defaults to zero (0). The x- and y-
coordinate values should be the absolute local coordinates within the named
structure where the text is placed. The path to the Edtext input file must be
specified in the runset file OPTIONS section with the EDTEXT option. An
EDTEXT text placement option at the exact coordinates of an existing layout
text placement overrides the layout text placement.
187
Introduction to Hercules HLVS
The Equivalence File
EQUIV DOUT8=dout8 {}
EQUIV RAM64K=ram64k {}
EQUIV RAM128K=ram128k {}
188
Introduction to Hercules HLVS
Running Hercules LVS
compare:
DAC96 buf4x4 mux or3_ga
Device buf4x8 mux16 or3b
IOBUF corehi mux4 or3c
IPAD corelow nand2 pc_256
/
189
Introduction to Hercules HLVS
Running Hercules LVS
compare/DAC96:
lay.DAC96 sch.DAC95 sum.DAC95.DAC96
compare/IOBUF:
lay.IOBUF sch.IOBUF sum.IOBUF.IOBUF
compare/IPAD:
lay.IPAD sch.IBUF sum.IBUF.IPAD
compare/xfer:
lay.xfer sch.XFER sum.XFER.xfer
group:
dac96_out
HOUT lib lib_1 lib_bck
run_details:
DAC96.acct DAC96.cmpsum DAC96.tree0 DAC96.vcell
DAC96.bbox DAC96.sum DAC96.tree1 evaccess
DAC96.cmperr DAC96.tech DAC96.tree3 lvsflow evaccess
DAC96.bbox DAC96.cmpsum DAC96.tech DAC96.tree1 DAC96.vcell
lvsflow
run_details/evaccess:
DAC96 DAC96.errstr DAC96.msg VA.libs
DAC96.errbin DAC96.ev DAC96.net
run_details/evaccess/DAC96:
#1 #3 #5 #7 #9 compare
#2 #4 #6 #8 cellTOC viewTOC
.
run_details/lvsflow:
lay.tree sch.tree
190
Introduction to Hercules HLVS
Overview of Hercules LVS
191
Introduction to Hercules HLVS
Overview of Hercules LVS
Be sure to verify the path of your Hercules executable in the log file to ensure
that you are accessing the latest software you installed.
Example 31 DAC96.RESULTS File
Hercules (R) Hierarchical Design Verification, Release DATA
OMITTED
Synopsys. All rights reserved.
Each step in the Hercules LVS run represents a separate executable, which
was called by the Hercules executable. For DRC or device extraction, Hercules
calls the ev_engine executable. For netlisting, Hercules calls ev_netlist. For
comparing the netlists, Hercules calls lsh. During the Hercules LVS job it is
important to be aware of these stages, so that if there is an error or problem
with your job you know which error file to look in for the details of the error. Also,
each of these stages can be run independently. We go through examples of
running the individual stages later in this chapter and in Chapter 8, “HLVS
Advanced Concepts.”.
In the next two sections of our Tutorial we discuss output files associated with
the Hercules LVS Device Extraction phase of the job, including netlisting, and
then the Hercules LVS comparison phase of the job. Keep in mind that we
192
Introduction to Hercules HLVS
Overview of Hercules LVS
review all of these files to make you aware of the information available to you as
a user. In the next chapter we show you user interfaces that take you through
these files automatically, so you do not have to memorize all of this information.
DAC96.LAYOUT_ERRORS
The design block that was run generates this error file during the LVS
Extraction stage. In this example, we specified DAC96 in the HEADER section
of the dac96lvs1 runset file. We have no errors, so the
DAC96.LAYOUT_ERRORS file contents are minimal, containing only some
repeated runset information (shown in Example 32). This file contains all
texting errors, including shorts, opens, and unused text. This file also contains
any device extraction error messages. For example, if, during the extraction,
Hercules could find only the gate layer of a PMOS device, this file would show
an error of missing terminals for that device. We review these types of errors in
the Chapter 9, “Hercules HLVS Debugging,” example.
Example 32 DAC96.LAYOUT_ERRORS File (No Errors)
#### # ##### ## # #
# # # # # ## #
# # #### ###### # # #
# # # # # # ##
#### ##### ##### # # # #
===============================================================
193
Introduction to Hercules HLVS
Overview of Hercules LVS
ERROR SUMMARY
ERROR DETAILS
DAC96.acct
The design block that was run generates this accounting file, listing all devices
successfully extracted during the Hercules job. The block.acct file is located in
the run_details directory. Notice, in Example 33, that the devices are listed
hierarchically or under each sub-block where they were found. At the end of the
file is a summary of all of the devices found in the design. Each total listed
under the sub-blocks has a cell level count, the devices extracted from that
block, a flat count, the devices extracted from the block, plus all of the devices
extracted in each sub-block placed under the hierarchy of the block. For
example, AND3 might have a placement of NAND3 and INVA, each containing
designed devices. The count reported in the AND3 cell level is 0, because there
are no devices in AND3. The count reported for the flat count is the combined
total of devices in NAND3 and INVA.
The final information in this file is the number of filtered devices. By default,
Hercules tries to filter devices during the device extraction phase based on the
options in the EQUATE commands. This option is called MOS_FILTER and is
set in the PMOS or NMOS commands. The default for this option is TRUE if
filtering is specified in the EQUATE and COMPARE sections of the runset. The
accounting file lists how many devices were filtered from each block. One of our
filtering options was to filter all devices that contain a floating pin. During this
device extraction phase, Hercules was able to filter 148 NMOS devices and 4
PMOS devices from the layout before it generated a layout netlist. The main
advantage to this step is seen in gate array or ROM style devices. In many
cases, thousands of floating devices are extracted from unprogrammed
regions. By filtering at this stage of the job, Hercules saves time and disk space
by not netlisting them, and also saves time during the comparison stage
because it does not have to read in all of these devices and operate on them.
For more information on the MOS_FILTER option, see the Hercules Reference
Manual.
Example 33 DAC96.acct File
cellpwr
Cell Level Device Counts
DIODE[ndio] = 0
RES[rp] = 0
NMOS[n] = 0
PMOS[p] = 0
194
Introduction to Hercules HLVS
Overview of Hercules LVS
195
Introduction to Hercules HLVS
Overview of Hercules LVS
RES[rp] = 0
NMOS[n] = 530282
PMOS[p] = 267722
corelow
Cell Level Device Counts
DIODE[ndio] = 0
RES[rp] = 0
NMOS[n] = 5Filtered: NMOS-8 = 4
PMOS[p] = 2Filtered: PMOS-8 = 4
Flat Device Counts
DIODE[ndio] = 0
RES[rp] = 0
NMOS[n] = 533255Filtered: NMOS-8 = 4
PMOS[p] = 270644Filtered: PMOS-8 = 4
corehi
Cell Level Device Counts
DIODE[ndio] = 0
RES[rp] = 0
NMOS[n] = 0
PMOS[p] = 0
Flat Device Counts
DIODE[ndio] = 0
RES[rp] = 0
NMOS[n] = 532648
PMOS[p] = 270088
DAC96
Cell Level Device Counts
DIODE[ndio] = 0
RES[rp] = 0
NMOS[n] = 0
PMOS[p] = 0
DAC96.sum
The summary file located in the run_details directory also gets its name from
the block we specified (DAC96). The summary file contains information about
the steps Hercules executed during the device extraction and netlisting phase
of the LVS job. It also shows the resources used in each step. The summary file
repeats much of the information that appeared in the runset file, plus a full list of
options in the various runset sections, complete with user and default settings.
196
Introduction to Hercules HLVS
Overview of Hercules LVS
Example 34 shows the summary file DAC96.sum, which you should have in
your directory after your Hercules run is completed. Various sections of the
summary file are explained using emphasis. Many of the sections are the same
as the ones reviewed in Chapter 2, “An Error-Free Design for DRC,” of this
manual. Only the sections unique to a Hercules LVS job are explained in detail.
For more detail on the other sections, refer to Chapter 2.
Example 34 DAC96.sum File (No Errors)
DATE OMITTED
The following line shows the version of EV_Engine used to run the
Device Extraction. This is the same executable used for DRC. All
polygon processing is done with EV_Engine. The naming convention
for each release of this executable is as follows:
year.quarter.compile#. If there is a patch release, the naming
convention changes to: year.quarter.patch#.compile#
Notice that the following information shows the names of the input
and output files as well as the sources and destinations of each.
197
Introduction to Hercules HLVS
Overview of Hercules LVS
The OPTIONS section lists the settings you used to analyze and
display data, including the default setting your runset did not
alter. Notice that the EDTEXT file path is listed here.
OPTIONS {
ALL_TEXT_GLOBAL=FALSE
ASCII_ONLY=FALSE
ATTACH_TEXT=ALL
BOX_CORNER=FALSE
CHECK_REF_LIB=TRUE
COUNT_TRAPS=FALSE
EDTEXT=/remote/wwas1/hercules/venu/HERCULES_DOC/tutor/
TUTORIAL_LAB/Getting_Started_Hercules_LVS/dac96lvs1/dac96.text
ERR_LIMIT_PER_CHECK = UNLIMITED
ERR_PREFIX = ERR
EXPLODE_AREFS=FALSE
EXPLODE_HOLDING_CELL_LIMIT=0
EXPLODE_LIMIT=0
FLAG_ALL_AREF_ERRORS=FALSE
FLAT_COUNT=FALSE
FLAT_ERROR=FALSE
GENERATE_INSTANCE_NAME=TRUE
HIERARCHICAL_DELIMITER = \
IGNORE_CASE=FALSE
INCREMENTAL_CELLS=FALSE
INCREMENTAL_CELLS_FILE =
INSTANCE_PREFIX =
LAYOUT_GROUND = { GND VSSIO }
LAYOUT_POWER = { VDD VDDIO }
NET_PREFIX = XX_
SELECT_CELL_TO_NO_EXPLODE=TRUE
EQUIV_TO_NO_EXPLODE=TRUE
SCHEMATIC_TO_NO_EXPLODE=TRUE
BLACK_BOX_TO_NO_EXPLODE=TRUE
PROTOTYPE_PLACEMENTS=FALSE
198
Introduction to Hercules HLVS
Overview of Hercules LVS
NO_MERGE=FALSE
GENERATE_INSTANCE_NAME=TRUE
PRINT_ERRSUM_FILE=TRUE
MAXIMUM_CELLNAME_LENGTH=32
SCHEMATIC_GLOBAL = { VDD GND VDDIO VSSIO }
SCHEMATIC_GROUND = { GND VSSIO }
SCHEMATIC_POWER = { VDD VDDIO }
SIZE_ENDPOINTS=FALSE
SNAP_RES=TRUE
SQUARE_CORNER=FALSE
STOP_ON_GROUP_ERROR=TRUE
TEXT_RECT=0.000
USE_EXPLODED_TEXT=FALSE
EXPLORER_DATA=TRUE
WIDTH=0.000
MAGNIFICATION_FACTOR=1.000
OUTPUT_MAGNIFICATION_FACTOR=1.000
POLYGON_COUNT_IN_ASSIGN = FALSE
FLAT_POLYGON_COUNT = FALSE
}
PREPROCESS_OPTIONS {
CELL_PROFILE = FALSE
CELL_PROFILE_CNT=20
CHECK_PATH_ENDPOINTS = TRUE
CHECK_PATH_45 = TRUE
CHECK_PATH_90 = FALSE
DESIGN_STATS = TRUE
TREE = TRUE
CELL_STATS = TRUE
PRINT_PREPROCESS_FILES = TRUE
}
TECHNOLOGY_OPTIONS {
VIA_AUTO_EXPLODE = TRUE
SUBLEAF_AUTO_EXPLODE = 6
ALLOW_EXPLODE_WITH_TEXT = TRUE
POST_VCELL_EXPLODE_CELL_SIZE <= 10
EXPLODE_CELL_SIZE_PERCENT = 70
CELL_SIZE_AUTO_EXPLODE <= 10
199
Introduction to Hercules HLVS
Overview of Hercules LVS
EXPLODE_AREFS = FALSE
EXPLODE_1XN_AREFS = FALSE
EXPLODE_DATA_CELL_LIMIT = 4
POST_VCELL_EXPLODE_DATA_CELL_LIMIT = 12
EXPLODE_CELL_SIZE_PERCENT_OF_TOP = 70
EXPLODE_BIG_SPARSE_CELL = TRUE
EXPLODE_HOLDING_CELL_LIMIT = 1
EXPLODE_PLACEMENT_LIMIT = 1
}
EVACCESS OPTIONS are used for error viewing with EXPLORER.
EVACCESS_OPTIONS {
PATH = /remote/wwas1/hercules/venu/HERCULES_DOC/tutor/
TUTORIAL_LAB/Getting_Started_Hercules_LVS/dac96lvs1/
run_details/evaccess
LIBRARY = DAC96
CREATE_MSG_VIEW = TRUE
CREATE_NETLIST_VIEW = TRUE
CREATE_XREF_VIEW = TRUE
CREATE_GRAF_VIEW = TRUE
}
ASSIGN {
NDIFF(1)
PDIFF(2)
NWELL(3)
POLY (5) text(25)
CONT (6)
M1 (8) text(28)
V1 (9)
M2 (10) text(30)
PAD (15) text(35)
DIFF (1-2)
RESP (50)}
TEXT_OPTIONS {
ATTACH_TEXT = ALL
}
DATATYPE_OFFSET=FALSE. There will be no datatype difference
between FRAM and CEL views.
Using existing technology table!
Input Library Format: 127 char cellnames
Output Library Format: No output library
200
Introduction to Hercules HLVS
Overview of Hercules LVS
TECHNOLOGY_OPTIONS {
VCELL_PASS {
STYLE = PAIRS
ITERATE_MAX = 15
ARRAY_ID = TRUE
EXPLODE_INTO_VCELL = FALSE
MIN_COUNT = 20
TOP_PERCENT_OF_VALUE = 40
}
}
Preprocess Step 2 : Vcell_pass Arrays and Pairs Iteration 1
Pairs time = 0:00:00 User=0.00 Sys=0.00 Mem=10.998
VCELL_PASS 1, no changes.
Checking database:
201
Introduction to Hercules HLVS
Overview of Hercules LVS
The following are the commands that generate the layers used for
the designed device extraction and connectivity. A processing
wall time, CPU time, system time (I/O or other non-CPU events),
and memory usage is given for each command. Also, the "unique
polygons written" number gives you a hierarchical, not a flat,
count. If you encounter a command that takes a long time to run
relative to the rest of the commands in your runset and has a
relatively high unique polygon count, these two things combined
could indicate a poor hierarchical design or poor hierarchy
processing for your design.
202
Introduction to Hercules HLVS
Overview of Hercules LVS
203
Introduction to Hercules HLVS
Overview of Hercules LVS
Notice that even though this design has over 1.5 million devices,
Hercules has to extract only 148 NMOS and 109 PMOS devices. This
shows that the design has very good hierarchy.
The next two sections show the CONNECT and TEXT commands that
were executed, with runtime and memory usage.
CONNECT {
ngate pgate BY [ OVERLAP TOUCH ] field_poly
M2 BY [ OVERLAP TOUCH ] PAD
M1 M2 BY [ OVERLAP TOUCH ] V1
M1 ndiffdio res_term field_poly nsd psd welltie subtie BY [
OVERLAP TOUCH ] CONT
NWELL BY [ OVERLAP TOUCH ] welltie
SUBSTRATE BY [ OVERLAP TOUCH ] subtie
}
Check time = 0:00:02 User=1.85 Sys=0.07 Mem=40.219
TEXT {
M1 BY M1.TEXT
M2 BY M2.TEXT
field_poly BY POLY.TEXT
PAD BY PAD.TEXT
NWELL BY "VDD"
SUBSTRATE BY "GND"
}
204
Introduction to Hercules HLVS
Overview of Hercules LVS
PROCESS_TEXT_OPENS {}
Completed opens check. Now merging/renaming nets based on text.
Check time = 0:00:01 User=0.31 Sys=0.01 Mem=23.440
GRAPHICS_NETLIST {
EXPLORER_LAYERS (100)
SUBSTRATE (100)
subtie (101)
welltie (102)
field_poly (103)
psd (104)
pgate (105)
ndevice (106)
205
Introduction to Hercules HLVS
Overview of Hercules LVS
nsd (107)
ngate (108)
pdevice (109)
res_term (110)
rpoly (111)
ndiode (112)
ndiffdio (113)
NDIFF (1)
PDIFF (2)
NWELL (3)
POLY (5)
PAD (15)
RESP (50)
M1 (8)
M2 (10)
CONT (6)
V1 (9)}
GRAPHICS_PROPERTY {
NET_NAME (1)
INSTANCE_NAME (4)
}
Writing Graphics Netlist
Checks complete.
Total check time = 0:00:37 User=11.93 Sys=9.87 Mem=45.032
Here is the total time and the maximum memory used for the Device
Extraction phase of the run, including checks, preprocessing, and
outputting data. This time is only for the EV_Engine executable.
206
Introduction to Hercules HLVS
Overview of Hercules LVS
(C) Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003.
Synopsys, Inc. All rights reserved.
DAC96.net
At the end of the Device Extraction phase and netlisting, Hercules generates an
ASCII text file of the layout netlist. This is always the top block name followed by
a .net extension. In our design it is DAC96.net. This netlist is a Hercules-
formatted netlist representing the graphical input data based on the device
definition and connectivity specified in the Hercules runset.
207
Introduction to Hercules HLVS
Overview of Hercules LVS
DAC96.LVS_ERRORS
The DAC96.LVS_ERRORS file, shown in Example 35, is a summary of major
problems found in the Hercules LVS job. This file is linked to the HTML debug
interface to direct you through the various comparison debug files. In our
example, because we had no comparison errors, the file is just a statement to
that effect.
Example 35 DAC96.LVS_ERRORS File
[DAC95 == DAC96]
===============================================================
Comparison completed with 84 successful equivalencies.
Comparison completed with 0 equivalence error.
===============================================================
DAC96.cmpsum
The DAC96.cmpsum file located in the run_details directory is a summary file
of the commands executed by the lsh executable. It is similar to the DAC96.sum
file generated by the ev_engine executable. In the COMPARE summary files
shown in Example 36, we have emphasized the major operations performed by
Hercules during the time lsh is running. This file summarizes the second phase
of the Hercules LVS job, the LVS comparison of the two netlists.
Example 36 DAC96.cmpsum - Comparison Summary File
HLVS (R) Hierarchical Layout Versus Schematic, Release DATA OMITTED
Synopsys. All rights reserved.
208
Introduction to Hercules HLVS
Overview of Hercules LVS
The following information shows the names of the input files and their
sources. It also shows all of the default COMPARE option settings, as
well as the settings from your runset.
** Environment Status **
Hostname = sunserv1
Platform type = SUN64_58
runset = dac96lvs1.ev
root = DAC96
layout_file = DAC96.net
schematic_file = /remote/wwas1/hercules/venu/HERCULES_DOC/tutor/
TUTORIAL_LAB/Getting_Started_Hercules_LVS/dac96lvs1/dac96.hrc
equivalence_file = /remote/wwas1/hercules/venu/HERCULES_DOC/tutor/
TUTORIAL_LAB/Getting_Started_Hercules_LVS/dac96lvs1/dac96.eqv
compare_dir = compare
evaccess library = DAC96
evaccess path = run_details/evaccess
209
Introduction to Hercules HLVS
Overview of Hercules LVS
zero_connection_warning = FALSE
evaccess_create_msg = TRUE evaccess_create_netlist = TRUE
evaccess_create_xref = TRUE explorer_data = TRUE
ignore_case = FALSE
net_print_limit = 10 property_tolerance = 0.10
merge_net_warning = 100 merge_net_error = 1000
merge_paths_device_limit = [none]
tolerance_device_count = [none] tolerance_net_count = [none]
Once all of the layout and schematic is read and preprocessed, Hercules
starts at the lowest level cell and begins to compare blocks. Each time
Hercules advances up a level in the hierarchy a new LEVEL title will appear.
210
Introduction to Hercules HLVS
Overview of Hercules LVS
211
Introduction to Hercules HLVS
Overview of Hercules LVS
212
Introduction to Hercules HLVS
Overview of Hercules LVS
For the IOBUF block, a WARNING is reported. This block will still remain
as a compared block and will not be exploded into its parent. Only blocks
with ERRORS are exploded. You can control whether certain comparison
violations are WARNINGS or upgrade them to ERRORS, causing the block to
miscompare and be exploded into the parent. This skill is covered later
in the tutorial.
213
Introduction to Hercules HLVS
Overview of Hercules LVS
When you reach "LEVEL 0," you are at the top block. In our example, the
top block, DAC96 (layout) and DAC95(schematic), compares with WARNINGS.
214
Introduction to Hercules HLVS
Overview of Hercules LVS
The last section of the summary file is a summary of blocks that compared
with WARNINGS and without WARNINGS, and blocks that did not compare.
Equivalent blocks:
SENSEAMP == senseamp (level 10)
NOR3B == nor3c (level 10)
NOR3B == nor3_gacell (level 10)
NOR2B == nor2c (level 10)
NOR2B == nor2_gacell (level 10)
XFER == xfer (level 10)
NAND3B == nand3c (level 10)
NAND3B == nand3_gacell (level 10)
INVA == invb (level 10)
INVA == inva (level 10)
NOR2 == nor2b (level 10)
NOR2 == nor2 (level 10)
INVB == invc (level 10)
INVB == inv_gacell (level 10)
NOR3 == nor3b (level 10)
NAND2B == nand2c (level 10)
NAND2B == nand2_gacell (level 10)
PRECHRG == prechrg (level 10)
215
Introduction to Hercules HLVS
Overview of Hercules LVS
216
Introduction to Hercules HLVS
Overview of Hercules LVS
The total compare time (wall time), CPU time (user), and total memory
are summarized here.
The bottom of the comparison summary file shows the status of the LVS
Extraction error file. In many cases, when the comparison phase of your
Hercules LVS job fails, you immediately want to debug the run using the
output files of the netlist comparison. You should always make sure the
device extraction phase of your Hercules LVS job completes without errors
before you spend too much time debugging the second phase. The statement
here is to remind you whether you had any errors in the device extraction
phase, which are reported in the DAC96.LAYOUT_ERRORS file.
217
Introduction to Hercules HLVS
Overview of Hercules LVS
DAC96.cmperr
The DAC96.cmperr file, located in the run_details directory, contains a more
detailed summary of the processes performed by the LVS COMPARE operation
and more detail on the runtime of each process. Be aware that this file is not
equivalent to the block.LAYOUT_ERRORS file in the extraction process. It is
not the file that holds all of the error information. The error information for
individual equivalence points is found under the compare/ directory, which we
discuss in greater detail later in the tutorial.
In the Compare Summary Error file in Example 37, additional information found
in this file that is not found in the DAC96.cmpsum file is emphasized.
Example 37 DAC96.cmperr - COMPARE Summary Error File
HLVS (R) Hierarchical Layout Versus Schematic, Release DATA OMITTED
Synopsys, Inc. All rights reserved.
The entire netlist processing phase of the COMPARE run is given in more
detail here. Runtimes and memory use for all the individual processes
are listed, as well as information about what has occurred.
Layout:
Shared Device : cs_add_ovlp/M12
Cell : nor2c
BULK : VDD
DRN : XX_20
218
Introduction to Hercules HLVS
Overview of Hercules LVS
SRC : XX_17
GATE : VDD
Cell : and2c
BULK : VDD
DRN : OUT
SRC : XX_7
GATE : VDD
Layout:
Shared Device : cs_add_ovlp/M3
Cell : nor2c
BULK : GND
DRN : XX_23
SRC : XX_21
GATE : GND
Cell : and2c
BULK : GND
DRN : XX_13
SRC : OUT
GATE : GND
Cell : and2c
BULK : GND
DRN : XX_13
SRC : OUT
GATE : GND
OK
PushDown Device Time = 0:00:00 User=0.07 Sys=0.00 Mem=12.088
Removing empty schematic cells ...
Removing Empty Schematic Cells Time = 0:00:01 User=0.00 Sys=0.00
Mem=11.075
Here is an example of the fact that more detail is listed in the .cmperr
file. As the compare process reads in the netlists and processes the
hierarchy, all empty cells are removed from the hierarchy, with their
connections placed in their parent. The compare engine compares devices
and their connection. If a cell has no devices, it is considered empty
and "exploded" into its parent. This occurs in the layout and schematic
netlist and is a multipass process.
219
Introduction to Hercules HLVS
Overview of Hercules LVS
220
Introduction to Hercules HLVS
Overview of Hercules LVS
Comparing ... OK
Summary File: compare/senseamp/sum.SENSEAMP.senseamp
Elapsed time = 0:00:00 User=0.03 Sys=0.00 Mem=11.256
Comparing ... OK
Summary File: compare/nor3c/sum.NOR3B.nor3c
Elapsed time = 0:00:00 User=0.01 Sys=0.00 Mem=11.709
Comparing ... OK
Summary File: compare/bsel_a2/sum.BSEL.bsel_a2
Elapsed time = 0:00:00 User=0.01 Sys=0.00 Mem=11.927
221
Introduction to Hercules HLVS
Overview of Hercules LVS
Comparing ... OK
Summary File: compare/bsel/sum.BSEL.bsel
Elapsed time = 0:00:00 User=0.00 Sys=0.00 Mem=11.958
Comparing ... OK
Summary File: compare/bsel_a1/sum.BSEL.bsel_a1
Elapsed time = 0:00:00 User=0.01 Sys=0.00 Mem=11.958
222
Introduction to Hercules HLVS
Overview of Hercules LVS
BSEL == bsel_a2
BSEL == bsel
BSEL == bsel_a1
223
Introduction to Hercules HLVS
Overview of Hercules LVS
Comparing ... OK
Summary File: compare/ram128k/sum.RAM128K.ram128k
Elapsed time = 0:00:00 User=0.03 Sys=0.00 Mem=20.590
Comparing ... OK
Summary File: compare/corelow/sum.CORELOW.corelow
Elapsed time = 0:00:00 User=0.14 Sys=0.00 Mem=20.761
224
Introduction to Hercules HLVS
Overview of Hercules LVS
225
Introduction to Hercules HLVS
Overview of Hercules LVS
Equivalent blocks:
SENSEAMP == senseamp (level 10)
NOR3B == nor3c (level 10)
NOR3B == nor3_gacell (level 10)
NOR2B == nor2c (level 10)
NOR2B == nor2_gacell (level 10)
XFER == xfer (level 10)
NAND3B == nand3c (level 10)
NAND3B == nand3_gacell (level 10)
INVA == invb (level 10)
INVA == inva (level 10)
NOR2 == nor2b (level 10)
NOR2 == nor2 (level 10)
INVB == invc (level 10)
INVB == inv_gacell (level 10)
NOR3 == nor3b (level 10)
NAND2B == nand2c (level 10)
NAND2B == nand2_gacell (level 10)
PRECHRG == prechrg (level 10)
NAND2 == nand2b (level 10)
NAND2 == nand2 (level 10)
NAND3 == nand3b (level 10)
NAND3 == nand3 (level 10)
BSEL == bsel_a2 (level 10)
BSEL == bsel (level 10)
BSEL == bsel_a1 (level 10)
IOBUF == IOBUF (level 9)
MEMBIDIR == membidir (level 9)
PC_8 == pc_8_l_endcell (level 9)
PC_8 == pc_8 (level 9)
226
Introduction to Hercules HLVS
Overview of Hercules LVS
227
Introduction to Hercules HLVS
Overview of Hercules LVS
228
Introduction to Hercules HLVS
Overview of Hercules LVS
is a flat netlist, where all blocks that successfully compared at a lower level are
now only black-box instances.
Example 38 lay.membidir: A Cell-Level Layout Netlist
{NETLIST membidir
{VERSION 1 0 0}
{CELL membidir
{PORT GND VDD BL BLB DIO RD DO }
{INST M3=n {PROP n="n" x=130.5 y=32 l=1 w=10 }
{PIN XX_13=GATE XX_5=SRC BL=DRN GND=BULK }}
{INST M1=n {PROP n="n" x=66 y=9.5 l=1 w=13 }
{PIN A=GATE DIO=SRC GND=DRN GND=BULK }}
{INST nand2_42=nand2 {PROP n="nand2" x=0.5 y=-1 }
{PIN VDD=VDD GND=GND XX_14=QN XX_25=A XX_23=B }}
{INST inva_47=inva {PROP n="inva" x=85 y=-1 }
{PIN VDD=VDD XX_5=Z GND=GND XX_30=A }}
{INST inva_45=inva {PROP n="inva" x=109 y=-1 }
{PIN VDD=VDD XX_9=Z GND=GND XX_29=A }}
{INST inva_43=inva {PROP n="inva" x=-11.5 y=-1 }
{PIN VDD=VDD XX_25=Z GND=GND XX_24=A }}
{INST inva_41=inva {PROP n="inva" x=30.5 y=-1 }
{PIN VDD=VDD XX_23=Z GND=GND XX_13=A }}
{INST M4=p {PROP n="p" x=66 y=34.75 l=1 w=20.5 }
{PIN XX_14=GATE DIO=SRC VDD=DRN VDD=BULK }}
{INST M2=n {PROP n="n" x=130.5 y=15 l=1 w=10 }
{PIN XX_13=GATE BLB=SRC XX_9=DRN GND=BULK }}
{INST nor2_52=nor2 {PROP n="nor2" x=42.5 y=-1 }
{PIN VDD=VDD A=QN XX_25=B XX_13=A GND=GND }}
{INST inva_48=inva {PROP n="inva" x=73 y=-1 }
{PIN VDD=VDD XX_30=Z GND=GND DIO=A }}
{INST inva_46=inva {PROP n="inva" x=97 y=-1 }
{PIN VDD=VDD XX_29=Z GND=GND XX_30=A }}
{INST inva_44=inva {PROP n="inva" x=-23.5 y=-1 }
{PIN VDD=VDD XX_24=Z GND=GND DO=A }}
{INST inva_40=inva {PROP n="inva" x=30.5 y=-1 }
{PIN VDD=VDD XX_13=Z GND=GND RD=A }}
}
}
229
Introduction to Hercules HLVS
Overview of Hercules LVS
{CELL MEMBIDIR
{PORT BL BLB DIO DO RD GND VDD }
{INST $1I4=P {PROP n="P" l=1 w=20.5 }
{PIN $1N19=G DIO=S VDD=D VDD=VBB }}
{INST $1I2=N {PROP n="N" l=1 w=10 }
{PIN $1N43=G $1N47=S BLB=D GND=VBB }}
{INST $1I55=NOR2 {PROP n="NOR2" }
{PIN VDD=VDD $1N23=QN $1N17=B $1N43=A GND=GND }}
{INST $1I53=INVA {PROP n="INVA" }
{PIN VDD=VDD $1N45=OUT GND=GND $1N34=IN }}
{INST $1I51=INVA {PROP n="INVA" }
{PIN VDD=VDD $1N54=OUT GND=GND $1N34=IN }}
{INST $1I11=INVA {PROP n="INVA" }
{PIN VDD=VDD $1N34=OUT GND=GND DIO=IN }}
{INST $1I3=N {PROP n="N" l=1 w=13 }
{PIN $1N23=G GND=S DIO=D GND=VBB }}
{INST $1I1=N {PROP n="N" l=1 w=10 }
{PIN $1N43=G $1N45=S BL=D GND=VBB }}
{INST $1I61=INVA {PROP n="INVA" }
{PIN VDD=VDD $1N43=OUT GND=GND RD=IN }}
{INST $1I52=INVA {PROP n="INVA" }
{PIN VDD=VDD $1N47=OUT GND=GND $1N54=IN }}
{INST $1I50=INVA {PROP n="INVA" }
{PIN VDD=VDD $1N66=OUT GND=GND $1N43=IN }}
{INST $1I5=NAND2 {PROP n="NAND2" }
{PIN VDD=VDD GND=GND $1N19=QN $1N17=A $1N66=B }}
{INST $1I49=INVA {PROP n="INVA" }
{PIN VDD=VDD $1N17=OUT GND=GND $1N15=IN }}
{INST $1I10=INVA {PROP n="INVA" }
{PIN VDD=VDD $1N15=OUT GND=GND DO=IN }}
}
}
230
Introduction to Hercules HLVS
Overview of Hercules LVS
Example 40 sum.MEMBIDIR.membidir
COMPARE (R) Hierarchical Layout Vs. Schematic
Version DATA OMITTED
Copyright (C) Synopsys, Inc. All rights reserved.
The next set of steps outlines the schematic netlist processing that
takes place on the specific block that is running. All merging of devices
and filtering of unused devices is done, and then a table of the results
is shown. The table also shows whether any of the devices in this block
were put there when the PUSH_DOWN_DEVICES preprocessing was done on the
schematic netlist. In this example, we have 14 total schematic devices
and 17 schematic nets before and after merging. Notice that previously
compared blocks, such as INVA, are considered devices. Once a sub-block
is compared successfully, the comparison algorithm treats it in the same
way as a transistor or other designed device; it is simply a device with
pins.
231
Introduction to Hercules HLVS
Overview of Hercules LVS
The following is the total time and memory it took for this stage of the
COMPARE on the MEMBIDIR block.
The next set of steps outlines the layout netlist processing that takes
place on the specific block that is running. All merging of devices and
filtering of unused devices is done, and then a table of the results is
shown. The table also shows whether any of the devices in this block were
put there when the PUSH_DOWN_DEVICES preprocessing was done on the layout
netlist. In this example, we have 14 total layout devices and 17 layout
nets before and after merging. Notice that previously compared blocks,
such as INVA, are considered devices. Once a sub-block is compared
successfully, the comparison algorithm treats it in the same way as a
transistor or other designed device; it is simply a device with pins.
232
Introduction to Hercules HLVS
Overview of Hercules LVS
The following is the total time and memory it took for this stage of the
COMPARE on the MEMBIDIR block.
NONE
Schematic Layout
--------- ------
8 8 [INVA, (inva, invb)]
3 3 [N, n]
233
Introduction to Hercules HLVS
Overview of Hercules LVS
17 17 Total Nets
BL==BL
BLB==BLB
DIO==DIO
DO==DO
GND==GND
RD==RD
VDD==VDD
17 0 0 Total Nets
234
Introduction to Hercules HLVS
Overview of Hercules LVS
The last major section of the sum.block.block file is the Port Cross-
Reference Table. This table shows all equated ports in the schematic and
layout, as well as their pin class. The Port Cross-Reference Table gives
you information on how this sub-block will be viewed when its parent is
compared. For example, in the case of MEMBIDIR, a device is created with
7 ports that are all unique in class; therefore, none are swappable.
The final information in this file is a summary of the runtime and memory
for the comparison of the netlists (lay.membidir and sch.membidir), and
a total elapsed time and memory for the entire COMPARE process run on
MEMBIDIR.
Notice that the sections containing reports on unmatched devices and nets and
matched devices connected to unmatched nets are not included in this
sum.block.block file because there are no errors.
235
Introduction to Hercules HLVS
Overview of Hercules LVS
236
Introduction to Hercules HLVS
Overview of Hercules LVS
CELL STATISTICS
CELL = PADVIA
Flat Placements = 180
CELL = datbidir
Flat Placements = 32
CELL = samp1_a1
Flat Placements = 32
CELL = adr3dec8
Flat Placements = 12
CELL = nand2b
Flat Placements = 48
CELL = nand2c
Flat Placements = 24
CELL = pc_64_l_endcell
Flat Placements = 4
237
Introduction to Hercules HLVS
Progress Review of Hercules LVS
CELL STATISTICS
CELL = DFFR4
Flat Placements = 68
CELL = XFER
Flat Placements = 1312
CELL = NOR2
Flat Placements = 128
CELL = NOR3
Flat Placements = 16
CELL = PC_256
Flat Placements = 4
238
Introduction to Hercules HLVS
What’s Next?
What’s Next?
Now that you have reviewed the options and flow of the Hercules LVS tool, you
are ready to continue on to Chapter 8, “HLVS Advanced Concepts.” You learn
how to complete a strict Hercules comparison, including downgrading default
error messages and upgrading default warning messages. In Chapter 8 you are
also introduced to the Hercules HTML interface for debugging your LVS errors.
239
Introduction to Hercules HLVS
What’s Next?
240
8
HLVS Advanced Concepts8
259
HLVS Advanced Concepts
Before You Start
260
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
To designate these ports, define a marker layer in your design. In our design
this layer is PAD. The marker layer, or PAD layer, is processed against a
connected layer, and the interaction between the marker polygon and the
connect layer polygon creates a new port. We use the PAD, layer 15, as the
marker layer and the connected layer. In the following example, you notice that
PAD is listed in our CONNECT command, so it qualifies as a connected layer.
Finally, in order to allow matching of layout port names with the schematic port
names, we also make sure that all of the PAD polygons are texted to match the
schematic port text.
Example 43 shows the command from the dac96lvs2.ev runset we use to
generate our ports for comparison.
Note:
The PAD layer is not located in the top block, DAC96, so we must add the
FLATTEN command to flatten all of the PAD polygons to the top block.
Example 43 CREATE_PORTS Syntax from Hercules Runset Example
dac96lvs2.ev
CREATE_PORTS {
top_cell_only = TRUE
PADTOP BY PADTOP
}
261
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
M2 BY M2
field_poly BY POLY
PADTOP BY PAD
NWELL BY "VDD"
SUBSTRATE BY "GND"
}
262
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
require_texted_ports_match = true
all_ports_texted = true}
EQUIV COREHI=corehi {}
EQUIV CORELOW=corelow {}
EQUIV CS_ADD1=cs_add {}
EQUIV IBUF=IPAD {}
EQUIV ADD4=add4 {}
EQUIV OBUF=OPAD {}
EQUIV BUF4X4=buf4x4 {}
EQUIV ADR3DEC8=adr3dec8 {}
EQUIV DFFR4=dffr4 {}
EQUIV SAMP4=samp4 {}
EQUIV ADD4B=add4_ovlp {}
EQUIV ADD4B=add4_ga {}
EQUIV MUX_16=mux16 {}
EQUIV PC_256=pc_256 {}
EQUIV BUF4X8=buf4x8 {}
EQUIV MEDDEC_8=meddec8 {}
EQUIV DOUT1=dout1 {}
EQUIV DFFR16=dffr16 {}
EQUIV WDEC_256=wdec256 {}
EQUIV DOUT4=dout4 {}
EQUIV DOUT8=dout8 {}
EQUIV RAM64K=ram64k {}
EQUIV RAM128K=ram128k {}
263
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
264
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
265
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
The primary reason users require that all devices be netlisted in the cell where
they are designed is that they are using the results of a Hercules LVS job as
input for a STAR-RCXT extraction job and they need all of their equivalence
points to match. STAR-RCXT allows you to input a library of timing models for
each of the library cells, or macro blocks, in the equivalence file. If, for some
reason, an equivalence point fails although the entire design compares at the
top, you no longer have this block, or equivalence point, as a reference for
inputting the timing model.
When requiring blocks to compare for a Hercules-to-STAR-RCXT flow, you
generally do not care why the equivalence point failed. You might, for example,
not have restrictions on devices being designed across the hierarchy, nor have
restrictions on port text matching, such as might exist in a strict Hercules
comparison. In such a case you simply need to make sure that the hierarchy of
equivalence points matches the library and macro cells that have generated
timing models. In most cases, these equivalence points are lost due to
hierarchical interaction with devices that cause them to be generated one level
above the cell in which they were originally designed.
To help guarantee that devices are placed in the original cells in which they
were designed, even in designs where there is a lot of hierarchical interaction
between devices, Hercules has two command options,
MOS_REFERENCE_LAYER for the extraction phase of LVS, and
PUSH_DOWN_DEVICES for the comparison stage.
MOS_REFERENCE_LAYER
In the extraction stage MOS_REFERENCE_LAYER is the option for the PMOS
and NMOS extraction commands. A similar option exists for each designed
device type. (For example, there is also a RES_REFERENCE_LAYER
command.) Even though there might be hierarchical interaction for some of the
device layers, such as source drain overlap, the MOS_REFERENCE_LAYER
option tells the Hercules extraction code to place the MOSFET in the cell that
has this reference layer. The problem of having the hierarchical interactions
move the device into a parent cell is thus avoided, as is the problem of the
Hercules code being too aggressive and pushing the device into a child cell.
Note:
Having the device in the parent of the intended cell, or a child of the intended
cell, happens only if this is a logically and physically equivalent scenario.
Hercules does not change the actual design, just the format of the layout
netlist hierarchy.
266
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
Figure 63 and Figure 64 illustrate a situation in which Hercules puts the device
into a child cell (Cell B). Adding the MOS_REFERENCE_LAYER option to the
PMOS and NMOS commands corrects the problem.
Figure 63 Effect of Placing Device in Child Cell: Schematic
Cell A
Cell B
Figure 64 Effect of Placing Device in Child Cell: Layout Viewed with Enterprise
The child (Cell B) compares alone. When the parent (Cell A) is run, the
INVERTER from the parent gets pushed down into the child, so the child does
not compare. Unlike the schematic netlist, the layout netlist shows INV as flat
267
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
(that is, not an instance). Example 45 shows the schematic netlist, Cell_A.sch,
for Cell A. Notice that CELL_B, in the schematic, has two instances of INV, and
CELL_A has a flat inverter, made from an instance of a p device and an
instance of an n device.
Example 45 Schematic Netlist for Cell A
{NETLIST CELL_A
{VERSION 1 0 0}
/* Level 2 */
{CELL INV
{PORT 1 2 3 9}
{INST M1=p {PROP x=12.5 y=32.5 l=2.000 w=12.000}
{PIN 2=GATE 3=SRC 1=DRN 1=BULK }}
{INST M2=n {PROP x=12.5 y=10.5 l=2.000 w=6.000}
{PIN 2=GATE 3=SRC 9=DRN 9=BULK }}
}
/* Level 1 */
{CELL CELL_B
{PORT 1 4 5 6 7}
{INST 11=INV {PROP x=-27.5 y=0.5 angle=0 reflection=0}
{PIN 1=1 8=2 7=3 4=9}}
{INST 12=INV {PROP x=28.5 y=0.5 angle=0 reflection=0}
{PIN 1=1 9=2 6=3 5=9}}
}
/* Level 0 */
{CELL CELL_A
{INST M1=p {PROP x=22 y=33 l=2.000 w=12.000}
{PIN 2=GATE 3=SRC 1=DRN 1=BULK }}
{INST M2=n {PROP x=22 y=11 l=2.000 w=6.000}
{PIN 2=GATE 3=SRC 7=DRN 7=BULK }}
{INST 0=INV {PROP x=-45.5 y=0 angle=0 reflection=0}
{PIN 1=1 13=2 2=3 7=9}}
{INST 1=INV {PROP x=69 y=0.5 angle=0 reflection=0}
{PIN 1=1 3=2 6=3 7=9}}
{INST 2=CELL_B {PROP x=9.5 y=-0.5 angle=0 reflection=0}
{PIN 1=1 7=4 7=5 3=6 2=7}}
}
}
The CELL_A.net layout netlist (shown in Example 46) reflects the problem of
extracting and netlisting the MOSFETs that make up the INVERTER. We ran
Hercules using the mos_ref_err.ev runset to generate the CELL_A.net layout
netlist below. Notice that there are two instances of INV in CELL_B, just like in
the schematic, but that there is also a flat inverter, made from one instance of a
268
HLVS Advanced Concepts
General Requirements of a Strict LVS Flow Comparison
p device and one instance of an n device. Also notice that CELL_A is missing
the flat inverter that was in CELL_A in the schematic.
Example 46 Cell_A.net Layout Netlist
{NETLIST CELL_A
{VERSION 1 0 0}
/* Level 2 */
{CELL INV
{PORT 1 2 3 9}
{INST M1=p {PROP x=12.5 y=32.5 l=2.000 w=12.000}
{PIN 2=GATE 3=SRC 1=DRN 1=BULK }}
{INST M2=n {PROP x=12.5 y=10.5 l=2.000 w=6.000}
{PIN 2=GATE 3=SRC 9=DRN 9=BULK }}
}
/* Level 1 */
{CELL CELL_B
{PORT 1 2 3 6 7 8 9 10
11 12 13 14}
{INST M1=p {PROP x=12.5 y=33.5 l=2.000 w=12.000}
{PIN 2=GATE 12=SRC 13=DRN 1=BULK }}
{INST M2=n {PROP x=12.5 y=11.5 l=2.000 w=6.000}
{PIN 3=GATE 10=SRC 11=DRN 14=BULK }}
{INST 11=INV {PROP x=-27.5 y=0.5 angle=0 reflection=0}
{PIN 1=1 15=2 9=3 6=9}}
{INST 12=INV {PROP x=28.5 y=0.5 angle=0 reflection=0}
{PIN 1=1 16=2 8=3 7=9}}
}
/* Level 0 */
{CELL CELL_A
{PORT}
{INST 0=INV {PROP x=-45.5 y=0 angle=0 reflection=0}
{PIN 1=1 13=2 2=3 7=9}}
{INST 1=INV {PROP x=69 y=0.5 angle=0 reflection=0}
{PIN 1=1 3=2 6=3 7=9}}
{INST 2=CELL_B {PROP x=9.5 y=-0.5 angle=0 reflection=0}
{PIN 1=1 2=2 2=3 7=6
7=7 3=8 2=9 3=10
7=11 3=12 1=13 7=14}}
}
}
269
HLVS Advanced Concepts
Setting up Error and Warning Messages
PUSH_DOWN_DEVICES
In the comparison stage, PUSH_DOWN_DEVICES is the option used to
guarantee equivalence points. It is added to the COMPARE section of your
runset and set to TRUE. PUSH_DOWN_DEVICES is the initial recommended
solution to the problem of hierarchical interactions causing equivalence points
to miscompare. PUSH_DOWN_DEVICES identifies all devices that meet the
following two criteria:
1. All of the device terminals are directly connected to ports of one cell.
2. The connectivity of these ports is consistent across all instances of that cell.
If these two criteria are met, the Hercules comparison removes those devices
from the higher level and places them in the cell to which the ports are
connected. There is a detailed description entitled “PUSH_DOWN_DEVICES”
in Chapter 7, “Introduction to Hercules HLVS.”
270
HLVS Advanced Concepts
Hercules Examples
errors and warnings are in the sum.block.block files of each block. Hercules
has default settings for what it reports as errors and warnings. A table of these
defaults is located in the Hercules Reference Manual.
Hercules also allows you to change what is reported as an error or a warning.
in certain cases you might wish to reduce the size of output files by switching
off particular types of messages. Normally, these messages are warnings that
are understood by the user, or data that is not generally referenced. In other
instances, you might want to turn on other messages to produce more verbose
output.
Note:
A message might be more than one line long, particularly for tables that list
data unique to a particular block.
The MESSAGE_SUPPRESS command in the OPTIONS section can be used
to disable the printing of certain message types in COMPARE. The
MESSAGE_ENABLE command in the OPTIONS section is used to enable the
printing of certain other messages. The MESSAGE_IDENTIFIERS option is set
to display the message identifiers in the listing file. The MESSAGE_ERROR
option is set to upgrade a message to a severity level of ERROR.
Example 47
OPTIONS {
message_suppress = { CMP-39 CMP-45 } /* Do not print these messages. */
message_enable = { CMP-60, CMP-61 } /* Do print these messages */
message_identifiers = on /* Prints message IDs in output files. */
message_error = { CMP-52 } /* Upgrade message(s) level to error. */
}
In our first tutorial example you see a sample sum.block.block file, which
includes the MESSAGE_IDENTIFIERS option. These are CMP-XX numbers
beside each information output in the file and are controllable with the options
listed above.
Hercules Examples
Now that we have explained the different options we set in our examples, here
is a brief summary of each example in this chapter and the learning objectives
for each example.
Example 1: Run Hercules on a strict comparison runset, where
CREATE_PORTS is used in the device extraction and layout netlisting. All top
271
HLVS Advanced Concepts
Hercules Examples
ports are required to be texted and the text must match between the layout and
schematic. We run this example twice, once with the standard warning
message, and the second time with the CMP-XX error numbers displayed and
the warning message upgraded to an error.
Learning Objectives:
• To become familiar with setting options in the equivalence file, as opposed
to the COMPARE section
• To practice using the HTML interface to search through sum.block.block
files, and the block.LVS_ERRORS file
• To see an example of strict port comparison
Example 2: Run Hercules on a strict comparison runset similar to the first
example, but set the options in the runset during the COMPARE section. Also,
a new warning is generated because a layout port net is equated to a net that is
not a port in the schematic.
Learning Objective:
• To review some of the CMP-XX error numbers relating to port matching
272
HLVS Advanced Concepts
Hercules Examples
Verify that the LVS Extraction phase of the job ran without errors. Click the
LAYOUT ERRORS button (see left-hand arrow in Figure 65) to get a view of the
DAC96.LAYOUT_ERRORS file, as seen in Figure 66.
273
HLVS Advanced Concepts
Hercules Examples
Click the LVS SUMMARY button (see right-hand arrow in Figure 65) to get a
view of the DAC96.cmpsum file, as seen in Figure 67.
274
HLVS Advanced Concepts
Hercules Examples
275
HLVS Advanced Concepts
Hercules Examples
Scroll through the file (see the right arrow in Figure 67) until you get near the
bottom, where you see the following:
Figure 68 Bottom Part of DAC96.cmpsum File
The CMP-XX messages are numbered, so you have the option of customizing
the looks of this file by suppressing the printing information for each. Notice the
WARNINGs and the links to each of the blocks in the file.
276
HLVS Advanced Concepts
Hercules Examples
Note:
There are categories of warnings listed here for COREHI. We look at the
COREHI sum.block.block file after reviewing DAC96.
Now either select the DAC96 file from the list on the far left of the browser, or
click the link to it in the cmpsum file to get the sum.block.block file for the top
block, DAC96. You should get a view similar to that shown in Figure 69.
Figure 69 Sum.block.block File for Top Block of DAC96
You are now in the sum.block.block file for the top block, DAC96. This is the
block where we set the ALL_PORTS_TEXTED and
REQUIRE_TEXTED_PORTS_MATCH options. As a result of those settings we
277
HLVS Advanced Concepts
Hercules Examples
expect to see WARNINGs, because that is the default type of output message if
there are problems introduced with these option requirements.
Notice that the file is divided into sections. We go into more detail on these
sections in the next chapter, when we have more errors in our design.
Click on the Port Cross-Reference table (indicated by arrow in Figure 69) to
take you to the texted ports list for this block, as shown in Figure 70.
Figure 70 Top of Port Cross-Reference File - Resized Frames
278
HLVS Advanced Concepts
Hercules Examples
279
HLVS Advanced Concepts
Hercules Examples
The warning for net matching is part of the post-compare information, so click
that link (POST-COMPARE) in the list on the left side of the browser window.
In the window with the post-compare netlist statistics, scroll down to the
warning messages near the end.
Figure 72 COREHI Netlist Statistics with Two Warnings
280
HLVS Advanced Concepts
Hercules Examples
Look at CMP-8 and CMP-27. These warnings are generally okay, therefore we
are going to suppress them in our example. However, most people want to pay
attention to the CMP-42 WARNING, so we leave that warning as is. (If you
need to, enlarge the windows to see information better by dragging the margins
with the mouse.)
Now edit the dac96lvs2.ev file to include the message_suppress = {CMP-8
CMP-27} and the message_error = {CMP-119}; or, you can use the
dac96lvs2a.ev runset that already has the changes.
Execute Hercules from your UNIX shell again. This time, we rerun only the
COMPARE, because our extraction phase had no errors. Enter:
hercules -C -html dac96lvs2a.ev
Or, if you have updated the file, enter:
hercules -C -html dac96lvs2.ev
Notice that, if you keep your browser window open, the files are automatically
updated when the Hercules job is complete.
Now look at the block.LVS_ERRORS file in the HTML window showing the
error and an unsuccessful compare.
281
HLVS Advanced Concepts
Hercules Examples
282
HLVS Advanced Concepts
Hercules Examples
To see the error, go to the Port Cross-Reference table by choosing the link
indicated by the arrow in Figure 74. Then scroll down until you see the error
message.
283
HLVS Advanced Concepts
Hercules Examples
284
HLVS Advanced Concepts
Hercules Examples
For COREHI, there is only one type of warning now instead of two. As a
practice exercise, go into the sum.block.block file and verify that the warning is
no longer there, either. You might also want to look through the files to review
the different sections and the CMP-XX messages. You can suppress many of
these in order to change the format and reduce the size of the file. You can also
285
HLVS Advanced Concepts
Hercules Examples
286
HLVS Advanced Concepts
Hercules Examples
NET_PREFIX = XX_
COMPARE {
COMPARE_PROPERTIES = TRUE
PROPERTY_WARNING = FALSE
EXPLODE_ON_ERROR = FALSE
RETAIN_NEW_DATA = TRUE
STOP_ON_ERROR = FALSE
FILTER = TRUE
MERGE_SERIES = FALSE
MERGE_PARALLEL = TRUE
MERGE_PATHS = FALSE
EQUATE_BY_NET_NAME = TRUE
AUTO_EXCLUDE_EQUIV = TRUE
REMOVE_DANGLING_NETS = TRUE
PUSH_DOWN_PINS = TRUE
PUSH_DOWN_DEVICES = TRUE
DETECT_PERMUTABLE_PORTS = FALSE
ALL_PORTS_TEXTED = TRUE
REQUIRE_TEXTED_PORTS_MATCH = TRUE
You should already have your browser open from the previous example, so now
go to the browser window and look at the results from your completed run. We
still have EXPLODE_ON_ERROR = FALSE, but also STOP_ON_ERROR =
FALSE. As a result, if an equivalence point has an error, it is not exploded, and
no cells containing that equivalence point are compared due to their
dependency on the uncompared block. Because STOP_ON_ERROR = FALSE,
however, the job continues to compare all blocks that do not contain the
uncompared blocks in their sub-tree.
Now look at the comparison file with the browser. You should see the following:
287
HLVS Advanced Concepts
Hercules Examples
Verify that the LVS Extraction phase of the job ran without errors. Click the
LAYOUT ERRORS button as you did in Example 1. Figure 78 shows the results
you should see in the LAYOUT ERRORS window.
288
HLVS Advanced Concepts
Hercules Examples
Click the BACK button in your browser to return to the LVS SUMMARY window
shown in Figure 77.
Notice that there is a message reminding you that EXPLODE_ON_ERROR is
FALSE. You have two blocks with errors, corehi and IOBUF.
Let's first open IOBUF. Choose IOBUF in the left window to get EQUIV =
[IOBUF, IOBUF].
289
HLVS Advanced Concepts
Hercules Examples
Scroll through the top window to find the error, a property mismatch, as seen in
Figure 80.
290
HLVS Advanced Concepts
Hercules Examples
In many cases, the properties in the schematic do not match the properties in
the layout netlist. Also, in most cases, if you are the person debugging the
design to try to get it to compare, you are not at liberty to fix these property
errors. Hercules has an option in the COMPARE section,
PROPERTY_WARNING, which causes the TRUE setting to report property
errors as warnings. You should generate warnings for the property mismatches
until you complete all of the other debugging of the design.
291
HLVS Advanced Concepts
Hercules Examples
Click on LVS ERRORS at the top of the browser to get back to your blocks with
errors.
Now let's look at corehi. Choose corehi in the left-hand column of the browser.
Scroll in the top main window until you see the RED error message, CMP-42,
shown in Figure 81.
Figure 81 Red Error Message for CMP-42
If you scroll down in the Port Cross-Reference table, you notice that CARRY =
COUT; this is the reason for the error. Normally, this would be only a warning,
but we upgraded it. Scroll even further down in the window, and notice another
292
HLVS Advanced Concepts
Hercules Examples
Remember, we required that all ports be texted in the COMPARE section. You
should upgrade this message to an error for the strict comparison flow.
Click on LVS SUMMARY and scroll to the bottom of the window for the DAC96
summary. Notice (in Figure 83) that this block was not run, due to dependency
293
HLVS Advanced Concepts
Hercules Examples
errors. Because corehi and IOBUF did not compare, and they are sub-blocks of
DAC96, DAC96 was not compared.
Figure 83 DAC96 Summary
We now rerun this example using the dac96lvs3a.ev runset, which contains an
upgrade for the CMP-124 WARNING to ERROR, and PROPERTY_WARNING
= TRUE. Again, we have to rerun only the comparison phase. In your UNIX
shell enter:
hercules -html -C dac96lvs3a.ev
294
HLVS Advanced Concepts
Hercules Examples
Notice that IOBUF is no longer listed as a cell with an error. However, there are
quite a few blocks that were added to the list of blocks with errors, due to the
upgrade of CMP-124, shown in Figure 84.
Figure 84 Errors Added to CMP124
Take a few minutes to browse through some of these blocks and the different
sections of the files available with the HTML interface. We go into more detail
on this interface in Chapter 9, “Hercules HLVS Debugging,” showing examples
of the Schematic Unmatched, Layout Unmatched, and Matched Devs
Connected to Unmatched Nets sections of the files and how the interface helps
debug these types of problems.
295
HLVS Advanced Concepts
EQUATE, EQUIV, and COMPARE—Which Setting Takes Priority?
Rule 3: Options set in the equivalence file override the global setting and allow
for local control. In the following example, the filtering operation is not
performed for the inv block.
equiv inv = inv {
filter = false }
What’s Next?
Now that you are familiar with running a Hercules LVS job and the basics of the
HTML interface, you should continue on to Chapter 9, “Hercules HLVS
Debugging,” which gives a detailed example of debugging a Hercules LVS job.
You learn more benefits of the HTML interface and how to use Hercules-
Explorer to debug specific device and net mismatch errors.
296
9
Hercules HLVS Debugging9
297
Hercules HLVS Debugging
Quick Checklist for LVS Debug
298
Hercules HLVS Debugging
LVS Extraction Debug
terminals. Figure 85 shows the layout of the extracted NMOS with the error and
Example 49 shows the actual error in the block.LAYOUT_ERRORS file.
Figure 85 Layout of NMOS Defined with Missing Terminals
src/dm src/dm
gate gate
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure Error Type Layer Value ( position x, y )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
inva MISSING_TERMINALS nsd 1 (11.000, 10.500)
299
Hercules HLVS Debugging
LVS Extraction Debug
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
300
Hercules HLVS Debugging
LVS Extraction Debug
To fix this error, use the ndiffdio layer for both terminals. The DIODE is formed
from the N material in the terminals and the P material in the substrate.
Unused Text
If you define a text layer in the ASSIGN section and use it in the TEXT section,
Hercules generates an unused text error for each piece of that text that is not
attached to a polygon. Attached is defined by the value of the ATTACH_TEXT
variable in the TEXT_OPTIONS section, and by whether or not the text string
overlaps the layer with which it was associated in the TEXT section. Below is
an example of an unused text error. In Figure 87 you see that the text strings
are overlapping M2, not M1. The TEXT on layer 30 should be attached to M2
instead of M1 to avoid these errors.
Figure 87 M1 and M2 Text in IOBUF
VDD-M1
GND-M1
301
Hercules HLVS Debugging
LVS Extraction Debug
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure Unused Text l;dt ( position x, y )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IOBUF GND 30;0 (-89.500, -303.500)
IOBUF VDD 30;0 (-89.500, -253.300)
Text Opens
Whenever you have two unconnected nets in a cell with the same text string,
Hercules generates a text open error in the block.LAYOUT_ERRORS file.
Example 52 shows an example of a text open error message in the
block.LAYOUT_ERRORS file.
There are special TEXT_OPTIONS such as USE_COLON_TEXT and
USE_SEMI_COLON_TEXT to suppress certain text open errors in library (or
standard) cells. See the Hercules Reference Manual for details on these
options.
Example 52 Text Open ERROR in block.LAYOUT_ERRORS File
Library name: dac96
Structure name: buf4x
CONNECT {
ngate pgate BY [ TOUCH OVERLAP ] field_poly
M2 BY [ TOUCH OVERLAP ] PADTOP
M1 M2 BY [ TOUCH OVERLAP ] V1
M1 ndiffdio res_term field_poly nsd psd welltie subtie BY [ TOUCH
OVERLAP ] CONT
NWELL BY [ TOUCH OVERLAP ] welltie
SUBSTRATE BY [ TOUCH OVERLAP ] subtie
}
TEXT {
M1 BY M1.text
M2 BY M2.text
field_poly BY POLY.text
PADTOP BY PAD.text
302
Hercules HLVS Debugging
LVS Extraction Debug
NWELL BY "VDD"
SUBSTRATE BY "GND"
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parent Struct Base l;dt Parent Inst origin Base Text From Path
Text Text (x, y) (x, y) Net ID or Info
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
buf4x IN 30;0 (3.000, 56.000) XX_5 LAYER Signal
30;0 (57.000, 54.500) LAYER Signal
Text Shorts
Whenever you have two different text strings attached to the same electrically
connected net, Hercules generates a text short error in the
block.LAYOUT_ERRORS file. Example 53 shows how that error appears in the
file. Later we show you how to use the TEXT_OPTION
FIND_SHORTEST_PATH_BETWEEN_TEXT_SHORTS and the short-finding
utility in Hercules-Explorer to trace these text shorts.
Example 53 Text Short ERROR in block.LAYOUT_ERRORS File
Library name: dac96.db
Structure name: IOBUF
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Structure Net ID Used Text l;dt (position x, y) Text From
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
inva XX_1 * A 30;0 (3.000, 2.000) LAYER
Z 30;0 (9.000, 2.000) LAYER
303
Hercules HLVS Debugging
LVS Comparison Debug
304
Hercules HLVS Debugging
LVS Comparison Debug
POWER/GROUND Shorts
In many cases a text short error seen in the block.LAYOUT_ERRORS file also
results in POWER/GROUND shorts seen in the sum.block.block files.
Whenever a short is found, a table is generated in the sum.block.block file
showing the possible shorted nets in the layout (or schematic) and how they
correspond to nets in the schematic (or layout). Example 54 shows one of
these tables.
Example 54 Diagnostic OPEN/SHORT Table in sum.block.block File
Diagnostic analysis recognizes the following correspondence
between unmatched nets in the schematic and layout. These might
indicate the source of shorts or opens:
** Environment Status **
runset = test.ev
root = DAC96
305
Hercules HLVS Debugging
Running Hercules LVS with Errors
306
Hercules HLVS Debugging
Running Hercules LVS with Errors
The sample runset file should take only a few minutes to run. Your active
window displays the execution process. While the screen contents might scroll
quickly (freeze the screen with Control-s and restart with Control-q), you should
be able to notice any specific actions or warnings that appear. All of this
information appears in a file for your examination.
During the run, the HTML DRC Extraction frame (shown in Figure 88) appears
in your HTML window, indicating the contents of the
DAC96.LAYOUT_ERRORS file.
Figure 88 DRC Extraction Frame
307
Hercules HLVS Debugging
Running Hercules LVS with Errors
At the end of the run, the LVS Debug Compare Results are loaded in your
HTML window. Choose LVS ERRORS to see COMPARE results (shown in
Figure 89).
Figure 89 LVS ERRORS Compare Results Frame
308
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
309
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Explorer Shortest Path feature for the VDD/GND short in the corehi block. We
have also included instructions to do this.
Fill in the Block field with DAC96 and the Run Directory field with the path to
your run directory.
Click Load. Figure 91 shows what you should see displayed.
310
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
311
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
312
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Now you use the text coordinate errors to locate the shortest path between our
DINT15 and ICDOUT15 short. Before you start this process, double check that
your Hercules-Explorer window is connected to your Enterprise session.
313
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
314
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
You are now ready to generate your shortest path. Choose Generate at the top
of the Shortest Path window.
315
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Redraw
316
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
To zoom in on the starting point in Enterprise, again execute the following in the
command window:
gxwSetView 1 "g" '()
gxwAddPoint 1 '(3504 14115)
gxwAddPoint 1 '(3908 13746)
In the Enterprise command window, select the V button in the layer attribute
panel (on the right side) to view layers metal1 (M1), metal2 (M2) and via (V1).
Redraw the Enterprise window. You can see the short between the two nets in
Figure 98. Select the Clear Hilites button, either in the User Commands pop-up
or the middle of the Hercules-Explorer window, to see only the input layer.
317
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
318
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
319
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Figure 100 Hercules-Explorer Shortest Path and Enterprise Display for VDD/
GND Text Short Error
320
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Because there are multiple text short errors for the GND/VDD net, we continue
to load more coordinates and they are automatically loaded as stop points. We
could not do this for the DINT15/ICDOUT15 short because there was only one
text short error for that net.
Click the Text button in the Shortest Path window. Then click the Select Cluster
button. Click the down arrow in the Hercules-Explorer window six more times to
load six more stop points. In Figure 101 you should see all the stop points
added in the Shortest Path window. Multiple stop points allow Hercules-
Explorer to generate the path faster and create an easy path to trace your
short.
321
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Figure 101 Shortest Path Pop-up After Stop Points Are Loaded
322
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Turn off all visible layers by choosing Vls > All Off.
Redraw the Enterprise window.
Your layout window should look similar to the one in Figure 102.
Figure 102 Shortest Path Highlights in Enterprise between VDD and GND
Zoom in to the right end of the path highlighting line and turn on layers metal1
(M1), metal2 (M2) and via (V1) using the layer attribute panel. You can see
side-by-side power/ground rails. If we follow along these rails, we can see that
the highlighting shows a grouping of vias(V1) that join the two rails incorrectly.
Zoom to the following coordinates to see the short better:
gxwSetView 1 "g" '()
gxwAddPoint 1 '(3757.15 14021.3)
gxwAddPoint 1 '(3843.25 13931)
Figure 103 shows the area to which you should have zoomed. Someone not
familiar with the design might have to trace along the highlighted layers to
discover this short.
You can see that the 2x2 set of vias on the VDD net are causing your short
between VDD and GND.
323
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
324
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Finally, choose Generate to generate the shortest path between the VDD and
GND polygons you selected.
Figure 104 Shortest Path Pop-up with Manually Selected Coordinates
In Figure 105 the shortest path is now generated on all metal layers instead of
through substrate, making it easier to see the problem.
325
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
326
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
SCHEMATIC = dac96.hrc
SCHEMATIC_FORMAT = HERCULES
/* COMMENTED OUT COMPARISON INPUT DATA */
327
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
328
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
GRAPHICS{
explorer_layers(100)
NDIFF (1)
PDIFF (2)
NWELL (3)
POLY (5)
PAD (15)
RESP (50)
M1 (8)
M2 (10)
CONT (6)
V1 (9)
}
/* COMMENTED OUT COMPARISON SECTION OF RUNSET */
/*=====================================================*/
/* LVS COMPARISON SECTION OF RUNSET */
/*=====================================================*/
329
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
yours.) Your Hercules-Explorer hxdrc window should look similar to the one in
Figure 106.
Figure 106 FSPBTS Output in Hercules-Explorer
330
Hercules HLVS Debugging
Debugging Your Hercules LVS Run
Trace the highlighted line to the right until you find the short. Figure 108 shows
what the short should look like.
You have been tracing a VDD net. When you reach the GND text under the 5x5
grid of vias, you make a connection to the GND net. As described in the section
above, these four vias (over VDD net) must be deleted to remove the VDD/
GND short. Refer to the previous section, “Correcting the VDD/GND Short,” for
a brief explanation of how to correct the short.
331
Hercules HLVS Debugging
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed
332
Hercules HLVS Debugging
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed
333
Hercules HLVS Debugging
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed
Finally, choose Setup > HTML Cross-Reference to link the HTML output and
the Hercules-Explorer data. Figure 109 shows what you should see in the
Hercules-Explorer hxlvs window after you perform the steps listed above.
Note:
If you select a block in the Hercules-Explorer window, your HTML window
automatically updates. The opposite of this is not true; in other words, if you
select a block in the HTML window, the Hercules-Explorer and Enterprise
windows does not update.
Figure 109 Hercules-Explorer hxlvs Setup Menu
Figure 110 shows the HTML pop-up that results from these steps.
Click the small selection square in the HTML pop-up to enable the cross-
referencing to HTML.
334
Hercules HLVS Debugging
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed
335
Hercules HLVS Debugging
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed
336
Hercules HLVS Debugging
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed
If you click Applicable Filter Options (shown in Figure 113), you notice that all
the suggested options for PMOS devices are listed in a table in the bottom
HTML window. If you look in the dac96lvs4b.ev runset (shown in Example 57),
you see that there are filter options for NMOS (NMOS-3 and NMOS-8), but not
PMOS. The table in your HTML window suggests that PMOS-3, PMOS-16, and
PMOS-21 are required for the PMOS devices. Before adding or removing any
filter options, you should always check with your design rules to make sure a
particular filter option is allowed, or if the design needs to be modified to fix your
compare problems.
If look at dac96lvs4c.ev, you see that we have added the PMOS-3 and PMOS-
8 filter options to the EQUATE commands. PMOS-8 is not listed in the table as
an Applicable Filter Option and might not be necessary, but we added it to be
337
Hercules HLVS Debugging
Running Hercules After All block.LAYOUT_ERRORS Errors Are Fixed
consistent with the NMOS filter options. Now that we have corrected all of the
global problems listed in the HTML LVS ERRORS file, we rerun Hercules.
Note:
You can also consider the blocks with shorts and opens listed in the LVS
ERRORS window as a global type of error. In most cases, however, if you
have a major filtering problem, you should rerun Hercules as soon as it is
fixed.
Example 57 EQUATE Commands in dac96lvs4b.ev Runset
/*=====================================================*/
/* LVS COMPARISON SECTION OF RUNSET */
/*=====================================================*/
338
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
339
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
Next you need to load the new comparison results into Hercules-Explorer.
Choose File > Load and verify that the block listed is DAC96.
Click Load in the pop-up menu. Figure 115 shows the Hercules-Explorer
window after the load is completed.
340
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
341
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
this example. If you look back, you see that fixing that problem significantly
reduced the number of non-equivalent blocks.
At this phase of the example, there are only a few mismatched blocks in the
lower levels that are not dependent on each other, so we work our way through
each of these. If you debug a lower-level block and you have a mismatched
block at the next level that is dependent on that lower-level block, there is no
need to debug the higher-level block. For example, buf4x does not compare
and is listed at level 9. Level 8 has buf4x4 listed, and higher up is buf4x8. When
we fix the problem in buf4x and it compares, then, most likely, buf4x4 and
buf4x8 will also compare. We start debugging with buf4x.
342
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
343
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
344
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
When debugging a comparison error, it is often helpful to have these two files
open. You can open these files through Hercules-Explorer and use the
information in the files for cross-probing and probing in the layout. The next few
operations involve opening these files.
Choose View > Equivalence Schematic Netlist to open the schematic netlist for
buf4x. Figure 118 shows this operation and Figure 119 shows the Equivalence
Schematic Netlist that is opened.
Figure 118 Hercules-Explorer View Menu
345
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
In Figure 119, notice that Highlight in Netlist is not selected in your Equivalence
Schematic Netlist window. Click the small box to the left of the option to select it
(see arrow in Figure 119). This allows nets and devices that are highlighted in
the layout window to be highlighted in the schematic netlist window as well.
In the Hercules-Explorer window, choose View > Equivalence Summary File to
open the sum.block.block file, the summary file for buf4x. Figure 120 shows the
middle of this file.
346
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
Figure 121 shows the buf4x block that was automatically opened in your
Enterprise window.
347
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
348
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
349
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
You should immediately see the net highlighted in your Enterprise window, as
shown in Figure 123.
350
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
351
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
Figure 124 shows the $1I2 instance of INVA highlighted in the Enterprise
window and the schematic netlist window.
Note:
You might want to re-highlight the OUT net to see the relationship between
the net and the instance better.
Figure 124 $1I2 Instance of INVA Highlighted in Layout
352
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
353
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
Figure 125 Equivalence Summary File and HTML File for cs_add
354
Hercules HLVS Debugging
Using Hercules-Explorer hxlvs to Debug Specific COMPARE Errors
Use your mouse to select the XX_6 net in the summary file and click Send
Selected to highlight the second net in the layout.
In the Enterprise window, choose Fit View With Border (see arrow in
Figure 127) or press the f key to fit the layout view.
Figure 127 shows the XX_17 and XX_10 nets highlighted in the Enterprise
window.
355
Hercules HLVS Debugging
An Exercise for the Reader
Notice the obvious open at coordinates x=60, y=30. By using the Enterprise
command s, you can stretch the lower metal 2 line over the via. Use save cell to
save your changes.
356
Hercules HLVS Debugging
What’s Next?
What’s Next?
Chapter 10 is for Dracula users who need to convert Dracula LVS runsets to
Hercules LVS runsets and debug Hercules LVS in the Opus environment. You
learn how translate a Dracula LVS runset to Hercules, run Hercules in the Opus
environment, and debug your run using Hercules-Explorer interfaced to
Virtuoso and Composer. If you have already completed Chapter 10, or are not
a current Dracula user, continue on to Chapter 11, “Runset Debugger,” for an
introduction to the Hercules Runset Debugger.
357
Hercules HLVS Debugging
What’s Next?
358
10
HLVS Migration with Hercules-Explorer10
371
HLVS Migration with Hercules-Explorer
Before You Start
372
HLVS Migration with Hercules-Explorer
Overview of HLVS Migration Flow
PHYSICAL FILES
SUMMARY
Enterprise ERROR
Error Database HIERARCHY
./compare
373
HLVS Migration with Hercules-Explorer
Generating a Runset with Drac2He
• Run Hercules LVS using the CDL schematics, GDSII layout, translated rule
file, and translated edtext file as input. First you bring up the Hercules-
Explorer/Virtuoso/Composer debug environment and then run Hercules
LVS from this environment.
• Finally, review and, if necessary, debug the Hercules LVS results using
Hercules-Explorer connected to Virtuoso and Composer. There is one error
in the example, which is identified and left for you to correct.
374
HLVS Migration with Hercules-Explorer
Translation Results for Migration.lvs Example
375
HLVS Migration with Hercules-Explorer
Translation Results for Migration.lvs Example
structure INV
IN 50 255 12.500000 22.000000
structure ADFULAH
VSS 51 255 1.400000 2.900000
VDD 51 255 1.700000 45.050000
structure INV
VSS 51 255 17.300000 2.100000
VDD 51 255 15.800000 43.750000
structure DGATE
VSS 51 255 48.300000 3.750000
VDD 51 255 47.700000 45.100000
structure INVH
VSS 51 255 18.200000 2.350000
VDD 51 255 17.750000 42.850000
structure TGATE
VSS 51 255 16.750000 -5.250000
VDD 51 255 16.450000 36.150000
376
HLVS Migration with Hercules-Explorer
Translation Results for Migration.lvs Example
Notice that under the OPTIONS section Drac2He also creates an EXPLIST file.
This file, edtextnoexplode, contains a list of the cells in the EDTEXT file, telling
Hercules not to explode these cells for any reason. Exploding the cells would
prevent the text in the EDTEXT file, ad4ful_text.herc, from being attached. For
more details on EXPLIST files, see the Hercules Reference Manual.
We go over the automatic steps in the Hercules LVS run later when we execute
Hercules. First, we set up the Opus environment.
377
HLVS Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
is not able to match XI10 in the netlist file to I10 in the Composer schematics
due to this prefix.
To correct this cross-referencing problem when CDL is used and the Composer
naming convention does not match SPICE, use the NetTran -cdl-chop option
that must be set in the runset. You need to set this in the tutorial example.
Edit the ad4ful_lvs.ev file using vi or the editor of your choice. Search for the
OPTIONS section, and add the following syntax:
NETTRAN_OPTIONS = "-cdl-chop"
Case Sensitivity
Hercules and Dracula have different rules for working with case sensitivity.
When you are streaming out from Virtuoso, you must select the
PRESERVE_CASE option to guarantee that Hercules-Explorer can cross-
probe correctly. The Drac2He translator sets IGNORE_CASE to TRUE, which
does not allow you to cross-probe to the Composer schematic if you use mixed
case. In our example we used the PRESERVE_CASE option, so you do not
need to change the setting of the IGNORE_CASE option.
378
HLVS Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
First, verify that your XPROBE environment variable is set. If not, set it using
the command:
setenv XPROBE /tmp/xprobe-$user
When Hercules-Explorer is started, it creates a file at the XPROBE location. Be
sure to set XPROBE to a location where you have read/write privileges. Also,
you should choose a location on a local disk drive.
Starting Opus
Next, enter the command:
icfb &
The icfb command starts the Cadence Opus, version 4.2.2 or higher. See the
Hercules Reference Manual for earlier versions.
379
HLVS Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
380
HLVS Migration with Hercules-Explorer
Setting up Hercules in the Opus Environment
When the HXLVS or Hercules-Explorer LVS window starts, make sure you get
the following message in the Message window (also shown in Figure 131):
Msg: skill_filter_4.4.il: $Revision: 4.5 $ $Date:2000/06/19
17:58:42 $
Also, make sure that you have both the Composer and Virtuoso check marks in
the HXLVS window, as shown in Figure 131.
381
HLVS Migration with Hercules-Explorer
Executing Hercules LVS in the Opus Environment
382
HLVS Migration with Hercules-Explorer
Executing Hercules LVS in the Opus Environment
Choose Execute.
When the job completes, the block automatically loads and HXLVS window
should update, as shown in Figure 133.
383
HLVS Migration with Hercules-Explorer
Executing Hercules LVS in the Opus Environment
Select the adfulah::ADFULAH block. Both the Virtuoso and Composer windows
load and display the ADFULAH block as shown in Figure 134 and Figure 135.
384
HLVS Migration with Hercules-Explorer
Executing Hercules LVS in the Opus Environment
385
HLVS Migration with Hercules-Explorer
Debugging with Hercules-Explorer Connected to Virtuoso and Composer
You can also select a net to highlight in the Virtuoso window and, if that net has
a matching net in the schematic, Composer automatically highlights that
matching net. The same is true for matching devices. To see the highlighted net
or device in Composer, however, you might need to use the arrow keys, or
simply refresh the window to see the highlight.
In this tutorial we explain in detail how to cross-probe using the files in
Hercules-Explorer. You can also choose the menu Tools > Probe Selected to
select nets and devices to cross-probe.
Note:
In some cases the redraw command in Virtuoso or Composer might erase
the highlights. If this happens, simply use the arrow keys to pan and redraw
your screen.
386
HLVS Migration with Hercules-Explorer
Debugging with Hercules-Explorer Connected to Virtuoso and Composer
Scroll down in the sum.adfulah.ADFULAH file until you see the ERRORS. Your
Hercules-Explorer session should look like the one in Figure 137.
387
HLVS Migration with Hercules-Explorer
Debugging with Hercules-Explorer Connected to Virtuoso and Composer
Select net84 from the unmatched schematic nets, set the Domain and Type
and the Schematic Net, and then click the Send Selected button.
Using the arrow keys, pan in Composer until you see your selected net.
Select nets N_21 and then N_8 from the Unmatched Layout Nets, making sure
each time to change your Domain and Type setting to Layout Net, and click
Send Selected for each of these nets.
At this time you should notice there is an OPEN between N_21 and N_8. A VIA
sref is missing from the design. Figure 138 shows this missing VIA. The two
highlighted nets intersect where the arrow points in the figure. This point is
388
HLVS Migration with Hercules-Explorer
Debugging with Hercules-Explorer Connected to Virtuoso and Composer
where the VIA sref should be located. Figure 140 shows the schematic net that
these two layout nets should match.
Figure 138 Missing Via
389
HLVS Migration with Hercules-Explorer
Debugging with Hercules-Explorer Connected to Virtuoso and Composer
Figure 139
Figure 140 Schematic Net that N_21 and N_8 Should Match
If you would like to fix this error, you can add an SREF of the VIA cell to the
ADFULAH cell and save the cell. Remember that you have to stream out a new
GDS file for Hercules to see the edit. You can also simply rerun Hercules with
the ad4ful_fix.gds file provided, by changing the INLIB variable in the
ad4ful_lvs.ev runset to ad4ful_fix.gds.
390
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
391
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
PHYSICAL FILES
GDSII
Layout ad4ful_lvs.ev - Runset
Database ad4ful.cdl - Schematic
lsh - Schematic vs
Layout Comparison
PHYSICAL FILES
SUMMARY
Enterprise ERROR
Error Database HIERARCHY
./compare
The block.RESULTS file contains a summary of the steps found in this diagram.
It shows the results of the run you just completed. In the following sections we
describe each of these steps, the data created, possible errors you might
encounter, and the proper way to debug these errors.
392
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
393
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
• If you did not check the error.out file you created during the Drac2He
translation, you might encounter a parser error at this point in the run, due
to a translation error that you missed.
• If the paths and/or names of your GDSII or CDL files were not correct in your
original Dracula rule file, Hercules is not able to find these files and
generates an error.
You want to edit the Hercules runset and see if you can correct any translation
errors and path or file names. If you are not sure of the reason for the
translation error, contact Synopsys Technical Support with a description of the
translation problem. If you feel uncomfortable editing the Hercules runset, you
can fix the path or file name errors in the Dracula rule file and retranslate before
running Hercules.
394
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
395
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
Ev_engine executes all of the BOOLEAN and other data creation operations. It
also extracts the devices and connects the devices and nets. Remember, your
device extraction errors appear in the block.LAYOUT_ERRORS file or under
Layout Extraction Errors in the Hercules-Explorer LVS window. The errors or
warnings from this step in our example are found in the
AD4FUL.LAYOUT_ERRORS file.
The POLY, NSD, and NWELL layers are called conductor layers. These are
usually the actual device polygons, but they might be layers that are merely
connected to the device polygons.
Drac2He translates this as follows:
396
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
Because Hercules requires the actual gate polygon, the device recognition
layer (ngate) is used instead of the gate conductor layer (POLY). The NSD layer
is the Dracula source/drain conductor layer and is almost always the correct
diffusion layer for Hercules.
Although Hercules makes a distinction between PMOS and NMOS devices,
both extractions work the same way. The translator converts Dracula MOS
commands to NMOS Hercules commands unless the device name has a P in it
that is not preceded by N, E, or D.
Here the COLL layer is the device recognition layer and the CCNT, BASE, and
EMIT layers represent conductor layers for the collector, base, and emitter
device layers, respectively. As with the MOS device, these layers are frequently,
but not always, the same as the actual device polygons.
Drac2He would translate this device as:
PNP QPL_dev COLL BASE EMIT {
bjt_topology = lateral;
bjt_multi_term_layer = collector;
}temp=_generated_output_layer
A Dracula command for a vertical NPN device extraction might look like this:
ELEMENT BJT[NV] EMIT COLL BASE ECNT BULK
The emitter is the device recognition layer, and the conductor layers for the
collector, base, emitter, and bulk are, respectively, COLL, BASE, ECNT, and
BULK.
Drac2He would translate this device as:
NPN QNV_dev EMIT BASE COLL SUBSTRATE {
bjt_topology = normal;
}temp=_generated_output_layer
The BJT translation is the device extraction translation that is most likely to
need manual intervention. The translator must determine the correct topology
from the name of the device. If there is an L in the device name that is not
preceded by a V, Drac2He converts the topology to lateral. Otherwise, the BJT
397
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
The PDIO layer is the recognition layer for this device. The PSD and NSUB
layers are conductor layers for the diode terminals.
Drac2He would translate this device as:
DIODE DP_dev pdio psd nsub { diode_type = PN }
temp=_generated_output_layer
The translator decides on the DIODE_TYPE by looking for the first occurrence
of an N or P in the device name. Because Hercules and Dracula have similar
device definitions for diodes, there are seldom translation problems related to
diodes. As with all devices, a problem might occur if the Dracula command
uses layers that are merely connected to device polygon layers rather than
themselves actual device polygon layers. If you are using a version of Drac2He
older than 99.4 and this occurs, try a newer version.
The PDIO layer is the recognition layer for this device. The PSD and NSUB
layers are conductor layers for the capacitor terminals.
Drac2He would translate this device as:
CAP CP_dev pdio psd nsub {
}temp=_generated_output_layer
Because Hercules and Dracula have similar device definitions for capacitors,
there are seldom translation problems related to capacitors. As with all devices,
a problem might occur if the Dracula command uses layers that are merely
398
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
connected to the device polygon layers rather than themselves actual device
polygon layers. If you are using a version of Drac2He older than 99.4 and this
occurs, try a newer version.
The PDIF layer is the recognition layer for this device and the RES_CONT layer
is the conductor layer for the terminals.
Drac2He would translate this device as:
RES RPD_dev pdif res_cont res_cont {
}temp=_generated_output_layer
One situation where this translation might cause problems is where there is
more than one terminal layer polygon at each end of the resistor body. If you
are using a version of Drac2He older than 99.4 and this occurs, try a newer
version. In rare cases, Hercules is not able to resolve the connectivity of the
multiple terminals and you might need to use a SIZE OVER_UNDER command
on the RES_CONT layer to merge the multiple polygons.
399
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
400
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
PROPERTY_WARNING=TRUE
PUSH_DOWN_PINS=TRUE
PUSH_DOWN_DEVICES=TRUE
REMOVE_DANGLING_NETS=TRUE
SHORT_EQUIVALENT_NODES=FALSE
RETAIN_NEW_DATA=TRUE
RETAIN_PREVIOUS_DATA=FALSE
TEXT_RESOLVES_PORT_SWAP=FALSE
MERGE_PATHS_DEVICE_LIMIT=30
NET_PRINT_LIMIT=100
}
The lsh program creates a new directory within the directory in which you
executed the hercules command. The new directory, ./lvsflow (in the
run_details directory) contains a file, lvs_include.ev, that is added to the
ad4ful_lvs.ev runset. Example 64 shows the file that was created in our tutorial
example.
Example 64 ./run_details/lvsflow/lvs_include.ev File from the AD4FUL
Migration
OPTIONS {
SCHEMATIC_GLOBAL = { GND! VDD! }
SCHEMATIC_GROUND = { GND! }
SCHEMATIC_POWER = { VDD! }
}
HEADER {
EQUIVALENCE = run_details/lvsflow/equiv
}
EQUATE NMOS MN=MN_DEV GATE SRC DRN BULK {
FILTER=TRUE
MERGE_PARALLEL=TRUE
MERGE_PARALLEL_CHAINS=TRUE
MERGE_SERIES=TRUE
MERGE_PATHS=TRUE
RESTRICT_MERGE_SERIES=TRUE
RESTRICT_MERGE_BY_LENGTH=TRUE
RESTRICT_MERGE_BY_WIDTH=TRUE
USE_TOTAL_WIDTH=TRUE
CHECK_PROPERTIES = {Length Width }
FILTER_OPTIONS = { NMOS-1 }
TOLERANCE[Width]= { +5.000, -5.000 }
TOLERANCE[Length]= { +5.000, -5.000 } }
EQUATE PMOS MP=MP_DEV GATE SRC DRN BULK {
FILTER=TRUE
MERGE_PARALLEL=TRUE
MERGE_PARALLEL_CHAINS=TRUE
MERGE_SERIES=TRUE
401
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
MERGE_PATHS=TRUE
RESTRICT_MERGE_SERIES=TRUE
RESTRICT_MERGE_BY_LENGTH=TRUE
RESTRICT_MERGE_BY_WIDTH=TRUE
USE_TOTAL_WIDTH=TRUE
CHECK_PROPERTIES = {Length Width }
FILTER_OPTIONS = { PMOS-1 }
TOLERANCE[Width]= { +5.000, -5.000 }
TOLERANCE[Length]= { +5.000, -5.000 } }
You should notice the OPTIONS section that is appended to the one output
from Drac2He. It now includes SCHEMATIC_GLOBALS,
SCHEMATIC_POWER, and SCHEMATIC_GROUND. For a complete
explanation of how these are generated, review the explanation of these
variables in Chapter 4 of the Hercules Reference Manual.
Also notice the HEADER section that is appended to the one output from
Drac2He. It now includes a path to the EQUIVALENCE file, which is generated
automatically after the EQUATES are generated.
Finally, notice the new EQUATEs for NMOS and PMOS. These now reflect the
correct device names and terminal names based on a search of the layout and
schematic netlists.
402
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
of the EQUATE command. There are tables in the Hercules Reference Manual
(in Chapter 5 under the EQUATE command) that explain each of the
FILTER_OPTIONS in detail. Some of the Dracula filter options involving filtering
based on path tracing to PADs are not currently supported by Hercules.
403
HLVS Migration with Hercules-Explorer
Detailed Flow: Dracula Rule Files to Hercules LVS Output
404
HLVS Migration with Hercules-Explorer
What’s Next?
need to have schematic and layout blocks with the same names to get a
complete set of equivalence points.
Because lsh might generate a number of equivalence points that do not match,
your initial LVS run might take slightly longer than is optimal to work through the
bad equivalence points. After the first LVS run, a ./run_details/lvsflow/
block.ignore_equiv file is generated that includes all equivalence points that do
not match. In the case of our example, ADDER1=ADFULAH is included in this
file because that block had an error. From this file you can remove any
equivalence points that you want as part of your EQUIVALENCE file and
append the file to the end of the ./run_details/lvsflow/equiv file to generate a
more accurate EQUIVALENCE file.
What’s Next?
You have now completed a Dracula to Hercules translation, job execution, and
debug example for an LVS rule file. If you plan to write Hercules runsets in the
future, or if you want more details on Hercules commands, go back and
complete Chapter 8.
405
HLVS Migration with Hercules-Explorer
What’s Next?
406
11
Runset Debugger11
407
Runset Debugger
About This Chapter
408
Runset Debugger
General Applications of the Runset Debugger
409
Runset Debugger
The Runset File
OPTIONS {
explorer_data = true
text_rect = 0.1
check_ref_lib = false
err_prefix = ERR
ignore_case = false
layout_ground = { VSS }
layout_power = { VDD }
net_prefix = net_
}
ASSIGN {
tox (1)
poly (5)
cont (6)
met1 (8) text (63)
met2 (10) text (63)
psel (14)
via (19)
pwell (31)
}
PREPROCESS_OPTIONS {
CHECK_PATH_ENDPOINTS = TRUE
CHECK_PATH_45 = TRUE
CHECK_PATH_90 = FALSE
}
410
Runset Debugger
The Runset File
SIZE met1 {
UNDER_OVER = 2.5 } TEMP = wide_met1
411
Runset Debugger
The Runset File
TEXT {
met1 BY met1.text
met2 BY met1.text
poly BY met1.text
}
NETLIST
GRAPHICS_PROP {
net_name (1)
instance_name (4)
}
GRAPHICS_NETLIST {
met1 (8)
cont (6)
tox (1)
poly (5)
met2 (10)
psel (14)
via (19)
pwell (31)
met1.text (63)
met2.text (63)
ntox (50)
ptox (51)
ngate (52)
pgate (53)
nplug (54)
pplug (55)
nact (56)
pact (57)
ndev (58)
pdev (59)
nsd (60)
psd (61)
explorer_layers
}
412
Runset Debugger
Enterprise Interface Tutorial
413
Runset Debugger
Enterprise Interface Tutorial
This should successfully start the Runset Debugger. Figure 143 shows the
Runset Debugger GUI with the Setup window selected.
414
Runset Debugger
Enterprise Interface Tutorial
415
Runset Debugger
Enterprise Interface Tutorial
• Runset: You can use this field to tell the Runset Debugger the name of the
Hercules runset you are testing.
• Hercules Options: You can enter Hercules command-line options in this
field. These are included when you execute Hercules. For example, if you
want to run only a sub-block of a design, enter -b block_name on this line.
• MILKYWAY button: By default, the Runset Debugger outputs data using the
WRITE_MILKYWAY command.
• Output library path: This field specifies where you want to place the output
data from the Runset Debugger.
• Output library name: This field specifies the name of the output library that
you want the Runset Debugger to create. This is not the same as the output
library created by Hercules, and it should have a separate name.
• Starting capture layer: This field specifies the layer number assigned to the
first layer included in the WRITE_MILKYWAY command used to generate
the output database. Subsequent layers are assigned successive layer
numbers.
416
Runset Debugger
Enterprise Interface Tutorial
417
Runset Debugger
Enterprise Interface Tutorial
It also locates any necessary macros or #INCLUDE files and incorporates them
into the runset.
If any errors are found that would prevent Hercules from running, the Runset
Debugger opens the Errors window (shown in Figure 145). The Errors window
displays a full list of parsing errors or warnings. In the example, you see a
RUNSET ERROR for the undefined keyword VERB0SE.
Figure 145 Runset Debugger Errors Window
Correcting Errors
Runsets cannot be edited within the Runset Debugger. In order to fix this
RUNSET ERROR, you need to edit the runset.
Open the debug.ev runset file in an editor. We use vi for this example. Go to a
UNIX window and execute the following:
vi debug.ev
You find that the O in VERB0SE is actually spelled with a zero by mistake.
Correct the spelling to VERBOSE and save the file.
418
Runset Debugger
Enterprise Interface Tutorial
Click the Apply button at the bottom of the Runset Debugger GUI to reprocess
your debug.ev runset.
This time the Runset Debugger skips a display of the Errors window and goes
directly to the Watchpoints window. Because there are no errors found in the
runset, the Runset Debugger goes on to the next step, preparing you to set
your watchpoints for debugging. (It is still a good idea to check the contents of
the Errors window, though, because it might contain WARNINGS that you
should know about.) The Watchpoints window (shown in Figure 146) should
appear automatically after the Runset Debugger processes your change to the
runset file.
419
Runset Debugger
Enterprise Interface Tutorial
420
Runset Debugger
Enterprise Interface Tutorial
scroll through the window, you see that some commands are preceded by a
small box. If you click on the box, a pair of eyeglasses appears (see
Figure 147), indicating that this command has been selected as a watchpoint.
In the next processing step, the Debugger isolates all the commands you
selected and any commands upon which they depend.
Figure 147 Watchpoints Window
421
Runset Debugger
Enterprise Interface Tutorial
422
Runset Debugger
Enterprise Interface Tutorial
Selecting Watchpoints
Now choose some watchpoints for the Runset Debugger to process. There are
search fields in the Watchpoints window above the runset. You can use the
down arrow to select the kind of search and the field to the right of the search
type to enter a keyword for your search.
As mentioned earlier, you are going to work your way through each of the
commands in the runset to verify that they are written correctly. For this tutorial,
you work on a clean design or QA cell where, if the runset is correct, all
MOSFETs should be extracted correctly and there should be no DRC errors.
Start by choosing the device extraction commands PMOS and NMOS to verify
that the extraction algorithms are correct.
Either by using the search feature or by scrolling down in the runset, select the
boxes to the left of the PMOS and NMOS extraction commands. Your window
should look like the one in Figure 149.
423
Runset Debugger
Enterprise Interface Tutorial
424
Runset Debugger
Enterprise Interface Tutorial
In the Review window, notice that the WRITE_MILKYWAY command has been
added to your runset. This command creates the output library you specified in
your initial setup, and writes out all of the data in any of the layers referred to by
the commands you selected.
Scroll through the Review window so that the Boolean commands and
WRITE_MILKYWAY command are all showing.
425
Runset Debugger
Enterprise Interface Tutorial
Select a few of the Boolean commands as watchpoints and notice how the
layers used in these commands are added to the WRITE_MILKYWAY
command.
At this time you can choose to select one or all of the boxes to the left of the
commands in your new runset. For the tutorial, use the Set All button in the
upper-left corner of the window to select all of the commands for viewing.
Figure 151 shows how your window should look.
Figure 151 Selecting Watchpoints in the Review Window
426
Runset Debugger
Enterprise Interface Tutorial
Both the Watchpoints and Review windows allow you to select commands for
data output. Remember, the Watchpoints window is for selecting the primary
commands you want to debug. The Review window is for selecting additional
commands for debug, commands upon which the ones you selected in the
Watchpoints window are dependent.
427
Runset Debugger
Enterprise Interface Tutorial
Scroll up in the Exec window until you see the results of your PMOS and NMOS
commands. Figure 153 shows that you have unrecognized devices in both
commands.
428
Runset Debugger
Enterprise Interface Tutorial
429
Runset Debugger
Enterprise Interface Tutorial
Click the Results tab to open the Results window. Figure 154 shows the
Results window that should have appeared.
This window displays all the commands you selected as watchpoints and has a
select button for each layer in the command. These buttons are used to turn the
display of each layer on and off.
Figure 154 Runset Debugger Results Window
At the top of the Results window there are four buttons that allow you to control
the viewing of the layout data the Runset Debugger created. Start by opening a
library and a cell to view.
430
Runset Debugger
Enterprise Interface Tutorial
Note:
You might want to open your AD4FUL.LAYOUT_ERRORS file in a UNIX
shell to see which of the cells in your design has a device extraction error.
Because no devices were successfully extracted, you can assume that any
of the cells show the error.
Click the browse button to the right of the Cell Name field in the Open Cell
dialog box, to open the Browse Cell dialog box. This box is shown in Figure 155
on the right, although at this point yours is not complete.
The Browse Cell dialog box opens with no cells listed. You need to click the All
Cells button to show all of the cell views.
Select the TGATE cell from the Cell list in the Browse Cell dialog box.
Click OK in the Open Cell dialog box to open the TGATE.HOUT cell.
Figure 155 Open Cell and Browse Cell Dialog Boxes
Figure 156 shows the Enterprise window with the Runset Debugger data you
have selected to view.
431
Runset Debugger
Enterprise Interface Tutorial
Viewing Options
The cell you are going to use to debug is now open, with all layers and levels of
hierarchy viewable. The View Depth button, located to the right of the Open cell
button in your Runset Debugger window, allows you to select between viewing
the top level of hierarchy or the entire hierarchy. In the example, both of these
views are the same because the device layers are all at level 0 in the TGATE
cell.
The Unmark All button, which is next to the View Depth button, allows you to
deselect all of the layers at once so that you can more easily view them one at
a time. The select boxes associated with each command in the main Results
window are used to control viewing of individual layers. Take a minute to turn on
and off some of the layers to see how this viewing works.
432
Runset Debugger
Enterprise Interface Tutorial
433
Runset Debugger
Enterprise Interface Tutorial
If you look for the Boolean command containing ptox and pwell, which forms
the pact layer, you see that no pact layer is generated. Because it is empty and
also the layer from which the psd device layer is derived, you are not going to
get any PMOS devices.
The fact that the pact and psd layers are empty should cause you to look at the
Boolean generating the pact layer and realize that it is the wrong relationship
between the ptox and pwell layers. Remember, the PMOS devices are located
where ptox is, in N-type substrate or NOT pwell.
At this time you can make the necessary correction to the debug.ev runset
using an editor such as vi, or you can continue and try to find the error with the
NMOS device extraction. Your directory has a runset, debug1.ev, with the
necessary corrections for the NMOS and PMOS device extraction.
434
Runset Debugger
Enterprise Interface Tutorial
435
Runset Debugger
Enterprise Interface Tutorial
Figure 159 Watchpoints Window with DRC and MOS Commands Selected
Figure 160 shows all the commands you selected as they appear in the Review
window. You scroll down past the HEADER and ASSIGN sections to see these
commands.
436
Runset Debugger
Enterprise Interface Tutorial
Figure 160 Review Window with DRC and MOS Commands Selected
437
Runset Debugger
Enterprise Interface Tutorial
watchpoints, in case there are any errors in the DRC checks that you need to
debug.
For the first two DRC checks, ASSIGN layers are used, so you do not need to
select additional commands.
For the second two DRC checks, select all of the preceding data creation
commands; that is, all commands between the second DRC check (ENCLOSE)
and the last DRC check. See the boxes checked in Figure 161.
438
Runset Debugger
Enterprise Interface Tutorial
Once you have selected all of the correct watchpoints, click the Exec tab.
When the job is complete, scroll up in the Exec window to make sure there are
no device extraction errors in the PMOS and NMOS commands (see
Figure 162).
439
Runset Debugger
Enterprise Interface Tutorial
440
Runset Debugger
Enterprise Interface Tutorial
Because both Boolean checks involve the wide_met1 layer, start by clicking the
Unmark All button in the Debugger window, and then mark the wide_met1
layer. Notice that the wide_met1 layer does not appear in the Enterprise
window.
441
Runset Debugger
Enterprise Interface Tutorial
Because the design rule states that all MOS contacts and wellties or subties
must be covered by metal >=5.00, and you have created this layer and called it
wide_met1, you can expect this layer to contain data. However, it is empty, so
there is probably an error in the creation of the wide_met1 layer.
Select the dev_cont layer to verify that you do have MOS contacts in this cell.
Select the met1 layer to verify that there is metal 1 in the cell.
You should see that there is metal 1 overlaying the dev_cont layer. You might
want to measure the metal 1 layer to verify that it is indeed 5 µm wide and
should be considered wide_met1. Look at the creation of wide_met1. Because
you are undersizing the metal by 2.5, you are actually removing all skinny metal
that is less than or equal to 5 µm. According to your design rule, you need to
remove only the skinny metal that is less than 5 µm, so that the wide metal that
is left is greater than or equal to 5 µm. To fix the problem in the runset you need
to change the UNDER_OVER value from 2.5 to 2.49.
If you want to verify that this change to the UNDER_OVER value catches the
errors with the plug_cont layer, open the ADFULAH cell and go through the
same process you did with the dev_cont layer in the TGATE cell.
442
Runset Debugger
Summary
Summary
You have now completed the Hercules Runset Debugger tutorial with the
Enterprise Layout Editor. You should be able to use the Hercules Runset
Debugger in conjunction with Enterprise to construct an error-free Hercules
runset.
If you do not have the Virtuoso Layout Editor, proceed to the next chapter.
443
Runset Debugger
Virtuoso Interface Tutorial
Note:
If you find it a problem to change files in the system-wide installation
directory, you can create a custom private copy of the evp.dat file.
• Copy the evp.dat file to the current working directory:
cp 'which evp.dat'
• Place a symbolic link to the EVP executable into the current working
directory:
ln -s 'which evp'
• Verify that which evp now reports ./evp. If not, you need to place a dot (.)
earlier in your PATH.
• Edit ./evp.dat to make the changes.
• Use the drDefinePacket section of ./display.drf for the names of the available
packets.
• The screen shots were taken using: cyan, greendots_S, lime, Unrouted4,
yellow, orange, blue, cyandot3dashed, limelhdashed, Unrouted8, and white.
444
Runset Debugger
Virtuoso Interface Tutorial
445
Runset Debugger
Virtuoso Interface Tutorial
Click OK.
There should be one warning. See the log file ./PIPO.LOG for more details.
446
Runset Debugger
Virtuoso Interface Tutorial
Choose Synopsys Tools > Start Hercules Debugger (see Figure 167).
447
Runset Debugger
Virtuoso Interface Tutorial
You should now have successfully started the Runset Debugger. Figure 168
shows the Runset Debugger GUI with the Setup window selected.
448
Runset Debugger
Virtuoso Interface Tutorial
449
Runset Debugger
Virtuoso Interface Tutorial
• Runset: Use this field to tell the Runset Debugger the name of the Hercules
runset you are testing.
• Hercules Options: Enter Hercules command-line options in this field. These
are included when you execute Hercules. For example, if you want to run
only a sub-block of a design, enter:
-b block_name
• Filename of techfile for layout: This field specifies the path to the techfile of
the design data. This matches your QA cells.
• Output library name: This is the name of the library that is created by the
Debugger to hold the captured layer information.
• Stream-In templatefile: This filename specifies the templatefile that holds
the settings used to stream the GDSII data back into the dfII capture library.
See the following information on how to create this file.
• Starting capture layer: This field specifies the layer number assigned to the
first layer included in the GRAPHICS_NETLIST command used to generate
the output database. Subsequent layers are assigned successive layer
numbers.
450
Runset Debugger
Virtuoso Interface Tutorial
Fill in the Dump Technology File dialog box and click OK. See Figure 171.
451
Runset Debugger
Virtuoso Interface Tutorial
Close the Technology File Manager panel by choosing File > Close.
In the Output library name field, enter:
tutorial_debug_out
To create the stream-in templatefile, choose File > Import > Stream, as shown
in Figure 172.
452
Runset Debugger
Virtuoso Interface Tutorial
453
Runset Debugger
Virtuoso Interface Tutorial
454
Runset Debugger
Virtuoso Interface Tutorial
455
Runset Debugger
Virtuoso Interface Tutorial
It also locates any necessary macros or #INCLUDE files and incorporates them
into the runset.
If any errors are found that would prevent Hercules from running, the Runset
Debugger opens the Errors window (shown in Figure 175). The Errors window
displays a full list of parsing errors or warnings. In the example, you see a
RUNSET ERROR for the undefined keyword VERB0SE.
Figure 175 Runset Debugger Errors Window
Correcting Errors
Runsets cannot be edited from directly within the Runset Debugger. In order to
fix this runset error, you need to edit the runset.
Open the debug.ev runset file in an editor. We use vi for this example. Go to a
UNIX window and execute the following:
vi debug.ev
You see that the O in VERB0SE is actually spelled with a 0 by mistake. Correct
the spelling to VERBOSE and save the file.
456
Runset Debugger
Virtuoso Interface Tutorial
This time the Runset Debugger skips a display of the Errors window and goes
directly to the Watchpoints window. Because there are no errors found in the
runset, the Runset Debugger goes on to the next step, preparing you to set
your watchpoints for debugging. (You should still check the contents of the
Errors window, though, because it might contain WARNINGS you should know
about.) Figure 176 shows the Watchpoints window that should appear
automatically after the Runset Debugger processes your change to the runset
file.
Figure 176 Runset Debugger Watchpoints Window
457
Runset Debugger
Virtuoso Interface Tutorial
458
Runset Debugger
Virtuoso Interface Tutorial
Selecting Watchpoints
Now choose some watchpoints for the Runset Debugger to process. There are
search fields in the Watchpoints window above the runset. You can use the
459
Runset Debugger
Virtuoso Interface Tutorial
down arrow to select the kind of search and the field to the right of the search
type to enter a keyword for your search.
As mentioned earlier, you are going to work your way through each of the
commands in the runset to verify that they are written correctly. For this tutorial,
you work on a clean design or QA cell where, if the runset is correct, all
MOSFETs should be extracted correctly and there should be no DRC errors.
Start by choosing a few of the Boolean commands that are used to calculate
the derived regions in the transistors of the chip. Put a watchpoint on lines 50,
56, 58, and 60, as shown in Figure 179. These are the calculations of pplug,
nplug, psd, and nsd.
460
Runset Debugger
Virtuoso Interface Tutorial
461
Runset Debugger
Virtuoso Interface Tutorial
While you are displaying the Review window you should also notice that the
GRAPHICS_NETLIST command has been added to your runset. This
command creates the output library you specified in your initial setup, and
writes out all the data in any of the layers referred to by the commands you
selected.
Scroll through the Review window so that the Boolean commands and
GRAPHICS_NETLIST command are all showing.
462
Runset Debugger
Virtuoso Interface Tutorial
Select a few of the Boolean commands as watchpoints and notice how the
layers used in these commands are added to the GRAPHICS_NETLIST
command.
At this time you can choose to select one or all of the boxes to the left of the
commands in your new runset. For the tutorial, use the Set All button in the
upper-left corner of the window to select all of the commands for viewing.
Figure 181 shows what your window should look like.
Figure 181 Selecting Watchpoints in the Review Window
Both the Watchpoints and Review windows allow you to select commands for
data output. Remember, the Watchpoints window is for selecting the primary
463
Runset Debugger
Virtuoso Interface Tutorial
commands you want to debug. The Review window is for selecting additional
commands for debug, commands upon which the ones you selected in the
Watchpoints window are dependent.
464
Runset Debugger
Virtuoso Interface Tutorial
465
Runset Debugger
Virtuoso Interface Tutorial
Click the Results tab to the right of the Exec tab to open the Results window.
Figure 183 shows the Results window that should appear.
This window displays all the commands you selected as watchpoints and has a
select button for each layer in the command. These buttons are used to turn the
display of each layer on and off.
Figure 183 Runset Debugger Results Window
Look at the top of the Results window under the Runset Debugger tabs. There
are three buttons that allow you to control the viewing of the layout data the
Runset Debugger created. Start by opening a library and a cell to view.
466
Runset Debugger
Virtuoso Interface Tutorial
Figure 185 shows the Virtuoso window with the Runset Debugger data you
selected to view.
467
Runset Debugger
Virtuoso Interface Tutorial
Viewing Options
The cell you are going to use to debug is now open, with all layers and levels of
hierarchy viewable. The View Depth button, located to the right of the Open cell
button in your Runset Debugger window, allows you to select between viewing
the top level of hierarchy or the entire hierarchy. In the example, both of these
views are the same because the device layers are all at level 0 in the TGATE
cell.
The Unmark All button next to the View Depth button allows you to deselect all
of the layers at once so that you can more easily view them one at a time. The
468
Runset Debugger
Virtuoso Interface Tutorial
select boxes associated with each command in the main Results window are
used to control viewing of individual layers. Take a minute to turn on and off
some of the layers to see how this viewing works.
469
Runset Debugger
Virtuoso Interface Tutorial
Verify the location of the p-type diffusion, ptox. Figure 187shows that the ptox
layer looks correct, with p-type diffusion around the upper transistor of the
inverter, and part of the well tie below.
470
Runset Debugger
Virtuoso Interface Tutorial
471
Runset Debugger
Virtuoso Interface Tutorial
472
Runset Debugger
Virtuoso Interface Tutorial
473
Runset Debugger
Virtuoso Interface Tutorial
This appears to be the p-type plug material in the well tie structure.
In the sixth Boolean, calculate the active area for PMOS devices. Select only
the inputs to the sixth Boolean, pwell and ptox. See Figure 191.
474
Runset Debugger
Virtuoso Interface Tutorial
475
Runset Debugger
Virtuoso Interface Tutorial
What is shown in Figure 192 does not look like the active area of the PMOS
device. Our calculation was BOOLEAN ptox AND pwell {} TEMP=pact.
Instead, you should NOT away the ptox that is within the pwell.
Close the Virtuoso window for INV by choosing Window > Close.
Edit the debug.ev file and change the BOOLEAN command on line 52. It
should now read BOOLEAN ptox NOT pwell {} TEMP=pact.
Exit from the editor and click the Setup tab.
Click Apply so that the runset is reexamined.
Select all the Boolean commands and click the Review tab.
Click the Exec tab to rerun Hercules on the changed runset.
Click the Results tab.
476
Runset Debugger
Virtuoso Interface Tutorial
What we see in Figure 193 looks like the active area of a PMOS device.
Look at the calculation of the source-drain area in the PMOS device. It is layer
psd, which is calculated in the penultimate Boolean on your watch list.
Deselect all and select the input layers, pgate and pact. See Figure 194.
477
Runset Debugger
Virtuoso Interface Tutorial
478
Runset Debugger
Virtuoso Interface Tutorial
What we see in Figure 195 appears to be the source and drain side of the
PMOS device. The PMOS device extraction command in the runset is:
PMOS p pgate psd psd temp = pdev
The calculation of pgate and psd appears to produce correctly three touching
regions for the device extraction.
479
Runset Debugger
Virtuoso Interface Tutorial
Rather than go through all the steps you performed for the PMOS device
calculations, look at the final results first to see if everything is correct at the
offset.
Click Unmark All.
Select ngate and nsd. See Figure 196.
Figure 196 ngate and nsd Layers in INV Cell
The gate is visible, but where are the source and drain? If ngate is correct, find
out what happened to layer nsd.
Looking at the last Boolean, select the inputs ngate and nact. See Figure 197.
480
Runset Debugger
Virtuoso Interface Tutorial
The active area of NMOS devices, layer nact, is calculated incorrectly in the
seventh Boolean.
Select only the inputs pwell and ntox. See Figure 198.
481
Runset Debugger
Virtuoso Interface Tutorial
The P well marker (pwell) around the active area of the lower N channel device
is visible. It looks like the proper N-type thin oxide. N active was calculated
incorrectly using the command BOOLEAN ntox NOT pwell {} TEMP=nact.
To change the command to a Boolean AND, close the Virtuoso window for INV
with Window > Close.
Edit debug.ev and change the Boolean on line 54. It should now read
BOOLEAN ntox AND pwell {} TEMP=nact.
Exit the editor and click the Setup tab.
Click the Apply button so that the runset is reexamined.
Select all the Boolean commands and click the Review tab.
482
Runset Debugger
Virtuoso Interface Tutorial
Now let’s see if we have a proper three-terminal region for NMOS extraction.
Select only the ngate and nsd layers. See Figure 200.
483
Runset Debugger
Summary
Figure 200 The Revised ngate and nsd Layers in INV Cell
Summary
You have now completed the Hercules Runset Debugger tutorial with the
Virtuoso Layout Editor. You should be able to use the Hercules Runset
Debugger in conjunction with Virtuoso to construct an error-free Hercules
runset.
484
A
Using Enterprise With Hercules-Explorer
A
489
Using Enterprise With Hercules-Explorer
Introduction to Running Enterprise
In order to stream in a library in Enterprise, you must create a new library and
open it first.
Create Library
To create a new library in Enterprise, choose Library > Create from the pull-
down menu, in either the top or bottom window.
490
Using Enterprise With Hercules-Explorer
Introduction to Running Enterprise
The Create Library dialog box is displayed, as shown in Figure 203. Fill in the
Library Name and Tech File Name, as shown. The milkyway.tf techfile is in your
addertest2 directory and the Library Path should also be set to the addertest2
directory.
Figure 203 Create Library Dialog Box
491
Using Enterprise With Hercules-Explorer
Introduction to Running Enterprise
Note:
Enterprise keeps track of the last five libraries you opened and displays the
library information in the Show: Last Opened Library(s) field. Using this list,
you can open a library by double clicking its name.
Make sure EX_ADDER_2 is in the Library Name field. If it is not, enter the
command:
EX_ADDER_2
Click OK in the Open Library dialog box to dismiss it. You should get the
following message in the console window indicating the library opened
successfully:
Opened library "/l0/synopsys/tutorial/addertest2/EX_ADDER_2"
successfully in write mode
492
Using Enterprise With Hercules-Explorer
Introduction to Running Enterprise
Using the pull-down menus in the top Enterprise window, choose Utilities >
Stream In. You see an empty version of the dialog box shown in Figure 205.
Figure 205 Stream In Dialog Box
Fill in the text fields with the information above, including the Stream File Name
and Library Name. Click OK when you are finished.
In the console window you should see the messages shown in Figure 206.
Figure 206 Enterprise Window After Filling in Stream In Dialog Box
Because the library was opened before streaming in, we can now open a cell
from the EX_ADDER_2 library.
493
Using Enterprise With Hercules-Explorer
Introduction to Running Enterprise
Open a Cell
From the console window, enter:
gxwOpenCell
Or, from the pull-down menu, choose Cell > Open.
In either case, you see the Open Cell dialog box.
Figure 207 Open Cell Dialog Box
Navigating this dialog box is similar to working with the previous dialog boxes.
Click the browse button immediately to the right of the Cell Name field
(indicated by the arrow in Figure 207). Figure 208 shows the Browse Cell
dialog box.
494
Using Enterprise With Hercules-Explorer
Introduction to Running Enterprise
Select a Structure
Select INV.CEL;1 in the Browse Cell dialog box, and click OK. The image
shown in Figure 209 appears in the main display window.
Note:
You can also type the information into the text fields in the Open Cell dialog
box:
• Library Name: EX_ADDER_2
• Cell Name: INV
495
Using Enterprise With Hercules-Explorer
Running Hercules from Enterprise
496
Using Enterprise With Hercules-Explorer
Running Hercules from Enterprise
Fill in the runset file name with adderdrc2_mw.ev, as we did in Figure 210. This
is the same runset as adderdrc2.ev, except for two commands in the HEADER
section shown here:
OUTLIB = EX_ADDER_2_OUT
FORMAT = MILKYWAY
497
Using Enterprise With Hercules-Explorer
Using Hercules-Explorer with Enterprise
character lengths of 127) into our old database (with character lengths of 32),
therefore we had to create a new output library.
Click OK once you have filled in the runset name.
After you click OK, Hercules executes. Quickly check your UNIX shell to make
sure the Hercules job is running correctly. Hercules must be able to write to the
shell, so be sure you do not have any files open while Hercules is executing.
498
Using Enterprise With Hercules-Explorer
Using Hercules-Explorer with Enterprise
Click OK in the Close Library dialog box. You should get the following message
in the console window indicating your library closed successfully:
Saved and closed library "your_path/tutorial/addertest2/
EX_ADDER_2" successfully
Load Hercules-Explorer
In the pull-down menu of the top Enterprise window, choose Verification >
Explorer-Explorer DRC.
Because you already executed Hercules in your current directory, Hercules-
Explorer automatically loads the Hercules output. You should see the following
Hercules-Explorer and Enterprise windows on your screen. Slide your
Hercules-Explorer window over so it is not overlaying the Enterprise window, as
we did in Figure 212.
Figure 212 Hercules-Explorer and Enterprise Windows
499
Using Enterprise With Hercules-Explorer
Using Hercules-Explorer with Enterprise
500
Using Enterprise With Hercules-Explorer
Using Hercules-Explorer with Enterprise
Save the INV cell by choosing Cell > Save from the pull-down menu.
501
Using Enterprise With Hercules-Explorer
Using Hercules-Explorer with Enterprise
Verify that the dialog box is correct and then click Execute at the top of the box.
Notice that your Input Library is EX_ADDER_2 and the Output Library is
EX_ADDER_2. The Runset File should be adderdrc2.ev.
Once Hercules has completed its run, the Hercules-Explorer GUI is updated. If
you correctly fixed the design error, you should see NO ERRORS in the
Hercules-Explorer GUI, as shown in Figure 216.
502
Using Enterprise With Hercules-Explorer
Summary
Note:
If you did not have the Enterprise Grid or Snap feature on, you might get
SNAP errors on the polygon you edited.
Summary
You have now completed an example using Hercules, Hercules-Explorer, and
Enterprise together to run DRC commands, debug the commands, fix errors,
and then rerun in order to verify that you have a clean design. We suggest that
you go through a similar exercise on your own with the runset and GDS stream
file used in Chapter 4, “A Complete Design for DRC,” which is an example of
multiple errors in a design.
503
Using Enterprise With Hercules-Explorer
Summary
504
Index
505
in top block 260 documentation 4
CUT check 76 manuals 4
ENCLOSED 76 Drac2He 112
TOUCH 74, 76 conversion of EDTEXT and HEDTEXT files 376
ERRORS in 133, 376
EXPLORER_DATA option 133, 376
D how to run 374
DAC96 LAYOUT_ERRORS 193 INLIB 133
DAC96.acct 194 -N option 114
DAC96.cmperr 218 -N options 122
DAC96.cmpsum 208 -OutType option 113
DAC96.LVS_ERRORS 208 -rc 122
DAC96.sum 196 -rc option 114
Data Creation running 116
Boolean operator Dracula
AND example 78, 79 case sensitivity 378
forming new layers with 71 differences between Hercules and 396, 399
layer used with INTERNAL 80 DRACULA_DEFAULTS 120
NOT example 79, 81 EVACCESS_OPTIONS section 375
check 78 filter options 402
commands 121 HEADER section 375
new layers added 89, 96 OPTIONS section 375
statements 73 output 117, 375
Data Creation commands rule file 112, 391
written to TEMP layers 121 rule file translator 112
Debugging large designs 264 syntax matching Hercules syntax 121, 403
Derived layers 114 translations 391, 396, 399
DETECT_PERMUTABLE_PORTS 180, 263 translator options 113
Device DRACULA_DEFAULTS
connectivity 395 OPTIONS section 120
definitions 170 Drain/Source pins 175, 177
netlisting 265 DRAM block 263
placing in child cell 267 DRC
Device extraction 271, 395, 433, 469 checks 413
BIPOLAR 170, 397 translation 395
BJTs 397 translation options 114
CAPACITOR 170, 398 window 138
DIODE 398 drc3.ev 132, 135
MOSFET 396
RESISTOR 399
E
Device layers 147
EDTEXT file 159, 167, 187, 376, 382
generation 170
syntax example 187
Dimensional check with -rc and -N options 122
Directories ENCLOSE check 82
creating for Hercules setup 2 Enterprise
Documentation and Enterprise output library 497
downloading 4 and Milkyway 497
Downloading correcting errors 500
506
how to run 489 OPTIONS section 46
running Hercules from 413, 496, 501 EVACCESS directory 44
running Runset Debugger from 413 AD4FUL.ev file example 44
selecting a structure 495 Explode 174, 287
short fixing in 318 EXPLODE_ON_ERROR 158, 174, 264, 287
using Explorer with 498 Explorer
Enterprise commands Checks window 106
gxwOpenCell 57 connecting to Composer 380
gxwOpenLibrary 56 connecting to Virtuoso 380
Environment for error debug 132, 386
accommodating Hercules 4 HXDRC main window 102
EQUATE in Composer 372, 386
commands 400
in Virtuoso 132, 372, 386
option 296
information window 121
EQUATE_BY_NET_NAME 178 linking html output to 333
EQUIV option 296 locating shorts in 309, 319
Equivalence file 150, 159, 165, 188 using hxlvs for debug 339
generating 265, 404 viewing errors in 311
guidelines 265 EXPLORER_DATA 166
in strict LVS flow 264 EXPLORER_DATA option for Drac2He 376
setting options and variables 151
Explorer_DATA option for Drac2He 133
Equivalence points 154, 158
EXTERNAL check 15, 73
matching 266, 404
error vector created 52
Error file 19, 52, 85 example 67, 73
geometric representation of 52 TOUCH option illustrated 75
ERROR hierarchy 120
Error hierarchy 58, 59, 113
alternatives for output files 67 F
assigning layer number 16, 73 File transfer protocol (ftp) 1
ERR_PREFIX option 67 Filter options 173, 174, 337, 402
OUTPUT_BLOCK 12 FIND_SHORTEST_PATH_BETWEEN_SHORTS.
used for dimensional checks 67 See FSPBTS 326
Error highlight options 314 Flat netlists 152
Error output 132, 372 FLATTEN 261
Error vector Floating 156
defined 52 FORMAT 13
illustrated 52 FSPBTS
list in Explorer Checks window 106 finding shorts with 326
output hierarchy options 67 running Hercules with 329
error.out 128
ERRORS 270 G
in Drac2He 133, 376
Gate pins 175
in Migration2 example 125
ERRORS and WARNINGS GDSII 11, 13, 395
in Drac2He 125, 128 and Hercules run options 135, 136
setting up messages for 270 format for Drac2He output 133, 375
layout output from Virtuoso 382
EVACCESS 44
AD4FUL.ev file in 44 user property separator 135
507
Graphical output 171 Runset Debugger. See Runset Debugger 407
GRAPHICS command 73 runset file results 189
GRAPHICS_NETLIST 462 runset OPTIONS 166
Grid checking 168 schematic netlist file 180, 394, 400
Ground nets 179 setup 5
syntax matching Dracula syntax 121, 403
Group files 12
texting options 168
GROUP_DIR 12
Hercules/Explorer/Opus environment 136, 385
HERCULES_HOME_DIR 2, 4
H Hierarchical
HEADER device extraction 147
as keyword in Runset 164 netlist comparison 150
section texting 149
BLOCK 12 Hierarchical LVS. See HLVS 147
FORMAT 13 Hierarchy tree
GROUP_DIR 12 AD4FUL design 31
INLIB 11 files 30
LAYOUT_PATH 11 Highlighting 314, 355
OUTLIB 12 in Virtuoso and Composer 385
OUTPUT_BLOCK 12 nets and devices 349, 385
HEADER section
HLVS 147, 153
BLOCK 19
comparison phase 147, 153, 156, 157, 405
HEDTEXT file 376
difficulties presented by 156
Hercules
extraction phase 147, 156
and GDSII 135, 136
migration flow 372
and STAR-RC 266
versus flat LVS 153
case sensitivity 378
html debug interface 208, 259
COMMENTS 121
comparison phase 172, 180 HTML documentation 4
creating setup directories 2
differences between Dracula and 396, 399 I
equivalence file 150 icfb window 134, 379, 444
ev_engine 395
IGNORE_CASE 166
extraction phase 170, 172, 395
INLIB 11
HLVS 145, 146
for Drac2He 133, 375
how to run 188, 413, 444
Input layers 114
improving runtimes 264
Installing
in the Opus environment 378
Hercules executables 3
licensing 5
installing
LVS device extraction output files 193
code files 3
LVS html interface 259
Interaction of Data Across a Hierarchy 148
output problems and solutions 190, 393
INTERNAL check 75, 120, 121
preprocessing options 168
checking Data Creation layers 78
processing hierarchy 152
corner option illustrated 75, 76
rerunning 339, 357, 405, 434
DIMENSION option 80
results file 191, 193
EDGE_45 option 75
running 84
example 75
running FSPBTS with 329
INTERNAL, first dimensional command 120
508
IP blocks, reuse of 264 schematic globals missing 306
text open ERROR 302
text short ERROR 303
L unused text ERROR 301
Layer assignments 169 where to start 341
Layout netlisting 171, 271 LVS device equate options
Layout window in Opus 134, 379 CHECK_PROPERTIES 172
LAYOUT_GROUND 167 FILTER_OPTIONS 173
LAYOUT_POWER 167 REL_TOLERANCE 172
Library cells 155 LVS device extraction output files 193
Licensing Hercules 5 AD4FUL.sum 196
locating TEXT shorts 309 DAC96.acct 194
lsh 404 DAC96.LAYOUT_ERRORS 193
DAC96.net 207
LVS 146
technology option files 207
Hierarchical. See HLVS 147
tree files 207
strict flow comparison 260, 296
LVS netlist extraction 170
LVS comparison options 173
connectivity commands and options 171
COMPARE_PROPERTIES 173
device definitions 170
DETECT_PERMUTABLE_PORTS 180
device layer generation 170
EQUATE_BY_NET_NAME 178
graphical output 171
EXPLODE_ON_ERROR 174
layout netlisting command 171
FILTER 174
texting commands 171, 413
MERGE_PARALLEL 176
MERGE_PATHS 177 lvsflow Directory Structure 236
MERGE_SERIES 175
PROPERTY_WARNING 173 M
PUSH_DOWN_DEVICES 179, 270 Macros 155
PUSH_DOWN_PINS 179 reuse of 264
REMOVE_DANGLING_NETS 179 Manuals
RETAIN_NEW_DATA 174 downloading 4
STOP_ON_ERROR 174 Marker layer 261
LVS comparison output files
Memory block 155
/lvsflow directory structure 236
MERGE_PARALLEL 176
DAC96.cmperr 218
DAC96.cmpsum 208 MERGE_PATHS 177
DAC96.lvsdebug 208 MERGE_SERIES 175
LVS comparison phase MESSAGE_ENABLE 271
comparison options 173 MESSAGE_ERROR 271
LVS device equate options 172 MESSAGE_IDENTIFIERS 271
output files 207 MESSAGE_SUPPRESS 271
LVS debug 304 Migration.lvs 375
device extraction ERRORS 298, 300 Miscompares 270
filtering options missing 304 Mistexting 150
LAYOUT POWER or LAYOUT GROUND
MOS_REFERENCE_LAYER 266
definitions missing 305
merging options missing 304
POWER/GROUND shorts 305 N
quick checklist 298 Naming
509
blocks 155 in top-level holding structure 59
ports 156 OUTLIB name for 12
NET_PREFIX 168 VERBOSE option 68
NetTran 181, 394 when output omits 121
-cdl-chop option 377 Permanent output 72
NETTRAN_OPTIONS 394, 395 Pin text 149
Polygon data 147
Port
O relationships 151, 152
Options swappability 157
for Dracula translator 113
Power nets 179
for DRC translations 114
Preprocessing options 13, 168
priority of EQUATE, EQUIV, or COMPARE 296
ASSIGN_LAYERS 15
OPTIONS section 82, 133, 166, 376
CHECK_45 15
CHECK_REF_LIB 13
CHECK_PATH_45 14
EDTEXT 167
CHECK_PATH_90 14
ERR_PREFIX 67
GRID_CHECK 15
EXPLORER_DATA 166
IGNORE_CASE 166 Preserve, sensitivity setting 135
LAYOUT_GROUND 167 Proper hierarchy 148
LAYOUT_POWER 167 PROPERTY_WARNING 173
NET_PREFIX 168 PUSH_DOWN_DEVICES 179, 270
SCHEMATIC_GLOBAL 166 PUSH_DOWN_PINS 179
SCHEMATIC_GROUND 167
SCHEMATIC_POWER 167 R
WIDTH 13
Redraw command 386
Opus 378
Registering with Synopsys 5
environment 132, 374
layout window 134, 379 REL_TOLERANCE 172
version 133, 379 Release notes 4
OUTLIB 12 REMOVE_DANGLING_NETS 179
Output 72 REQUIRE_TEXTED_PORTS_MATCH 262
Dracula 117 RES_REFERENCE_LAYER 266
hierarchy 120 Resistors 175
when OutType option is set to ERROR 122 RETAIN_NEW_DATA 174
with PERM omitted 121 Rule file 112
Output files 72 Runset
OUTPUT_BLOCK 12 OPTIONS section 13
OUTPUT_FORMAT for Drac2He 133, 375 rules, explanation of 71
Runset Debugger 407
correcting errors 418, 433, 441, 456, 469
P exec window 427, 440, 464
PAD layer 261 opening a library and a cell 430, 466
Parallel merging 177 results window 429, 465
Path merging 178 review window 424, 437, 439, 461
PERM layers 72, 113 run_only.ev 427, 464
example 67, 79, 81 setup window 415, 435, 449
for Data Creation statements 78 verifying the debugged runset 442
510
viewing options 432, 468 how to freeze 16, 189, 272, 286, 307
watchpoints window 419, 420, 436, 457, 458 how to restart 16, 189, 272, 286, 307
Runset file 160 Series chain devices 175
COMMENTS 121 Series merging 176
components of 9, 146, 409 Setup
example 9, 82, 160 Hercules 5
in Hercules LVS 159 Shortest path tool 313
running Hercules on 50, 409 Shorts
Runset header information 164 fixing 318
COMPARE_DIR 165 locating 309
EQUIV 165 Source drain overlap 266
SCHEMATIC 165 SPACING value for dimensional checks 76
SCHEMATIC_FORMAT 165 SPICE 377
Runset OPTIONS Standard cells 155
EDTEXT 167
STAR-RC 266
EXPLORER_DATA 166
Start and stop points 321
IGNORE_CASE 166
manually selecting 324
LAYOUT_GROUND 167
LAYOUT_POWER 167 STOP_ON_ERROR 174, 287
NET_PREFIX 168 Strict LVS flow 259
SCHEMATIC_GLOBAL 166 comparing top-block ports 260
SCHEMATIC_GROUND 167 examples 271, 295
SCHEMATIC_POWER 167 general requirements 260
Runset rule options MOS_REFERENCE_LAYER 266
CONVEX_TO_CONVEX 76 requiring all ports be texted 262
CUT_OUTSIDE 76, 77 requiring ports to match by name 262
DIMENSION 80 Substrate pin connections 175, 177
EDGE_45 75 SUBSTRATE processing differences 125
LONGEDGE 74 Summary (.sum) file 20, 53, 208
LONGEDGE_TO_EDGE 74 error messages written to 67
OVERLAP 82 in LVS job 196
PARALLEL 82 Swappability 157, 263
RANGE 78 Symmetry 263
SPACING 67, 73, 74, 75, 76, 82 Synopsys registration 5
TOUCH 74, 82 System-on-Chip (SOC) environment 153
Runset setting option 132, 372
translating from Dracula 132, 372
T
TEMP layers 114, 121
S VERBOSE option 68
Schematic netlist 146, 159, 165, 180, 186, 268, when to use 67, 81
400 Temporary output 73
SCHEMATIC_FORMAT 165, 394
TEXT_OPTIONS section 149
SCHEMATIC_GLOBAL 166
Texting commands 171
SCHEMATIC_GLOBALS 400
Texting options 168
SCHEMATIC_GROUND 167, 400 ATTACH_TEXT 168
SCHEMATIC_POWER 167, 400 Tolerance 172
Screen scrolling Top-level holding structure
511
HERCULES_OUT setting 59 W
OUTPUT_BLOCK setting 12 WARNINGS 270
TOUCH 76 on the SUBSTRATE translation 128
TOUCH and CUT checks 76 suppressing 279
Touch options 74 WARNINGS and ERRORS
Tree file 30 in Drac2He 125, 128
design statistics definitions 32 Width checks, poly and metal 75
WRITE_MILKYWAY 425
U
Unmatched devices 348, 353 X
Unmatched nets 348, 353 XPROBE 133, 379
Using Enterprise With Explorer 489
Z
V
VERBOSE option 68, 120 zipped files, extracting 3
Virtuoso 372, 378
Virtuoso interface in the Opus environment 133,
378
512