Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>EPIC</strong> <strong>Tools</strong><br />
<strong>Reference</strong> <strong>Guide</strong><br />
Release 5.4, January 2000<br />
Comments?<br />
E-mail your comments about Synopsys<br />
documentation to doc@synopsys.com
Copyright Notice and Proprietary Information<br />
Copyright © 2000 Synopsys, Inc. All rights reserved. This software and documentation contain confidential and proprietary<br />
information that is the property of Synopsys, Inc. The software and documentation are furnished under a license agreement and may<br />
be used or copied only in accordance with the terms of the license agreement. No part of the software and documentation may be<br />
reproduced, transmitted, or translated, in any form or by any means, electronic, mechanical, manual, optical, or otherwise, without<br />
prior written permission of Synopsys, Inc., or as expressly provided by the license agreement.<br />
Right to Copy Documentation<br />
The license agreement with Synopsys permits licensee to make copies of the documentation for its internal use only. Each copy shall<br />
include all copyrights, trademarks, service marks, and proprietary rights notices, if any. Licensee must assign sequential numbers to<br />
all copies. These copies shall contain the following legend on the cover page:<br />
“This document is duplicated with the permission of Synopsys, Inc., for the exclusive use of<br />
__________________________________________ and its employees. This is copy number __________.”<br />
Destination Control Statement<br />
All technical data contained in this publication is subject to the export control laws of the United States of America. Disclosure to<br />
nationals of other countries contrary to United States law is prohibited. It is the reader’s responsibility to determine the applicable<br />
regulations and to comply with them.<br />
Disclaimer<br />
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO<br />
THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR<br />
A PARTICULAR PURPOSE.<br />
Registered Trademarks<br />
Synopsys, the Synopsys logo, AMPS, Arcadia, CMOS-CBA, COSSAP, Cyclone, DelayMill, DesignPower, DesignSource, DesignWare,<br />
dont_use, Eagle Design Automation, Eaglei, <strong>EPIC</strong>, ExpressModel, Formality, in-Sync, Logic Automation, Logic Modeling, Memory<br />
Architect, ModelAccess, Model<strong>Tools</strong>, PathBlazer, PathMill, PowerArc, PowerMill, PrimeTime, RailMill, SmartLicense, SmartModel,<br />
SmartModels, SNUG, SOLV-IT!, SolvNET, Stream Driven Simulator, Synthetic Designs, TestBench Manager, and TimeMill are<br />
registered trademarks of Synopsys, Inc.<br />
Trademarks<br />
ACE, Behavioral Compiler, BOA, BRT, CBA, CBAII, CBA Design System, CBA-Frame, Cedar, Chip Architect, Chronologic, CoreMill,<br />
DAVIS, DC Expert, DC Expert Plus, DC Professional, DC Ultra, DC Ultra Plus, Design Advisor, Design Analyzer, DESIGN (ARROWS),<br />
Design Compiler, DesignTime, DesignWare Developer, Direct RTL, Direct Silicon Access, dont_touch, dont_touch_network, DW 8051,<br />
DWPCI, Eagle, EagleV, ECL Compiler, ECO Compiler, Falcon Interfaces, Floorplan Manager, Foundation, FoundryModel, FPGA<br />
Compiler, FPGA Compiler II, FPGA Express, Frame Compiler, Fridge, General Purpose Post-Processor, GPP, HDL Advisor, HDL<br />
Compiler, Integrator, Interactive Waveform Viewer, Liberty, Library Compiler, Logic Model, MAX, ModelSource, Module Compiler, MS-<br />
3200, MS-3400, Nanometer Design Experts, Nanometer IC Design, Nanometer Ready, Odyssey, PowerCODE, PowerGate, Power<br />
Compiler, ProFPGA, ProMA, Protocol Compiler, RMM, RoadRunner, RTL Analyzer, Schematic Compiler, Shadow Debugger, Silicon<br />
Architects, SmartModel Library, Source-Level Design, SWIFT, Synopsys Graphical Environment, Synopsys ModelFactory, Test<br />
Compiler, Test Compiler Plus, Test Manager, TestGen, TestSim, TetraMAX, TimeTracker, Timing Annotator, Trace-On-Demand, VCS,<br />
VCS Express, VCSi, VERA, VHDL Compiler, VHDL System Simulator, Visualyze, VMC, and VSS are trademarks of Synopsys, Inc.<br />
Service Marks<br />
TAP-in is a service mark of Synopsys, Inc.<br />
All other product or company names may be trademarks of their respective owners.<br />
Printed in the U.S.A.<br />
Document Order Number: 32669-014 HB<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>, Release 5.4
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong><br />
Table of Contents<br />
About This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi<br />
1 Introduction<br />
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />
2 <strong>EPIC</strong> Netlist Format<br />
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
Syntax Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
Characters Not Permitted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
Element and Attribute Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
Using Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
Port Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
Circuit Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
Floating Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
Inductor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
Bipolar Junction Transistors and Junction Diodes. . . . . . . . . . . . . 17<br />
BJT Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
iv Table of Contents<br />
Diode Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
Reading Diodes as Capacitors . . . . . . . . . . . . . . . . . . . . . . 20<br />
CMOS Transistor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
Voltage Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
SIN Voltage Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
EXP Voltage Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />
AM Voltage Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
SFFM Voltage Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
Voltage Controlled Voltage Sources . . . . . . . . . . . . . . . . . . . . . . . . 32<br />
Subcircuit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
Hierarchical Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />
Net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />
Gate-level Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />
Timing Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />
SETUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />
HOLD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />
Edge to Edge (ETOE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />
Pulse Width (PULSEW). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />
Global Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
Global Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
Global Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />
Power and Ground Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />
Netlist Control Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />
Control Option Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />
Option Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />
Parameter Passing in Netlists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />
Parameter Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />
Parameter Passing Using HSPICE Rules . . . . . . . . . . . . . . . . . . . . 71<br />
General Usage Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />
Functions and Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />
Other Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
Initial Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
PWL Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />
Sense Pair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />
Include Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3 Netlist Compiler and Translators<br />
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />
Compiled Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />
LSIM Netlist Features and Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />
SPICE Netlist Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />
HSPICE Netlist Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />
General Control Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />
Input File Control Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />
Analysis Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />
Output Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />
Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />
Cadence SPF File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />
SPF Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />
SPF Control Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />
SPF Netlist Reader Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />
Source-to-Drain Checking . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />
Common SPF Warnings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />
Connectivity Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />
Duplicate Global Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />
Net Does Not Exist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />
Hierarchical SPF Back-Annotation. . . . . . . . . . . . . . . . . . . . . . . . . 94<br />
Device Parameter Format File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />
<strong>EPIC</strong> Binary File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />
Control Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />
SPICE Netlist Translator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />
Model File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br />
Alias File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br />
Default File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />
Diodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />
Resistors and Capacitors . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />
Default File Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108<br />
spice2e Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />
Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />
Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />
Supported SPICE Netlist Syntax . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />
v<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
vi Table of Contents<br />
Ignored SPICE Netlist Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />
SPICE Netlist Syntax to Avoid . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />
Substrate Terminal Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />
EDIF Netlist Translator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />
Supported EDIF Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />
Unsupported EDIF Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />
edif2e Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />
Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />
Verilog Netlist Translator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br />
vlog2e Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />
Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />
The Ecrypt Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131<br />
Level-One Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />
Command Syntax for Level-One Encryption. . . . . . . . . . . . . . . . . 132<br />
Level-Two Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />
Command Syntax for Two-Level Encryption . . . . . . . . . . . . . . . . 132<br />
Tutorial: Performing a Level-Two Encryption . . . . . . . . . . . . . . . 133<br />
Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />
4 <strong>EPIC</strong> Technology File<br />
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />
Automatic Technology File Generation . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />
Specifying Automatic Technology File Generation . . . . . . . . . . . . 140<br />
Modifying the Netlist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />
Running a Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />
Creating a Runscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />
Gentech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153<br />
Sample Control Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />
HSPICE Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />
Example of Other SPICE Types . . . . . . . . . . . . . . . . . . . . 156<br />
Gentech Control File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br />
Section 1 - %lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br />
Section 2 - %model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />
Section 3 - %parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Section 4 - %corner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />
Section 5 - %invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />
Section 6 - %options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197<br />
Section 7 - %diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />
Running Gentech. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />
Gentech Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />
Single-Step and Multiple Step (Batch) Modes . . . . . . . . . 201<br />
Using Multiple Technology Files. . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />
Temperatures and Voltages . . . . . . . . . . . . . . . . . . . . . . . 204<br />
PrintWL Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />
The Technology File Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209<br />
Veritech Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210<br />
Running Veritech. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211<br />
After Running Veritech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214<br />
If Veritech Aborts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214<br />
5 Stimuli and State Checking<br />
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219<br />
Stimulus Functions and Vector Functions . . . . . . . . . . . . . . . . . . . . . . . . 219<br />
Function Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220<br />
Output State Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238<br />
Vector File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />
Time Value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />
Data Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />
Continuing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />
Valid States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />
Running the Vector File Using type and signal Commands. . . . . 247<br />
State Characters Used by <strong>EPIC</strong> <strong>Tools</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />
Logic States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />
Input Stimulus Characters in Vector Files . . . . . . . . . . . . . . . . . . 251<br />
Expected Output Characters in Vector Files . . . . . . . . . . . . . . . . 252<br />
vii<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
viii Table of Contents<br />
6 batchrun Program<br />
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259<br />
Distributed Computing Capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259<br />
Batchfile Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />
Batchfile Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264<br />
7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />
Meas Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />
Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268<br />
Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268<br />
Edisplay Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269<br />
Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269<br />
Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270<br />
Edisplay Control File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275<br />
Eview Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />
Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277<br />
Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277<br />
Window Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278<br />
Menu Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278<br />
Text Display Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284<br />
Message Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284<br />
Eview Control File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284<br />
Waveform Display Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285<br />
SimWave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286<br />
turboWave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286<br />
Vector Translation Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287<br />
Vcd2e Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287<br />
Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288<br />
Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 288<br />
Vcd2e Window Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . 289<br />
Signal Save File Format . . . . . . . . . . . . . . . . . . . . . . . . . . 294<br />
Translating a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Batch Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298<br />
Appendix A: Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299<br />
Customizing <strong>EPIC</strong> <strong>Tools</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299<br />
Customizing Wire Capacitance Estimate . . . . . . . . . . . . . . . . . . . . . . . . 302<br />
Appendix B: Output Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311<br />
The .out File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311<br />
The .act File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />
The .nact File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326<br />
The .nodealias File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328<br />
Warning Messages and the .log File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330<br />
Appendix C: Error Output File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />
The .err File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />
The Viewerror Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />
Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />
Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />
Appendix D: SPICE-independent Voltage Source Syntax . . 351<br />
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359<br />
ix<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
x Table of Contents
About This Manual<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong> describes <strong>EPIC</strong> utilities and<br />
features common to <strong>EPIC</strong> <strong>Tools</strong>.<br />
For information on: See:<br />
A general overview of the<br />
utilities and features<br />
The content, format and<br />
syntax of commands that are<br />
used in the <strong>EPIC</strong> circuit<br />
description file.<br />
Compiled files, SPICE netlist<br />
and translator, EDIF netlist<br />
translator, Verilog netlist<br />
translator, and the Ecrypt<br />
utility<br />
Generating, verifying, and<br />
viewing technology files<br />
Stimulus functions; output<br />
state comparison, and state<br />
characters used by <strong>EPIC</strong><br />
<strong>Tools</strong><br />
Running TimeMill, PathMill,<br />
PowerMill, or AMPS in batch<br />
mode<br />
Chapter 1, “Introduction”<br />
Chapter 2, “<strong>EPIC</strong> Netlist<br />
Format”<br />
Chapter 3, “Netlist Compiler<br />
and Translators”<br />
Chapter 4, “<strong>EPIC</strong> Technology<br />
File”<br />
Chapter 5, “Stimuli and State<br />
Checking”<br />
Chapter 6, “batchrun<br />
Program”
xii About This Manual<br />
Audience<br />
Related Manuals<br />
For information on: See:<br />
PowerMill and TimeMill<br />
simulation output utilities<br />
This manual is for users of <strong>EPIC</strong> <strong>Tools</strong>.<br />
The following Synopsys manuals in the <strong>EPIC</strong> tool set provide<br />
information specific to each <strong>EPIC</strong> Tool:<br />
■ PathMill <strong>Reference</strong> <strong>Guide</strong><br />
■ PathMill User <strong>Guide</strong><br />
■ PowerMill <strong>Reference</strong> <strong>Guide</strong><br />
■ PowerMill User <strong>Guide</strong><br />
■ RailMill <strong>Reference</strong> <strong>Guide</strong><br />
■ RailMill User <strong>Guide</strong><br />
■ TimeMill <strong>Reference</strong> <strong>Guide</strong><br />
■ TimeMill User <strong>Guide</strong><br />
■ AMPS <strong>Reference</strong> <strong>Guide</strong><br />
■ AMPS User <strong>Guide</strong><br />
The following Synopsys manuals provide further information<br />
about some of the utilities described in this manual:<br />
■ turboWave Manual<br />
Chapter 7, “Utilities for<br />
Dynamic <strong>EPIC</strong> <strong>Tools</strong>”<br />
Customizing <strong>EPIC</strong> <strong>Tools</strong> Appendix A, “Customization”<br />
Samples of different output<br />
files.<br />
Appendix B, “Output Files”<br />
Sample output error file and<br />
Viewerror utility<br />
SPICE-independent voltage<br />
source syntax supported by<br />
PowerMill, TimeMill, and<br />
AMPS<br />
Appendix C, “Error Output<br />
File”<br />
Appendix D, “SPICEindependent<br />
Voltage Source<br />
Syntax”
Conventions<br />
Commands<br />
■ SimWave Manual<br />
■ VTRAN Manual<br />
This manual uses certain style conventions to indicate<br />
commands, menus, examples, and filenames.<br />
SYNTAX:<br />
command_name [argument(s)]<br />
argument types: keyword | value | tag=value | tag=keyword<br />
Command Argument Definition<br />
keyword Keywords are identifiers that must be<br />
used as they appear. They are shown in<br />
base font.<br />
value Values are user-determined. They are<br />
shown in italic text to distinguish them<br />
from commands and keywords.<br />
tag=<br />
value<br />
keyword<br />
Tags can be followed by either a value or a<br />
keyword. Tags and keywords are in the<br />
base font. Argument values are in italics<br />
to distinguish them from commands,<br />
keywords, and tags.<br />
xiii<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
xiv About This Manual<br />
Symbol Definition<br />
| A pipe symbol (|) represents the word “or” and separates choices<br />
between two or more arguments.<br />
[ ] Square brackets show that an argument is optional. Nested brackets<br />
(e.g.]]]]) indicate that if a value is assigned to a given parameter,<br />
values must also be assigned to preceding parameters. (Nested<br />
brackets are used only for SPICE-independent voltage source<br />
functions.)<br />
... An ellipsis (...) indicates that more than one argument can be<br />
specified. Ellipsis are used only for multiple arguments with tags.<br />
SYNTAX:<br />
report_node_i a[vg] | r[ms] | p[eak] | h[ist] node_name(s)<br />
For this command, a[vg], r[ms], p[eak], and h[ist] are keywords–<br />
choose one of these. The node_name(s) are user-determined.<br />
EXAMPLE 1:<br />
report_node_i a VDD GND<br />
In this example, a is a keyword, and VDD and GND are values.<br />
SYNTAX:<br />
report_node_ic [a[ll]] [q[uoted]] [for=epic | spice] [time(s)]<br />
For this command, a[ll] and q[uoted] are optional keywords. The<br />
tag for= is part of an optional argument for which you can choose<br />
the keyword epic or spice. The time(s) are user-determined and,<br />
in this case, optional.<br />
EXAMPLE 2:<br />
report_node_ic all for=spice 1u<br />
In this example, all is a keyword, for= is a tag, spice is a<br />
keyword, and 1u is a value.
Menu Text, Filenames, and Examples<br />
Menu text appears in bold, as shown in the following example.<br />
EXAMPLE 1:<br />
To start setting up a run, select File→Design Data<br />
Setup.<br />
Filenames are shown in the same font as the surrounding text,<br />
but in italics.<br />
EXAMPLE 2:<br />
This is an example of a filename.out being shown in<br />
text.<br />
Examples are shown in a courier font as they might appear on<br />
your screen. Sometimes explanations follow examples, and in<br />
such cases, anything shown in the example that appears in the<br />
explanation is shown in the same courier font used in the<br />
example.<br />
EXAMPLE 3:<br />
add_node_cap RS100 275<br />
In the example, the capacitance value of node RS100 is increased<br />
by 275 femtofarads.<br />
xv<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
xvi About This Manual
Chapter 1<br />
Introduction
2 Chapter 1 Introduction
Overview<br />
Overview 3<br />
The <strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong> provides detailed information<br />
about the <strong>EPIC</strong> technology underlying the operations performed<br />
by <strong>EPIC</strong> tools. It also contains information about how to use<br />
various <strong>EPIC</strong> utilities to generate, interpret, and evaluate<br />
simulations. Some of the information contained in this guide<br />
pertains to the full set of <strong>EPIC</strong> tools, while other material is<br />
relevant to specific products.<br />
The <strong>EPIC</strong> circuit description, or netlist, is one of several netlists<br />
supported by <strong>EPIC</strong> that can be used as input to the simulation<br />
and analysis tools. An entire chapter is dedicated to providing<br />
detailed information about <strong>EPIC</strong> circuit elements, timing checks,<br />
parameter passing, and other components and factors involved<br />
in setting up the <strong>EPIC</strong> netlist. Information about the <strong>EPIC</strong><br />
netlist is found in Chapter 2.<br />
The <strong>EPIC</strong> netlist compiler supports LSIM, SPICE, Verilog, EDIF,<br />
and Cadence SPF netlist formats, in addition to its own. It reads<br />
LSIM and SPICE netlists directly and can translate Verilog and<br />
EDIF netlists to <strong>EPIC</strong> format for reading. You can use the Ecrypt<br />
utility to produce encrypted files. Detailed information about<br />
how the compiler processes these netlists when working with<br />
<strong>EPIC</strong> tools is provided. The netlist compiler is documented in<br />
Chapter 3.<br />
<strong>EPIC</strong> tools use the <strong>EPIC</strong> technology files to calculate timing and<br />
power behaviors. These files are created by the Gentech utility,<br />
which either generates them automatically or extracts them<br />
from your SPICE. <strong>EPIC</strong> also provides a utility for verifying the<br />
accuracy of the generated technology files. The Veritech utility<br />
runs both your SPICE and an <strong>EPIC</strong> tool for purposes of<br />
comparison. Another utility, TechViewer, lets you view an <strong>EPIC</strong><br />
technology file in a graphical format. See Chapter 4 for<br />
information about these utilities.<br />
Stimulus and monitoring functions for the dynamic <strong>EPIC</strong> tools<br />
(such as PowerMill and TimeMill) are documented in Chapter 5.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
4 Chapter 1 Introduction<br />
These functions generate input signals to stimulate a circuit,<br />
and output vectors used to compare simulated to expected<br />
results.<br />
Four <strong>EPIC</strong> tools (TimeMill, PathMill, PowerMill, and AMPS) can<br />
be run in batch mode. Information about how to use the batchrun<br />
program is presented in Chapter 6.<br />
<strong>EPIC</strong> provides utilities to measure and display simulation<br />
results. The Meas utility computes the results of .measure<br />
statements. The Edisplay and Eview utilities measure timing<br />
results. The waveform display utilities, SimWave and<br />
turboWave, are also available for your use. <strong>EPIC</strong> also provides<br />
two vector translation utilities to translate different types of<br />
vector formats into <strong>EPIC</strong> vector format. Information about how<br />
to use these utilities is described in Chapter 7.<br />
Appendix A presents detailed information about customizing<br />
<strong>EPIC</strong> tools.<br />
Appendix B explains the formats of the different output files<br />
generated by <strong>EPIC</strong> tools.<br />
Errors encountered during simulation return very detailed<br />
messages, giving you all the information you need to correct the<br />
problem. The Viewerror utility is available as an alternate<br />
method of viewing simulation errors and generating error<br />
reports. Information about error messages and formats is<br />
presented in Appendix C.<br />
Appendix D provides the SPICE-independent voltage source<br />
syntax supported by PowerMill, TimeMill, and AMPS.
Chapter 2<br />
<strong>EPIC</strong> Netlist Format
6 Chapter 2 <strong>EPIC</strong> Netlist Format
Overview<br />
Syntax Conventions<br />
Overview 7<br />
<strong>EPIC</strong> uses a unique circuit description to describe circuits. This<br />
format, the <strong>EPIC</strong> netlist, is one of several possible netlists that<br />
can be used as input to <strong>EPIC</strong> simulation and analysis tools.<br />
The netlist lists system elements, including single transistors,<br />
gates, resistors, instantiations of subcircuits, functional models,<br />
and output probing functions. These elements can be connected<br />
by input or output nodes to form a network.<br />
System connectivity is established through the common input,<br />
output, and biput I/O nodes between the circuit elements.<br />
This chapter describes the content and of the <strong>EPIC</strong> netlist, as<br />
well as the commands and control options you can use.<br />
You must follow these syntax rules and conventions when<br />
creating an <strong>EPIC</strong> netlist:<br />
■ The maximum length of a name in a netlist (including an<br />
explicit or implicit hierarchical name) is 1023 characters. An<br />
error message is generated if you exceed this limit.<br />
■ A line can be broken at any point, but the break is treated<br />
like a blank space. You cannot break a line in the middle of a<br />
name. The backslash (\) is not recognized as a continuation<br />
character.<br />
■ Parameter names must start with a letter and can contain<br />
only letters, digits, underscores (_), and percent signs (%).<br />
■ Each circuit element is defined by an element identifier<br />
followed by a list of attributes, and ends with a semicolon (;).<br />
■ Each attribute consists of an identifier followed by an equal<br />
sign (=) and the assigned circuit description, all enclosed in a<br />
pair of parentheses (()).<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
8 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Buses<br />
■ All the items in a statement are case-sensitive.<br />
■ Spaces are allowed between items.<br />
■ Comments use the C language syntax. They begin with /* and<br />
close with */.<br />
Buses are specified with the sig_name command followed by an<br />
argument in square brackets ([ ]) giving the range.<br />
EXAMPLE:<br />
sig_name[15-0]<br />
The square brackets following sig_name indicate it is a bus. The<br />
value 15-0 specifies the width, with the most significant bit first<br />
and least significant bit last. Bus notation can be modified with<br />
the ctrl_opt statement. See “Control Option Syntax” on page 46.<br />
A negative index is allowed in a bus, as shown in the following<br />
example.<br />
EXAMPLE:<br />
bus[-1-7] => bus[-1], bus[0], .., bus[7]<br />
bus[0--3] => bus[0], bus[-1], bus[-2], bus[-3]
Characters Not Permitted<br />
Syntax Conventions 9<br />
The following characters are not permitted in any name:<br />
; (semicolon) : (colon)<br />
, (comma) ‘ (single quotation mark)<br />
{ } (curly brackets) “ (double quotation marks)<br />
= (equal sign) ( ) (parentheses)<br />
The following characters are not permitted in node or element<br />
names:<br />
- (minus sign) . (period)<br />
Transistor names cannot begin with the following characters:<br />
C c<br />
E e<br />
L l<br />
R r<br />
V v<br />
These characters causes the transistor to be recognized as a<br />
voltage-controlled voltage source.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
10 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Element and Attribute Identifiers<br />
This section contains a list of <strong>EPIC</strong> element and attribute<br />
identifiers. The element identifiers specify the type of function<br />
being defined.<br />
Element<br />
Definition<br />
Identifier<br />
b Bipolar junction transistor (BJT) or junction diode.<br />
ef Element function that starts a library function or a<br />
transistor-level subcircuit.<br />
is Input stimulus signal.<br />
os Output signal for display.<br />
t Transistor, resistor, floating capacitor, or inductor.<br />
c Capacitor.<br />
The attribute identifiers indicate input and output pins, the<br />
internal state information, and any properties associated with<br />
the element.<br />
Attribute<br />
Identifier Definition<br />
en Element name or instance name of an element in a<br />
system. Each (en=element_name) must be unique for<br />
a given level. Do not use a period in the element<br />
name.<br />
it Input terminals or nodes of the element.<br />
ot Output terminals or nodes of the element.<br />
bt Specifies biput terminals or nodes of the element.<br />
This identifier can be an input or output terminal,<br />
depending on the circuit response.
Using Identifiers<br />
Attribute<br />
Identifier Definition<br />
Element and Attribute Identifiers 11<br />
st Number of states for an element. This identifier<br />
represents the number of memory words allocated<br />
when you include the element as an instance. It<br />
corresponds to the number of internal states in a<br />
functional model, and the number of entities or<br />
variables used in the sv field of a library function<br />
input stimulus signal.<br />
nn Node name. This identifier is used with the<br />
capacitance or node specification.<br />
ov Initial element output value.<br />
bv Initial element biput value.<br />
sv Element state value, or element parameter value,<br />
using the following syntax:<br />
% (sv=value{,value})<br />
m Multiplier for the element:<br />
% (m=5)<br />
attr Optional attribute for an element. Currently, it is<br />
used only for controlling the driving impedance of<br />
functional models. See netlist_suffix for details.<br />
The following rules apply to using identifiers:<br />
■ (st=value) is optional.<br />
■ (st value) and (sv= ...) can be used only for (ef=...) and<br />
(is = ...). If used elsewhere, you will get an error message.<br />
■ If (sv=n_items) is specified and no (st=...) is given, n states<br />
are assigned in the .elm file.<br />
■ If (st=m) is specified and no (sv=...) is given, the number of<br />
states is equal to m states.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
12 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Port Mapping<br />
■ If both (st=m) and (sv= n_items) are specified, max (m,n)<br />
states are assigned. If (m>n) then the state values for<br />
(state[i] | i>n) is assigned a default value of 0.<br />
■ The parameter names can be specified in any order.<br />
■ Error messages are returned when:<br />
◆ Keywords are misspelled or used incorrectly.<br />
◆ Connectivity errors are encountered.<br />
There are two methods of port mapping between an ADFMI<br />
model and the corresponding netlist: position-based port<br />
mapping (implicit) and name-based port mapping (explicit).<br />
When using implicit port mapping, the order in which you define<br />
the ports in your model establishes the port order in the circuit.<br />
In explicit port mapping, specific names identify which ports are<br />
to be mapped to which terminals. Figure 1 shows two excerpts<br />
from sample <strong>EPIC</strong> netlists. One uses implicit port mapping, the<br />
other uses explicit port mapping. An excerpt from the<br />
corresponding model file is also shown.
(ef=DFF)(en=dff_fun)(it=i1,i2,i3)<br />
Excerpt from <strong>EPIC</strong> netlist using<br />
implicit port mapping<br />
(ef=DFF)(en=dff_fun)(it=IN1(i1), IN2(i2), IN3(i3));<br />
Excerpt from <strong>EPIC</strong> netlist using<br />
explicit port mapping<br />
Figure 1 Explicit and implicit port mapping in an <strong>EPIC</strong> netlist<br />
Element and Attribute Identifiers 13<br />
...<br />
RegisterUserModel()<br />
{<br />
fmDefineModel(“DFF”, dff_<br />
fmDefinePort(body,”IN1”,<br />
fmDefinePort(body,”IN2”,<br />
fmDefinePort(body,”IN3”,<br />
...<br />
}<br />
Excerpt from ADFMI model file<br />
For implicit port mapping to work correctly, the order in which<br />
the ports are listed in the <strong>EPIC</strong> netlist must be the same as the<br />
order in which they are defined in the model file. Conversely,<br />
explicit port mapping is not dependent on the port order, but<br />
instead identifies the correct mapping using names (IN1 always<br />
corresponds to i1 regardless of the order in which the ports are<br />
listed in the netlist). Therefore, using explicit port mapping can<br />
reduce the occurrence of errors in port mapping.<br />
NOTE: If you are using SPICE netlists, you can use only implicit port<br />
mapping.<br />
If you are using ADFMI modeling with a variable bus (that is, if<br />
your model file contains an fmDefineVBusPort() function) you<br />
must always use explicit port mapping.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
14 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Circuit Elements<br />
Capacitor<br />
This section explains the <strong>EPIC</strong> netlist format for the following<br />
kinds of circuit elements:<br />
Capacitor<br />
Floating Capacitor<br />
Inductor<br />
Bipolar Junction Transistors and Junction Diodes<br />
CMOS Transistor<br />
Resistor<br />
Voltage Source<br />
Voltage Controlled Voltage Sources<br />
Subcircuit<br />
Net<br />
Gate-level Element<br />
SYNTAX:<br />
(c=cap_value) (nn=node_name) (m=mult_value);<br />
EXAMPLE:<br />
(c=100)(nn=APLL);<br />
In the example, 0.1 pF capacitance is loading node APLL.<br />
DESCRIPTION:<br />
You can specify capacitance value inside a subcircuit or in a toplevel<br />
definition. When specified in the top level, you can use the<br />
hierarchical node name.<br />
You can also specify capacitance with configuration file<br />
commands. You can use the node_capacitance command to add<br />
the extracted capacitances from layout data. See the
Floating Capacitor<br />
Circuit Elements 15<br />
configuration file command reference for the <strong>EPIC</strong> tool you are<br />
using.<br />
Command Argument Definition<br />
c=<br />
SYNTAX:<br />
cap_value<br />
nn=<br />
node_name<br />
m=<br />
mult_value<br />
(t=C|c) (en=instance_name) (so=node1) (dr=node2) (fc=value);<br />
EXAMPLE:<br />
(t=c)(en=cap1)(so=N1)(dr=N2)(fc=10);<br />
This example describes a 0.01 pF capacitor between nodes N1<br />
and N2.<br />
DESCRIPTION:<br />
Specifies the value in femtofarads<br />
that represents the capacitance to<br />
power or ground. The value can be<br />
an expression.<br />
Names the node to which the<br />
capacitance is attached.<br />
Specifies a multiplier that causes<br />
the capacitor to be treated as<br />
multiple value capacitors connected<br />
in parallel.<br />
A floating capacitor is a capacitor that is not connected to a<br />
voltage or ground node. Floating capacitors are described in the<br />
<strong>EPIC</strong> netlist as a different element type with specific netlist<br />
syntax.<br />
Although you can simulate the coupling effect for every floating<br />
capacitor in the circuit, this is not recommended for large<br />
circuits because it will severely slow the simulation. A more<br />
practical approach is to model and simulate the coupling effect<br />
for floating capacitors critical to circuit functionality. Examples<br />
occur in charge-pump operation or in critical paths where the<br />
associated Miller effect is critical to path delay. Features and<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
16 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Inductor<br />
commands are provided for you to selectively model and simulate<br />
the coupling effect of floating capacitors.<br />
NOTE: PathMill does not accept floating capacitors. Floating capacitors<br />
need to be split using the ctrl_opt split_floating_cap control<br />
command. However, PathMill with the Crosstalk Extension<br />
(CTX) accepts floating capacitors.<br />
Command Argument Definition<br />
t=<br />
C | c<br />
en=<br />
instance_name<br />
so=<br />
node1<br />
dr=<br />
node2<br />
fc=<br />
value<br />
SYNTAX:<br />
Element type. Use either C or c for a<br />
floating capacitor.<br />
Capacitor instance name.<br />
First terminal name.<br />
Second terminal name.<br />
Capacitance value in femtofarads.<br />
(t=L)(en=element_name)(so=node_1)(dr=node_2)(l=ind_value)<br />
(m=mult_value);<br />
EXAMPLE:<br />
(t=L)(en=l12)(so=141)(dr=out)(l=13);<br />
The example describes an inductor called 112, with nodes 141<br />
and out, and a capacitance value of 13 nanoHenrys.
DESCRIPTION:<br />
Circuit Elements 17<br />
You use this syntax when specifying an inductor in an <strong>EPIC</strong><br />
netlist.<br />
Bipolar Junction Transistors and Junction Diodes<br />
BJT Element<br />
Command Argument Definition<br />
en=<br />
element_name<br />
so=<br />
node_1<br />
dr=<br />
node_2<br />
l=<br />
ind_value<br />
m=<br />
mult_value<br />
This section explains the syntax used for bipolar junction<br />
transistors and diodes.<br />
SYNTAX:<br />
Inductor name.<br />
Node that connects the inductor.<br />
Second node that connects the<br />
inductor.<br />
Inductance value (nH).<br />
Multiplier value (default =1).<br />
(b = model_name)(en = tran_name)(ba = base_nodename)<br />
(co=collector_nodename)(em=emitter_nodename)<br />
[(bu=bulk_name)] (ar = value);<br />
EXAMPLE:<br />
(b=pnp)(en=q1)(co=c)(ba=b)(em=e)(ar=2.5);<br />
This example describes a bipolar transistor q1 with an area<br />
factor of 2.5.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
18 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
DESCRIPTION:<br />
Diode Element<br />
This syntax specifies a bipolar transistor.<br />
Command Argument Definition<br />
b=<br />
model_name<br />
en=<br />
tran_name<br />
ba=<br />
base_nodename<br />
co=<br />
collector_nodename<br />
em=<br />
emitter_nodename<br />
bu=<br />
bulk_name<br />
ar=<br />
value<br />
SYNTAX:<br />
Specifies the name of the Bipolar<br />
model matching the name in the<br />
model file<br />
Transistor instance name<br />
Base node name<br />
Collector node name<br />
Emitter node name<br />
Bulk node name<br />
Area factor of the transistor<br />
(default = 1)<br />
(b=model_name)(en=diode_name)(ba=anode_node)<br />
(co=cathode_node)(ar=value)(pj=value);<br />
or<br />
(b=model_name)(en=diode_name)(ba=anode_node)<br />
(em=cathode_node)(ar=value)(pj=value);
DESCRIPTION:<br />
Circuit Elements 19<br />
The syntax specifies a junction diode. The diode levels are:<br />
■ Level 1: non-geometric diode. ar and pj are unit-less factors;<br />
cjo and cjswo in the diode models are F/unit-area and<br />
F/unit-periphery.<br />
■ Level 3: geometric diode. ar and pj are area and periphery<br />
with units.<br />
Command Argument Definition<br />
b=<br />
model_name<br />
en=<br />
diode_name<br />
ba=<br />
anode_node<br />
co=<br />
cathode_node<br />
em=<br />
cathode_node<br />
ar=<br />
value<br />
pj=<br />
value<br />
Diode model name, which matches<br />
the name in the model file.<br />
Diode instance name.<br />
Anode (base) node name.<br />
Cathode (collector) node name.<br />
Cathode (emitter) node name.<br />
Area factor of the diode (default = 1).<br />
If a Level 3 diode model is used, this<br />
value is in units of 10 -16m2 .<br />
Periphery junction of the diode<br />
(default = 0). If a Level 3 diode<br />
model is used, this value is in units<br />
of 10-8 meters.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
20 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
The <strong>EPIC</strong> netlist compiler reads the SPICE diode model<br />
statement from the netlist. This model must precede diode<br />
instances.<br />
If you assign the model statement: The <strong>EPIC</strong> netlist compiler:<br />
Level 1 Identifies the diode as a<br />
junction diode.<br />
Level 2 Discards the diode.<br />
Level 3 Converts the diode to a<br />
capacitor.<br />
Reading Diodes as Capacitors<br />
By default, the <strong>EPIC</strong> netlist compiler converts all diodes to<br />
capacitors, using the diode model to calculate values. However,<br />
the control option keep_junc_diode assigns a Level 1 value to<br />
the diodes. The ACE option can simulate these diodes using the<br />
bjt.mod diode model.<br />
The <strong>EPIC</strong> netlist compiler looks for a .model card for the<br />
specified diode before instantiating the diode. If you use an <strong>EPIC</strong><br />
format netlist, the .model card must be in a separate HSPICE<br />
netlist with a filename extension of .spi because the compiler<br />
accepts only a .model card in an HSPICE netlist.<br />
For example, to simulate in TimeMill the circuit PLL with an<br />
<strong>EPIC</strong> format netlist, the diode model can be specified in a file<br />
named diode.spi. TimeMill then starts with the following<br />
command line:<br />
timemill -n diode.spi PLL -p tech.file<br />
If there is no .model card, all diodes are assumed to be diodes<br />
because there is no way to tell if the diode is level 1 or 3. You<br />
must have an ACE license to simulate these diodes. ar and pj<br />
are assumed to be unit-less values.
CMOS Transistor<br />
Circuit Elements 21<br />
Level 1 diode<br />
If a level 1 model card is provided, the diode is converted to a<br />
capacitor with a value determined by the formula<br />
(cjo)(ar)+(cjswo)(pj), where ar and pj are the unit-less area<br />
and periphery factors, respectively.<br />
Level 3 diode<br />
If the .model card specifies a level 3 diode, the conversion to a<br />
capacitor will use the same equation, except that ar and pj are<br />
in units of 10-16m2 and 10-8m, since the cjo and cjswo units in<br />
the model file will be in terms of capacitance/area and<br />
capacitance/length.<br />
SYNTAX:<br />
(t=tran_model_name|$para_model_name$)<br />
(en=tran_instance_name)(ga=gate_name)<br />
(so=source_name) (dr=drain_name)[(bu=bulk_name)]<br />
(w=wvalue)(l=lvalue)<br />
[(di=s2d|d2s|bid|value)]<br />
[(as=asvalue)][(ad=advalue)]<br />
[(geo=geovalue)]<br />
[(ps=psvalue)][(pd=pdvalue)]<br />
[(nrd=num_drain_sqs)]<br />
[(nrs=num_source_sqs)]<br />
[(m=mult_value]<br />
EXAMPLE 1:<br />
(t=N)(en=n12)(ga=bus5)(so=out2)(dr=gnd)<br />
(w=2000)(l=200);<br />
(t=P)(en=p105)(ga=bus5)(so=out2)(dr=vdd)<br />
(w=500)(l=200)(di=d2s);<br />
These statements define a 20μ/2μ N-type transistor as n12 and a<br />
5μ/2μ P-type transistor as p105. For the p105 transistor, the<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
22 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
direction of the path search has been set from drain to source,<br />
node vdd to out2. In this example, as, ad, ps and pd are not<br />
specified, thus requiring the simulator to use the diffusion<br />
extension in the technology file to estimate these values.<br />
EXAMPLE 2:<br />
(t=P)(en=p1)(ga=A)(so=vdd)(dr=Z)(w=2000)(l=200)<br />
(as=1000000)(ad=1000000)(ps=3000)(pd=3000);<br />
(t=N)(en=n1)(ga=A)(so=gnd)(dr=Z)(w=200)(l=200)<br />
(as=100000)(ad=100000)(ps=1200)(pd=1200);<br />
These statements define a 20μ/2μ P-type transistor as p1 and a<br />
2μ/2μ N-type transistor as n1, both with areas and perimeters as<br />
specified.<br />
DESCRIPTION:<br />
The syntax defines N-type and P-type transistors. Depletion Ntype<br />
and P-type transistors are defined using the same syntax.<br />
NOTE: Depletion mode transistors are not supported by PathMill.<br />
Command Argument Definition<br />
t=<br />
t=<br />
tran_model_name<br />
$para_model_name$<br />
en=<br />
tran_instance_name<br />
ga=<br />
gate_name<br />
Specifies the transistor model<br />
name defined in the technology<br />
file. The name cannot begin with<br />
the following characters, in<br />
either upper- or lowercase: C, E,<br />
L, R, or V.<br />
If the name starts and ends with<br />
$, it is a parametric model name.<br />
The parametric model name is<br />
resolved in the same way as an<br />
ordinary parameter except that<br />
its final value is a model name.<br />
Transistor instance name.<br />
Gate node name.
Command Argument Definition<br />
so=<br />
source_name<br />
dr=<br />
drain_name<br />
bu=<br />
bulk_name<br />
w=<br />
wvalue<br />
l=<br />
lvalue<br />
Source node name.<br />
Drain node name.<br />
Bulk node name.<br />
Circuit Elements 23<br />
Specifies values for channel<br />
width and length of transistors<br />
in .01 micron units. The defaults<br />
are w=1000 if the width is not<br />
specified, and l=200 if the length<br />
is not specified. Both values can<br />
be expressions.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
24 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Command Argument Definition<br />
di=<br />
s2d | d2s|bid|value<br />
Specifies the direction for path<br />
searches.<br />
The value d2s is used if the<br />
signal flow direction is from the<br />
drain to the source; s2d is used<br />
if the direction is from source to<br />
drain; bid is used if the<br />
direction is bi-directional.<br />
The value can also be a number.<br />
The values can be 0<br />
(bidirectional), 1 (drain to<br />
source), or 2 (source to drain).<br />
This parameter is ignored if<br />
specified for TimeMill or<br />
PowerMill.<br />
Signal direction is not always<br />
required for PathMill because<br />
PathMill handles bidirectional<br />
signal flow. However, for certain<br />
kinds of circuits, such as barrel<br />
shifters, which have a large<br />
number of pass transistors and<br />
circuit branches, the direction<br />
settings are required for<br />
PathMill. If you know the signal<br />
flow direction, specifying it can<br />
speed up the path search process<br />
considerably.
Command Argument Definition<br />
as=<br />
asvalue<br />
ad=<br />
advalue<br />
geo=<br />
geovalue<br />
Circuit Elements 25<br />
Specifies the area of the source<br />
diffusion in units of 10-16m2 .<br />
The value is used for calculating<br />
diffusion capacitance. If not<br />
specified, the default is the<br />
effective width times the<br />
effective diffusion extension,<br />
which is defined in the<br />
technology file. The default<br />
equation can be edited in the<br />
customize.c module. See<br />
Appendix A.<br />
Specifies the area of the drain<br />
diffusion in units of 10-16m2 .<br />
The value is used for calculating<br />
diffusion capacitance. If not<br />
specified, the default is the<br />
effective width times the<br />
effective diffusion extension,<br />
which is defined in the<br />
technology file. The default<br />
equation can be edited in the<br />
customize.c module. See<br />
Appendix A.<br />
Modifies the value of as and ad<br />
parameters. The values can be 0,<br />
1, or 2. You cannot apply<br />
parameters to this value.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
26 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Command Argument Definition<br />
ps=<br />
psvalue<br />
pd=<br />
pdvalue<br />
nrd=<br />
num_drain_sqs<br />
nrs=<br />
num_source_sqs<br />
m=<br />
mult_value<br />
Defines the perimeter of the<br />
source diffusion in 10 -8m units.<br />
The value is used for calculating<br />
diffusion capacitance. If not<br />
specified, the default is two<br />
times the effective width plus<br />
two times the effective diffusion<br />
extension, which is defined in<br />
the technology file. You can edit<br />
the default equation in the<br />
customize.c module. See<br />
Appendix A.<br />
Defines the perimeter of the<br />
drain diffusion in 10-8m units.<br />
The value is used for calculating<br />
diffusion capacitance. If not<br />
specified, the default is two<br />
times the effective width plus<br />
two times effective diffusion<br />
extension, which is defined in<br />
the technology file. You can edit<br />
the default equation in the<br />
customize.c module. See<br />
Appendix A.<br />
Specifies the number of drain<br />
resistance squares. The value<br />
(float) is used for calculating<br />
delays (default = 0).<br />
Specifies the number (float) of<br />
source resistance squares.<br />
Specifies the number of<br />
transistors with terminals<br />
connected in parallel.
Resistor<br />
Voltage Source<br />
SYNTAX:<br />
Circuit Elements 27<br />
(t=R) (en=element_name) (so=source_node) (dr=drain_node)<br />
(r=value) (m=mult_value);<br />
EXAMPLE:<br />
(t=R)(en=R15)(so=INA0)(dr=PX)(r=1500);<br />
The example defines a 1500 ohm resistor between nodes INA0<br />
and PX.<br />
Command Argument Definition<br />
en=<br />
element_name<br />
so=<br />
source_node<br />
dr=<br />
drain_node<br />
r=<br />
value<br />
m=<br />
mult_value<br />
SYNTAX:<br />
Element name.<br />
Source node.<br />
Drain node.<br />
Specifies the resistance value<br />
(integer or real) in ohms. It can<br />
be an expression.<br />
Specifies a multiplier that<br />
causes the resistor to be treated<br />
as multiple value resistors<br />
connected in parallel.<br />
(t=V) (en=element_name) (so=n+) (dr=n-) (v=value);<br />
EXAMPLE:<br />
(t=V)(en=vs2ci)(so=10)(dr=25)(v=4.5);<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
28 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
DESCRIPTION:<br />
Each node in the circuit can connect to only one voltage source.<br />
If a node needs more than one voltage source, you must split the<br />
node into two (for example, by using a resistor).<br />
SPICE equivalent:<br />
Vname n+ n- value<br />
EXAMPLE:<br />
V1 1 gnd 3.3<br />
Command Argument Definition<br />
en=<br />
element_name<br />
so=<br />
n+<br />
dr=<br />
n-<br />
v=<br />
value<br />
SIN Voltage Source<br />
SYNTAX:<br />
(t=VSIN) (en=element_name) (so=n+) (dr=n-)<br />
(v=dc,pa,);<br />
EXAMPLE:<br />
(t=VSIN)(en=v12)(so=12)(dr=0)(v=0,0.1,1e6,2n,1e8);<br />
SPICE equivalent:<br />
Element name.<br />
Positive node of the voltage<br />
source.<br />
Negative node of the voltage<br />
source.<br />
Source value.<br />
Vname n+ n- dc SIN(dc pa )
DESCRIPTION:<br />
Command Argument Definition<br />
en=<br />
element_name<br />
so=<br />
n+<br />
dr=<br />
n-<br />
v=<br />
dc<br />
pa<br />
freq<br />
td<br />
df<br />
pd<br />
EXP Voltage Source<br />
SYNTAX:<br />
(t=VEXP)(en=element_name)(so=n+)(dr=n-)<br />
(v=v1,v2,);<br />
Circuit Elements 29<br />
EXAMPLE:<br />
(v=VEXP)(en=v12)(so=12)(dr=0)(v=0,5,1n,5n,10n,5n);<br />
SPICE equivalent:<br />
Element name.<br />
Positive node of the voltage source.<br />
Negative node of the voltage source.<br />
Vname n+ n- EXP(v1 v2 >)<br />
Command Argument Definition<br />
en=<br />
element_name<br />
so=<br />
n+<br />
Source value:<br />
dc offset voltage (volt)<br />
peak amplitude (volt)<br />
frequency (Hz)<br />
time delay (sec)<br />
damping factor (1/sec)<br />
phase delay (degrees)<br />
Element name.<br />
Positive node of the voltage source.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
30 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Command Argument Definition<br />
dr=<br />
n-<br />
v=<br />
v1<br />
v2<br />
td1<br />
tau1<br />
td2<br />
tau2<br />
AM Voltage Source<br />
SYNTAX:<br />
(t=VAM)(en=element_name)(so=n+)(dr=n)(v=sa,);<br />
EXAMPLE:<br />
(v=VAM)(en=v12)(so=12)(dr=0)(v=2.5,0,1000,1e6,0);<br />
DESCRIPTION:<br />
AM voltage sources have a floating terminal and a terminal<br />
constant. This constant is connected to VDD, GND, or another<br />
voltage source.<br />
SPICE equivalent:<br />
Vname n+ n- AM (sa oc fm fc td)<br />
Command Argument Definition<br />
en=<br />
element_name<br />
so=<br />
n+<br />
Negative node of the voltage source.<br />
initial value of voltage (volt)<br />
pulsed value of voltage (volt)<br />
rise delay (sec)<br />
rise time const. (sec)<br />
fall delay (sec)<br />
fall time const. (sec)<br />
Element name.<br />
Positive node of the voltage source.
Command Argument Definition<br />
dr=<br />
n-<br />
v=<br />
sa<br />
oc<br />
fm<br />
fc<br />
td<br />
SFFM Voltage Source<br />
SYNTAX:<br />
(t=VSFFM)(en=element_name)(so=n+)(dr=n)<br />
(v=dc,ac,);<br />
Circuit Elements 31<br />
EXAMPLE:<br />
(v=VSFFM)(en=v12)(so=12)(dr=0)(v=0,2,20e7,5,1000);<br />
SPICE equivalent:<br />
Vname n+ n- SFFM(dc ac >)<br />
Command Argument Description<br />
en=<br />
element_name<br />
so=<br />
n+<br />
Negative node of the voltage source.<br />
Source value:<br />
signal amplitude (volt)<br />
offset constant<br />
modulation frequency (Hz)<br />
carrier frequency (Hz)<br />
delay time (sec)<br />
Element name.<br />
Positive node of the voltage source.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
32 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Command Argument Description<br />
dr=<br />
n-<br />
v=<br />
dc<br />
ac<br />
fac<br />
km<br />
fs<br />
Voltage Controlled Voltage Sources<br />
Negative node of the voltage source.<br />
Source value:<br />
dc offset voltage (volt)<br />
carrier amplitude (volt)<br />
carrier frequency (Hz)<br />
modulation index (radian)<br />
signal frequency (Hz)<br />
(t=E) (en=element_name) (dr=n+) (bu=n-) (so=in+) (ga=in-)<br />
(a=value);<br />
EXAMPLE:<br />
(t=E)(en=esource1)(dr=1)(bu=100)(so=5)<br />
(ga=18)(a=7 5);<br />
DESCRIPTION:<br />
Each node in the circuit can connect to only one voltage source.<br />
If a node needs more than one voltage source, you must split the<br />
node into two, for example, by using a resistor.<br />
Command Argument Definition<br />
en=<br />
element_name<br />
dr=<br />
n+<br />
bu=<br />
n-<br />
so=<br />
in+<br />
Element name.<br />
Positive node of the voltage source.<br />
Negative node of the voltage source.<br />
Positive controlling node.
Subcircuit<br />
Command Argument Definition<br />
ga=<br />
in-<br />
a=<br />
value<br />
SYNTAX:<br />
Negative controlling node.<br />
Voltage gain.<br />
(subckt=sub_name) (it=...) (ot=...) (bt=...)<br />
[(pr=prname1:prvalue1, prname2:prvalue2...]<br />
(m=mult_value);<br />
{<br />
<strong>EPIC</strong> netlist<br />
}<br />
Circuit Elements 33<br />
EXAMPLE:<br />
(subckt=AK)(it=a1,k1)(ot=b)(pr=rval:100, wp:4.6)<br />
{<br />
(ef=OR)(en=or)(it=a1,k1)(ot=x1);<br />
(ef=INV)(en=inv)(it=x2)(ot=b);<br />
(t=R)(en=r1)(so=x1)(dr=x2)(r=rval);<br />
(t=p)(en=p1)(ga=x2)(dr=vdd)(so=x1)(w=wp)(1=100);<br />
}<br />
After you define the subcircuit AK in the example, you can place<br />
it in the subcircuit definition using statements similar to these:<br />
(ef=AK)(en=myak)(it=c1,c2)(ot=c3)<br />
(pr=rval:100, wp:4.6);<br />
(ef=AK)(en=yourak)(it=d1,d2)(ot=d3)<br />
(pr=rval:200, wp:5.2);<br />
These examples show the AK subcircuit placed twice. The first is<br />
named myak, with signals c1 and c2 connected as inputs, signal<br />
c3 connected as the output, resistor value set to 100 ohms, and<br />
the width of transistor set to P1=4.6μm. The second is named<br />
yourak, with signals d1 and d2 connected as inputs, signal d3<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
34 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
connected as the output, resistor value set to 200 ohms, and the<br />
width of transistor P1 set to 5.2μ.<br />
DESCRIPTION:<br />
You can group elements together and define them as a subcircuit.<br />
After the subcircuit is defined, you can place it in a circuit one or<br />
more times. You can also nest it in other subcircuits.<br />
Subcircuit definitions can be placed anywhere in the netlist. For<br />
example, you can call for subcircuits at the top of a netlist and<br />
place the definitions at the end. However, to improve<br />
performance, a subcircuit definition should be placed before it is<br />
used in the netlist.<br />
A circuit description can contain any recognizable circuit<br />
element, including transistors, resistors, instances of a<br />
subcircuit, or functional level elements. However, a description<br />
cannot contain a nested subcircuit definition. It must be defined<br />
in the circuit description somewhere other than where it is<br />
called.<br />
Command Argument Definition<br />
subckt=<br />
sub_name<br />
pr=<br />
prname1:prvalue1. . .<br />
m=<br />
mult_value<br />
Defines the subcircuit name,<br />
which is called to place an<br />
instance of the subcircuit using<br />
the element function (ef).<br />
prname1 names a parameter in<br />
the subcircuit. prvalue1 is the<br />
assigned value if the parameter<br />
is not redefined elsewhere in the<br />
netlist. Dimension parameters<br />
are expressed in microns if the<br />
HSPICE keyword is included at<br />
the beginning of the netlist. See<br />
“Parameter Passing in Netlists”<br />
on page 69 for more details.<br />
Specifies a multiplier that<br />
causes the subcircuit to be<br />
treated as multiple value<br />
subcircuits connected in parallel.
Net<br />
Hierarchical Syntax<br />
Circuit Elements 35<br />
<strong>EPIC</strong> tools use periods (.) to hierarchically link names. The<br />
result is unique names. You can combine names in the following<br />
ways:<br />
■ InternalNodeName.ElementName=UniqueNodeName<br />
■ ElementName.SubcircuitElementName=NewElementName<br />
You can use a hierarchical node name only in configuration and<br />
interactive commands.<br />
The instance name myak in the example of subcircuit syntax<br />
becomes a qualifier for lower nesting-level entities. At the same<br />
time, the new name establishes the hierarchical structure of the<br />
element and node names. The following example shows a<br />
hierarchical node name:<br />
ALU.multip.reg1.loga.t4.aAM2910.bit5.INP3.t12.PA<br />
For example, to apply 500 fF of capacitance to the internal node<br />
x of the myak instance of subcircuit AK, you need the following<br />
statement in the configuration file:<br />
node_capacitance myak.x 500<br />
SYNTAX:<br />
(net=node1) (nn=node2, node3,...);<br />
EXAMPLE:<br />
(subckt=CKT)(it=A1,A2,B1,B2)(ot=D)<br />
{<br />
(t=R)(en=R1)(so=A)(dr=C1)(r=400);<br />
(t=R)(en=R2)(so=B2)(dr=C2)(r=500);<br />
(t=R)(en=R3)(so=C)(dr=D)(r=600);<br />
(net=A)(nn=A1,A2);<br />
(net=B1)(nn=B2);<br />
(net=C)(nn=C1,C2);<br />
}<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
36 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
The first net statement specifies that ports A1 and A2 are<br />
connected to node A.<br />
The second net statement specifies that port B1 is connected to<br />
port B2.<br />
The third net statement specifies that internal nodes C, C1, and<br />
C2 are all connected together.<br />
This subcircuit definition describes the circuit shown in<br />
Figure 2.<br />
B1<br />
A1<br />
A2<br />
B2<br />
A<br />
Instance<br />
R1=400<br />
R2=500<br />
C1<br />
C2<br />
Figure 2 Net statement example<br />
C<br />
CKT<br />
R3=600<br />
D
Gate-level Element<br />
Timing Checks<br />
SETUP<br />
DESCRIPTION:<br />
The syntax defines nodes connected by a net.<br />
Command Argument Definition<br />
net=<br />
node1, node2,...<br />
nn=<br />
node1, node2,...<br />
Timing Checks 37<br />
<strong>EPIC</strong> provides generic gate-level logic models. For details about<br />
how to write and use models, see the ADFMI Manual.<br />
This section provides the syntax, examples and description of<br />
various timing checks.<br />
SYNTAX:<br />
(ef=SETUP) (en=element_name) (it=node1,...noden,refnode)<br />
(sv=data_edge,ref_edge,constraint);<br />
EXAMPLE:<br />
(ef=SETUP)(en=su_check)(it=edge0,edge1,CLK)<br />
(sv=1,0,220);<br />
This example requires that the falling edges of signals at edge0<br />
and edge1 occur at least 2.2 nanoseconds before the rising edge<br />
of the reference node CLK. If the circuit does not meet this<br />
requirement, an error is reported in the .err file.<br />
DESCRIPTION:<br />
The node specified in (net=...)<br />
can be a port, a node inside a<br />
subcircuit, or a global node.<br />
The node specified in (nn=...)can<br />
be a port, a node inside a<br />
subcircuit, or a global node.<br />
This command specifies a setup time requirement between the<br />
edges of specified data signals and the edge of a reference signal.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
38 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
HOLD<br />
This measurement is performed by TimeMill and PathMill. An<br />
error message is returned in the .err file if the measured setup<br />
time is less than the constraint. The phase relationships are<br />
defined in the sv field.<br />
Command Argument Definition<br />
en=<br />
element_name<br />
it=<br />
SYNTAX:<br />
node1,... noden,<br />
refnode)<br />
sv=<br />
data_edge<br />
sv=<br />
ref_edge<br />
sv=<br />
constraint<br />
Element name<br />
Input terminals or nodes of the<br />
element<br />
Defines the edge of the data signal<br />
to check for verifying the setup<br />
time requirement. Use one of the<br />
following values:<br />
0 = rising edge<br />
1 = falling edge<br />
2 = both rising and falling edges<br />
Specifies the edge of the reference<br />
signal to check for verifying the<br />
setup time requirement. Use one<br />
of the following values:<br />
0 = rising edge<br />
1 = falling edge<br />
Specifies the setup time<br />
requirement in 0.01 nanoseconds<br />
(ef=HOLD)(en=element_name)(it=node1,...noden,refnode)<br />
(sv=data_edge,ref_edge,constraint);<br />
EXAMPLE:<br />
(ef=HOLD)(en=holdchk)(it=AD0,BD0,TT,clk1)<br />
(sv=2,1,540);
Timing Checks 39<br />
Here, both the rising and falling edges of signals at AD0, BD0 and<br />
TT must be held for at least 5.4 nanoseconds after the falling<br />
edge of the reference signal at node clk1.If the circuit does not<br />
meet this requirement, an error is reported in the .err file.<br />
DESCRIPTION:<br />
This command specifies a hold time requirement from the edge of<br />
a reference signal to the edges of specified data signals. This<br />
measurement is performed by TimeMill and PathMill. An error<br />
message is issued in the .err file if the measured hold time is less<br />
than the constraint. The phase relationships are defined in the<br />
sv field.<br />
Command Argument Definition<br />
en=<br />
element_name<br />
it=<br />
node1,... noden,<br />
refnode)<br />
sv=<br />
data_edge<br />
sv=<br />
ref_edge<br />
sv=<br />
constraint<br />
Element name.<br />
Input terminals or nodes of the<br />
element.<br />
Defines the edge of the data signal<br />
to check for verifying the hold time<br />
requirement. Use one of the<br />
following values:<br />
0 = rising edge<br />
1 = falling edge<br />
2 = both rising and falling edges<br />
Specifies the edge of the reference<br />
signal to check for verifying the<br />
hold time requirement. Use one of<br />
the following values:<br />
0 = rising edge<br />
1 = falling edge<br />
Specifies the hold time<br />
requirement in 0.01 nanoseconds.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
40 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Edge to Edge (ETOE)<br />
SYNTAX:<br />
(ef=ETOE)(en=element_name)(it=node1,...noden,refnode)<br />
(sv=data_edge,ref_edge, min_constraint, max_constraint);<br />
EXAMPLE:<br />
(ef=ETOE)(en=etoechk)(it=P10,P20,CLK)<br />
(sv=1,2,150,200);<br />
Here, the falling edges of signals at P10 and P20 are checked to<br />
ensure they are within a 1.5-2 nanosecond delay time, compared<br />
to the rising or falling edge of the reference signal (node CLK).<br />
DESCRIPTION:<br />
This command specifies an edge-to-edge requirement among<br />
specified signals. This check is performed only by TimeMill.<br />
The edge-to-edge time requirement is specified between signals<br />
at node1, node2 and so forth with respect to the signal at<br />
refnode. The phase relationships are defined in the sv field.<br />
Command Argument Definition<br />
en=<br />
element_name<br />
it=<br />
node1,... noden,<br />
refnode)<br />
sv=<br />
data_edge<br />
Element name.<br />
The input terminals or nodes of<br />
the element.<br />
Defines the edge of the data signal<br />
to check for verifying the hold time<br />
requirement. Use one of the<br />
following values:<br />
0 = rising edge<br />
1 = falling edge<br />
2 = both rising and falling edges
Pulse Width (PULSEW)<br />
Command Argument Definition<br />
sv=<br />
ref_edge<br />
sv=<br />
min_constraint<br />
sv=<br />
max_constraint<br />
SYNTAX:<br />
(ef=PULSEW) (en=element_name) (it=node1,...node_n)<br />
(sv=low_min, low_max, hi_min, hi_max);<br />
Timing Checks 41<br />
Specifies the edge of the reference<br />
signal to check for verifying the<br />
hold time requirement. Use one of<br />
the following values:<br />
0 = rising edge<br />
1 = falling edge<br />
2 = both rising and falling edges<br />
Specifies the minimum hold time<br />
requirement in 0.01 nanoseconds.<br />
Specifies the maximum hold time<br />
requirement in 0.01 nanoseconds.<br />
EXAMPLE:<br />
(ef=PULSEW)(en=pwchk)(it=clk1,clk2)<br />
(sv=150,250,450,550);<br />
Here, signals clk1 and clk2 are checked for their low pulse<br />
width between 1.5 and 2.5 ns, and their high pulse width<br />
between 4.5 and 5.5 ns.<br />
DESCRIPTION:<br />
PULSEW specifies a pulse width requirement among specified<br />
signals. This check is performed only by TimeMill.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
42 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Global Commands<br />
Global Node<br />
Pulse widths are specified for signals at node1, node2 and so<br />
forth. The pulse widths are defined in the sv field.<br />
Command Argument Definition<br />
en=<br />
element_name<br />
it=<br />
node1, ...node_n<br />
sv=<br />
low_min<br />
sv=<br />
low_max<br />
sv=<br />
hi_min<br />
sv=<br />
hi_max<br />
Some commands work globally. They affect all the data in the<br />
<strong>EPIC</strong> netlist file. The global commands are global, param and<br />
pgalias.<br />
SYNTAX:<br />
global node_name1 node_name2 ... node_name_n;<br />
EXAMPLE:<br />
global AA DSP BW;<br />
global X NN YQ BBX a vc vd;<br />
Element name.<br />
Input terminals or nodes of the<br />
element.<br />
Defines the minimum low pulse<br />
width in 0.01 nanoseconds.<br />
Defines the maximum low pulse<br />
width in 0.01 nanoseconds.<br />
Defines the minimum high pulse<br />
width in 0.01 nanoseconds.<br />
Defines the maximum high pulse<br />
width in 0.01 nanoseconds.<br />
DESCRIPTION:<br />
A global node is a node that you can refer to at any level by using<br />
a single node name. You can make nodes global if you want to
Global Parameters<br />
Global Commands 43<br />
access them across subcircuit levels. For instance, you might<br />
want to designate VDD and GND as global nodes.<br />
Including a global name as a port in a subcircuit definition<br />
cancels the global nature of that node for that particular<br />
subcircuit. For example, if a subcircuit includes the global signal<br />
VDD in the port definition, you need to specifically connect VDD<br />
when you instantiate that subcircuit.<br />
You can include more than one global statement in a netlist file.<br />
You can place global statements anywhere in the netlist file.<br />
Command Argument Definition<br />
node_name Specifies the name of a node<br />
defined as global.<br />
SYNTAX:<br />
param name1:value1 name2:value2 ... name_n:value_n;<br />
EXAMPLE:<br />
param scalep:10 cjprm:1;<br />
DESCRIPTION:<br />
Parameter values set in a global param statement are available<br />
through the entire netlist. If a local parameter has the same<br />
name as the global one, the parameter passing rule will dictate<br />
which value is in effect. For more information, see the control<br />
option param_passing_rule on page 59.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
44 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Power and Ground Aliases<br />
SYNTAX:<br />
pgalias node_name pg_name;<br />
EXAMPLE:<br />
pgalias VSS GND;<br />
pgalias VCC VDD;<br />
These examples show how to alias VSS to GND and VCC to VDD in<br />
the netlist. VSS, GND, VCC, and VDD are used as power node names<br />
in the netlist.<br />
DESCRIPTION:<br />
<strong>EPIC</strong> tools assume that global supply and ground are named VDD<br />
and GND, unless otherwise specified in the configuration file or by<br />
the pgalias command. You can use either uppercase or lowercase<br />
characters, but the cases cannot be mixed. Supply and ground<br />
signals must be defined in the circuit netlist description for<br />
proper transistor-level simulation.<br />
You can specify more than one power-ground alias<br />
simultaneously in two different pgalias statements. The<br />
pgalias command can be placed anywhere in the netlist. The<br />
pgalias command does not assume only one power signal and<br />
one ground signal are being used.<br />
Command Argument Definition<br />
node_name Any node name to be aliased.<br />
pg_name Either VDD or GND.
Netlist Control Options<br />
Netlist Control Options 45<br />
The following alphabetical listing shows all of the netlist control<br />
options. They are defined in this section.<br />
bus_notation<br />
case<br />
cspf_cap_select<br />
cspf_disable_net<br />
cspf_name_map_proc<br />
cspf_net<br />
cspf_process_ccap<br />
db_file<br />
dont_compress_db<br />
dpf_name_map_proc<br />
edif2e_args<br />
edif2e_output_file<br />
epic_cell_lib_path<br />
error_undefined_param<br />
find_top_mod<br />
floating_nodes_ok<br />
force_global_model<br />
global_override_port<br />
hier_separator<br />
ignore_excess_pin<br />
ignore_meas<br />
keep_0v_dcvs<br />
keep_distinct_cap<br />
keep_junc_diode<br />
keep_unc_node<br />
max_res_value<br />
min_cap_value<br />
min_fcap_value<br />
min_ind_value<br />
min_res_value<br />
netlist_suffix<br />
nf_expand_inst<br />
nf_flatten_inst<br />
param_passing_rule<br />
parse_error_limit<br />
prefer_model<br />
prefer_model_inst<br />
prefer_model_port_map<br />
prefer_model_port_map_inst<br />
print_hir_to_file<br />
rcr<br />
rcr_preserve_name<br />
report_missing_subckt<br />
report_unused_port<br />
scale_cap<br />
scale_cmos_length<br />
scale_cmos_width<br />
scale_res<br />
set_message_limit<br />
split_floating_cap<br />
top_module<br />
user_lib<br />
vlog2e_args<br />
vlog2e_output_file<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
46 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Control Option Syntax<br />
You specify all netlist control options in the SPICE netlist using<br />
the .options statements. You define .options statements at the<br />
beginning of the SPICE netlist.<br />
SYNTAX:<br />
.options ctrl_opt_name=value ...<br />
If you specify non-alphanumeric characters in a variable, or<br />
more than one variable as values for a control option, enclose<br />
each value in double quotation marks.<br />
The following syntax shows the control options syntax in <strong>EPIC</strong><br />
netlist format:<br />
SYNTAX:<br />
Option Definitions<br />
bus_notation<br />
ctrl_opt option1[:value1] option2 [:value2 ...];<br />
This section shows you how to use the control options. They are<br />
presented alphabetically.<br />
SYNTAX:<br />
ctrl_opt bus_notation:“value”;<br />
EXAMPLE:<br />
ctrl_opt bus_notation:“”;<br />
DESCRIPTION:<br />
This option modifies bus notation. The value is a three-character<br />
string specifying the three characters used in bus notation. The<br />
default value is “[-]”.<br />
NOTE: This control option does not apply to ADFMI models where the<br />
only bus notation allowed is the [-] default notation. Also,<br />
the -b option of the vlog2e command is ignored if used with this<br />
option. (See the section “vlog2e Command” on page 129.)
case<br />
cspf_cap_select<br />
SYNTAX:<br />
ctrl_opt case: l |L|u|U;<br />
DESCRIPTION:<br />
Netlist Control Options 47<br />
This option converts the input netlist to the specified case: l or L<br />
for lowercase; u or U for uppercase.<br />
SYNTAX:<br />
ctrl_opt cspf_cap_select: netline | sum | warning;<br />
EXAMPLE:<br />
*|NET x1.out 20fF<br />
*|GROUND_NET vss<br />
C1 x1.out vss 2FF<br />
C2 x1.out vss 2FF<br />
C3 x1.out vss 2FF<br />
C4 x1.out vss 2FF<br />
If the control option is set to sum, 8fF will be added to net<br />
x1.out. If netline is used, then 20fF will be added to the net. If<br />
warning is used, then a warning will be printed because the two<br />
values differ by more than 1%. In this case the sum of the cap<br />
values will be used.<br />
DESCRIPTION:<br />
This option can be used in an SPF file. It affects only those nets<br />
in which the capacitance can be represented as a single value. It<br />
lets you set one of three settings for SPF back-annotation of<br />
capacitance values.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
48 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
cspf_disable_net<br />
cspf_name_map_proc<br />
Argument Definition<br />
netline Selects the capacitance number on the<br />
netline (the line that starts with *|Net).<br />
sum Sums all the capacitance values<br />
associated with the net.<br />
warning Issues a warning if the netline and sum<br />
values differ.<br />
For more information about SPF files, see the section “Cadence<br />
SPF File” on page 87.<br />
SYNTAX:<br />
ctrl_opt cspf_disable_net:“value”;<br />
EXAMPLE:<br />
ctrl_opt cspf_disable_net:“a b c*”;<br />
DESCRIPTION:<br />
This option is used with SPF files. It specifies nets in the SPF file<br />
to be ignored during back-annotation. Wildcards are allowed in<br />
the net name.<br />
The cspf_net and cspf_disable_net options can be used<br />
together. When you use both options, all nets that match those<br />
specified in cspf_net will be back-annotated, and those specified<br />
in cspf_disable_net will not.<br />
NOTE: If a net is specified in both cspf_net and cspf_disable_net, it<br />
will not be back-annotated.<br />
SYNTAX:<br />
ctrl_opt cspf_name_map_proc:“value”;<br />
EXAMPLE:<br />
ctrl_opt cspf_name_map_proc:“nm.tcl”;
cspf_net<br />
cspf_process_ccap<br />
DESCRIPTION:<br />
Netlist Control Options 49<br />
This option corrects name mismatches between the netlist and<br />
the Cadence SPF file. For details, see the section “Cadence SPF<br />
File” on page 87.<br />
SYNTAX:<br />
ctrl_opt cspf_net:“value”;<br />
EXAMPLE 1:<br />
ctrl_opt cspf_net:“A[*]”;<br />
This example back-annotates SPF for nets matching A[*].<br />
EXAMPLE 2:<br />
ctrl_opt cspf_net:“B C D”;<br />
This example back-annotates SPF for nets B, C & D.<br />
DESCRIPTION:<br />
This option specifies the nets to which you want parasitic<br />
information back-annotated in the original netlist. If you don’t<br />
specify this option, all nets found in the SPF file will be<br />
processed. You can use this option more than once. Wildcards are<br />
allowed in the net name.<br />
SYNTAX:<br />
ctrl_opt cspf_process_ccap;<br />
DESCRIPTION:<br />
This option activates netlist compiler routines that process all<br />
coupling capacitors in SPF nets. By default, the compiler ignores<br />
all coupling capacitors in SPF nets.<br />
The split_floating_cap option affects the coupling capacitors in<br />
SPF nets if cspf_process_ccap is also specified.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
50 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
db_file<br />
dont_compress_db<br />
SYNTAX:<br />
ctrl_opt db_file:filename;<br />
EXAMPLE:<br />
ctrl_opt db_file:example;<br />
This example causes the netlist compiler to generate the header<br />
file hd_example.edb and the data file example.edb.<br />
DESCRIPTION:<br />
This control option is used with the <strong>EPIC</strong> binary file. It specifies<br />
the binary file prefix and triggers the generation of the file.<br />
For further information, see “Device Parameter Format File” on<br />
page 96.<br />
SYNTAX:<br />
ctrl_opt dont_compress_db [: 0|: 1];<br />
EXAMPLE 1:<br />
ctrl_opt dont_compress_db:1;<br />
This example causes the netlist compiler to generate the<br />
uncompressed header file hd_example.edb and uncompressed<br />
data file example.edb.<br />
EXAMPLE 2:<br />
ctrl_opt dont_compress_db;<br />
This example forces the netlist compiler not to compress the<br />
binary file. The header file and data file are not generated.<br />
DESCRIPTION:<br />
This control option is used with the <strong>EPIC</strong> binary file. It controls<br />
the compression of the netlist database file. By default, netlist<br />
database files (.edb) are compressed by gzip.<br />
For further information, see “<strong>EPIC</strong> Binary File” on page 98.
dpf_name_map_proc<br />
edif2e_args<br />
SYNTAX:<br />
ctrl_opt dpf_name_map_proc:filename.tcl;<br />
Netlist Control Options 51<br />
EXAMPLE:<br />
ctrl_opt dpf_name_map_proc:map.tcl;<br />
The map.tcl file is the tcl script containing the tcl name mapping<br />
procedures.<br />
DESCRIPTION:<br />
This control option is used with the device parameter format file<br />
to convert the element or node names in the file to the format<br />
used in the original netlist file.<br />
For further information, see “Device Parameter Format File” on<br />
page 96.<br />
SYNTAX:<br />
ctrl_opt edif2e_args:“value”;<br />
EXAMPLE:<br />
ctrl_opt edif2e_args:"-p -r";<br />
This example starts the <strong>EPIC</strong> netlist translator, edif2e, with the<br />
options -p and -r.<br />
DESCRIPTION:<br />
This option specifies the command-line options to run the Edif2e<br />
utility if an input netlist is in EDIF format. It uses multiple<br />
command lines; you can specify options enclosed in quotes.<br />
For information about the Edif2e utility, see “EDIF Netlist<br />
Translator” on page 118.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
52 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
edif2e_output_file<br />
epic_cell_lib_path<br />
SYNTAX:<br />
error_undefined_param<br />
ctrl_opt edif2e_output_file:filename;<br />
DESCRIPTION:<br />
The <strong>EPIC</strong> netlist compiler reads in an EDIF netlist through the<br />
<strong>EPIC</strong> netlist translator edif2e. The translated <strong>EPIC</strong> format<br />
netlist is stored in the specified file.<br />
For information about the Edif2e utility, see “EDIF Netlist<br />
Translator” on page 118.<br />
SYNTAX:<br />
ctrl_opt epic_cell_lib_path:“path_list”;<br />
EXAMPLE:<br />
ctrl_opt epic_cell_lib_path:”/cell1:/usr/cell2”;<br />
This syntax example adds two directories /cell1 and /usr/<br />
cell2 to the cell library search path.<br />
DESCRIPTION:<br />
This option specifies the path to cell libraries. You can specify<br />
multiple paths separated by a colon.<br />
SYNTAX:<br />
ctrl_opt error_undefined_param;<br />
DESCRIPTION:<br />
By default, the netlist compiler assumes the value of an<br />
undefined parameter to be 0. It issues a warning message but<br />
continues to run. This option specifies that the undefined<br />
parameter is to be treated as an error. The netlist compiler<br />
aborts processing after reporting the error.
find_top_mod<br />
floating_nodes_ok<br />
force_global_model<br />
global_override_port<br />
SYNTAX:<br />
ctrl_opt find_top_mod;<br />
DESCRIPTION:<br />
Netlist Control Options 53<br />
This option directs the netlist compiler to find the subcircuit<br />
definition that has no instantiation and to use it as the top<br />
module. No value is required.<br />
SYNTAX:<br />
ctrl_opt floating_nodes_ok;<br />
DESCRIPTION:<br />
By default, floating nodes in a circuit are treated like errors, and<br />
simulation aborts. This control option forces simulation to<br />
continue even though floating nodes are encountered.<br />
SYNTAX:<br />
ctrl_opt force_global_model;<br />
DESCRIPTION:<br />
This control option forces the netlist compiler to treat all SPICE<br />
models as top-level models. Therefore, the compiler doesn’t<br />
recognize subcircuit definition static scoping in the netlist. The<br />
default behavior is such that all models defined in a subcircuit<br />
definition are associated with the subcircuit scope.<br />
SYNTAX:<br />
ctrl_opt global_override_port;<br />
DESCRIPTION:<br />
By default, if a node name is defined both as a global node and a<br />
port of a subcircuit definition, it is used as a port inside the<br />
subcircuit. If the global_override_port option is set, the node<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
54 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
hier_separator<br />
ignore_excess_pin<br />
ignore_meas<br />
is treated as a global node inside the subcircuit. However, the<br />
port will not be connected to anything inside the subcircuit.<br />
SYNTAX:<br />
ctrl_opt hier_separator:“value”;<br />
EXAMPLE:<br />
ctrl_opt hier_separator:"/";<br />
DESCRIPTION:<br />
This option designates a single character as a hierarchical<br />
separator.<br />
SYNTAX:<br />
ctrl_opt ignore_excess_pin;<br />
DESCRIPTION:<br />
By default, the <strong>EPIC</strong> netlist compiler does not allow instances<br />
with more pins than the number of ports in the subckt definition<br />
or functional models. Also, it does not allow any pin to be<br />
connected to a port that does not exist in the subckt or<br />
functional models. When you specify the ignore_excess_pin<br />
option, the netlist compiler issues warnings only for those<br />
instances. Using this option slows the compilation process.<br />
SYNTAX:<br />
ctrl_opt ignore_meas [:0|1];<br />
EXAMPLE 1:<br />
ctrl_opt ignore_meas; /* ignore */<br />
This example specifies that .measure statements will not be<br />
processed in the SPICE netlist.<br />
EXAMPLE 2:<br />
ctrl_opt ignore_meas:1; /* ignore */
keep_0v_dcvs<br />
keep_distinct_cap<br />
keep_junc_diode<br />
Netlist Control Options 55<br />
This example also specifies that .measure statements will not<br />
be processed in the SPICE netlist.<br />
EXAMPLE 3:<br />
ctrl_opt ignore_meas:0; /* don’t ignore */<br />
This example specifies that .measure statements will be<br />
processed.<br />
DESCRIPTION:<br />
This option specifies whether or not to process .measure<br />
statements in the SPICE netlist.<br />
SYNTAX:<br />
ctrl_opt keep_0v_dcvs;<br />
DESCRIPTION:<br />
This control option forces the netlist compiler to retain a zero<br />
volt DC voltage source. If the netlist doesn’t contain any currentcontrolled<br />
dependent sources, by default the netlist compiler<br />
removes a zero volt DC voltage source, and the two terminals are<br />
connected together.<br />
SYNTAX:<br />
ctrl_opt keep_distinct_cap;<br />
DESCRIPTION:<br />
By default, when one terminal is connected to a constant voltage<br />
node, it is treated as node capacitance. This option causes the<br />
netlist compiler to treat it as a capacitor element.<br />
SYNTAX:<br />
ctrl_opt keep_junc_diode;<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
56 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
keep_unc_node<br />
max_res_value<br />
min_cap_value<br />
DESCRIPTION:<br />
By default, the netlist compiler converts junction diodes to<br />
capacitors. This option retains the junction diodes, overriding<br />
such a conversion. No value is required.<br />
SYNTAX:<br />
ctrl_opt keep_unc_node;<br />
DESCRIPTION:<br />
By default, the netlist compiler removes all unconnected nodes<br />
when they constitute more than ten percent of the total number<br />
of nodes. This option disables this default for situations when<br />
you want to retain all unconnected nodes. No value is required.<br />
SYNTAX:<br />
ctrl_opt max_res_value:”value”;<br />
DESCRIPTION:<br />
This option specifies the maximum resistance of a resistor.<br />
Resistors with values greater than or equal to the maximum<br />
value are removed as open circuit. The default value is 1e12<br />
ohms.<br />
SYNTAX:<br />
ctrl_opt min_cap_value:”value”;<br />
DESCRIPTION:<br />
This option specifies the minimum value of a grounded capacitor.<br />
Grounded capacitors with a capacitance of less than or equal to<br />
the specified minimum value are removed from the netlist. The<br />
default value is 0. Values specified without units are assumed to<br />
be femtofarads.
min_fcap_value<br />
min_ind_value<br />
min_res_value<br />
SYNTAX:<br />
ctrl_opt min_fcap_value:value;<br />
DESCRIPTION:<br />
Netlist Control Options 57<br />
This option specifies the minimum value of a floating capacitor.<br />
Floating capacitors with a capacitance of less than or equal to<br />
the specified minimum value are removed from the netlist. The<br />
default value is 0. Values specified without units are assumed to<br />
be femtofarads.<br />
SYNTAX:<br />
ctrl_opt min_ind_value:value;<br />
EXAMPLE:<br />
ctrl_opt min_ind_value:0.5;<br />
This example removes all inductors smaller than 0.5<br />
nanoHenrys.<br />
DESCRIPTION:<br />
This option specifies a minimum value for inductors. Inductors<br />
with an inductance of less than or equal to the specified<br />
minimum value are removed from the netlist. The value is in<br />
nanoHenrys.<br />
SYNTAX:<br />
ctrl_opt min_res_value:value;<br />
DESCRIPTION:<br />
This option specifies the minimum resistance of a resistor, in<br />
ohms. Resistors with a value less than or equal to the specified<br />
minimum value are removed from the netlist and are replaced by<br />
short circuit. Resistors with parameterized resistance values<br />
will also be checked against min_res_value. For RailMill the<br />
default value is 0.01 ohm, otherwise the default is 0.1 ohm.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
58 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
netlist_suffix<br />
nf_expand_inst<br />
NOTE: When the ctrl_opt rcr command is used, only zero value<br />
resistors are removed prior to submission to the RC reduction<br />
algorithm.<br />
SYNTAX:<br />
ctrl_opt netlist_suffix:“value”;<br />
EXAMPLE 1:<br />
ctrl_opt netlist_suffix:”spice .spic”;<br />
This example specifies files ending in .spic as SPICE format.<br />
EXAMPLE 2:<br />
ctrl_opt netlist_suffix:”edif .ed”;<br />
This example specifies files ending in .ed as EDIF format.<br />
EXAMPLE 3:<br />
ctrl_opt netlist_suffix:”vlog .v”;<br />
This example specifies files ending in .v as Verilog format.<br />
EXAMPLE 4:<br />
ctrl_opt netlist_suffix:”epic”;<br />
This example specifies files without suffixes as <strong>EPIC</strong> format.<br />
DESCRIPTION:<br />
This option specifies the filename suffix for identifying a netlist<br />
during a search of cell library directories. The value is a<br />
character string containing the netlist format and optional<br />
suffix. The netlist format name is one of the valid keywords used<br />
with the -n command-line option. If you don’t specify a suffix, a<br />
file without a suffix will be identified as the specified netlist<br />
format. For a list of supported formats and corresponding<br />
suffixes, see the section “Compiled Files” on page 79.<br />
SYNTAX:<br />
ctrl_opt nf_expand_inst:”instance [instance] ...”;
nf_flatten_inst<br />
param_passing_rule<br />
EXAMPLE:<br />
ctrl_opt nf_expand_inst:”i1.i2.i4”;<br />
DESCRIPTION:<br />
Netlist Control Options 59<br />
This option lets you control the net flattening hierarchy. During<br />
the process of hierarchical design flattening, each node has its<br />
unique name and index throughout the connection hierarchy.<br />
This option introduces an instance-based boundary to a node so<br />
that each net connected to the instance is treated as a unique<br />
node through the hierarchy. The higher instantiations in the<br />
hierarchy carry the setup from the higher level. instance<br />
specifies the instance boundary.<br />
NOTE: If you use both the nf_flatten_inst and the nf_expand_inst<br />
control options, nf_expand_inst takes precedence.<br />
SYNTAX:<br />
ctrl_opt nf_flatten_inst:”instance [instance] ...”;<br />
EXAMPLE:<br />
ctrl_opt_nf_flatten_inst:”i1.i2.i4”;<br />
DESCRIPTION:<br />
This option lets you control the net flattening hierarchy. During<br />
the process of hierarchical design flattening, each node has its<br />
unique name and index throughout the connection hierarchy.<br />
This option introduces an instance-based boundary to a node so<br />
that the net connected to the instance is treated as one node. The<br />
higher instantiations in the hierarchy carry the setup from the<br />
higher level. instance specifies the instance boundary.<br />
NOTE: If you use both the nf_flatten_inst and the nf_expand_inst<br />
control options, nf_expand_inst takes precedence.<br />
SYNTAX:<br />
ctrl_opt param_passing_rule:top_down|bottom_up;<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
60 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
parse_error_limit<br />
EXAMPLE:<br />
ctrl_opt param_passing_rule:top_down;<br />
ctrl_opt param_passing_rule:bottom_up;<br />
DESCRIPTION:<br />
This option specifies the parameter passing rule. By default,<br />
higher level definitions override lower levels (top_down).<br />
SYNTAX:<br />
ctrl_opt parse_error_limit:value;<br />
EXAMPLE:<br />
ctrl_opt parse_error_limit:5;<br />
This example causes the compilation to halt after encountering<br />
five errors.<br />
DESCRIPTION:<br />
Without this option, the compiler does not abort due to errors<br />
until the error count exceeds the default count of 20 errors. Use<br />
this option to override the default count.<br />
NOTE: The netlist compiler aborts at fatal errors regardless of the error<br />
limit specified by this option.<br />
prefer_model<br />
prefer_model_port_map<br />
ctrl_opt prefer_model:“value”;<br />
ctrl_opt prefer_model_port_map:“value”;<br />
EXAMPLE:<br />
ctrl_opt prefer_model:”INV NAND”;<br />
ctrl_opt prefer_model_port_map:”*”;<br />
DESCRIPTION:<br />
These options specify the subcircuit definition names, so that if<br />
a functional model exists, it will be used instead of the subcircuit<br />
definition. Wildcards are allowed in the name.
prefer_model_inst<br />
prefer_model_port_map_inst<br />
print_hir_to_file<br />
Netlist Control Options 61<br />
The difference between prefer_model_port_map and<br />
prefer_model is the port mapping: prefer_model uses a<br />
position-based port map, while prefer_model_port_map uses a<br />
name-based port map.<br />
The prefer_model_port_map option performs name-based port<br />
mapping in two steps:<br />
1 The subcircuit port name is found using position-based port<br />
mapping.<br />
2 The port name is used to locate the port of the functional<br />
model.<br />
SYNTAX:<br />
ctrl_opt prefer_model_inst:“instance_model<br />
[instance_model]...”;<br />
ctrl_opt prefer_model_port_map_inst: “instance_model<br />
[instance_model]...”;<br />
EXAMPLE:<br />
ctrl_opt prefer_model_inst:i1.i2 mod”;<br />
ctrl_opt prefer_model_port_map_inst:”i1.i2 mod”;<br />
DESCRIPTION:<br />
These control options are instance-based versions of<br />
prefer_model and prefer_model_port_map. The instance<br />
model replaces the subcircuit instantiation for the “instance.”<br />
instance_model must be the full hierarchical instance name.<br />
The difference between the two control options is port mapping.<br />
prefer_model_inst uses a position-based port map, while<br />
prefer_model_port_map_inst uses a name-based port map.<br />
SYNTAX:<br />
ctrl_opt print_hir_to_file:filename;<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
62 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
rcr<br />
EXAMPLE:<br />
ctrl_opt print_hir_to_file:hierfile;<br />
DESCRIPTION:<br />
The compiler generates a .hir file. Use this option to specify a<br />
filename to which hierarchical information will be printed. The<br />
file format is one record per line, and each record has two fields:<br />
instance hierarchical name and subcircuit name.<br />
SYNTAX:<br />
ctrl_opt rcr [:awe];<br />
EXAMPLE 1:<br />
ctrl_opt rcr;<br />
This example shows that a parallel/series reduction is<br />
performed.<br />
EXAMPLE 2:<br />
ctrl_opt rcr:awe;<br />
This example shows that awe reduction is performed. Specifying<br />
awe as the netlist control option value results in a more accurate<br />
calculation.<br />
DESCRIPTION:<br />
Without the rcr option, the default for min_res_value is 0.01<br />
ohms and the default for the min_cap_value is 0. With the rcr<br />
option, the tool performs RC reduction, thereby looking for<br />
parallel and series combinations. The default for min_res_value<br />
becomes 5 ohms, and the default for min_cap_value becomes<br />
1fF. RC reduction affects resistors and capacitors with values<br />
greater than the minimum. You can change the min_res_value<br />
and min_cap_value defaults.
cr_preserve_name<br />
SYNTAX:<br />
Netlist Control Options 63<br />
ctrl_opt rcr_preserve_name[:“subckt_name [node_name ...]”];<br />
EXAMPLE 1:<br />
ctrl_opt rcr_preserve_name:“INV1 invin invout”;<br />
This example preserves the names of nodes invin and invout<br />
in subcircuit INV1.<br />
EXAMPLE 2:<br />
ctrl_opt rcr_preserve_name:“XOR2A xor*”;<br />
This example preserves names for all nodes with names<br />
beginning with “XOR” in the subcircuit named XOR2A.<br />
EXAMPLE 3:<br />
ctrl_opt rcr_preserve_name:“INV1”;<br />
This example preserves the names of all nodes in the subcircuit<br />
named INV1.<br />
EXAMPLE 4:<br />
ctrl_opt rcr_preserve_name:“/ in out”;<br />
This example preserves names for the in and out nodes at the<br />
top-most level.<br />
DESCRIPTION:<br />
This control option specifies the name of the subcircuit in which<br />
nodes are to be preserved during RC reduction. subckt_name can<br />
contain the wildcard character “*”, as well as hierarchical<br />
dividers. For the top-most level subcircuit name, use “/”.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
64 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
report_missing_subckt<br />
report_unused_port<br />
scale_cap<br />
node_name can also contain the wildcard character “*”. If you<br />
don’t specify an argument, all node names in the specified<br />
subcircuit are preserved.<br />
Command Argument Definition<br />
subckt_name The name of the subcircuit in which<br />
nodes are to be preserved during<br />
RC reduction.<br />
node_name One or more nodes to be preserved<br />
during RC reduction.<br />
SYNTAX:<br />
ctrl_opt report_missing_subckt;<br />
DESCRIPTION:<br />
This option directs the netlist compiler to check if all subcircuit<br />
definitions being called exist after parsing. If they don’t exist,<br />
the compiler aborts the process.<br />
SYNTAX:<br />
ctrl_opt report_unused_port;<br />
DESCRIPTION:<br />
This option directs the netlist compiler to report all unused ports<br />
during subckt instantiation.<br />
SYNTAX:<br />
ctrl_opt scale_cap:value;<br />
EXAMPLE:<br />
ctrl_opt scale_cap:0.5;
scale_cmos_length<br />
scale_cmos_width<br />
scale_res<br />
DESCRIPTION:<br />
Netlist Control Options 65<br />
This option specifies a value for scaling the value of capacitors in<br />
the design. The value argument is used as a multiplier to the<br />
values of all capacitors in the design.<br />
SYNTAX:<br />
ctrl_opt scale_cmos_width:value;<br />
ctrl_opt scale_cmos_length:value;<br />
DESCRIPTION:<br />
These options specify scale factors for the width or length of<br />
MOS devices. The options affect only width and length, not area<br />
and perimeter. The default value is 1.<br />
EXAMPLE:<br />
ctrl_opt scale_cmos_width:0.8;<br />
scale_cmos_length:1.2;<br />
This example scales the width of each MOS device by 0.8 and the<br />
length by 1.2.<br />
SYNTAX:<br />
ctrl_opt scale_res:value;<br />
EXAMPLE:<br />
ctrl_opt scale_res:0.5;<br />
This example specifies a scale factor of 0.5 for resistance.<br />
DESCRIPTION:<br />
This option specifies a scale factor for resistance. The resistance<br />
value of every resistor is multiplied by this scale factor. The<br />
default value is 1.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
66 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
set_message_limit<br />
split_floating_cap<br />
SYNTAX:<br />
ctrl_opt set_message_limit:”message_id limit”;<br />
ctrl_opt set_message_limit:”message_type limit”;<br />
EXAMPLE 1:<br />
ctrl_opt set_message_limit:”warning 5”;<br />
This example shows that only 5 warning messages will be<br />
displayed.<br />
EXAMPLE 2:<br />
ctrl_opt set_message_limit:”20201087 0”<br />
This example shows that all messages with an id equal to<br />
20201087 will not be displayed.<br />
DESCRIPTION:<br />
This control option specifies the output limit for a message ID or<br />
type.<br />
Command Argument Definition<br />
message_id An 8-digit message identification<br />
number, which can be copied from<br />
the simulation tools log.<br />
message_type Must be one of the following types<br />
of messages: ERROR (for error<br />
messages), WARNING (for warning<br />
messages), or NORMAL (for<br />
informational messages.<br />
limit Specifies the output limit.<br />
SYNTAX:<br />
ctrl_opt split_floating_cap [:value];<br />
EXAMPLE:<br />
ctrl_opt split_floating_cap:2.0;
top_module<br />
user_lib<br />
Netlist Control Options 67<br />
This example splits the floating capacitor and doubles the<br />
capacitance on both nodes.<br />
DESCRIPTION:<br />
This option causes the netlist compiler to split all floating<br />
capacitors in a netlist into two separate capacitors (one at each<br />
node) connected to ground. The value specifies the splitting ratio<br />
of the capacitance. Thus, the split node capacitance on each node<br />
would be the original floating capacitance multiplied by value.<br />
If you don’t use this option, the netlist compiler reads the<br />
floating capacitors as unconnected to power or ground. Floating<br />
capacitors can be processed by TimeMill and PowerMill, but<br />
PathMill will display a warning and terminate.<br />
For information about floating capacitors, see “Floating<br />
Capacitor” on page 15.<br />
SYNTAX:<br />
ctrl_opt top_module:cell_name;<br />
EXAMPLE:<br />
ctrl_opt top_module:my_top_cell;<br />
This example specifies my_top_cell as the top cell.<br />
DESCRIPTION:<br />
This option specifies the cell to be used as the top module for<br />
simulation. This option performs the same function as the -m<br />
command-line option in <strong>EPIC</strong> tools.<br />
SYNTAX:<br />
ctrl_opt user_lib:”library_1 [library_2 ...]”;<br />
EXAMPLE:<br />
ctrl_opt user_lib:"get_w.so";<br />
param w1:4.5;<br />
(t=p)(en=m1)(so=1)(dr=2)(ga=3)(w=get_w(1.0, w1));<br />
double<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
68 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
vlog2e_args<br />
get_w(d1, d2)<br />
double d1, d2;<br />
{<br />
return d1 * d2;<br />
}<br />
This example shows that the width of the transistor m1 is<br />
calculated by a C function called get_w() which has two<br />
arguments. The function get_w() is compiled into a dynamic<br />
linkable library called get_w.so.<br />
DESCRIPTION:<br />
This option lets you specify a list of dynamic linked libraries that<br />
contain functions called by the netlist. All the functions used by<br />
the netlist are assumed to return a type double and all the<br />
arguments that are of type double. The maximum number of<br />
arguments in a function is 20.<br />
NOTE: Make sure the function in the netlist is consistent with the<br />
actual C function declaration.<br />
SYNTAX:<br />
ctrl_opt vlog2e_args:“value”;<br />
EXAMPLE:<br />
ctrl_opt vlog2e_args:"-t";<br />
This syntax starts the vlog2e netlist translator with the -t<br />
option.<br />
DESCRIPTION:<br />
This option specifies the command line options to run vlog2e for<br />
input netlists in Verilog format. Multiple command-line options<br />
can be specified inside double quotation marks.<br />
You can use the VLOG2E_ARGS environment variable to control<br />
how vlog2e is started. If VLOG2E_ARGS is set, it will take<br />
precedence over the vlog2e control option.<br />
For information about vlog2e, see “Verilog Netlist Translator” on<br />
page 124.
vlog2e_output_file<br />
SYNTAX:<br />
ctrl_opt vlog2e_output_file:filename;<br />
DESCRIPTION:<br />
Parameter Passing in Netlists 69<br />
The <strong>EPIC</strong> netlist compiler reads in a Verilog netlist through the<br />
<strong>EPIC</strong> netlist translator vlog2e. The translated <strong>EPIC</strong> format<br />
netlist is stored in the specified file.<br />
For information about vlog2e, see “Verilog Netlist Translator” on<br />
page 124.<br />
Parameter Passing in Netlists<br />
Parameters can be defined at four different levels in the <strong>EPIC</strong><br />
netlist:<br />
■ globally<br />
■ within a subcircuit<br />
■ in a subcircuit call<br />
■ as a subcircuit definition heading<br />
The rules governing parameter passing allow you to use<br />
parameters that are defined inside subcircuits and can conform<br />
to the parameter passing rules used by HSPICE.<br />
If you want to follow the HSPICE parameter passing convention,<br />
enter the keyword HSPICE at the beginning of the <strong>EPIC</strong> netlist.<br />
For details, see the section “Parameter Passing Using HSPICE<br />
Rules” on page 71.<br />
NOTE: When you use the HSPICE keyword, specify the parameters in<br />
microns, but specify actual device sizes in units of 0.01 microns.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
70 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Parameter Definitions<br />
The following table shows the four levels at which you can define<br />
parameters.<br />
Level Relative Position Definition<br />
1 Highest level Parameters defined at the global<br />
level using param statements. See<br />
Example 1.<br />
2 Second highest level Parameters defined in a subcircuit<br />
using param statements that are<br />
local to the subcircuit. See Example<br />
2.<br />
3 Second lowest level Parameters defined in a subcircuit<br />
call using the (pr=...) statement. See<br />
Example 3.<br />
4 Lowest level Parameters defined in a subcircuit<br />
definition heading using the (pr=...)<br />
statement. See Example 4.<br />
EXAMPLE 1:(highest level)<br />
param global_param: 0;<br />
EXAMPLE 2:(second highest level)<br />
(subckt=inv)(it=A)(ot=Z){<br />
param n_width: 10 len: 1.0;<br />
param p_width: 20;<br />
(t=p)(en=t1)(dr=Z)(ga=A)(so=vdd)(w=p_width)<br />
(l=len);<br />
(t=n)(en=t2)(dr=Z)(ga=A)(so=gnd)(w=n_width)<br />
(l=len);<br />
}<br />
EXAMPLE 3:(second lowest level)<br />
(ef=inv)(en=e1)(ot=x)(it=A)(pr=dl:1.20);<br />
EXAMPLE 4:(lowest level)<br />
(subckt=inv)(it=A)(ot=Z)(pr=dl:2){<br />
(t=p)(en=t1)(dr=Z)(ga=A)(so=vdd)(w=2000)(l=dl);<br />
(t=n)(en=t2)(dr=Z)(ga=A)(so=gnd)(w=1000)(l=dl);<br />
}
Parameter Passing Using HSPICE Rules<br />
Parameter Passing in Netlists 71<br />
In addition to the default <strong>EPIC</strong> parameter passing rules, you can<br />
specify the HSPICE command in <strong>EPIC</strong> netlists to use HSPICE<br />
parameter passing rules. The HSPICE convention specifies that<br />
parameters defined at higher levels override parameters defined<br />
at lower levels.<br />
The following two examples illustrate HSPICE parameter<br />
passing rules.<br />
EXAMPLE 1:<br />
HSPICE;<br />
(subckt=inv)(it=A)(ot=Z)(pr=dl:2){<br />
(t=p)(en=t1)(dr=Z)(ga=A)(so=vdd)(w=2000)(l=dl);<br />
(t=n)(en=t2)(dr=Z)(ga=A)(so=gnd)(w=1000)(l=dl);<br />
(subckt=buf)(it=A)(ot=Z)(pr=dl:1){<br />
(ef=inv)(en=e1)(ot=x)(it=A);<br />
(ef=inv)(en=e2)(ot=Z)(it=x);<br />
}<br />
(ef=buf)(en=e1)(ot=out)(it=in);<br />
In this example, the lengths of all the transistors are 100 (1<br />
micron). The value used for parameter dl in subcircuit buf<br />
overrides the definition in subcircuit inv.<br />
EXAMPLE 2:<br />
HSPICE;<br />
(subckt=inv)(it=A)(ot=Z)(pr=dl:2){<br />
(t=p)(en=t1)(dr=Z)(ga=A)(so=vdd)(w=2000)(l=dl);<br />
(t=n)(en=t2)(dr=Z)(ga=A)(so=gnd)(w=1000)(l=dl);<br />
}<br />
(subckt=buf)(it=A)(ot=Z)(pr=dl:1){<br />
(ef=inv)(en=e1)(ot=x)(it=A)(pr=dl:1.20);<br />
(ef=inv)(en=e2)(ot=Z)(it=x);<br />
}<br />
(ef=buf)(en=e1)(ot=out)(it=in)(pr=dl:0.80);<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
72 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
General Usage Rules<br />
In this example, the lengths of all the transistors are 80 (.8<br />
micron). The value used for parameter dl is taken from the<br />
highest level call, the call to subcircuit buf, and not from the call<br />
to subcircuit inv inside buf, or from the defaults specified in<br />
subcircuits buf or inv.<br />
The following rules apply to using parameters.<br />
■ A parameter name must start with a letter and can contain<br />
only letters, digits, underscores (_), and percent signs (%).<br />
■ You can define and use any number of parameters. The order<br />
of the parameter definitions in an <strong>EPIC</strong> netlist file is<br />
arbitrary. All definitions at a given level of hierarchy are<br />
gathered into a single list and applied to all the statements<br />
at that level.<br />
■ The scope of a parameter definition is strictly maintained. In<br />
other words, a parameter defined in a subcircuit definition<br />
block can be used only within that block and at levels that<br />
are lower in the hierarchy. The global level is regarded as the<br />
highest level in the hierarchy.<br />
■ A redefinition of a parameter in the same hierarchical level<br />
replaces the old definition.
Functions and Expressions<br />
Functions and Expressions 73<br />
<strong>EPIC</strong> netlist syntax supports the use of arithmetic expressions<br />
and functions for specifying values.<br />
Arithmetic<br />
Operators<br />
A function is an arithmetic expression with a specific name.<br />
Arguments can be passed to a function. You can assign the same<br />
name to two functions as long as the number of arguments differ.<br />
The <strong>EPIC</strong> netlist also supports the following built-in math<br />
library functions:<br />
Use the following syntax for a function definition.<br />
SYNTAX:<br />
+ (plus)<br />
- (minus)<br />
* (asterisk)<br />
/ (slash)<br />
% (percent)<br />
^ (caret)<br />
addition<br />
subtraction<br />
multiplication<br />
division<br />
percentage<br />
exponential value<br />
Operands Numbers, parameters, or values<br />
returned from function calls.<br />
Parentheses Groups any part of the expression to<br />
change the order of the operations.<br />
acos cbrt floor pow<br />
acosh ceil hypot rint<br />
asin cos log sin<br />
asinh cosh log10 sinh<br />
atan exp log1p sqrt<br />
atan2 expm1 log2 tan<br />
atanh fabs logb tanh<br />
define func_name (arg1, arg2, ..., arg_n) = expression;<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
74 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Other Statements<br />
Initial Condition<br />
EXAMPLE:<br />
define F(x) = x * 1e-15;<br />
param c1:20;<br />
(c=F(10))(nn=A);<br />
(c=F(c1))(nn=B);<br />
(c=F(c1 + 10))(nn=C);<br />
This section explains statements that you can use to specify:<br />
■ an initial condition on a node.<br />
■ a node to be simulated in PWL mode.<br />
■ sense amplifiers.<br />
■ additional netlists.<br />
SYNTAX:<br />
ic node_name value;<br />
EXAMPLE:<br />
ic APLL 4.5;<br />
The example applies an initial condition of 4.5 volts to node<br />
APLL.<br />
DESCRIPTION:<br />
In <strong>EPIC</strong> netlist format, you can specify an initial condition by<br />
using the command ic, followed by the node name and value. You<br />
can specify ic statements inside a subcircuit definition or in the<br />
top level. For statements specified at the top level, you can use<br />
the hierarchical node name. You can also specify an initial<br />
condition in the configuration file.
NOTE: PathMill does not accept initial conditions.<br />
PWL Specification<br />
Sense Pair<br />
Command Argument Definition<br />
SYNTAX:<br />
pwl node_name_1 [node_name_2...];<br />
Other Statements 75<br />
node_name Name of the node to which the initial<br />
condition is attached.<br />
value Voltage value assigned to the node at<br />
time zero.<br />
EXAMPLE:<br />
pwl APLL;<br />
In the example, the node APLL is simulated in PWL mode.<br />
DESCRIPTION:<br />
In the <strong>EPIC</strong> netlist format, you can specify a node to be<br />
simulated in PWL mode with the pwl command, followed by a<br />
node name. You can also specify a PWL node in the configuration<br />
file.<br />
NOTE: PathMill does not accept PWL mode in a netlist.<br />
Command Argument Definition<br />
node_name Name of the node to be simulated in<br />
PWL mode.<br />
NOTE: The gate capacitance is integrated over the supply voltage range<br />
including the subthreshold low portion. As a result, the average<br />
is higher for higher voltages. It should always be less than the<br />
strong inversion maximum C ox value.<br />
SYNTAX:<br />
sense_pair element_name_1 [element_name_2];<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
76 Chapter 2 <strong>EPIC</strong> Netlist Format<br />
Include Files<br />
EXAMPLE:<br />
sense_pair t1 t2;<br />
This example defines the transistors t1 and t2 as a sense pair.<br />
DESCRIPTION:<br />
In <strong>EPIC</strong> netlist format, you can specify a sense pair by using the<br />
sense_pair command, followed by two element names. This<br />
command specifies sense amplifiers. You can also specify a sense<br />
pair in the configuration file.<br />
NOTE: PathMill does not accept the sense_pair command.<br />
Command Argument Definition<br />
element_name Specifies the name of the<br />
transistors defined as a sense pair.<br />
SYNTAX:<br />
include filename<br />
DESCRIPTION:<br />
In the <strong>EPIC</strong> netlist, use the include statement to include<br />
another netlist file. The included file must also be an <strong>EPIC</strong><br />
netlist. The netlist compiler reads the contents of the included<br />
file at the location where you specify the include statement.<br />
Nested include files are allowed. A netlist recursively including<br />
itself is not allowed.<br />
Command Argument Definition<br />
filename Specifies the name of an additional<br />
netlist.<br />
NOTE: The .inc statement is for HSPICE format.
Chapter 3<br />
Netlist Compiler and<br />
Translators
78 Chapter 3 Netlist Compiler and Translators
Overview<br />
Compiled Files<br />
Overview 79<br />
This chapter describes the <strong>EPIC</strong> netlist compiler and provides<br />
information about the netlist formats supported by the compiler.<br />
It also shows you how to work with Cadence SPF files, device<br />
parameter format files, and to set up an <strong>EPIC</strong> binary file.<br />
Information about utilities that translate SPICE, EDIF and<br />
Verilog netlists to <strong>EPIC</strong> netlists is also provided, as well as how<br />
to use the Ecrypt utility for encrypting netlist files, which can be<br />
read by the compiler.<br />
Netlists are compiled every time you start an <strong>EPIC</strong> simulator.<br />
When you use the compiler, a message appears on the screen<br />
indicating the compiler is in use. The compiler does not produce<br />
intermediate files during compilation.<br />
The netlist compiler supports the following netlist formats,<br />
shown with their abbreviations.<br />
Netlist Format Abbreviation<br />
LSIM lsim<br />
SPICE spice<br />
Verilog vlog<br />
EDIF edif<br />
<strong>EPIC</strong> epic<br />
Cadence SPF cspf<br />
To specify netlist formats, use the -n command-line option.<br />
SYNTAX:<br />
-nformat<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
80 Chapter 3 Netlist Compiler and Translators<br />
EXAMPLE:<br />
-nspice net1 -nvlog net2<br />
This example reads net1 as a SPICE netlist and net2 as a<br />
Verilog netlist.<br />
If you specify a netlist without a format option (that is, -n is not<br />
followed by a format), use a filename with one of the following<br />
suffixes to indicate a particular format.<br />
Format Filename Suffix<br />
LSIM .N, .n<br />
SPICE .sp, .spi, .SP, .SPI<br />
Verilog .v, .V<br />
EDIF .ed, .edif, .ED, .EDIF<br />
<strong>EPIC</strong> .en, .EN<br />
Cadence SPF .spf, .dspf, .cspf, .hspf<br />
Device Parameter Format .dpf<br />
<strong>EPIC</strong> Binary File .edb<br />
A filename with either no extension or with a different extension<br />
from those listed above indicates the netlist is in <strong>EPIC</strong> netlist<br />
format.<br />
EXAMPLE:<br />
-n net1.spi net2.v net3.x<br />
This example reads net1.spi as a SPICE netlist, net2.v as a<br />
Verilog netlist, and net3.x as an <strong>EPIC</strong> netlist.<br />
You can specify netlists of mixed format with the -n commandline<br />
option.<br />
The netlist compiler can read LSIM and SPICE format netlists,<br />
but separate licenses are required for each format. For Verilog or<br />
EDIF netlists, the netlist compiler will first call vlog2e or
Compiled Files 81<br />
edif2e, respectively, to convert the netlist to <strong>EPIC</strong> format before<br />
reading it in; however, no <strong>EPIC</strong> netlist file will be produced.<br />
The netlist compiler provides library support. You can specify<br />
netlist library directories in three ways:<br />
■ Use the environment variable <strong>EPIC</strong>_CELL_LIB_PATH<br />
■ Set the environment variable <strong>EPIC</strong>_CELL_LIB_PATH with<br />
the netlist control option epic_cell_lib_path<br />
■ Use the -L command-line option when running most <strong>EPIC</strong><br />
tools. (For details, see the reference guide for the tool you are<br />
using.)<br />
Specify library directories as a list of directory names separated<br />
by colons (:).<br />
Directories are searched in the same order in which you list<br />
them. The directories specified in <strong>EPIC</strong>_CELL_LIB_PATH are<br />
searched first before those specified in the -L command-line<br />
option. The <strong>EPIC</strong>_CELL_LIB_PATH, if set externally, overrides<br />
the setting in the netlist. Whenever there is an instantiation,<br />
and no subcircuit definition or functional model of that name is<br />
found, the netlist compiler searches the library directories for a<br />
file with that element name, with or without a recognized<br />
extension, as described previously. The search occurs in the<br />
following order: no extension, .en, .EN, .sp, .SP, .spi, .SPI, .n,<br />
.N, .ed, .ED, .edif, .EDIF, .v, .V.<br />
The netlist compiler can detect encrypted netlist files (.eef) with<br />
the Ecrypt utility. For information about this utility, see “The<br />
Ecrypt Utility” on page 131.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
82 Chapter 3 Netlist Compiler and Translators<br />
LSIM Netlist Features and Limitations<br />
LSIM supports:<br />
■ four terminal transistors<br />
■ parameter passing in LSIM is supported<br />
■ <strong>EPIC</strong> stimulus in a separate file<br />
LSIM does not support:<br />
■ the BUILDMODE statement, an LSIM compiler directive<br />
that allows you to select between multiple simulation models<br />
■ <strong>EPIC</strong> stimulus inside an LSIM netlist<br />
EXAMPLE:<br />
CELL A A(d=.5){<br />
IN a;<br />
OUT b;<br />
R R1 r=d*10 s=a d=b;<br />
}<br />
The parameter d in the cell calculates the value of the r<br />
parameter.<br />
SPICE Netlist Characteristics<br />
Characteristics of a SPICE netlist include:<br />
■ All ports in subcircuits are bidirectional. To instantiate a<br />
SPICE subcircuit in an <strong>EPIC</strong> netlist, use (bt=...).<br />
■ The following elements are supported: resistor, capacitor,<br />
diode, BJT, MOSFET, and independent source (only dc, pwl<br />
and pulse).<br />
■ The negative node of an independent source is assumed to be<br />
ground.<br />
■ Unsupported statements are saved in the .ignore file.
HSPICE Netlist Syntax<br />
General Control Options<br />
Input File Control Options<br />
HSPICE Netlist Syntax 83<br />
This section provides information about HSPICE netlist syntax.<br />
All essential HSPICE syntax is supported.<br />
The <strong>EPIC</strong> netlist compiler interprets only <strong>EPIC</strong> netlist control<br />
options and those in the following list. All others are ignored.<br />
ASPEC DEFL DEFW SEARCH<br />
DEFAD DEFNRD SCALE TNOM<br />
DEFAS DEFPD SCALM WL<br />
If SCALE and one or more DEFAD, DEFAS, DEFL, DEFNRD<br />
DEFPD, or DEFW options are defined, SCALE must be defined<br />
first; otherwise, the MOSFET default will not be scaled properly.<br />
The input file control options are:<br />
.DCVOLT .IC .OPTIONS<br />
.END .INCLUDE .PARAM<br />
.ENDS .LIB .SUBCKT<br />
.EOM .MACRO<br />
.GLOBAL .MODEL<br />
NOTE: .ALTER is treated the same as .END, and subsequent options are<br />
ignored.<br />
The SPICE netlist reader reads standard SPICE and HSPICE<br />
netlists with commands placed anywhere in the netlist.<br />
Specify all netlist control options in the SPICE netlist using the<br />
.options statement. Define an .options statement, or<br />
statements, at the beginning of the SPICE netlist. For<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
84 Chapter 3 Netlist Compiler and Translators<br />
Analysis Options<br />
Output Control<br />
information about control options, see “Netlist Control Options”<br />
on page 45 and “SPF Control Options” on page 88.<br />
.options ctrl_opt_name= “value” ...<br />
EXAMPLE:<br />
.options case=”U” bus_notation=””<br />
min_cap_value=”10f”<br />
The <strong>EPIC</strong> netlist compiler understands .TRAN and .TEMP.<br />
Transient monte carlo, transient temperature sweep, transient<br />
parameter sweep, and transient optimization are not supported.<br />
You can use the .TRAN statement simulation end point to set the<br />
simulation end time (for TimeMill and PowerMill only). This is<br />
equivalent to the -t command-line option.<br />
The <strong>EPIC</strong> netlist compiler supports output control in HSPICE<br />
netlists with the following features:<br />
■ .PRINT, .PLOT, and .PROBE statements are supported and<br />
are treated exactly the same.<br />
■ Transient analysis only. Statements specifying other types of<br />
analyses (DC, AC, etc.) will be ignored.<br />
■ In addition to supporting the .PRINT TRAN v(a,b)<br />
expression, the simulator also supports the general .PRINT<br />
label_name=par(f(x1, x2, x3,...)) expression, where operands<br />
in the function “f” can be pin currents, branch currents, node<br />
voltages, or some label previously defined by a .PRINT<br />
statement. Operators can be ^, +, -, *, /, sin(), cos(), and so on.<br />
■ The label type (math, voltage, or current) is automatically<br />
detected and incorporated into the signal name and attribute<br />
in the .index line printed in the <strong>EPIC</strong> .out file. For example,<br />
for the statement .PRINT diff=par(v(a)-v(b)), the signal<br />
name “v(diff)” and attribute “v” are used in the output file.
Elements<br />
HSPICE Netlist Syntax 85<br />
This section shows how elements are supported by the <strong>EPIC</strong><br />
netlist compiler.<br />
Rxxx - Resistor<br />
You can specify either the resistance or the model to<br />
automatically calculate the resistance.<br />
Cxxx - Capacitor<br />
You can either specify capacitance directly or use the<br />
automatic calculation if the model is given.<br />
Lxxx - Inductor<br />
Supported in linear form only.<br />
Kxxx - Mutual Inductor<br />
Supported in standard HSPICE format.<br />
Txxx - Ideal Transmission Line<br />
Supported in standard HSPICE format.<br />
Vxxx - Independent Voltage Source<br />
All source types except AC are supported. The syntax for<br />
each supported source type is found in Appendix D. For 0v<br />
dc voltage source, if no current controlled elements are<br />
present in the circuit, it will be discarded. Its two<br />
terminals will be connected together.<br />
Ixxx - Independent Current Source<br />
All source types except AC are supported.<br />
Exxx - Voltage Controlled Voltage Source<br />
Supported with the ACE engine in the following forms:<br />
linear, polynomial, pwl, transformer, behavior, delay, linear<br />
combination, multi-input gate and laplace function.<br />
Gxxx - Voltage Controlled Current Source<br />
Supported with the ACE engine in the following forms:<br />
linear, polynomial, pwl, behavior, vcr, vccap, multi-input<br />
gate and laplace function.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
86 Chapter 3 Netlist Compiler and Translators<br />
Fxxx - Current Controlled Current Source<br />
Supported with the ACE engine in the following forms:<br />
linear, polynomial, pwl, delay, and multi-input gate.<br />
Hxxx - Current Controlled Voltage Source<br />
Supported with the ACE engine in the following forms:<br />
linear, polynomial, pwl, and multi-input gate.<br />
Dxxx - Diode<br />
With the ACE engine, the netlist compiler reads in level 1,<br />
level 2 and level 3 diodes. No conversion is performed.<br />
Without ACE, the level 2 diode is discarded; the level 3<br />
diode is converted to capacitor. If keep_junc_diode is not<br />
set, level 1 diode is converted to capacitor. The netlist<br />
compiler assumes that the diode is reverse biased; cjo and<br />
cjswo are calculated average values. (For information about<br />
reading diodes as capacitors, see “Reading Diodes as<br />
Capacitors” on page 20.)<br />
Qxxx - BJT<br />
Without ACE, this is ignored by default.<br />
Mxxx - MOSFET<br />
The <strong>EPIC</strong> netlist format permits the use of three terminals<br />
to describe the connection of a four-terminal MOS device.<br />
The default bulk name is VDD for PMOS and GND for NMOS.<br />
This default connection differs from HSPICE.<br />
Jxxx - JFET or MESFET<br />
Supported in standard HSPICE format.<br />
Xyyy - Subcircuit Element<br />
Supported in standard HSPICE format.<br />
NOTE: Uxxx - Lossy Transmission is not supported by the <strong>EPIC</strong> netlist<br />
compiler.
Cadence SPF File<br />
SPF Processing<br />
Cadence SPF File 87<br />
The <strong>EPIC</strong> netlist compiler interprets a file with a .cspf extension<br />
as a Cadence SPF file. Here is an example of how to specify an<br />
SPF file as part of your run:<br />
powrmill -n example.cspf<br />
NOTE: The .cspf extension tells the netlist compiler that this is a<br />
Cadence SPF file. Without the .cspf extension, you must specify<br />
-ncspf filename.<br />
The SPF information for a particular netlist is discarded if the<br />
<strong>EPIC</strong> netlist compiler detects any one of the following<br />
connectivity errors:<br />
■ The net does not exist in the netlist.<br />
■ The pin or instance pin does not exist in the netlist.<br />
■ A pin or instance pin does not connect to the net in the<br />
netlist.<br />
■ The SPF information for a net describes an unconnected<br />
network.<br />
For each SPF net, the netlist compiler creates a subcircuit<br />
definition containing all the parasitics and creates an instance of<br />
the subcircuit at the top level. The SPF net name is used for the<br />
subcircuit definition name. The instance name is in the format<br />
“cspf”, where XXX is the SPF net name. To specify the<br />
instance port connections, use the <strong>EPIC</strong> back-annotation naming<br />
convention, as follows:<br />
P- Pin identifier<br />
I- Instance pin identifier<br />
: Instance port delimiter<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
88 Chapter 3 Netlist Compiler and Translators<br />
SPF Control Options<br />
cspf_cap_select<br />
EXAMPLE 1:<br />
: *<br />
*|NET A 1.028E-04FF<br />
*|P (A O 0.00E00PF 30.39 3.00)<br />
*|I (XI4:PA0 XI4 PA0 I 0.00E00PF 19.67 2.67)<br />
*|S (A:2 30.31 2.67)<br />
R1 A A:2 1.37614E-03K<br />
RD1 A XI4:PA0 0.00E00K<br />
CD1 XI4:PA0 VSS 0.00E00PF<br />
C1 A VSS 4.81112E-05PF<br />
C2 A:2 VSS 6.01185E-05PF<br />
EXAMPLE 2:<br />
(subckt=A)(bt=A,XI4:PA0){<br />
(t=R)(en=R1)(so=A)(dr=A:2)(r=1.37E-03K);<br />
(t=R)(en=RD1)(so=A)(dr=X14:PA0)(r=0.00E00KK);<br />
(c=4.811E-05PF)(nn=A);<br />
c=6.011E-05PF)(nn=A:2);<br />
}<br />
(ef=A)(en=cspf)(bt=P-:A,I-XI4:PA0);<br />
The SPF net in Example 1 is treated like an <strong>EPIC</strong> subcircuit in<br />
Example 2. The instance’s first biput port is connected to "P-:A"<br />
(net A), and the second biput port is connected to "I-X14:PA0"<br />
(port PA0 of instance X14).<br />
This section provides descriptions of the control options that can<br />
be used in the SPF file.<br />
SYNTAX:<br />
ctrl_opt cspf_cap_select: netline | sum | warning<br />
EXAMPLE:<br />
*|NET x1.out 20ff<br />
*|GROUND_NET vss<br />
C1 x1.out vss 2FF<br />
C2 x1.out vss 2FF
cspf_name_map_proc<br />
C3 x1.out vss 2FF<br />
C4 x1.out vss 2FF<br />
Cadence SPF File 89<br />
If the control option is set to sum, 8ff will be added to net<br />
x1.out. If netline is used, then 20ff will be added to the net. If<br />
warning is used, then a warning will be printed because the two<br />
values differ by more than 1%. In this case the sum of the cap<br />
values will be used.<br />
DESCRIPTION:<br />
This option affects only those nets in which the capacitance can<br />
be represented as a single value.You can select one of three<br />
settings for SPF back-annotation of capacitance values.<br />
Argument Definition<br />
netline Selects the capacitance number on the<br />
netline. The netline is the line that<br />
starts with *|Net.<br />
sum Sums all the capacitance values<br />
associated with the net<br />
warning Issues a warning if the netline and sum<br />
values differ<br />
All of the following conditions must be present to collapse SPF<br />
into a single capacitance value:<br />
■ SPF net is not reduced SPF (RSPF.)<br />
■ No instance pins are defined for the net.<br />
■ No subnodes are defined for the net<br />
■ Only capacitor elements are defined for the net<br />
SYNTAX:<br />
ctrl_opt cspf_name_map_proc:“value”;<br />
EXAMPLE 1:<br />
ctrl_opt cspf_name_map_proc:“nm.tcl”;<br />
This example specifies the name-mapping procedure file nm.tcl.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
90 Chapter 3 Netlist Compiler and Translators<br />
cspf_net<br />
EXAMPLE 2:<br />
/* FILE: name_map.tcl */<br />
proc cspf_name_map {a} {<br />
regsub /X [string toupper $a] {} b<br />
return $b<br />
}<br />
This name mapping procedure strips leading Xs from the<br />
instance name and converts them to uppercase in the SPF file.<br />
DESCRIPTION:<br />
For the netlist compiler to correctly process connectivity<br />
information, the net names, pin names, and instance pin names<br />
must match the hierarchical name in the original netlist. If there<br />
is a mismatch, you can use a name mapping procedure to correct<br />
it. The name mapping procedure is a TCL procedure called<br />
cspf_name_map_proc. It takes one argument, the name (pin<br />
name or instance pin name) in the SPF file, and returns a name<br />
that matches the hierarchical name in the original netlist.<br />
Use this control option to specify the filename containing the<br />
name mapping procedure. The netlist compiler will<br />
automatically call the procedure for every net name, pin name,<br />
instance pin name, driver name, and load name encountered.<br />
An example of the name mapping file (cspf_name_map.tcl) can be<br />
found in <strong>EPIC</strong>_HOME/machind/lib/epic.<br />
SYNTAX:<br />
ctrl_opt cspf_net: “value”<br />
EXAMPLE 1:<br />
ctrl_opt cspf_net:"A[*]";<br />
This example back-annotates SPF for nets matching A[*].<br />
EXAMPLE 2:<br />
ctrl_opt cspf_net:"B C D";<br />
This example back-annotates SPF for nets B, C & D.
cspf_disable_net<br />
cspf_process_ccap<br />
DESCRIPTION:<br />
Cadence SPF File 91<br />
This option specifies the nets to which you want parasitic<br />
information back-annotated in the original netlist. If you do not<br />
specify this option, all nets found in the SPF file will be<br />
processed. You can use this option more than once. Wild cards<br />
are allowed in the net name.<br />
SYNTAX:<br />
ctrl_opt spf_disable_net:“value”;<br />
EXAMPLE:<br />
ctrl_opt cspf_disable_net:“a b c*”;<br />
DESCRIPTION:<br />
This control option specifies nets in the SPF file to be ignored<br />
during back-annotation. Wildcards are allowed in the net name.<br />
The cspf_net and cspf_disable_net options can be used<br />
together. When you use both options, all nets that match those<br />
specified in cspf_net will be back-annotated, and those specified<br />
in cspf_disable_net will not.<br />
NOTE: If a net is specified in both cspf_net and cspf_disable_net, it<br />
will not be back-annotated.<br />
SYNTAX:<br />
ctrl_opt cspf_process_ccap;<br />
DESCRIPTION:<br />
This option activates netlist compiler routines that process all<br />
coupling capacitors in SPF nets. By default, the compiler ignores<br />
all coupling capacitors in SPF nets.<br />
The split_floating_cap option affects the coupling capacitors in<br />
SPF nets if cspf_process_ccap is also specified.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
92 Chapter 3 Netlist Compiler and Translators<br />
SPF Netlist Reader Limitations<br />
This section describes the limitations of the SPF netlist reader.<br />
The limitations are:<br />
■ Limited source-to-drain connection checking. See the<br />
“Source-to-Drain Checking” section that follows.<br />
■ Only DelayMill can handle multiple drivers in RSPF files. All<br />
other <strong>EPIC</strong> tools will probably fail to recognize multiple<br />
drivers without issuing an error message.<br />
Source-to-Drain Checking<br />
If the netlist compiler detects any mismatch in source-to-drain<br />
connections described in the transistor netlist and the Cadence<br />
SPF file, it automatically makes corrections, but the net name<br />
specified must be the highest level name.<br />
EXAMPLE:<br />
/* transistor netlist */<br />
(subckt=test)(it=A)(ot=B) {<br />
(t=p)(en=p1)(so=A)(dr=B)....<br />
...<br />
}<br />
(ef=test)(en=test1)(it=n1)(ot=n2);<br />
Use the following format for the Cadence SPF file:<br />
*Cadence SPF file<br />
*|NET n1...<br />
*|p1:d...<br />
R1 p1:d n1:1 100 $ n1 is connected to source in<br />
netlist ...<br />
The mismatch in the following Cadence SPF file cannot be<br />
detected.<br />
* Cadence SPF file<br />
*|NET test1:A $ test1:A is the same as n1<br />
*|l p1:d<br />
R1 p1:d test1:A:1 100
Common SPF Warnings<br />
Cadence SPF File 93<br />
This section lists and describes common SPF warnings.<br />
Connectivity Error<br />
When you back-annotate an SPF net, the SPF net must have the<br />
same number of instance pins as the real net, for the particular<br />
level of hierarchy involved. If connections are made to higher<br />
levels of the netlist, then the SPF net information must include<br />
a pin statement. The SPF net must also be connected. If the<br />
connectivity in the RC network is disjoint, a message appears, as<br />
shown in the following example.<br />
EXAMPLE:<br />
WARNING:0x2020807c:SPF connectivity error on<br />
node’topi’<br />
spf net ’topi’ has the following missing instance<br />
pins:<br />
- x3.m1:g (connecting back to x1:i)<br />
- x3.m0:g (connecting back to x1:i)<br />
WARNING:0x2020807e:SPF connectivity error on<br />
node’topi’<br />
spf net ’topi’ is discarded because it contains<br />
2 disconnected components:<br />
- component # 0 contains the following pins:<br />
x4:i<br />
- component # 1 contains the following pins:<br />
x1:i<br />
x2:i<br />
x3:i<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
94 Chapter 3 Netlist Compiler and Translators<br />
Duplicate Global Node<br />
A net that traverses several levels of hierarchical is backannotated<br />
with several individual net statements, and if you try<br />
to back-annotate the same individual net section again, this<br />
error message appears.<br />
EXAMPLE:<br />
duplicate global node I-x1.m0:d<br />
duplicate global node I-x1.m1:d<br />
Net Does Not Exist<br />
The net cannot be located in the main circuit database. This can<br />
happen if the hierarchy character in the SPF file is not the same<br />
as in the main circuit netlist.<br />
EXAMPLE:<br />
WARNING:0x2020807b:SPF net junk does not exist.<br />
Discarded.<br />
Hierarchical SPF Back-Annotation<br />
Hierarchical SPF (HSPF) back-annotation is similar to the<br />
normal (flat) SPF back-annotation with two exceptions:<br />
■ The SPF file is used to describe parasitics inside all<br />
instantiations of a module<br />
■ Back-annotation is done for all instances of the module<br />
Before using an SPF file for hierarchical back-annotation, make<br />
sure the SPF file does not contain any connectivity errors. To<br />
clear errors:<br />
1 Use the -ncspf command line option to force the hierarchical<br />
SPF file to be interpreted as a normal SPF file<br />
2 Use the -m command line option to specify the top-level<br />
module name.
Cadence SPF File 95<br />
3 If necessary, use the cspf_name_map_proc control option to<br />
specify a TCL procedure to resolve any name mapping issues.<br />
The same TCL procedure will also be needed for hierarchical<br />
back-annotation.<br />
4 After making sure the SPF file is cleared of errors, use the<br />
command-line option -nhspf or name the SPF file with the<br />
.hspf extension to prepare the SPF file for hierarchical backannotation.<br />
If the SPF file already has .SUBCKT/.ENDS statements, the<br />
netlist compiler will automatically use this information.<br />
NOTE: The netlist compiler uses only the module name and ignores<br />
everything else on the .subckt line.<br />
SPF for multiple modules can also be described in one SPF file<br />
with multiple .SUBCKT/.ENDS statements. If there is no<br />
.SUBCKT/.ENDS statement in the SPF file and you do not want<br />
to edit the SPF file to add these statements, you an rename the<br />
filename using the module name as the filename prefix.<br />
In the following example, mux04.spf is the SPF file for module<br />
mux04.<br />
EXAMPLE 1:<br />
1% pathmill -n netlist -ncspf mux04.spf -m mux04...<br />
This example runs PathMill analysis only on module mux04. The<br />
file mux04.spf is used as a normal Cadence SPF file.<br />
EXAMPLE 2:<br />
2% pathmill -n netlist -nhspf mux04.spf...<br />
In this example, the PathMill analysis is done on the full<br />
chip.The file mux04.spf is specified as hierarchical SPF file and<br />
will be back-annotated to every instance of mux04.<br />
NOTE: You cannot selectively back-annotate certain instances. If<br />
hierarchical SPF information is provided for one module, then<br />
all instances of that module will get back-annotation<br />
information.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
96 Chapter 3 Netlist Compiler and Translators<br />
Device Parameter Format File<br />
The Device Parameter Format file (.dpf) is a flattened listing of<br />
transistors with post-layout parameter values. The format is<br />
similar to SPICE. After reading in the .dpf file, the netlist<br />
compiler replaces the corresponding transistor parameter value<br />
with the extracted value.<br />
The following example of a netlist file shows two inverters<br />
chained together.<br />
*net.spi<br />
.global vdd<br />
.subckt inv in out<br />
mp vdd in o vdd pmos w=11.24u 1=0.4u as=0 ad=0 ps=0 pd=0<br />
mn gnd in o gnd nmos w=7.80u 1=0.4u as=0 ad=0 ps=0 pd=0<br />
.ends<br />
x1 a b inv<br />
x2 b c inv<br />
.end<br />
The .dpf file for this circuit is net.dpf and contains a listing of the<br />
transistors with extracted as, ad, ps and pd values, as follows:<br />
*net.dpf<br />
x1.mp vdd a b vdd pmos ad=1.559p as=1.559p pd=0.784u ps=0.784u<br />
x1.mn gnd a b gnd nmos ad=1.245p as=1.245p pd=1.632u ps=0.784u<br />
x2.mp vdd b c vdd pmos ad=1.559p as=1.559p pd=0.784u ps=0.784u<br />
x2.mn gnd b c gnd nmos ad=1.245p as=1.245p pd=1.632u ps=0.784u<br />
.end<br />
The command syntax for power simulation for this circuit<br />
including the .dpf file is:<br />
powrmill -nspice net.spi -ndpf net.dpf ...<br />
The netlist compiler uses the element name in the .dpf file to<br />
locate the corresponding transistor inside the database. It uses<br />
the node name to check if the transistor’s source and drain
dpf_name_map_proc<br />
Device Parameter Format File 97<br />
terminals are swapped. Therefore, the name of the .dpf file must<br />
conform to the following naming conventions:<br />
■ The hierarchical separator used in the .dpf file must be the<br />
same as that used in the original netlist file.<br />
■ The format of the hierarchical name can be in either topdown<br />
or bottom-up format.<br />
You can add an extra character in front of the element name. For<br />
example, the following names can be used in the previous<br />
example of a .dpf file: x1.mp, mp.x1, or mx1.mp.<br />
If you use a different naming convention in the .dpf file, you<br />
must use the control option dpf_name_map_proc to cause the<br />
tcl script to convert the element or node names in the .dpf file to<br />
the format used in the original netlist file.<br />
NOTE: The naming convention in all .dpf files for a circuit must be<br />
consistent.<br />
The following control option can be used with the .dpf file.<br />
SYNTAX:<br />
ctrl_opt dpf_name_map_proc:filename.tcl<br />
EXAMPLE:<br />
ctrl_opt dpf_name_map_proc:map.tcl<br />
The map.tcl file is the tcl script containing the tcl name<br />
mapping procedures.<br />
DESCRIPTION:<br />
This control option is used to convert the element or node names<br />
in the .dpf file to the format used in the original netlist file.<br />
An example of the name mapping file (dpf_name_map.tcl) can be<br />
found in <strong>EPIC</strong>_HOME/machind/lib/epic.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
98 Chapter 3 Netlist Compiler and Translators<br />
<strong>EPIC</strong> Binary File<br />
The <strong>EPIC</strong> binary file is used to repeat simulation of the same<br />
netlist design under the same tool. Compile time can be as much<br />
as ten times faster if you use the binary file.<br />
The <strong>EPIC</strong> binary file is always generated by the <strong>EPIC</strong> netlist<br />
compiler. The file consists of two files: a header file<br />
(hd_filename.edb) and a data file (filename.edb). By default, the<br />
netlist compiler compresses the data file with gzip.<br />
The netlist compiler interprets a file with a .edb extension as an<br />
<strong>EPIC</strong> binary file. You need only to specify the data filename on<br />
the command line; the compiler derives the header filename from<br />
the data filename.<br />
EXAMPLE:<br />
powrmill -n example.edb<br />
This example shows you how to include the example.edb binary<br />
file in the run.<br />
NOTE: Before you use the <strong>EPIC</strong> binary file, you need to consider the<br />
following characteristics:<br />
■ All netlist-related control options and configuration<br />
commands affect the content of binary files. You cannot<br />
change any of the control options when you choose to have<br />
the netlist compiler read the binary file instead of<br />
recompiling netlist files.<br />
■ The <strong>EPIC</strong> binary file is platform-dependent.<br />
■ The <strong>EPIC</strong> binary file is tool-dependent. Thus, binary files<br />
generated by PowerMill are not compatible with PathMill.<br />
■ You cannot compile another netlist when using a binary file.
Control Options<br />
db_file<br />
dont_compress_db<br />
SPICE Netlist Translator 99<br />
The following control options can be used in the <strong>EPIC</strong> binary file:<br />
SYNTAX:<br />
ctrl_opt db_file:filename;<br />
This control option specifies the binary file’s prefix and triggers<br />
the generation of the file.<br />
EXAMPLE:<br />
ctrl_opt db_file:”example”;<br />
This example causes the netlist compiler to generate the header<br />
file hd_example.edb and the data file example.edb.<br />
SYNTAX:<br />
ctrl_opt dont_compress_db:[0|1];<br />
This option controls the compression of the netlist database file.<br />
By default, netlist database files (.edb) are compressed by gzip.<br />
EXAMPLE:<br />
ctrl_opt dont_compress_db:”1”;<br />
This example causes the netlist compiler to generate the<br />
uncompressed header file hd_example.edb and the uncompressed<br />
data file example.edb.<br />
SPICE Netlist Translator<br />
This section describes how to translate a SPICE netlist to an<br />
<strong>EPIC</strong> netlist using the <strong>EPIC</strong> spice2e utility.<br />
This utility reads three files that must be in the local directory:<br />
modelfile, aliasfile and defaultfile. Each file modifies the<br />
translation in a specific way. These filenames are reserved for<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
100 Chapter 3 Netlist Compiler and Translators<br />
Model File<br />
spice2e usage and cannot be used for any other purpose in the<br />
local directory.<br />
SYNTAX:<br />
model subcircuit_name<br />
[inputs n]<br />
[outputs n]<br />
[biputs n]<br />
[state n]<br />
[external]<br />
end model<br />
EXAMPLE 1:<br />
model SUBCKT100<br />
inputs 2<br />
outputs 1<br />
biputs 8<br />
inputs 3<br />
outputs 2<br />
state 1<br />
end model<br />
This example defines SUBCKT100 as a subcircuit with five input<br />
pins, three output pins, and eight bidirectional pins. The pins<br />
are listed in the following order: the first two pins are input pins,<br />
the third is an output pin, pins 4 through 11 are bidirectional,<br />
and so on. SUBCKT100 has one state and is expanded when<br />
referenced.<br />
You can use the abbreviation .sub (or .SUB) in place of .SUBCKT<br />
in your SPICE file. You can use either all lowercase or uppercase<br />
characters for this abbreviation.<br />
EXAMPLE 2:<br />
model INV<br />
inputs 1<br />
outputs 1<br />
external<br />
end model
Alias File<br />
SPICE Netlist Translator 101<br />
This example defines a second subcircuit, INV, that has one<br />
input and one output pin. There are no bidirectional pins and no<br />
state information. The keyword external suppresses the<br />
translation of the subcircuit and calls a model or expects a<br />
subcircuit definition from another netlist file during simulation.<br />
DESCRIPTION:<br />
The model file contains the following subcircuit information:<br />
■ Number of input pins, output pins, and biput pins<br />
■ Pin ordering for subcircuit interface<br />
■ Number of states<br />
■ Whether the subcircuit should be expanded or a model<br />
substituted from a model library<br />
SYNTAX:<br />
set original_name as translated_name<br />
EXAMPLE:<br />
set 0 as gnd<br />
set 1 as vdd<br />
set VDD as vdd<br />
set GND as gnd<br />
set vss as gnd<br />
set %VCC! as vdd<br />
set %VBB! as gnd<br />
set VCC as vdd<br />
set 200 as RDN<br />
In this example, the first line translates all nodes named 0 in the<br />
SPICE netlist to GND in the <strong>EPIC</strong> netlist. The sixth line<br />
translates all references of %VCC! in the SPICE netlist to VDD in<br />
the <strong>EPIC</strong> netlist.<br />
DESCRIPTION:<br />
The alias file contains aliases for nodes in the SPICE netlist. The<br />
set command maps node names that are not allowed in the <strong>EPIC</strong><br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
102 Chapter 3 Netlist Compiler and Translators<br />
netlist to legal <strong>EPIC</strong> node names. The most common example is<br />
translating !VDD, a standard name used in layout-versusschematic<br />
programs, to either vdd or VDD, as required by <strong>EPIC</strong><br />
tools. During translation, node names in the SPICE netlist<br />
specified in alias file set commands are converted to the<br />
alternate node name.<br />
Command Argument Definition<br />
original_name Specifies the node name in the<br />
SPICE netlist<br />
translated_name Specifies the new node name in the<br />
<strong>EPIC</strong> netlist<br />
SYNTAX:<br />
alias original_name as vdd | gnd<br />
EXAMPLE:<br />
alias CCD as vdd<br />
alias Q[0] as gnd<br />
In this example, spice2e recognizes the node names CCD and<br />
Q[0]. They are kept in the <strong>EPIC</strong> netlist as multiple names of<br />
power nodes for separate power reporting.<br />
At the same time, spice2e generates the following configuration<br />
file commands:<br />
set_vdd CCD<br />
set_gnd Q[0]<br />
The name of the configuration file is specified by the<br />
spice2e -b or spice2e -o command arguments. You must<br />
include the configuration file generated by spice2e when<br />
running <strong>EPIC</strong> tools.<br />
DESCRIPTION:<br />
Use the alias command for multiple VDD and GND nodes. In the<br />
<strong>EPIC</strong> netlist, you can use multiple names for VDD and GND<br />
nodes, which indicate power nodes. The spice2e translator<br />
associates the related capacitors so they are not separated from<br />
the capacitors connected to them. The original node names are<br />
kept in the <strong>EPIC</strong> netlist.
Default File<br />
Diodes<br />
SPICE Netlist Translator 103<br />
Here are examples of lines translated by spice2e.<br />
SPICE example:<br />
C1 RCD CCD 1f => spice2e => (C=1) (NN=RCD);<br />
MOS example:<br />
M1 3 4 CCD CCD pmos... spice2e => (T=pmos) (...) (SO=CCD)...<br />
The default file specifies information required to map SPICE<br />
MOS, diode elements, resistors, and capacitors to <strong>EPIC</strong> netlist<br />
format.<br />
To specify the default length and width of MOS devices, and to<br />
replace SPICE MOS model names with <strong>EPIC</strong> MOS model names,<br />
use the following syntax:<br />
spice_model default_width default_length <strong>EPIC</strong>_model<br />
Command Argument Definition<br />
spice_model Specifies the name of the SPICE<br />
model<br />
default_width Specifies the default width in<br />
microns<br />
default_length Specifies the default length in<br />
microns<br />
<strong>EPIC</strong>_model Specifies the <strong>EPIC</strong> model name<br />
that replaces the SPICE model<br />
name<br />
You can keep the diodes in <strong>EPIC</strong> netlists by using the<br />
spice2e -d command argument if both of the following<br />
conditions are true:<br />
■ These diodes are not source or drain to substrate diodes<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
104 Chapter 3 Netlist Compiler and Translators<br />
■ These diodes are nongeometric (area AREA and peripheral<br />
PJ are dimensionless factors, HSPICE level 1) diodes<br />
If the spice2e -d command argument is not used, by default<br />
spice2e converts diodes to capacitors. This means the diode<br />
capacitance parameters must be placed in the default file for<br />
conversion. Source or drain to substrate diodes or geometric<br />
diodes (area AREA and peripheral PJ are values with units,<br />
HSPICE level 3) must be converted to capacitors.<br />
There are two ways to compute the capacitance values when a<br />
diode is converted. The first, less accurate method, is to use the<br />
following formula:<br />
=Area x cj + Perimeter x cjp<br />
You need to provide the voltage average capacitances cj and cjp.<br />
You cannot directly apply the zero-biased capacitance model<br />
values cjo and cjp in the preceding formula since the capacitance<br />
value will be too large. Instead, the average values should be<br />
roughly 0.67 times the zero-biased values.<br />
Use the following syntax to specify the values in the default file:<br />
SYNTAX:<br />
spice_diode_model cj cjp <strong>EPIC</strong>_diode_model<br />
Command Argument Definition<br />
spice_diode_model Specifies the name of the SPICE<br />
diode model<br />
cj Specifies the average bottom<br />
junction capacitance<br />
cjp Specifies the average sidewall<br />
peripheral capacitance<br />
<strong>EPIC</strong>_diode_model Specifies the <strong>EPIC</strong> model name<br />
that replaces the SPICE model<br />
name
SPICE Netlist Translator 105<br />
The second method applies a more accurate calculation for<br />
computing the capacitance by using the equations provided for<br />
the cja and cjsw commands (see page 183). The variables in the<br />
equations are described in the following syntax:<br />
SYNTAX:<br />
spice_diode_model keyword=value ... <strong>EPIC</strong>_diode_model<br />
Keyword Definition<br />
cjo, cj, or cja Zero-bias junction capacitance epr<br />
unit junction bottom area in farads<br />
per unit area. The default value is<br />
0.<br />
cjp or cjsw Zero-bias junction capacitance per<br />
unit junction periphery in farads<br />
per unit junction periphery (PJ).<br />
The default is 0.<br />
pb, phi, vj, or pha Area junction contact potential in<br />
volts. The default is 0.8 volts.<br />
php Periphery junction contact<br />
potential in volts. The default value<br />
is that of pb.<br />
mj, m, or exa Area junction grading coefficient. It<br />
is dimensionless with a default<br />
value of 0.5.<br />
mjsw or exp Periphery junction grading<br />
coefficient. It is dimensionless with<br />
a default value of 0.33.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
106 Chapter 3 Netlist Compiler and Translators<br />
Keyword Definition<br />
vdd Supply voltage in volts. The default<br />
is 5.0.<br />
level Diode model level. The default is 1.<br />
Level 1 represents a nongeometric<br />
diode model and is translated to<br />
<strong>EPIC</strong> diodes by the spice2e -d<br />
command argument. Other levels<br />
represent a geometric diode model<br />
not supported by <strong>EPIC</strong> tools and<br />
can be converted only to capacitors.<br />
Adding the level keyword to the<br />
default file can cause the<br />
spice2e -d command argument to<br />
be overlooked and mistranslate the<br />
geometric diodes to <strong>EPIC</strong> diodes.<br />
The definitions for spice_diode_model and <strong>EPIC</strong>_diode_model are<br />
the same as in the first method.
Resistors and Capacitors<br />
SYNTAX:<br />
spice_model keyword=value ... <strong>EPIC</strong>_model<br />
SPICE Netlist Translator 107<br />
You can use the keyword-value pairs to specify the following<br />
parameters:<br />
Keyword Definition<br />
SHRINK Shrinking factor with a default<br />
value of 1.0<br />
RSH Sheet resistance per square. The<br />
default is 0.0.<br />
DLR The difference between drawn<br />
length and actual length used for<br />
resistor calculation. The default is<br />
0.0<br />
DEL The difference between drawn<br />
width and actual width or length<br />
used only for capacitors. The<br />
default is 0.0<br />
DW The difference between drawn<br />
width and actual width. The default<br />
is 0.0.<br />
COX Bottom-wall capacitance. The<br />
default is 0.0.<br />
CAPSW Side-wall capacitance. The default<br />
is 0.0.<br />
The value 1.0 is used for SCALM.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
108 Chapter 3 Netlist Compiler and Translators<br />
Default File Example<br />
Figure 1 shows an example of a default file.<br />
ptr 1100 200 P<br />
ntr 500 200 N<br />
PSH 1000 200 P<br />
NSH 500 200 N<br />
PMOS 500 200 P<br />
NMOS 200 200 N<br />
P 500 200 P<br />
N 200 200 N<br />
DIODE1 1.2e-15 0.6e-15 DIODE1<br />
DIODE2 cjo=2.5e-16 cjsw=2.8e-16 exp=0.23 exa=0.55 phi=0.9<br />
php=0.88 vdd=3.5 level=1 DIODE2<br />
Figure 1 Sample default file<br />
The first line translates all PMOS in the SPICE netlist that have<br />
the model name ptr to the model P in the <strong>EPIC</strong> netlist. The first<br />
line also assigns all PMOS in the SPICE netlist a default width<br />
of 11 microns and a length of 2 microns whenever the width and<br />
length are not specified. The second line translates NMOS<br />
named ntr in the original SPICE netlist to the model N in <strong>EPIC</strong><br />
format and assigns them the default width of 5 microns and the<br />
default length of 2 microns.<br />
The next to last line specifies an average area capacitance factor<br />
of 1.2 femtoFarads per square micron and an average junction<br />
periphery capacitance of 0.6 femtoFarads per micron for the<br />
diode named DIODE1 in the SPICE netlist. The last line specifies<br />
all the parameters needed for spice2e to perform an average<br />
calculation for diode model DIODE2. It is recommended that you<br />
use this method for more accurate calculation.
spice2e Command<br />
SPICE Netlist Translator 109<br />
The spice2e command translates a SPICE netlist into an <strong>EPIC</strong><br />
format netlist.<br />
Command Syntax<br />
SYNTAX:<br />
spice2e -i spice_netlist<br />
[-b configfile]<br />
[-c min_cap]<br />
[-d]<br />
[-h]<br />
[–m main_circuit]<br />
[-n]<br />
[-o netlist]<br />
[-f hspice | precise]<br />
[-q number]<br />
[-r]<br />
[-s]<br />
[-u m | f ]<br />
[-R min_res]<br />
[-1]<br />
[-2]<br />
[-A aliasfile] [-D defaultfile] [-M modelfile]<br />
Command-line Options<br />
This section describes the command-line options used with<br />
spice2e.<br />
-b configfile<br />
This option instructs spice2e to translate extracted<br />
capacitor netlist elements (with hierarchical node names)<br />
to configfile with configuration commands, as follows:<br />
node_capacitance hierarchical_node_name value<br />
If there are scale factors or multi-device parameters<br />
specified for a capacitor, they cannot be printed to the<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
110 Chapter 3 Netlist Compiler and Translators<br />
configuration file because the parameters might have to be<br />
re-calculated. The capacitors have to stay in the netlist.<br />
This option also places corresponding configuration<br />
commands of translations of other SPICE commands into<br />
the configfile, such as .PRINT TRAN, V1 1 0 DC, I2 2 gnd,<br />
and PWL. If you do not use this option, these configuration<br />
commands are put in a file called xxx.cfg, where xxx is the<br />
string specified by the -o argument.<br />
-c min_cap<br />
This option specifies the minimum capacitance value for<br />
the <strong>EPIC</strong> netlist. Any capacitor with a capacitance of less<br />
than min_cap is discarded. The min_cap value is in<br />
femtoFarads. This feature is used in conjunction with<br />
automatic layout extraction programs that generate<br />
parasitic capacitance values at every node in the circuit. It<br />
is very useful in saving time and memory when processing<br />
a circuit with a large number of capacitors.<br />
-d This option translates SPICE diodes into <strong>EPIC</strong> diodes.<br />
Only nongeometric diodes can be translated to <strong>EPIC</strong><br />
diodes. Geometric diodes with a level value other than 1 in<br />
the default file can be converted only to capacitors. (For<br />
details, see the section “Diodes” on page 103.) If this option<br />
is not used, spice2e converts SPICE diodes to capacitors,<br />
and some model parameters must be defined in the default<br />
file.<br />
-h This option returns a usage message.<br />
-i spice_netlist<br />
This option specifies the SPICE netlist filename. If this is<br />
not used, spice2e takes the UNIX standard input. This<br />
option replaces the following UNIX syntax:<br />
spice2e < spice_netlist<br />
-m main_circuit<br />
This option specifies the name of a main circuit (name of<br />
top-level subcircuit). spice2e assumes that the top-level<br />
circuit is the main circuit name. This option is required<br />
when translating a netlist output by Dracula’s LPE<br />
program. It strips the definition of the named subcircuit.
SPICE Netlist Translator 111<br />
-o netlist<br />
This option specifies the <strong>EPIC</strong> netlist filename. spice2e<br />
places the converted SPICE netlist into this file. If this<br />
option is not used, spice2e creates UNIX standard output.<br />
This option (with the -i option) replaces the following UNIX<br />
syntax:<br />
spice2e < spice_netlist > netlist<br />
-f hspice | precise<br />
This option specifies the type of SPICE netlist being<br />
translated. Using -p or -f has the same effect. One of the<br />
major differences is in the parameter passing rules. In the<br />
HSPICE-like SPICE netlist, the parameter values of the<br />
instances override the values in the subcircuit definition.<br />
The default is the HSPICE-like SPICE netlist. Other<br />
proprietary SPICE names are allowed and will be included<br />
by special arrangement.<br />
-r This option specifies the order of the width and length<br />
parameters in the transistor description of the SPICE<br />
input file. The default order is width followed by length.<br />
Use this switch to reverse the reading order to length<br />
followed by width.<br />
-u m | f<br />
This option can be used to override the default units for<br />
capacitance, width, and length in the input SPICE netlist.<br />
The -u m option changes the default unit width and length<br />
from micron to meter. The -u f option changes the default<br />
unit for capacitance from farad to femtoFarad. The -u mf<br />
and -u fm options specify both conditions.<br />
A warning is generated if the resulting capacitance value is<br />
too small (less than 0.01 fF), or too large (more than<br />
1x106 fF).<br />
-1 This option translates floating capacitors. A floating<br />
capacitor is one that is not connected to a power node.<br />
Power nodes are those named vdd, VDD, gnd, or GND, and<br />
nodes set or aliased to these names by the aliasfile set and<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
112 Chapter 3 Netlist Compiler and Translators<br />
alias commands. By default, no floating capacitors are<br />
translated.<br />
NOTE: If you are running PathMill, do not specify this option.<br />
-2 This option specifies that capacitors not connected to power<br />
nodes (that is, floating capacitors) are replaced with two<br />
duplicate capacitors to GND. Without a -2 (or -1) option,<br />
these floating capacitors are not translated.<br />
NOTE: The -1 and -2 options are mutually exclusive.<br />
-q number<br />
The number value is an integer from 0 to 2047; the default<br />
is 10. The file spice2e.ignore is created if the SPICE netlist<br />
contains lines not supported (no translation, ignored) by<br />
the current version of spice2e. The first word of these<br />
ignored lines will be printed in the file spice2e.ignore for<br />
reference. The title line and comment lines are also printed<br />
up to the specified number of characters. If number is 0,<br />
the title line and comment lines are not printed. spice2e<br />
automatically removes the file spice2e.ignore if it is empty.<br />
-R min_res<br />
This option, expressed in ohms, specifies the minimum<br />
resistance value for the <strong>EPIC</strong> netlist. Any resistance value<br />
less than min_res is discarded, and the two terminal nodes<br />
are connected with a net statement.<br />
-s This option reverts to the old method of handling the<br />
substrate terminal using configuration commands that<br />
inform the <strong>EPIC</strong> simulator about special substrate bias<br />
conditions. You need to include the configuration file<br />
generated by spice2e as the last configuration file used.<br />
The -x argument is needed for <strong>EPIC</strong> simulations to retrieve<br />
hierarchical names properly if nodes or elements inside a<br />
subcircuit are specified in the configuration file using the<br />
subckt configuration command. The generated
SPICE Netlist Translator 113<br />
configuration file commands are accepted only by TimeMill<br />
and PowerMill.<br />
-n This option prevents the first input line from being<br />
ignored.<br />
-A, -D, -M<br />
These options specify the file or pathnames of the alias file,<br />
default file, or model file, respectively, if their names are<br />
not aliasfile, defaultfile, or modelfile, or they do not reside<br />
in the working directory.<br />
EXAMPLE:<br />
spice2e -i alu.spi -o alu.tm -m incdec16 -c 100<br />
This example translates the SPICE netlist file alu.spi and<br />
generates an <strong>EPIC</strong> netlist file called alu.tm. The definition<br />
for top-level subcircuit incdec16 is removed. Since the –c<br />
option is specified, all capacitance values in the SPICE<br />
netlist of fewer than 100 femtoFarads are ignored.<br />
spice2e uses the default units 10 -12m2 of AS and AD if no<br />
units are explicitly defined. The default unit for PS and PD<br />
is 10-6m. EXAMPLE:<br />
SPICE input:<br />
MO out in 1 1 p2n W=20.00u l=2.00u AD=160.00p<br />
+ AS=160.00p PD=36.00u PS=36.00<br />
aliasfile:<br />
set 1 as vdd<br />
defaultfile:<br />
p2n 10 2 p<br />
This example produces the following entry in the <strong>EPIC</strong><br />
netlist:<br />
(t=p)(en=MO)(ga=in)(so=vdd)(dr=out)(w=2000)<br />
(l=200)(ad=1600000)(as=1600000)(pd=3600)<br />
(ps=3600)<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
114 Chapter 3 Netlist Compiler and Translators<br />
NOTE: The units for as and ad are scaled to (.01 micron) 2 in the <strong>EPIC</strong><br />
netlist. The units for ps and pd are scaled to .01 micron.<br />
Supported SPICE Netlist Syntax<br />
The following list shows the statements, constructs, and SPICE<br />
syntax that spice2e can translate from the original SPICE<br />
netlist to <strong>EPIC</strong> format:<br />
BJT Element QXXXXXXX Junction Diode Element (level<br />
1) DXXXXXXX<br />
Capacitors CXXXXXXX .MACRO statement<br />
.END statement MOSFET Element<br />
MXXXXXXX<br />
.ENDS statement .PARAM statement<br />
.EOM statement .PRINT TRAN/DC (to<br />
configuration file)<br />
.GLOBAL statement Resistors RXXXXXXX<br />
.IC (.DCVOLT) V(XXX)= Subcircuit Calls XYYYYYYY<br />
.INCLUDE statements and<br />
nested INCLUDE statements<br />
.SUBCKT statement<br />
spice2e can also translate independent sources (VXXX, IYYY<br />
DC, PWL, and PULSE types only). These are translated to<br />
proper configuration commands in a configuration file. See the<br />
“spice2e Command” on page 109 for more information about the<br />
configuration file.
SPICE Netlist Translator 115<br />
A special comment can be used in the SPICE netlist to indicate<br />
the signal flow direction for a MOS transistor.<br />
EXAMPLE:<br />
MP000 VDD T Y VDD P W=15U L=4U $*S<br />
MN000 OUT A B VSS N W=10 L=4 $*D<br />
The preceding lines are translated to:<br />
(T=P)(EN=MP000)(GA=T)(SO=Y)(DR=VDD)(W=1500)(L=400)<br />
(DI=S2D);<br />
(T=N)(EN=MN000)(GA=A)(SO=B)(DR=OUT)(W=1000)(L=400)<br />
(DI=D2S);<br />
NOTE: The signal direction information is used only by PathMill.<br />
Ignored SPICE Netlist Syntax<br />
Comments To Indicate<br />
Flow Direction<br />
Definition<br />
$*S Signal flows source to drain<br />
$*D Signal flows drain to source<br />
There are statements, constructs, and SPICE syntax that<br />
spice2e does not translate. If they exist in the SPICE netlist,<br />
they are not converted.<br />
You can check the spice2e.ignore file after running spice2e to<br />
see which lines in the SPICE netlist were not converted. (See the<br />
explanation about the -q number argument in the section<br />
“spice2e Command” on page 109 for information about<br />
controlling the printout of the title and comment lines.) For lines<br />
that were not converted, use <strong>EPIC</strong> configuration commands to<br />
model the effects during an <strong>EPIC</strong> simulation or analysis.<br />
The spice2e.log file is also created. It keeps real-time messages<br />
on the standard error (screen) for reference.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
116 Chapter 3 Netlist Compiler and Translators<br />
The following list shows the statements, constructs, and SPICE<br />
syntax that spice2e ignores.<br />
.AC statement .NOISE statement<br />
.ALTER statement .OP statement<br />
Comment statement .OPTIONS statement<br />
.CONTROL statement .PC statement<br />
.DC statement .PLOT statement<br />
.DCVOLT statement (other .PRINT statement (other than<br />
than "V(XXX)=" syntax) TRAN/DC)<br />
.DEL LIB statement .SENS statement<br />
.DISTO statement .SYSTEM statement<br />
.FOUR statement .TEMP statement<br />
.IC statement (other than<br />
"V(XXX)=" syntax)<br />
.TF statement<br />
JFET & MESFET elements<br />
JXXXXXXX<br />
.TITLE statement<br />
.LIB library call statement .TRAN statement<br />
Linear dependent sources Transmission Lines<br />
GXXXXXXX, EXXXXXXX,<br />
FXXXXXXX, HXXXXXXX<br />
TXXXXXXX<br />
.MODEL statement<br />
.nodeSET statement<br />
.WIDTH statement<br />
SPICE Netlist Syntax to Avoid<br />
The following list contains statements, constructs, and SPICE<br />
syntax that spice2e cannot accept. You must remove the<br />
following syntax from the SPICE netlist before using spice2e.<br />
■ Fowler-Nordheim Diode Elements (HSPICE level 2)<br />
■ BJT Models (NPN and PNP)<br />
■ JFET & MESFET Models<br />
■ MOSFET Model (PMOS & NMOS)
Substrate Terminal Bias<br />
SPICE Netlist Translator 117<br />
spice2e selectively outputs the substrate terminal in syntax<br />
(BU=...) to the <strong>EPIC</strong> netlist if the substrate is not power.<br />
TimeMill and PowerMill automatically handle the bias<br />
conditions.<br />
By default, spice2e assumes the substrate terminal (BULK) of a<br />
MOS is connected to either VDD (for PMOS) or GND (for NMOS).<br />
The following special bias conditions are exceptions:<br />
■ The substrate is connected to an electrical source that is not<br />
a power node (multiple VDD or GND nodes might have<br />
different names). In this case, the MOS has no body bias<br />
effects. (spice2e does not consider the possibility of a<br />
substrate being connected to the electrical drain node for the<br />
normal operation of circuits because forward bias would<br />
occur between the substrate and the source.)<br />
■ The substrate is connected to a node other than a power node<br />
or the electrical source node. In this case, the body bias is<br />
determined by the voltage on the substrate node.<br />
spice2e handles these two special substrate bias conditions by<br />
keeping the substrate terminal using the (BU=...) syntax in the<br />
<strong>EPIC</strong> netlist. TimeMill and PowerMill will handle it correctly.<br />
Alternatively, you can use the older method of generating a<br />
configuration file containing bias commands. See the<br />
information about the -s command-line option in the section<br />
“spice2e Command” on page 109 for details.<br />
NOTE: The generated configuration file commands work only with<br />
TimeMill and PowerMill.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
118 Chapter 3 Netlist Compiler and Translators<br />
EDIF Netlist Translator<br />
This section describes edif2e, the <strong>EPIC</strong> netlist translator, that<br />
converts gate-level and transistor-level netlists from EDIF<br />
format to <strong>EPIC</strong> format. It is normally automatically called by the<br />
<strong>EPIC</strong> netlist compiler for EDIF netlist files, and can also be used<br />
as a stand-alone utility.<br />
The edif2e utility supports a Synopsys structured gate-level<br />
flow for ASIC and custom ICs. Although EDIF can describe<br />
various electronic design data, including behavior, logic models,<br />
netlists, schematics, and mask layout, edif2e translates only<br />
netlist data and ignores all other data. It was specifically<br />
designed to enable Synopsys Design Compiler users to analyze<br />
their designs with <strong>EPIC</strong> tools.<br />
edif2e supports hierarchical netlist descriptions. It can<br />
translate both flat and hierarchical netlists, but it does not<br />
flatten a hierarchical netlist. The hierarchical structure of the<br />
output is the same as the input. See the Electronic Design<br />
Interchange Format Version 200, ANSI/EIA 548 publication<br />
for further information about EDIF.<br />
NOTE: edif2e does not support encryption or library search.<br />
Supported EDIF Constructs<br />
The following EDIF constructs are supported:<br />
■ Version 200 Level 0 (basic, only literal constants permitted)<br />
complexity description<br />
■ Keyword level 0 (no keyword abbreviations)<br />
■ EDIF rename construct<br />
■ Conversion from net-based to terminal-based connectivity<br />
model<br />
■ Hierarchical netlist description
EDIF Netlist Translator 119<br />
■ Direction constructs (input, output, or bidirectional)<br />
■ external construct<br />
■ EDIF’s view-cell library three-layer structure<br />
■ status construct<br />
■ design construct<br />
■ joined construct<br />
■ parameter and parameterAssign constructs<br />
Unsupported EDIF Constructs<br />
edif2e does not support the following EDIF constructs:<br />
■ simulate construct<br />
■ timing construct<br />
■ logic modeling and all related constructs<br />
■ mustJoined, weakJoined, permutable, and<br />
nonPermutable constructs<br />
■ criticality construct<br />
■ netDelay and portDelay constructs<br />
■ dcFaninLoad, dcFanoutLoad, dcMaxFanin,<br />
dcMaxFanout, and acLoad constructs<br />
■ unused attribute<br />
■ portImplementation construct<br />
■ figure construct<br />
■ Global net<br />
■ globalPortRef construct<br />
■ array, portBundle and netBundle constructs to group<br />
ports and nets<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
120 Chapter 3 Netlist Compiler and Translators<br />
edif2e Command<br />
■ RIPPER cell<br />
■ EDIF subnets and tie cells<br />
■ scale construct<br />
■ All userData constructs<br />
The edif2e command translates gate-level and transistor-level<br />
netlists from EDIF format to <strong>EPIC</strong> format.<br />
SYNTAX:<br />
edif2e -i edif_file -o epic_file<br />
[-h]<br />
[-m prop_name1 prop_name2 ...]<br />
[-p]<br />
[-v]<br />
[-b]<br />
[-m]<br />
[-r]<br />
[-c]<br />
[-e]<br />
Command-line Options<br />
The following command-line options can be used with edif2e.<br />
-i edif_file<br />
Specifies input netlist files in EDIF format. The default is<br />
UNIX standard input.<br />
-o epic_file<br />
Specifies the netlist file that will be created in <strong>EPIC</strong><br />
format. The default is UNIX standard output.
-h<br />
Provides command-line help.<br />
EDIF Netlist Translator 121<br />
-m prop_name1 prop_name2<br />
Specifies properties to be used as parameters.<br />
-p Generates an <strong>EPIC</strong> netlist without port mapping.<br />
-v Verbose.<br />
-b Generates an <strong>EPIC</strong> netlist with all port direction bt<br />
(INOUT).<br />
-r Renames ports, instances, and nets containing the rename<br />
construct in the EDIF file.<br />
EXAMPLE:<br />
edif2e -i edif_file -o epic_file -r<br />
This example shows how to use the rename construct (-r).<br />
-c Preserves the case in the netlist.<br />
-e Includes in the character set all special characters<br />
documented in EDIF version 2.00.<br />
DESCRIPTION:<br />
The EDIF design structure is translated to the <strong>EPIC</strong> netlist top<br />
level. The original EDIF design structure is:<br />
(design design_name (cellRef cell_name<br />
(libraryRef library_name))),<br />
The <strong>EPIC</strong> netlist top level is:<br />
(ef=cell_name) (en=design_name) (it=...) (ot=...)(bt=...)<br />
In the EDIF rename command (rename edif_id new_name),<br />
the <strong>EPIC</strong> netlist takes edif_id as the only option. edif2e does not<br />
replace the edif_id with the new_name. The EDIF identifier is<br />
used as cell, net, instance names, and so on. EDIF identifiers are<br />
not case-sensitive. edif2e translations put all identifiers in<br />
uppercase.<br />
edif2e supports the parameter, parameterAssign, and<br />
property constructs. The property construct allows you to<br />
specify properties to be treated as parameters. To do this, you<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
122 Chapter 3 Netlist Compiler and Translators<br />
must use the -m option in the edif2e command line. Then you<br />
need to define a cell that maps the EDIF leaf cell information to<br />
<strong>EPIC</strong> primary elements. (See the cell example that follows.) Use<br />
the result of the edif2e run and the defined cell as <strong>EPIC</strong><br />
simulator input.<br />
EXAMPLE:<br />
(subckt=NFET) (bt=D,G,S,B)(pr=WF,LF) {<br />
(t=nfet)(en=nt)(ga=G)(so=S)(dr=D)(bu=B)<br />
(w=WF)(l=LF);}<br />
(subckt=PFET) (bt=D,G,S,B)(pr=WF,LF) {<br />
(t=pfet)(en=nt)(ga=G)(so=S)(dr=D)(bu=B)<br />
(w=WF)(l=LF);}
EDIF Netlist Translator 123<br />
Set the Synopsys edifout variable as shown in Figure 2.<br />
edifout_array_member_naming_style "%s[%d]"<br />
edifout_array_range_naming_style "%s[%d:%d]<br />
edifout_dc_script_flag ""<br />
edifout_design_name ""<br />
edifout_designs_library_name "DESIGNS"<br />
edifout_display_instance_names "false"<br />
edifout_display_net_names "false"<br />
edifout_external "false"<br />
edifout_ground_name "__logic_0__"<br />
edifout_ground_net_name ""<br />
edifout_ground_net_property_name "CP_GROUND"<br />
edifout_ground_net_property_value "GND"<br />
edifout_ground_pin_name "__logic_0_pin__"<br />
edifout_instance_property_name ""<br />
edifout_instantiate_ports "false"<br />
edifout_match_vhdl_names "false"<br />
edifout_merge_libraries "false"<br />
edifout_name_oscs_different_from_ports "false"<br />
edifout_name_rippers_same_as_wires "false"<br />
edifout_netlist_only "true"<br />
edifout_no_array "true"<br />
edifout_numerical_array_members "false"<br />
edifout_pin_direction_in_value ""<br />
edifout_pin_direction_inout_value ""<br />
edifout_pin_direction_out_value ""<br />
edifout_pin_direction_property_name ""<br />
edifout_pin_name_property_name ""<br />
edifout_portinstance_disabled_property_name "VCC"<br />
edifout_portinstance_disabled_property_value"VCC"<br />
edifout_portinstance_property_name ""<br />
edifout_power_and_ground_representation "net"<br />
edifout_power_name "__logic_1__"<br />
edifout_power_net_name ""<br />
edifout_power_net_property_name "CP_POWER"<br />
edifout_power_net_property_value "VCC"<br />
edifout_power_pin_name "__logic_1_pin__"<br />
edifout_skip_port_implementations "false"<br />
edifout_target_system ""<br />
edifout_top_level_symbol "true"<br />
edifout_translate_origin ""<br />
edifout_unused_property_value ""<br />
edifout_write_attributes "false"<br />
edifout_write_constraints "false"<br />
edifout_write_properties_list {}<br />
Figure 2 edif2e variable settings<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
124 Chapter 3 Netlist Compiler and Translators<br />
Verilog Netlist Translator<br />
This section describes vlog2e, the <strong>EPIC</strong> netlist translator that<br />
converts gate-level and transistor-level netlists from Verilog to<br />
<strong>EPIC</strong> netlist format. It is normally automatically called by the<br />
<strong>EPIC</strong> netlist compiler for Verilog netlist files, and can also be<br />
used as a stand-alone utility.<br />
vlog2e supports structural element and construct translation<br />
from the Verilog language to the <strong>EPIC</strong> proprietary netlist<br />
format. The utility recognizes all Verilog constructs and<br />
supports cell-based structural translation. It also supports<br />
certain behavioral constructs that are used as structural<br />
elements such as assign statements.<br />
Notice the following characteristics of vlog2e:<br />
■ vlog2e does not do semantic checking<br />
If the Verilog file has semantic errors, such as an undefined<br />
bus, vlog2e will probably generate incorrect output and not<br />
generate any error messages. It is very important that you<br />
run the Verilog netlists through a full-blown Verilog<br />
compiler, such as VCS, before using vlog2e.<br />
■ vlog2e generates 2e instance names for gates when no<br />
instance name is given in the source Verilog file<br />
■ vlog2e supports port-map-by-name<br />
EXAMPLE:<br />
module RAM(ADDR, DATA, ENB, RD, WR);<br />
input ADDR, ENB, RD, WR;<br />
inout DATA;<br />
endmodule<br />
module BRD;<br />
RAM bnk0(.ADDR(addr_bus), .ENB(enable0),<br />
.RD(read),<br />
.DATA(data_bus), .WR(write));<br />
RAM bnk1(.ADDR(addr_bus),
Verilog Netlist Translator 125<br />
.ENB(enable1),.WR(write),<br />
.DATA(data_bus), .RD(read));<br />
RAM bnk2(.ADDR(addr_bus), .ENB(enable2),<br />
.RD(read),<br />
.DATA(data_bus), .WR(write));<br />
RAM bnk3(.DATA(data_bus), .ENB(enable3),<br />
.RD(read),<br />
.ADDR(addr_bus), .WR(write));<br />
CPU (addr_bus, data_bus, clock, int_vec);<br />
endmodule<br />
This is translated to:<br />
(subckt=BRD)<br />
{<br />
(ef=RAM)(en=bnk0)(bt=ADDR(addr_bus),<br />
ENB(enable0),<br />
RD(read), DATA(data_bus), WR(write));<br />
(ef=RAM)(en=bnk1)(bt=ADDR(addr_bus),<br />
ENB(enable1),<br />
WR(write), DATA(data_bus), RD(read));<br />
(ef=RAM)(en=bnk2)(bt=ADDR(addr_bus),<br />
ENB(enable2),<br />
RD(read), DATA(data_bus), WR(write));<br />
(ef=RAM)(en=bnk3)(bt=DATA(data_bus),<br />
ENB(enable3),<br />
RD(read), ADDR(addr_bus), WR(write));<br />
(ef=CPU)(en=v2e_0)(bt=addr_bus, data_bus, clock,<br />
int_vec);<br />
}<br />
(subckt=RAM)(bt=ADDR, DATA, ENB, RD, WR)<br />
{<br />
}<br />
■ vlog2e supports concatenation on ports<br />
EXAMPLE:<br />
module concat;<br />
foo I4({a[1], b[1]}, c);<br />
foo I0(.A({a[1], b[1]}), .D(c));<br />
endmodule<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
126 Chapter 3 Netlist Compiler and Translators<br />
This is translated to:<br />
(subckt=concat)<br />
{<br />
(ef=foo)(en=I4)(bt=a[1], b[1], c);<br />
(ef=foo)(en=I0)(bt=A(a[1], b[1]), D(c));<br />
}<br />
■ Supply nets are translated to constant drive functions<br />
EXAMPLE:<br />
module supplies;<br />
supply0 a, b, c;<br />
supply1 D;<br />
AND4 (Y, a, b, c, D);<br />
endmodule<br />
This is translated to:<br />
(subckt=supplies)<br />
{<br />
(is=zero)(en=supplies_0_0)(ot=a, b, c);<br />
(is=one)(en=supplies_1_1)(ot=D);<br />
(ef=AND4)(en=v2e_0)(bt=Y, a, b, c, D);<br />
}<br />
■ vlog2e supports single-bit expressions with a value of 0 or 1,<br />
and bit-expressions with lengths greater than 1<br />
EXAMPLE 1:<br />
foo (.a(1'b0), .b(1'b1));<br />
This is translated to:<br />
(ef=foo)(en=v2e_1)(bt=a(GND), b(VDD));<br />
EXAMPLE 2:<br />
module mod1;<br />
mod2 I1(8’b00100101);<br />
endmodule<br />
module mod2(a);<br />
input [7:0] a;<br />
endmodule
This is translated to:<br />
Verilog Netlist Translator 127<br />
(subckt=mod1)<br />
{<br />
(ef=mod2)(en=I1)(bt=GND,GND,VDD,GND,GND,VDD,GND,V<br />
DD);<br />
}<br />
(subckt=mod2)(bt=a[7-0])<br />
{<br />
}<br />
■ vlog2e handles net assignments and bus assignments<br />
EXAMPLE 1:<br />
assign n1 = a;<br />
This is translated to:<br />
(net=n1)(nn=a);<br />
EXAMPLE 2:<br />
module mod1;<br />
wire [7:0] a, b;<br />
assign a = b;<br />
endmodule<br />
This is translated to:<br />
(subckt=mod1)<br />
{<br />
(net=a[0])(nn=b[0]);<br />
(net=a[1])(nn=b[1]);<br />
(net=a[2])(nn=b[2]);<br />
(net=a[3])(nn=b[3]);<br />
(net=a[4])(nn=b[4]);<br />
(net=a[5])(nn=b[5]);<br />
(net=a[6])(nn=b[6]);<br />
(net=a[7])(nn=b[7]);<br />
}<br />
■ vlog2e re-maps escaped identifiers if you select the -n option<br />
EXAMPLE:<br />
module escape;<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
128 Chapter 3 Netlist Compiler and Translators<br />
FOO (\mul_11/n1002, \mul_11/ab[15][2]);<br />
endmodule<br />
This is translated to:<br />
(subckt=escape)<br />
{<br />
(ef=FOO)(en=v2e_0)(bt=_mul_11_n1002,<br />
_mul_11_ab_15__2_);<br />
}<br />
The vlog2e utility does not support the following:<br />
■ logic gate, MOS transistor, or UDP translations<br />
■ translation of expression on ports<br />
■ translation of parameter passing (ignored)<br />
■ translation of dynamic bit/part selection<br />
■ translation of opening or closing square brackets ([and]) and<br />
the leading backslash (\) will be skipped<br />
vlog2e generates two files: the .ignore file and the .xrf file. The<br />
.ignore file contains a list of the parameters and user-defined<br />
primitives that were ignored by vlog2e. The .xrf file contains a<br />
list of names that were converted by vlog2e.
vlog2e Command<br />
Verilog Netlist Translator 129<br />
The vlog2e command performs structural element and construct<br />
translation from the Verilog language to the <strong>EPIC</strong> proprietary<br />
netlist format.<br />
SYNTAX:<br />
vlog2e -i in_file(s) -o out_file<br />
-t [name]<br />
[-h]<br />
[--version]<br />
[-b]<br />
[-n]<br />
Command-line Options<br />
The following command-line options can be used with vlog2e.<br />
-i in_file | files...<br />
Input filename, or a list of input filenames.<br />
-o out_file<br />
Output filename.<br />
-t [name]<br />
Keeps the port type instead of treating all ports as<br />
bidirectional. Specifying a module name is optional.<br />
-h<br />
Displays help.<br />
--version<br />
Prints version number.<br />
-b “”<br />
Controls vlog2e output. The value is a three-character<br />
string specifying the three characters used in bus notation.<br />
The default value is “[-]”.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
130 Chapter 3 Netlist Compiler and Translators<br />
When vlog2e is used as a stand-alone tool, the -b option<br />
specifies the characters that will be used when Verilog bus<br />
notation is translated into the <strong>EPIC</strong> netlist format.<br />
NOTE: The -b option is ignored if it is added to control options.<br />
-n<br />
If you have an escaped identifier in the Verilog source that<br />
looks like a bus, you need to use the bus_notation option<br />
to change Verilog bus notation syntax to avoid name<br />
conflicts. For example, by default, the Verilog escaped<br />
identifier is translated from “\a[5]” to “a[5]”; so if you<br />
have a verilog bus with the name “a[5]”, a name conflict<br />
results.<br />
You can use either the -b option or the bus_notation<br />
control option to assign bus notation syntax that will<br />
prevent name conflicts.<br />
Reverts netlist notation to version 3.x syntax. In 3.x, any<br />
nonalphanumeric characters were mapped to an<br />
underscore.<br />
When vlog2e is run, a vlog2e.xrf file is created. This file<br />
maps the original Verilog identifiers to the translated <strong>EPIC</strong><br />
identifiers.<br />
The following table shows ASCII character mapping.<br />
ASCII Mapping ASCII Code Ranges (0 -127)<br />
Codes Not Allowed 0 (null character)<br />
Codes Causing Termination of<br />
Escaped Identifiers<br />
8-10, 32<br />
Codes Mapped to Underscore 1-7, 11-31, 33-47, 58-64, 92,<br />
94, 96, 123-127<br />
Codes Not Mapped 48-57, 65-91, 93, 95, 97-122
The Ecrypt Utility<br />
The Ecrypt Utility 131<br />
The following table shows the result of all possible combinations<br />
of options.<br />
No output filename -o out_file<br />
No input files stdin → stdout stdin → out_file<br />
-i in_file in_file → stdout in_file → out_file<br />
List For each infile in the<br />
list:<br />
in_file→infile.en<br />
List → out_file<br />
There are many useful applications for the option combinations.<br />
For example, to translate a set of design modules, each of which<br />
is contained in a separate file, provide a list of the filenames. A<br />
set of translated files with an .en extension is produced.<br />
The ecrypt utility encrypts netlist files. The <strong>EPIC</strong> netlist<br />
compiler automatically detects and compiles encrypted netlist<br />
files, eliminating the need to decrypt these files first before<br />
running simulation.<br />
There are two levels of encryption supported by this utility:<br />
■ A first-level encryption, for which only the ecrypt utility is<br />
needed<br />
■ A second-level encryption, for which you provide an<br />
additional internally-defined decryption utility in addition to<br />
the ecrypt utility<br />
NOTE: There is no decryption utility provided with the ecrypt utility, so<br />
exercise caution when deleting your original netlist files.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
132 Chapter 3 Netlist Compiler and Translators<br />
Level-One Encryption<br />
Encrypted files can be further compressed using the gzip/<br />
compress utility. The final netlist files will have the .eef.gz,<br />
.eef.Z, .cef.gz, or .cef.Z extensions.<br />
With a level-one encryption, the ecrypt utility produces new<br />
encrypted files with a .eef filename extension. The original<br />
netlist files are not deleted.<br />
Command Syntax for Level-One Encryption<br />
Level-Two Encryption<br />
ecrypt -i filename1 [filename2 ...]<br />
EXAMPLE:<br />
ecrypt -i Test.spi<br />
This example encrypts the Test.spi netlist file. The resulting<br />
encrypted output filename is Test.spi.eef.<br />
With level-two encryption, the level-two utility receives an<br />
encrypted netlist file and produces level-two encrypted netlist<br />
files with a .cef extension. Use this level of encryption when you<br />
want to use the extra protection provided by your own encryption<br />
utility.<br />
Command Syntax for Two-Level Encryption<br />
ecrypt -l 2 -i filename1 [filename2 ...]<br />
Syntax Part Definition<br />
ecrypt Encryption utility<br />
-l 2 Level-two encryption<br />
-i filename Input file(s) to be encrypted
The Ecrypt Utility 133<br />
For the two-level encryption to function properly, use the<br />
following steps:<br />
1 Create level-one encrypted files by encrypting your netlist<br />
files with your own encryption utility.<br />
2 Create level-two encrypted files using the ecrypt utility on<br />
the level-one encrypted files.<br />
NOTE: You can remove the original and the level-one encrypted files.<br />
Tutorial: Performing a Level-Two Encryption<br />
The following table lists the files needed for this tutorial.<br />
Filename Description<br />
Test.spi Netlist file<br />
cdcrypt Customer-defined decryption utility<br />
which receives encrypted data from<br />
stdin and produces decrypted output to<br />
stdout<br />
CUS_ENCRYPT -i [original_file] -o Customer-defined encryption utility<br />
[encrypted file]<br />
ecrypt The encryption utility<br />
Procedures<br />
Use the following procedures to produce level-two encrypted<br />
netlist files.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
134 Chapter 3 Netlist Compiler and Translators<br />
Encryption:<br />
1 The method used to create level-one encrypted files varies<br />
with the encryption utility provided by the user. In this case,<br />
you will use the CUS_ENCRYPT encryption utility as<br />
defined previously.<br />
Use the following command to produce a level-one encrypted<br />
netlist file, Test_e.spi, from the original Test.spi<br />
CUS_ENCYPT -i Test.spi -o Test_e.spi<br />
2 Use the following command to produce the level-two<br />
encrypted file, Test_e.spi.cef, from the level-one<br />
encrypted file, Test_e.spi<br />
ecrypt -l 2 -i Test_e.spi<br />
3 Use the following command to remove the original and the<br />
level-one encrypted files<br />
rm Test.spi Test_e.spi<br />
cdcrypt installation:<br />
1 Copy cdcrypt to a directory. In this case, to the ~user/<br />
decrypt_dir directory.<br />
cp cdcrypt ~user/decrypt_dir<br />
2 Add the new directory to the main path, as follows:<br />
set path=(~user/decrypt_dir $path)<br />
3 Use the which command to ensure that you can find the<br />
cdcrypt command.<br />
which cdcrypt
The Ecrypt Utility 135<br />
You can now perform simulations using the Test_e.spi.cef<br />
encrypted netlist file.<br />
NOTE: No encryption method is completely safe. Use of the ecrypt<br />
utility constitutes agreement that you will take full<br />
responsibility for any loss or damage caused by using this utility.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
136 Chapter 3 Netlist Compiler and Translators
Chapter 4<br />
<strong>EPIC</strong> Technology File
138 Chapter 4 <strong>EPIC</strong> Technology File
Overview<br />
Overview 139<br />
<strong>EPIC</strong> technology files are look-up tables used by <strong>EPIC</strong> tools to<br />
calculate timing and power behaviors. The <strong>EPIC</strong> Gentech utility<br />
generates the technology file using SPICE netlists and models to<br />
characterize the CMOS process. All the effects modeled by your<br />
SPICE, such as short channel effect, velocity saturation effect,<br />
and body-bias effect, are taken into account.<br />
You can run Gentech as a stand-alone utility, which requires<br />
creating a control file before generating a technology file.<br />
Alternatively, you can automatically generate a technology file<br />
by simply adding parameters to your SPICE netlist for the<br />
following types of SPICE: HSPICE, SMARTSPICE, and other<br />
proprietary SPICES. Using the automatic technology file<br />
generating feature lets you add new resistor sizes to models<br />
between runs without having to regenerate a technology file.<br />
<strong>EPIC</strong> tools also directly support BSIM1, MOS9 and BSIM3<br />
models, which are automatically enabled if no technology files<br />
are specified.<br />
The TechViewer utility provides you with a graphic<br />
representation of an <strong>EPIC</strong> technology file.<br />
The recommended way to verify the accuracy of the generated<br />
technology files is by using the actual circuits that you might<br />
have, and running these with your SPICE and one of the <strong>EPIC</strong><br />
tools for comparison.<br />
Another possible way to verify circuit accuracy is to use the<br />
<strong>EPIC</strong>Veritech utility. This utility tests very specialized circuits<br />
to detect device-level inaccuracies.<br />
NOTE: Veritech can frequently give false negatives, so it should not be<br />
relied on as a gating factor for technology file accuracy. Running<br />
your own circuit using your SPICE is still the best way to Verify<br />
your technology file.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
140 Chapter 4 <strong>EPIC</strong> Technology File<br />
Automatic Technology File Generation<br />
<strong>EPIC</strong> automatic technology file generation simplifies and<br />
enhances the process of generating technology files. It is<br />
available in TimeMill, PowerMill, PathMill and AMPS for use<br />
with HSPICE, SMARTSPICE, and many proprietary SPICE<br />
types.<br />
Automatic technology file generation offers several advantages<br />
over the conventional process of manually generating technology<br />
files. Technology files are generated directly from a SPICE<br />
netlist without requiring you to run a separate Gentech process.<br />
This also eliminates the need to specify each technology file in<br />
your runscript. It also enables you to add new transistor sizes to<br />
models between runs without having to regenerate the<br />
technology file. This method also creates a technology file (one<br />
file per process model) as an output of the simulation.<br />
The following sections describe command-line options and the<br />
commands you add to the netlist to implement automatic<br />
technology file generation. They also describe the basic process<br />
for using this feature in a typical simulation run. By following<br />
the simulation run example, you should be able to use automatic<br />
technology file generation in most situations.<br />
Specifying Automatic Technology File Generation<br />
The following options can be specified on simulation tool’s<br />
command line to generate a technology file. They are:<br />
-z prefix<br />
This option is used specifically to run the automatic<br />
technology file generation feature. It can accept pathnames<br />
as part of the prefix description, enabling you to specify a<br />
central library directory. This option is used in place of the<br />
-p command line option, which you use to explicitly specify<br />
the technology file used for a simulation.
Modifying the Netlist<br />
EXAMPLE:<br />
Automatic Technology File Generation 141<br />
timemill -n net.sp -c config -o slow125_4v -z<br />
/usr/lib/techfiles/slow125_4v<br />
-r always | never | compare | warning<br />
This option gives you several optional commands related to<br />
regenerating technology files. For example, you can specify<br />
the simulator to issue a warning if the models in the netlist<br />
are different from the models in the technology file.<br />
NOTE: Using this option might not produce the desired<br />
results.<br />
For more information about the command-line syntax, see the<br />
reference guide for the tool you are using.<br />
A SPICE netlist is the only input required to run the automatic<br />
technology file feature. However, there are some modifications<br />
you will need to make to the netlist prior to running a<br />
simulation.<br />
There are several control commands unique to automatic<br />
technology file generation that you can specify in the netlist<br />
following the title line. These <strong>EPIC</strong>-specific commands<br />
customize the technology file generation by assigning the<br />
Gentech parameters to the technology control file. Each<br />
command is preceded by the *epic tech command, as shown in<br />
the following syntax:<br />
*epic tech= “command”<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
142 Chapter 4 <strong>EPIC</strong> Technology File<br />
binary<br />
SYNTAX:<br />
*epic tech=“gentech_parameter binary”<br />
DESCRIPTION:<br />
The binary command causes the generation of a binary file.<br />
NOTE: This command is valid only with TISPICE, HSPICE,<br />
SMARTSPICE, and HPSPICE.<br />
You cannot use this command with the simulation tool’s -A<br />
option.
ody_bias<br />
SYNTAX:<br />
*epic tech=“body_bias 0 vbsend vbsstep”<br />
EXAMPLE:<br />
*epic tech= “body_bias 0 20 0.5”<br />
DESCRIPTION:<br />
Automatic Technology File Generation 143<br />
This command specifies the final vbs or vsb voltage and the<br />
voltage step size for the vbs sweep.<br />
If you have a circuit that will have higher than normal voltages<br />
for body-bias considerations, you might need to use this<br />
command. For example, you could use it if you have a high<br />
voltage charge pump in a flash memory circuit that pumps to 20<br />
volts. This would cause a sweep from 0 to 20 volts in 0.5 volt<br />
steps.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
144 Chapter 4 <strong>EPIC</strong> Technology File<br />
direct<br />
SYNTAX:<br />
*epic tech= “direct”<br />
DESCRIPTION:<br />
This command combines direct and technology file device<br />
models. If your netlist contains this command, direct device<br />
models are used whenever possible. All other models are<br />
expected to be characterized using a technology file. The<br />
supported direct device models are BSIM1, BSIM3, and Phillips<br />
MOS9 (HSPICE level 50).
gentech_parameter<br />
SYNTAX:<br />
Automatic Technology File Generation 145<br />
*epic tech=“gentech_parameter any_command [value]”<br />
EXAMPLE:<br />
*epic tech= “gentech_parameter vgs 0 10 0.2”<br />
DESCRIPTION:<br />
This command sets any specified Gentech parameter command<br />
in the netlist.<br />
NOTE: The Gentech commands vgs, vds, body_bias, and delta_vt are<br />
recognized without the gentech_parameter prefix. For<br />
example, the following two commands are equivalent:<br />
*epic tech=“gentech_parameter vgs 0 10 0.2”<br />
*epic tech=“vgs 0 10 0.2”<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
146 Chapter 4 <strong>EPIC</strong> Technology File<br />
invoke<br />
SYNTAX:<br />
*epic tech= “invoke spice_syntax”<br />
EXAMPLE:<br />
*epic tech=”invoke hspice %input > %output”<br />
DESCRIPTION:<br />
This command specifies the command syntax for running SPICE<br />
in a particular environment. Use the invoke command to<br />
explicitly specify the HSPICE path for the machine on which you<br />
are running the simulation. A softlink, such as ~spice/etc/<br />
etc is not acceptable.<br />
The %input and %output keywords control the command syntax.<br />
You can add preprocessors, postprocessors, and so on, by creating<br />
a script.<br />
EXAMPLE 1:<br />
*epic tech=”invoke /path/name/to/hspice %input ><br />
%output”<br />
This example runs HSPICE via the specified path.<br />
EXAMPLE 2:<br />
*epic tech=“voltage 5”<br />
*epic tech=“invoke /path/name/to/hspice %input ><br />
%output”<br />
This example shows a minimum set of control commands.
lratio<br />
wratio<br />
SYNTAX:<br />
*epic tech=“lratio length_ratio”<br />
*epic tech=“wratio width_ratio”<br />
Automatic Technology File Generation 147<br />
EXAMPLE:<br />
*epic tech=“lratio 1.2”<br />
*epic tech=“wratio 1.2”<br />
These examples multiply the default MOS device channel length<br />
and width by 1.2 or, equally, 20%. This setting allows 20% steps<br />
between MOS channel widths and lengths in the SPICE netlist.<br />
Any device falling between these steps is not be included in the<br />
techfile. During simulation, interpolation is used to determine<br />
channel current for a missing device size (W/L) combination.<br />
DESCRIPTION:<br />
These parameters change the MOS device channel width and<br />
length selection ratio. The default equivalent is setting the<br />
lratio and wratio parameters to 1.01, which generates curves in<br />
the technology file for all transistor sizes in the netlist.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
148 Chapter 4 <strong>EPIC</strong> Technology File<br />
speed<br />
SYNTAX:<br />
*epic tech=“gentech_parameter speed”<br />
DESCRIPTION:<br />
This command increases the speed of technology file generation.<br />
This is not the default, but it is the recommended mode.<br />
NOTE: This command can be used only with HSPICE, SMARTSPICE,<br />
HPSPICE, and Spectre2.
3dtable<br />
SYNTAX:<br />
*epic tech=“3dtable”<br />
Automatic Technology File Generation 149<br />
DESCRIPTION:<br />
This command provides the option of using a 3D ids table for all<br />
devices. It presently works for only the directly-supported<br />
BSIM3 model.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
150 Chapter 4 <strong>EPIC</strong> Technology File<br />
vds<br />
vgs<br />
SYNTAX:<br />
*epic tech=“vds 0 vdsend vdsstep”<br />
*epic tech=“vgs 0 vdsend vdsstep”<br />
EXAMPLE:<br />
*epic tech= “vds 0 5 0.05”<br />
*epic tech=“vgs 0 5 0.05”<br />
DESCRIPTION:<br />
These commands specify the final voltage and the voltage step<br />
size for the sweeps in the technology file. You might want finer<br />
resolution on vgs or vds to minimize interpolation errors. For<br />
example, you might want a 0.05 volt step between vgs values and<br />
vds values for each curve.
voltage<br />
SYNTAX:<br />
*epic tech=“voltage value”<br />
EXAMPLE:<br />
*epic tech=“voltage 5.0”<br />
Automatic Technology File Generation 151<br />
DESCRIPTION:<br />
This command sets the normal *epic tech=“voltage value” vds<br />
voltage for the characteristic curve sweeps. It is required<br />
because it is difficult to automatically determine the supply<br />
voltage in a SPICE netlist. For example, VDD might have a name<br />
other than “VDD” in the netlist.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
152 Chapter 4 <strong>EPIC</strong> Technology File<br />
Running a Simulation<br />
This section describes how to run a simulation with automatic<br />
technology file generation. The example uses the basic<br />
commands you will need to run the feature.<br />
A SPICE netlist is the only input required to run the automatic<br />
technology feature.<br />
Before you start, make sure the SPICE netlist contains only<br />
those components and statements accepted by <strong>EPIC</strong> tools. All<br />
models must be specified in either the netlist, a .lib statement,<br />
or an .include statement. Additionally, the temperature for the<br />
simulation must be specified in the SPICE netlist using the<br />
.temp statement.<br />
Creating a Runscript<br />
The runscript for a simulation using automatic technology file<br />
generation is slightly different from a standard runscript.<br />
EXAMPLE:<br />
timemill -n netlist.spi -c config -t 20000 -z typ<br />
In the example, the -z option also specifies typ as the prefix for<br />
the generated technology files. TimeMill or PowerMill creates<br />
the technology filenames using any prefix you specify, including<br />
pathnames to central technology file directories.<br />
The -p option is not used in the script because -z triggers<br />
TimeMill or PowerMill to automatically create the applicable<br />
technology filenames.<br />
Technology files are created for each unique MOS model name in<br />
the netlist. For example, if the netlist contains MOS models<br />
nchan and pchan, TimeMill or PowerMill will create two<br />
technology files named typ_tech_nchan and typ_tech_pchan.<br />
After you start the runscript, the simulator immediately starts<br />
running Gentech if a technology file is not found. This is
Gentech<br />
Gentech 153<br />
confirmed by messages displayed on the screen. The simulator<br />
executes after the technology files are built. Once the initial<br />
technology files are created, you can use the same runscript in<br />
successive runs, and technology file generation will be skipped.<br />
The Gentech utility generates technology files. Gentech submits<br />
all necessary SPICE runs to characterize the range of CMOS<br />
sizes specified. Gentech currently runs with HSPICE,<br />
SMARTSPICE, SPECTRE, and many proprietary SPICE types.<br />
The Gentech program uses information from a control file that<br />
includes the SPICE models, the range of CMOS sizes, the<br />
operating temperature and supply voltage, and the command<br />
syntax to run your SPICE. Figure 1 shows a diagram that<br />
illustrates the flow of a Gentech run.<br />
A directory called examples/gentech located in the <strong>EPIC</strong> root<br />
directory contains a Gentech example. In that directory:<br />
■ The readme file explains how to use Gentech.<br />
■ The file ctrl.typ.25c_5v is a sample control file.<br />
■ run is a sample runscript.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
154 Chapter 4 <strong>EPIC</strong> Technology File<br />
Control File<br />
Gentech<br />
Technology File<br />
Figure 1 Gentech run flow<br />
Sample Control Files<br />
SPICE Input<br />
SPICE Output<br />
SPICE<br />
Several examples of Gentech control files are provided here to<br />
help you start running Gentech with limited reference to the<br />
details given in later sections. A percent sign (%) starts a new<br />
section of the control file.<br />
HSPICE Example<br />
Figure 2 shows an example of a Gentech control file for HSPICE.<br />
For all other SPICE types, see the section “Example of Other<br />
SPICE Types” on page 156.
%lib<br />
.lib "/cmos/model_file" nom<br />
.lib ’/cmos/model_file’ wcs<br />
.inc ’include_file’<br />
%model<br />
.model nch nmos<br />
.model pch pmos<br />
%parameters<br />
NW 1.6 4 10 100 400<br />
N_LENGTH 0.35<br />
NW1 10<br />
N_LENGTH1 0.5 1 8<br />
PW 1.6 5 50 300 400<br />
P_LENGTH 0.35<br />
PW1 2 10<br />
P_LENGTH1 0.5 1.2 5 8<br />
vds 0 2.7 0.3<br />
vgs 0 2.7 0.3<br />
body_bias 0.4 0.8 1.2 1.6 2<br />
speed<br />
%corner<br />
temperature 85<br />
voltage 2.7<br />
%invoke<br />
/usr/local/meta/h93/sun4/hspice %input > %output<br />
Figure 2 Example of Gentech control file for HSPICE<br />
Gentech 155<br />
Notice the use of %lib and %model in this example. Several<br />
library files and an include file are specified in the %lib section<br />
using HSPICE .lib and .inc commands. You must then specify<br />
the model names for NMOS and PMOS in the %model section, to<br />
clarify which one to use if many model names exist in your<br />
library files. When several model sections with names such as<br />
nch.1 and nch.2 or pch.1 and pch.2 are in the library files to<br />
model the same NMOS and PMOS process, but correspond to<br />
different size ranges by the model parameters lmin, lmax,<br />
wmin, and wmax, specify the model root name nch and pch in<br />
the %model section, as shown in this example. HSPICE will pick<br />
up the correct model extension names.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
156 Chapter 4 <strong>EPIC</strong> Technology File<br />
NOTE: The same control file can be used for SMARTSPICE and some<br />
proprietary SPICE types. For SMARTSPICE, add the following<br />
lines:<br />
% option<br />
scale=1u epic<br />
After the control file is created, run Gentech with HSPICE on the<br />
control file example using the following command line:<br />
$gentech -c ctrl.wcs.85c_2.7v.hsp -f hspice -t\<br />
tech.wcs.85c_2.7v.hsp -q<br />
When Gentech is finished, you can use your SPICE on your<br />
sample design and the <strong>EPIC</strong> tool with the generated tenchology<br />
file on your sample design and compare the output to check the<br />
accureacy of the generated technology file.<br />
Example of Other SPICE Types<br />
You should run Gentech with the -q option for HSPICE,<br />
SMARTSPICE, and some proprietary SPICE types (see “HSPICE<br />
Example” on page 154).<br />
For other SPICE types, you need to provide the following values<br />
in the %parameters section:<br />
■ ldiff and wdiff values<br />
■ lmlt and wmlt values if they are not equal to 1<br />
■ rsh values if they are not zero when nrd and nrs values are<br />
used in your SPICE netlists, or your SPICE defaults nrd and<br />
nrs are non-zero values<br />
■ ds_length values if they are used to calculate default nrd<br />
and nrs values or any of the ad, as, pd, and ps values<br />
Figure 3 shows an example of a Gentech control file for<br />
SPECTRE. In general, for all SPICE types other than HSPICE,<br />
the control file format follows this example except for using the<br />
%lib section. In this example, the NMOS and PMOS models are
Gentech 157<br />
listed directly in the %model section and the %lib section is not<br />
used.<br />
$ cat ctrl.27c_5v.spe<br />
%model<br />
model enmos bsim1 type=n \<br />
tox=3.0e-08 dl=0.24 dw=-0.10 rsh=55.0 \<br />
cgdo=360e-12 cgso=360e-12 cgbo=0.0 cj=550e-06 \<br />
mj=0.5 pb=0.7 cjsw=500e-12 mjsw=0.43 js=2.0e-06<br />
model epmos bsim1 type=p \<br />
tox=3.0e-08 dl=0.08 dw=0.10 rsh=75.0 \<br />
cgdo=360e-12 cgso=360e-12 cgbo=0.0 cj=540e-06 \<br />
mj=0.5 pb=0.7 cjsw=600e-12 mjsw=0.53 js=10.0e-06<br />
%parameters<br />
new_format<br />
model_alias enmos n<br />
model_alias epmos p<br />
body_bias 0.5 1 1.5 2 3<br />
NW 5 300<br />
PW 5 150<br />
N_LENGTH 1<br />
P_LENGTH 1<br />
vgs 0 5 0.5<br />
vds 0 5 0.5<br />
ldiff 0.12 0.04<br />
wdiff -0.05 0.05<br />
rsh 55 75<br />
ds_length 2.67<br />
%corner<br />
temperature 27<br />
voltage 5<br />
%invoke<br />
/spectre/spectre -f nutascii -r %output %input<br />
Figure 3 Gentech control file example for SPECTRE<br />
The new_format command in the %parameters section is for<br />
SPECTRE only and is required if your version of SPECTRE is<br />
newer than version cds43. The command syntax shown in the<br />
%invoke section should be used to start SPECTRE, but the<br />
pathname to your SPECTRE may be different.<br />
The command to run Gentech is:<br />
$gentech -c ctrl.27c_5v.spe -f spectre -t tech.27c_5v.spe<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
158 Chapter 4 <strong>EPIC</strong> Technology File<br />
Gentech Control File<br />
The models used in this sample control file are the SPECTRE<br />
native models. If the SPICE2 models are used, use -f spectre2<br />
instead of -f spectre to run Gentech with SPECTRE.<br />
The control file contents are briefly explained using comments in<br />
the above example. Further details can be found in the next<br />
section.<br />
This section describes details of the Gentech control file. The<br />
control file is divided into six sections. Each section starts with a<br />
percent sign (%) and a keyword at the beginning of the line. The<br />
sections are:<br />
■ Section 1 - %lib<br />
■ Section 2 - %model<br />
■ Section 3 - %parameters<br />
■ Section 4 - %corner<br />
■ Section 5 - %invoke<br />
■ Section 6 - %options<br />
■ Section 7 - %diode<br />
Sections 1 through 4 are required; sections 5, 6 and 7 are<br />
optional. Each section can be used only once in the control file<br />
and can appear in random order. The semi-colon (;) is the<br />
comment character for this file.<br />
Section 1 - %lib<br />
This section is required when you specify SPICE model files,<br />
include files, or any other lines needed in SPICE runs executed<br />
by Gentech. All lines of text in the %lib section are included in<br />
the SPICE netlists.<br />
When model files are specified, you must also provide the model<br />
names in the %model section. Otherwise, Gentech will not know<br />
which model names to use. For HSPICE, if a common model root<br />
name is used in model files, HSPICE will select a proper section<br />
of model with the root name and extension name based on MOS
Gentech 159<br />
width and length. In the following HSPICE example, proper<br />
models will be selected with model names tn.xxx or tp.yyy, based<br />
on width and length from the file mylibrary.lib inside the skew<br />
entry tntp, and from the file secondlib.lib. Here, xxx and yyy<br />
represent extension names which are proper character strings.<br />
EXAMPLE:<br />
%lib<br />
.lib ’mylibrary.lib’ tntp<br />
.inc "secondlib.lib"<br />
...<br />
%model<br />
.model tn nmos<br />
.model tp pmos<br />
%parameters<br />
...<br />
Section 2 - %model<br />
This section is mandatory and includes MOS models for SPICE.<br />
One NMOS model and one PMOS model can be listed here if the<br />
%lib section is not used. You can specify both models, but both<br />
are not needed if the sizes for only n or p are specified in the<br />
%parameters section. The dummy model is not needed when<br />
building a separate technology file for depletion NMOS.<br />
If you have models of NMOS and PMOS for different size ranges,<br />
but with the same root model names, you can use the %lib<br />
section to specify model files instead of a single model for NMOS<br />
and PMOS. But, you must specify the model names here using<br />
the syntax .model name [n|p]mos.<br />
EXAMPLE:<br />
%model<br />
.model n2n nmos<br />
.model p2n pmos<br />
%lib<br />
.include "model_file"<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
160 Chapter 4 <strong>EPIC</strong> Technology File<br />
One technology file can have only one NMOS and one PMOS<br />
model name, and one temperature and voltage condition. If you<br />
have multiple NMOS or PMOS models, see the section “Using<br />
Multiple Technology Files” on page 204.<br />
Section 3 - %parameters<br />
This section sets up geometric, electrical, model, and<br />
performance parameters. There are also parameters that help<br />
set up the format of the resulting technology file. The following<br />
table includes all the commands.<br />
Command Definition Comments<br />
nw (or n_width)<br />
nl or n_length)<br />
pw (or p_width)<br />
pl (or p_length)<br />
pn_ratio<br />
ldiff<br />
wdiff<br />
lmlt (or l_scale)<br />
wmlt (or w_scale)<br />
mlt (or wl_scale)<br />
vgs<br />
vds<br />
Specifies MOS size<br />
combinations in μm.<br />
Specifies lateral diffusion<br />
values in μm.<br />
■ Mandatory, but n or p<br />
sizes may be omitted.<br />
■ pn_ratio is not<br />
recommended if it does<br />
not specify the exact p<br />
widths.<br />
■ Allows nw, nw1, nw2,...,<br />
up to nw199; similar for<br />
pw and [n|p]_l.<br />
Mandatory for almost all<br />
SPICE types if -q option is<br />
not specified.<br />
Specifies scaling if not 1. Mandatory for all SPICE<br />
types if -q option is not<br />
specified.<br />
Specifies ids table voltage<br />
ranges.<br />
body_bias Specifies sampling voltages of<br />
vbs.<br />
Beginning value should be<br />
0. Ending value should be<br />
max |vdd-vss and divisible<br />
by the increment value.<br />
See the description of<br />
body_bias on page 174.
Command Definition Comments<br />
model_alias Maps SPICE model names to<br />
names (t=..) in <strong>EPIC</strong> netlists,<br />
if they are different.<br />
Gentech 161<br />
This is copied to the<br />
technology file so you can<br />
edit the entry without<br />
using this command in the<br />
control file.<br />
ds_length Default d/s extension length. ■ This is copied to the<br />
technology file so you can<br />
edit the entry without<br />
using this command in<br />
the control file.<br />
rsh Sheet resistance.<br />
■ Not needed if -q option is<br />
specified.<br />
■ This is copied to the<br />
technology file so you can<br />
edit the entry without<br />
using this command in<br />
the control file.<br />
no_nrd_nrs If RSDW model parameter is<br />
used.<br />
nrd_nrs_caps Improves the calculation of<br />
capacitance when rsh is large.<br />
new_format Specifies that input output<br />
format is new.<br />
■ Not needed for HSPICE<br />
unless you want to<br />
correct values found by<br />
Gentech.<br />
Only for one proprietary<br />
SPICE.<br />
Only for one proprietary<br />
SPICE.<br />
Only needed for SPECTRE<br />
version cds43 or newer.<br />
cjgate Specifies model value cjgate. Only mandatory for<br />
HSPICE acm 3 if the -q<br />
option is not specified.<br />
cg<br />
cov<br />
cja<br />
cjsw<br />
Overwrites average<br />
capacitances found by<br />
Gentech if the -q option is not<br />
specified.<br />
cg and cov are mandatory<br />
to provide cgdo values for<br />
acm 1.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
162 Chapter 4 <strong>EPIC</strong> Technology File<br />
Command Definition Comments<br />
tox<br />
cox<br />
cgdo<br />
cgso<br />
cgbo<br />
Overwrites entries used by<br />
TimeMill and PowerMill’s<br />
acc_branch configuration<br />
command.<br />
Same effect as hand-editing<br />
the entries.<br />
delta_vt Model subthreshold currents. Simulations will be slowed<br />
down.<br />
vto Specifies model value vto. Not needed except for<br />
SPECTRE levels 4, 5, 6.<br />
case Controls SPICE file formats in<br />
upper- or lowercase.<br />
unit_wl<br />
unit_adas<br />
unit_pdps<br />
unit in w= and l=<br />
unit in ad= and pd=<br />
unit in pd= and ps=<br />
If there are no characters<br />
in the commands unit_wl,<br />
unit_adas, or unit_pdps,<br />
there will be no unit<br />
character in the SPICE<br />
input file generated by<br />
Gentech.<br />
wd Default WD parameter. Allows the extracted value<br />
to be overridden. Works<br />
only with HSPICE.<br />
speed Increases the speed with<br />
which the technology file is<br />
generated.<br />
binary Creates a binary technology<br />
file, reducing the amount of<br />
required disk space.<br />
Works with HSPICE,<br />
SMARTSPICE, HPSPICE,<br />
and Sprectre2.<br />
Works with TISPICE,<br />
HSPICE, SMARTSPICE,<br />
and HPSPICE.<br />
The model_alias, rsh and ds_length commands copy their<br />
respective values to the technology files. You do not need to use<br />
them in the control file, but edit these values directly in the<br />
technology files, when needed, without rerunning Gentech.<br />
These values directly affect the functionality and accuracy of the<br />
technology files.
Gentech 163<br />
Use the cg, cov, cja, and cjsw commands carefully and only if<br />
necessary to improve the average capacitance accuracy in the<br />
technology files. The effect of putting these values in the control<br />
file and running Gentech is the same as hand-editing all of the<br />
respective entries directly in the technology file. The cg and cov<br />
commands are required to provide the cgdo model parameters<br />
when the acm value is set to 1.<br />
The tox, cox, cgdo, cgso, and cgbo commands are used to<br />
overwrite the respective entries in the technology files. These<br />
values are needed only if you apply the configuration file<br />
command acc_branch in TimeMill or PowerMill simulations.<br />
The ldiff, wdiff, lmlt, wmlt, rsh, and ds_length commands are<br />
not needed for HSPICE. Instead, Gentech finds these values<br />
automatically and echoes them on the stdout and in the<br />
gentech.log file, as shown in “HSPICE Example” on page 154.<br />
Gentech requires an acm value in the control file. You can still<br />
use these commands to overwrite the result found by Gentech if<br />
it finds the wrong values.<br />
The syntax for each command in the %parameters section<br />
follows.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
164 Chapter 4 <strong>EPIC</strong> Technology File<br />
nw / n_width<br />
pw / p_width<br />
nl / n_length<br />
pl / p_length<br />
SYNTAX:<br />
nw [size_range]<br />
n_width [size_range]<br />
pw [size_range]<br />
p_width [size_range]<br />
DESCRIPTION:<br />
These commands set NMOS or PMOS widths used in<br />
calibrations. Units are in microns. Spaces are used as delimiters<br />
between width values. The maximum value for size range is 199.<br />
SYNTAX:<br />
nl [size_range]<br />
n_length [size_range]<br />
pl [size_range]<br />
p_length [size_range]<br />
DESCRIPTION:<br />
These commands set NMOS or PMOS lengths. Units are in<br />
microns. Ranges of different sizes can be specified in the<br />
%parameters section using the following syntax. The maximum<br />
value for size range is 199.<br />
pw p_width(s)<br />
nw n_width(s)<br />
p_length p_l(s)<br />
n_length n_l(s)<br />
pw1 p_width(s)<br />
nw1 n_width(s)<br />
p_length1 p_l(s)
n_length1 n_l(s)<br />
...<br />
nw199 n_width(s)<br />
n_length199 n_l(s)<br />
Gentech 165<br />
EXAMPLE 1:<br />
nw 1 2 3<br />
n_length 1 2<br />
pw 1 2<br />
p_length 1 1.5<br />
nw1 10 20<br />
n_length1 10<br />
pw1 100<br />
p_length1 5<br />
Example 1 characterizes the following sizes for n (width/length):<br />
1/1, 2/1, 3/1, 1/2, 2/2, 3/2, 10/10, 20/10. The example also<br />
characterizes the following sizes for p: 1/1, 2/1, 1/1.5, 2/1.5, 100/<br />
5.<br />
You can specify ranges beginning with nw, nw1, and so on. The<br />
upper range can extend to nw199. The same is true for pw, nl,<br />
and pl. It’s not necessary to have both n and p sizes specified for<br />
each range. If a pn_ratio is specified, that ratio will be used to<br />
determine the widths of the PMOS, provided no explicit pwn has<br />
been specified.<br />
EXAMPLE 2:<br />
pn_ratio 2<br />
nw 2 4<br />
n_length 1 2<br />
p_length 1 1.5<br />
nw1 10<br />
n_length1 2<br />
pw1 10<br />
p_length1 4<br />
Example 2 characterizes the following MOS sizes for n: 2/1, 4/1,<br />
2/2, 4/2, 10/2. The MOS sizes for p are characterized as follows:<br />
4/1, 8/1, 4/1.5, 8/1.5, 10/4.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
166 Chapter 4 <strong>EPIC</strong> Technology File<br />
If your circuit has several different MOS sizes, you might include<br />
all the sizes in the control file. However, Gentech will each have<br />
to be run at least once, incurring additional time and disk space<br />
for loading huge technology files. If you choose to run Veritech,<br />
you will also have to be run it mulitple times and incur the same<br />
overhead. Instead, you should include all the lengths and just<br />
samples of the widths. This is true for a scalable process since all<br />
the capacitance and ids entries in the technology files are<br />
normalized data.<br />
Because of potential accuracy problems, <strong>EPIC</strong> tools issue a<br />
warning in the .log file if any length in the <strong>EPIC</strong> netlist is not<br />
found in the technology file.
pn_ratio<br />
SYNTAX:<br />
pn_ratio ratio_value<br />
EXAMPLE:<br />
pn_ratio 2<br />
Gentech 167<br />
DESCRIPTION:<br />
This command is used to determine PMOS channel widths if the<br />
pw command is not specified.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
168 Chapter 4 <strong>EPIC</strong> Technology File<br />
acm<br />
SYNTAX:<br />
acm 0 | 1 | 2 | 3<br />
EXAMPLE:<br />
acm 2<br />
DESCRIPTION:<br />
This specifies the acm (area calculation method) value for<br />
diffusion (drain or source to substrate) capacitance. The cg and<br />
cov commands are mandatory when acm is set to 1. The cjgate<br />
command is mandatory when acm is set to 3.<br />
NOTE: If the -q option is specified, you do not need to specify acm,<br />
cjgate, cg, or cov.<br />
Although the HSPICE .options aspec command sets acm to 1,<br />
the acm value in the model lines overwrites it. Therefore, always<br />
take the acm value from the model lines. If acm is not specified<br />
in the model lines, the latest version of HSPICE defaults the<br />
acm value to 0.<br />
This command is mandatory for HSPICE. It is needed for only<br />
one proprietary SPICE type. It sets acm values to 1 if it is an<br />
automod=100 case.
ldiff<br />
wdiff<br />
SYNTAX:<br />
ldiff n_ldiff p_ldiff<br />
wdiff n_wdiff p_wdiff<br />
Gentech 169<br />
EXAMPLE:<br />
ldiff -0.1 -0.15 ; eg ln= 1 μm,ln effective = 1.2μm<br />
; eg lp= 1 μm,lp effective = 1.3μm<br />
wdiff 0.45 0.55 ; eg wn= 4 μm, wn effective =3.1μm<br />
; eg wp= 4 μm, wp effective =2.9μm<br />
DESCRIPTION:<br />
These commands specify the lateral diffusion for MOS lengths<br />
and widths. The effective length and width of each MOS are<br />
calculated as:<br />
Leff = Ldrawn * lmlt - 2 * ldiff<br />
Weff = Wdrawn * wmlt - 2 * wdiff<br />
The values are real numbers in microns. The lateral diffusion<br />
values ldiff and wdiff are not subject to scaling lmlt and<br />
wmlt. This command is not needed for HSPICE unless Gentech<br />
fails to find the accurate ldiff and wdiff values.<br />
NOTE: ld in HSPICE is also called dlat or latd. xl in HSPICE is also<br />
called dl or ldel or dell. xw in HSPICE is also called dw or wdel<br />
or delw.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
170 Chapter 4 <strong>EPIC</strong> Technology File<br />
The ldiff and wdiff values for different SPICE types are listed in<br />
the following table.<br />
SPICE Type Idiff wdiff<br />
SPECTRE level 1, 2, 3 scalm * (ld - xl / 2) scalm * (wd - xw / 2)<br />
SPECTRE<br />
level 4 (bsim1),<br />
5 (bsim2), 10(bsim1_5)<br />
scalm * (dl - xl) / 2 scalm * (dw - xw) / 2<br />
SPECTRE (if Berkeley<br />
SPICE2 models used)<br />
PSPICE<br />
Berkeley SPICE2<br />
Berkeley SPICE3<br />
ld 0
wl_scale /mlt<br />
l_scale / lmlt<br />
w_scale /wmlt<br />
SYNTAX:<br />
wl_scale n_mlt p_mlt<br />
or mlt n_mlt p_mlt<br />
l_scale n_lmlt p_lmlt<br />
or lmlt n_lmlt p_lmlt<br />
w_scale n_wmlt p_wmlt<br />
or wmlt n_wmlt p_wmlt<br />
EXAMPLE 1:<br />
l_scale 0.8<br />
w_scale 0.8<br />
Gentech 171<br />
EXAMPLE 2:<br />
; for HSPICE if a scaling of 0.25 required but not<br />
; specified in HSPICE .model lines:<br />
% parameters<br />
lmlt 0.25<br />
wmlt 0.25<br />
% options<br />
scale=0.25e-6<br />
; HSPICE also requires a unit scaling from meter to<br />
micron<br />
For HSPICE, lmlt and wmlt commands in the %parameters<br />
section are not needed unless Gentech fails to find the correct<br />
values. However, they are still required in the %options section,<br />
if applicable, because the contents of the %options section belong<br />
to the SPICE netlist created by Gentech.<br />
DESCRIPTION:<br />
These commands handle scaled processes. The lmlt and wmlt<br />
values are floating point numbers. If two numbers are supplied,<br />
the first is used for NMOS and the second for PMOS. If only one<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
172 Chapter 4 <strong>EPIC</strong> Technology File<br />
number is supplied, that number applies to both NMOS and<br />
PMOS. The wl_scale and mlt commands scale both the length<br />
and width using the same value.<br />
This is needed for SPICE types other than HSPICE if the scaling<br />
values do not equal 1. This is needed for HSPICE only if Gentech<br />
finds wrong scaling values.<br />
When using a scaled technology file, the pre-scaled sizes should<br />
be used in the Gentech control file and the <strong>EPIC</strong> netlists.<br />
NOTE: These commands are required if scaling is used in the SPICE<br />
.model lines, .options lines, other commands in SPICE library<br />
files, .options, or other commands in actual SPICE netlists. If<br />
scaling is specified in the SPICE .model lines (for example, lmlt<br />
and wmlt values in SPICE models), using lmlt and wmlt<br />
commands in the %parameters section is sufficient. If scaling is<br />
specified in .options or commands other than .model lines,<br />
regardless of whether or not it is in a library file, the lmlt and<br />
wmlt commands in the %parameters section are required, along<br />
with a proper scale parameter in the %options section. This is<br />
because Gentech may create a .options scale=1e-6 line for<br />
unit conversion which overwrites the .options scale=0.25e-<br />
6 line in the SPICE library file. The %options section will then<br />
create a last .options scale=0.25e-6 line in the SPICE<br />
netlist to overwrite again.
vds<br />
vgs<br />
SYNTAX:<br />
vds 0 vde vdi<br />
vgs 0 vge vgi<br />
EXAMPLE 1:<br />
vds 0 6 0.2<br />
vgs 0 6 0.2<br />
EXAMPLE 2:<br />
vds 0 2.7 0.15<br />
vgs 0 2.7 0.15<br />
Gentech 173<br />
DESCRIPTION:<br />
These are the drain-to-source and effective gate-to-source<br />
voltage ranges. Their beginning, ending, and incremental values<br />
are specified for measuring the device currents. Notice that the<br />
effective vgs is defined as the gate to source voltage minus the<br />
threshold voltage. You should choose the incremental values vdi<br />
and vgi so the ending values for vde and vge are their integer<br />
multiples.<br />
The ending values vde and vge must be greater than the voltage<br />
value specified in the %corner section. The voltage value<br />
determines the voltage range used to calculate the average<br />
capacitances. A warning is issued if these voltage values differ<br />
significantly.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
174 Chapter 4 <strong>EPIC</strong> Technology File<br />
body_bias<br />
SYNTAX:<br />
body_bias 0 vbe vbi<br />
EXAMPLE:<br />
body_bias 0 5 0.1<br />
DESCRIPTION:<br />
For HSPICE, SPICE2, and several other SPICE types, you can<br />
use this syntax to specify the range of the sampling voltages with<br />
the ending value vbe and increment value vbi of the source to<br />
substrate reverse bias voltage. This will create a new table data<br />
of threshold voltages in the technology file, and will improve the<br />
simulation accuracy, especially for TimeMill and PowerMill. If<br />
this body_bias command is not specified, the ending voltage vbe<br />
defaults to the ending voltage vde specified in the vds command,<br />
and the increment voltage vbi defaults to 0.1.<br />
In certain cases, the following syntax might be used:<br />
SYNTAX:<br />
body_bias vs1 vs2 vs3 vs4 vs5<br />
EXAMPLE:.<br />
body_bias 0.5 1 1.5 2 3<br />
DESCRIPTION:<br />
This is needed if you want to specify the sampling source to<br />
substrate reverse bias voltages, where threshold voltages are<br />
measured other than the default voltage points of 0.8, 1.2, and 2<br />
volts. When the body_bias command is not used, Gentech<br />
sweeps the vbs values from 0 to voltage using 0.1V increments.<br />
For all SPICE types, a maximum of five sampling voltages can be<br />
specified. The vs values are in volts and must monotonically<br />
increase and not be zero.
model_alias<br />
SYNTAX:<br />
model_alias true_name alias1 alias2 ...<br />
EXAMPLE:(technology file)<br />
model_alias NCH n nmos nch<br />
model_alias TP p<br />
Gentech 175<br />
EXAMPLE:(<strong>EPIC</strong> netlist)<br />
(t=p)(en=p1)(dr=z)(ga=A)(so=vdd)(w=600)(l=80);<br />
(t=n)(en=n1)(dr=z)(ga=A)(so=gnd)(w=300)(l=80);<br />
(t=nch)(en=n2)(dr=z)(ga=A)(so=vdd)(w=300)(l=80);<br />
(t=nmos)(en=n3)(dr=z)(ga=A)(so=vdd)(w=300)(l=80);<br />
Both examples model MOS p1 based on the SPICE model TP and<br />
models MOS n1, n2, and n3 based on the SPICE model NCH.<br />
Aliases p1, n1, n2, and n3 are used in <strong>EPIC</strong> and SPICE netlists.<br />
Model true names TP and NCH appear in SPICE models used in<br />
the Gentech control file and in the generated technology file.<br />
DESCRIPTION:<br />
This maps the true_name used in the SPICE model to the MOS<br />
names in the netlist. You can map multiple MOS names to one<br />
SPICE model name. Each model_alias command is copied to the<br />
technology file. If you have an existing technology file and need<br />
to use this command, you can simply add the command to the<br />
technology file without rerunning Gentech.<br />
The argument true_name is the name in the SPICE model. The<br />
alias arguments are the names in the netlist.<br />
This is only needed if the SPICE model names are different from<br />
the names used in the netlists.<br />
When you are using multiple technology files, be careful to avoid<br />
name mapping conflicts when using this command. See “Using<br />
Multiple Technology Files” on page 204 for more details.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
176 Chapter 4 <strong>EPIC</strong> Technology File<br />
ds_length<br />
SYNTAX:<br />
ds_length diffext<br />
EXAMPLE:<br />
ds_length 2.4<br />
DESCRIPTION:<br />
This command copies only the diffext values to the technology<br />
file. This value is not used by Gentech, even in calculating the<br />
average capacitances. Therefore, the diffext value can be edited<br />
directly in the technology file without rerunning Gentech.<br />
This is needed if any of the ad, as, pd, ps, nrd, and nrs MOS<br />
attributes are not specified in the netlist, and the default value<br />
depends on the diffext value.<br />
The argument diffext is the drain and source extension length.<br />
This dimension is used in conjunction with MOS widths to<br />
determine the default values of the area and perimeter of drain<br />
and source when ad, as, pd and ps are not specified in the<br />
netlists. Some SPICE types also use the diffext value to<br />
determine default nrd and nrs values if they are not specified in<br />
the netlist.
W<br />
Gentech 177<br />
Figure 4 illustrates a MOS transistor cross-section showing<br />
diffext.<br />
source L<br />
gate<br />
Figure 4 MOS transistor cross-section showing difftext<br />
drain<br />
DIFFEXT<br />
Drain Contact<br />
To match HSPICE, diffext should be 2*HDIF when acm is 2 or 3,<br />
and should be 0 if acm is 0 or 1, where HDIF is an HSPICE model<br />
parameter. This command is not needed for HSPICE unless<br />
Gentech fails to find the correct diffext values.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
178 Chapter 4 <strong>EPIC</strong> Technology File<br />
rsh<br />
SYNTAX:<br />
rsh n_rsh p_rsh<br />
EXAMPLE:<br />
rsh 50 75<br />
DESCRIPTION:<br />
This specifies the sheet resistance values in ohms per square<br />
used by the nrd and nrs MOS attributes from the netlist. The nrd<br />
and nrs attributes contain the drain and source resistance<br />
squares.<br />
This is needed when nrd and nrs MOS attributes are used in<br />
SPICE netlists, or when nrd and nrs are not used but SPICE<br />
defaults them to some nonzero value. In the latter case, check<br />
that the calculateNRSH() function in the customize.c file<br />
returns the same values as SPICE. See “Customizing <strong>EPIC</strong><br />
<strong>Tools</strong>” on page 299 for further details.<br />
The values for n_rsh and p_rsh can be obtained from your SPICE<br />
model. These values can be directly edited in the technology file<br />
without rerunning Gentech.<br />
For HSPICE, Gentech will find the proper rsh values with<br />
temperature effects included. You use this command only if<br />
Gentech fails to extract the rsh values correctly.
no_nrd_nrs<br />
SYNTAX:<br />
no_nrd_nrs<br />
EXAMPLE:<br />
no_nrd_nrs<br />
DESCRIPTION:<br />
Gentech 179<br />
This causes Gentech not to use nrd and nrs MOS attributes in<br />
the SPICE runs. Therefore, possible RSDW model parameter<br />
effects can be characterized in the technology files.<br />
This is used by only one proprietary SPICE type, which<br />
sometimes needs to model the RSDW model parameter effect<br />
instead of the rsh model parameter. Use this command only if<br />
your SPICE model contains the RSDW parameter.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
180 Chapter 4 <strong>EPIC</strong> Technology File<br />
nrd_nrs_caps<br />
SYNTAX:<br />
nrd_nrs_caps<br />
EXAMPLE:<br />
nrd_nrs_caps<br />
DESCRIPTION:<br />
This causes Gentech to add small nrd and nrs values in the<br />
SPICE runs when extracting the average capacitances. This<br />
prevents inaccuracies caused by possible large resistance values<br />
from rsh multiplied by nrd or nrs in SPICE models. If you do not<br />
do this, the SPICE .tran results will not settle down, even after<br />
a very long simulation time.<br />
This is used by only one proprietary SPICE type, which has huge<br />
rsh model values, and defaults nrd and nrs to (1), which causes<br />
inaccuracies in extracting average capacitances. If your rsh<br />
values, either by default or in the models, are within several<br />
hundred ohms per square, or if your SPICE defaults nrd and nrs<br />
to zero, you don’t need to use this command.
new_format<br />
SYNTAX:<br />
new_format<br />
EXAMPLE:<br />
new_format<br />
Gentech 181<br />
DESCRIPTION:<br />
This informs Gentech the SPECTRE output format is new. This<br />
is needed only for SPECTRE versions cds43 - ver.4.3.94 or later.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
182 Chapter 4 <strong>EPIC</strong> Technology File<br />
cjgate<br />
SYNTAX:<br />
cjgate n_cjgate p_cjgate<br />
EXAMPLE:<br />
cjgate 3e-10 2.8e-11;cjgate values in SPICE unit F/m<br />
DESCRIPTION:<br />
This is needed only for the HSPICE acm 3 case. It is not needed<br />
if the -q command-line option is specified. Under that condition,<br />
it is mandatory to provide the cjgate model parameters. The<br />
cjate values are in units of F/m, as in HSPICE models.
cg<br />
cov<br />
cja<br />
cjsw<br />
SYNTAX:<br />
cg n_cg p_cg<br />
or cg n|p tox|cox tox|cox<br />
or cg n tox|cox n_tox|n_cox p tox|cox p_tox|p_cox<br />
SYNTAX:<br />
cov n_cov p_cov<br />
or cov n|p cgdo|cgso cgdo<br />
or cov n cgdo|cgso n_cgdo p cgdo|cgso p_cgdo<br />
SYNTAX:<br />
cja n_cja p_cja<br />
or cja n|p cj cjo mj mj pb pb<br />
Gentech 183<br />
or cja n cj n_cjo mj n_mj pb n_pb p cj p_cjo mj p_mj pb p_pb<br />
SYNTAX:<br />
cjsw n_cjsw p_cjsw<br />
or cjsw n|p cjsw cjswo mjsw mjsw pbsw pbsw<br />
or cjsw n cjsw n_cjswo mjsw n_mjsw pbsw n_pbsw p cjsw<br />
p_cjswo mjsw p_mjsw pbsw p_pbsw<br />
The cg command provides the average gate capacitance value.<br />
The cov command provides the SPICE model value cgdo, which<br />
is the gate-to-drain overlap capacitance. <strong>EPIC</strong> assumes cgdo is<br />
equal to cgso, the SPICE model value of gate-to-source overlap<br />
capacitance.<br />
These four commands are used to overwrite the average<br />
capacitance in the technology file when necessary. They<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
184 Chapter 4 <strong>EPIC</strong> Technology File<br />
overwrite the following values in the technology file for all the<br />
MOS devices:<br />
■ the averaged values calculated by Gentech on the gate (sum<br />
of gate-to-source, gate-to-drain, and gate-to-substrate,<br />
excluding the overlap)<br />
■ the overlap (gate-to-drain, gate-to-source overlap)<br />
■ the diffusion junction (drain-to-substrate, source-tosubstrate)<br />
bottom area<br />
■ the diffusion side wall capacitances<br />
These capacitance values appear in the gate_cap and diff_cap<br />
data lines in the technology files.<br />
Adding these commands to the control file and rerunning<br />
Gentech have the same effect as hand-editing the respective<br />
entries in the following data lines in a technology file:<br />
gate_cap model_name nmos|pmos width length cg<br />
diff_cap model_name nmos|pmos width length<br />
cov cja cjsw<br />
Use these commands with care. The cov and cg commands<br />
should be used together. The cja and cjsw commands should also<br />
be used together. Otherwise, you might disturb the overall<br />
capacitance accuracy. These sets of commands are not correlated<br />
to each other. For example, using the cov and cg commands will<br />
not affect the cja and cjsw data entries, which remain as values<br />
calculated by Gentech.<br />
To use these commands, you can provide the necessary model<br />
parameters tox, cox, cgdo, cjo, mj, pb, cjswo, mjsw, pbsw and<br />
let Gentech calculate the average capacitance values using the<br />
following equations. Then all the parameters are in SPICE units:<br />
tox is in m, cox and cjo are in F/m 2 , cgdo and cjswo are in F/m.<br />
If the equations used by your SPICE are different than the<br />
following ones, you may provide the final average capacitance<br />
values directly. If so, the values should be in <strong>EPIC</strong> units: cg and<br />
cja are in fF/10 -16 m 2 , cov and cjsw are in fF/10 -8 m. The
Gentech 185<br />
following calculations and unit conversions are performed by<br />
Gentech when you provide the model parameters. You will have<br />
to do the same unit conversions if you use a different set of<br />
equations when providing the final average values.<br />
If TOX is given in units of meters:<br />
E E sio2<br />
Cg 0.9 o<br />
= ------------------- =<br />
TOX<br />
If COX is given in units of F/m 2 :<br />
(0.1 is used for unit conversion)<br />
The two preceding equations give averaged Cg in required <strong>EPIC</strong><br />
units of fF/10 -16 m 2 . Although cg versus vgs is a quite<br />
complicated function, using the constant value 0.9 to multiply<br />
the maximum value at zero bias is a good approximation for the<br />
average cg value for most applications.<br />
If CGDO is in units of F/m:<br />
This gives averaged Cov in required <strong>EPIC</strong> units of fF/10 -8 m.<br />
Cja and Cjsw are averaged values in the reverse bias vsb voltage<br />
range from zero to VDD.<br />
If Cja is in units of F/m 2 :<br />
3.105 10 12 –<br />
×<br />
--------------------------------<br />
TOX<br />
Cg= 0.9 × 0.1 × Cox= 0.09Cox<br />
Cov 10 7 = × CGDO<br />
PB vdd 1 MJ)<br />
Cja ------------------------------- 1 -------- ⎞<br />
vdd( 1 – MJ)<br />
PB ⎠ – (<br />
=<br />
⎛ +<br />
– 1 ( 0.1 )CJO<br />
⎝<br />
This gives Cja in required <strong>EPIC</strong> units of fF/10 -16 m 2 , where 0.1 is<br />
used for unit conversion.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
186 Chapter 4 <strong>EPIC</strong> Technology File<br />
If Cjsw is in units of F/m:<br />
PBSW<br />
vdd 1 MJSW)<br />
Cjsw ----------------------------------------- 1 ---------------- ⎞<br />
vdd( 1 – MJSW) PBSW⎠<br />
– (<br />
⎛ +<br />
– 1 10<br />
⎝<br />
7<br />
=<br />
( )CJSWO<br />
This gives Cjsw in required <strong>EPIC</strong> units of fF/10 -8 m, where 10 7 is<br />
used for unit conversion.<br />
tox, cox, cgdo, cgso, pb, pbsw, mj, mjsw, cjo, cjswo are SPICE<br />
model parameters. cgso usually equals cgdo. pbsw usually<br />
equals pb if pbsw is not defined.<br />
Notice that a semicolon (;) starts an in-line comment.<br />
EXAMPLE 1:<br />
%parameters<br />
cov n cgdo 2.1e-10 p cgdo 1.9e-10; (cgdo values in<br />
SPICE unit F/m)<br />
;or use the next one<br />
;cov 2.1e-3 1.9e-3<br />
;(cov values in <strong>EPIC</strong> unit fF/1e-8m)<br />
cg n tox 180e-10 p tox 180e-10<br />
;(tox values in SPICE unit m)<br />
;or use either one of the next two<br />
;cg n cox 1.91667e-3 p cox 1.91667e-3<br />
;(cox values in SPICE unit F/m2)<br />
;cg 1.725e-4 1.725e-4<br />
;(cg values in <strong>EPIC</strong> unit fF/1e-16m2)<br />
If there is a need to overwrite the average diffusion capacitances<br />
found by Gentech, use the cja and cjsw commands together.
Gentech 187<br />
EXAMPLE 2:<br />
%parameters<br />
cja n cj 8e-4 mj 0.6 pb 1.02 p cj 6e-4 mj 0.55<br />
pb0.7<br />
;(cj values in SPICE unit F/m2),or use<br />
the next one<br />
;cja 4.22e-5 2.93e-5<br />
;(cja values in <strong>EPIC</strong> unit fF/1e-16m2) cjsw n cjsw<br />
3e-10 mjsw 0.23 pbsw 0.7 p cjsw 1.33e-10<br />
mjsw 0.23 pbsw 0.6<br />
;(cjsw values in SPICE unit F/m),or use the next one<br />
;cjsw 2.19e-3 9.5e-4<br />
;(cjsw values in <strong>EPIC</strong> unit fF/1e-8m)<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
188 Chapter 4 <strong>EPIC</strong> Technology File<br />
tox<br />
cox<br />
cgdo<br />
cgso<br />
cgbo<br />
SYNTAX:<br />
tox n_tox p_tox<br />
cox n_cox p_cox<br />
cgdo n_cgdo p_cgdo<br />
cgso n_cgso p_cgso<br />
cgbo n_cgbo p_cgbo<br />
EXAMPLE:<br />
tox 180e-10 180e-10; (meters, m)<br />
cox 1.92e-3 1.92e-3; (F/m 2 )<br />
cgdo 2.2e-9 2.3e-9; (F/m)<br />
cgso 2.2e-9 2.3e-9; (F/m)<br />
cgbo 0 0; (F/m)<br />
DESCRIPTION:<br />
This data is used by the configuration command acc_branch in<br />
TimeMill or PowerMill simulations. The units are consistent<br />
with SPICE models (therefore, different from the <strong>EPIC</strong> units<br />
used in the technology file), and are shown in the example. Note<br />
that a semicolon (;) starts an in-line comment.<br />
If Gentech fails to include these values from SPICE models in<br />
the technology file, these commands can overwrite respective<br />
data lines in the technology file, and have the same effect as<br />
hand-editing the technology file with these entries.<br />
NOTE: A binary technology file cannot be hand-edited.
delta_vt<br />
SYNTAX:<br />
delta_vt n_delta_vt p_delta_vt<br />
EXAMPLE:<br />
delta_vt -0.5 0.5<br />
NOTE: You should use the values shown in this example.<br />
DESCRIPTION:<br />
Gentech 189<br />
The command delta_vt shifts the original threshold voltage by<br />
the amount specified. The amount of shift you specify should not<br />
be too large.<br />
This command is needed only when you want subthreshold<br />
currents included in the technology files and simulations.<br />
TimeMill and PowerMill simulations will slow down when these<br />
commands are used.<br />
You do not need to specify this command for automatic<br />
technology file generation; the default is used instead.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
190 Chapter 4 <strong>EPIC</strong> Technology File<br />
vto<br />
SYNTAX:<br />
vto n_vto p_vto<br />
EXAMPLE:<br />
vto 0.7 -0.8<br />
This example indicates that the threshold voltage for NMOS is<br />
0.7 volts and the threshold voltage for PMOS is -0.8 volts when<br />
the source to bulk voltage is 0 under the nominal temperature of<br />
your models.<br />
DESCRIPTION:<br />
This command specifies the threshold voltage for MOS with a<br />
zero source-to-bulk voltage at nominal temperature. This is used<br />
to calculate the body-bias effects (the relationship between<br />
threshold voltage and source-substrate bias level) at the<br />
temperature specified in the %corner section.<br />
This is needed only for SPECTRE levels 4 (BSIM1), 5 (BSIM2),<br />
and 10 (BSIM1_5) models.<br />
For any unsupported SPICE type, if the SPICE can do a .OP run<br />
to print the threshold voltages at a specified temperature, this is<br />
not needed and not recommended in your Gentech SPICE runs.<br />
If this command is needed but not provided, Gentech attempts to<br />
read vto directly from the SPICE model. However, that might<br />
not be successful when the files listed in the %lib section are not<br />
readable or vto is not called vto in your model. In those cases,<br />
vto should be constructed by some other parameters. Therefore,<br />
you should specify the vto parameter when necessary.<br />
The vto values are real numbers, given in volts.
case<br />
SYNTAX:<br />
case upper | lower<br />
EXAMPLE:<br />
case upper<br />
Gentech 191<br />
DESCRIPTION:<br />
You can specify upper- or lowercase characters for the SPICE<br />
netlists created by Gentech. The library and model cards are not<br />
affected by this command.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
192 Chapter 4 <strong>EPIC</strong> Technology File<br />
unit_wl<br />
unit_adas<br />
unit_pdps<br />
SYNTAX:<br />
unit_wl wl_char<br />
unit_adas adas_char<br />
unit_pdps pdps_char<br />
EXAMPLE 1:<br />
unit_wl<br />
EXAMPLE 2:<br />
unit_wl u<br />
unit_adas p<br />
unit_pdps U<br />
DESCRIPTION:<br />
You use these commands to overwrite the unit character used in<br />
the SPICE input file produced by Gentech if the defaults do not<br />
work. The defaults are either with or without a ‘U’ for geometries<br />
w, l, pd, ps; and with or without a ‘P’ for ad and as. Only the first<br />
character is taken as the new unit scaling character. If there is<br />
no character or a blank is used, the SPICE netlists will have no<br />
unit character for the corresponding geometry entry.
speed<br />
SYNTAX:<br />
speed<br />
DESCRIPTION:<br />
Gentech 193<br />
The addition of the speed command to the control file increases<br />
the speed with which the technology file is generated.<br />
NOTE: This command can be used only with HSPICE, SMARTSPICE,<br />
HPSPICE, and Spectre2.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
194 Chapter 4 <strong>EPIC</strong> Technology File<br />
binary<br />
SYNTAX:<br />
binary<br />
DESCRIPTION:<br />
The binary command in the control file causes the generation of<br />
a binary file.<br />
NOTE: This command is valid only with TISPICE, HSPICE,<br />
SmartSpice, and HPSPICE.<br />
You cannot use this command with the simulation tool’s -A<br />
option.
temperature<br />
voltage<br />
Section 4 - %corner<br />
Gentech 195<br />
This section specifies the supply voltage and the temperature for<br />
the technology file. This section is mandatory.<br />
SYNTAX:<br />
temperature temperature<br />
voltage voltage<br />
EXAMPLE:<br />
temperature 25<br />
voltage 3.3<br />
DESCRIPTION:<br />
The argument temperature is in degrees Celsius, and voltage is<br />
in volts. The voltage value should be the same as the vde and vge<br />
values in the vds and vgs commands in the %parameters<br />
section. The <strong>EPIC</strong> tool will issue a warning if these voltage<br />
values differ significantly. If you have different parts of a circuit<br />
operating under several voltages or temperatures, see the<br />
section “Using Multiple Technology Files” on page 204 for<br />
details.<br />
Section 5 - %invoke<br />
This section, which is mandatory, lets you specify the command<br />
syntax to start your SPICE. Use full pathnames for commands.<br />
EXAMPLE:<br />
/vendor/ees/runprecise [options] [%input%output]<br />
The arguments in brackets, though optional, are recommended.<br />
The keywords %input and %output let you control the command<br />
syntax to run your SPICE. You can add preprocessors,<br />
postprocessors, and so on, by creating a script that takes %input<br />
and %output as arguments.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
196 Chapter 4 <strong>EPIC</strong> Technology File<br />
The following rules apply to the use of the keywords %input and<br />
%output:<br />
■ Both keywords must be separated by spaces.<br />
■ Multiple %input and %output keywords are accepted, with a<br />
limit of ten each.<br />
■ Any special preprocessing or post-processing should be done<br />
in a script which takes %input and %output keywords as<br />
arguments.<br />
EXAMPLE:<br />
%invoke<br />
/usr/joe/bin/my_SPICE<br />
You can use the %input and %output keywords in the line that<br />
Gentech substitutes with the names of SPICE input and output<br />
files, respectively. For example, if you start SPICE using<br />
my_SPICE -h -b -x abc -r input_file -o output_file,<br />
you can use the following syntax with the keywords in the<br />
control file:<br />
%invoke<br />
my_SPICE -h -b -x abc -r %input -o %output<br />
Note: SPECTRE users must use the %invoke syntax in the<br />
%invoke section.<br />
If your site runs a preprocessor on an HSPICE netlist and a postprocessor<br />
for the output, you can package everything into the<br />
following script called run_my_SPICE:<br />
#!/bin/sh -f<br />
SPICE_pre_proc < $1 > /tmp/foo<br />
/usr/bin/SPICE -h -b -x abc -r /tmp/foo -o<br />
/tmp/bar<br />
SPICE_post_proc < /tmp/bar > $2<br />
rm -f /tmp/foo /tmp/bar<br />
exit 0<br />
NOTE: This script assumes that its first argument ($1) is the name of<br />
the input file and the second ($2) is the name of the output file.
Gentech 197<br />
If this script is made executable, then you only need to change<br />
your control file to the following:<br />
%invoke<br />
run_my_SPICE %input %output<br />
Because you are running a different type of SPICE, you might<br />
also have to change the format of the input netlist that Gentech<br />
produces for SPICE runs. You can do this by either writing a<br />
translator or running a preprocessor. You can run such a<br />
translator before running the actual SPICE. This can be<br />
accomplished easily in the %invoke section.<br />
Section 6 - %options<br />
Section 6 allows you to include any SPICE options that would<br />
normally appear in the .OPTIONS lines in the SPICE netlist. For<br />
any other lines that must be in the SPICE netlist, use the %lib<br />
or %model section.<br />
SYNTAX:<br />
% options<br />
<br />
The .options keyword is not included because it is generated<br />
automatically. If you type .options scale=0.25e-6, Gentech<br />
creates .options .options scale=0.25e-6 in the SPICE<br />
netlist which might cause a SPICE failure.<br />
The defaults that are automatically placed in the SPICE netlist<br />
are:<br />
all except SPECTRE:.options nomod limpts=100000<br />
numdgt=7<br />
PSPICE/SPICE2:.WIDTH IN=80 OUT=132<br />
HSPICE:<br />
.OPTIONS SCALE=1.0E-6 CO=132 INGOLD=2 NXX<br />
.options ignore_measure="0"<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
198 Chapter 4 <strong>EPIC</strong> Technology File<br />
SPICE3:.WIDTH OUT=150<br />
PRECISE:.WIDTH 133<br />
SMARTSPICE:.OPTIONS NOMOD LIMPTS=100000 NUMDGT=7<br />
WIDTH=120 <strong>EPIC</strong><br />
NOTE: <strong>EPIC</strong> does not support GOAL= statements or AC and DC modes.<br />
Section 7 - %diode<br />
Running Gentech<br />
This section can contain only diode models in SPICE format.<br />
This information is stored in a technology file for use by <strong>EPIC</strong><br />
tools during simulation. Using this method, you can avoid<br />
having to keep diode models in the netlist.<br />
This section describes the syntax and control options used to run<br />
Gentech. It also explains how to run the utility in single-step and<br />
multiple-step modes.<br />
Gentech Syntax<br />
SYNTAX:<br />
gentech -c control_file<br />
-f SPICE_name<br />
[-t tech_file]<br />
[-b]<br />
[-a]<br />
[-m]<br />
[-x]<br />
[-n]<br />
[-h]<br />
[-q]<br />
EXAMPLE:<br />
gentech -f your_SPICE -c control.cmos -t tech.cmos
This example instructs Gentech to use the control file,<br />
control.cmos. Gentech runs your_SPICE to create a<br />
technology file named tech.cmos.<br />
DESCRIPTION:<br />
Gentech 199<br />
The Gentech command line option -c specifies the input control<br />
filename, -f specifies the SPICE type you are using, and -t<br />
specifies the output technology filename.<br />
The command-line options for the gentech command are:<br />
-b Turns on the multiple-step (batch) mode. Use this when<br />
your SPICE does not reside on your current network (for<br />
example, if your SPICE runs on a mainframe), monitoring<br />
the Gentech run, or other purposes. See “Running Gentech<br />
in Multiple-step Mode” on page 202 for more details.<br />
NOTE: This option should be used if a SPICE license is<br />
unavailable on your network. If a SPICE license is<br />
available on another host within the same network,<br />
create a script to remote login to the SPICE host<br />
machine and submit the SPICE job. Specify the<br />
name of the script in the %invoke section. The -b<br />
option cannot be used with the -q option.<br />
-a Accumulates the spice input and output files from a singlestep<br />
run (interactive mode not using the -b option) for the<br />
purpose of reporting a problem.<br />
If you encounter problems, rerun Gentech in an empty<br />
directory using the multiple-step run mode with the -b<br />
option to accumulate spice.in1, spice.out1, spice.in2, and<br />
spice.out2 files, and send them with the control file to<br />
<strong>EPIC</strong>. If your SPICE does not allow running Gentech in<br />
multiple-step mode, or you do not have the time to finish<br />
the multiple-step run, use the -a option with the singlestep<br />
run to accumulate the needed SPICE files.<br />
If disk space is limited, delete some MOS sizes in the<br />
control file before reporting the problem.<br />
-c control_file<br />
Specifies the name of the control file. See “Gentech Control<br />
File” on page 158.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
200 Chapter 4 <strong>EPIC</strong> Technology File<br />
-f spice_name<br />
Specifies the name of the SPICE to be run by Gentech. The<br />
following formats are supported: HSPICE, PRECISE,<br />
SPECTRE, SPECTRE2, SMARTSPICE, PSPICE, SPICE2,<br />
SPICE3, HSPICE_like, SPICE2_like, and some proprietary<br />
SPICE types.<br />
-f SPECTRE2 applies when a SPICE2 model is used with<br />
SPECTRE. It runs a SPICE2 mode of SPECTRE. -f<br />
SPECTRE applies when a SPECTRE model is used, and<br />
runs the SPECTRE native language. -f HSPICE_like and -<br />
f SPICE2_like are used on unsupported SPICE types when<br />
customizing.<br />
-t tech_file<br />
Specifies the output technology filename. The default is<br />
technology.prm.<br />
-x Allows you to use SPECTRE BSIM models without<br />
specifying vto in the control file.<br />
NOTE: This option is not needed for HSPICE or PRECISE.<br />
-n Tells Gentech that your SPICE does not support dual. DC<br />
sweep for generating Ids tables. Gentech issues more<br />
SPICE runs to sweep vgs and vds separately. This is turned<br />
on by default for SPECTRE.<br />
-h Prints command-line help.<br />
-q Runs quick mode (for HSPICE, SMARTSPICE, and some<br />
proprietary SPICE types only). Using this option causes<br />
Gentech to read the parameters directly from the SPICE<br />
model information. Gentech runs faster in this mode. You<br />
do not need to specify acm, cjgate, cov, cg, ldiff, wdiff,<br />
lmlt, wmlt, and so on, in the control file. In some cases,<br />
this option generates a more accurate technology file.<br />
-m Instructs Gentech to extract lateral diffusion values (ldiff<br />
and wdiff) from the SPICE models specified in the control
Gentech 201<br />
file. This works with SPICE2, SPICE3, HSPICE, PSPICE,<br />
SPECTRE, and others.<br />
If -m is not specified, the ldiff and wdiff values are either<br />
taken from specified ldiff or wdiff control file commands,<br />
or calculated by running SPICE.<br />
If you are using HSPICE, use the -q option instead of the<br />
-m option.<br />
If you are not using HSPICE, you should set the ldiff and<br />
wdiff parameters in the control file. The following warning<br />
is issued if you let Gentech calculate values for ldiff and<br />
wdiff by running SPICE.<br />
gentech: WARNING: No ldiff/wdiff specified in<br />
Control File.<br />
gentech: WARNING: Extracted values may be<br />
inaccurate and may affect simulation accuracy.<br />
Single-Step and Multiple Step (Batch) Modes<br />
You can run Gentech in single-step and multiple-step (batch)<br />
modes. In either mode, you should save the spice.in1, spice.in2,<br />
spice.out1, and spice.out2 files in case you have to rerun<br />
Gentech or report a problem. In single-step mode, you must use<br />
the -a command argument to generate these files.<br />
Running Gentech in Single-step Mode<br />
In single-step mode, Gentech directly runs your SPICE,<br />
according to the syntax in the %invoke section of the control file,<br />
and iterates several SPICE runs for each size until the<br />
technology file is created. You need to type the gentech<br />
command only once.<br />
If you can run your SPICE and obtain a result in the local<br />
directory, you can run Gentech by using either one of the<br />
following command lines:<br />
gentech -c control.cmos -f your_SPICE -t tech.cmos<br />
or<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
202 Chapter 4 <strong>EPIC</strong> Technology File<br />
gentech -c control.cmos -f your_SPICE -t tech.cmos<br />
-a<br />
This reads the control.cmos file and builds the technology file<br />
tech.cmos as follows:<br />
1 Generates a SPICE netlist named spice.in.<br />
2 Runs SPICE to generate the SPICE output. The file must be<br />
named spice.out.<br />
3 Reads the SPICE output and adds an entry to the tech.cmos<br />
file.<br />
4 Repeats steps 1 through 3 until tech.cmos file is complete. In<br />
both steps 1 and 2, the spice.in and spice.out files are<br />
overwritten.<br />
If the -a command argument is used, all the SPICE files will be<br />
saved in spice.in1, spice.in2, spice,out1, and spice.out2 files,<br />
requiring additional disk space. You can use these files if you<br />
have to rerun Gentech in multiple-step mode or to report a<br />
Gentech problem. You might rerun Gentech when you want to<br />
overwrite the average capacitance.<br />
Running Gentech in Multiple-step Mode<br />
If you must run SPICE on a batch machine or an unconnected<br />
remote machine, the single-step method will not work since the<br />
SPICE jobs go into a queue and are run in the background.<br />
Therefore, you must run Gentech in multiple-step mode. Three<br />
Gentech and two SPICE runs are required. The output of the<br />
first SPICE run is needed to build the input for the second. The<br />
steps are:<br />
1 On your local machine, type:<br />
gentech -f SPICE_type -c control_file<br />
-t tech_file -b<br />
This creates a file called spice.in1.
Gentech 203<br />
2 Run SPICE using the file spice.in1, and name the output file<br />
spice.out1.<br />
3 Move the spice.out1 file to the directory from where you<br />
originally ran Gentech and rerun the utility by typing:<br />
gentech -f SPICE_type -c control_file<br />
-t tech_file -b<br />
This creates a file called spice.in2.<br />
4 Run SPICE using input file spice.in2, and name the output<br />
file spice.out2.<br />
5 Move the file spice.out2 to the directory from where you<br />
originally ran Gentech and rerun the utility a third time<br />
using the same command syntax as above. The technology<br />
file is created.<br />
NOTE: Do not delete or edit the control file, technology file, spice.in1,<br />
spice.out1, spice,in2, or spice.out2 files during the process.<br />
Because Gentech checks the time the files were either created or<br />
edited, editing may occur in the wrong sequence for the process.<br />
The input files to SPICE spice.in1 and spice.in2 have many<br />
SPICE runs in a single file. Your SPICE must be able to take<br />
multiple runs as one job. SPECTRE and some proprietary SPICE<br />
types cannot do this for the supported SPICE types. But any<br />
SPICE type can use the -a command argument to run Gentech<br />
first in single-step mode. Multiple-step mode is then possible<br />
with the available spice.out1 and spice.out2 files.<br />
Multiple-step mode does not run SPICE directly. It is convenient<br />
when a rerun of Gentech is needed to overwrite average<br />
capacitance or to report a Gentech problem. The following steps<br />
show how to rerun Gentech to overwrite average capacitance, if<br />
needed.<br />
1 After you’ve completed steps 1 through 5 above, save the<br />
original technology file using another filename. Keep files<br />
spice.out1 and spice.out2.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
204 Chapter 4 <strong>EPIC</strong> Technology File<br />
2 Enter the appropriate cg, cov, cja, cjsw commands in the<br />
control file.<br />
3 Rerun steps 1 through 5, but replace “Run SPICE...” with<br />
“Touch spice.out1” or “Touch spice.out2” in steps 2 and 4.<br />
4 After the new technology file is generated, use the UNIX diff<br />
command on the new and original technology files to verify<br />
the changes on the diff_cap and gate_cap data lines.<br />
Using Multiple Technology Files<br />
A Gentech control file does not accept more than one NMOS<br />
model and one PMOS model. You need to run Gentech separately<br />
when you have depletion NMOS models, several process corners,<br />
multiple supply voltages, or charge pump circuits. If you run<br />
Veritech, it also needs to be run separately under these<br />
circumstances.<br />
<strong>EPIC</strong> tools accept multiple technology files when you use<br />
multiple -p command line arguments. Therefore, do not<br />
concatenate or edit the technology files. (If necessary, use the<br />
Gentech control file commands to change the technology files.)<br />
You can build a runscript to generate multiple technology files by<br />
using gentech and veritech as basic commands.<br />
Model names and model_alias lines cannot conflict when using<br />
multiple technology files.<br />
Be sure to use different model names in the %model sections and<br />
different model_alias lines in the %parameters section for all<br />
your different models among multiple control files and<br />
technology files. For information about the %model section, see<br />
“Section 2 - %model” on page 159.<br />
Temperatures and Voltages<br />
Different temperatures are allowed. Using different model<br />
names, you can model various parts of your circuit and simulate
PrintWL Utility<br />
PrintWL Utility 205<br />
them under several temperatures. Make sure the temperature<br />
differences are significant so that the results will be meaningful.<br />
Different supply voltages are also allowed. However, you must<br />
use the set_voltage configuration command to properly reset<br />
the supply voltage. Otherwise, <strong>EPIC</strong> tools might use the last<br />
supply voltage read from the multiple technology files. Inside<br />
each technology file, the voltage command in the %corner<br />
section is used to decide the voltage range to calculate the<br />
average capacitance by Gentech, and the vgs and vds commands<br />
in the %parameters section determine the range for ids tables.<br />
Therefore, the ending vgs and vds values and the voltage value<br />
should be the same in one file, but can be different in multiple<br />
technology files.<br />
PrintWL is a utility that generates a file containing all transistor<br />
sizes used in a netlist. The file is in a format that can be used as<br />
part of a Gentech control file to compile a technology file.<br />
PrintWL reads netlist information from all compatible netlist<br />
programs.<br />
When you run PrintWL, it finds NMOS and PMOS model pairs in<br />
the netlist and generates an output file for each pair. If PrintWL<br />
finds an NMOS or PMOS model it cannot pair, it generates an<br />
individual output file for the extra model. This utility generates<br />
several output files, depending on the number of models in the<br />
input netlist. The default output files are WL1, WL2, WL3, and<br />
so on. You can use the -o option to rename the output file prefix.<br />
PrintWL classifies netlist model names beginning with the letter<br />
N or n as NMOS models, and models beginning with the letters<br />
P or p as PMOS models. If PrintWL encounters model names that<br />
do not begin with the letters N or P, it prompts you to specify<br />
whether the model names identify NMOS or PMOS models. The<br />
PrintWL output file contains transistor width and length<br />
descriptions in Gentech control file format. If any two transistors<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
206 Chapter 4 <strong>EPIC</strong> Technology File<br />
have the same width and length measurement, PrintWL lists<br />
only one of those transistors in the output file.<br />
The PrintWL utility sorts transistors by size, listing the smallest<br />
transistor first.<br />
SYNTAX:<br />
printWL [-m main_circuit_name...]<br />
[-N n_model_name...]<br />
[-P p_model_name]<br />
[-o output_file_prefix]<br />
[-f value]<br />
[-g]<br />
[-h]<br />
[-L library_path]<br />
[-a]<br />
-n netlist ...<br />
The command-line options are:<br />
-m top_circuit_name<br />
This option specifies the top level circuit name, or the<br />
topmost circuit name for the given netlist.<br />
-N n_model_name...<br />
This option specifies the NMOS model name. The default<br />
model name is N, or n.<br />
-P p_model_name...<br />
This option specifies the PMOS model name. The default<br />
model name is P, or p.<br />
-o output_file_prefix<br />
This option specifies the output file prefix. The default prefixes<br />
are: WL.1, WL.2, WL.3, and so on.
PrintWL Utility 207<br />
-f This option specifies the number of decimal places to be<br />
printed depending on the desired level of precision. Values<br />
are 0 through 10; the default value is 2 decimal places.<br />
-g This option instructs printWL to truncate the model name<br />
suffix.<br />
-h This option displays the command and its options.<br />
-L library_path<br />
This option specifies the cell library path.<br />
-a This option instructs printWL to process files even though<br />
a main circuit is not defined in the design. This option is<br />
similar to -L except that subcircuit definitions do not reside<br />
in individual files. This option is ignored if -m is used.<br />
-n netlist ...<br />
This option specifies the input netlist names.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
208 Chapter 4 <strong>EPIC</strong> Technology File<br />
Figure 5 shows a sample netlist, which is the primary input to<br />
the PrintWL utility.<br />
HSPICE;<br />
pgalias vdd! vdd;<br />
pgalias gnd! gnd;<br />
(subckt=inv)(it=A)(ot=Y)<br />
(pr=pl:0.6,pw:16,nl:0.5,nw:5){<br />
(t=n)(en=N4)(ga=A)(dr=Y)(so=gnd!)(w=nw)(l=nl);<br />
(t=p)(en=P5)(ga=A)(dr=vdd!)(so=Y)(w=pw)(l=pl);<br />
}<br />
(ef=inv)(en=I8)(it=B)(ot=A)<br />
(pr=nl:6,nw:1.1,pl:3,pw:1.1);<br />
(ef=inv)(en=I7)(it=C)(ot=D)<br />
(pr=nl:0.5,nw:11,pl:0.6,pw:26);<br />
(ef=inv)(en=I6)(it=B)(ot=C)<br />
(pr=nl:0.5,nw:3.4,pl:0.6,pw:8);<br />
(ef=inv)(en=I5)(it=A)(ot=B)<br />
(pr=nl:0.5,nw:1.4,pl:0.6,pw:3.6);<br />
(t=p1)(en=P4)(ga=PREF)(dr=A)(so=vdd!)(w=120)(l=60);<br />
(t=n1)(en=N3)(ga=PREF)(dr=DEC3)(so=A)(w=500)(l=50);<br />
(t=n)(en=N2)(ga=ADR)(dr=DEC2)(so=DEC3)(w=500)(l=50);<br />
(t=n)(en=N1)(ga=ADR)(dr=DEC1)(so=DEC2)(w=500)(l=50);<br />
(t=n)(en=N0)(ga=ADR)(dr=gnd!)(so=DEC1)(w=500)(l=80);<br />
Figure 5 Sample netlist for PrintWL example
The Technology File Viewer 209<br />
The following two figures (collectively Figure 6) show sample<br />
output files that are generated by the printWL -n netlist<br />
command:<br />
The Technology File Viewer<br />
WL1:<br />
%model<br />
.model n1 nmos<br />
.model p1 pmos<br />
%parameters<br />
N_LENGTH1 0.50<br />
NW1 5.00<br />
P_LENGTH1 0.60<br />
PW1 1.20<br />
WL2:<br />
%model<br />
.model n nmos<br />
.model p pmos<br />
%parameters<br />
N_LENGTH1 0.80<br />
NW1 5.00<br />
N_LENGTH2 0.50<br />
NW2 5.00 1.40 3.40 11.00<br />
N_LENGTH3 6.00<br />
NW3 1.10<br />
P_LENGTH1 0.60<br />
PW1 3.60 8.00 26.00<br />
P_LENGTH2 3.00<br />
Figure 6 Examples of printWL-n netlist output files<br />
The technology file viewer, TechViewer, lets you view an <strong>EPIC</strong><br />
format technology file graphically. The TechViewer is<br />
automatically installed if you are running TimeMill, PowerMill,<br />
PathMill, or RailMill. No other installation is needed.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
210 Chapter 4 <strong>EPIC</strong> Technology File<br />
Veritech Utility<br />
To use TechViewer:<br />
1 Type techViewer.<br />
2 Select File → Open Technology File.<br />
The temperature and voltage of the power supply are<br />
displayed. The models from the specified technology file are<br />
listed.<br />
3 Select a model from the list.<br />
4 Click on the Show Tables button(s).<br />
This displays graphs for vt and ids.<br />
Clicking on the vt/iv curve windows displays the relevant<br />
data information on the status banner.<br />
Selecting another model while graphs are displayed<br />
automatically updates the opened graphs.<br />
5 To quit, select File → Exit.<br />
You can use the Veritech utility to verify the accuracy of the<br />
technology file created by Gentech. However, Veritech only tests<br />
on very special circuits, and the tests frequently give false<br />
errors. Therefore, the recommended verification flow for<br />
technology files is to run your SPICE on an actual design and<br />
run <strong>EPIC</strong> tools with the generated technology files on that same<br />
design. You can then compare the two to check for accuracy.<br />
The Veritech utility works with the following SPICE types:<br />
HSPICE, PRECISE, SMARTSPICE, PSPICE, SPICE2, SPICE3,<br />
and some proprietary SPICE types. Make sure your version of<br />
SPICE is supported.
Technology File<br />
Veritech<br />
Veritech<br />
Report<br />
Veritech Utility 211<br />
The utility runs with the <strong>EPIC</strong> <strong>Tools</strong> TimeMill, PowerMill, and<br />
PathMill. An <strong>EPIC</strong> tool license is necessary. Figure 7 shows the<br />
flow of a Veritech run.<br />
Figure 7 Flow of a Veritech run<br />
Running Veritech<br />
SPICE Input<br />
SPICE Output<br />
<strong>EPIC</strong> Input<br />
<strong>EPIC</strong> Output<br />
Veritech provides the following validations:<br />
SPICE<br />
TimeMill<br />
PathMill<br />
or<br />
PowerMill<br />
■ The results of several test circuits, based on the given<br />
technology file, match reasonably well with SPICE.<br />
■ All technology data values are within reasonable numeric<br />
ranges.<br />
■ All technology data matches the corresponding SPICE model<br />
parameters.<br />
This section shows the syntax and command-line options for the<br />
veritech command. It also describes the results of a Veritech<br />
run and the steps you should take if the run is aborted.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
212 Chapter 4 <strong>EPIC</strong> Technology File<br />
SYNTAX:<br />
veritech tech_file -f spice_type<br />
[-o out_file]<br />
[-b] [-B]<br />
[-h]<br />
The command-line options used with the veritech command are:<br />
tech_file<br />
This is the technology file which includes the control file<br />
and the SPICE model (listed in the %model section, or in a<br />
readable file referenced by the .include or .lib commands<br />
in the %lib section). The technology file can be in<br />
compressed format.<br />
NOTE: Veritech treats the %lib control file keyword in the<br />
same way as Gentech.<br />
-f spice_type<br />
This can be used to specify the type of SPICE if Veritech<br />
fails to decide the SPICE type after examining the %invoke<br />
section. The accepted SPICE types are: HSPICE, SPICE2,<br />
SPICE3, PSPICE, SmartSpice, PRECISE, and a number of<br />
proprietary versions of SPICE. Check to see if your SPICE<br />
version is supported.<br />
-o out_file<br />
This specifies the output filename. It is mandatory except<br />
when -b is used.<br />
-b, -B<br />
This runs batch mode. If SPICE is not available on your<br />
machine, first use -b to generate all SPICE input files, then<br />
use -B when all SPICE output files are ready.<br />
EXAMPLE:<br />
veritech techfile -b<br />
This generates all SPICE input files. Run SPICE remotely,<br />
bring back all SPICE output files, and type the following<br />
command line:
veritech techfile -b -o out_file<br />
Veritech Utility 213<br />
-d Debug mode saves all intermediate files and echoes some<br />
model parameters. This is useful when you are reporting<br />
a Veritech problem.<br />
-h This option prints command line help.<br />
Veritech commands are shown in the following examples.<br />
EXAMPLE 1:<br />
veritech tech.8.typ.2 -f hspice 2 0.8 1 0.7 -g -o<br />
report &<br />
EXAMPLE 2:<br />
veritech technology.prm -o veri.out<br />
(Writes out to screen only.)<br />
NOTE: Veritech automatically detects if PowerMill, TimeMill, or<br />
PathMill exist on the machine. If PathMill is used, there will be<br />
no Test 4 since PathMill does not report the final voltages on a<br />
node.<br />
Veritech compares simulation results generated by running your<br />
SPICE and one of the <strong>EPIC</strong> tools and generates a pass/fail<br />
status for each result. This status is determined by checking<br />
whether the difference falls within a pre-determined, allowable<br />
margin of error.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
214 Chapter 4 <strong>EPIC</strong> Technology File<br />
After Running Veritech<br />
If you run Veritech and find that only a very small portion of the<br />
sizes in any test have large percentage errors, the technology file<br />
is still sufficiently accurate, as long as their corresponding data<br />
in the technology file behave roughly the same as other MOS<br />
sizes.<br />
To improve the accuracy of a technology file, carefully check all<br />
the warnings given by Veritech, edit the control file accordingly,<br />
and generate a new technology file. Run Veritech again to verify<br />
the improvements.<br />
NOTE: Remember that Veritech runs very specialized device-level<br />
circuits that can result in false errors. The best way to check<br />
accuracy is to run a sample circuit on your SPICE and then run<br />
the same circuit using of the <strong>EPIC</strong> tools. Generate the<br />
technology file and compare for accuracy.<br />
If Veritech Aborts<br />
If Veritech aborts, check all the simulation output and .err files<br />
remaining in the working directory. This can be done easily if<br />
you start Veritech in a directory that contains only necessary<br />
files (the technology file and model library files, if applicable).<br />
The following conventions are used by Veritech for creating the<br />
input and output files:<br />
■ When rise and fall times are 0.1ns, the following files are<br />
generated for tests 1,2,4,5, and for test 3 (SPICE only):<br />
◆ veritech_netn (netlist files to <strong>EPIC</strong> <strong>Tools</strong> PathMill,<br />
PowerMill, or TimeMill)<br />
◆ veritech_cfgn (configuration files to <strong>EPIC</strong> <strong>Tools</strong>)<br />
◆ pathmilln.out (PathMill analysis output files)<br />
◆ powrmilln.out (PowerMill simulation output files)<br />
◆ timemilln.out (TimeMill simulation output files)
◆ SPICEn_in (SPICE input files)<br />
◆ SPICEn_out (SPICE output files)<br />
Veritech Utility 215<br />
■ When rise and fall times are 5ns, the following files are<br />
generated for tests 1,2,5:<br />
◆ veritech_netnr (netlist files to <strong>EPIC</strong> <strong>Tools</strong>)<br />
◆ veritech_cfgnr (configuration files to <strong>EPIC</strong> <strong>Tools</strong>)<br />
◆ pathmillnr.out (PathMill analysis output files)<br />
◆ powrmillnr.out (PowerMill simulation output files)<br />
◆ timemillnr.out (TimeMill simulation output files)<br />
◆ SPICEnr_in (SPICE input files)<br />
◆ SPICEnr_out (SPICE output files)<br />
You can manually rerun the most recent case to determine why<br />
Veritech aborted. This is usually because the PathMill,<br />
PowerMill, TimeMill, or SPICE run failed.<br />
EXAMPLE 1:<br />
timemill -n net5r -c cfg5r -p tech_file -t 80 -o<br />
timemill5r<br />
This is an example of the command you can use to rerun<br />
TimeMill.<br />
EXAMPLE 2:<br />
spice3 -b -r spice5r_out < spice5r_in<br />
This is an example of the command you can use to rerun SPICE.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
216 Chapter 4 <strong>EPIC</strong> Technology File
Chapter 5<br />
Stimuli and State<br />
Checking
218 Chapter 5 Stimuli and State Checking
Overview<br />
Overview 219<br />
The dynamic <strong>EPIC</strong> tools require input stimulus of some form.<br />
Input stimulus can be either individual time-varying signals or<br />
a vector pattern. Special <strong>EPIC</strong> functions are available to provide<br />
input stimulus if none is specified in a SPICE netlist. Some<br />
stimulus functions generate stimulus patterns based on<br />
parameters specified in the function calls.<br />
An output vector is a state pattern used to compare simulated to<br />
expected results.<br />
This chapter explains the various stimulus functions as well as<br />
the format of the vector pattern.<br />
Stimulus Functions and Vector Functions<br />
<strong>EPIC</strong> provides ten stimulus functions. Some of the <strong>EPIC</strong> input<br />
stimulus functions generate an input stimulus based on<br />
parameters specified in the function call. Stimulus generator<br />
functions are clk, cnt, ptn, and tgl.<br />
Another group of stimulus functions allows data or test vectors<br />
pre-stored in a specified file to be referred to at user-defined time<br />
steps. These functions are nsvt, vec, and vec_chk. The function<br />
vec_chk verifies the simulator results with respect to the<br />
expected circuit response during a simulation. The functions vec<br />
and nsvt offer a combination of input stimulus and vector<br />
checking, and are the most widely used.<br />
Another group of stimulus functions that set stimulus values are<br />
one, udf, and zero.<br />
Multiple stimulus function calls can be placed into one file and<br />
submitted to the dynamic tool using the -n option on the<br />
command line.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
220 Chapter 5 Stimuli and State Checking<br />
Function Definitions<br />
EXAMPLE:<br />
powrmill -n netlistfile stim -p techfile -t time<br />
-c cfgfile<br />
If you are using a vector pattern as input stimulus, you submit it<br />
directly to the dynamic tool using the -nvec option on the<br />
command line.<br />
EXAMPLE:<br />
powrmill -n netlistfile -nvec vectors -p techfile<br />
-t time -c cfgfile<br />
(See “Running the Vector File Using type and signal Commands”<br />
on page 247.) The input vectors for the vec, vec_chk, or nsvt<br />
specification are stored in separate data files.<br />
The following types of functions are described in this section and<br />
are ordered alphabetically:<br />
■ Clock Stimulus (clk)<br />
■ Counter Stimulus (cnt)<br />
■ Pattern Stimulus (ptn)<br />
■ Toggle Stimulus (tgl)<br />
■ Vector Stimuli and Vector Checking (nsvt, vec, vec_chk)<br />
■ Logic Constants (one, udf, zero)
clk<br />
c1<br />
SYNTAX:<br />
Function Definitions 221<br />
(is=clk) (en=element_name) (ot=signal_list) [(ov=orig_values)]<br />
(sv=start_t, toggle_t, prd, rise_time, fall_time);<br />
OR<br />
(is=clk) (en=element_name) (ot=signal_list) [(ov=orig_values)]<br />
(sv=start_time:val, toggle_time:val, period:val, rise_time:val,<br />
fall_time:val);<br />
EXAMPLE:<br />
(is=clk)(en=CLOCKa)(ot=c1,c2,c3,c4)(ov=0,0,0,0)<br />
(sv=10,20,40,5.0,7.5);<br />
The same clock specification is applied equally to nodes c1, c2,<br />
c3, and c4; (ov=0,0,0,0) is optional.<br />
Figure 1 shows an example of a clk function.<br />
40<br />
5.0 7.5<br />
0 1 2 3 4 5 6 7 8 9 10<br />
Figure 1 clk function<br />
DESCRIPTION:<br />
Time (ns)<br />
This function defines a clock which has a repetitive waveform<br />
pattern with a clock period. The default number of states is 5.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
222 Chapter 5 Stimuli and State Checking<br />
The second syntax shows a long form, using keywords recognized<br />
by the <strong>EPIC</strong> simulators.<br />
Command Argument Definition<br />
element_name The unique name that represents<br />
this particular instance of this<br />
function<br />
signal_list Nodes to be stimulated by the<br />
resulting clk pattern<br />
orig_values Sets the initial clock output states;<br />
if it is not specified, the default is<br />
the zero state<br />
start_t Defines the starting time of the<br />
clock operation, and is measured<br />
in nanoseconds. The signals will<br />
start to rise or fall at this time.<br />
toggle_t Defines the incremental time,<br />
after the start time, when the<br />
clock state begins to change, and is<br />
specified in nanoseconds<br />
prd Defines the clock period in<br />
nanoseconds<br />
rise_time, fall_time Specifies the rise and fall time<br />
durations, respectively, in<br />
nanoseconds. They can be specified<br />
in floating point or integer<br />
formats.<br />
The default rise/fall times are<br />
zero, which generates a squareedged<br />
waveform without rise/fall<br />
slopes. The rise/fall times are<br />
imposed on start_t and toggle_t,<br />
which specify the start of the<br />
rising and falling edges.
cnt<br />
in1<br />
in0<br />
SYNTAX:<br />
Function Definitions 223<br />
(is=cnt) (en=element_name) (ot=msb,..,lsb) (ov=orig_value(s))<br />
(sv=start_t, inc, rf_t);<br />
OR<br />
(is=cnt) (en=element_name) (ot=msb,..,lsb) (ov=orig_value(s))<br />
(sv=start_time:val, inc:val, rf_time:val);<br />
EXAMPLE:<br />
(is=cnt)(en=count)(ot=in1,in0)(ov=0,0)(sv=10,10,1)<br />
;<br />
Multiple ot’s and ov’s are allowed, but must be separated with<br />
commas (,).<br />
Figure 2 shows an example of a cnt function.<br />
1.0 ns<br />
0 10 20 30 40<br />
Figure 2 cnt function<br />
DESCRIPTION:<br />
Time (ns)<br />
This function defines an n-bit up-counter. The output signals<br />
count up from the LSB at the right towards the MSB at the left.<br />
The starting time, the increment period, and the signal rise/fall<br />
time are defined in the sv field. The default number of states is 3.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
224 Chapter 5 Stimuli and State Checking<br />
The second syntax demonstrates a long form using keywords<br />
recognized by PowerMill and RailMill.<br />
Command Argument Definition<br />
element_name This unique name represents this<br />
particular instance of this function.<br />
msb,..,lsb This is a list of nodes representing<br />
the most to the least significant<br />
bits.<br />
orig_value(s) Defines the initial values for<br />
msb,...,lsb. The default is zero(es) if<br />
not specified.<br />
start_t At start_t, the value of the nodes<br />
increment by one from orig_value.<br />
The units are in nanoseconds.<br />
inc The increment period. The units<br />
are in nanoseconds.<br />
rf_t Specifies one value used for the<br />
rise/fall time. If not specified, the<br />
default is zero. The units are in<br />
nanoseconds.
fixed_rf<br />
Function Definitions 225<br />
The new vector file command, fixed_rf, which is used by<br />
nsvt and vec, causes the rise/fall/slope commands to<br />
define a fixed rise/fall time that is not affected by the<br />
starting voltage. If this command is not used, the rise/fall/<br />
slope commands define a fixed slew (rise/fall) rate of the<br />
input signal change, and the rise/fall time can vary with<br />
the starting voltage.<br />
EXAMPLE:<br />
rise 2.5<br />
fall 1.5<br />
fixed_rf<br />
This example sets the rise and fall times of all inputs in the<br />
vector to a fixed 2.5 ns and 1.5 ns, respectively, regardless<br />
of the starting voltage for the input.<br />
This command can be overridden by the configuration<br />
command set_vec_opt.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
226 Chapter 5 Stimuli and State Checking<br />
nsvt<br />
SYNTAX:<br />
(is=nsvt) (en=vector_file) (ot=signal_list);<br />
EXAMPLE:<br />
(is=nsvt)(en=my_vectors)(ot=A,B,C[15-0],X,D[7-0]);<br />
This an example entry in the netlist which calls the nsvt<br />
function.<br />
Figure 3 shows how typical data in a vector file might appear.<br />
The radix and io lines are explained in the vector file description.<br />
The keyword period entry specifies the time interval in<br />
nanoseconds at which the test vector, or the signals, are to be<br />
invoked. The period of data invocation is defined inside the<br />
vector file. A line beginning with a semicolon is a comment. (See<br />
“Vector File Format” on page 239.)<br />
; A B C[15-0] XD[7-0]<br />
radix 1 1 4 4 4 4 14 4<br />
; specify input and output signal<br />
io i b i i i u oo o<br />
period 20<br />
;data output at 0ns, 20ns, 40ns, ...<br />
;data to follow<br />
1 0 0 0 0 0 10 0<br />
0 1 a b c d 01 2<br />
0 0 4 e d d 02 1<br />
0 1 4 e d e 1 4 0<br />
Figure 3 Vector file data example<br />
DESCRIPTION:<br />
This function provides a method for reading in a file containing<br />
input stimuli and output comparisons to be applied at fixed<br />
intervals. The stimulus and comparison data is organized in a<br />
tabular format without absolute times in the vector section.<br />
The timing information associated with the vectors is specified<br />
within a period (interval), using the period command. Each new<br />
vector comes one interval after the previous vector. The first<br />
vector is applied at time 0.
Function Definitions 227<br />
The rise/fall/slope time can be specified for the signals in the<br />
vector file. The signal radix and its type (input, output, biput)<br />
can also be specified. For input and biput signals, the stimulus<br />
drive resistance can be specified by the keyword out. See<br />
output_resistance in “Vector File Format” on page 239.<br />
The default time unit for all time parameters, including rise/fall/<br />
slope time, is a nanosecond. It can be changed using time_scale<br />
as explained in “Vector File Format” on page 239. The default<br />
resolution in the time specification is 0.01ns. You can use the<br />
set_sim_tres configuration command to change it. See the<br />
TimeMill or PowerMill reference guide.<br />
The valid state characters for input stimuli and output<br />
comparison are documented in “State Characters Used by <strong>EPIC</strong><br />
<strong>Tools</strong>” on page 248.<br />
Command Argument Definition<br />
vector_file Specifies the file to be read. It can be<br />
either a full pathname or a relative<br />
pathname, as long as the search path<br />
can locate the vector file containing the<br />
vectors used to force the specified nodes<br />
to the proper values during the<br />
simulation. In the vector file, radix,<br />
slope, io, and output_resistance are<br />
used in the same way as in the vec<br />
specification.<br />
signal_list Specifies the list of signal names<br />
corresponding to the data provided in<br />
the vector file.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
228 Chapter 5 Stimuli and State Checking<br />
one<br />
SYNTAX:<br />
(is=one) (en=element_name) (ot=signal_list);<br />
EXAMPLE:<br />
(is=one)(en=HI)(ot=VE,Kdata_edge);<br />
This sets VE and Kdata_edge to constant ONE.<br />
DESCRIPTION:<br />
The stimulus specification one sets the stimulus value to a<br />
constant ONE.
ptn<br />
cck1<br />
SYNTAX:<br />
(is=ptn) (en=element_name) (ot=signal_list)<br />
(sv=bit_duration,rf_time,bit_pattern);<br />
Function Definitions 229<br />
EXAMPLE:<br />
(is=ptn)(en=gen1)(ot=cck1,cck2)<br />
(sv=2,0.2,0,1,1,0,1,0,0,1,1,0);<br />
This example shows a stimulus pattern with a bit duration of 2ns<br />
(first argument in the "sv=" field) and a 0.2ns rise-fall time<br />
(second argument in the "sv=" field). The pattern starts with<br />
logic 0 (third argument). Then it starts to rise to logic 1 at time<br />
2ns (fourth argument). It reaches logic 1 at 2.2ns since the risefall<br />
time is 0.2ns. It stays at logic 1 for another duration (fifth<br />
argument), then starts to fall to logic 0 at 6ns (sixth argument).<br />
The remaining arguments control the waveform for the rest of<br />
time in the same way.<br />
Figure 4 shows an example of a ptn function.<br />
0.2 0.2<br />
0 2 4 6 8 10 12 14 16 18 20<br />
Time (ns)<br />
Figure 4 ptn function<br />
DESCRIPTION:<br />
This function creates an input stimulus from a bit pattern. The<br />
default number of states is greater than, or equal to, 3 depending<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
230 Chapter 5 Stimuli and State Checking<br />
on the sv function. Multiple ot’s are allowed, but must be<br />
separated with commas.<br />
Command Argument Definition<br />
element_name This unique name represents this<br />
particular instance of this function.<br />
signal_list Specifies a list of nodes stimulated<br />
by the resulting ptn pattern.<br />
bit_duration Specifies the time in nanoseconds<br />
for each bit in the given pattern,<br />
and can be specified in either<br />
floating point or integer format.<br />
rf_time Specifies the rise and fall duration<br />
in all the bit patterns in either<br />
floating point or integer formats.<br />
bit_pattern Specifies the desired pattern of a<br />
stimulus variation in binary format<br />
such as 1,1,0,1. The pattern repeats<br />
itself continuously in time. The<br />
pattern can be as long as required,<br />
but it must be at least one number<br />
long.
tgl<br />
gg10<br />
SYNTAX:<br />
Function Definitions 231<br />
(is=tgl) (en=element_name) (ot=signal_list) (ov=orig_value(s))<br />
(sv=rf_time, toggle_times...);<br />
EXAMPLE:<br />
(is=tgl)(en=sig1)(ot=gg10)(ov=1)<br />
(sv=1.0,2,4,10,12,15);<br />
Figure 5 illustrates this example.<br />
1.0<br />
0 2 4 6 8 10 12 14 16<br />
Time (ns)<br />
Figure 5 tgl function<br />
DESCRIPTION:<br />
This function defines a toggle stimulus which toggles output<br />
between 1 and 0, according to a list of non-zero toggle times.<br />
There is no limit to the number of toggle times. The default<br />
number of states is greater than or equal to 2, depending on the<br />
sv function.<br />
Command Argument Description<br />
element_name Specifies a unique name for this<br />
particular instance of this function.<br />
signal_list Lists the nodes stimulated by the<br />
resulting tgl pattern. Multiple<br />
signal lists must be separated by<br />
commas (,).<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
232 Chapter 5 Stimuli and State Checking<br />
Command Argument Description<br />
orig_value(s) Defines the initial states. This is<br />
important because the states are<br />
changed at the subsequent<br />
toggle_times. Multiple values must<br />
be separated by commas (,).<br />
rf_time Defines the signal rise/fall duration<br />
in nanoseconds. The start point on<br />
the rise/fall slope is coincident with<br />
the toggle times.<br />
toggle_times Specifies values measured in<br />
nanoseconds. It is referenced from<br />
Time0 and must be listed in<br />
ascending time order.
udf<br />
SYNTAX:<br />
(is=udf) (en=element_name) (ot=signal_list);<br />
EXAMPLE:<br />
(is=udf)(en=und)(ot=IDN);<br />
This sets IDN to a constant undefined state.<br />
Function Definitions 233<br />
DESCRIPTION:<br />
The stimulus specification udf sets the stimulus value to a<br />
constant undefined state.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
234 Chapter 5 Stimuli and State Checking<br />
vec<br />
SYNTAX:<br />
(is=vec) (en=vector_file) (ot=signal_list);<br />
(is=vec)(en=test_vector)(ot=bus[15-0],vin,vout);<br />
This example specifies that the file (test_vector) is a vec file<br />
to stimulate or compare bus [15-0], vin, and vout.<br />
Figure 6 shows the sample file. The rise time 3ns and fall time<br />
2.25ns are applied to all input signals (bus[15-0], vin). The<br />
output resistance 100 Ohms is applied to input (biput) signals<br />
(bus[11-8]) when the state L/H/Z are applied to the signals at<br />
times 200ns, 300ns, and 500ns.<br />
;<br />
; test_vector: an example vec file<br />
;<br />
; bus[15-0] vinvout<br />
radix 4444 1 1<br />
io iiii i o<br />
rise 3.00<br />
fall 2.25<br />
;<br />
;<br />
output_resistance 100<br />
; output resistance applied to all input<br />
; signals when the input states are L/H/Z.<br />
0.00 3A58 0 1<br />
100.00 5050 1 0<br />
200.00 5H50 1 0<br />
300.00 9L9E 0 1<br />
400.00 604B 0 1<br />
Figure 6 Sample vector file<br />
DESCRIPTION:<br />
This function provides a method for reading in a file containing<br />
input stimuli and output comparison. The stimulus and<br />
comparison information is organized in a tabular format with<br />
absolute times on the left and data vectors on the right.
Function Definitions 235<br />
The rise/fall/slope time can be specified for the signals in the<br />
vector file. The signal radix and its type (input, output, biput)<br />
can also be specified. For input and biput signals, the stimulus<br />
drive resistance can be specified by the keyword out. See<br />
output_resistance in the “Vector File Format” on page 239.<br />
The valid state characters for input stimuli and output<br />
comparison are documented in “State Characters Used by <strong>EPIC</strong><br />
<strong>Tools</strong>” on page 248.<br />
Command Argument Description<br />
vector_file Specifies the file to be read. It can<br />
be either a full pathname or a<br />
relative pathname, as long as the<br />
search path can locate the vector<br />
file containing the vectors used to<br />
force the specified nodes to the<br />
proper values during simulation.<br />
signal_list Specifies the nodes to be forced or<br />
compared.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
236 Chapter 5 Stimuli and State Checking<br />
vec_chk<br />
SYNTAX:<br />
(is=vec_chk) (en=vector_file) (it=signal_list);<br />
EXAMPLE:<br />
(is=vec_chk)(en=alu.chk)(it=a1,b[1-0],fbus[39-0]);<br />
This is an example of an entry in a <strong>EPIC</strong> netlist that calls the<br />
vec_chk function. It specifies the file (alu.chk) where the<br />
vectors are found. The nodes in the <strong>EPIC</strong> netlist that are checked<br />
are a1, a single bit signal; b[1] and b[0], two bits from the bus<br />
labeled b; and 40 bits from fbus.<br />
Figure 7 shows how typical data in the alu.chk file might appear.<br />
Comments are preceded by a semicolon. The radix statement<br />
matches the bit width of the specified nodes: 1 matches the<br />
single-bit a1; 2 matches the two-bit width of b[1-0]; and so<br />
forth. The actual vectors are specified with floating point times<br />
in the left fields and the vector values in the right fields. At time<br />
100 ns, the line is extended to the next line using a backslash.<br />
;this illustrates the features of the vec_chk format<br />
radix 12 4444444444 ;specifies signal radix<br />
;time is on the left and signals on the right<br />
10 10 7f00001111<br />
10.37 11 adadaDadad<br />
14.2 01 3333333333<br />
100 01 010\<br />
10107f7<br />
100.13 1222 12345689<br />
;columns are deliberately misaligned to show generality but<br />
;would in most cases be aligned for ease of reading<br />
Figure 7 vec_chk file sample<br />
DESCRIPTION:<br />
This function provides a method of reading in a file containing<br />
expected data values. The expected data information is<br />
organized in a tabular format that has absolute time on the left<br />
and data vectors on the right. See the TimeMill or PowerMill<br />
reference guide. Any differences between the expected data
Function Definitions 237<br />
stored in vector files and the simulation results are flagged with<br />
an error message in the .err file.<br />
The data file for vec_chk follows the same format as for vec,<br />
with the exception that the io, output_resistance (out), slope,<br />
rise, and fall commands are not necessary because all vectors<br />
are expected outputs. See the “Vector File Format” on page 239<br />
for details.<br />
Command Argument Description<br />
vector_file Specifies the file to be read<br />
containing expected data. It can be<br />
a full pathname or a relative<br />
pathname, as long as the search<br />
path can locate the vector file.<br />
signal_list Specifies the nodes in the <strong>EPIC</strong><br />
netlist to be checked by this<br />
function. Notice that vec_chk uses<br />
it, not ot, to call signal_list, because<br />
it is a monitor, not a signal<br />
generator.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
238 Chapter 5 Stimuli and State Checking<br />
zero<br />
SYNTAX:<br />
(is=zero) (en=element_name) (ot=signal_list);<br />
EXAMPLE:<br />
(is=zero)(en=Z0)(ot=A1,BK,DL);<br />
This example sets A1, BK, and DL to constant ZERO.<br />
DESCRIPTION:<br />
The stimulus specification ZERO sets the stimulus value to a<br />
constant ZERO.<br />
Output State Comparison<br />
All vector stimulus functions (nsvt, vec, vec_chk) in the <strong>EPIC</strong><br />
netlist can be used to specify vector files to check the circuit’s<br />
state during simulation. In addition to state comparison, the<br />
vector files specified in the nsvt and vec functions can also be<br />
used to specify input stimuli to drive the circuit. For more<br />
information, see “Stimulus Functions and Vector Functions” on<br />
page 219.<br />
The logic state of a node is defined by the state level and state<br />
attributes (see “Logic States” on page 248 for details). By<br />
default, the simulator calculates only the state levels for all<br />
nodes. The state attributes are not simulated due to the<br />
computation overhead associated with these attributes. You need<br />
to use configuration commands such as vchk_node_opt or<br />
print_node_opt to instruct the simulator to simulate these<br />
attributes.<br />
At the comparison times specified in the vector file, the output<br />
vectors are compared with the circuit’s state. A node passes the<br />
state comparison only if both its state level and state attributes<br />
match the state character specified in the vector file.<br />
For example, assume that vchk_node_opt z_state=1 is given<br />
in the configuration file, and a node is at the “1” state. The
Vector File Format<br />
delay<br />
Vector File Format 239<br />
expected state specified in the vector file is “H.” The simulator<br />
flags a state comparison error for the node since the node is not<br />
at the expected floating state.<br />
This section describes vector file format conventions. This file,<br />
which is also referred to as the stimulus file, is used for stimulus<br />
and output comparison applications in nsvt, vec, and vec_chk.<br />
The vector file commands are: delay, fall, high, io, low,<br />
output_resistance (out), radix, rise, signal, slope, time_scale,<br />
and type. Their descriptions follow.<br />
This command is used by nsvt, vec and vec_chk.<br />
The delay statement causes the applying time for each vector in<br />
the vec, vec_chk, ornsvt file to have the specified time delay. The<br />
default units for delay time are nanoseconds and can be scaled<br />
up or down by the time_scale command. The time delay can be<br />
positive or negative. For positive delay, the first state of a vector<br />
will be used for vector initialization. For negative delay, the state<br />
of the vector at time 0 will be used for vector initialization.<br />
SYNTAX:<br />
delay delay_value<br />
EXAMPLE:<br />
delay 90.5<br />
The delay in this example causes a 90.5 ns time delay of the<br />
applying time for each vector in the nsvt or vec file.<br />
EXAMPLE:<br />
delay -25.0<br />
The delay in this example causes a -25ns time shift against the<br />
time for each vector in the nsvt or vec file.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
240 Chapter 5 Stimuli and State Checking<br />
high<br />
low<br />
EXAMPLE:<br />
Consider the following sample values in the vec file:<br />
Time 0 10 20 30<br />
A 1 0 1 0<br />
If delay=10, at time 0, A is assigned with the value 1.<br />
The realized values for A are<br />
Time 0 10 20 30 40<br />
A 1 1 0 1 0<br />
If delay=-10, at time 0, A is assigned with the value 0.<br />
The realized values for A are<br />
Time 0 10 20<br />
A 0 1 0<br />
If delay=-5, at time 0, A is assigned with the value of 1.<br />
The realized values for A are<br />
Time 0 5 15 25<br />
A 1 0 1 0<br />
These commands are used by nsvt and vec.<br />
The high and low statements can be used to describe the high<br />
voltage (one) and low voltage (zero) for input and biput nodes.<br />
The unit for voltage values is Volt.
io<br />
SYNTAX:<br />
high high_voltage<br />
low low_voltage<br />
Vector File Format 241<br />
EXAMPLE:<br />
high 3.3<br />
low 0.0<br />
The high/low voltages of individual nodes can be overridden by<br />
configuration commands set_vec_opt and set_node_stv.<br />
This command is used by nsvt and vec.<br />
An io statement containing input and output signals can be<br />
placed after radix to indicate that both input and output signals<br />
are specified in the data file. The statement begins with io,<br />
followed by i,b,o, oru. If the io line is not used in vec or nsvt<br />
files, all signals are treated as inputs.<br />
The<br />
Indicates that the corresponding signal is:<br />
character:<br />
i input<br />
b bidirectional input (with L/H/Z stimuli)<br />
o output<br />
u unused<br />
Here is an example of an io statement:<br />
EXAMPLE:<br />
io iiiioooobobobouu<br />
An i indicates that the corresponding signal is an input and the<br />
stimulus is used to stimulate the circuit.<br />
NOTE: A warning message is generated whenever an input node is not<br />
connected to any element or functional model in the vector input<br />
file.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
242 Chapter 5 Stimuli and State Checking<br />
As a convenience for identifying bidirectional input and output<br />
pairs, you can use a b identifier to indicate bidirectional inputs.<br />
The simulator will also preview your vector files. See<br />
vchk_node_opt in the TimeMill or PowerMill reference guide to<br />
decide if any input signal line needs to be simulated as a biput<br />
signal. This conversion happens when the input signal has an L,<br />
H, or Z state since these states mean that the signal is not an<br />
ideal voltage source, so it becomes bidirectional. See “Input<br />
Stimulus Characters in Vector Files” on page 251.<br />
A node can be driven by an input/biput signal and at the same<br />
time checked by output signals in the same vec file. This is done<br />
by using an io statement to specify which column of the vector is<br />
for input/biput stimuli and which column of the vector is for<br />
output comparison.<br />
An o indicates that the corresponding signal is to be used to<br />
check the simulation result. That is, the specified output value<br />
at the specified time is to be compared against the simulated<br />
result. If they are different, an error message is reported in the<br />
.err file.<br />
A u indicates that the corresponding signal column is to be<br />
ignored by the simulation.<br />
output_resistance<br />
This command is used by nsvt and vec.<br />
A drive resistance can be specified for primary inputs or biputs<br />
using the output_resistance command or the keyword out. The<br />
primary inputs/biputs must be in state the L or H state in order<br />
for the simulator to simulate the drive resistance.<br />
If 0 or 1 is specified for input/biput signals, the simulator will<br />
ignore the drive resistance because 0 or 1 means a strong drive.<br />
If output_resistance is not specified for an input/biput signal<br />
with an L or H state, it will be treated as floating, which is the<br />
same as specifying infinite drive resistance because the circuit is<br />
open.<br />
The drive strength is defined with a resistance value in ohms,<br />
and it follows the keyword out.<br />
This drive resistance can be overridden by the configuration<br />
command set_vec_opt.
period<br />
radix<br />
Vector File Format 243<br />
The following example shows the first two input signals with a<br />
drive strength of 150 Ohms:<br />
EXAMPLE:<br />
radix 1111444411<br />
slope 1.5<br />
io iiibooooii<br />
out 150<br />
0 LL11ae2201<br />
50 1001773411<br />
This command is used by nsvt only.<br />
A period statement specifies the fixed time interval applied<br />
between two consecutive vectors in the nsvt file. The time unit is<br />
nanosecond.<br />
SYNTAX:<br />
period time_in_ns<br />
EXAMPLE:<br />
period 2.5<br />
This statement specifies the interval to apply vectors is 2.5 ns.<br />
This command is used by nsvt, vec and vec_chk.<br />
The first non-comment line in the file may specify the number of<br />
bits (the radix) associated with each input signal. The format for<br />
this line is radix as the first non-white space, followed by a data<br />
sequence representing the radix for each column. The format is<br />
shown in the following example:<br />
EXAMPLE:<br />
radix 1111 441313412 2231 4444444<br />
This example indicates four single-bit binary signals followed by<br />
two hex signals, followed by a binary, then an octal, and so on. If<br />
no radix is specified, it is automatically assumed that all signals<br />
are binary signals.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
244 Chapter 5 Stimuli and State Checking<br />
rise<br />
fall<br />
slope<br />
signal<br />
These commands are used by nsvt and vec.<br />
<strong>EPIC</strong> defines rise/fall as 0%-100% for a rising edge, and 100%-0%<br />
for a falling edge. You can specify the rise and fall times<br />
individually with rise and fall statements. All of the time<br />
parameters are specified in nano-seconds.<br />
SYNTAX:<br />
rise rise_value<br />
fall fall_value<br />
The rise and fall times can also be specified with a single slope<br />
statement.<br />
SYNTAX:<br />
slope slope_value<br />
This statement causes the rise and fall times of all the vectors in<br />
the vec or nsvt file to have the nanosecond value specified in<br />
slope_value. The default is 0 nanoseconds. This command is not<br />
used by vec_chk.<br />
The rise/fall/slope can be overridden by the configuration<br />
command set_vec_opt.<br />
NOTE: The absolute time of each vector must increase by at least the<br />
slope value from the previous waveform.<br />
This command is used by nsvt, vec and vec_chk.<br />
The signal specifies the list of input/output signal names. If you<br />
do not want to use the <strong>EPIC</strong> netlist to call this vector file, use<br />
type and signal. See “Running the Vector File Using type and<br />
signal Commands” on page 247.<br />
SYNTAX:<br />
signal node_names...
time_scale<br />
type<br />
Time Value<br />
Vector File Format 245<br />
EXAMPLE:<br />
signal a1 b[1-0] c[2-0]<br />
This example shows that the vector file is driving/monitoring six<br />
signals: a1, b[1], b[2], c[2], c[1], c[0].<br />
This command is used by nsvt, vec, and vec_chk.<br />
The time_scale command specifies a scaling factor for all the<br />
time values in the vector file including rise/fall/slope.<br />
SYNTAX:<br />
time_scale scaling_factor<br />
EXAMPLE:<br />
time_scale 0.001<br />
Scales all the time values by 0.001.<br />
This command is used by nsvt, vec and vec_chk.<br />
The type command specifies the vector file type. Valid vector file<br />
types are vec, vec_chk and nsvt. If you do not want to use the<br />
<strong>EPIC</strong> netlist to call the vector file, use type and signal. See<br />
“Running the Vector File Using type and signal Commands” on<br />
page 247.<br />
SYNTAX:<br />
type vector_file_type<br />
EXAMPLE:<br />
type vec<br />
The time value for each vector is specified in the first non-white<br />
space on any line. The units are nanoseconds and may be<br />
integral or decimal, with a resolution down to .01 ns. This time<br />
entry is accepted only by vec and vec_chk; nsvt does not accept<br />
time.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
246 Chapter 5 Stimuli and State Checking<br />
Data Vectors<br />
Continuing Data<br />
Valid States<br />
Comments<br />
Examples<br />
For nsvt, the keyword period, followed by a value in<br />
nanoseconds, defines the vector time intervals. Each new vector<br />
is applied one period after the previous vector.<br />
The actual data vectors follow the time specification. There must<br />
be one data entry for every entry in the radix specifier. The data<br />
must be separated from the time entry by white space, but the<br />
data can contain white space.<br />
Data can be continued from one line to the next by terminating a<br />
line with a back slash (\). This allows the entry of very long<br />
groups of input signals. A carriage return indicates the end of a<br />
single data vector.<br />
Valid states are described in the section “State Characters Used<br />
by <strong>EPIC</strong> <strong>Tools</strong>” on page 248.<br />
Comments begin with a semicolon (;), and can appear at any<br />
point along a line. <strong>EPIC</strong> tools ignore characters that appear after<br />
a semicolon (;).<br />
The following syntax shows an example of an entry in the <strong>EPIC</strong><br />
netlist that calls the vec function.<br />
EXAMPLE:<br />
(is=vec)(en=test_vectors)(ot=a1,b[1-0],c[2-0],<br />
d[3-0],fbus[39-0], cntrl[8-0], rd, wr, ps, cs);<br />
This example specifies the test_vectors file in which the vectors<br />
are found. The nodes in the <strong>EPIC</strong> netlist that are forced are a1,<br />
a single-bit signal; b[1] and b[0], two bits from the bus labelled
Vector File Format 247<br />
b; three bits from bus c, four bits from bus d, 40 bits from fbus,<br />
and so on.<br />
Figure 8 shows typical data in the test_vectors file.<br />
;this illustrates the features of the vector input format<br />
radix 1234 4444444444 111111111 4 ;specifies bit count for each column<br />
slope 3.84 ;specifies the rise and fall time in ns.<br />
;time will be on the left and signals to the right<br />
0 0000 fffFff ffff 0101011111;note free format<br />
10 137f 0000 1111 33 111111111 5<br />
20 1111 adadaDadad 000000000 9<br />
30 0123 3333333333 111111111 4<br />
40 ZZZz uuuuuuuUuu 010101010 6\<br />
50 1222 123456890a 000000000 3<br />
;columns are deliberately misaligned to show generality but<br />
;would in most cases be aligned for ease of reading<br />
Figure 8 test_vectors file sample<br />
Semicolons begin comments. The radix statement has an entry<br />
for each column specifying the number of bits in each: 1 matches<br />
the single-bit signal a1; 2 matches the two-bit width of b[1-0];<br />
and so forth.<br />
The slope identifier causes the simulator to attach a 3.84ns rise<br />
and fall time to all the transitions specified. This rise and fall<br />
time starts at the transition times specified. For example, at<br />
10ns, the first bit changes from a zero to a one. The simulator<br />
starts this transition at 10ns and finishes the transition at<br />
13.84ns.<br />
The actual vectors are specified with floating-point times in the<br />
left fields and the vector values in the right fields. At time 40ns,<br />
high impedance and unknown states are specified.<br />
Running the Vector File Using type and signal Commands<br />
Instead of calling the vector functions by using an <strong>EPIC</strong> netlist,<br />
you can include the type and signal commands in the vector file<br />
and run the vector file with -nvec[tor] on the command line. The<br />
signal directions ot or it are automatically associated with the<br />
type of vector function specified.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
248 Chapter 5 Stimuli and State Checking<br />
The previous example can do away with the <strong>EPIC</strong> netlist by<br />
adding type and signal commands to the test_vectors file, as<br />
shown in the following example:<br />
EXAMPLE:<br />
type vec<br />
signal a1 b[1-0] c[2-0] d[3-0] fbus[39-0] cntrl[8-<br />
0] rd wr ps cs<br />
Then you can directly give the vector file to simulation tools:<br />
EXAMPLE:<br />
powrmill -n spice_netlist -nvec test_vectors.....<br />
This method is recommended if you are using non-<strong>EPIC</strong> netlist<br />
for simulation, such as SPICE, and you want to use the <strong>EPIC</strong><br />
vector file. Because if you use an <strong>EPIC</strong> netlist to call the vec<br />
function, then you will have a mixed netlist format. Unlike<br />
SPICE, <strong>EPIC</strong> format is case-sensitive and recognizes VDD as<br />
power node, so mixing the two netlist formats causes the netlist<br />
compiler to be case-sensitive, and the special node names defined<br />
in <strong>EPIC</strong> format are passed the to SPICE netlist also. So directly<br />
passing the vector files to simulation avoids the side effects of<br />
mixing netlist formats.<br />
State Characters Used by <strong>EPIC</strong> <strong>Tools</strong><br />
Logic States<br />
This section provides information about:<br />
■ logic states<br />
■ input stimulus characters in vector files<br />
■ expected output characters in vector files<br />
Since <strong>EPIC</strong> simulation tools use detailed device models to<br />
simulate the transistor-level circuits, the simulators can<br />
describe the circuit's logic state in a more detailed way than<br />
many switch-level and gate-level logic simulators.
State Characters Used by <strong>EPIC</strong> <strong>Tools</strong> 249<br />
A node's logic state is defined by two entities: state level and<br />
state attributes. There are three state levels: ZERO, ONE, and<br />
UNDEF (undefined). A node's state level is:<br />
■ ZERO, if its voltage is smaller than or equal to the node's low<br />
threshold voltage<br />
■ ONE, if its voltage is larger than or equal to the node’s high<br />
threshold voltage<br />
■ UNDEF, if its voltage is between the node’s high and low<br />
threshold voltages<br />
The state attributes are the special conditions associated with<br />
nodes. The attributes include: floating (high impedance state),<br />
unset condition, don't care (X), and biput driving.<br />
For example, a state level ONE with the floating attribute is the<br />
“H” state. A state level ZERO with non-biput-driving is the “N”<br />
state.<br />
The physical meanings of the state attributes are:<br />
■ floating: The node is not driven by any source nodes through<br />
any conducting paths. It is also referred to as high<br />
impedance state to reflect the fact that all paths from source<br />
nodes to the floating node are with high impedance.<br />
■ unset condition: A node is in the unset condition if it is never<br />
explicitly initialized by set_node_ic nor set by signals<br />
propagated from any source nodes. The unset condition<br />
indicates the node is never meaningfully set, and its voltage<br />
value may be meaningless. Once it is set by a meaningful<br />
signal, it will not return to the unset condition.<br />
For example, a dangling node’s state is in the unset<br />
condition. Although an <strong>EPIC</strong> simulator and many SPICE<br />
simulators assign 0V to a dangling node, the node can have<br />
any voltage value in a real circuit.<br />
■ X-state (don’t care, unknown): Represents that the node’s<br />
state is unknown. It can be ONE, ZERO, ‘Z’, and so on. In<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
250 Chapter 5 Stimuli and State Checking<br />
synthesis terms, X-state means “don’t care”, which can be<br />
used to simplify the Boolean sum of products.<br />
The X-state propagation is different from the unset condition<br />
calculation as follows:<br />
◆ X-state is a valid input state (from vector stimuli<br />
configuration command set_node_icx). The unset<br />
condition cannot be an input state.<br />
◆ A node can change from X-state to another state, and go<br />
back to X-state later. A node can never go back to the<br />
unset state if it has been set.<br />
■ biput-not-driving: indicates that a biput node is not driven<br />
by the external source at this moment, and its state is<br />
determined by the node’s neighboring circuit.<br />
There is a precedence ordering among the state attributes:<br />
unset > don't care > floating > biput driving<br />
This means if a node is floating and unset, it will be reported as<br />
unset.<br />
A set of 11 characters are used to represent node logic states.<br />
There is a corresponding set of integer numbers for the state<br />
characters to be used in the .out file.<br />
The following table lists all state characters, with corresponding<br />
state numbers shown in parentheses.<br />
State Level logic-0 logic-1 UNDEF<br />
Attributes State Characters and Numbers<br />
plain state<br />
(no attribute)<br />
‘0’ (0) ‘1’ (1) ‘U’ (2)<br />
floating ‘L’ (3) ‘H’ (4) ‘Z’ (5)
NOTE: All state characters are case-insensitive.<br />
Input Stimulus Characters in Vector Files<br />
State Characters Used by <strong>EPIC</strong> <strong>Tools</strong> 251<br />
State Level logic-0 logic-1 UNDEF<br />
Attributes State Characters and Numbers<br />
biput not<br />
driving<br />
‘N’ (6) ‘T’ (7) ‘Y’ (8)<br />
unset ‘?’ (9) ‘?’ (9) ‘?’ (9)<br />
don’t care ‘X’ (10) ‘X’ (10) ‘X’ (10)<br />
The following table lists the acceptable state characters to<br />
specify the input stimuli in the vector file. They are the state<br />
characters for the single-bit signals. (See “radix” on page 243 for<br />
details.) For multiple-bit signals, hexadecimal numbers '0', '1',<br />
'2', ..., '9', 'A', 'B', ..., 'F' can be used. If any non-numerical state<br />
character is specified for a multiple-bit signal, it means all bits<br />
of the signal are in the specified state. All input state characters<br />
are case-insensitive.<br />
Input State Definition<br />
‘0’ drive to logic ZERO<br />
‘1’ drive to logic ONE<br />
‘U’ drive to logic ZERO (same as '0')<br />
‘L’ + floating to logic ZERO; or<br />
+ resistive drive to logic ZERO<br />
‘H’ + floating to logic ONE; or<br />
+ resistive drive to logic ONE<br />
‘Z’ floating (not driving)<br />
‘X’ + drive to X (don’t care) state if X-state<br />
propagation is requested; or<br />
+ drive to logic ZERO (same as ‘0’)<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
252 Chapter 5 Stimuli and State Checking<br />
When a floating state ('L', 'H', 'Z') is specified for the input signal<br />
and no drive resistance is specified (which is the same as<br />
specifying infinite drive resistance), the node state is determined<br />
by circuit elements connected to the node. If a drive resistance is<br />
specified for the signal by either the keyword out in the vector<br />
file or the configuration command set_vec_opt r=, ‘L’ and ‘H’<br />
will work as described on in the section “output_resistance” on<br />
page 242.<br />
If the node is not channel-connected to any other elements, 'L'<br />
will change the node's state to 'L' (floating with logic level<br />
ZERO); 'H' will change the node's state to 'H' (floating with logic<br />
level ONE); 'Z' will make the node floating and it state level<br />
unchanged.<br />
If 'X' is specified for the signal, it drives the node to X state when<br />
X-state propagation is turned on by configuration commands.<br />
Otherwise, 'X' is the same as input stimulus '0'.<br />
Expected Output Characters in Vector Files<br />
Since a node's logic state is defined by two entities (state level<br />
and state attributes), the output vectors check state levels as<br />
well as state attributes.<br />
For example, if vchk_node_opt z_state=1 is used, the<br />
expected state 'H' will check if a node is floating and at state<br />
level ONE. If the node is not floating or not at state level ONE, a<br />
comparison error will be flagged. The expected state '1' will<br />
check if a node is NOT floating and at state level ONE.<br />
If vchk_node_opt z_state=1 is not used, both 'H' and '1' will<br />
only check if a node is at state level ONE. The node's floating<br />
attribute will not be checked.<br />
The following tables list all the acceptable state characters for<br />
expected outputs in the vector file for TimeMill and PowerMill.<br />
They are the state characters for the single-bit signals. For the<br />
multiple-bit signals, hexadecimal numbers '0', '1', '2', ..., '9', 'A',<br />
'B', ..., 'F' can be used. If any non-numerical state character is
State Characters Used by <strong>EPIC</strong> <strong>Tools</strong> 253<br />
specified for a multiple-bit signal, it means all bits of the signal<br />
are in the specified state. All output state characters are caseinsensitive.<br />
For more information, see “radix” on page 243.<br />
TimeMill<br />
Expected State Definition<br />
‘-’ don’t check<br />
‘0’ logic ZERO<br />
‘1’ logic ONE<br />
‘U’ logic ZERO if vchk_node_opt u_state=2<br />
or<br />
logic UNDEF if vchk_node_opt<br />
u_state=1<br />
or<br />
don’t check if vchk_node_opt u_state=0<br />
‘L’ logic ZERO<br />
and<br />
floating if z_state is checked<br />
‘H’ logic ONE<br />
and<br />
floating if z_state is checked<br />
‘Z’ the same as expected state ‘U’<br />
and<br />
floating if z_state is checked<br />
‘N’ logic ZERO<br />
and<br />
biput node driven by circuit if<br />
biput_drive is checked<br />
‘T’ logic ONE<br />
and<br />
biput node driven by circuit if<br />
biput_drive is checked<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
254 Chapter 5 Stimuli and State Checking<br />
TimeMill<br />
Expected State Definition<br />
‘Y’ the same as expected state ‘U’<br />
and<br />
biput node driven by circuit if<br />
biput_drive is checked<br />
‘X’ the same as ‘-’<br />
or<br />
X state if x_state is checked<br />
‘?’ the same as ‘-’<br />
or<br />
unset_state if unset_state is checked<br />
PowerMill<br />
Expected State Definition<br />
‘-’ don’t check<br />
‘0’ logic ZERO<br />
‘1’ logic ONE<br />
‘U’ logic ZERO if vchk_node_opt u_state=2<br />
or<br />
logic UNDEF if vchk_node_opt<br />
u_state=1<br />
or<br />
don’t check if vchk_node_opt u_state=0<br />
‘L’ logic ZERO<br />
and<br />
floating if z_state is checked<br />
‘H’ logic ONE<br />
and<br />
floating if z_state is checked<br />
‘Z’ the same as expected state ‘U’<br />
and<br />
floating if z_state is checked
State Characters Used by <strong>EPIC</strong> <strong>Tools</strong> 255<br />
PowerMill<br />
Expected State Definition<br />
‘N’ the same as expected state ‘0’<br />
‘T’ the same as expected state ‘1’<br />
‘Y’ the same as expected state ‘U’<br />
‘X’ the same as ‘-’<br />
‘?’ the same as ‘-’<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
256 Chapter 5 Stimuli and State Checking
Chapter 6<br />
batchrun Program
258 Chapter 6 batchrun Program
Overview<br />
Overview 259<br />
The batchrun script runs TimeMill, PathMill, PowerMill, or<br />
AMPS in batch mode with various parameters.<br />
SYNTAX:<br />
batchrun product_name batch_file<br />
DESCRIPTION:<br />
The batchrun command runs a script you have written.<br />
Command Argument Definition<br />
product_name timemill, pathmill, powrmill, or<br />
amps.<br />
batch_file Specifies the name of the batch<br />
script you wrote.<br />
Distributed Computing Capability<br />
The batchrun program can distribute jobs to multiple<br />
computers. Multiple jobs can be executed concurrently. The<br />
information required is in a host file that specifies the host<br />
names of available computers.<br />
To perform distributed computing, all filenames in the batchfile<br />
must be in the network-full-path format or in relative paths to<br />
the working directory. A network full path means a pathname<br />
which is accessible to multiple computers through computer<br />
networks, with all computers referring to the same file or<br />
directory by giving a network full path name. The working<br />
directory is the directory specified by the environment variable<br />
<strong>EPIC</strong>_BATCHRUN_DIR, or the directory where the batchrun<br />
script is executed if <strong>EPIC</strong>_BATCHRUN_DIR is not set.<br />
It is important to designate different outputs using the -o option<br />
for different job runs. Since multiple jobs are run simultaneously<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
260 Chapter 6 batchrun Program<br />
on multiple computers, their outputs might overwrite each other<br />
if they use the same output file.<br />
The batchrun.hosts file specifies the host names of the computers<br />
to execute different jobs. Its format is one host name per line.<br />
EXAMPLE:<br />
maui<br />
oahu<br />
lanai<br />
maui<br />
In this example, maui, oahu, and lanai are host names of<br />
available computers, and maui is a multiprocessor computer<br />
capable of running two jobs at the same time. Once a computer<br />
completes a job, batchrun assigns a new one to it.<br />
It searches for the host file in the following order:<br />
1 Checks for the environment variable<br />
<strong>EPIC</strong>_BATCHRUN_HOSTS, which sets a path to the host<br />
file.<br />
2 Uses the batchrun.hosts host file in the working directory.<br />
3 If steps 1 and 2 fail, uses only the local host to run jobs.<br />
The batchrun program generates a temporary Bourne shell<br />
script in the working directory for the program command<br />
execution. This temporary script will be deleted after batchrun<br />
is completed. Therefore, you must have write permission to the<br />
working directory.<br />
The batchrun program uses remote shell rsh to invoke remote<br />
processes for running a job on a remote computer. The pathname<br />
of the working directory must be visible to all computers<br />
specified in the host file. If <strong>EPIC</strong>_BATCHRUN_DIR is not set,<br />
the program uses a Bourne shell environment variable, PWD, to<br />
set the working directory, that is, the directory where the<br />
batchrun command is executed. Depending on the network file<br />
system setup, PWD might not be a network full path. You should
Batchfile Format<br />
FILE<br />
Batchfile Format 261<br />
set <strong>EPIC</strong>_BATCHRUN_DIR before starting the batchrun<br />
program. <strong>EPIC</strong>_BATCHRUN_DIR must be a network full path.<br />
If you encounter permission problems while doing rsh, see your<br />
system administrator. Also, see the UNIX manual page on rsh<br />
for details.<br />
The batchfile has three statements: FILE, RUN, and DATA.<br />
Each statement keyword must start at the beginning of a line.<br />
You can set off comments in the batchfile by beginning the<br />
comment line with a pound sign (#). You can include comments in<br />
FILE and DATA statements.<br />
SYNTAX:<br />
FILE filename<br />
<br />
<br />
<br />
...<br />
END<br />
EXAMPLE:<br />
FILE temp.config<br />
add_node_cap N1 $CLOAD1<br />
add_node_cap N2 $CLOAD1<br />
END<br />
EXAMPLE:<br />
This example creates a file called temp.config and includes as<br />
its contents add_node_cap N1 and add_node_cap N2.The<br />
parameters are preceded by dollar sign ($). The parameter<br />
values are specified in the DATA statement.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
262 Chapter 6 batchrun Program<br />
RUN<br />
DATA<br />
DESCRIPTION:<br />
The FILE statement specifies the file to be created and the<br />
contents in the file. You can specify the FILE statement more<br />
than once in the batchfile.<br />
SYNTAX:<br />
RUN arguments<br />
EXAMPLE:<br />
RUN -n NET -p $TECH<br />
This syntax runs the <strong>EPIC</strong> tool on the NET netlist and uses the<br />
technology files specified by the TECH parameter in the DATA<br />
statement.<br />
DESCRIPTION:<br />
The RUN statement specifies the command-line options for<br />
TimeMill, PathMill, PowerMill or AMPS. You can specify the<br />
RUN statement only once in the batchfile.<br />
Arguments for the RUN statement can be parameters specified<br />
in the DATA statement by preceding the parameter name with a<br />
dollar sign ($).<br />
SYNTAX:<br />
DATA param1 param2 param3 ...<br />
<br />
<br />
<br />
<br />
...<br />
END
Batchfile Format 263<br />
EXAMPLE:<br />
DATA CLOAD1 TECH OUTFILE<br />
10 best_5v.tech best_5v_c10<br />
20 best_5v.tech best_5v_c20<br />
100 best_5v.tech best_5v_c100<br />
10 worst_4.5v.tech worst_4.5v_c10<br />
20 worst_4.5v.tech worst_4.5v_c20<br />
100<br />
END<br />
worst_4.5v.tech worst_4.5v_c100<br />
DESCRIPTION:<br />
The DATA statement specifies the value of the parameters for<br />
each run. The list of parameter names follows DATA in the<br />
command line. Each set of parameter values is specified on a<br />
separate line. Each value is separated by a space. Each set is<br />
used to run the simulator once. Parameters are referred to in the<br />
FILE and RUN statements (similar to specifying shell variables<br />
in a UNIX shell using $name). The DATA statement can be<br />
specified only once in the batchfile and must be the last<br />
statement in the file. All lines that appear after END in the<br />
DATA statement are ignored.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
264 Chapter 6 batchrun Program<br />
Batchfile Example<br />
Figure 1 shows a sample batchfile for running TimeMill with<br />
different loading capacitances and technology files.<br />
batchrun timemill batchfile<br />
batchfile:<br />
---------------------------------<br />
# to specify capacitances for nodes N1 and N2<br />
FILE temp.config<br />
add_node_cap N1 $CLOAD1<br />
add_node_cap N2 $CLOAD1<br />
END<br />
RUN -n net -p $TECH -c config1 temp.config -t 100 -o $OUTFILE<br />
DATA CLOAD1 TECH OUTFILE<br />
10 best_5v.tech best_5v_c10<br />
20 best_5v.tech best_5v_c20<br />
100 best_5v.tech best_5v_c100<br />
10 worst_4.5v.tech worst_4.5v_c10<br />
20 worst_4.5v.tech worst_4.5v_c20<br />
100 worst_4.5v.tech worst_4.5v_c100<br />
END<br />
Figure 1 Sample batchfile for running TimeMill<br />
Six simulations will be run for this TimeMill batchrun. The<br />
output file best_5v_c10 will contain the result of a simulation<br />
performed using best_5v.tech as the technology file, including a<br />
load of 10fF on nodes N1 and N2.<br />
The other runs use:<br />
Load on N1 & N2 Technology File Output<br />
20fF best_5v.tech best_5v_c20.out<br />
100fF best_5v.tech best_5v_c100.out<br />
10fF worst_4.5v.tech worst_4.5v_c10.out<br />
20fF worst_4.5v.tech worst_4.5v_c20.out<br />
100fF worst_4.5v.tech worst_4.5v_c100.out
Chapter 7<br />
Utilities for Dynamic <strong>EPIC</strong><br />
<strong>Tools</strong>
266 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong>
Overview<br />
Meas Utility<br />
Overview 267<br />
This chapter describes the various utilities you can use to specify<br />
the type of information you want to obtain from simulation<br />
results. These utilities are:<br />
■ Meas: Computes the results of .measure statements in<br />
SPICE or HSCPICE netlists<br />
■ Edisplay: Controls the formation of simulation results<br />
■ Eview: Views simulation results via a graphical interface<br />
The SimWave and turboWave utilities enable you to view<br />
analog and digital waveforms.<br />
This chapter also presents two utilities that enable vector file<br />
translation: vcd2e and VTRAN.<br />
These utilities are described in the following sections.<br />
This is a post-processing utility for computing the results of<br />
.meas (or .measure) statements in SPICE or HSPICE netlists.<br />
This utility allows you to find the .meas results without running<br />
an entire simulation. This is useful, for example, if you want to<br />
modify the .meas statements in the netlist and compute the new<br />
results without having to rerun the entire simulation.<br />
To run the meas utility, you need to have an <strong>EPIC</strong> or FSDB<br />
output file and a SPICE netlist containing .meas statements.<br />
When the meas utility is run, it first parses the .out or the .fsdb<br />
file to get the signal waveforms and then generates results for<br />
the .meas statements specified in the given netlist. All signals in<br />
the netlist must have corresponding waveforms in the output file<br />
or the utility will fail.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
268 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Command Syntax<br />
Command-line Options<br />
meas [-p]<br />
[-n netlist_file]<br />
[-s <strong>EPIC</strong>_out_file]<br />
[-o meas_out_file]<br />
The meas command-line options are:<br />
-p Forces meas to parse only the .meas statements in the netlist.<br />
Setting this option reduces CPU time and memory<br />
consumption. If this option is not set, meas will parse the<br />
entire netlist.<br />
CAUTION: Under the following two conditions, using this option could cause<br />
Meas to fail to generate results: 1) the .meas statements contain<br />
nodes aliased to some other nodes, or 2) the .meas statements<br />
contain signals like i(X), where X denotes an element.<br />
-n Specifies a SPICE or HSPICE netlist file containing .meas<br />
statements.<br />
-s Specifies the <strong>EPIC</strong> (or FSDB) output file to be used as input<br />
to the Meas utility, for example, powrmill.out.<br />
-o Specifies the name of the output file generated by the Meas<br />
utility. The default filename is meas.meas.
Edisplay Utility<br />
Command Syntax<br />
Edisplay Utility 269<br />
Edisplay is a program that controls formatting of simulation<br />
results. It shows the simulation output as a table of logic states<br />
and floating point values. The translation between the logic state<br />
value stored in the output file and the Edisplay output is shown<br />
in the following table. The <strong>EPIC</strong> output file numbers are defined<br />
in the section describing the double integer line on page 317.<br />
<strong>EPIC</strong> Output File Edisplay Output<br />
0 0<br />
1 1<br />
2 U<br />
3 L<br />
4 H<br />
5 Z<br />
6 N<br />
7 T<br />
8 Y<br />
9 ?<br />
10 X<br />
edisplay [-i in_file_name]<br />
[-b begin_time]<br />
[-e end_time]<br />
[-f control_file]<br />
[-h]<br />
[-m error_file]<br />
[-I]<br />
[-o out_filename]<br />
[-p caption_step]<br />
[-r]<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
270 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Command-line Options<br />
[-s interval_step]<br />
[-t]<br />
[-d delay_measure_file]<br />
[-g time_tolerance]<br />
[-w sp_pwl_inode]<br />
[-v sp_pwl_file]<br />
[-l]<br />
This section defines the command-line options for the edisplay<br />
command.<br />
-i in_file_name<br />
Specifies the input file to Edisplay, such as powrmill.out or<br />
timemill.out. If the -i option is not specified, Edisplay looks<br />
first for timemill.out, then powrmill.out.<br />
-b begin_time<br />
Specifies the beginning time step to be printed. The default<br />
is 0.0 ns.<br />
-e end_time<br />
Specifies the ending time step to be printed. The last time<br />
printed is the most recent event at or before the specified<br />
time. The default is the ending time of the simulation.<br />
-f control_file<br />
Specifies the name of the control file you wish to use. This<br />
file lets you specify which signals to display and their<br />
formats (that is, binary, hex, and so on). See the “Edisplay<br />
Control File” on page 275.<br />
-h Command-line help.<br />
-m error_file<br />
Merges the comparison errors into the output. An asterisk<br />
(*) is used to mark the lines that have errors. If a<br />
comparison error appeared in the timemill.err file, then<br />
edisplay -m timemill.err produces the result shown in<br />
the following example:
EXAMPLE:<br />
Edisplay Utility 271<br />
T ......<br />
I n.nnnO<br />
M nInnnU<br />
E 1N234T<br />
0.00 011010<br />
4.00 *U-----<br />
5.00 *-----1<br />
10.00 100101<br />
20.00 100101<br />
23.00 *-----0<br />
30.00 100101<br />
35.00 *--U---<br />
40.00 10010<br />
If specified with the -s option, error lines are printed even<br />
if the error does not occur at the time interval specified by<br />
the -s option.<br />
EXAMPLE:<br />
output_filter edisplay -I<br />
-I Instructs Edisplay to read the input from the standard<br />
input device. This is useful when running TimeMill or<br />
PowerMill in the interactive mode. The configuration file<br />
command shown in the preceding example gives a text<br />
display of the simulation results while the simulation<br />
continues to run.<br />
-o out_filename<br />
This option specifies the name of the output file containing<br />
the simulation result of Edisplay processing. If this option<br />
is not used, the output goes to the standard output.<br />
EXAMPLE:<br />
......O<br />
......U<br />
T ..d...T<br />
I ppa...P<br />
M hht...U<br />
E 12aABCT<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
272 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
0.00 000UUUU<br />
10.00 100UUUU<br />
10.25 1001UUU<br />
20.00 1011UUU<br />
20.82 1010UUU<br />
30.00 0010UUU<br />
35.00 0110UUU<br />
35.01 01100UU<br />
35.02 011001U<br />
35.03 0110010<br />
40.00 0100010<br />
55.00 0000010<br />
60.00 1000010<br />
61.47 1001010<br />
80.00 0001010<br />
85.00 0101010<br />
85.01 0101110<br />
85.49 0101100<br />
86.08 0101101<br />
-p caption_step<br />
Inserts the signal caption section at specified intervals in<br />
the simulation results. This is the number of lines to be<br />
printed between signal captions. It is useful for splitting<br />
the output file into printable pages. The default displays<br />
the caption only once.<br />
EXAMPLE:<br />
SCEDDDDLLLLC<br />
EKN01231111L<br />
R..........K<br />
I......BCAN.<br />
A........._.<br />
T L.........1.<br />
I _...........<br />
M I...........<br />
E N...........<br />
0.00 1U1UUUUUUUUU<br />
0.01 1U1UUUUUUUUU<br />
SCEDDDDLLLLC<br />
EKN01231111L<br />
R..........K
I......BCAN.<br />
A........._.<br />
T L.........1.<br />
I _...........<br />
M I...........<br />
E N...........<br />
0.08 1U1UUUUUUUUU<br />
0.19 1U1UUUUUUUU0<br />
0.29 1U11UUUUUUU0<br />
0.43 1U11UUU0U0U0<br />
0.43 1U11UUU0U0U0<br />
0.54 1U111UU010UU<br />
Edisplay Utility 273<br />
-r Changes the bottom-justified signal caption header to topjustified.<br />
The following table shows you the effect of using<br />
the -r option.<br />
With the -r Option Without the -r Option<br />
T ...... T InnnnO<br />
I .nnnnO I NnnnnU<br />
M InnnnU M .1234T<br />
E N1234T E ......<br />
-s interval_step<br />
Specifies the selected strobe time for output. For example,<br />
if the clock signal is invoked every 20 ns, interval_step can<br />
be set at 20 to print the result at each toggle of the clock.<br />
The interval step is offset by the beginning time; for<br />
example, the time specified by the -b option. The default<br />
beginning time is 0. If this option is not specified, an output<br />
display appears whenever any output signal changes.<br />
-t Prints the values of a signal only when it toggles or<br />
changes state. When a signal does not toggle, its state is<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
274 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
represented by a period (.). The default displays all signal<br />
states at each interval.<br />
-d delay_measure_file<br />
The name of the file that stores the result of the measure<br />
statement included in the control file specified by the -f<br />
option.<br />
-g time_tolerance<br />
Tolerance used for error merging of the -m option. Edisplay<br />
ignores errors within the tolerance of the time specified in<br />
nanoseconds. The time_tolerance argument is specified as<br />
a floating point.<br />
-w sp_pwl_node<br />
This option generates a SPICE PWL input command line<br />
for the specified analog node in the file given in the -v<br />
option. Only one node can be specified. When specifying the<br />
node, the signal type (v, i, I, or di/dt) must be given, and<br />
must be surrounded by single or double quotes.<br />
EXAMPLE:<br />
edisplay -w 'i(n2)' -v spice.file<br />
-v sp_pwl_file<br />
This specifies the name of the output file containing the<br />
PWL command line specified by the -w option.<br />
-l Instructs Edisplay to display only digital logic values, and<br />
to ignore all analog voltage or current values.<br />
DESCRIPTION:<br />
This command provides options to control the formatting of<br />
simulation results. Node names are written vertically in a<br />
caption at the top of each display table.<br />
CAUTION: Edisplay does not do interpolation. If Edisplay outputs lines<br />
between points of an analog signal, the value of the first point<br />
will be repeated.
Edisplay Control File<br />
Edisplay Utility 275<br />
The Edisplay control file can be used to further control output<br />
printing. When a control file is specified with the -f option on the<br />
edisplay command line, only nodes defined by the print<br />
commands in the control file are output. If the first line of the<br />
control file contains the !append statement, all nodes defined by<br />
the control file are displayed, followed by those in the TimeMill<br />
or PowerMill output file.<br />
The following types of statements are supported:<br />
■ Logic signals to be printed:<br />
print_node n1 n2...<br />
■ Analog signals to be printed:<br />
print_node_current i(a1) i(a2)...<br />
print_node_average I(a1) I(a2)...<br />
print_node_voltage v(b1) v(b2)...<br />
■ Math signals to be printed:<br />
print_node_math m(a1) M(a1) dm/dt(a2) M_rms(a2)<br />
■ Spaces to be inserted between signals:<br />
spa #_of_spaces<br />
If #_of_spaces is not specified, the default is 1.<br />
■ Group signals to be printed:<br />
hex/oct/big/bio group_name n1 n2 n3...<br />
■ Specifying the statement !append in the first line of the<br />
control file causes the signals in the TimeMill or PowerMill<br />
output to be displayed after any other signals specified in the<br />
control file. Otherwise, only signals defined in the control file<br />
are displayed.<br />
!append<br />
print_node n1^ n1 n2 n3<br />
spa 1<br />
print_node_current i(a1)<br />
print_node_voltage v(b1)<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
276 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Eview Utility<br />
spa 3<br />
print_node n0<br />
print_node n1<br />
print_node n2<br />
bio bn3 n3<br />
hex bn n7 n6 n5 n4 n3 n2 n1 n0<br />
oct bn1 n3 n3 n1 n0<br />
big bn2 n2 n1 n0<br />
■ Measure the maximum rise/fall time delays between two<br />
nodes.<br />
measure n1 n2<br />
The example prints the maximum R to F, R to R, F to F, F to<br />
R delays between n1 and n2. The results are stored in the file<br />
specified by -d. If -d is not specified, they are printed to the<br />
standard output.<br />
■ High impedance bus may be printed in either hexadecimal or<br />
Z value.<br />
show_hiz_hex<br />
If show_hiz_hex is included in the control file, it will turn<br />
on the hex representation, and the bus value HLHL will be<br />
shown as A (hex). Otherwise, HLHL will be shown as Z.<br />
Mixed-state buses such as 10HL will be shown as A.<br />
■ User-defined state symbols are allowed.<br />
define_value 7 Y<br />
This example would force Edisplay to show the state value 7<br />
for Y in the <strong>EPIC</strong> output file instead of the default symbol T.<br />
Eview is a post-processing utility for viewing simulation results.<br />
It offers some major Edisplay features, and several additional<br />
capabilities:<br />
■ Graphical interface for browsing tabular results
Command Syntax<br />
Command-line Options<br />
■ Hierarchical analog and digital signal selector<br />
Eview Utility 277<br />
■ Search-and-highlight signals (analog and digital), and/or<br />
errors<br />
eview [-eo <strong>EPIC</strong>_out_file]<br />
[-ee <strong>EPIC</strong>_err_file]<br />
[-cf control_file]<br />
The eview command-line options are:<br />
-eo Specifies the <strong>EPIC</strong> simulation output file to Eview, such as<br />
powrmill.out, timemill.out. If not specified, Eview looks<br />
first for the timemill.out file, then powrmill.out file. Analog<br />
signals will only be displayed when a value is reported in<br />
the .out file.<br />
-ee Specifies the <strong>EPIC</strong> comparison error file to Eview, such as<br />
the powrmill.err or timemill.err file. If not specified, Eview<br />
looks first for timemill.err, then powrmill.err.<br />
-cf Specifies the control file you want to use. This file allows<br />
you to specify which signals will be displayed and their<br />
formats, such as hex or oct. See the section “Eview Control<br />
File” on page 284.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
278 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Window Layout<br />
Menu bar<br />
Message<br />
area<br />
Signal names<br />
Simulation<br />
time<br />
Logic values<br />
Figure 1 Eview window<br />
The Eview window is divided into three areas: menu bar, text<br />
display, and message area.<br />
Menu Bar<br />
The menu bar contains five pull-down menus: File, Edit,<br />
Search, Options, and Help.
Figure 2 shows the Eview File menu.<br />
Figure 2 Eview File menu<br />
The File menu options are:<br />
Eview Utility 279<br />
■ Load <strong>EPIC</strong> .out File: Select an <strong>EPIC</strong> simulation output file<br />
and load it into the Eview environment.<br />
■ Load <strong>EPIC</strong> .err File: Select an <strong>EPIC</strong> comparison error file<br />
and load it into the Eview environment.<br />
■ Load Control File: Select a predefined control file and load<br />
it into the Eview environment.<br />
■ Save Result: Save the current Eview result in the text<br />
display window to a user-specified file.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
280 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
■ Exit: Exit Eview.<br />
Figure 3 shows the Edit menu options.<br />
Figure 3 Eview Edit menu<br />
The Edit menu options are:<br />
■ Edit Nodes: Pops up a node selector to allow you to pick up<br />
the digital and analog signals from the selected <strong>EPIC</strong><br />
simulation output file.<br />
■ Error Tolerance: Ignores the comparison errors in the<br />
specified tolerance time frame. The tolerance is specified in<br />
nanoseconds. Ignoring takes effect only if the <strong>EPIC</strong> .err file<br />
has comparison errors.
Eview Utility 281<br />
■ Show Result: Shows the tabular result of an <strong>EPIC</strong> .out file<br />
with comparison errors, if any. After you load the <strong>EPIC</strong> .out<br />
file into the Eview environment, select this menu to see the<br />
tabular result. Otherwise, the text display window will<br />
remain empty.<br />
Figure 4 shows the Search menu.<br />
Figure 4 Eview Search menu<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
282 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
The Search menu options are:<br />
■ Search Node: Search and highlight the user-specified signal<br />
in the text display area.<br />
■ Search Time: Search and highlight the user-specified time<br />
frame (in nanoseconds) in the text display area.<br />
■ Search Value: Search and highlight all nodes with the value<br />
you specify in the pop-up window.<br />
■ Search Next Error Time: Search and highlight the next<br />
comparison error time stamp in the text display area.<br />
Searching and highlighting will take effect only if the <strong>EPIC</strong><br />
.err file has been loaded.<br />
■ Search Next Error Value: Search and highlight the next<br />
comparison error value in the text display area. Searching<br />
and highlighting will take effect only if the <strong>EPIC</strong> .err file has<br />
been loaded.
Figure 5 shows the Options menu.<br />
Figure 5 Eview Options menu<br />
Eview Utility 283<br />
The Options menu’s single menu item is Strobe Time. This<br />
accesses a window in which you specify the strobe time for<br />
output. The default beginning time is 0. If you do not specify<br />
strobe time, an output display appears whenever any output<br />
signal changes.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
284 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Text Display Area<br />
The text display area is composed of a node name area and a<br />
time/value area. The node name area shows selected signal<br />
names displayed vertically. Analog signals are displayed only<br />
when a value is reported in the .out file.<br />
The time/value area shows the values and time stamps of<br />
selected signals. If no value is reported for a specific time on an<br />
analog signal, and other signals are reported, Eview will print a<br />
dotted line for the specified signal. The values displayed for<br />
analog signals will be in E format and in units of volts or<br />
amperes.<br />
Message Area<br />
There are three fields in the message area: outFile, errFile,<br />
and ctlfile. They display the current files being used by Eview.<br />
Eview Control File<br />
■ outFile: Indicates the selected <strong>EPIC</strong> simulation output file.<br />
■ errFile: Indicates the selected <strong>EPIC</strong> comparison error file.<br />
■ ctlFile: Indicates the selected control file.<br />
The Eview control file can be used if you already know which<br />
signals are included. Only nodes defined by the print commands<br />
in the control file are shown in the text display area.<br />
The following types of statements are supported:<br />
■ For printing logic signals:<br />
print_node n1<br />
print_node n2<br />
■ For printing a group of signals:<br />
hex/oct group_name n1 n2 n3...<br />
■ Math signals to be printed:<br />
print_node_math m(a1) M(a1) dm/dt(a2) M_rms(a2)
■ For inserting spaces between signals:<br />
spa<br />
■ For analog signals:<br />
print_node_current i(s[2])<br />
print_node_average l(s[3])<br />
Waveform Display Utilities 285<br />
EXAMPLE:<br />
print_node_voltage v(s[4])<br />
print_node A[2]<br />
print_node B[2]<br />
print_node COUT<br />
spa<br />
print_node S[3]<br />
spa<br />
print_node CIN<br />
spa<br />
hex AB_GROUP A[0] B[0] A[1] B[1] A[2] B[2]<br />
print_node A[0]<br />
print_node B[0]<br />
print_node B[1]<br />
print_node A[1]<br />
oct AB_GROUP A[0] B[0] A[1] B[1] A[2] B[2]<br />
Waveform Display Utilities<br />
While the simulation output is generating, the output data can<br />
be piped to the waveform display utility using the<br />
set_print_filter configuration command. <strong>EPIC</strong> offers two standalone<br />
waveform display utilities: SimWave and turboWave.<br />
These third-party utilities have been integrated with PowerMill<br />
and TimeMill for viewing analog and digital waveforms. Both<br />
utilities can be used as stand-alone tools to view PowerMill or<br />
TimeMill .out files, or simulation results as you are working.<br />
An additional license is required for each utility.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
286 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
SimWave<br />
turboWave<br />
This section briefly describe the use of SimWave. See the<br />
SimWave User Manual or access Help in SimWave for more<br />
information.<br />
To use SimWave as a stand-alone utility, type:<br />
wd foo.out @<br />
You can use a signal browser to select signal names. The basic<br />
procedure is to select names from the browser, then drag-anddrop<br />
them into the waveform window.<br />
To use SimWave for viewing simulation results while you are<br />
running the simulation, add the following line to your simulation<br />
configuration file:<br />
set_print_filter wd<br />
If you want to generate an output file in isdb format, use the<br />
following configuration command:<br />
set_print_format for=isdb<br />
This section briefly describes how to use turboWave. See the<br />
turboWave User Manual or access Help in turboWave for more<br />
information.<br />
To use turboWave as a stand-alone utility:<br />
1 Type: % turbowave &<br />
2 Click on File, then choose Open from the slider menu to load<br />
simulation result file(s).<br />
3 Click Add, then Apply or OK in the signal browser to<br />
display waveforms.<br />
4 Use the browser to add and apply signals.
Vector Translation Utilities 287<br />
5 To display waveforms while running a simulation, add the<br />
following line to your <strong>EPIC</strong> configuration file:<br />
set_print_filter turboWave -i<br />
If you want to generate an output file in fsdb format, use the<br />
following configuration command:<br />
set_print_format for=fsdb<br />
Vector Translation Utilities<br />
Vcd2e Utility<br />
The two vector translation utilities available in <strong>EPIC</strong> tools are<br />
vcd2e and VTRAN. The <strong>EPIC</strong> vcd2e utility reads a file in<br />
Verilog's Value Change Dump (VCD) format and produces a new<br />
file in <strong>EPIC</strong> vector format. The vcd2e utility is described in<br />
detail in the following sections.<br />
VTRAN is an OEM program. It loads the state/time information<br />
of logic stimulus, results, or other data sources contained in a<br />
file. It then processes this data, and formats it for a selected<br />
target simulator into a second file, called the Target Vector File<br />
(TVF). For information on VTRAN, see the VTRAN User Manual.<br />
Each of these utilities requires an additional license.<br />
The vcd2e utility can be executed in batch mode or interactively<br />
using a graphical user interface. In either case, you must<br />
generate a signal file that lists the signals to be converted as<br />
well as their directions.<br />
Even in batch mode, you can group or split buses and specify<br />
control information for bedirectional signals. The advantage of<br />
using the GUI is the ability it gives you to browse the VCD file<br />
hierarchy.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
288 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Command Syntax<br />
vcd2e<br />
Command-line Options<br />
[-b]<br />
[-v Verilog_VCD_file]<br />
[-s filename]<br />
[-o prefix]<br />
[-t]<br />
[-r]<br />
[-h]<br />
[-x]<br />
The command-line options for the vcd2e command are:<br />
-b Invokes batch mode. If you run vcd2e in batch mode, the -<br />
v, -s, and -o options are required.<br />
NOTE: If you specify vcd2e without the -b option, the <strong>EPIC</strong><br />
interface appears.<br />
-h Invokes help information.<br />
-v Verilog_VCD_file<br />
Specifies a Verilog VCD file.<br />
-r Restores the state time segment, in nanoseconds, to split a<br />
large VCD file.<br />
-s filename<br />
Specifies a vcd2e signal definition file. This file contains a<br />
list of the signals in the VCD file to be translated to <strong>EPIC</strong><br />
format.<br />
-t Saves the state time segment, in nanoseconds, to split a<br />
large VCD file.<br />
-o<br />
prefix<br />
Specifies an output file prefix.
Vector Translation Utilities 289<br />
-x New bus notation, or bus expansion character. This option<br />
allows you to change the bus notation from the original<br />
Verilog VCD file or to expand the bus.<br />
For example, if the Verilog VCD file refers to a bus A[0:3],<br />
and you add -x “”, the resulting <strong>EPIC</strong> vector file will<br />
refer to the bus as A.<br />
The same option can be used to split a bus into single bits.<br />
If the argument does not specify parentheses-characterclose-parentheses,<br />
it is assumed to be a bus-splitting<br />
character.<br />
For example, if the Verilog VCD file refers to a bus A[0:3];<br />
and you specify the -x _ option, the resulting <strong>EPIC</strong> vector<br />
file will refer to the bus as A_0_, A_1_, A_2_,A_3_.<br />
Vcd2e Window Layout<br />
The vcd2e window layout is divided into six areas: menu bar,<br />
current scope, design instance browser, signal in current scope,<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
290 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Menu bar<br />
Current scope<br />
Signal in current<br />
scope<br />
Design instance<br />
browser<br />
command buttons, and selected signals list. Figure 6 shows an<br />
example of the vcd2e window.<br />
Figure 6 vcd2e window<br />
Command<br />
buttons<br />
Selected<br />
signal list
Vector Translation Utilities 291<br />
Menu Bar<br />
The File menu is the only menu on the menu bar. Figure 2 shows<br />
the options on the File pulldown menu.<br />
Figure 7 File menu options<br />
The File menu options are:<br />
■ Load VCD file: Select a Verilog VCD file and load it into the<br />
vcd2e environment.<br />
■ Load Signal file: Select a signal definition file and load it<br />
into the vcd2e environment. You must follow the Signal file<br />
format syntax. (See “Signal Save File Format” on page 294.)<br />
■ Save Signal file: Save the current selected signals and their<br />
parameters to a file. You can load this file into the vcd2e<br />
environment in the next run by selecting the Load Signal<br />
file option from the File menu.<br />
■ Quit: Quit the vcd2e environment.<br />
NOTE: The VCD file must be loaded first, followed by the signal file. You<br />
can only do this once per session.<br />
Current Scope Message Area<br />
This area displays the hierarchical path of the selected instance.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
292 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
Design Instance Browser<br />
This area displays the instances in the current selected scope.<br />
You can browse the hierarchical design by double-clicking the<br />
instance in this area with the left mouse button.<br />
Signals in Current Scope<br />
This area shows the signals in the current selected scope. You<br />
are allowed to select signals from this area to build the <strong>EPIC</strong><br />
vector.<br />
Command Buttons<br />
The following command buttons appear on the vcd2e window:<br />
■ Add: Adds the selected signals from the Signals in<br />
Current Scope list to the Selected Signals List.<br />
■ Add All: Adds all signals from the Signals in Current<br />
Scope list to the Selected Signal List.<br />
■ Delete: Deletes the selected signals from the Selected<br />
Signals List area.<br />
■ Delete All: Deletes all signals from the Selected Signals<br />
List area.<br />
■ Create Bus: Creates a bus for the signal selected in the<br />
Selected Signal List area.<br />
The vcd2e utility bus output is no longer exclusively written<br />
in single bits in the .vec/.vec_chk.cmd/.cmd_chk vector files.<br />
The type of bus output of the vcd2e utility depends on the<br />
following factors:<br />
◆ If you define your bus in single bits in the signal file, the<br />
output files list the bits individually, and they are<br />
assigned binary values<br />
◆ If you define your bus as a bus, which must be a multiple<br />
of four, the output files define the bus as a “single signal,”<br />
and the values are written out in hexadecimal
Vector Translation Utilities 293<br />
NOTE: If some of the bits of the buses are X or Z, the<br />
following rules apply:<br />
◆ If one of the bits is X, the hex value is X<br />
◆ If one of the bits is Z (and none of the other bits is X), the<br />
nex value is Z<br />
■ Direction: Specifies the signal directions: input, output, or<br />
biput. By default, all the selected signals are assumed to be<br />
inputs. The signal directionality is not contained in the VCD<br />
file, and must be assigned by you.<br />
■ Time Segment: Breaks the vectors into multiple files. Click<br />
this button to select one of the following options: Save State<br />
Time and Restore State Time.<br />
■ Upper Case: Changes the signals in the VCD file to<br />
uppercase.<br />
■ Lower Case: Changes the signals in the VCD file to<br />
lowercase.<br />
■ No Change: Specifies that the case of the signals in the VCD<br />
file is to remain unchanged.<br />
■ Expand Bus: Expands the bus for the signal selected in the<br />
Selected Signal List area.<br />
■ Build Stimulus: Builds the <strong>EPIC</strong> vector file with the<br />
information in the Selected Signals List. Figure 8 shows<br />
an example of the Bidirectional Signal Specification window.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
294 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
For further information about control signal expression, see<br />
the “Signal Save File Format” on page 294.<br />
Figure 8 Bidirectional Signal Specification window<br />
Selected Signal List<br />
This window displays the signals used to generate the <strong>EPIC</strong><br />
vectors.<br />
Signal Save File Format<br />
Use the vcd2e signal file if you already know which signals are<br />
included, as well as their attributes. The syntax for the signal<br />
file is:<br />
signal_name signal_direction input_default output_default<br />
control_expression
These variables are:<br />
Vector Translation Utilities 295<br />
signal_name Signals in the VCD file.<br />
signal_direction Either I (input), O (output), or B<br />
(biput).<br />
input_default If signal_direction is B, when it is<br />
an output, an input_default is<br />
needed to find the input version<br />
value with the control information<br />
defined in control_expression.<br />
Values can be X, U, or Z.<br />
output_default If signal_direction is B, when it is<br />
an output, an output_default is<br />
needed to find the output version<br />
value with the control information<br />
in control_expression. Values can<br />
be X, U, or Z.<br />
control_expression If signal_direction is B, a<br />
control_expression is needed to<br />
separate input from output state on<br />
biput signals. And if a bidirectional<br />
control signal is not at the same<br />
level of hierarchy as the<br />
bidirectional signal, you must enter<br />
the full path to the control signal.<br />
EXAMPLE 1:<br />
in@(ctrl=1)<br />
This is an example of a control expression. It shows that<br />
signal_name contains input data because ctrl is logic 1.<br />
Otherwise, it contains output data.<br />
NOTE: You cannot have spaces in the expression, and you must enclose<br />
expressions within parentheses.<br />
EXAMPLE 2:<br />
r_wbI<br />
ram_enbI<br />
data[3:0]B Z X in@(r_wb)<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
296 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
adr[2]I<br />
adr[1]I<br />
adr[0]I<br />
SEE ALSO:<br />
Batch Mode<br />
Translating a File<br />
The basic steps for translating a VCD file into <strong>EPIC</strong> vector<br />
format are:<br />
1 Select Load VCD file from the File menu and choose the<br />
name of the VCD file you want to translate.<br />
2 Select the signals required for the simulation. You can do<br />
this in either of two ways:<br />
◆ Select Load Signal file from the File menu, then select<br />
the required signals from the Signals in Current<br />
Scope list. Click the Add command button after<br />
selecting each signal, or click Add All or Delete. The<br />
names of the signals you selected will appear in the<br />
Selected Signals list.<br />
◆ Select Save Signal file from the File menu, and create<br />
a signal file containing all the selected signals and their<br />
attributes. This method works best if you are simulating<br />
a large design because you do not have to manually select<br />
a long series of signals from the Signals in Current<br />
Scope list.<br />
3 Make any necessary changes to the signals in the Selected<br />
Signal List. You can make these changes as follows:<br />
◆ Change signal directionality (Input/Output/<br />
Bidirectional) by selecting the signal, clicking the<br />
Direction command button, and selecting the<br />
appropriate direction.
Vector Translation Utilities 297<br />
◆ Change the signal case by clicking the Case command<br />
button. The <strong>EPIC</strong> tools are case-sensitive, so it may be<br />
necessary to modify the case of the signals in the VCD file<br />
so that they match those in the netlist.<br />
◆ Create and split buses by clicking the Create Bus<br />
command button. This will make the buses compatible<br />
with the netlist you intend to use for the simulation.<br />
4 Click the Build Stimulus command button to generate the<br />
<strong>EPIC</strong> vector file. You need to specify the file prefix. If the<br />
VCD file contains bidirectional signals, you are prompted for<br />
the control logic expressions to determine when the signal is<br />
an input and when it is an output.<br />
The following <strong>EPIC</strong> vector files are generated:<br />
xxx.vec<br />
<strong>EPIC</strong> vector file that contains vectors for all inputs and<br />
bidirectional signals when they are inputs.<br />
xxx.cmd<br />
<strong>EPIC</strong> netlist file used to instantiate the xxx.vec file.<br />
xxx.vec_chk<br />
<strong>EPIC</strong> vector file that contains all the output signals, as<br />
well as bidirectionals when they are outputs.<br />
xxx.cmd_chk<br />
<strong>EPIC</strong> netlist file used to instantiate the xxx.vec_chk file.<br />
The vcd2e utility bus output is no longer exclusively written in<br />
single bits in the .vec/.vec_chk.cmd/.cmd_chk.<br />
The type of bus output of the vcd2e utility depends on the<br />
following factors:<br />
■ If you define your bus in single bits in the signal file, the<br />
output files list the bits individually, and they are assigned<br />
binary values.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
298 Chapter 7 Utilities for Dynamic <strong>EPIC</strong> <strong>Tools</strong><br />
■ If you define your bus as a bus, which must be a multiple of<br />
four, the output files define the bus as a “single signal,” and<br />
the values are written out in hexadecimal.<br />
Batch Mode<br />
You can run vcd2e in batch mode. The syntax for running in<br />
batch mode is:<br />
vcd2e -b -v vcd_file -s signal_file -o epic_output_file_prefix<br />
In vcd2e batch mode, you can also specify strobes in the signal<br />
file. Specify the strobe cycle time, and two strobe points within<br />
that cycle time for any desired output and/or bidirectional pin.<br />
Strobing works only when running in batch mode. Even if you<br />
load a signal file that contains strobes graphically, they are<br />
ignored. There is no way to specify strobes from the <strong>EPIC</strong> user<br />
interface. Strobing only works if the signals you specify are<br />
output or bidirectional. If you specify strobes on input signals,<br />
those strobes will be ignored.<br />
SYNTAX:<br />
signal_name signal_direction [input_default] [output_default]<br />
cycle_time strobe1 strobe2<br />
EXAMPLE 1:<br />
out1 O 100 80 80<br />
NOTE: In the previous example, if you want to choose only<br />
one strobe point, you must enter the value twice.<br />
EXAMPLE 2:<br />
bidi1 B in@(out=0) 80 60 50
Appendix A<br />
Customization<br />
Customizing <strong>EPIC</strong> <strong>Tools</strong><br />
The information in this appendix shows you how to set your<br />
environment to run a customized version of the tool. It also<br />
shows you how to customize <strong>EPIC</strong> tools by modifying some of the<br />
internal calculations they perform.<br />
You can customize <strong>EPIC</strong> tools to work in your environment,<br />
either for your own use or for all users at your site.<br />
The following steps show you how to customize the <strong>EPIC</strong> tools<br />
both for your own use and for use by others at your site.<br />
1 Copy the customize.c source code file from the release<br />
directory using the following command:<br />
cp $<strong>EPIC</strong>_HOME//lib/customize.c<br />
your_dir/customize.c
300 Customization<br />
If you use TimeMill or PowerMill, please see the example in<br />
$<strong>EPIC</strong>_HOME/examples/timemill_api/customize or<br />
$<strong>EPIC</strong>_HOME/examples/powermill_api/customize, and<br />
copy customize.c from the example directory.<br />
2 Edit the customize.c file as required.<br />
3 You can include the modified customize.c file by adding the<br />
following syntax to the .epicrc file in the run directory.<br />
toolname:user_obj_modules_force:customize.c<br />
A shared library, libCustom.so.1.0, is created in your current<br />
working directory during the simulation. When you are sure<br />
the customized version is correct, copy libCustom.so.1.0 to a<br />
permanent directory.<br />
4 If you want to use your customized version every time you<br />
run an <strong>EPIC</strong> tool, you can use one of the following methods:<br />
◆ Add the following line to your $HOME/.epicrc file:<br />
toolname:user_libraries:your_lib_path<br />
libCustom.so.1.0<br />
The toolname can be PathMill, PowerMill, RailMill, or<br />
TimeMill. If you want all users of this <strong>EPIC</strong> installation<br />
to use your customization, add the above line to<br />
$<strong>EPIC</strong>_HOME/PLATFORM_OS/lib/.epicrc.<br />
◆ Add the -U customize.c option to the command line<br />
when starting the simulator.<br />
This will create the libCustom library in your working<br />
directory.<br />
NOTE: After installing <strong>EPIC</strong> software updates, be sure to recompile the<br />
custom library libCustom.so.1.0. The exact name of the custom<br />
library varies from one platform to another.
Library names for supported platforms are:<br />
■ libCustom.so.1.0 (SUN SunOS)<br />
■ libCustom.s1 (HP HPUX)<br />
■ libCustom.o (IBM AIX)<br />
■ libCustom.so (DEC Alpha)<br />
■ libCustom.a (other platforms)<br />
Customizing <strong>EPIC</strong> <strong>Tools</strong> 301<br />
Three functions in the customize.c file need special attention for<br />
a pre-layout case. A pre-layout case is any case where you do not<br />
specify in your netlists any of the MOS geometry values ad, as,<br />
pd, ps, nrd, and nrs. The three functions are:<br />
■ calculateDiffArea() which returns ad or as<br />
■ calculateDiffPerimeter() which returns pd or ps<br />
■ calculateNRSH() which returns nrd or nrs<br />
These functions match the default geometry values of a prelayout<br />
case to your SPICE. You need to make sure they match<br />
your SPICE defaults; otherwise, an accuracy problem might<br />
arise when using <strong>EPIC</strong> <strong>Tools</strong> on a pre-layout netlist.<br />
NOTE: When compiling these functions on an HP machine, you must use<br />
the -z option to generate position independent code (PIC). This<br />
option is not supplied as part of the standard HP-UX operating<br />
system, but must be purchased as a separate product. If you try<br />
to compile without this option, you might get an error message,<br />
such as:<br />
cc: warning 422: Unknown option "c" ignored.<br />
Building libCustom.sl....<br />
ld: DP-Relative Cide in file ./customize.o - Shared<br />
Library must be Position-Independent<br />
Each of the three functions has three leading arguments in its<br />
parameter list: acm, w, and l.<br />
The w argument is the effective width, Weff, which is calculated<br />
by and passed from <strong>EPIC</strong> tools as:<br />
Weff = Wdrawn * wmlt - 2 * wdiff<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
302 Customization<br />
The l argument is actually the effective diffusion extension<br />
length diffext, eff (or ds_length,eff), which is calculated by and<br />
passed from <strong>EPIC</strong> tools as:<br />
diffext,eff = diffext * wmlt<br />
The acm argument if the integer acm value in the technology file<br />
data line:<br />
acm value SPICE_name<br />
For HSPICE, the acm value is 0, 1, 2, or 3, which represents the<br />
physical Area Calculation Method. The three functions are<br />
already set up to return the correct default geometry values for<br />
HSPICE, so you don’t have to do anything for HSPICE.<br />
For other SPICE types, the acm value is used to distinguish its<br />
SPICE type, and the acm integer is borrowed for this purpose. A<br />
line of C code checks the SPICE type.<br />
EXAMPLE:<br />
if (acm == 22)<br />
Check the technology file for the acm value. If it is -1, your<br />
SPICE is not set up, and you should check and edit the three<br />
functions for a pre-layout circuit. If the acm value in the<br />
technology file is not -1 and the value appears in the three<br />
functions, the three functions are already set up for your SPICE.<br />
Customizing Wire Capacitance Estimate<br />
<strong>EPIC</strong> lets you modify the wire capacitance estimate, an internal<br />
TimeMill, PathMill, RailMill, and PowerMill calculation. The C<br />
source code containing the calculation is in the customize.c file.<br />
This module resides in the directory:<br />
$<strong>EPIC</strong>_HOME/ PLATFORM_OS/lib.<br />
To achieve a more accurate pre-layout timing analysis, you use<br />
the wire_cap_est command to automatically get estimated<br />
interconnect capacitances. When you specify the wire_cap_est
Customizing Wire Capacitance Estimate 303<br />
command in the configuration file, the<br />
estimateWireCapacitance function is called for each node in<br />
the design.<br />
The capacitance returned by the estimateWireCapacitance<br />
function is added to the capacitance already specified for each<br />
node.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
304 Customization<br />
The C function is shown in Figure 1.<br />
double<br />
estimateWireCapacitance (node_name, number_channel, number_gate,<br />
number_input, number_output, number_biput, max_pwl, max_nwl, widths)<br />
char *node_name;<br />
int number_channel, number_gate;<br />
int number_input, number_output, number_biput;<br />
int max_pwl, max_nwl, widths;<br />
{<br />
#define FANIN_CAP 2.0<br />
#define FANOUT_CAP 5.0<br />
return<br />
#undef FANIN_CAP<br />
#undef FANOUT_CAP<br />
}<br />
Figure 1 C function<br />
int fanin, fanout;<br />
float fanout_scale, cap;<br />
/* Treat channels as fanin’s and biputs as fanout’s */<br />
fanin = number_channel + number_output;<br />
fanout = number_gate + number_input + number_biput;<br />
/* Select a scaling factor based on number of fanout’s*/<br />
if (fanout >= 15)<br />
fanout_scale = 1.5;<br />
else if (fanout >= 5)<br />
fanout_scale = 1.2;<br />
else<br />
fanout_scale = 1.0;<br />
cap = fanin*FANIN_CAP+fanout*FANOUT_CAP*fanout_scale;<br />
The inputs are:<br />
Command Argument Definition<br />
node_name Name of the node<br />
number_channel Number of channel connected<br />
transistors connected to the node<br />
number_gate Number of gate connected<br />
transistors connected to the node<br />
number_input Number of functional model inputs<br />
connected to the node
Sample .err File<br />
Customizing Wire Capacitance Estimate 305<br />
Command Argument Definition<br />
number_output Number of functional model<br />
outputs connected to the node<br />
number_biput Number of functional model biputs<br />
connected to the node<br />
max_nwl Maximum N transistor W/L ratio<br />
driving the node<br />
max_pwl Maximum P transistor W/L ratio<br />
driving the node<br />
widths Sum of the total widths of the txs<br />
connected to this node (default unit<br />
is 0.01 μm)<br />
The output returns additional capacitance, in femtoFarads, to the<br />
node.<br />
The capacitance is given as a function of the fanins to a node and<br />
the fanouts from the node. The more fanins and fanouts that<br />
exist on a node, the higher the total interconnect capacitance is<br />
on the node. As well as adding this capacitance to each node, this<br />
example also prints the capacitance that was estimated for each<br />
node to a file called estimate.list.<br />
The following example shows a customized<br />
estimateWireCapacitance function. This example models<br />
interconnect capacitance prior to layout.<br />
/*for file access */<br />
#include <br />
#define FAN_IN_CAP 2.0 /* This is the estimated Capacitance<br />
in FF per fan in */<br />
#define FAN_OUT_CAP 5.0 /* This is the estimated Capacitance<br />
in FF per fan out */<br />
#define BAND_LIMIT1 0 /* These 3 constants define the bands<br />
where we apply */<br />
#define BAND_LIMIT2 5 /* a different fan out scaling factor<br />
depending on */<br />
#define BAND_LIMIT3 15 /* the number of fan outs */<br />
#define FAN_OUT_SCALE1 1.0 /* scale factor for the first band of<br />
fan outs */<br />
#define FAN_OUT_SCALE2 1.2 /* scale factor for the second band of<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
306 Customization<br />
fan outs */<br />
#define FAN_OUT_SCALE3 1.5 /* scale factor for the third band of<br />
fan outs */<br />
double estimateWireCapacitance(node_name,number_channel,<br />
number_gate,number_input,number_output,number_biput,<br />
max_pwl,max_nwl)<br />
char *node_name;<br />
int number_channel, number_gate;<br />
int number_input, number_output, number_biput;<br />
int max_pwl, max_nwl;<br />
{<br />
/* max_pwl is the maximum width/length of the drive P MOS */<br />
/* max_nwl is the maximum width/length of the drive N MOS */<br />
float c; /* variable to hold the estimated capacitance */<br />
static FILE *cap_file = NULL; /* file ptr to file for writing<br />
capacitance estimates to */<br />
static short first_time = 1; /* flag set true for the first time<br />
this function is called */<br />
int fan_ins; /* Number of fan ins */<br />
int fan_outs; /* Number of fan outs */<br />
float fan_out_scale; /* Number used to scale the capacitance<br />
for fan outs */<br />
/* This is the first time this function is called. Open the file for writing. */<br />
if (first_time)<br />
if ((cap_file=fopen (”estimate.list”,”w”))==NULL)<br />
/* If unable to open file print an error message */<br />
fprintf (stderr,”estimateWireCapacitance: Unable to"<br />
"open file’estimate.list’\n”);<br />
/* Set first time to false */<br />
first_time = 0;<br />
/* The number of fanouts is given as the number of gate connects plus the number of<br />
inputs. Inputs are defined as ‘inputs’ to a gate i.e., fanouts to the node. In this<br />
example, biputs are<br />
treated as fanouts */<br />
fan_outs = number_gate + number_input + number_biput;<br />
fan_ins = number_output + number_biput + number_channel;<br />
/* We scale the capacitance estimated for the fanouts based on the number of fanouts */<br />
if ((fan_outs >= BAND_LIMIT1) && (fan_outs < BAND_LIMIT2))<br />
fan_out_scale = FAN_OUT_SCALE1;<br />
else<br />
if ((fan_outs >= BAND_LIMIT2) && (fan_outs < BAND_LIMIT3))<br />
fan_out_scale = FAN_OUT_SCALE2;<br />
else<br />
/* if (fan_outs >= BAND_LIMIT3) */<br />
fan_out_scale = FAN_OUT_SCALE3;<br />
/* Capacitance estimate is based on fan ins and fan outs */<br />
c = (fan_ins * FAN_IN_CAP) + (fan_outs * FAN_OUT_CAP *<br />
fan_out_scale);<br />
/* Print the estimates into a file for checking purposes */<br />
/* The output format of this file is the same as accepted by all <strong>EPIC</strong> products. It<br />
could thus also be used by PathMill and PowerMill or TimeMill (when the wire estimator<br />
is turned off) */
Customizing Wire Capacitance Estimate 307<br />
if (cap_file != NULL)<br />
fprintf(cap_file,”node_capacitance %s %d\n”,node_name,(int)c);<br />
/* Return the estimated capacitance */<br />
return(c);<br />
}<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
308 Customization<br />
epic_delay<br />
SYNTAX:<br />
double<br />
epic_delay (intrinsic, drive, slope_factor, slope, loading)<br />
int intrinsic, drive, slope, loading;<br />
double slope_factor;<br />
{<br />
return (int) (intrinsic + (slope_factor * slope) + le-4<br />
* drive * loading);<br />
DESCRIPTION:<br />
This function returns a total delay that is a function of 1) the<br />
intrinsic delay, 2) the output loading times drive resistance, and<br />
3) the input slope times a slope effect coefficient.<br />
Command Argument Definition<br />
intrinsic Intrinsic delay of the gate in .01 ns<br />
units (int)<br />
drive Drive resistance of the output node<br />
in ohms (int)<br />
slope_factor Input slope coefficient (float)<br />
slope Input slope that is returned from<br />
fget_input_slope or<br />
fget_bi_slope in .01 ns (int)<br />
loading Output load that is returned from<br />
fget_out_load or fget_bi_load in<br />
fF (int)<br />
The input parameters are used in the following calculation to<br />
produce the delay:<br />
delay = int_d + (r*c_load)/10000 +<br />
(k_slope * slope + .05)<br />
The delay is returned as an int and is in units of 0.01 ns.
epic_slope<br />
SYNTAX:<br />
Customizing Wire Capacitance Estimate 309<br />
double<br />
epic_slope (intrinsic, drive, loading)<br />
int intrinsic, drive, loading;<br />
{<br />
return intrinsic + le-4 * drive * loading);<br />
DESCRIPTION:<br />
This function returns the output slope as a function of 1) the<br />
intrinsic slope delay, and 2) the output loading times slope drive<br />
resistance.<br />
Command Argument Definition<br />
intrinsic Intrinsic slope of delay in .01 ns<br />
units (int).<br />
drive Slope drive resistance of the output<br />
node in ohms (int).<br />
loading Output load that is returned from<br />
fget_out_load or fget_bi_load in<br />
fF (int).<br />
The input parameters are used in the following calculation to<br />
produce the slope:<br />
slope = int_d + (r*c_load)/10000<br />
The slope is returned as an int in units of 0.01 nanoseconds.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
310 Customization
The .out File<br />
Appendix B<br />
Output Files<br />
This appendix contains information about files that result from<br />
dynamic simulation processing, including a sample file of each<br />
file type. The files types are:<br />
■ .out<br />
■ .act<br />
■ .nact<br />
■ .nodealias<br />
The .out file contains simulation output information for logic<br />
states, voltage, and current. The .out file format can be<br />
controlled using the set_print_format configuration command.<br />
The .out file is divided into three sections:<br />
■ Header section: This section contains the output format<br />
version number, copyright, and the time and date the file was<br />
generated.
312 Output Files<br />
Line Format<br />
Null<br />
■ Definition section: This section defines units used in the<br />
.out file, the mapping between signal index and signal name,<br />
bus notation, and so on.<br />
■ Data section: This final section in the .out file lists all the<br />
requested signal values.<br />
The output file uses line-oriented syntax. The lines can be<br />
classified according to the first character in the line:<br />
■ null (blank line)<br />
■ ; (semicolon)<br />
■ . (period)<br />
■ a number<br />
A blank line can appear anywhere and is ignored by the<br />
waveform display tools. It can contain spaces and tabs.<br />
Semicolon Lines<br />
A semicolon at the beginning of a line indicates that the line is a<br />
header, trailer, information, or comment line. Header and trailer<br />
lines are used by some waveform display tools to check file<br />
integrity. The first line in the file starts with a semicolon and<br />
specifies the output format version.<br />
The semicolon lines, except for comment lines, the end-of-file<br />
indicator, and the trailer line, can appear only in the header<br />
section. A comment line can appear anywhere.<br />
The voltage output of PowerMill and TimeMill is piecewiselinear.<br />
Two voltages in the same timestamp indicate a voltage<br />
transient that occurs too quickly to be resolved given the .out file<br />
time resolution.
Period Lines<br />
Keywords<br />
The .out File 313<br />
Lines that begin with a period (.) contain keywords followed by<br />
related values.<br />
All of the keywords, except for index, can be used only in the<br />
definition section. The index lines may appear in the data section<br />
in addition to the definition section. The keywords and<br />
associated values are defined in the following table:<br />
Keyword and Value Definition<br />
vdd vdd_value Specifies the power supply<br />
voltage.<br />
time_resolution time_unit Specifies the time unit<br />
(nanoseconds).<br />
current_resolution cur_unit Specifies the current unit<br />
(Amperes).<br />
voltage_resolution vol_unit Specifies the voltage unit<br />
(volts).<br />
math_resolution math_unit Used only in version 5.1<br />
output_format, which specifies<br />
the scaling factor for all math<br />
signals so that signal value<br />
times math_unit returns the<br />
real value for a math signal.<br />
In version 5.3 output_format, if<br />
the SPICE math expression is<br />
evaluated to a voltage value or a<br />
current value, the signal will be<br />
printed to the .out file as a<br />
voltage signal or a current<br />
signal, respectively. Otherwise,<br />
the MKS standard units will be<br />
used (for example, wattage will<br />
be in watts (volt*ampere).<br />
high_threshold vol_thresh Specifies the high threshold<br />
voltage.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
314 Output Files<br />
Keyword and Value Definition<br />
low_threshold vol_thresh Specifies the low threshold<br />
voltage.<br />
nnodes number_of_nodes Specifies the number of nodes.<br />
neems number_of_elems Specifies the number of<br />
elements.<br />
extra_nodes<br />
Total extra power node number.<br />
number_of_extra_nodes<br />
bus_notation o s c Specifies the bus name<br />
delimiters; o is the opening bus<br />
delimiter, s is the separator, and<br />
c is the closing delimiter.<br />
hier_separator<br />
hier_separator<br />
Specifies the hierarchical<br />
separation character.<br />
case case_symbol Specifies if the node or element<br />
names are case-sensitive (S),<br />
lowercase (L), or uppercase (U).<br />
index name_index_pair<br />
signal_attribute<br />
Specifies the index for a name,<br />
followed by the signal attribute.<br />
Note: The complete format for<br />
index immediately follows this<br />
table.<br />
bio new_name <strong>EPIC</strong>_name Replaces <strong>EPIC</strong>_name with<br />
new_name in ndisplay or other<br />
output display program.<br />
oct bus_name <strong>EPIC</strong>_name3<br />
<strong>EPIC</strong>_name2 <strong>EPIC</strong>_name1<br />
Specifies a bus name for a group<br />
of three signals. <strong>EPIC</strong>_name3 is<br />
the most significant bit, and<br />
<strong>EPIC</strong>_name1 is the least<br />
significant bit.
Keyword and Value Definition<br />
hex bus_name <strong>EPIC</strong>_name4<br />
<strong>EPIC</strong>_name3 <strong>EPIC</strong>_name2<br />
<strong>EPIC</strong>_name1<br />
big new_group_name<br />
<strong>EPIC</strong>_name1<br />
<strong>EPIC</strong>_name2 ...<br />
The .out File 315<br />
The following syntax shows the complete format for the keyword<br />
index.<br />
SYNTAX:<br />
Specifies a bus name for a group<br />
of four signals. <strong>EPIC</strong>_name4 is<br />
the most significant bit, and<br />
<strong>EPIC</strong>_name1 is the least<br />
significant bit.<br />
Prints a caption with<br />
new_group_name for the group<br />
of <strong>EPIC</strong>_name signals (used<br />
only in ndisplay output).<br />
name_index_pair ::= name index;<br />
index ::= integer;<br />
name ::= <strong>EPIC</strong>_name |<br />
v (<strong>EPIC</strong>_name) |<br />
i (<strong>EPIC</strong>_name) |<br />
I (<strong>EPIC</strong>_name) |<br />
I_rms (<strong>EPIC</strong>_name) |<br />
di/dt (<strong>EPIC</strong>_name) |<br />
i# (<strong>EPIC</strong>_name) |<br />
I# (<strong>EPIC</strong>_name) |<br />
I_rms# (<strong>EPIC</strong>_name)|<br />
di/dt# (<strong>EPIC</strong>_name) |<br />
m (<strong>EPIC</strong>_name) |<br />
<strong>EPIC</strong>_name::=<strong>EPIC</strong> valid element or node name<br />
#::= integer giving valid <strong>EPIC</strong> element branch index (1, 2, 3, 4,<br />
or 5).<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
316 Output Files<br />
The signal attributes are defined as follows:<br />
Signal Attribute Definition<br />
v Analog voltage (PWL/voltage resolution).<br />
i Instantaneous current (PWC/current<br />
resolution).<br />
I Average current (PWL/current resolution).<br />
I_rms rms current (PWL//current resolution).<br />
di/dt Current change rate (PWC/current<br />
resolution).<br />
l Logic state number with a value between 0<br />
and 10.<br />
m Mathematical signal (PWL/math<br />
resolution).<br />
M Average mathematical signal (PWL / MKS<br />
resolution).<br />
M_rms RMS mathematical signal (PWL / MKS<br />
resolution).<br />
dm/dt Mathematical signal change rate (PWL /<br />
MKS resolution).<br />
NOTE: In the previous table, PWL is defined as piecewise linear, and<br />
PWC is defined as piecewise constant.<br />
Lines Beginning with Numbers<br />
Lines beginning with numbers represent either times or values.<br />
Single integer line: The number on this line represents a time.<br />
The unit of time is based on the resolution specified by the<br />
time_resolution keyword. When a time line appears, it defines a<br />
new time section in which all the value lines that appear after<br />
the time line but before the next time line give the signal values<br />
at the current time. Time lines must appear in ascending order.<br />
The last time line in the file is used by the display tool to<br />
determine the length of simulation time.
The .out File 317<br />
Double integer line: A line with two integers is a value line.<br />
The numbers represent index and value.<br />
For nodes whose logic states are printed, value is defined as:<br />
value ::= logic_state_number |signal_value<br />
signal_value ::= integer<br />
where integer is voltage/current/derived output.<br />
The logic state numbers and their corresponding characters are<br />
defined in the following table. (See “Logic States” on page 248.)<br />
Logic State<br />
Number<br />
Character Definition<br />
0 ‘0’ logic ZERO (strong drive)<br />
1 ‘1’ logic ONE (strong drive)<br />
2 ‘U’ logic UNDEF (strong drive)<br />
3 ‘L’ logic ZERO (high impedance drive)<br />
4 ‘H’ logic ONE (high impedance drive)<br />
5 “Z” logic UNDEF (high impedance drive)<br />
6 ‘N’ logic ZERO (biput driven by circuit)<br />
7 ‘T’ logic ONE (biput driven by circuit)<br />
8 ‘Y’ logic UNDEF (biput driven by circuit)<br />
9 ‘?’ logic UNSET (not initialized nor set during<br />
simulation)<br />
10 ‘X’ logic DON’T CARE (can be any state)<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
318 Output Files<br />
Sample Output File for TimeMill<br />
;! output_format 5.3<br />
; header 306719985<br />
; --------------------------------------------------------<br />
;| |<br />
;| TimeMill Version 5.4_Release |<br />
;| SN: P121598-SunOS_5 |<br />
;| Copyright (c) 2000 Synopsys Inc., All Rights Reserved. |<br />
;| |<br />
; --------------------------------------------------------<br />
;<br />
;<br />
.vdd 3.3<br />
.time_resolution 0.1<br />
.current_resolution 1e-06<br />
.voltage_resolution 0.01<br />
;tentative simulation_time 50<br />
.high_threshold 2.31<br />
.low_threshold 0.99<br />
.nnodes 75<br />
.nelems 243<br />
.extra_nodes 0<br />
.bus_notation [ - ]<br />
.hier_separator .<br />
.case L<br />
.index v(g7) 1456 v<br />
.index g7 1457 l<br />
.index m(vfunc1) 1950 m<br />
.index M(vfunc2) 1976 M<br />
.index dm/dt(vfunc3) 2002 dm/dt<br />
.index M_rms(vfunc4) 2028 M_rms<br />
0<br />
1456 330<br />
1457 1<br />
2028 10.89<br />
2002 -200<br />
1976 0.00013464<br />
1950 0.00013464<br />
0<br />
2028 10.89<br />
2028 14.19<br />
5<br />
2028 14.19<br />
2028 3.3<br />
2002 -200<br />
2002 130<br />
1976 0.00013464<br />
1976 9.9e-07<br />
1950 0.00013464<br />
1950 0.00016896<br />
10<br />
2028 3.3<br />
2028 3.3<br />
1950 0.00016896<br />
1950 3.597e-05<br />
20<br />
2028 3.3<br />
2028 0<br />
25<br />
2028 0<br />
2028 -10.89
1976 9.9e-07<br />
1976 0.00013563<br />
1950 3.597e-05<br />
1950 3.762e-05<br />
29<br />
1456 330<br />
30<br />
1456 330<br />
2028 -10.89<br />
2028 3.3<br />
1976 0.00013563<br />
1976 9.9e-07<br />
1950 3.762e-05<br />
1950 3.597e-05<br />
31<br />
1456 313<br />
1456 274<br />
32<br />
1456 189<br />
1457 2<br />
33<br />
1456 81<br />
1456 0<br />
1457 0<br />
34<br />
1456 3<br />
35<br />
1456 2<br />
2028 3.3<br />
2028 3.3<br />
2002 130<br />
2002 -200<br />
1976 9.9e-07<br />
1976 0<br />
1950 3.597e-05<br />
1950 0<br />
39<br />
1456 0<br />
40<br />
2028 3.3<br />
2028 3.3<br />
1950 0<br />
1950 0.00013299<br />
49<br />
1456 0<br />
50<br />
1456 0<br />
1457 0<br />
2028 3.3<br />
2002 -200<br />
1976 0<br />
1950 0.00013299<br />
; file closed at 5.000000ns<br />
; trailer 823484657<br />
The .out File 319<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
320 Output Files<br />
Sample Output File for PowerMill<br />
;! output_format 5.3<br />
; header 306529706<br />
; --------------------------------------------------------<br />
;| |<br />
;| PowerMill Version 5.4_Release |<br />
;| SN: P121498-SunOS_5 |<br />
;| Copyright (c) 2000 Synopsys Inc., All Rights Reserved. |<br />
;| |<br />
; --------------------------------------------------------<br />
;<br />
;<br />
.vdd 3.3<br />
.time_resolution 0.1<br />
.current_resolution 1e-06<br />
.voltage_resolution 0.01<br />
; tentative simulation_time 50<br />
.high_threshold 2.31<br />
.low_threshold 0.99<br />
.nnodes 75<br />
.nelems 243<br />
.extra_nodes 0<br />
.bus_notation [ - ]<br />
.hier_separator .<br />
.case L<br />
.index v(g7) 1456 v<br />
.index g7 1457 l<br />
.index i(g7) 1458 i<br />
.index I(g7) 1459 I<br />
.index I_rms(g7) 1460 I_rms<br />
.index di/dt(g7) 1461 di/dt<br />
.index m(power_flow) 1950 m<br />
.index M(power_flow) 1976 M<br />
.index dm/dt(power_flow) 2002 dm/dt<br />
.index M_rms(power_flow) 2028 M_rms<br />
.index i1(x11.xi9.xn8.mxn0) 2034 i<br />
.index I2(x11.xi9.xn8.mxn0) 2040 I<br />
.index I_rms3(x11.xi9.xn8.mxn0) 2046 I_rms<br />
.index di/dt4(x11.xi9.xn8.mxn0) 2052 di/dt<br />
.index di/dt5(x11.xi9.xn8.mxn0) 2053 di/dt<br />
0<br />
1456 330<br />
1457 1<br />
2052 0<br />
2053 0<br />
2034 0<br />
2046 0<br />
2040 0<br />
1458 0<br />
1461 0<br />
1459 0<br />
1460 0<br />
2028 0.00033<br />
2028 0.00033<br />
2002 -200<br />
2002 -200<br />
1976 0.00013464<br />
1976 0.00013464<br />
1950 0.00013464<br />
1950 0.00013464
0<br />
1950 0.00013464<br />
1950 0.00013464<br />
5<br />
2052 -53<br />
2034 268<br />
2028 0.00033<br />
2028 0.00088539<br />
2002 -200<br />
2002 130<br />
1976 0.00013464<br />
1976 9.9e-07<br />
1950 0.00013464<br />
1950 0.00016896<br />
6<br />
2052 214<br />
2034 54<br />
2028 0.00088539<br />
2028 0.00017919<br />
1976 9.9e-07<br />
1976 9.9e-07<br />
7<br />
2052 48<br />
2034 6<br />
2028 0.00017919<br />
2028 2.079e-05<br />
1976 9.9e-07<br />
1976 9.9e-07<br />
10<br />
2052 2<br />
2034 0<br />
2028 2.079e-05<br />
2028 9.9e-07<br />
1976 9.9e-07<br />
1976 9.9e-07<br />
1950 0.00016896<br />
1950 3.597e-05<br />
20<br />
1950 3.597e-05<br />
1950 3.597e-05<br />
25<br />
2053 10<br />
2046 0<br />
2052 5<br />
2034 175<br />
2028 9.9e-07<br />
2028 0.00033099<br />
1976 9.9e-07<br />
1976 0.00013563<br />
1950 3.597e-05<br />
1950 3.762e-05<br />
26<br />
2053 -239<br />
2046 49<br />
2052 -72<br />
2034 8<br />
2028 0.00033099<br />
2028 0.00033099<br />
1976 0.00013563<br />
1976 0.00013563<br />
27<br />
2053 -10<br />
2046 48<br />
The .out File 321<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
322 Output Files<br />
2052 -3<br />
2034 0<br />
2028 0.00033099<br />
2028 0.00033099<br />
1976 0.00013563<br />
1976 0.00013563<br />
29<br />
1456 330<br />
2053 0<br />
2046 46<br />
1976 0.00013563<br />
1976 0.00013563<br />
30<br />
1456 330<br />
2052 -89<br />
2034 268<br />
1458 -394<br />
1461 -13<br />
1459 0<br />
1460 0<br />
2028 0.00033099<br />
2028 9.9e-07<br />
1976 0.00013563<br />
1976 9.9e-07<br />
1950 3.762e-05<br />
1950 3.597e-05<br />
31<br />
1456 313<br />
1456 274<br />
2052 214<br />
2034 54<br />
1458 -1430<br />
1461 -1036<br />
1459 -12<br />
1460 70<br />
2028 9.9e-07<br />
2028 9.9e-07<br />
1976 9.9e-07<br />
1976 9.9e-07<br />
32<br />
1456 189<br />
1457 2<br />
2052 48<br />
2034 6<br />
1458 -1587<br />
1461 -157<br />
1459 -57<br />
1460 262<br />
2028 9.9e-07<br />
2028 9.9e-07<br />
1976 9.9e-07<br />
1976 9.9e-07<br />
33<br />
1456 81<br />
1456 0<br />
1457 0<br />
1458 -141<br />
1461 1446<br />
1459 -103<br />
1460 378<br />
34<br />
1456 3<br />
1458 -84
1461 57<br />
1459 -104<br />
1460 373<br />
35<br />
1456 2<br />
2052 1<br />
2034 1<br />
1458 -26<br />
1461 58<br />
1459 -103<br />
1460 368<br />
2028 9.9e-07<br />
2028 0<br />
2002 130<br />
2002 -200<br />
1976 9.9e-07<br />
1976 0<br />
1950 3.597e-05<br />
1950 0<br />
39<br />
1456 0<br />
2052 0<br />
2034 0<br />
1458 0<br />
1461 6<br />
1459 -95<br />
1460 348<br />
2028 0<br />
2028 0<br />
1976 0<br />
1976 0<br />
40<br />
2028 0<br />
2028 0<br />
1976 0<br />
1976 0<br />
1950 0<br />
1950 0.00013299<br />
49<br />
1456 0<br />
50<br />
1456 0<br />
1457 0<br />
2028 0<br />
2002 -200<br />
1976 0<br />
1950 0.00013299<br />
51<br />
2053 0<br />
2052 0<br />
2046 35<br />
2040 0<br />
2034 0<br />
2028 -0<br />
2002 -0<br />
1976 -0<br />
1950 -0<br />
1458 0<br />
1461 0<br />
1459 -73<br />
1460 305<br />
; file closed at 5.000000ns<br />
; trailer 809437103<br />
The .out File 323<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
324 Output Files<br />
The .act File<br />
The simulation tool reports active nodes whose voltage changes<br />
exceed the user-defined threshold to the .act file. The .act file<br />
uses the Arcadia netlist format so that it can be read directly by<br />
Arcadia.<br />
The .act file is divided into three main sections:<br />
■ Header section: This section displays the name of the<br />
program generating the file, the time and date the file was<br />
generated, the output format version number, and copyright.<br />
;! act_file_format version_number<br />
The version number is updated only when a new .nact file<br />
format is released with the software.<br />
■ Simulation information section: This section displays the<br />
information used by the tool to postprocess the file. See the<br />
next section for a detailed description of this section.<br />
■ Active node information section: This section displays<br />
the total number of active nodes reported in the file.<br />
Simulation Information Section<br />
This section of the .act file is divided into several subsections,<br />
which can be one or many lines long. For example, one line<br />
provides the RC time constant unit, which you can change using<br />
the set_sim_unit configuration command.<br />
EXAMPLE:<br />
; The unit for RC time constants is ns.<br />
The next subsection reports the interval of time during which<br />
the inactive nodes are monitored.<br />
EXAMPLE:<br />
; The checking starts at 10.600000ns and ends at<br />
13.400000ns
Sample .act File<br />
The .act File 325<br />
The next subsection lists active nodes using the following<br />
syntax:<br />
EXAMPLE:<br />
node_name [cap_model] [reduction_model] [RC_constant];<br />
The possible values for cap_model and reduction_model are<br />
listed in the description of the report_node_active command.<br />
RC_constant is the RC time constant based on the node<br />
capacitance and the maximum resistance of the conducting path<br />
from the voltage source (or ground) to the node.<br />
This file lists active nodes reported by the report_node_active<br />
configuration command.<br />
;! act_file_format 5.3<br />
; --------------------------------------------------------<br />
;| |<br />
;| PowerMill Version 5.4_Release |<br />
;| SN: P101598-SunOS_5 |<br />
;| Copyright (c) 2000 Synopsys Inc., All Rights Reserved. |<br />
;| |<br />
; --------------------------------------------------------<br />
;;<br />
; Report active nodes in Arcadia netlist format.<br />
; The unit for RC time constants is ns.<br />
;<br />
; The checking starts at 10.600000ns and ends at 13.400000ns<br />
*schematic-net-name<br />
t1.C 21 awe ; 0.297<br />
t1.B 21 awe ; 0.252<br />
a 3 serial-parallel ; 0<br />
out 3 serial ; 0.126<br />
; number of active nodes reported in the file: 4<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
326 Output Files<br />
The .nact File<br />
Inactive Node Information<br />
The simulation tool reports to the .nact file inactive nodes whose<br />
voltage changes exceed the user-defined threshold.<br />
The .nact file is divided into two main sections:<br />
■ Header section: This section contains the name of the<br />
program generating the file, the time and date the file was<br />
generated, the output format version number, and copyright.<br />
;! inact_file_format version_number<br />
The version number is updated only when a new .nact file<br />
format is released with the software.<br />
■ Simulation information section: This section contains<br />
information used by various tools to do postprocessing on<br />
this file. See the next section for a detailed description of this<br />
section.<br />
■ Inactive node information section: This section displays<br />
a summary report of the inactive nodes detected. The report<br />
includes the total number of inactive nodes that were<br />
detected, and, of those, the number connected to an external<br />
source, and the number that were or were not in active<br />
stages.<br />
This section of the .nact file is divided into three subsections.<br />
The first subsection (a single line) reports the interval of time<br />
during which the inactive nodes are monitored.<br />
EXAMPLE:<br />
; The checking starts at 50.000000ns and ends at<br />
100.000000ns<br />
The second subsection lists inactive nodes that are not in active<br />
stages using the following syntax:<br />
config_cmd cmd_arguments_with_inactive_nodes
Sample .nact File<br />
The .nact File 327<br />
The third subsection lists inactive nodes that are in active stages<br />
using the following syntax:<br />
set_node_ic node_name ic_voltage<br />
This file reports inactive nodes with voltages that don’t change<br />
during the active node checking period. This file is generated by<br />
the inactive= option of the report_node_active configuration<br />
command.<br />
;! inact_file_format 5.3<br />
; --------------------------------------------------------<br />
;| |<br />
;| TimeMill Version 5.4_Release |<br />
;| SN: P110998-SunOS_5 |<br />
;| Copyright (c) 2000 Synopsys Inc., All Rights Reserved. |<br />
;| |<br />
; --------------------------------------------------------<br />
;;<br />
; Report inactive nodes in <strong>EPIC</strong> configuration file format.<br />
;<br />
; The checking starts at 50.000000ns and ends at 100.000000ns<br />
;==============================================================<br />
; Section for inactive nodes not in active stages<br />
;==============================================================<br />
set_node_v v=0V no=CTR<br />
set_node_v v=0V no=CTR<br />
set_node_v v=0V no=XCNTR-XI2-XI0-XI25-NET9<br />
set_node_v v=0V no=N_378<br />
;==============================================================<br />
; Section for inactive nodes in active stages<br />
;==============================================================<br />
set_node_ic XCNTR-XI2-XI0-XI25-XI4-NET4 0V<br />
set_node_ic XCNTR-XI2-XI2-XI25-NET12 3V<br />
set_node_ic XCNTR-XI2-XI2-XI25-XI4-NET4 0V<br />
;==============================================================<br />
; Summary for inactive node report<br />
;==============================================================<br />
; number of inactive nodes detected: 11<br />
; number of inactive nodes connected to external src: 4<br />
; number of inactive nodes not in active stages reported: 4<br />
; number of inactive nodes in active stages reported: 3<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
328 Output Files<br />
The .nodealias File<br />
Sample .nodelias File<br />
<strong>EPIC</strong> simulation tools report node alias names to the .nodealias<br />
file if the node names specified in the SPICE netlists, SPF files<br />
or configuration files are not the primary names.<br />
A node (net) in a circuit can have alias node names for any of the<br />
following reasons:<br />
■ There are hierarchical alias names from instances of<br />
subcircuits<br />
■ The very small resistors are shorted<br />
■ There are DC voltage sources of 0 volts connected to the node<br />
■ The node is replaced by the back-annonated RC network<br />
■ The RC network is reduced<br />
The .nodealias file has an <strong>EPIC</strong> file banner at the top that<br />
contains the name of the program generating the .nodealias file<br />
and time at which the file was generated. Starting with version<br />
5.3, the first line of the <strong>EPIC</strong> banner gives the file format version<br />
as:<br />
;! nodealias_format version_number<br />
The version number is updated only when a new .nodealias file<br />
format is released with the software.<br />
Node alias names and primary names are listed using the<br />
following syntax:<br />
primary_node_name alias_node_name<br />
The alias_node_name is the name originally used in the SPICE<br />
netlists or configuration files.<br />
<strong>EPIC</strong> simulation tools report node alias names to the .nodealias<br />
file if the node names specified in the SPICE netlists, SPF files<br />
or configuration files are not the primary names.
The .nodealias File 329<br />
;! nodealias_format 5.3<br />
; --------------------------------------------------------<br />
;| |<br />
;| TimeMill Version 5.4_Release |<br />
;| SN: P111398-SunOS_5 |<br />
;| Copyright (c) 2000 Synopsys Inc., All Rights Reserved. |<br />
;| |<br />
; --------------------------------------------------------<br />
;<br />
;<br />
; A node (net) in a circuit can have alias node names for any of the<br />
; following reasons:<br />
; * There are hierarchical alias names from instances of subcircuits<br />
; * The very small resistors are shorted<br />
; * There are DC voltage sources of 0 volts connected to the node<br />
; * The node is replaced by the back-annonated RC network<br />
; * The RC network is reduced<br />
;<br />
; The following node names specified in the SPICE netlists, SPF files,<br />
; or configuration commands are not primary names. Their primary names are<br />
; printed for reference using the following syntax:<br />
;<br />
; <br />
;<br />
; The primary_node_name is the node name chosen by the<br />
; netlist parser. The alias_node_name is the original node name used<br />
; in the SPICE netlists, SPF files or configuration commands.<br />
;<br />
;<br />
out t1.OUT<br />
vdd VSS<br />
PI x1.cell1.in<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
330 Output Files<br />
Warning Messages and the .log File<br />
The following table defines terms you might find in the .log file<br />
or in warning messages:<br />
U A node is unconnected if it is not connected to<br />
any circuit element, except capacitors. A<br />
message is reported by the netlist compiler. The<br />
names of all unconnected nodes are listed in a<br />
.unc file. When an unconnected node is<br />
identified, a message will appear in the .dcu file.<br />
EXAMPLE:<br />
There are ten nodes that are set to U by the<br />
simulator before DC initialization. See the<br />
timemill.dcu file for the node names.<br />
dangling A node is dangling if:<br />
It is not connected to an input stimulus,<br />
including voltage/current source.<br />
It is not channel-connected to any circuit<br />
element.<br />
It is not connected to an output or biput of<br />
any functional models.<br />
The names of all dangling nodes are reported in<br />
a .dng file. When a dangling node is identified,<br />
a message is reported in a .dng file after the<br />
tool reads the configuration commands.<br />
EXAMPLE:<br />
There are eight dangling nodes. See the<br />
timemill.dng file for the node names.<br />
floating A node is defined as floating if there is no<br />
conducting path from a voltage source to the<br />
node.
The .err File<br />
Appendix C<br />
Error Output File<br />
All TimeMill and PowerMill timing, power, and logic errors are<br />
written to an error file. This appendix contains information<br />
about the .err file and the Viewerror utility that you can use to<br />
read the error file.<br />
<strong>EPIC</strong> simulation tools report warnings and errors to an error<br />
(.err) file, in addition to sending messages to the stdout and the<br />
.log file. The error file begins with an <strong>EPIC</strong> file banner that<br />
contains the name of the program generating the error file and<br />
the time the file is generated.<br />
The error file lists each error message as a number of fields of<br />
ASCII code on one line. These fields are error type code, error<br />
description code, related node names, element names, and<br />
simulation information. Each field on a line is separated by a<br />
blank. The number of fields on the line depends on the type of<br />
error.
332 Error Output File<br />
The first three fields are common to all error messages. They are<br />
described in the following table.<br />
Field Number Data Type Description<br />
1 float The simulation time when the<br />
error occurred.<br />
2 int Error/warning type code (T_code).<br />
3 int Error/warning description code<br />
(D_code).<br />
There are 10 different types of codes (T_codes), each of which has<br />
a set of description codes (D-codes). The D-codes provide detailed<br />
messages about the error.<br />
The T_codes (error/warning type codes in field 2) are described in<br />
the following table.<br />
T_Code Data Type<br />
1 Comparison error<br />
2 Timing error<br />
3 Bus contention error<br />
4 High Impedance condition<br />
5 Uncertain state condition<br />
6 Timing error with timing tolerance margin<br />
7 Block delay characterization error<br />
8 Power diagnosis<br />
9 Multiple toggle error<br />
10 Multiple pulse error
Type 1: Comparison Error<br />
Type 1: Comparison Error<br />
The .err File 333<br />
The description codes (D_Codes) describe the error in detail. The<br />
fields that follow the D-code field (field 3) vary. The following<br />
tables list the D_codes for all T_codes.<br />
D_code 1 The simulated result differs from the expected results.<br />
D_code 2 Node should have been in high impedance.<br />
D_code 3 Node should not have been in high impedance.<br />
D_code 4 Biput node should be driven by the circuit.<br />
D_code 5 Biput node should drive the circuit.<br />
D_code 6 Node should have been set during simulation.<br />
D_code 7 Node should not have been set during simulation.<br />
D-code 8 Node should be at X state.<br />
D-code 9 Node should be at a non-X state.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 int Simulated value (state number).<br />
5 char Expected value.<br />
6 string Node name.<br />
D_code 10 The simulated result differs from the expected results during<br />
the strobe window.<br />
D_code 11 The simulated result differs from the expected results during<br />
the stimulus-triggered strobe window.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 int Simulated value (state number)<br />
5 char Expected value<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
334 Error Output File<br />
6 float Time when the strobe window starts.<br />
7 float Time when the strobe window ends.<br />
8 string Node name.<br />
Type 2: Timing Errors and Type 6: Timing Errors with Tolerance Margin Specified<br />
D_Code 1 Setup time violation/tolerance<br />
D_Code 2 Hold time violation/tolerance<br />
D_Code 3 Edge-to-edge violation/tolerance<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node1 name.<br />
5 int direction (0: rising |1: falling |<br />
2: changing)<br />
6 float Occurred time of node1<br />
7 string Node2 name<br />
8 int direction (0: rising |1: falling |<br />
2: changing)<br />
9 float Occurred time of node2<br />
10 float Time diff (abs (field 9 - field 6))<br />
11 string “Min/Max”<br />
12 float Time required.<br />
The following field is for Type 2 only:<br />
13 string Hierarchical name of the timing checking<br />
element or “-cfg” if the timing check element is<br />
specified in a configuration file.<br />
The following fields are for Type 6 only:<br />
13 float Tolerance margin.<br />
14 string Hierarchical name of the timing checking<br />
element or configuration filename if the timing<br />
check element is specified in a configuration file.
The .err File 335<br />
Type 2: Timing Errors and Type 6: Timing Errors with Tolerance Margin Specified<br />
D_Code 4 Pulse width violation/tolerance<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name.<br />
5 int direction (0: rising |1: falling | 2: changing)<br />
6 float Occurred time<br />
7 int direction (0: rising |1: falling | 2: changing)<br />
8 float Occurred time<br />
9 float Pulse width.<br />
10 string “Min/Max”<br />
11 float Width required.<br />
The following field is for Type 2 only:<br />
12 string Hierarchical name of the timing checking<br />
element or “-cfg” if the timing check element is<br />
specified in a configuration file.<br />
The following fields are for Type 6 only:<br />
12 string Hierarchical name of the timing checking<br />
element or “-cfg” if the timing check element is<br />
specified in a configuration file.<br />
13 string Hierarchical name of the timing checking<br />
element or “-cfg” if the timing check element is<br />
specified in a configuration file.<br />
Type 2: Timing Errors and Type 6: Timing Errors with Tolerance Margin Specified<br />
D_Code 5 Edge to edge window violation/tolerance<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string <strong>Reference</strong> node name<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
336 Error Output File<br />
Type 2: Timing Errors and Type 6: Timing Errors with Tolerance Margin Specified<br />
5 int direction (0: rising |1: falling | 2: changing)<br />
6 float <strong>Reference</strong> edge occurred time.<br />
7 string Checked node name.<br />
8 int direction (0: rising |1: falling | 2: changing)<br />
9 float Occurred time for the edge of the checked node.<br />
10 float Time diff by (field 9 - field 6)<br />
11 float Lower bound of time diff in nanoseconds.<br />
12 float Upper bound of time diff in nanoseconds.<br />
The following field is for Type 2 only:<br />
13 string Hierarchical name of the timing checking<br />
element or “-cfg” if the timing check element is<br />
specified in a configuration file.<br />
The following fields are for Type 6 only:<br />
13 float Tolerance margin.<br />
14 string Hierarchical name of the timing checking<br />
element or “-cfg” if the timing check element is<br />
specified in a configuration file.<br />
Type 3: Bus Contention Error<br />
Timing checks can be specified by using a SETUP command in<br />
the netlist file or a timing check in a configuration file. A timing<br />
violation message is reported in the .err output file with element<br />
information if the error was found in a netlist. A timing violation<br />
message is reported without element information if the error was<br />
found from a timing violation check in the configuration file. The<br />
extension -cfg is appended to the message in the .err output file.<br />
D_Code 1 Bus contention error<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name
Type 4: High Impedance Condition Generated by “report_node_z”<br />
D_Code 1 High Impedance Condition<br />
Additional Fields:<br />
Field Number Data Type Description<br />
The .err File 337<br />
4 string Node name<br />
5 float At time<br />
6 int Internal state number for high impedance value<br />
(H/L/Z)<br />
7 float Maximum high-impedance state time without<br />
error reporting.<br />
Type 5: Unknown State<br />
D_Code 1 U-state (transition state) duration is too long.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name<br />
5 float U-state end time.<br />
6 int Internal state number for unknown state (U/Z/Y)<br />
7 float Maximum U-state time without error reporting<br />
Type 5: Unknown State<br />
D_Code 2 U- state (transition state) duration is too short.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
338 Error Output File<br />
Type 5: Unknown State<br />
4 string Node name<br />
5 float U-state end time.<br />
6 int Internal state number for unknown state (U/Z/Y)<br />
Type 7: Block Delay Characterization Error<br />
D_Code 1 No transition on node<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name<br />
Type 7: Block Delay Characterization Error<br />
D_Code 2 No delay path<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 int 0|1|2 for rising|falling|changing<br />
5 int 0|1|2 for rising|falling|changing<br />
6 string Node name.<br />
7 string Node name.
Type 8: Power Diagnosis<br />
D_Code 1 Static Partial-Swing Detection (NMOS)<br />
Syntax: 0 8 1 <br />
The .err File 339<br />
Definition: Node is driven by PMOS transistors only, and it drives at least one<br />
NMOS fanout transistor.<br />
D_Code 2 Static Partial-Swing Detection (PMOS)<br />
Syntax: 0 8 2 <br />
Definition: Node is driven by NMOS transistors only, and it drives at least one<br />
PMOS fanout transistor.<br />
D_Code 3 Static VDD Path Problem<br />
Syntax: 0 8 3 <br />
Definition: No possible conducting path to VDD.<br />
D_Code 4 Static GND Path Problem<br />
Syntax: 0 8 4 <br />
Definition: No possible conducting path to GND.<br />
D_Code 5 Static DC Path to VDD<br />
Syntax: 0 8 5 () () ... () <br />
Definition: A static DC conducting path from to VDD detected. The<br />
path consists of elements ... and nodes , , ..., ,<br />
and Vdd.<br />
D_Code 6 Static DC Path to GND<br />
Syntax: 0 8 6 () () ... () <br />
Definition: A static DC conducting path from to GND detected. The<br />
path consists of elements ... and nodes , , ..., ,<br />
and Gnd.<br />
D_Code 7 Static DC Leakage Path between two power supply nodes<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
340 Error Output File<br />
Type 8: Power Diagnosis<br />
Syntax: 0 8 7 () () ... ) ()<br />
<br />
Definition: A static conducting path exists between supply nodes and<br />
of different voltages. The path consists of nodes through ,<br />
and branches through .<br />
D_Code 8 Node Stuck at Logic 1 at All Times<br />
Syntax:0 8 8 () () ... () <br />
Definition: A static DC conducting path from to Vdd and no possible<br />
conducting path to Gnd.<br />
D_Code 9 Node Stuck at Logic 0 at All Times<br />
Syntax: 0 8 9 () () ... () <br />
Definition: A static DC conducting path from to Gnd and no possible<br />
conducting path to Vdd.<br />
D_Code 10 Static Excessive-Rise/Fall Time Problem<br />
Syntax: 0 8 10 <br />
Definition: Node with an excessive rise/fall time "est_rf_time" by static estimation.<br />
D_Code 11 Static Excessive-Rise/Fall Time Problem<br />
Syntax: 8 11 <br />
Definition: Node with an excessive rise/fall time by dynamic simulation. time_start<br />
and time_end are the times when node enters and exits the U-state, respectively.<br />
D_Code 12 Dynamic Floating Node (Hi-Z) Problem<br />
Syntax: 8 12 <br />
Definition: Node staying at a floating state (L, H, Z) too long. time_start and<br />
time_end are the times when node enters the high impedance state. The<br />
is an internal state number for state (L, H, Z).<br />
D_Code 13 Excessive Branch Current
Type 8: Power Diagnosis<br />
Syntax: 8 13 <br />
The .err File 341<br />
Definition: Excessive branch current detected for from<br />
to . The average current between and<br />
is .<br />
D_Code 14 Partial off PMOS<br />
Syntax: 8 14 () ... () <br />
||| () ... () ||| () ... () <br />
Definition: A PMOS transistor has a possible channel-connect path<br />
to power supply , and its gate terminal has a possible path to another power<br />
supply node where the voltage of vddl is less than vddh. It is possible that<br />
will not turn off when its gate terminal is driven to logic 1,<br />
resulting in a dc leakage path between and the voltage source .<br />
D_Code 15 Partial off NMOS<br />
Syntax: 8 15 () ... () <br />
||| () ... () ||| () ... ()<br />
<br />
Definition: A NMOS transistor has a possible channel-connect path<br />
to power supply , and its gate terminal has a possible path to another power<br />
supply node where the voltage of gndl is less than gndh. It is possible that<br />
will not turn off when its gate terminal is driven to logic 0,<br />
resulting in a dc leakage path between and the voltage source .<br />
D_Code 16 Forward bias PMOS<br />
Syntax: 8 16 () ... () <br />
||| <br />
Definition: A PMOS transistor has a possible channel-connect path<br />
to power supply , and its bulk terminal is connected to another power supply<br />
node where the voltage of vddl is less than vddh. It is possible to have a<br />
forward biased pn junction between the P-diffusion and the N-substrate, resulting<br />
in a dc leakage path between and .<br />
D_Code 17 Forward bias NMOS<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
342 Error Output File<br />
Type 8: Power Diagnosis<br />
Syntax: 8 17 () ... () <br />
||| <br />
Definition: An NMOS transistor has a possible channel-connect<br />
path to power supply , and its bulk terminal is connected to another power<br />
supply node where the voltage of gndl is less than gndh. It is possible to<br />
have a forward biased pn junction between the N-diffusion and the P-substrate,<br />
resulting in a dc leakage path between and .<br />
D_Code 18 Instaneous Current/Power Exceeds Budget<br />
Syntax: 8 18 <br />
Definition:The instaneous current/power for the report_block_power created probe<br />
has exceeded its current/power budget at .<br />
D_Code 19 Instaneous Current/Power Exceeds Budget at Least Once<br />
Syntax: 8 19 <br />
The instantaneous current/power for the report_block_power created probe<br />
has exceeded its current/power budget of at least<br />
once during the dynamic simulation. The peak current observed was .<br />
D_Code 20 Average Current/Power Exceeds Budget<br />
Syntax: 8 20 <br />
The average current/power for the report_block_power created probe<br />
exceeds its current/power budget of .<br />
D_Code 21 RMS Current/Power Exceeds Budget<br />
Syntax: 8 21 <br />
The RMS current/power for the report_block_power created probe<br />
exceeds its current/power budget of .<br />
D_Code 22 Wasted Current Percentage Exceeds Budget<br />
Syntax: 8 21 <br />
The wasted current percentage for the report_block_power created<br />
probe exceeds its budget of .
Type 9: Multiple-toggle Error<br />
The .err File 343<br />
This set of D-codes displays field names, as shown in the<br />
following table.<br />
Field Name Data Type<br />
string<br />
float<br />
est_rf_time float<br />
string<br />
string<br />
Integer number as .out to represent<br />
L|H|X state<br />
float<br />
float<br />
string<br />
D_Code 1 Node toggle more than once in a user-specified period of time<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name<br />
5 float Last time node changed state<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
344 Error Output File<br />
Type 10: Multiple-pulse Error<br />
D_Code 1 Node has more than one pulse in a user-specified period of time.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name<br />
5 float Time the last pulse started<br />
6 int Pulse state (0: low; 1: high)<br />
7 float Period<br />
8 string Hierarchical name of the pulse detection element<br />
or configuration file name if the pulse detection<br />
is specified in a configuration file<br />
Type 10: Multiple-pulse Error<br />
D_Code 2 Node has more than one pulse within the pulse of the reference<br />
node.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name<br />
5 float Time the last pulse started<br />
6 int Pulse state (0: low; 1: high)<br />
7 string <strong>Reference</strong> node name<br />
8 float Time the reference pulse started<br />
9 int <strong>Reference</strong> pulse state 0: low; 1: high)<br />
10 string Hierarchical name of the pulse detection element<br />
or configuration file name if the pulse detection<br />
is specified in a configuration file
Type 10: Multiple-pulse Error<br />
The .err File 345<br />
D_Code 3 Node has a single pulse inside the pulse of the reference node.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name<br />
5 float Time the single pulse started<br />
6 int Pulse state (0: low; 1: high)<br />
7 string <strong>Reference</strong> node name<br />
8 float Time the reference pulse started<br />
9 int <strong>Reference</strong> pulse state (0: low; 1: high)<br />
10 string Hierarchical name of the pulse detection element<br />
or configuration file name if the pulse detection<br />
is specified in a configuration file<br />
Type 10: Multiple-pulse Error<br />
D_Code 4 Node doesn’t have a pulse inside the pulse of the reference node.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
4 string Node name<br />
5 float Time the reference pulse ended<br />
6 int Pulse state (0: low; 1: high)<br />
7 string <strong>Reference</strong> node name<br />
8 float Time the reference pulse started<br />
9 int <strong>Reference</strong> pulse state (0: low; 1: high)<br />
10 string Hierarchical name of the pulse detection element<br />
or configuration file name if the pulse detection<br />
is specified in a configuration file<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
346 Error Output File<br />
Type 10: Multiple-pulse Error<br />
D_Code 5 Node has more than one pulse in a user-specified period of time.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
1 float Time when the multiple-pulse error is detected.<br />
It is also the time when the current period ends.<br />
2 int Error type code (10)<br />
3 int Error description code (5))<br />
4 string Node name<br />
5 int Pulse state of the node (0: low; 1: high)<br />
6 float Time the current period started<br />
7 string Hierarchical name of the pulse detection element<br />
or configuration file name if the pulse detection<br />
is specified in a configuration file<br />
Type 10: Multiple-pulse Error<br />
D_Code 6 Node has exactly one pulse in a user-specified period of time.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
1 float Time when the single-pulse error is detected<br />
It is also the time when the current period ends.<br />
2 int Error type code (10)<br />
3 int Error description code (6)<br />
4 string Node name
Type 10: Multiple-pulse Error<br />
The .err File 347<br />
5 int Pulse state of the node (0: low; 1: high)<br />
6 float Time the current period started<br />
7 string Hierarchical name of the pulse detection element<br />
or configuration file name if the pulse detection<br />
is specified in a configuration file<br />
D_Code 7 Node does not have any pulse in a user-specified period of time.<br />
Additional Fields:<br />
Field Number Data Type Description<br />
1 float Time when the no-pulse error is detected<br />
It is also the time when the current period ends.<br />
2 int Error type code (10)<br />
3 int Error description code (6)<br />
4 string Node name<br />
5 int Pulse state of the node (0: low; 1: high)<br />
6 float Time the current period started<br />
7 string Hierarchical name of the pulse detection element<br />
or configuration file name if the pulse detection<br />
is specified in a configuration file<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
348 Error Output File<br />
.err File Sample<br />
;! error_format 5.2<br />
; --------------------------------------------------------<br />
;| |<br />
;| TimeMill Version 5.4<br />
;| SN: P042498-SunOS_5 |<br />
;| Copyright (c) 2000 Synopsys Inc., All Rights Reserved. |<br />
;| |<br />
; --------------------------------------------------------<br />
;<br />
;Built by hmchen in " sun50504 " on Mon May 4 20:51:51 PDT 1998<br />
; Wed May 6 17:36:46 2000<br />
;<br />
;This is a comment<br />
11.00 1 1 1 0 n1 ;comparison error<br />
12.00 1 2 1 H n3 ;comparison error<br />
12.00 1 4 1 T n5 ;comparison error<br />
13.00 1 5 7 1 n19 ;comparison error<br />
14.00 1 6 9 0 n6 ;comparison error<br />
14.00 1 7 3 ? n6 ;comparison error<br />
30.00 2 1 n1 1 30.7 n2 0 30.8 0.1 Min 10-cfg ;setup violation<br />
30.00 6 1 n1 1 30.7 n2 0 30.8 0.1 Min 10 0.1 ;setup violation warning<br />
45.00 2 2 n3 0 40.7 n4 1 60.8 20.1 Max 10-cfg ;hold violation<br />
100.00 2 3 n2 0 40.7 n4 1 60.8 20.1 Max 10-cfg ;edge to edge<br />
145.00 2 4 n3 0 40.7 1 45.7 5.0 min 10 ;pulse violation<br />
150.00 3 1 n1 ;bus contention<br />
200.00 4 1 n2 202.00 4 ;high impedance condition<br />
200.00 5 1 n2 200.2 2 ;Unknown state<br />
;end<br />
; Total number of errors in this file: 14<br />
Figure 2 Sample .err file output
The Viewerror Utility<br />
Command Syntax<br />
The Viewerror Utility 349<br />
You use the Viewerror utility to view the output error file in<br />
several ways and generate multiple error reports. This utility<br />
can sort errors by the time or type associated with a node. You<br />
can also separate comparison errors from timing check errors.<br />
SYNTAX:<br />
Command-line Options<br />
viewerror [-i filename]<br />
[-m number_of_messages]<br />
[-n nodenames]<br />
[-o filename]<br />
[-p type]<br />
[-s]<br />
[-t t1 t2 ... tx,ty]<br />
The viewerror command line options are:<br />
-i filename<br />
This specifies the input file, for example, timemill.err. If<br />
you do not specify the filename, the program will search for<br />
timemill.err first, then powrmill.err.<br />
-m number_of_messages<br />
The number of error messages to print. The default number<br />
is 1000. This option can take up to 50 arguments.<br />
-n nodenames<br />
Prints all error messages associated with the given nodes.<br />
Signals with square brackets ([ ]) must be enclosed in<br />
quotation marks (“ ”). Buses (single or bit grouped) must<br />
also be enclosed in quotation marks. This option can take<br />
up to 50 arguments.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
350 Error Output File<br />
-o filename<br />
Specifies the output file. The default is stdout.<br />
-p type<br />
Prints all the error messages with the given type, where<br />
type is an integer number of 1 through 10. When used with<br />
-n, it prints out all the error messages of the given type for<br />
the nodes specified in -n. The following list shows the 10<br />
different types of error messages.<br />
1 comparison error<br />
2 timing error<br />
3 bus contention error<br />
4 high impedance error<br />
5 uncertain state condition<br />
6 timing error with timing tolerance margin<br />
7 block delay characterization error<br />
8 power diagnosis<br />
9 multiple toggle error<br />
10 multiple pulse error<br />
-s Sorts error messages by error type. If not specified, the<br />
error messages are sorted by time.<br />
-t t1 t2 tx,ty<br />
Prints all error messages for a given simulation time or<br />
time range. Only one time range can be specified.<br />
Individual times must be separated by a space, and the<br />
time range separated by a comma. This option can take up<br />
to 50 arguments.<br />
EXAMPLE:<br />
-t time1 time2 timex,timey<br />
This example syntax prints all the errors between timex<br />
and timey, plus any errors at times time1 and time2. You<br />
can use this option together with -p and -n to print specific<br />
types of errors for specific nodes at given times.
Appendix D<br />
SPICE-independent<br />
Voltage Source Syntax<br />
This appendix provides the syntax and explanations of the<br />
SPICE-independent voltage sources supported by PowerMill,<br />
TimeMill and AMPS.<br />
SYNTAX:<br />
Vxxx n+ n- voltage_source_type parameters<br />
The voltage source types are:<br />
■ AM<br />
■ EXP<br />
■ PULSE, PU<br />
■ PWL<br />
■ SFFM<br />
■ SIN<br />
The syntax for these voltage source types is found on the<br />
following pages.
352 SPICE-independent Voltage Source Syntax<br />
AM<br />
SYNTAX:<br />
AM (sa oc fm fc td)<br />
EXAMPLE:<br />
v1 1 0 AM(10 1 100 1K 1M)<br />
DESCRIPTION:<br />
Argument Definition<br />
sa Signal amplitude. Default is 0.0.<br />
oc Offset constant. Default is 0.0.<br />
fm Modulation frequency. Default is 0.0.<br />
fc Carrier frequency. Default is 0.0.<br />
td Delay time. Default is 0.0
EXP<br />
SYNTAX:<br />
EXP [(]v1 v2 [td1 [τ1 [td2 [τ2]]]] [)]<br />
353<br />
EXAMPLE:<br />
VIN 3 0 EXP (-4 -1 2NS 30NS 60NS 40NS)<br />
This example describes an exponential transient source that is<br />
connected between nodes 3 and 0. It has an initial t=0 voltage of<br />
-4 V and a final voltage of -1 V. The waveform rises<br />
exponentially from -4 Vto-1 V with a time constant of 30 ns. At<br />
60 ns it starts dropping to -4 V again, with a time constant of 40<br />
ns.<br />
DESCRIPTION:<br />
Argument Definition<br />
v1 Initial value of voltage in volts.<br />
v2 Pulsed value of voltage in volts.<br />
td1 Rise delay time in seconds. Default is 0.0.<br />
td2 Fall delay time in seconds. Default is 0.0.<br />
τ1<br />
τ2<br />
Rise time constant in seconds. Default is 0.0.<br />
Fall time constant in seconds. Default is 0.0.<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
354 SPICE-independent Voltage Source Syntax<br />
PULSE<br />
PU<br />
SYNTAX:<br />
PULSE [([v1 v2 [td [tr [tf [pw [per]]]]] [)]<br />
PU [([v1 v2 [td [tr [tf [pw [per]]]]] [)]<br />
EXAMPLE:<br />
VIN 3 0 PULSE (-1 1 1NS 2NS 3NS 50NS 100NS)<br />
This example specifies a pulse source connected between node 3<br />
and node 0. The pulse has an output high voltage of 1 V, an<br />
output low voltage of -1 V, a delay of 1ns, a rise time of 2 and a<br />
fall of 3ns, a high pulse width of 50 ns, and a period of 100 ns.<br />
DESCRIPTION:<br />
This function is a trapezoidal pulse source function that starts<br />
with an initial delay from the beginning of the transient<br />
simulation interval to an onset ramp. During the onset ramp, the<br />
voltage or current changes linearly from its initial value to the<br />
pulse plateau value. After the pulse plateau, the voltage moves<br />
linearly along a recovery ramp, back to its initial value. The<br />
entire pulse repeats with a period per from onset to onset.<br />
Argument Definition<br />
v1 Initial value of the voltage before the pulse<br />
onset.<br />
v2 Pulse plateau value.<br />
td Delay time in seconds from the beginning of<br />
transient interval to the first onset ramp.<br />
Default is 0.0.<br />
tr Duration of the onset ramp, from the initial<br />
value to the pulse plateau value (reverse<br />
transit time). Default is 0.0.<br />
tf Duration of the recovery ramp, from the pulse<br />
plateau back to the initial value (forward<br />
transit time). Default is 0.0.
Argument Definition<br />
pw Pulse width (the width of the pulse plateau<br />
portion of the pulse). Default is 0.0.<br />
per Pulse repetition period in seconds. Default is<br />
0.0.<br />
V 2<br />
V 1<br />
0 ns<br />
t d<br />
pw<br />
t r tf<br />
Period<br />
Figure 3 Sample pulse waveform<br />
time<br />
355<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
356 SPICE-independent Voltage Source Syntax<br />
PWL<br />
PL<br />
SYNTAX:<br />
PWL [(] t1 v1 [t2 v2 t3 v3...] [r [=repeat]] [TD=delay] [)]<br />
PL [(] v1 t1 [v2 t2 v3 t3...] [r [=repeat]] [TD=delay] [)]<br />
EXAMPLE:<br />
V1 1 0 PWL 60N 0V, 120N, 130N 5V, 170N 5V, 180N 0V,<br />
R0N R1 1 0 1<br />
DESCRIPTION:<br />
Argument Definition<br />
v1 . . . Voltage values.<br />
t1 . . . Segment time values.<br />
r Causes the function to repeat.<br />
repeat Specifies the start point of the waveform which<br />
is to be repeated.<br />
delay Specifies the length of time to delay the<br />
piecewise linear function.
SFFM<br />
SYNTAX:<br />
SFFM [(] vo va [fc [mdi [fs]]] [)]<br />
EXAMPLE:<br />
V 1 0 SFFM (0, 1M, 20K. 10, 5K)<br />
DESCRIPTION:<br />
Argument Definition<br />
vo Output voltage in volts.<br />
va Output voltage in volts.<br />
fc Carrier frequency in Hz. Default is 0.0.<br />
mdi Modulation index. Default is 0.0.<br />
fs Signal frequency in Hz. Default is 0.0.<br />
357<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
358 SPICE-independent Voltage Source Syntax<br />
SIN<br />
SYNTAX:<br />
SIN [(] vo va [freq [td [θ[ϕ]]]] [)]<br />
EXAMPLE:<br />
VIN 3 0 SIN (0 1 100MEG 1NS 1e10)<br />
This example specifies a damped sinusoidal source connected<br />
between nodes 3 and 0. The waveform has a peak value of 1V, an<br />
offset of 0V, a 100 MHz frequency, a time delay of 1 ns, a<br />
damping factor of 1e10, and a phase delay of zero degrees.<br />
DESCRIPTION:<br />
This HSPICE function is a damped sinusoidal source that is the<br />
product of a dying exponential with a sine wave. Application of<br />
this waveform requires the specification of the sine wave<br />
frequency, the exponential decay constant, the beginning phase,<br />
and the beginning time of the waveform.<br />
Argument Definition<br />
vo Voltage in volts.<br />
va Voltage amplitude in volts.<br />
freq Frequency in Hz. Default is 0.0.<br />
td Delay in seconds. Default is 0.0.<br />
θ Damping factor in 1/seconds. Default is 0.0.<br />
ϕ Phase delay in degrees. Default is 0.0.
Symbols<br />
!append 275, 276<br />
%corner 195<br />
%diode 198<br />
%invoke 195<br />
%lib 158, 212<br />
%model 159<br />
%options 197<br />
%parameters 160<br />
*.err file 331<br />
*epic_tech command 141<br />
.act file 324<br />
.log file 330<br />
.measure statements 55<br />
.nact file 326<br />
.nodealias file 328<br />
.OPTIONS 197<br />
.out file 311<br />
Numerics<br />
3dtable command 149<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong><br />
Index<br />
A<br />
acm parameter command 168<br />
alias command 102<br />
alias file 99, 101<br />
attribute identifiers 10<br />
B<br />
batchfile<br />
batchrun command 259<br />
DATA command 262<br />
FILE command 261<br />
format 261<br />
RUN command 262<br />
binary command 142<br />
binary parameter command 162, 194<br />
body_bias command 143<br />
body_bias parameter command 160, 174<br />
BSIM1 139<br />
BSIM3 139<br />
bus_notation 46
360 Index<br />
C<br />
capacitance, minimum 110<br />
capacitor 55<br />
floating 111<br />
minimum value 56<br />
value, scaling 65<br />
case 47<br />
case parameter command 162, 191<br />
cell library path 52<br />
cg parameter command 161, 183<br />
cgbo parameter command 162, 188<br />
cgdo parameter command 162, 188<br />
cgso parameter command 162, 188<br />
circuit elements<br />
BJT 17<br />
capacitor 14<br />
CMOS transistor 21<br />
diode 18<br />
floating capacitor 15<br />
gate-level 37<br />
inductor 16<br />
net 35<br />
resistor 27<br />
subciruit 33<br />
voltage controlled voltage sources 32<br />
voltage source 27<br />
cja parameter command 161, 183<br />
cjgate parameter command 161, 182<br />
cjsw parameter command 161, 183<br />
clk 221<br />
clock stimulus 220, 221<br />
cnt 223<br />
counter stimulus 220, 223<br />
cov parameter command 161, 183<br />
cox parameter command 162, 188<br />
cspf_cap_select 47, 88<br />
cspf_disable_net 48<br />
cspf_name_map_proc 48<br />
cspf_net 49<br />
cspf_process_ccap 49<br />
customize.c file 300<br />
D<br />
D_codes description codes 333<br />
dangling node 330<br />
db_file 50, 99<br />
default file 99, 103<br />
delta_vt parameter command 162, 189<br />
device models<br />
BSIM1 139<br />
BSIM3 139<br />
MOS9 139<br />
device parameter file<br />
control option 97<br />
device parameter format file 96<br />
converting element names 51<br />
converting node names 51<br />
naming conventions 96<br />
diodes 103<br />
direct command 144<br />
dont_compress_db 50, 99<br />
dpf_name_map_proc 51, 97<br />
drain-to-source voltage 173<br />
ds_length parameter command 161, 176<br />
dynamic linked libraries, specifying 68<br />
E<br />
ecrypt utility 131<br />
edge-to-edge timing check 40<br />
EDIF netlist translator (edif2e) 118<br />
command syntax 120<br />
command-line options 120<br />
constructs<br />
supported 118<br />
unsupported 119<br />
design structure 121<br />
output, specifying from command line 52<br />
specifying from command line 51<br />
edif_out variable 123<br />
edif2e. See EDIF netlist translator<br />
edif2e_args 51<br />
edif2e_output_file 52
Edisplay utility 269<br />
command-line options 270<br />
control file 275<br />
syntax 269<br />
element identifiers 10<br />
encryption. See ecrypt utility<br />
<strong>EPIC</strong> binary file 50, 98<br />
control options 99<br />
file compression 50<br />
generation 50<br />
<strong>EPIC</strong> netlist 7<br />
attribute identifiers 10<br />
biput terminal (bt) 10<br />
biput value (bv) 11<br />
element name (en) 10<br />
input terminal (it) 10<br />
multiplier (m) 11<br />
node name (nn) 11<br />
number of states (st) 11<br />
optional (attr) 11<br />
output terminal (ot) 10<br />
output value (ov) 11<br />
state value (sv) 11<br />
buses 8<br />
circuit elements 14, 37<br />
element identifiers 10<br />
BJT (b) 10<br />
input signal (is) 10<br />
library function (ef) 10<br />
output signal (c) 10<br />
output signal (os) 10<br />
output signal (t) 10<br />
transistor-level subcircuit (ef) 10<br />
expressions 73<br />
functions 73<br />
global commands 42<br />
parameter passing 69<br />
syntax 7<br />
<strong>EPIC</strong>_CELL_LIB_PATH 81<br />
epic_cell_lib_path 52<br />
error limit, setting 60<br />
error messages 331<br />
error output file 331<br />
error_undefined_param 52<br />
Eview utility 276<br />
command syntax 277<br />
command-line options 277<br />
control file 284<br />
Edit menu 280<br />
File menu 279<br />
Options menu 283<br />
Search menu 281<br />
window layout 278<br />
F<br />
fall 244<br />
find_top_mod 53<br />
floating capacitor 111<br />
minimum value 57<br />
splitting 67<br />
floating nodes 53, 330<br />
floating_nodes_ok 53<br />
force_global_model 53<br />
G<br />
gate-to-source voltage 173<br />
Gentech utility 139, 153<br />
command syntax 198<br />
command-line options 199<br />
control file 154<br />
corner section<br />
temperature command 195<br />
voltage command 195<br />
diode models 198<br />
example 153<br />
invoke section 195<br />
lib section 158<br />
model section 159<br />
MOS models 159<br />
multiple-step mode 202<br />
parameter section command<br />
361<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
362 Index<br />
acm 168<br />
binary 162, 194<br />
body_bias 160, 174<br />
case 162, 191<br />
cg 161, 183<br />
cgbo 162, 188<br />
cgdo 162, 188<br />
cgso 162, 188<br />
cja 161, 183<br />
cjgate 161, 182<br />
cjsw 161, 183<br />
cov 161, 183<br />
cox 162, 188<br />
delta_vt 162, 189<br />
ds_length 161, 176<br />
l_scale 160, 171<br />
ldiff 160, 169<br />
lmlt 160, 171<br />
mlt 160, 171<br />
model_alias 161, 175<br />
n_length 160, 164<br />
n_width 160, 164<br />
new_format 161, 181<br />
nl 160, 164<br />
no_nrd_nrs 161, 179<br />
nrd_nrs_caps 161, 180<br />
nw 160, 164<br />
p_length 160, 164<br />
p_width 160, 164<br />
pl 160, 164<br />
pn_ratio 160, 167<br />
pw 160, 164<br />
rsh 161, 178<br />
speed 162, 193<br />
tox 162, 188<br />
unit_adas 192<br />
unit_pdps 162, 192<br />
unit_wl 162, 192<br />
vds 160, 173<br />
vgs 160, 173<br />
vto 162, 190<br />
w_scale 160, 171<br />
wd 162<br />
wdiff 160, 169<br />
wl_scale 160, 171<br />
wmlt 160, 171<br />
single-step mode 201<br />
SPICE model files 158<br />
SPICE options 197<br />
starting SPICE 195<br />
gentech_parameter command 145<br />
global commands<br />
global nodes 42<br />
ground 44<br />
param 43<br />
parameters 43<br />
pgalias 44<br />
power 44<br />
global nodes 42, 53<br />
global_override_port 53<br />
H<br />
hier_separator 54<br />
hierarchical information, printing 62<br />
hierarchical separators 54<br />
high 240<br />
HOLD timing check 39<br />
HSPICE netlist syntax 83<br />
I<br />
ignore_excess_pin 54<br />
ignore_meas 54<br />
include statement 76<br />
inductors, minimum value 57<br />
initial condition, specifying 74<br />
internal calculations, customizing 302<br />
invoke command 146<br />
io 241
J<br />
junction diodes 56<br />
K<br />
keep_0v_dcvs 55<br />
keep_distinct_cap 55<br />
keep_junc_diode 20, 55<br />
keep_unc_node 56<br />
L<br />
l_scale parameter command 160, 171<br />
lateral diffusion 200<br />
ldiff parameter command 160, 169<br />
lmlt parameter command 160, 171<br />
logic constants 220, 228, 233, 238<br />
low 240<br />
lratio command 147<br />
LSIM netlist 82<br />
M<br />
max_res_value 56<br />
maximum resistance, specifying 56<br />
Meas utility 267<br />
message limit, setting 66<br />
min_cap_value 56<br />
min_fcap_value 57<br />
min_ind_value 57<br />
min_res_value 57<br />
mlt parameter command 160, 171<br />
model file 99<br />
model_alias parameter command 161, 175<br />
MOS devices 103<br />
SPICE 103<br />
MOS9 139<br />
multiple VDD and GND nodes 102<br />
N<br />
n_length parameter command 160, 164<br />
n_width parameter command 160, 164<br />
net flattening hierarchy 59<br />
netlist control options 45<br />
bus_notation 46<br />
case 47<br />
case specification 47<br />
cspf_cap_select 47, 88<br />
cspf_disable_net 48<br />
cspf_name_map_proc 48<br />
cspf_net 49<br />
cspf_process_ccap 49<br />
db_file 50<br />
dont_compress_db 50<br />
dpf_name_map_proc 51<br />
edif2e_args 51<br />
edif2e_output_file 52<br />
epic_cell_lib_path 52<br />
error_undefined_param 52<br />
find_top_mod 53<br />
floating_nodes_ok 53<br />
force_global_model 53<br />
global_override_port 53<br />
hier_separator 54<br />
ignore_excess_pin 54<br />
ignore_meas 54<br />
keep_0v_dcvs 55<br />
keep_distinct_cap 55<br />
keep_junc_diode 20, 55<br />
keep_unc_node 56<br />
max_res_value 56<br />
min_cap_value 56<br />
min_fcap_value 57<br />
min_ind_value 57<br />
min_res_value 57<br />
netlist_suffix 58<br />
nf_expand_inst 58<br />
nf_flatten_ins 59<br />
param_passing_rule 59<br />
parse_error_limit 60<br />
363<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
364 Index<br />
prefer_model 60<br />
prefer_model_inst 61<br />
prefer_model_port_map 60<br />
prefer_model_port_map_inst 61<br />
rcr 62<br />
rcr_preserve_name 63<br />
report_missing_subckt 64<br />
report_unused_port 64<br />
scale_cap 64<br />
scale_cmos_length 65<br />
scale_cmos_width 65<br />
scale_res 65<br />
set_message_limit 66<br />
split_floating_cap 66<br />
syntax 46<br />
top_module 67<br />
user_lib 67<br />
vlog2e_args 68<br />
vlog2e_output_file 69<br />
netlist formats, supported 79<br />
netlist library 81<br />
netlist suffix 58<br />
netlist_suffix 58<br />
netlists<br />
filename extensions 80<br />
formats 80<br />
new_format parameter command 161, 181<br />
nf_expand_inst 58<br />
nf_flatten_inst 59<br />
nl parameter command 160, 164<br />
no_nrd_nrs parameter command 161, 179<br />
nodes<br />
dangling 330<br />
floating 330<br />
unconnected 56<br />
nrd_nrs_caps parameter command 161, 180<br />
nsvt 226<br />
nw parameter command 160, 164<br />
O<br />
one 228<br />
out 242<br />
output file<br />
active nodes 324<br />
current 311<br />
errors 331<br />
inactive nodes 326<br />
logic states 311<br />
node alias names 328<br />
voltage 311<br />
warning messages 330<br />
output file (.act) 324<br />
format 324<br />
sample file 325<br />
output file (.err) 331<br />
block delay characterization errors 338<br />
bus contention errrors 336<br />
comparison errors 333<br />
high impedance condition 337<br />
multiple-pulse errors 344<br />
multiple-toggle errors 343<br />
power diagnosis 339<br />
sample file 348<br />
unknown state 337<br />
output file (.log) 330<br />
output file (.nact) 326<br />
format 326<br />
sample file 327<br />
output file (.nodealias) 328<br />
format 328<br />
sample file 328<br />
output file (.out)<br />
format 311<br />
keywords 313<br />
line format 312<br />
logic state numbers 317<br />
period lines 312, 313<br />
PowerMill sample file 320<br />
signal attributes 316<br />
TimeMill sample file 318<br />
output_resistance 242
P<br />
p_length parameter command 160, 164<br />
p_width parameter command 160, 164<br />
param_passing_rule 59<br />
parameter passing 43, 60, 69<br />
HSPICE 71<br />
HSPICE convention 69<br />
parameters<br />
defining 70<br />
undefined 52<br />
parse_error_limit 60<br />
pattern stimulus 220, 229<br />
period 243<br />
pins, excess 54<br />
pl parameter command 160, 164<br />
PMOS channel widths 167<br />
pn_ratio parameter command 160, 167<br />
port mapping<br />
name-based 12–13<br />
position-based 12–13<br />
ports, reporting 64<br />
power nodes 111<br />
prefer_model 60<br />
prefer_model_inst 61<br />
prefer_model_port_map 60<br />
prefer_model_port_map_inst 61<br />
ptn 229<br />
pulse width timing check 41<br />
pw parameter command 160, 164<br />
PWL mode 75<br />
R<br />
radix 243<br />
RC reduction 62<br />
preserving nodes 63<br />
rcr 62<br />
rcr_preserve_name 63<br />
report_missing_subckt 64<br />
report_unused_port 64<br />
resistance value, minimum 112<br />
resistance, scale factor 65<br />
resistor, minimum resistance 57<br />
rise 244<br />
rsh parameter command 161, 178<br />
runscript<br />
simulation<br />
runscript 152<br />
S<br />
scale factors, MOS devices<br />
length 65<br />
width 65<br />
scale_cap 64<br />
scale_cmos_length 65<br />
scale_cmos_width 65<br />
scale_res 65<br />
sense pair, specifying 76<br />
separate power reporting 102<br />
set_message_limit 66<br />
signal 244<br />
simulation<br />
running 152<br />
SimWave 286<br />
slope 244<br />
source-to-drain checking 92<br />
speed command 148<br />
speed parameter command 162, 193<br />
SPF file<br />
back-annotation 47, 48<br />
correcting mismatches 49<br />
coupling capacitors 49<br />
parasitic information 49<br />
SPF netlist<br />
control options<br />
name mapping 89<br />
net specification 90<br />
process coupling capacitors 91<br />
discard net 87<br />
limitations 92<br />
SPICE models 53<br />
SPICE netlist 82<br />
365<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
366 Index<br />
.options statements 46<br />
characteristics 82<br />
syntax 46<br />
SPICE netlist translator (spice2e)<br />
alias file 99<br />
configuration file, generated by 102<br />
default file 99, 103<br />
ignored syntax 115<br />
model file 99<br />
spice2e.log file 115<br />
supported syntax 114<br />
syntax 109<br />
syntax to avoid 116<br />
spice2e. See SPICE netlist translator<br />
split_floating_cap 66<br />
stimulus functions 219<br />
clk 221<br />
cnt 223<br />
one 228<br />
ptn 229<br />
tgl 231<br />
udf 233<br />
vec 234, 236<br />
vec_chk 236<br />
zero 238<br />
subcircuit definition 53<br />
locating 64<br />
names 60<br />
substrate<br />
terminal 112<br />
terminal bias 117<br />
subthreshold currents 189<br />
T<br />
T_Code description codes 332<br />
technology files 140<br />
*epic_tech command 141<br />
automatic generation 140<br />
3dtable command 149<br />
binary command 142<br />
body_bias command 143<br />
direct command 144<br />
gentech_parameter command 145<br />
invoke command 146<br />
lratio command 147<br />
modifying netlists 141<br />
running a simulation 152<br />
speed command 148<br />
vds command 150<br />
vgs command 150<br />
voltage command 151<br />
wratio command 147<br />
command-line options 140<br />
runscript 152<br />
TechViewer utility 139, 209<br />
tgl 231<br />
time_scale 245<br />
timing checks<br />
edge-to-edge 40<br />
HOLD 38<br />
pulse width 41<br />
SETUP 37<br />
toggle stimulus 220, 231<br />
top module, specifying 67<br />
top_module 67<br />
tox parameter command 162, 188<br />
turboWave 286<br />
tutorials<br />
basic PowerMill simulation 133<br />
type 245<br />
U<br />
udf 233<br />
unit_adas parameter command 192<br />
unit_pdps parameter command 162, 192<br />
unit_wl parameter command 162, 192<br />
unused ports, reporting 64<br />
user_lib 67
V<br />
Vcd2e utility<br />
batch mode 298<br />
command-line options 288<br />
File menu 291<br />
signal file 294<br />
strobes 298<br />
syntax 288<br />
vds command 150<br />
vds parameter command 160, 173<br />
vec 234<br />
vec_chk 236<br />
vector file commands<br />
fall 244<br />
high 240<br />
io 241<br />
low 240<br />
out 242<br />
output_resistance 242<br />
period 243<br />
radix 243<br />
rise 244<br />
signal 244<br />
slope 244<br />
time_scale 245<br />
type 245<br />
vector stimulus 220, 234, 236<br />
vector translation utility. See Vcd2e utility<br />
Verilog netlist translator (vlog2e)<br />
command-line options 129<br />
specifying from command line 68<br />
syntax 129<br />
Veritech utility<br />
conventions 214<br />
vgs command 150<br />
vgs parameter command 160, 173<br />
Viewerror utility 349<br />
command-line options 349<br />
syntax 349<br />
vlog2e. See Verilog netlist translator<br />
vlog2e_args 68<br />
vlog2e_output_file 69<br />
voltage command 151<br />
vto parameter command 162, 190<br />
W<br />
w_scale parameter command 160, 171<br />
warning messages 330<br />
waveform display utilities 285<br />
wd parameter command 162<br />
wdiff parameter command 160, 169<br />
wire capacitance estimate 302<br />
wl_scale parameter command 160, 171<br />
wmlt parameter command 160, 171<br />
wratio command 147<br />
Z<br />
zero 238<br />
zero volt voltage source 55<br />
367<br />
<strong>EPIC</strong> <strong>Tools</strong> <strong>Reference</strong> <strong>Guide</strong>
368 Index