10.06.2016 Views

eldo_user

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Eldo® User's Manual<br />

Release 15.3<br />

© 1988-2015 Mentor Graphics Corporation<br />

All rights reserved.<br />

This document contains information that is proprietary to Mentor Graphics Corporation. The original recipient of this<br />

document may duplicate this document in whole or in part for internal business purposes only, provided that this entire<br />

notice appears in all copies. In duplicating any part of this document, the recipient agrees to make every reasonable<br />

effort to prevent the unauthorized use and distribution of the proprietary information.


This document is for information and instruction purposes. Mentor Graphics reserves the right to make<br />

changes in specifications and other information contained in this publication without prior notice, and the<br />

reader should, in all cases, consult Mentor Graphics to determine whether any changes have been<br />

made.<br />

The terms and conditions governing the sale and licensing of Mentor Graphics products are set forth in<br />

written agreements between Mentor Graphics and its customers. No representation or other affirmation<br />

of fact contained in this publication shall be deemed to be a warranty or give rise to any liability of Mentor<br />

Graphics whatsoever.<br />

MENTOR GRAPHICS MAKES NO WARRANTY OF ANY KIND WITH REGARD TO THIS MATERIAL<br />

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND<br />

FITNESS FOR A PARTICULAR PURPOSE.<br />

MENTOR GRAPHICS SHALL NOT BE LIABLE FOR ANY INCIDENTAL, INDIRECT, SPECIAL, OR<br />

CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING BUT NOT LIMITED TO LOST PROFITS)<br />

ARISING OUT OF OR RELATED TO THIS PUBLICATION OR THE INFORMATION CONTAINED IN IT,<br />

EVEN IF MENTOR GRAPHICS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.<br />

U.S. GOVERNMENT LICENSE RIGHTS: The software and documentation were developed entirely at<br />

private expense and are commercial computer software and commercial computer software<br />

documentation within the meaning of the applicable acquisition regulations. Accordingly, pursuant to<br />

FAR 48 CFR 12.212 and DFARS 48 CFR 227.7202, use, duplication and disclosure by or for the U.S.<br />

Government or a U.S. Government subcontractor is subject solely to the terms and conditions set forth in<br />

the license agreement provided with the software, except for provisions which are contrary to applicable<br />

mandatory federal laws.<br />

TRADEMARKS: The trademarks, logos and service marks ("Marks") used herein are the property of<br />

Mentor Graphics Corporation or other parties. No one is permitted to use these Marks without the prior<br />

written consent of Mentor Graphics or the owner of the Mark, as applicable. The use herein of a thirdparty<br />

Mark is not an attempt to indicate Mentor Graphics as a source of a product, but is intended to<br />

indicate a product from, or associated with, a particular third party. A current list of Mentor Graphics’<br />

trademarks may be viewed at: www.mentor.com/trademarks.<br />

The registered trademark Linux ® is used pursuant to a sublicense from LMI, the exclusive licensee of<br />

Linus Torvalds, owner of the mark on a world-wide basis.<br />

Mentor Graphics Corporation<br />

8005 S.W. Boeckman Road, Wilsonville, Oregon 97070-7777<br />

Telephone: 503.685.7000<br />

Toll-Free Telephone: 800.592.2210<br />

Website: www.mentor.com<br />

SupportNet: supportnet.mentor.com/<br />

Send Feedback on Documentation: supportnet.mentor.com/doc_feedback_form


Table of Contents<br />

Chapter 1<br />

Introduction to Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

Overview of Eldo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

Getting Started With the Eldo Simulation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

Eldo Input and Output Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

Eldo Documentation Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

Command Line Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

Related Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

Documentation Syntax Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

Chapter 2<br />

Running Eldo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

Invoking Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

Running Eldo in 32-bit and 64-bit Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Multi-Threading Eldo Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Fast Launch Script for Small Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

Simulation Connection Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

Eldo Initialization File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

Location Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

Location Map Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

Performance Bottleneck Diagnostics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

Statistics File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

Statistics File Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

Running Eldo Interactive Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

Additional Tools and Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

Chapter 3<br />

Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

Overview of Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

Enabling Eldo Premier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

Automatic Activation of Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

Using Eldo Classic DC Solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

Handling Matrix-Like Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

Solver Generation Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

Eldo Premier Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

Temporary Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

Generic Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

Forcing Elaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

Eldo Premier Selectable Accuracy Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

Netlist Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

Supported Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

Supported Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

Eldo® User's Manual, 15.3 3


Table of Contents<br />

Supported Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

Other Supported Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

Miscellaneous Limitations of Devices and Features in Eldo Premier . . . . . . . . . . . . . . . . 93<br />

Chapter 4<br />

Eldo Netlist Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95<br />

Netlist Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

Circuit Title. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

Model Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

Subcircuit Definitions and Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

Element and Source Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

Simulator Commands and Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br />

End Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

General Aspects of the Language Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

Continuation Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

Comment Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

Parameter Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

Case-Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105<br />

Numerical Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108<br />

Functions, Operators and Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

Arithmetic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Operator Precedence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

Bitwise Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

Specifying the Simulation Time in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

Conditional Evaluation of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

IF, ELSE, ELSEIF, ENDIF Conditional Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

String Operator on If Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

Directives Interpreted by the Eldo Parser (Default) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

Directives to Postpone Block of Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

Directives Interpreted using the C Pre-Processor (-E/-EE Arguments) . . . . . . . . . . . . . . . 126<br />

Working With Subcircuits and Device Libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Subcircuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Device Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />

Search Path Priorities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

Library Variant Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134<br />

Library Nesting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135<br />

Deleting a Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br />

Search Rules and Naming Conventions for Adding Libraries . . . . . . . . . . . . . . . . . . . . . 136<br />

Using Libraries in Eldo Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137<br />

Encrypting Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />

encrypt_<strong>eldo</strong> Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

Protection of Encrypted Libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144<br />

4 Eldo® User's Manual, 15.3


Table of Contents<br />

Preparing and Installing a Protected Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144<br />

Coding and Encrypting a Protected Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br />

Semi-Transparent Encryption. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147<br />

Description of the Loading and Control Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150<br />

Creating the IP Access Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

Installing a Protected Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

List of Encryption Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

Automatic Recognition of MOS Instantiations in TSMC Libraries . . . . . . . . . . . . . . . . . . . 156<br />

Running Multiple Runs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

Merging Instances in Parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br />

Chapter 5<br />

Simulator Compatibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

HSPICE Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

Hybrid Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

Compat Mode Flexibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164<br />

Devices in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

Sources in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

Commands in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

Options in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

Netlist in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

Arithmetic Functions and Operators in Compat Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

Output Format in Compat Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

Spectre Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

Spectre Compatibility Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180<br />

Spectre Compatibility Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

Working with Multiple Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185<br />

Troubleshooting the Spectre to Eldo Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186<br />

Spectre to Eldo Converter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

Installing a Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

Supported Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191<br />

Netlist Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

spect2el Command Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197<br />

Chapter 6<br />

Setting Up An Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

DC and Operating Point Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />

DC Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />

Performing a DC Analysis During Transient Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 207<br />

Operating Point Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208<br />

Differences Between DC and OP Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210<br />

DC Convergence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211<br />

Improving DC Convergence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211<br />

DC Convergence Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213<br />

Saving and Restarting DC Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215<br />

Transient Analyses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217<br />

Transient Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217<br />

Eldo® User's Manual, 15.3 5


Table of Contents<br />

Saving and Restarting Transient Simulations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219<br />

AC Related Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224<br />

AC Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224<br />

Adaptive AC Analysis Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226<br />

Performing an AC Analysis During Transient Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . 226<br />

Saving and Restarting AC Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227<br />

Loop Stability Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229<br />

Pole Zero Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230<br />

Pole-Zero Analysis Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230<br />

Running Pole-Zero Analysis in Batch Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231<br />

Running Pole-Zero Analysis in Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232<br />

Pole-Zero Analysis Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233<br />

FNS Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235<br />

Pole-Zero Numerical Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

Transfer Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

Noise Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

Noise Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

Transient Noise Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241<br />

Transient Noise Analysis Principles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243<br />

Specifying .NOISETRAN Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

Transient Noise Analysis Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

Generation of Time Domain Noise Sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246<br />

Noise Sources Generated From Random Pulses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247<br />

Noise Sources Generated From a Sum of Sinusoids . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253<br />

Speeding Up Transient Noise Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

Transient Noise Analysis Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259<br />

Example: Extraction of the Phase Noise Spectrum at the Output of a PLL Circuit. . . . . 260<br />

Statistical and Sensitivity Related Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

Worst Case Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

DC Mismatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269<br />

DC Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270<br />

Transient Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

AC Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

Sensitivity Analysis of Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

Design of Experiments Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

Other Miscellaneous Analyses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />

Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />

Aging and Reliability Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277<br />

Check Safe Operating Area Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278<br />

High Impedance Node Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279<br />

Power Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279<br />

Viewing Power Analysis Results Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280<br />

Electrothermal Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282<br />

RF Analyses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283<br />

6 Eldo® User's Manual, 15.3


Table of Contents<br />

Chapter 7<br />

Running Parametric Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287<br />

Temperature Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287<br />

Assigning Parameter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291<br />

Sweeping Parameters Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

.STEP Sweeping Parameters Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

Nested Sweeps Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295<br />

.DATA Parameter Sweeps Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296<br />

Altering Netlist Data For Simulation Reruns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298<br />

Removing .EXTRACT Statements from a Simulation Rerun . . . . . . . . . . . . . . . . . . . . . . 299<br />

Controlling Alter Blocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299<br />

.ALTER Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300<br />

Using Output Results From a Previous Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302<br />

Chapter 8<br />

Specifying Simulation Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305<br />

Output Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306<br />

Output Commands Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306<br />

Plotting, Printing and Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

Files Created . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

Types of Waveforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309<br />

Monitoring of Hierarchical Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309<br />

Using Wildcards for Plotting and Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310<br />

Plotting, Printing and Probing States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

Plotting Internal Pin Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314<br />

Complex Modifiers and Initial Formatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314<br />

Compound Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

Plotting an Analog Signal as a Digital Bus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

X-Axis of Waveforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316<br />

Tabular Listing Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317<br />

Plotting Transmission Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317<br />

Dynamically Adding Voltage/Current Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318<br />

Output Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320<br />

Extracting Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321<br />

.EXTRACT Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322<br />

Plot and Print Quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323<br />

Extract Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />

Extract Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />

Extraction Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327<br />

Extract Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329<br />

Example Extracting OPMODE, POW, and POWER Values. . . . . . . . . . . . . . . . . . . . . . 329<br />

Example Extracting Parameter Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330<br />

Example Extracting Model Parameter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />

Example Extracting Element Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />

Example Extracting Transient Analysis Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332<br />

Example of Condition Function Reusing Extraction Results. . . . . . . . . . . . . . . . . . . . . . 332<br />

Example Combining Sweep Extract and .ALTER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333<br />

Extracting Compression Point Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334<br />

Eldo® User's Manual, 15.3 7


Table of Contents<br />

Defining Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336<br />

Examples of Defining Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337<br />

Safe Operating Area (SOA) Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341<br />

Plotting Safe Operating Area Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341<br />

Safe Operating Area Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345<br />

High Impedance Node Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />

How to Enable High Impedance Node Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />

High Impedance Node Check Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350<br />

Limiting Output Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352<br />

Limiting the Size of Transient Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353<br />

Incremental Saving of the JWDB Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354<br />

Chapter 9<br />

Analyzing Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357<br />

Output Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357<br />

Output Files Generated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358<br />

Interpreting the Output Log (.chi) File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363<br />

Output Log (.chi) File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363<br />

Simulation Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365<br />

Locating Eldo Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368<br />

Error and Warning Message Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369<br />

EZwave Joint Waveform Database (JWDB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370<br />

EZwave Graph Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371<br />

Displaying Eldo Simulation Data in EZwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372<br />

Run Eldo With EZwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372<br />

Complete Eldo Simulation and View Simulation Data Later. . . . . . . . . . . . . . . . . . . . . . . 373<br />

EZwave Reload Option. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374<br />

Manual Status Update. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374<br />

Marching Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375<br />

Diagnosing Convergence and Performance Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377<br />

Non-Convergence Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377<br />

Time Step Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

Performance Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

Using the Statistics File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385<br />

Statistics File Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386<br />

Chapter 10<br />

Post-Layout Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389<br />

Post-Layout Simulation Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389<br />

DSPF Backannotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392<br />

DSPF File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393<br />

Parasitic Network Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394<br />

Eldo Post-Layout Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394<br />

Eldo Post-Layout Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395<br />

DSPF Backannotation Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396<br />

SPEF Backannotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398<br />

SPEF File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399<br />

SPEF File Example for Corners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401<br />

8 Eldo® User's Manual, 15.3


Table of Contents<br />

Eldo Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403<br />

Basic Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403<br />

Parameters Controlling the Reduction Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404<br />

Reduction Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405<br />

Reduction Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406<br />

Reduction Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406<br />

Reduction Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407<br />

References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407<br />

Chapter 11<br />

Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409<br />

Introduction to Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411<br />

Introduction to Uncertainty Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411<br />

The Monte Carlo Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415<br />

Basic Statistical Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415<br />

Monte Carlo Basic Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417<br />

Monte Carlo as an Integration Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417<br />

Monte Carlo Incremental Approach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419<br />

Monte Carlo Analysis With a Varying Circuit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419<br />

Specifying a Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421<br />

Statistical Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423<br />

Specifying Statistical Variations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423<br />

Specifying Statistical Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427<br />

Sharing Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429<br />

How to Specify a Distribution Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

Uniform Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

Gaussian or Normal Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433<br />

User-defined Distribution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435<br />

Other Common Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436<br />

Correlation Between Gaussian Input Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437<br />

Basic Concepts on Multivariate Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437<br />

Specifying Linear Correlation with .CORREL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440<br />

Local and Global Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442<br />

Specifying Statistical Variations for Individual Model Parameters . . . . . . . . . . . . . . . . . . 445<br />

Statistical Variations on Binning Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446<br />

Assigning Statistical Variations using the .MCMOD Command . . . . . . . . . . . . . . . . . . . . 446<br />

Tolerance Setting Using DEV, DEVX or LOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447<br />

Sampling Plan Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451<br />

Standard Monte Carlo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451<br />

Importance Sampling Monte Carlo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452<br />

Quasi-Monte Carlo Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456<br />

Latin Hypercube Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457<br />

Model-Based Monte Carlo Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

Post-Analysis of Monte Carlo Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463<br />

Output of Uncertainty Analysis (the .chi File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465<br />

Extract Functions Specific to Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465<br />

Extracting the Index and Total Number of Runs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468<br />

Basic Statistics and Histograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469<br />

Eldo® User's Manual, 15.3 9


Table of Contents<br />

Bootstrap Estimates for Mean and Standard Deviation . . . . . . . . . . . . . . . . . . . . . . . . . . 470<br />

Global Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471<br />

Summary of Extracted Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471<br />

Primary Statistics of Uncertainty Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473<br />

Control of the Monte Carlo Post-Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473<br />

General Information and Status of Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474<br />

Model Adequacy Checking for Model-Based MC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476<br />

Mean and Standard Deviation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478<br />

Confidence Intervals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479<br />

Probability and Quantile Estimators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480<br />

Approximations of the CDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485<br />

Coverage Intervals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487<br />

Approximation of the Density Function (Histogram File .mch) . . . . . . . . . . . . . . . . . . . 489<br />

Additional Uncertainty Analyses (the .mcm File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491<br />

Basic Concepts on Quantitative Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491<br />

Robust Measures of Location. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492<br />

Alternative Measures of Dispersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494<br />

Min/Max Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495<br />

Parametric Fit and Normality Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495<br />

Capability Indices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499<br />

Coorelation of Test Concordance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500<br />

Monte Carlo Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501<br />

Input/Output Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504<br />

File Organization (the .mci and .mco Files). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504<br />

Input Sample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504<br />

Output Sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507<br />

Graphical Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509<br />

Histogram Annotations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510<br />

Cumulative Distribution Function (CDF) Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . 511<br />

Run-Length Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514<br />

CONFIDENCE Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514<br />

SETTLING Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517<br />

MCCONV Extract Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518<br />

Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520<br />

Global Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520<br />

Large Scale Variable Screening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523<br />

Monte Carlo Analysis Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526<br />

A Simple Passive Low-Pass Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526<br />

Importance Sampling Monte Carlo Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528<br />

SRAM Bit Cell Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528<br />

VCO Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531<br />

Model-Based Approximations Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532<br />

Further Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534<br />

Parameter Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536<br />

Problems in Statistical Modeling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544<br />

Obsolete Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548<br />

10 Eldo® User's Manual, 15.3


Table of Contents<br />

Chapter 12<br />

Statistical Experimental Design and Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555<br />

Introduction to Statistical Experimental Design and Analysis . . . . . . . . . . . . . . . . . . . . . . . 555<br />

Factor Screening Experiments in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557<br />

DEX Example Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558<br />

Factorial Design Comparison with Worse Case Analysis . . . . . . . . . . . . . . . . . . . . . . . . . 559<br />

Statistical Modeling for Discrete Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560<br />

Designing a Screening Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562<br />

Reference Factors for the DEX Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562<br />

Defining the Levels of Factors for the DEX Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565<br />

Defining Levels for Noise Factors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565<br />

Defining Levels With Respect to the Nominal Value . . . . . . . . . . . . . . . . . . . . . . . . . . . 570<br />

Determining the List of Noise Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570<br />

Conducting a Screening Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573<br />

Choosing the Type of Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573<br />

Selecting the Number of Factors and the Design Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . 574<br />

Viewing the Experiment Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576<br />

Examples of Factor Screening Experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577<br />

Example of Experiment Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577<br />

Example of Conducting an Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579<br />

Example of Analysis Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581<br />

Ordered Data Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582<br />

DEX Mean Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583<br />

Formal Test of Significance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584<br />

Multi-Responses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585<br />

Unordered Data Table (CSV Table). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586<br />

References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586<br />

Chapter 13<br />

Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587<br />

Optimization in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589<br />

Optimization Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589<br />

Optimization Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591<br />

Eldo Optimization Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592<br />

Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594<br />

Discretized Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594<br />

Specifying Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596<br />

Specifying Tracking with Design Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597<br />

Scaling Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599<br />

Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603<br />

Specifying Design Objectives Using .EXTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604<br />

Scalar Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605<br />

Vector Design Objectives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606<br />

Specifying Design Objectives Using .OBJECTIVE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608<br />

Types of Design Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610<br />

Minimization and Maximization Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610<br />

Goal Values Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612<br />

Range Constraints Objectives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614<br />

Eldo® User's Manual, 15.3 11


Table of Contents<br />

Objectives for Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616<br />

Design Objectives for Multi-Point Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618<br />

Implicit and Explicit Data Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618<br />

Specifying Design Objectives with Explicit Data Points. . . . . . . . . . . . . . . . . . . . . . . . . 619<br />

Scaling Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621<br />

Optimization Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622<br />

Eldo Optimizer SQP Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622<br />

Eldo Optimizer/Search Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626<br />

Conducting an Eldo Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629<br />

Global and Local Optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629<br />

Continuous and Discrete Optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630<br />

Smooth and Non-Smooth Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631<br />

Multiple-Run Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632<br />

Optimization of Sweep Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633<br />

Inner and Outer Sweep Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634<br />

Specifying Outer Design Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635<br />

Hierarchy and Depth of Sweep Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637<br />

Post-Analysis of Optimization Simulations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639<br />

Output from the Optimization Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639<br />

Explicitly Declaring Results For Graphical Viewing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641<br />

Viewing the ASCII Output File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642<br />

ASCII Optimization File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643<br />

Initialization of Problem Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643<br />

Optimization Phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645<br />

Optimization Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647<br />

Optimization Results with Respect to the Outer Loop. . . . . . . . . . . . . . . . . . . . . . . . . . . 651<br />

Monitoring Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653<br />

Monitoring Goal Value Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653<br />

Monitoring Minimize and Maximize Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654<br />

Monitoring Bound Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655<br />

Final Diagnostic Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656<br />

Normal and Elastic Modes of Termination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659<br />

Constraint Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659<br />

Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661<br />

Examples of Circuit Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664<br />

Designing a Low Noise Amplifier (LNA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664<br />

Fourband Filter Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671<br />

MOS Characterization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675<br />

Robust Optimization Using Corners. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677<br />

Setup Time Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681<br />

References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682<br />

Chapter 14<br />

Working with S, Y, Z Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683<br />

Simulation Setup for S, Y, Z Parameter Extraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684<br />

S, Y, Z Parameter Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685<br />

Matrix (G, H, T, A) Parameter Extraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687<br />

Output File Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688<br />

12 Eldo® User's Manual, 15.3


Table of Contents<br />

Simulating a Block Defined by S Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691<br />

Transient Simulation of Circuits Characterized in the Frequency Domain . . . . . . . . . . . . 691<br />

Technical Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692<br />

Implementation Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695<br />

Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696<br />

Basic Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697<br />

Detailed Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697<br />

Instantiating a Block Defined by S, Y, Z Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699<br />

Touchstone Data File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705<br />

CITIfile Data File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708<br />

Instantiating a Block Defined by X-Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710<br />

Chapter 15<br />

Aging and Reliability Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713<br />

Running Reliability Simulation in Eldo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713<br />

Chapter 16<br />

Electrothermal Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715<br />

Electrothermal Simulation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715<br />

Specifying an Electrothermal Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716<br />

Verilog-A Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720<br />

Reporting and Sorting Thermal Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723<br />

Electrothermal Simulation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724<br />

Chapter 17<br />

IBIS Models Support in Eldo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727<br />

Introduction to IBIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728<br />

IBIS Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728<br />

Using IBIS Models in Eldo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728<br />

IBIS Resources on the Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729<br />

IBIS File Types and Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729<br />

Checking IBIS Files with the Golden Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731<br />

IBIS Device Standards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732<br />

Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733<br />

Single-Ended Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735<br />

Pseudo-Differential Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739<br />

True Differential Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741<br />

Series Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742<br />

Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744<br />

Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745<br />

Pin Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745<br />

Series Pin Mapping and Series Switch Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746<br />

Node Declarations and Circuit Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747<br />

Electrical Board Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748<br />

IBIS AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748<br />

IBIS Support in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749<br />

Backward Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749<br />

Analysis Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749<br />

Eldo® User's Manual, 15.3 13


Table of Contents<br />

Digital Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750<br />

IBIS Model Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751<br />

IBIS Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752<br />

IBIS Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765<br />

IBIS Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773<br />

IBIS Electrical Board Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777<br />

Supported Keywords and Sub-Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780<br />

IBIS Algorithmic Model Interface (AMI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787<br />

IBIS Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790<br />

Example 1—Single-Ended Tx-Rx System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790<br />

Example 2—Pseudo-Differential Tx-Rx System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792<br />

Example 3—Package Parasitics Cross Talk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794<br />

Example 4—Simultaneous Switching Output Noise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796<br />

Chapter 18<br />

Eldo Control Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801<br />

Overview of the Eldo Control Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802<br />

Eldo Control Language Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803<br />

Eldo Control Language Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806<br />

Testbenches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809<br />

Testbench Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809<br />

Testbench Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811<br />

Rules for Testbench Location Resolution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813<br />

Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814<br />

Task Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814<br />

Task Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817<br />

Statement Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820<br />

Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820<br />

Line Breaks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820<br />

Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821<br />

Flow Control Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835<br />

Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839<br />

Defining and Running Simulations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841<br />

Result Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843<br />

Generated Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844<br />

Collecting Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846<br />

Vector Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848<br />

Library of Functions for Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854<br />

abs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861<br />

acos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862<br />

acosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863<br />

acot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864<br />

acoth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865<br />

append. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866<br />

asin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867<br />

asinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868<br />

atan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869<br />

atan2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870<br />

14 Eldo® User's Manual, 15.3


Table of Contents<br />

atanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871<br />

atof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872<br />

atoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873<br />

avg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874<br />

beginval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876<br />

bitof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877<br />

cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878<br />

ceil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879<br />

compoundcontent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880<br />

conj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884<br />

cos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885<br />

cosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886<br />

cot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887<br />

coth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888<br />

db . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889<br />

derive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891<br />

drv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892<br />

exp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893<br />

fclose. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895<br />

fft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896<br />

fgetc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899<br />

fgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900<br />

floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902<br />

fopen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903<br />

fprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905<br />

frexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907<br />

fscan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908<br />

hypot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910<br />

ifft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911<br />

imag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913<br />

imax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914<br />

imin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915<br />

int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916<br />

integ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917<br />

integral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918<br />

intersect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919<br />

isarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921<br />

iscompound. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922<br />

kurt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923<br />

ldexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924<br />

limit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925<br />

log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926<br />

log10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928<br />

magnitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930<br />

max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931<br />

mcconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933<br />

mcnbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934<br />

min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935<br />

mod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937<br />

Eldo® User's Manual, 15.3 15


Table of Contents<br />

modf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938<br />

mptpcomplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939<br />

nextval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940<br />

ongrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942<br />

phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943<br />

pow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944<br />

pow_10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945<br />

pwr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946<br />

real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947<br />

relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948<br />

ritocomplex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949<br />

rms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950<br />

rms_ac. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951<br />

rms_noise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952<br />

rms_tran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953<br />

round. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954<br />

sgn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955<br />

sign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956<br />

sin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957<br />

sinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958<br />

size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959<br />

skew . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960<br />

sprint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961<br />

sqr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963<br />

sqrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964<br />

sscan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965<br />

std . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967<br />

strtok. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968<br />

sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969<br />

system. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970<br />

tan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971<br />

tanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972<br />

trunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973<br />

var. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974<br />

wadd_data_enum_value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975<br />

wadd_scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978<br />

wclose. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979<br />

wcreate_data_type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980<br />

wcreate_scale_table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986<br />

wcreate_wave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987<br />

wget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995<br />

wftoascii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996<br />

wftodata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997<br />

wmkfolder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998<br />

wopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999<br />

wsave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000<br />

wset_values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003<br />

xdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005<br />

xmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006<br />

16 Eldo® User's Manual, 15.3


Table of Contents<br />

xmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007<br />

xofmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008<br />

xofmin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009<br />

xup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010<br />

xval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011<br />

xwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012<br />

yval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013<br />

Simulation Dynamic Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014<br />

Callback Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014<br />

Extended Simulation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024<br />

Netlist Monitoring Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025<br />

Simulation Flow-Control Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025<br />

Netlist Modification Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025<br />

_simu_end. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026<br />

_simu_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027<br />

_simu_get_extract. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1028<br />

_simu_load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029<br />

_simu_reload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030<br />

_simu_run. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031<br />

_simu_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033<br />

_simu_set_cond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036<br />

_simu_get_wave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038<br />

Parallel Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039<br />

General Settings for Parallelism in ECL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039<br />

Parallel Construct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040<br />

para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045<br />

Parallel Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1046<br />

Extended Simulation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053<br />

Launching ECL Simulations on Different Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055<br />

Statistical Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058<br />

_simu_erase_all_runs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063<br />

_simu_erase_last_run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064<br />

_simu_get_mcsens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065<br />

_simu_get_nb_stat_params . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076<br />

_simu_get_random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077<br />

_simu_get_raw_sampling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078<br />

_simu_get_sampling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079<br />

_simu_get_stat_param_dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080<br />

_simu_get_stat_param_distrib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081<br />

_simu_get_stat_param_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082<br />

_simu_get_stat_param_nb_draw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083<br />

_simu_get_stat_param_netlist_dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084<br />

_simu_get_stat_param_netlist_dev_param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085<br />

_simu_get_stat_param_netlist_mod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086<br />

_simu_get_stat_param_netlist_mod_param. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087<br />

_simu_get_stat_param_netlist_param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088<br />

_simu_get_stat_param_nom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089<br />

_simu_get_stat_param_ref_param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090<br />

_simu_get_stat_param_sampling_val . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091<br />

Eldo® User's Manual, 15.3 17


Table of Contents<br />

_simu_is_stat_param_dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092<br />

_simu_is_stat_param_devx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093<br />

_simu_is_stat_param_locked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094<br />

_simu_is_stat_param_lot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097<br />

_simu_lock_stat_param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098<br />

_simu_reset_random_generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099<br />

_simu_run. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102<br />

_simu_set_mc_flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103<br />

_simu_set_stat_param_sampling_val. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104<br />

_simu_unlock_stat_param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105<br />

Running Monte Carlo Runs in Parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105<br />

Advanced Simulation Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114<br />

Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114<br />

Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117<br />

ECL Grammar Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118<br />

Examples Using ECL as an Alternative to Standard Eldo Commands . . . . . . . . . . . . . . . . . 1123<br />

.STEP Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123<br />

.EXTRACT Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125<br />

.PRINTFILE Alternative #1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127<br />

.PRINTFILE Alternative #2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129<br />

.OPTIMIZE Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131<br />

.MPRUN with Monte Carlo Analysis Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133<br />

Chapter 19<br />

Post-Processing Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135<br />

Post-Processing Library Example Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137<br />

General Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139<br />

Registering User Defined Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139<br />

Making Specific Calls to User Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139<br />

Waveform Definition With User Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140<br />

Macro-Like Usage of User Defined Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141<br />

Keyword Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142<br />

Working with Waveforms Inside User Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . 1142<br />

evalExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144<br />

defineVec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146<br />

EZwave Waveform Calculator Functions Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149<br />

Built-In Waveform Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150<br />

ABS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151<br />

ACOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152<br />

ACOSH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153<br />

ACOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154<br />

ACOTH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155<br />

ASIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156<br />

ASINH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157<br />

ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158<br />

ATANH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159<br />

AVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1160<br />

COMPRESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161<br />

18 Eldo® User's Manual, 15.3


Table of Contents<br />

COS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162<br />

COSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163<br />

COT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164<br />

COTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1165<br />

DB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166<br />

DEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167<br />

DELAY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168<br />

DERIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169<br />

DRV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1170<br />

EXP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171<br />

FALLTIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172<br />

GMARGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173<br />

HISTOGRAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174<br />

IMAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175<br />

INTEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176<br />

INTEGRAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177<br />

INTERSECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178<br />

INVDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179<br />

LOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180<br />

LOG10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181<br />

MAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182<br />

MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183<br />

MIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184<br />

PHASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185<br />

PHMARGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186<br />

RAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187<br />

REAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188<br />

RELATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1189<br />

RISETIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190<br />

RMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191<br />

SAMPLE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192<br />

SETTLINGTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193<br />

SIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194<br />

SINH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195<br />

SQR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196<br />

SQRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197<br />

SUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198<br />

TAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199<br />

TANH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200<br />

TPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201<br />

TPDDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202<br />

TPDDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203<br />

TPDUD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204<br />

TPDUU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205<br />

VMAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206<br />

VMIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1207<br />

WINDOW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208<br />

XCOMPRESS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209<br />

XVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210<br />

Eldo® User's Manual, 15.3 19


Table of Contents<br />

XWAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211<br />

YVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212<br />

IIPX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213<br />

OIPX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214<br />

Built-In DSP Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215<br />

AUTOCOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216<br />

CONV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217<br />

CORRELO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218<br />

CT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220<br />

FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222<br />

HARMONICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224<br />

HDIST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225<br />

IFFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226<br />

PERIODO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227<br />

PSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229<br />

SAMPLER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1230<br />

SNR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232<br />

Accessing Waves Inside an External Database Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . 1233<br />

LOAD_FILE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234<br />

DISP_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235<br />

UNLOAD_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236<br />

Additional PPL Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237<br />

DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238<br />

GETSIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239<br />

GETPOINT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240<br />

SETPOINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241<br />

CREATEVECTOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242<br />

Chapter 20<br />

Speed and Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243<br />

Introduction to Speed and Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243<br />

Speed and Accuracy in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245<br />

Integration Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246<br />

Time Step Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248<br />

Overview of Time Step Control Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248<br />

Control of the Local Truncation Error (LTE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1250<br />

More About Time Step Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1251<br />

Usage of a Fixed Time Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252<br />

Newton Iterations Accuracy Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252<br />

Global Tuning of the Accuracy—EPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1253<br />

Global Tuning of the Accuracy—TUNING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255<br />

Simulation of Large Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256<br />

Tips for Improving Simulation Performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259<br />

Integral Equation Method (IEM) Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1260<br />

IEM Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261<br />

IEM—Supported Circuit Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1262<br />

IEM Tolerance Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263<br />

Efficient Usage of IEM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264<br />

20 Eldo® User's Manual, 15.3


Table of Contents<br />

One Step Relaxation (OSR) Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265<br />

Chapter 21<br />

Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269<br />

Example 1—AC Analysis of a Parallel LCR Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272<br />

Example 2—Transient and AC Analysis of a 4th Order Butterworth Filter . . . . . . . . . . . . . 1274<br />

Example 3—AC and Noise Analysis of a Band Pass Filter . . . . . . . . . . . . . . . . . . . . . . . . . 1277<br />

Example 4—AC Analysis of a Low Pass Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1280<br />

Example 5—Transient Analysis of a Colpitts Oscillator. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1283<br />

Example 6—Transient Analysis of a High Voltage Cascade . . . . . . . . . . . . . . . . . . . . . . . . 1286<br />

Example 7—Monte Carlo Analysis Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1290<br />

Example 8—DC Sensitivity of a Bipolar Amplifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1293<br />

Example 9—Transient and AC Analysis of a Switched Capacitor Low Pass Filter . . . . . . . 1295<br />

Example 10—Transient Analysis of a Switched Capacitor Schmitt Trigger . . . . . . . . . . . . 1298<br />

Example 11—Loop Stability of an Opamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299<br />

Example 12—Overshoot Extraction of an Opamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301<br />

Example 13—Transient Analysis of a 5th Order Elliptic SC Low Pass Filter . . . . . . . . . . . 1303<br />

Example 14—Charge Conservation in MOS Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1304<br />

Example 15—AC Analysis of an Active RC Band Pass Filter . . . . . . . . . . . . . . . . . . . . . . . 1306<br />

Example 16—Transient Analysis of an Integrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier . . . . . . . . . . 1309<br />

Example 18—Numerical Integration: TRAP versus GEAR . . . . . . . . . . . . . . . . . . . . . . . . . 1314<br />

Example 19—DC Mismatch Comparison with Monte Carlo Analysis. . . . . . . . . . . . . . . . . 1316<br />

Example 20—DC Mismatch Comparison with Monte Carlo Analysis using ECL . . . . . . . 1322<br />

Example 21—Post-Layout Simulation using DSPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324<br />

Example 22—Extract Gain and Phase Margin of a 2-Stage Opamp. . . . . . . . . . . . . . . . . . . 1327<br />

Example 23—Parametric Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1331<br />

Example 24—Cell Characterization: Setup Time Extraction . . . . . . . . . . . . . . . . . . . . . . . . 1334<br />

Example 25—Setting up and Handling Analog Busses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337<br />

Example 26—Spectre Compatibility Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1339<br />

Example 27—Monte Carlo Analysis Autostop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1340<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit . . . . . . . . . 1343<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit. . . . . . . . . . . . . . . . . . . . . . . . 1358<br />

Transient Noise Analysis Example 1—High-Rate Particle Detector . . . . . . . . . . . . . . . . . . 1368<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter . . . . . . . . . . . . . . . . . . . . 1373<br />

Appendix A<br />

Error and Warning Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1379<br />

Eldo Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1379<br />

Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1380<br />

Global Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1380<br />

Errors Related to Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1384<br />

Errors Related to Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385<br />

Errors Related to Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1392<br />

Errors Related to Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399<br />

Errors Related to Macromodels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401<br />

Errors Related to Subcircuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1402<br />

Miscellaneous Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1403<br />

Eldo® User's Manual, 15.3 21


Table of Contents<br />

Errors Related to Eldo Premier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408<br />

Warning Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411<br />

Global Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411<br />

Warnings Related to Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1415<br />

Warnings Related to Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417<br />

Warnings Related to Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1421<br />

Warnings Related to Models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1428<br />

Warnings Related to Subcircuits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1431<br />

Miscellaneous Warnings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1431<br />

Warnings Related to Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1450<br />

Appendix B<br />

Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1453<br />

Common Netlist Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1453<br />

Tips for Troubleshooting and/or Improving Convergence and Performance . . . . . . . . . . . . 1454<br />

Tips for Troubleshooting Performance Bottlenecks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1454<br />

Troubleshooting File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1455<br />

Appendix C<br />

Eldo Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457<br />

Invoking Eldo Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457<br />

Reading Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1459<br />

Resetting Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1461<br />

Change Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1463<br />

Controlling Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1466<br />

Appendix D<br />

Eldo Conversion Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1469<br />

Utility to Convert .chi to .cir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1470<br />

Utility to Convert VCD to Test Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1471<br />

Utility to Convert a Waveform Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473<br />

Appendix E<br />

STMicroelectronics Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477<br />

How to Invoke Eldo-ST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477<br />

What Does Eldo-ST Mode Change? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1478<br />

Index<br />

Third-Party Information<br />

End-User License Agreement<br />

22 Eldo® User's Manual, 15.3


List of Figures<br />

Figure 1-1. Cascaded Inverter Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

Figure 1-2. Inverter Subcircuit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

Figure 1-3. EZwave Output (.wdb) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

Figure 1-4. Eldo Simulation Flow Input and Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

Figure 4-1. Circuit File Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

Figure 4-2. IP Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145<br />

Figure 6-1. DC Device Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207<br />

Figure 6-2. Transient Analysis Plot for a Butterworth Filter Circuit. . . . . . . . . . . . . . . . . . . 219<br />

Figure 6-3. AC Analysis Plot for an LCR Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225<br />

Figure 6-4. Circuit Components with their Added Noise Sources . . . . . . . . . . . . . . . . . . . . 242<br />

Figure 6-5. White Noise Signal From Random Pulses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />

Figure 6-6. Random Pulses (Zoom). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249<br />

Figure 6-7. PSD of a White Noise Signal Generated with Random Pulses. . . . . . . . . . . . . . 250<br />

Figure 6-8. Flicker Noise Signal From a Sum of Random Pulses. . . . . . . . . . . . . . . . . . . . . 251<br />

Figure 6-9. Flicker Noise Signal From a Sum of Random Pulses (Zoom) . . . . . . . . . . . . . . 252<br />

Figure 6-10. PSD of a Flicker Noise Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253<br />

Figure 6-11. White Noise Signal From a Sum of Sinusoids . . . . . . . . . . . . . . . . . . . . . . . . . 254<br />

Figure 6-12. White Noise Signal From a Sum of Sinusoids (Zoom) . . . . . . . . . . . . . . . . . . 254<br />

Figure 6-13. PSD of a White Noise Signal Generated From Sinusoids . . . . . . . . . . . . . . . . 255<br />

Figure 6-14. Flicker Noise Signal From a Sum of Sinusoids . . . . . . . . . . . . . . . . . . . . . . . . 256<br />

Figure 6-15. Flicker Noise Signal From a Sum of Sinusoids (Zoom). . . . . . . . . . . . . . . . . . 256<br />

Figure 6-16. PSD of a Flicker Noise Signal Generated From Sinusoids. . . . . . . . . . . . . . . . 257<br />

Figure 6-17. Transient Noise Analysis Plot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259<br />

Figure 6-18. VCO Control Node - Steady State Reached . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />

Figure 6-19. VCO Control Node - Restarted Transient Noise Analysis . . . . . . . . . . . . . . . . 262<br />

Figure 6-20. EZwave Waveform Calculator - Phase Noise Computation. . . . . . . . . . . . . . . 263<br />

Figure 6-21. Phase Noise Plots Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264<br />

Figure 6-22. Power Analysis Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282<br />

Figure 8-1. Compound Waveform Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

Figure 8-2. Defining Waveforms: PWL, PWL_CTE and PWL_LIN Functions. . . . . . . . . . 339<br />

Figure 8-3. EZwave Display of SOA Limits Assertion Bus . . . . . . . . . . . . . . . . . . . . . . . . . 343<br />

Figure 9-1. EZwave Waveform Showing Nodes Impacting Time-Step . . . . . . . . . . . . . . . . 382<br />

Figure 10-1. Post-Layout Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390<br />

Figure 11-1. Central Tendency and Dispersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412<br />

Figure 11-2. Tail Probabilities and Yield Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414<br />

Figure 11-3. Propagation of Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415<br />

Figure 11-4. Common Statistics for UNIF Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432<br />

Figure 11-5. Percentage of Cases in Eight Portions of the Gaussian Distribution . . . . . . . . 433<br />

Figure 11-6. Plot of the Truncated Normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434<br />

Figure 11-7. Plot of the Triangular Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435<br />

Eldo® User's Manual, 15.3 23


List of Figures<br />

Figure 11-8. Scatter Plot of a Gaussian Sample and Contour Ellipses . . . . . . . . . . . . . . . . . 439<br />

Figure 11-9. Scatter Plot and Marginal Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441<br />

Figure 11-10. The ISMC Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453<br />

Figure 11-11. Comparison Between Low Discrepancy and Pseudorandom Point Sets . . . . 456<br />

Figure 11-12. Latin Hypercube Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458<br />

Figure 11-13. Output Files Organization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464<br />

Figure 11-14. Illustration of Kurtosis and Skewness with μ=0 and σ=1. . . . . . . . . . . . . . . . 496<br />

Figure 11-15. Global/Local Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506<br />

Figure 11-16. Histogram Annotations 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511<br />

Figure 11-17. CDF Plot (with Confidence Bounds) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512<br />

Figure 11-18. CDF Plot Right-Tail Part of the Empirical CDF. . . . . . . . . . . . . . . . . . . . . . . 513<br />

Figure 11-19. Principle of the SETTLING Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517<br />

Figure 11-20. Scatter Plots of Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522<br />

Figure 11-21. Monte Carlo Analysis Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527<br />

Figure 11-22. LIMIT Distribution with L=-1 and U=+1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 549<br />

Figure 11-23. Four Random Samples from NOR/UNI Distributions . . . . . . . . . . . . . . . . . . 551<br />

Figure 11-24. Four Random Samples when AUNIF(0,1,MULT) is Specified . . . . . . . . . . . 552<br />

Figure 11-25. Four Random Samples when AGAUSS (0,1,1,MULT) is Specified . . . . . . . 553<br />

Figure 12-1. Percentage of Cases in Eight Portions of the Gaussian Distribution . . . . . . . . 566<br />

Figure 12-2. Common Statistics for UNIF(x,h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567<br />

Figure 12-3. Factor Levels for a Circuit Parameter x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568<br />

Figure 12-4. Cuboidal Representation of Two 3-factors Designs . . . . . . . . . . . . . . . . . . . . . 575<br />

Figure 13-1. Simulator as a Black Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594<br />

Figure 13-2. Discretization of Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595<br />

Figure 13-3. Illustration of Optimality Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625<br />

Figure 13-4. Illustration of Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625<br />

Figure 13-5. Non-Valid and Valid Zeros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627<br />

Figure 13-6. Different Types of Minima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629<br />

Figure 13-7. Examples of Non-Smooth Problems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631<br />

Figure 13-8. Discretization of Design Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633<br />

Figure 13-9. Inner and Outer Sweep Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635<br />

Figure 13-10. Scaling Transformation For Design Objectives Output . . . . . . . . . . . . . . . . . 644<br />

Figure 13-11. Scaling Transformation for Variables Output. . . . . . . . . . . . . . . . . . . . . . . . . 645<br />

Figure 13-12. Optimization Phase Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646<br />

Figure 13-13. Statistics and Diagnostics Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647<br />

Figure 13-14. Status of Variables Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648<br />

Figure 13-15. Status of Objectives Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649<br />

Figure 13-16. Analysis Of Last Simulation Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650<br />

Figure 13-17. Optimization Results with Respect to the Outer Loop Output . . . . . . . . . . . . 651<br />

Figure 13-18. Illustration of Constraint Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660<br />

Figure 13-19. Illustration of Slack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662<br />

Figure 13-20. Plotted Values of the Merit Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671<br />

Figure 13-21. Filter Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672<br />

Figure 13-22. Optimized Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674<br />

Figure 13-23. Illustration of I-V characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675<br />

24 Eldo® User's Manual, 15.3


List of Figures<br />

Figure 14-1. Mixed-Mode S Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694<br />

Figure 16-1. Electrothermal Simulation Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716<br />

Figure 17-1. Input Buffer Model Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735<br />

Figure 17-2. Terminator Buffer Model Building Blocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . 736<br />

Figure 17-3. Output Buffer Model Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737<br />

Figure 17-4. I/O Buffer Model Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738<br />

Figure 17-5. 3_state Buffer Model Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739<br />

Figure 17-6. Pseudo-Differential Input Buffer Consisting of Two Single-Ended Input Buffers<br />

740<br />

Figure 17-7. Pseudo-Differential Output Buffer Consisting of Two Single-Ended Output Buffers<br />

741<br />

Figure 17-8. Example Analog-Only Model init Using an I/O Buffer . . . . . . . . . . . . . . . . . . 742<br />

Figure 17-9. Simple Passive Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742<br />

Figure 17-10. Series Current Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743<br />

Figure 17-11. Series MOSFET Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743<br />

Figure 17-12. Common Package Parasitics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744<br />

Figure 17-13. [Pin Mapping] Model Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746<br />

Figure 17-14. Series Pin Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747<br />

Figure 17-15. Test_component Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772<br />

Figure 17-16. Package Model Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776<br />

Figure 17-17. Electrical Board Description Example Connections. . . . . . . . . . . . . . . . . . . . 780<br />

Figure 17-18. Single-Ended Tx-Rx System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790<br />

Figure 17-19. Single-Ended Tx-Rx System Simulation Results . . . . . . . . . . . . . . . . . . . . . . 792<br />

Figure 17-20. Pseudo-Differential Tx-Rx System Simulation Results . . . . . . . . . . . . . . . . . 794<br />

Figure 17-21. Package Parasitics Cross Talk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796<br />

Figure 17-22. Component Internal Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797<br />

Figure 17-23. Simultaneous Switching Output Noise (SSON) Simulation Results . . . . . . . 798<br />

Figure 21-1. Parallel LCR Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272<br />

Figure 21-2. Example 1—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274<br />

Figure 21-3. 4th Order Butterworth Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274<br />

Figure 21-4. Example 2—Simulation Results—AC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1276<br />

Figure 21-5. Example 2—Simulation Results—Transient . . . . . . . . . . . . . . . . . . . . . . . . . . 1277<br />

Figure 21-6. Band Pass Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1278<br />

Figure 21-7. Example 3—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1280<br />

Figure 21-8. Low Pass Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1281<br />

Figure 21-9. Example 4—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1283<br />

Figure 21-10. Colpitts Oscillator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1284<br />

Figure 21-11. Example 5—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1286<br />

Figure 21-12. High Voltage Cascade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287<br />

Figure 21-13. Example 6—Simulation Results 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289<br />

Figure 21-14. Example 6—Simulation Results 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1290<br />

Figure 21-15. Non-inverting Amplifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291<br />

Figure 21-16. Example 7—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1293<br />

Figure 21-17. Bipolar Amplifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1294<br />

Figure 21-18. Example 8—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1295<br />

Eldo® User's Manual, 15.3 25


List of Figures<br />

Figure 21-19. Example 9—Simulation Results—AC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297<br />

Figure 21-20. Example 9—Simulation Results—Transient . . . . . . . . . . . . . . . . . . . . . . . . . 1298<br />

Figure 21-21. Example 10—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299<br />

Figure 21-22. Example 11—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301<br />

Figure 21-23. Example 12—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303<br />

Figure 21-24. Example 13—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1304<br />

Figure 21-25. Example 14—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1306<br />

Figure 21-26. Example 15—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307<br />

Figure 21-27. Example 16—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309<br />

Figure 21-28. Example 17—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1314<br />

Figure 21-29. Example 18—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315<br />

Figure 21-30. Example 19—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1317<br />

Figure 21-31. Example 21—Simulation Results 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1326<br />

Figure 21-32. Example 21—Simulation Results Zoom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327<br />

Figure 21-33. Example 22—Simulation Results 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1329<br />

Figure 21-34. Example 22—Simulation Results 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1330<br />

Figure 21-35. Example 23—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1333<br />

Figure 21-36. Example 24—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1336<br />

Figure 21-37. Example 24—Simulation Results Zoom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337<br />

Figure 21-38. Example 25—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1339<br />

Figure 21-39. Example 26—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1340<br />

Figure 21-40. Example 27—Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342<br />

Figure 21-41. PLL Circuit for Power Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343<br />

Figure 21-42. PLL Circuit for HiZ Fault Detection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359<br />

Figure 21-43. High-Rate Particle Detector Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369<br />

Figure 21-44. Simulation Results—Input & Output Signals. . . . . . . . . . . . . . . . . . . . . . . . . 1370<br />

Figure 21-45. Noise at Amplifier O/P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1371<br />

Figure 21-46. Noise at Analog Memory O/P. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1372<br />

Figure 21-47. Switched Capacitor Filter Circuit Schematic . . . . . . . . . . . . . . . . . . . . . . . . . 1373<br />

Figure 21-48. Amplifier Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1374<br />

Figure 21-49. AC & Noise Simulation Results of Amplifier . . . . . . . . . . . . . . . . . . . . . . . . 1375<br />

Figure 21-50. AC & Noise Simulation of Amplifier Macromodel . . . . . . . . . . . . . . . . . . . . 1376<br />

Figure 21-51. Simulation Results of the Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1377<br />

Figure 21-52. Frequency Response of the Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1378<br />

26 Eldo® User's Manual, 15.3


List of Tables<br />

Table 1-1. Documentation Syntax Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

Table 2-1. Simulation Connection Manager Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

Table 3-1. Option PREMIER_MODE Effect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />

Table 3-2. Eldo Analysis Command Support in Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . 74<br />

Table 3-3. Eldo Premier—Supported Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

Table 4-1. Scale Factors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

Table 4-2. Arithmetic Functions and Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

Table 4-3. Arithmetic Functions Used Only in .EXTRACT, .DEFWAVE, .SETSOA . . . . 112<br />

Table 4-4. Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Table 4-5. Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

Table 4-6. Bitwise Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

Table 5-1. MOS Levels with -compat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

Table 5-2. BJT Models with -compat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

Table 5-3. Diode Models with -compat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

Table 5-4. Resistor Level with -compat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167<br />

Table 5-5. Spectre Constants and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183<br />

Table 5-6. Spectre Conversion Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188<br />

Table 8-1. Special Characters for Plotting and Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312<br />

Table 8-2. Transient Extraction Language Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325<br />

Table 8-3. General Extraction Language Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325<br />

Table 8-4. Graphic Elements for SOA Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342<br />

Table 9-1. Eldo Standard Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358<br />

Table 9-2. Activating Performance Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384<br />

Table 11-1. Speedup of ISMC Over Standard Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . . 530<br />

Table 11-2. Comparison of Standard Monte Carlo and SSD Methods . . . . . . . . . . . . . . . . 533<br />

Table 12-1. Example Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558<br />

Table 13-1. Eldo Optimization Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592<br />

Table 13-2. Optimality Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624<br />

Table 13-3. Optimization Result Status Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656<br />

Table 13-4. Basic Examples of Circuit Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664<br />

Table 13-5. Results of Optimization for GOAL Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 667<br />

Table 13-6. Results of Optimization for MINIMIZE Objectives . . . . . . . . . . . . . . . . . . . . . 668<br />

Table 13-7. Extracted Information from .otm File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669<br />

Table 13-8. Combinations of N1 and LS Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669<br />

Table 13-9. Results of Restricted Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670<br />

Table 13-10. Values Extracted from fourband.otm File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674<br />

Table 13-11. Nmos Example Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677<br />

Table 14-1. Mixed-Mode S Parameter Extraction Default Rule . . . . . . . . . . . . . . . . . . . . . 686<br />

Table 14-2. CITIfile Data Format Supported Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . 708<br />

Table 15-1. Eldo Reliability Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713<br />

Eldo® User's Manual, 15.3 27


List of Tables<br />

Table 17-1. List of Predefined Port Names and their Descriptions . . . . . . . . . . . . . . . . . . . 733<br />

Table 17-2. Buffer Types and Port Names Used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734<br />

Table 17-3. Digital Port Logic Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750<br />

Table 17-4. Analog Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750<br />

Table 17-5. Exceptions to Fast=Max, Slow=Min Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756<br />

Table 17-6. Supported Keywords and Sub-Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781<br />

Table 18-1. Eldo Control Language Example Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803<br />

Table 18-2. ECL Result Structure Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843<br />

Table 18-3. Library of Functions for Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854<br />

Table 18-4. Extended Simulation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024<br />

Table 18-5. Statistical Processing Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1060<br />

Table 19-1. PPL Example Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137<br />

Table 19-2. General Usage Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139<br />

Table 19-3. C and PPL Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143<br />

Table 19-4. Built-In Waveform Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150<br />

Table 19-5. Built-In DSP Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215<br />

Table 19-6. Functions to Access Waves Inside an External Database . . . . . . . . . . . . . . . . . 1233<br />

Table 19-7. Additional PPL Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237<br />

Table 20-1. Global Tuning of Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254<br />

Table 21-1. Eldo Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269<br />

Table 21-2. Additional Eldo Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272<br />

Table A-1. Global Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1380<br />

Table A-2. Errors Related to Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1384<br />

Table A-3. Errors Related to Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385<br />

Table A-4. Errors Related to Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1392<br />

Table A-5. Errors Related to Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399<br />

Table A-6. Errors Related to Macromodels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1402<br />

Table A-7. Errors Related to Subcircuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1402<br />

Table A-8. Miscellaneous Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1403<br />

Table A-9. Errors Related to Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1409<br />

Table A-10. Global Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411<br />

Table A-11. Warnings Related to Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1415<br />

Table A-12. Warnings Related to Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417<br />

Table A-13. Warnings Related to Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1421<br />

Table A-14. Warnings Related to Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1428<br />

Table A-15. Warnings Related to Subcircuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1431<br />

Table A-16. Miscellaneous Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1432<br />

Table A-17. Warnings Related to Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1450<br />

Table C-1. Netlist Element Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1460<br />

Table D-1. ffcv Output Format Modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473<br />

Table E-1. Operating Point—optyp values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1479<br />

Table E-2. Operating Point—optyp values—Dynamic Part for Charge Control Model . . . 1480<br />

28 Eldo® User's Manual, 15.3


Chapter 1<br />

Introduction to Eldo<br />

The Eldo analog simulator is the core component of a comprehensive suite of analog and<br />

mixed-signal simulation tools.<br />

Overview of Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

Getting Started With the Eldo Simulation Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

Eldo Input and Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

Eldo Documentation Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

Command Line Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

Related Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

Documentation Syntax Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

Overview of Eldo<br />

The following is a list of the major product features of Eldo:<br />

• Core technology for analog, RF (Eldo RF ), and mixed-signal (Questa ® ADMS ,<br />

ADMS-ADiT ) simulation.<br />

• Simulation of very large circuits in time and frequency domains.<br />

• Eldo Premier option provides increased performance and capacity without sacrificing<br />

accuracy compared to the default Eldo Classic.<br />

• Provides a 3× to 10× gain in simulation speed over other commercial SPICE simulators,<br />

while maintaining the same accuracy.<br />

• Flexible <strong>user</strong> control of simulation accuracy.<br />

• Transient noise algorithm for noise simulation during transient analysis.<br />

• Advanced analysis options such as pole-zero, enhanced Monte Carlo, DC mismatch.<br />

• Circuit optimization and statistical analysis (design of experiments).<br />

• S and Z-domain generalized transfer functions.<br />

• Reliability simulation with Eldo UDRM (User Defined Reliability Model).<br />

• Flexible DSPF netlist support.<br />

• Behavioral modeling with Verilog-A.<br />

Eldo® User's Manual, 15.3 29


Introduction to Eldo<br />

Overview of Eldo<br />

• Extensive device model libraries including leading MOS, bipolar and MESFET<br />

transistor models such as: BSIM3v3.x, BSIM 4, MM11, Mextram, HICUM, and PSP.<br />

• TSMC Model Interface (TMI) support for TMI1 and TMI2.<br />

• IBIS (I/O Buffer Information Specification) model support.<br />

• Waveform analysis and post-processing of simulation results with the EZwave ®<br />

graphical post-processor.<br />

• Integration into Mentor Graphics Custom IC flow, consisting of Pyxis® Schematic for<br />

schematic capture, Pyxis Layout for the layout side, and Calibre/Calibre xRC for DRC/<br />

LVS and extraction. This flow provides a complete, front-to-back design and<br />

verification environment for analog, mixed-signal and RF.<br />

• Integration into Cadence’s Analog Design Environment with Artist Link ® .<br />

Analog Simulation Capabilities<br />

Eldo uses a unique partitioning scheme that enables the use of different algorithms on different<br />

portions of a design. It provides a flexible control of simulation accuracy using a wide range of<br />

device model libraries, and gives a high accuracy yield in combination with high speed and high<br />

performance.<br />

See “Getting Started With the Eldo Simulation Flow” on page 31.<br />

RF Capabilities<br />

Eldo RF extends the capabilities of the Eldo simulator with added extensions for RF simulation<br />

to enable the fast large-signal Steady-State analysis (SST analysis) of high frequency electronic<br />

circuits. A set of dedicated algorithms are provided to accurately and efficiently handle the<br />

multi-GHz signals in modern wireless communication applications. Of importance to the RF<br />

designer, you can extract large-signal S parameters, and W elements and multiple lossy<br />

transmission lines are supported.<br />

See the Eldo RF User’s Manual.<br />

Mixed-Signal Simulation<br />

Questa ADMS incorporates Eldo Classic and Eldo Premier to efficiently simulate mixed-signal<br />

designs within a unified simulation environment. Questa ADMS extends the familiar Questa<br />

verification platform with analog and mixed-signal standard languages. You can mix all<br />

languages in a single hierarchy; and you can combine VHDL-AMS, Verilog-AMS, VHDL,<br />

Verilog, SystemVerilog, SPICE and SystemC anywhere and at any level in the design. The<br />

testbench may be SPICE, an analog or mixed-signal language, or a digital language.<br />

In Questa ADMS, you can use digital units that have been previously compiled and simulated<br />

by Questa without any modification. You can use SPICE subcircuits anywhere in the design<br />

hierarchy for greater flexibility in modeling.<br />

30<br />

Eldo® User's Manual, 15.3


Introduction to Eldo<br />

Getting Started With the Eldo Simulation Flow<br />

During a mixed-signal, or pure analog, simulation, Questa ADMS uses Eldo to simulate the<br />

following:<br />

• A mixed-signal design that includes SPICE subcircuits as components.<br />

• A SPICE netlist that includes VHDL-AMS and VHDL design entities or Verilog-AMS<br />

and Verilog modules as components.<br />

• A pure SPICE netlist.<br />

See the Questa ADMS User’s Manual.<br />

Verilog-A<br />

Verilog-A is an analog subset of the Verilog-AMS language, for use to help design analog<br />

systems with high-level behavioral descriptions, as well as structural descriptions of systems<br />

and components. The default Verilog-A implementation in Eldo is the same as that used by<br />

Verilog-AMS in Questa ADMS. Eldo and Questa ADMS can share the same compiled Verilog-<br />

A modules.<br />

See the Eldo Verilog-A User’s Manual.<br />

Waveform Analysis<br />

The EZwave graphical post-processor enables waveform analysis and post-processing of<br />

simulation results. The native waveform format of EZwave, called “wdb,” is extremely efficient<br />

for manipulating huge databases. EZwave can load gigabytes of data in seconds. EZwave can<br />

also load most popular waveform formats, and operates on both analog and digital signals.<br />

See the EZwave Users Manual.<br />

Viewing ASCII Simulation Output Files<br />

You can use the AMS Results Browser to view simulation results and associated files.<br />

Depending on the file format, results may be sorted, filtered, grouped, searched, printed, copied,<br />

and exported.<br />

The AMS Results Browser is mainly intended to be used to view Eldo outputs, but you can also<br />

use it to view SPICE input files and any text file.<br />

See the AMS Results Browser.<br />

Getting Started With the Eldo Simulation Flow<br />

The basic Eldo simulation flow is to setup a .cir netlist file, run the Eldo simulation on the<br />

netlist file, then analyze the generated results.<br />

This example consists of a simple cascade of three inverters. Figure 1-1 and Figure 1-2 show<br />

the circuit diagram for the cascade together with the inverter subcircuit. To create the Eldo<br />

netlist, node names must be assigned to the circuit. The complete netlist is provided.<br />

Eldo® User's Manual, 15.3 31


Introduction to Eldo<br />

Getting Started With the Eldo Simulation Flow<br />

Figure 1-1. Cascaded Inverter Circuit<br />

Figure 1-2. Inverter Subcircuit<br />

The associated netlist for the simple cascade of three inverters is listed below:<br />

* Netlist for cascade of three inverters<br />

* MOS model definitions<br />

.model m1 nmos level=3 vto=1v uo=550 vmax=2.0e5<br />

+ cgdo=0.4p cgbo=2.0e-10 cgso=4.0e-11 cjsw=10.e-9<br />

+ mjsw=0.3 tox=1.0e-7 nsub=1.0e16 nfs=1.5e10<br />

+ xj=0.5u ld=0.5u pb=0.75 delta=0.9 eta=0.95<br />

+ kappa=0.45 gamma=0.37<br />

.model p1 pmos level=3 vto=-1v uo=230 vmax=1.9e5<br />

+ cgdo=0.4p cgbo=2.0e-10 cgso=4.0e-11 cjsw=10.e-9<br />

+ mjsw=0.3 tox=1.0e-7 nsub=1.0e16 nfs=1.5e10<br />

+ xj=0.5u ld=0.5u pb=0.75 delta=0.9 eta=0.95<br />

+ kappa=0.45 gamma=0.37<br />

* Subcircuit definition<br />

.subckt inv 1 2 3<br />

m2 2 1 0 0 m1 w=10u l=4u ad=100p pd=40u as=100p<br />

m1 2 1 3 3 p1 w=15u l=4u ad=100p pd=40u as=100p<br />

c1 2 0 0.5p<br />

.ends inv<br />

32<br />

Eldo® User's Manual, 15.3


Introduction to Eldo<br />

Getting Started With the Eldo Simulation Flow<br />

* Subcircuit calls<br />

x1 1 2 6 inv<br />

x2 2 3 6 inv<br />

x3 3 4 6 inv<br />

cload 4 0 1p<br />

* Electrical source definitions<br />

vdd 6 0 5v<br />

vin 1 0 pulse(0 5 10e-9 5e-9 5e-9 30e-9 50e-9)<br />

* Simulation options & commands<br />

.tran 0.5n 100n uic<br />

.ic v(1)=0<br />

.plot tran v(1) v(2) v(3) v(4)<br />

.print tran v(1) v(2) v(3) v(4)<br />

.option eps=0.5e-3 tnom=50 list node<br />

.end<br />

Prerequisites<br />

• The netlist file must include the following:<br />

o<br />

o<br />

o<br />

o<br />

Circuit connectivity, that is, a netlist.<br />

Model parameter values defining the specific device models to be used.<br />

Electrical stimuli (sources).<br />

Simulation options and commands.<br />

Input and output formats are compatible with Berkeley SPICE 2G6, however Eldo<br />

provides additional features not implemented in SPICE. See “Eldo Netlist Setup” on<br />

page 95.<br />

Procedure<br />

1. Setup a netlist with the circuit description and simulation options and commands. You<br />

may generate the .cir control file for Eldo using a basic text editor, or alternatively a<br />

schematic editor capable of generating SPICE-like format.<br />

See “Eldo Netlist Setup” on page 95.<br />

2. Run Eldo on the netlist to simulate your design. To run a simulation from the command<br />

line use the command:<br />

<strong>eldo</strong> cir_file_name.cir<br />

For a full list of options see “Running Eldo” on page 41.<br />

3. Analyze the results of your simulation during or after simulation.<br />

After the simulation has complete, Eldo writes simulator information to the .chi file.<br />

This file contains details of the simulation, including any warning or error messages<br />

which may have been encountered during simulation. A binary .wdb file is also<br />

Eldo® User's Manual, 15.3 33


Introduction to Eldo<br />

Getting Started With the Eldo Simulation Flow<br />

generated by default as a simulation output. You can view the results written to the .wdb<br />

file with the EZwave viewer, by opening it with the command:<br />

ezwave cir_file_name.wdb<br />

Figure 1-3 shows an example binary output file (.wdb) viewed with EZwave.<br />

Figure 1-3. EZwave Output (.wdb)<br />

See “Analyzing Simulation Results” on page 357.<br />

Related Topics<br />

Eldo Input and Output Files<br />

Specifying Simulation Output<br />

Output Files Generated<br />

34<br />

Eldo® User's Manual, 15.3


Eldo Input and Output Files<br />

Introduction to Eldo<br />

Eldo Input and Output Files<br />

Summary of the input files that must be provided for an Eldo simulation run and the main output<br />

files that Eldo produces.<br />

Figure 1-4 shows the main input an output files used in the Eldo simulation flow.<br />

Figure 1-4. Eldo Simulation Flow Input and Output Files<br />

A brief description of each file type is provided below:<br />

Input File<br />

.cir The main Eldo control file, containing circuit netlist, stimulus and simulation control<br />

commands. This file is SPICE compatible, the Eldo control language being a superset of the<br />

Berkeley SPICE syntax.<br />

Eldo® User's Manual, 15.3 35


Introduction to Eldo<br />

Eldo Input and Output Files<br />

.lib Optional file containing model or subcircuit definitions from library files for<br />

inclusion in the input circuit netlist.<br />

Output Files<br />

.chi SPICE compatible output log file containing ASCII data, including results and error<br />

messages.<br />

.wdb A binary output file for mixed-signal JWDB format files. This is always generated<br />

by default, and is viewed with the EZwave waveform viewer. By default, the .EXTRACT and<br />

.MEAS waveforms are also saved inside the EXT folder in the waveform database. Waveforms<br />

defined by .DEFWAVE commands combined with .PLOT are saved inside the appropriate<br />

analysis folder (for example TRAN) in the waveform database.<br />

.swd A saved windows file used by the EZwave waveform viewer. This file contains<br />

information on: waveforms associated with the graph window; window size, position, axis and<br />

background settings; complex waveform transformation settings; and waveform display and<br />

cursor settings.<br />

Tip<br />

See Eldo Command Reference for a complete reference of Eldo commands, options, and<br />

netlist syntax.<br />

Related Topics<br />

Getting Started With the Eldo Simulation Flow<br />

Eldo Netlist Setup<br />

Specifying Simulation Output<br />

Output Files Generated<br />

36<br />

Eldo® User's Manual, 15.3


Introduction to Eldo<br />

Eldo Documentation Access<br />

Eldo Documentation Access<br />

The Mentor Graphics Documentation System included with your software consists of a search<br />

and navigational interface called InfoHub , and documents in PDF and HTML format.<br />

You access the InfoHub documentation system using any of the following methods:<br />

• Enter mgcdocs in a Linux or Windows shell window.<br />

• Choose Start > Mentor Graphics > AMS_ > documentation in Windows.<br />

The PDF documentation is supplied with a PDF bookcase and Adobe PDF index. These are<br />

convenient if you only want to view the documentation in PDF format.<br />

• To view the AMS bookcase, open the following file in a PDF reader:<br />

$MGC_AMS_HOME/docs/pdfdocs/_bk_ams.pdf<br />

• The Adobe PDF index is supplied to enable fast searching of the AMS PDF<br />

documentation. To search the AMS PDF index using Adobe Reader, load the index from<br />

a command line as follows:<br />

acroread $MGC_AMS_HOME/docs/pdfdocs/ams_doc_index.pdx<br />

The preceding command line assumes acroread is in your $PATH. The Acrobat Reader<br />

Search dialog box opens with the index loaded and you can initiate your searches from<br />

there.<br />

Eldo® User's Manual, 15.3 37


Introduction to Eldo<br />

Command Line Help<br />

Command Line Help<br />

Eldo PDF documentation is available from the command line, accessed using the -help<br />

command line argument.<br />

Syntax<br />

<strong>eldo</strong> -help [<strong>user</strong>|ref]<br />

Parameters<br />

• <strong>user</strong><br />

Opens the Eldo User’s Manual as a PDF file.<br />

• ref<br />

Opens the Eldo Reference Manual as a PDF file.<br />

Entering <strong>eldo</strong> -help without any option displays the list of available topics. You can specify<br />

this argument without the cir_filename which is usually mandatory.<br />

Related Topics<br />

Invoking Eldo<br />

Related Documentation<br />

Other documents and manuals that are referenced in this manual, and that you may need to<br />

reference are:<br />

• Eldo Command Reference for a complete reference of Eldo commands, options, and<br />

netlist syntax.<br />

• Eldo Monte Carlo Quick Start manual for an overview of Monte Carlo analysis in Eldo.<br />

• Eldo Device Equations Manual for a complete set of Eldo model equations.<br />

• Eldo RF User’s Manual describes the extensions for RF simulation.<br />

• Eldo RF Tutorials for a number of practical RF circuit simulation examples and<br />

tutorials.<br />

• Eldo UDM/GUDM User’s Manual describes the User Defined Model (UDM) and<br />

Generalized User Defined Model (GUDM) interface.<br />

• Eldo UDRM User’s Manual describes aging and reliability simulation.<br />

• Eldo Verilog-A User’s Manual describes simulating with Verilog-A.<br />

• Eldo cou Library User’s Manual describes the functional description for COU format<br />

reading and writing.<br />

• EZwave User’s and Reference Manual describes the EZwave waveform viewer.<br />

38<br />

Eldo® User's Manual, 15.3


Introduction to Eldo<br />

Documentation Syntax Conventions<br />

• AMS Results Browser User’s Manual describes the ASCII output file viewer.<br />

• Questa ADMS User’s Manual describes the mixed-signal simulation environment.<br />

• Questa ADMS Command Reference describes the mixed-signal simulation commands.<br />

• ADiT User’s Manual describes the Fast-SPICE simulator.<br />

Related Topics<br />

Documentation Syntax Conventions<br />

Documentation Syntax Conventions<br />

The conventions described are used in combination with each other to describe the way you<br />

must specify the syntax.<br />

Table 1-1 lists the documentation syntax conventions used throughout the Eldo User’s Manual<br />

both in the syntax and in the syntax descriptions.<br />

Table 1-1. Documentation Syntax Conventions<br />

USER INPUT Eldo netlist content is shown in courier non-bold typeface. Eldo is case<br />

insensitive by default.<br />

KEYWORD<br />

S<br />

Eldo keywords are shown in courier bold typeface. Eldo is case insensitive<br />

by default.<br />

Example: NONOISE is an Eldo keyword.<br />

[ ] Brackets (square) indicate that a parameter is optional. Optional parameter<br />

declarations may also be nested.<br />

Example: [[DC] DCVAL] shows that the value parameter DCVAL is optional<br />

with the possibility of specifying another optional keyword parameter DC.<br />

{ } Braces (curly brackets) indicate multiple occurrences of a parameter.<br />

Example: NN {NN} shows that the parameter NN may be specified more than<br />

once. The parameter NN could be a node name for example.<br />

{ } Certain syntax, for example expressions, have to be enclosed in braces (curly<br />

brackets). In these cases, the braces are shown in bold to distinguish them<br />

from the braces used above to indicate multiple occurrences. They are part of<br />

the syntax.<br />

Example: VALUE={2U*V(3, 4)*I(V5)} shows that VALUE is calculated by<br />

the expression in braces.<br />

Eldo® User's Manual, 15.3 39


Introduction to Eldo<br />

Documentation Syntax Conventions<br />

( ) Certain syntax, for example pairs of values or functions, must be specified<br />

inside parentheses, often with a comma to separate values from one another.<br />

They are shown in BOLD to avoid confusion with other parentheses. They are<br />

part of the syntax.<br />

Example: PULSE (V0 V1 [TD [TR [TF [PW [PER]]]]]) shows the parameter<br />

specifications for a pulse function with BOLD parentheses ( ) to indicate that<br />

all the parameters must be enclosed in parentheses.<br />

, A comma separates pairs of values. It is shown in bold to indicate that it is<br />

actually part of the syntax which must be specified.<br />

Example: I(Vxx[, Vyy]) shows the syntax for obtaining the current difference<br />

between the voltage sources Vxx and Vyy within the .PRINT command.<br />

. Indicates the start of an Eldo command. All Eldo commands must begin with<br />

a dot since it is part of the command syntax. The dot is shown in bold as well<br />

as the command because it is considered part of the command keyword.<br />

Example: .MODEL MNAME TYPE [PAR=VAL] shows the syntax for a<br />

model declaration.<br />

. An unbold dot indicates nodes or subcircuits within other subcircuits.<br />

Example: .plot v(x2.x1.1) shows the plotting of node 1 which is inside<br />

subcircuit x1 which is inside subcircuit x2.<br />

< > Angle brackets sometimes indicate items which are not part of the syntax, but<br />

which are descriptions, and so on.<br />

Example:<br />

......The angle brackets prevent the name<br />

CIRCUIT_COMPONENTS from being confused with the Eldo syntax.<br />

here simply means that between the dots, ...,<br />

may be a number of different circuit components.<br />

| The logical OR symbol indicates that one of the parameters must be chosen.<br />

Example: R|C|I|V shows that either R, C, I or V must be chosen.<br />

Example<br />

Shows the syntax for a subcircuit definition:<br />

.SUBCKT NAME NN {NN} [(ANALOG)] [PARAM: PAR=VAL {PAR=VAL}]<br />

...<br />

<br />

...<br />

.ENDS [NAME]<br />

.SUBCKT LIB FNAME SNAME [LIBTYPE]<br />

Related Topics<br />

Introduction to Eldo<br />

Eldo Command Reference<br />

Table 1-1. Documentation Syntax Conventions (cont.)<br />

40<br />

Eldo® User's Manual, 15.3


Chapter 2<br />

Running Eldo<br />

This chapter describes how to invoke Eldo and run simulations.<br />

Invoking Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

Running Eldo in 32-bit and 64-bit Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Multi-Threading Eldo Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Fast Launch Script for Small Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

Simulation Connection Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

Eldo Initialization File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

Location Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

Location Map Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

Performance Bottleneck Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

Statistics File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

Statistics File Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

Running Eldo Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

Additional Tools and Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

Invoking Eldo<br />

To invoke Eldo and run a simulation from the command line use the <strong>eldo</strong> command:<br />

<strong>eldo</strong> cir_filename.cir [arguments]<br />

Where cir_filename is the name of the netlist control file (.cir) to be simulated. cir_filename is<br />

mandatory. All other command line arguments are optional.<br />

All setups described in this chapter are optional. You are encouraged to run your initial Eldo<br />

simulations using the default settings before applying alternatives.<br />

Tip<br />

For a full list of arguments see “Eldo Arguments” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 41


Running Eldo<br />

Running Eldo in 32-bit and 64-bit Modes<br />

Running Eldo in 32-bit and 64-bit Modes<br />

Eldo is available as 32-bit and 64-bit versions for Linux platforms. The 64-bit version enables<br />

simulation of circuits which would require more than 2GB of memory, and which would<br />

therefore not work on 32-bit machines. 64-bit mode is the default.<br />

32-bit and 64-bit AMS software installed<br />

If you have both 32-bit and 64-bit AMS software installed, by default Eldo and Eldo RF are<br />

launched in 32-bit mode on 32-bit platforms and 64-bit mode on 64-bit platforms.<br />

There are two ways to run 32-bit mode on 64-bit platforms:<br />

• Specify the -32b command line argument; this overrides the setting of environment<br />

variable $AMS_VCO_MODE.<br />

• Set the environment variable AMS_VCO_MODE to the value 32, for example:<br />

setenv AMS_VCO_MODE 32<br />

To return to 64-bit mode: unset AMS_VCO_MODE or set it to 64; or specify the -64b<br />

command line argument; this overrides the setting of environment variable<br />

$AMS_VCO_MODE.<br />

64-bit AMS software only installed<br />

If you only have 64-bit AMS software installed, by default Eldo and Eldo RF are launched in<br />

64-bit mode on a 64-bit platform. If you attempt to switch to 32-bit mode, an error will be<br />

generated.<br />

32-bit AMS software only installed<br />

If you only have 32-bit AMS software installed, you can only run in 32-bit mode. If you attempt<br />

to switch to 64-bit mode, an error will be generated.<br />

Tip<br />

See the “-32b” and “-64b” command line arguments in the Eldo Reference Manual.<br />

Related Topics<br />

Invoking Eldo<br />

Multi-Threading Eldo Simulations<br />

Eldo Initialization File<br />

Multi-Threading Eldo Simulations<br />

If you are using a multi-processor machine, you can instruct the Eldo simulator to share<br />

computer resources to speed up simulation. This is known as multi-threading, and can be<br />

42<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Multi-Threading Eldo Simulations<br />

activated for DC, transient, RF and AC simulations. Eldo makes use of all the possible CPUs on<br />

the machine, sharing the work between the different CPUs to speed up simulation.<br />

Multi-threading is activated with the Eldo command line argument:<br />

<strong>eldo</strong> -use_proc n | HALF | MAX k | ALL | HYPER | LSF<br />

You can specify the number of processors n, half the processors, a maximum of k processors, all<br />

processors except Hyper-Threading, all processors including Hyper-Threading processors, or<br />

align the number of processors with the resource provided by an LSF external dispatcher.<br />

(Hyper-Threading is not recommended because in many cases it can slow down simulation, see<br />

“Notes” on page 45.)<br />

Tip<br />

See the “-use_proc” command line argument in the Eldo Reference Manual.<br />

The number of CPUs being used is displayed at the beginning of the simulation (TRAN) and is<br />

recorded in the statistics, generated at the end of simulation.<br />

You can specify the -cntthread argument to provide more details about the computer<br />

architecture, for example:<br />

• Bi-Xeon dual core with no Hyper-Threading<br />

Number of physical processors : 2<br />

+ Hyper-Threading Technology : disabled<br />

+ Number of cpu cores : 4<br />

+ Number of logical processors : 4<br />

• Bi-Opteron<br />

Number of physical processors : 2<br />

+ Hyper-Threading Technology : N/A<br />

+ Number of cpu cores : N/A<br />

+ Number of logical processors : N/A<br />

• Bi-Xeon (PIV) with Hyper-Threading<br />

Number of physical processors : 2<br />

+ Hyper-Threading Technology : enabled<br />

+ Number of cpu cores : 0<br />

+ Number of logical processors : 4<br />

Tip<br />

See the “-cntthread” command line argument in the Eldo Reference Manual.<br />

Eldo will make use of the multi-thread capability of the machine it is running on only if all the<br />

following conditions are met:<br />

• The -use_proc argument has been set.<br />

Eldo® User's Manual, 15.3 43


Running Eldo<br />

Multi-Threading Eldo Simulations<br />

• The machine is a multi-CPU machine.<br />

• The circuit contains devices which are thread-safe.<br />

Eldo automatically computes if launching multi-threading is advantageous regarding the overall<br />

device evaluation time. If it takes more time to wake-up the threads than computing the device<br />

evaluations in one thread, then only one thread will be used.<br />

If the circuit does not contain any thread-safe devices, multi-threading is ignored. Eldo provides<br />

a notification when it cannot apply thread optimization on models, handles them in a single<br />

processor. Thread-safe and non-thread-safe models can be used in the same circuit. See “Notes”<br />

on page 45 for further information on thread-safe devices.<br />

Eldo automatically adjusts the number of threads, and so the number of CPUs used, to minimize<br />

the computation time. Eldo detects when other processes compete for resources, and decreases<br />

the number of CPUs used if it will reduce computation time. Eldo also attempts to detect when<br />

busy resources become available in order to use them. Eldo will never try to use more resources<br />

than what has been specified with the -use_proc argument.<br />

Note<br />

Because this algorithm is always active, Eldo might use less threads than specified even on<br />

a computer with no other active processes. The main purpose of the algorithm is to select the<br />

number of threads that leads to the best performance; sometimes fewer is better.<br />

Example Transcripts<br />

When multi-threading is activated, the CPU time reported by Eldo is the sum of the CPU time<br />

of all threads. This time will be much higher than the global elapsed time reported by Eldo. The<br />

below example is an extract of a transcript showing this:<br />

# ----- Summary run statistics ----<br />

# Global Threads cpu Time 72h 27mn 31s 620ms<br />

# Global Elapsed Time 47h 36mn 21s<br />

Eldo prints information about the machine used for simulation including: clock frequency, the<br />

number of cores, the number of threads used, and so on. Example output:<br />

***** SYSTEM INFORMATION ...<br />

44<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Multi-Threading Eldo Simulations<br />

*** User : guest@machine<br />

*** OS : Red Hat Enterprise Linux Client release 5.5 [VCO = ixl]<br />

*** CPU :<br />

Intel(R) Xeon(R) CPU<br />

5130 @ 2.00GHz<br />

Number of physical processors : 2<br />

Hyper-Threading Technology : disabled<br />

Number of cpu cores : 4<br />

Number of logical processors : 4<br />

*** Freq : 1995.089 MHz<br />

*** Cache : 4096 KB<br />

*** MEM : 4148040 kB<br />

*** Date : Wed Oct 6 18:31:56 2010<br />

When multi-threading is activated, the average number of threads used for the overall<br />

simulation is printed at the end of the run.<br />

Notes<br />

• Thread-safe devices can be categorized as follows:<br />

o<br />

o<br />

o<br />

o<br />

o<br />

All MOSFET models are thread-safe except HVMOS and Mextram.<br />

Verilog-A models are thread-safe when using the default Verilog-A flow.<br />

Resistors, capacitors, diodes, and BJT models are thread-safe.<br />

Sources and bias dependent objects are thread-safe.<br />

User-defined models (UDM) are not thread-safe. If the model card leads to the<br />

creation of access resistors, and if option NONWRMOS is specified, then the model<br />

is not considered thread-safe.<br />

• Using multi-threading is non-deterministic. Rounding can quickly accumulate because<br />

floating-point computations suffer from rounding effects, and circuit simulators have to<br />

perform millions of operations. With current hardware there is no way to guarantee<br />

100% identical results when the arithmetic sequence changes. Multi-threading is one<br />

case where the sequence of operations is not the same, and can therefore potentially<br />

produce different results due to rounding.<br />

• Multi-threading and DC computation<br />

DC computation can be very sensitive to numerical noise (because of the algorithm<br />

used), and as multi-threading cannot preserve the order of operations, it is possible to<br />

obtain different DC computation times and even different DC solutions found from one<br />

run to another. This can occur if the circuit has multiple valid DC points, and is the same<br />

whether using multi-threading or not.<br />

• Multi-threading and AC analysis<br />

The part of the AC analysis related to matrix solving will be performed using multithreading.<br />

The number of threads used is based on the number of operations that the<br />

matrix solving requires and is dynamically computed. The number of threads cannot be<br />

Eldo® User's Manual, 15.3 45


Running Eldo<br />

Fast Launch Script for Small Simulations<br />

greater than the -use_proc specification. The number of threads is automatically<br />

adjusted at runtime to obtain the best computation time.<br />

• Linux<br />

When an application is multi-threaded on Linux, the “top” or “ps” operating system<br />

commands may return misleading information, depending on the version of the library<br />

libpthread.so provided with the Linux kernel. Each thread may appear as a separate<br />

process, each of them consuming the same memory resources. You should consider that<br />

the application only uses the resources indicated for one “process.” Do not consider the<br />

addition of all indicated processes, which in reality correspond to the threads.<br />

• Hyper-Threading<br />

Selecting Hyper-Threading is not recommended because in many cases it can slow<br />

down simulation. Hyper-Threading enables two logical CPU cores to be created for each<br />

physical CPU core. However, it does not duplicate the main execution resources.<br />

Simulation is a double precision computation intensive job and as there is basically one<br />

processing unit per CPU core, selecting Hyper-Threading and putting a compute thread<br />

on these logical units will not speed up the simulation. Simulation makes considerable<br />

usage of the cache as well as the memory bandwidth, which becomes more stressed<br />

using threads with Hyper-Threading, but on the other hand due to no additional floating<br />

point units there will be no significant increase of floating operations using these extra<br />

threads.<br />

Related Topics<br />

Tip<br />

See also “Eldo Arguments” in the Eldo Reference Manual.<br />

Invoking Eldo<br />

Eldo Initialization File<br />

Running Multiple Runs<br />

Fast Launch Script for Small Simulations<br />

By default, when simulating very small designs, the time taken by the common AMS script to<br />

check that the environment is compatible can be longer than the simulation itself. To reduce the<br />

time taken to launch Eldo for small simulations, you can use a utility script to create a<br />

replacement Eldo fast launch script, valid for the local machine.<br />

To create a new local fast launch version of Eldo, enter the command:<br />

ams_localize <strong>eldo</strong><br />

46<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Simulation Connection Manager<br />

This command checks the environment is compatible with the AMS tools, and if successful,<br />

creates a script named <strong>eldo</strong>.local. You can then run your simulations with <strong>eldo</strong>.local instead of<br />

the usual <strong>eldo</strong> command, with all the regular command-line arguments supported:<br />

<strong>eldo</strong>.local cir_filename.cir [arguments]<br />

This generated <strong>eldo</strong>.local script contains the minimum set of environment variables necessary<br />

to run Eldo and the call to the executable. The script is machine dependent, which means that if<br />

you want to submit multiple jobs on a computer farm you will have to generate the localized<br />

script on each node of the grid and save it locally on the node.<br />

Tip<br />

See also “Eldo Arguments” in the Eldo Reference Manual.<br />

Related Topics<br />

Invoking Eldo<br />

Simulation Connection Manager<br />

You can dynamically add .PLOT or .PROBE commands while a batch simulation is running.<br />

This is useful if a simulation is running for days and you realize when analyzing the marching<br />

waveforms that you need additional waveforms to be plotted. You can send these new .PLOT or<br />

.PROBE commands to simulations running on remote machines or submitted via dispatchers.<br />

Procedure<br />

1. To begin an interactive exchange to dynamically add .PLOT or .PROBE commands<br />

while an Eldo simulation is running, run the simulation connection manager by entering<br />

<strong>eldo</strong> -connect on the local machine.<br />

<strong>eldo</strong> -connect<br />

Eldo will browse the directory $HOME/.<strong>eldo</strong>/ in search of running simulations. The<br />

active simulations are listed with their command line, for example:<br />

Eldo® User's Manual, 15.3 47


Running Eldo<br />

Simulation Connection Manager<br />

+-----------------------------------------------------------------------------------<br />

-------<br />

| Id | Connection | Host | Simulator | Registration date | Input arguments<br />

+-----------------------------------------------------------------------------------<br />

-------<br />

| 1 | | shamba | <strong>eldo</strong> | 2011-03-09 17:17:35 | test -outpath work<br />

| 2 | | shamba | <strong>eldo</strong> | 2011-03-09 17:17:37 | test<br />

| 3 | | shamba | <strong>eldo</strong> | 2011-03-09 17:18:19 | test<br />

| 4 | | shamba | <strong>eldo</strong> | 2011-03-09 17:24:06 | test -outpath work<br />

| 5 | | shamba | <strong>eldo</strong> | 2011-03-09 17:27:05 | test -outpath work<br />

| 6 | | shamba | <strong>eldo</strong> | 2011-03-09 17:42:30 | test -outpath work<br />

| | | | | |<br />

| | | | | |<br />

| | | | | |<br />

| | | | | |<br />

| | | | | |<br />

+------------------------------------------------------------ Page 1/1 (Home/End to<br />

scroll)<br />

command><br />

+-----------------------------------------------------------------------------------<br />

-------<br />

> help<br />

This software provides the list of simulations submitted by the current <strong>user</strong>.<br />

It allows to remotely interact with them.<br />

Commands supported by this program:<br />

connect, disconnect, kill, quit, load, help, clear<br />

Type "help " for a detailed description of a command.<br />

Commands supported by remote simulators:<br />

.plot, .probe<br />

Please refer to the simulator reference manual to have a complete description of<br />

these commands.<br />

+- Copyright 2011 Mentor Graphics Corporation. All rights reserved.<br />

Page 1/1 (PgUp/PgDown to scroll) --<br />

2. A prompt is displayed enabling you to interact with the remote simulations with the<br />

following commands:<br />

Table 2-1. Simulation Connection Manager Arguments<br />

Argument<br />

Description<br />

help<br />

Display the help.<br />

connect <br />

Open a communication channel with remote<br />

simulation . The simulation is suspended<br />

until the disconnect command is used or the<br />

simulation connection manager is closed.<br />

48<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Simulation Connection Manager<br />

Table 2-1. Simulation Connection Manager Arguments (cont.)<br />

Argument<br />

Description<br />

disconnect [ | all]<br />

kill [ | all]<br />

.plot / .probe<br />

load <br />

quit | exit<br />

clear<br />

3. You can select the remote simulation, connect to it and enter the required .PLOT or<br />

.PROBE commands with the usual Eldo syntax, for example:<br />

$ <strong>eldo</strong> -connect<br />

$ command> connect <br />

$ command> .plot tran V()<br />

$ command> exit<br />

Close the communication channel with remote<br />

simulation and resume the simulation. This<br />

command only applies to connections in active/<br />

opened state.<br />

If is not specified, the command is sent to<br />

the active simulation.<br />

If ALL is specified, the command is sent to all<br />

remote simulations with an open or active<br />

communication channel.<br />

Terminate the remote simulation causing the<br />

simulation to end prematurely. This command<br />

only applies to connections in active/opened state.<br />

If is not specified, the command is sent to<br />

the active simulator.<br />

If ALL is specified, the command is sent to all<br />

remote simulations with an open or active<br />

communication channel.<br />

Add a .PLOT or .PROBE command to the active<br />

simulation.<br />

Load the content of the specified file and send<br />

each command to the active simulation.<br />

Commands are filtered to send only those<br />

supported (.PLOT/.PROBE) by the simulator.<br />

Exit the simulation connection manager.<br />

Reset the output transcript.<br />

4. To disable remote access to a simulation specify -noconnect.<br />

Note<br />

The interactive exchange is only for outputs, not for inputs. It is not possible to force<br />

signals during simulation with -connect.<br />

Eldo® User's Manual, 15.3 49


Running Eldo<br />

Simulation Connection Manager<br />

Related Topics<br />

Tip<br />

See also “Eldo Arguments” in the Eldo Reference Manual.<br />

Dynamically Adding Voltage/Current Plots<br />

Invoking Eldo<br />

50<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Eldo Initialization File<br />

Eldo Initialization File<br />

Input for: Eldo system initialization<br />

The <strong>eldo</strong>.ini file is the default initialization file containing some configuration options always<br />

used for simulation. You can create an Eldo system initialization file to specify library paths and<br />

simulator settings for inclusion in the .cir netlist file.<br />

This Eldo initialization file is interpreted and loaded at the beginning of each simulation.<br />

“Loading <strong>eldo</strong>.ini” is displayed whenever a valid <strong>eldo</strong>.ini file is found.<br />

The search order is:<br />

• Path specified by the environment variable $ELDO_INI_FILE_PATH.<br />

• Current directory.<br />

• $HOME directory.<br />

Specifying the command line argument -noinit disables the loading of the <strong>eldo</strong>.ini file.<br />

Format<br />

• The beginning of each parameter block section is defined between brackets [].<br />

• There is no mandatory order of the parameter blocks.<br />

Parameters<br />

The <strong>eldo</strong>.ini initialization file is organized into the following blocks:<br />

• [env]<br />

Contains the definition of environment variables.<br />

• [argu]<br />

Contains command line arguments, interpreted before any Eldo command line arguments,<br />

Eldo command line arguments have higher priority.<br />

• [netlist]<br />

Contains netlist commands, interpreted as if they had been included in the netlist with a<br />

.INCLUDE command.<br />

• [include]<br />

Contains include files. Multiple configuration files listed in this section are included. Only<br />

one file per line is allowed. These files must use standard <strong>eldo</strong>.ini syntax and can themselves<br />

define other [include] sections. An error is displayed if a recursive inclusion is detected. At<br />

runtime, for each type of section, Eldo loads the corresponding sections from the files listed<br />

in the [include] block, and appends the content of the current section at the end.<br />

Examples<br />

A typical <strong>eldo</strong>.ini file may look like:<br />

Eldo® User's Manual, 15.3 51


Running Eldo<br />

Eldo Initialization File<br />

# This line is a comment<br />

[env]<br />

# There must be no blanks between variable name, equal sign<br />

# and variable valueOPTION_DIR=.<br />

MODEL_DIR=../models<br />

LIB_DIR=../libs<br />

[argu]<br />

-outpath $OPTION_DIR/results<br />

-gwl jwdb<br />

-compat<br />

[netlist]<br />

.option noascii notrc<br />

.include $OPTION_DIR/options.inc<br />

.option post probe<br />

An example with two levels of inclusion:<br />

• File name: $HOME/<strong>eldo</strong>.ini. File content:<br />

[argu]<br />

-use_proc all<br />

[include]<br />

$HOME/config/command.ini<br />

[netlist]<br />

.probe i<br />

• File name: $HOME/config/command.ini. File content:<br />

[netlist]<br />

.probe v<br />

[include]<br />

$HOME/config/option.ini<br />

• File name: $HOME/config/option.ini. File content:<br />

[netlist]<br />

.option tuning=vhigh<br />

The complete [netlist] section elaborated by the simulator is built from <strong>eldo</strong>.ini which includes<br />

command.ini which itself includes option.ini. As a consequence, the final SPICE section<br />

contains the lines from option.ini first, then the section from command.ini, and lastly from<br />

<strong>eldo</strong>.ini, as below:<br />

.option tuning=vhigh<br />

.probe v<br />

.probe i<br />

Tip<br />

See also “Eldo Arguments” and the “.INCLUDE ” command in the Eldo Reference Manual.<br />

Related Topics<br />

Invoking Eldo<br />

52<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Location Maps<br />

Location Maps<br />

Location maps are used to replace prefixes of physical pathnames with environment variables<br />

(soft pathnames). The location map defines a mapping between physical pathname prefixes and<br />

environment variables. Pyxis <strong>user</strong>s can benefit from this functionality to run Eldo directly on an<br />

Pyxis generated netlist.<br />

By default, Eldo searches for a location map file in the following locations, in order:<br />

• The filename specified by option USE_LOCATION_MAP in the .cir file, if not found<br />

Eldo displays a warning message.<br />

• The path stored in the environment variable $MGC_LOCATION_MAP.<br />

• The netlist directory (./mgc_location_map).<br />

• Your home directory (~/mgc_location_map).<br />

When option USE_LOCATION_MAP is specified, a warning message is displayed if Eldo<br />

does not find a location map file. When option USE_LOCATION_MAP is not specified, no<br />

warning message is displayed by Eldo.<br />

You can disable the load of the location map file by specifying the -ignore_location_map<br />

command line argument or specifying the option IGNORE_LOCATION_MAP in the netlist.<br />

Eldo® User's Manual, 15.3 53


Running Eldo<br />

Location Map Structure<br />

Location Map Structure<br />

Input for: Eldo location map settings<br />

The purpose of the location map file, in the Eldo context, is to be able to map a soft path with a<br />

hard path.<br />

Tip<br />

See also “Eldo Arguments” and the “.OPTION USE_LOCATION_MAP” and “.OPTION<br />

IGNORE_LOCATION_MAP” in the Eldo Reference Manual.<br />

Format<br />

The location map file structure is as follow:<br />

• The first line is a header. This header is not mandatory with Eldo, which always ignores<br />

the first line, but is necessary if the location map file has to be used inside Pyxis. In such<br />

a case, refer to the Pyxis Project Manager User’s Manual (available on SupportNet) to<br />

use the correct header.<br />

• The file is then composed of a set of soft and hard pathnames, comments, and<br />

INCLUDE pathname statements.<br />

Parameters<br />

• pathname<br />

A soft pathname always begins with a dollar sign ($).<br />

A hard pathname always begins with a slash (/).<br />

A comment always begins with a pound sign (#).<br />

You can specify one, several, or no hard pathnames for a soft pathname.<br />

When a soft pathname is defined multiple times in the location map file, only the first<br />

definition is used, others are ignored.<br />

For a given soft pathname, if Eldo is unable to access to the specified hard pathname, a<br />

warning message is generated (warning 939).<br />

If a given soft pathname already exists as an environment variable, Eldo always uses the<br />

value of the environment variable.<br />

When multiple hard pathnames are given for a soft pathname, only the first one is used by<br />

Eldo. That pathname must be visible from all computers that are going to use that location<br />

map file. Defining multiple hard pathnames for one soft pathname is only valid in the<br />

context of Pyxis because Pyxis can attempt, given a path, to find the mapped soft pathname.<br />

As mount points can be different, according to the computer used and the network structure,<br />

it might be necessary to specify all mount points of a given folder. Eldo only attempts to<br />

expand a soft pathname into a hard pathname to resolve a file name (in a .INCLUDE<br />

statement for example). This is why the first path has to be visible whatever computer is<br />

54<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Performance Bottleneck Diagnostics<br />

used on the network. More details are available in the Pyxis Project Manager User’s<br />

Manual.<br />

• INCLUDE <br />

The optional INCLUDE keyword enables the inclusion of the contents of another file by<br />

reference. The included files must not contain a header.<br />

Examples<br />

Here is an example mgc_location_map file, showing a soft pathname with no hard pathname, a<br />

soft pathname mapped with two hard pathnames, and an include line:<br />

MGC_LOCATION_MAP_2<br />

#Here is a soft pathname with no hard pathname.<br />

$REF_DIR<br />

#Here is another soft pathname mapped with two hard pathnames.<br />

$SOURCE_PROJECT<br />

/home/<strong>user</strong>/projxxx<br />

/mnt/remote_device/home/<strong>user</strong>/projxxx<br />

#Here is an include file.<br />

INCLUDE /usr2/home/maps/locmap2<br />

For the soft pathname, $REF_DIR, with no hard pathname, there must be an environment<br />

variable named REF_DIR; Eldo imports the hard pathname contained in that variable and maps<br />

REF_DIR with that imported hard pathname.<br />

Related Topics<br />

Invoking Eldo<br />

Performance Bottleneck Diagnostics<br />

A set of diagnostics are available to help you understand why a circuit does not behave as<br />

expected, or takes more time than expected to simulate.<br />

These diagnostics can be triggered with the -diagmode command line argument as follows:<br />

• -diagmode perf<br />

Enables a set of performance diagnostics (command line argument -devcpu and<br />

command .format_step_limiters) to help you understand why a circuit does not behave<br />

as expected, or takes more time than expected to simulate. Equivalent to -debug.<br />

• -diagmode conv<br />

Enables the analysis of non-convergence issues. When Eldo stops because of a nonconvergence<br />

a file is generated named .noconv, used as an input for the<br />

convergence analysis. Supported by Eldo Classic only.<br />

• -diagmode tstep<br />

Eldo® User's Manual, 15.3 55


Running Eldo<br />

Performance Bottleneck Diagnostics<br />

Enables the analysis of time step management. Use this if Eldo performs too many<br />

average Newton iterations or if it rejects too many time steps: if the ratio of accepted<br />

time steps compared to rejected time steps is lower than six then specify this argument to<br />

try to understand what is limiting the simulator.<br />

Related Topics<br />

Tip<br />

See also “Running Eldo” in the Eldo Reference Manual.<br />

Diagnosing Convergence and Performance Issues<br />

Statistics File<br />

Running Eldo<br />

56<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Statistics File<br />

Statistics File<br />

The statistics output file from Eldo can be useful to understand how a design behaves and to<br />

monitor node/device activity. It can help to monitor the simulation performance, determine<br />

circuit size impact on simulation, debug simulation slowdown, and determine which nodes and<br />

blocks should be treated for minimizing rejections.<br />

Statistics File Generation<br />

The statistics file can be generated by launching Eldo with the -stat argument.<br />

-stat [-statfile filename [-statfsize val]]<br />

-statfile filename [-statfsize val]<br />

By default, the output file is named:<br />

__.stat<br />

where cir_filename is the name of the .cir netlist file to be simulated. For example, if you<br />

execute the following Eldo command on March 24 2011 at 9.23am, a statistics file named<br />

extract_overshoot_opamp_20110324_092325.stat will be generated:<br />

<strong>eldo</strong> extract_overshoot_opamp.cir -stat<br />

To specify a different filename, use the -statfile argument, for example, the following will<br />

generate a statistics file named extract_overshoot_opamp.stat:<br />

<strong>eldo</strong> extract_overshoot_opamp.cir -stat -statfile<br />

extract_overshoot_opamp.stat<br />

When -statfile is specified, -stat is optional.<br />

The output file is generated in the directory where Eldo was launched. Specify the -outpath<br />

argument to generate the statistics file in a different location.<br />

Note<br />

If a .ALTER command is specified in the netlist and a statistics file is requested, a single<br />

statistics file is created for all the alter runs.<br />

Statistics File Maximum Size<br />

By default, a single statistics file is set to a maximum size of 50 MB. You can specify a different<br />

maximum value using the -statfsize command line argument. If the maximum size is reached, a<br />

new statistics file is created and a message appears in the transcript. The names of these files are<br />

of the format:<br />

__.<br />

Eldo® User's Manual, 15.3 57


Running Eldo<br />

Running Eldo Interactive Mode<br />

where = 1, 2, 3, and so on. When the -statfile argument is specified, the date and time are<br />

not appended to the output filename.<br />

Example with the extract_overshoot_opamp.cir netlist delivered in the examples tree:<br />

<strong>eldo</strong> -stat -statfile extract_overshoot_opamp.stat -statfsize 1<br />

extract_overshoot_opamp.cir<br />

Seven files (extract_overshoot_opamp.stat and extract_overshoot_opamp.stat.) will be<br />

generated, where n is 1 through 6, each with a maximum size of 1kB.<br />

Statistics File Options<br />

To change the number of items to be listed in each of the Simulation sections of the statistics file<br />

use .OPTION SPNNB=val. The default is 10. For example, .OPTION SPNNB=12 means every<br />

list under “Simulation: Rejection node list” is limited to the “top 12” items.<br />

To control the percentage threshold of the contributions from subcircuit instances, use<br />

.OPTION SPNRAT=val. The default is 0.7 (70%), and the range is between 0 and 1.<br />

Tip<br />

See also “Eldo Arguments” in the Eldo Reference Manual.<br />

Related Topics<br />

Using the Statistics File<br />

Invoking Eldo<br />

Running Eldo Interactive Mode<br />

Eldo interactive mode is a way of invoking Eldo and executing commands interactively instead<br />

of providing the commands in a netlist. Some other AMS tools, such as ICanalyst, transparently<br />

make use of Eldo in interactive mode. Eldo interactive mode is not supported by Questa ADMS.<br />

Procedure<br />

1. To invoke Eldo interactive mode, type:<br />

<strong>eldo</strong> cir_filename -inter<br />

where cir_filename is the name of the .cir netlist file to be simulated. Default extension<br />

is .cir.<br />

When working in Eldo interactive mode, a prompt is displayed in your terminal<br />

window:<br />

<strong>eldo</strong>><br />

2. When working in Eldo interactive mode, type your command after the <strong>eldo</strong>> prompt.<br />

For continuation lines, type the backslash character (\) at the end of a line.<br />

58<br />

Eldo® User's Manual, 15.3


Running Eldo<br />

Additional Tools and Utilities<br />

3. To view help information, at the <strong>eldo</strong>> prompt type:<br />

help<br />

to see the list of available commands.<br />

help <br />

for more information about a particular command.<br />

help all<br />

to obtain the complete help listing.<br />

Related Topics<br />

Tip<br />

See also “Eldo Arguments” in the Eldo Reference Manual.<br />

Eldo Interactive Mode<br />

Additional Tools and Utilities<br />

Encryption tools and conversion utilities are available with Eldo.<br />

• “Encrypting Libraries” on page 139<br />

• “Eldo Conversion Utilities” on page 1469<br />

Eldo® User's Manual, 15.3 59


Running Eldo<br />

Additional Tools and Utilities<br />

60<br />

Eldo® User's Manual, 15.3


Chapter 3<br />

Eldo Premier<br />

This chapter details the high performance Eldo simulation kernel dedicated to transient<br />

simulation: Eldo Premier.<br />

Overview of Eldo Premier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

Enabling Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

Automatic Activation of Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

Using Eldo Classic DC Solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

Handling Matrix-Like Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

Solver Generation Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

Eldo Premier Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

Temporary Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

Generic Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

Forcing Elaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

Eldo Premier Selectable Accuracy Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

Netlist Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

Supported Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

Supported Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

Supported Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

Other Supported Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

Miscellaneous Limitations of Devices and Features in Eldo Premier . . . . . . . . . . . . . . . . 93<br />

Overview of Eldo Premier<br />

The Eldo Premier simulator provides an increase in performance and capacity without<br />

sacrificing accuracy compared to Eldo Classic. It accelerates the simulation of large circuits in<br />

either pre-layout or post-layout phases by using sophisticated resolution techniques which do<br />

not sacrifice accuracy compared to the “golden SPICE” (Eldo Classic) results. Eldo Premier<br />

supports much larger circuits, up to ten million devices, compared to Eldo Classic. The easy use<br />

model of Eldo Classic is preserved.<br />

The Eldo Premier simulator accelerates both single-thread simulations and multi-thread<br />

simulation. The acceleration of single-thread simulation is provided by new algebraic<br />

techniques for the resolution of the system of non-linear differential equations that analog<br />

simulators must solve. The acceleration of multi-threaded simulations is a consequence of the<br />

natively parallel code of the Eldo Premier simulation kernel and its dedicated data structures.<br />

These two acceleration factors naturally combine to offer a very significant speedup over Eldo<br />

Classic. The most significant speedups are observed for large circuits (typically at least 10,000<br />

devices) that exhibit some degree of hierarchical regularity.<br />

Eldo® User's Manual, 15.3 61


Eldo Premier<br />

Overview of Eldo Premier<br />

Boosting performance over standard analog simulation can help in two ways. Critically<br />

important simulations that require extremely long simulations times, sometimes measured in<br />

days or weeks, can be reduced very significantly.<br />

Together with the performance improvements for verification tasks, the additional simulation<br />

power can be used to run many more corners or operating conditions, and thus verify a design or<br />

analog IP block much more thoroughly. For example, it may become practical to verify an<br />

entire temperature range or power-supply range instead of just the nominal point of the<br />

specifications. This can dramatically improve the confidence in the design or IP before tape-out,<br />

with the goal of eliminating silicon re-spins, and improving the final manufacturing yield.<br />

Some of the features and benefits of the Eldo Premier simulator include:<br />

• Raw performance improvement over Eldo Classic, on both single-core and multi-core<br />

machines.<br />

• Same golden accuracy as Eldo Classic.<br />

• Much higher capacity (factor of 10) than Eldo Classic.<br />

• Much better scalability of the multi-thread performance.<br />

• Same device models and libraries as Eldo Classic.<br />

• Same use model as Eldo Classic.<br />

• Supports .EXTRACT, .MEAS, .STEP, .ALTER, and .CHECKSOA commands of Eldo<br />

Classic.<br />

• Supports RCC parasitic network reduction.<br />

• Integrated in Questa ADMS for mixed-signal verification including VHDL/Verilog and<br />

VHDL-AMS/Verilog-AMS descriptions, see “vasim -premier” in the Questa ADMS<br />

Reference Manual.<br />

Note<br />

Eldo Premier is only supported on Linux platforms. It is not supported on Windows<br />

platforms.<br />

Target Applications<br />

The Eldo Premier simulator targets applications that require CPU-intensive DC and transient<br />

simulations, such as PLLs and DLLs, frequency synthesizers, delta-sigma converters, ADC/<br />

DAC audio and video converters, automotive circuits, DC-DC converters, regulators, power<br />

management circuits, memory critical paths analysis, and TFT/OLED panels.<br />

The scope of applicability is the same as Eldo Classic because the algorithms do not presuppose<br />

any particular structure within the simulated circuit. The much higher capacity of Eldo<br />

Premier opens new possibilities in the field of memory (SRAM/DRAM) and TFT/OLED panel<br />

62<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Overview of Eldo Premier<br />

simulation—see “Handling Matrix-Like Circuits” on page 67—which often challenge the raw<br />

capacity of traditional analog simulators.<br />

Eldo Premier Example<br />

An example netlist, named ram8k.cir, is provided in:<br />

$MGC_AMS_HOME/examples/<strong>eldo</strong>p/ram8k/<br />

where $MGC_AMS_HOME is the directory where the AMS software resides.<br />

Run the example with the command:<br />

<strong>eldo</strong> ram8k.cir -premier<br />

You should see a speed-up of approximately 3× compared with Eldo Classic (comment out the<br />

line .OPTION PREMIER).<br />

Related Topics<br />

Eldo Premier Output<br />

Netlist Support<br />

Eldo® User's Manual, 15.3 63


Eldo Premier<br />

Enabling Eldo Premier<br />

Enabling Eldo Premier<br />

To activate Eldo Premier, use either of the following methods:<br />

• Specify .OPTION PREMIER inside the netlist.<br />

• Use the -premier command line argument when invoking Eldo.<br />

Eldo Premier supports most of the same SPICE netlists and commands as Eldo Classic. Eldo<br />

Premier is available for DC and transient simulations. When activated, the entire circuit is<br />

simulated by the Eldo Premier kernel; nothing is solved by the Eldo Classic or ADiT kernels.<br />

Some simulations (AC and noise for example) cause Eldo Classic to be activated (see<br />

“Supported Commands” on page 74).<br />

The command line flag, -use_proc, activates multi-threaded simulation on multi-core machines.<br />

You can request a specific number of cores, half of those available, or all of them. The number<br />

of cores is limited to 16.<br />

The Eldo Premier simulator runs DC and transient analysis, including the save and restart<br />

capabilities (frequency based analyses perform well in Eldo Classic).<br />

Automatic Activation of Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

Using Eldo Classic DC Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

Handling Matrix-Like Circuits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

Solver Generation Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

Automatic Activation of Eldo Premier<br />

You can set Eldo (or Questa ADMS) to automatically choose the most appropriate and efficient<br />

simulation kernel between Eldo Classic and Eldo Premier, based on the characteristics of the<br />

netlist (number of nodes, number of devices, connectivity, commands).<br />

To enable automatic Eldo Premier activation, use either of the following methods:<br />

• Specify .OPTION AUTO[_SELECT] inside the netlist.<br />

• Specify the -auto[_select] command line argument when invoking Eldo.<br />

The weight of the following criteria is evaluated to decide which kernel to select automatically:<br />

• Number of nodes<br />

The more nodes the netlist contains, the more likely it is that Eldo Premier is selected. If<br />

the netlist contains more than 1 million nodes, then Eldo Premier is always selected; if<br />

the netlist contains less than 500 nodes, then Eldo Classic is always selected.<br />

• Number of devices<br />

64<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Automatic Activation of Eldo Premier<br />

The more devices the netlist contains, the more likely it is that Eldo Premier is selected.<br />

If the netlist contains more than 3 million devices, then Eldo Premier is always selected;<br />

if the netlist contains less than 1500 devices, then Eldo Classic is always selected.<br />

• Highly connected netlist<br />

For a given number of nodes, the more devices the netlist contains, the more likely it is<br />

that Eldo Premier is selected.<br />

• High proportion of transistors<br />

If the netlist contains a high proportion of transistors then Eldo Premier is more likely to<br />

be selected.<br />

• Well-balanced hierarchy<br />

Eldo Premier is more likely to be selected if the netlist is hierarchical than if the netlist is<br />

flat.<br />

• Transient analysis (.TRAN) in the netlist<br />

If the netlist does not contain a .TRAN command, then Eldo Premier is less likely to be<br />

selected.<br />

• .OPTION PREMIER_MODE in the netlist<br />

If the netlist contains option PREMIER_MODE with a value greater than or equal to 1,<br />

then Eldo Premier is more likely to be selected.<br />

Tip<br />

See also “Eldo Premier Options” in the Eldo Reference Manual.<br />

Limitations<br />

• Eldo is able to detect when the netlist contains commands or devices not supported by<br />

Eldo Premier and in such a case will never activate Eldo Premier, except for the<br />

following limitation:<br />

o<br />

Eldo Premier does not support controlled devices controlled by anything other than<br />

net voltage, voltage source current, or current through resistance. Eldo is not able to<br />

detect this case and may activate Eldo Premier although this will cause Eldo Premier<br />

to stop with an error. The workaround is to run the netlist with .OPTION CLASSIC<br />

inside the netlist or use the -classic command line argument when invoking Eldo.<br />

• Eldo does not check if the extra license needed to run Eldo Premier is available before<br />

activating Eldo Premier. If the license is not available once Eldo Premier has been<br />

activated, then Eldo Premier will stop with an error (except if the -queue flag is<br />

specified). If you do not have enough licenses to run Eldo Premier, then do not attempt<br />

to use .OPTION AUTO or the -auto command line argument.<br />

Eldo® User's Manual, 15.3 65


Eldo Premier<br />

Using Eldo Classic DC Solution<br />

Related Topics<br />

Using Eldo Classic DC Solution<br />

Handling Matrix-Like Circuits<br />

Solver Generation Methods<br />

Eldo Premier Selectable Accuracy Option<br />

Netlist Support<br />

Using Eldo Classic DC Solution<br />

To help speed up the DC solution, specify .OPTION PREMIER_FORCE_ELDO_DC. An Eldo<br />

Classic DC solution is computed and saved into a .iic file. Eldo Premier is then activated and<br />

uses this DC solution to run the simulation.<br />

This option can be specified by default by placing it inside the <strong>eldo</strong>.ini file, see “Eldo<br />

Initialization File” on page 51. It has no effect if a .USE or .RESTART command is present in<br />

the netlist.<br />

By default, if Eldo Premier finds an existing .iic file, generated during a previous run of the<br />

same netlist, then it will reuse it. To force Eldo Premier to recompute the DC solution and<br />

regenerate the .iic file, specify: .OPTION PREMIER_REUSE_AUTOSAVED_IIC_FILE=0.<br />

To save the DC results in the .wdb file, specify the following commands in your netlist:<br />

.PROBE DC ALL<br />

By default when .OPTION PREMIER_FORCE_ELDO_DC is active, Eldo Premier uses the<br />

DC computed by Eldo Classic as .NODESET commands and performs the .TRAN command as<br />

specified in the netlist. To force Eldo Premier to use the DC computed by Eldo Classic as .IC<br />

commands and perform a .TRAN UIC command, specify<br />

.OPTION PREMIER_USE_IC_TRAN_UIC=1.<br />

Tip<br />

See also “Eldo Premier Options” in the Eldo Reference Manual.<br />

Limitations<br />

Using the Eldo Classic DC solution in Eldo Premier is not supported for the following:<br />

• .TEMP commands in Questa ADMS Premier: a warning message is displayed and the<br />

simulation is run for only the first temperature.<br />

• .STEP, .ALTER, and .MPRUN commands.<br />

• Eldo Control Language.<br />

66<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Handling Matrix-Like Circuits<br />

Related Topics<br />

Handling Matrix-Like Circuits<br />

Overview of Eldo Premier<br />

Eldo Premier Output<br />

Netlist Support<br />

Handling Matrix-Like Circuits<br />

To activate dedicated Eldo Premier algorithms performing matrix processing for the simulation<br />

of “matrix-like” circuits, specify .OPTION PREMIER_MATRIX. This is specifically adapted<br />

to the simulation of circuits with a regular structure such as an array of pixels and with highly<br />

connected power grids. Due to their particular matrix structure, display panel circuits (TFT,<br />

OLED) belong to this category of circuits. This option is of no interest to regular circuits<br />

without dense power networks.<br />

This option removes the bottlenecks associated with parsing, elaboration, partitioning, solver<br />

generation, and simulation. The simulation solution is fast, accurate, and handles all the<br />

physical effects described in the circuit, for example: coupling between rows and columns, IR<br />

drop due to ground and power networks, row and column access resistors. This option is useful<br />

for matrix-like circuits that cannot be handled by Eldo Classic; using this option consumes less<br />

memory.<br />

If this option is specified and the circuit is considered matrix-like, matrix processing is enabled,<br />

and the following note is displayed:<br />

Matrix processing is on.<br />

If this option is specified but the circuit is not matrix-like, Eldo Premier disables the matrix<br />

processing and displays the following note:<br />

Matrix option was set by <strong>user</strong>, but matrix processing has been disabled by<br />

the simulator.<br />

Tip<br />

See also “Eldo Premier Options” in the Eldo Reference Manual.<br />

Limitations<br />

• Only display circuits (TFT, OLED) are handled.<br />

• The total power dissipation at DC is not computed (0 W is displayed).<br />

• If many waveforms are generated, it may be useful to increase the heap size for EZwave,<br />

see “Troubleshooting Memory Issues” in the EZwave User’s and Reference Manual.<br />

For example:<br />

Eldo® User's Manual, 15.3 67


Eldo Premier<br />

Solver Generation Methods<br />

setenv AMS_JAVA_MEMORY_HEAP "-Xms100G -Xmx100G"<br />

Related Topics<br />

Overview of Eldo Premier<br />

Eldo Premier Output<br />

Netlist Support<br />

Solver Generation Methods<br />

By default, Eldo Premier uses a Just-In-Time (JIT) method for solver generation. The solver is<br />

generated in memory instead of on hard disk. In case of issues with elaboration, disable this<br />

method with option PREMIER_NOFASTGEN.<br />

With this method disabled, to reduce the Eldo Premier elaboration time use the Linux built-in<br />

RAM disk storage. Enable the RAM disk feature to perform solver generation and compilation<br />

in either of the following ways:<br />

• Command-line argument -premier_shm.<br />

• Netlist option .OPTION PREMIER_SHM.<br />

It is automatically disabled when the estimated generated code size exceeds the available space<br />

in the RAM disk file system.<br />

Tip<br />

See also “Eldo Premier Options” in the Eldo Reference Manual.<br />

Related Topics<br />

Overview of Eldo Premier<br />

Eldo Premier Output<br />

Netlist Support<br />

68<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Eldo Premier Output<br />

Eldo Premier Output<br />

Normal Eldo commands are used to plot and/or probe signals. It supports the same waveform<br />

output formats as Eldo, with .wdb being the default.<br />

The simulation results of Eldo Premier are output to the .chi file in the same way as Eldo<br />

Classic. It can also produce the usual Eldo output files, including .aex, .mt0, and so on; any postprocessing<br />

scripts written for Eldo can be reused without modification.<br />

Some Eldo Premier notes are generated in the transcript and .chi file providing information<br />

about the simulation and flow:<br />

• Parsing<br />

• Generation<br />

• Elaboration<br />

• Solver generation<br />

• DC<br />

• Transient<br />

Temporary Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

Generic Outputs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

Forcing Elaboration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

Temporary Files<br />

To help speed up successive runs, Eldo Premier generates some specific temporary directories<br />

and files:<br />

• .res directory<br />

Resolution library. Contains information to help speed-up the elaboration of the circuit<br />

before simulation. Some resources in the .res directory are reused for consecutive<br />

simulation runs of the same—or slightly modified—netlist, enabling a significant<br />

reduction in elaboration time.<br />

• .hbp file<br />

Contains information related to the hierarchy structure of the design. The information is<br />

reused for consecutive simulation runs of the same—or slightly modified—netlist,<br />

enabling a significant reduction in elaboration time.<br />

Eldo Premier simulations can sometimes generate huge temporary directories; it can be useful<br />

to store output results and temporary files in different locations. To define the location where<br />

Eldo Premier temporary files are generated, specify command line argument -tmpoutpath. By<br />

Eldo® User's Manual, 15.3 69


Eldo Premier<br />

Generic Outputs<br />

default, temporary files are created in the same directory defined by the -outpath argument. If<br />

neither -tmpoutpath nor -outpath are specified, temporary files are created in the same directory<br />

as the .cir input file.<br />

To remove the .res directory at the end of simulation, specify command line argument<br />

-premier_remove_reslib or netlist option PREMIER_REMOVE_RESLIB.<br />

Related Arguments<br />

• -tmpoutpath in the Eldo Reference Manual<br />

• -outpath in the Eldo Reference Manual<br />

• -premier_remove_reslib in the Eldo Reference Manual<br />

Generic Outputs<br />

The syntax for probes, plots and extracts allows the <strong>user</strong> to write generic output requests, that<br />

are expanded by the simulator to a set of outputs. For example:<br />

.PROBE V<br />

.PROBE I<br />

.PROBE V(X1.*)<br />

For performance reasons, it is not guaranteed that all outputs are available for such generic<br />

output requests. When generic outputs are requested, some outputs may be missing (see<br />

.removed for a listing) and the following warning message is displayed:<br />

Warning 1021249: Due to elaboration optimizations, some outputs may not be<br />

+ available.<br />

+ This is related to the use of generic probes such as .PROBE V, .PROBE I<br />

+ or the wildcard character.<br />

+ The list of removed outputs is written to file ``.removed''.<br />

+ Explicit probe can be used to enforce the availability of an output<br />

+ voltage or current.<br />

+ Option premier_keep_outputs can also be used to enforce the availability<br />

+ of all outputs. However, this option may significantly slow down the<br />

+ simulation.<br />

You can specify explicit probes instead, as required. For backward compatibility, if you want to<br />

generate all outputs, specify option PREMIER_KEEP_OUTPUTS. This may significantly slow<br />

down the simulation, in which case a warning is displayed:<br />

Warning 1021250: Option premier_keep_outputs may significantly slow down<br />

+ the simulation.<br />

+ It is recommended to use explicit probes instead of it, and as few<br />

+ explicit probes as really needed.<br />

70<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Forcing Elaboration<br />

Tip<br />

See also “.OPTION PREMIER_KEEP_OUTPUTS” in the Eldo Reference Manual.<br />

Forcing Elaboration<br />

Eldo Premier stores results of the elaboration in the output directory. If the simulation is<br />

restarted, Eldo Premier does not re-elaborate the circuit for parts of the netlist which have not<br />

changed. Use option PREMIER_FORCE_GEN to force Eldo Premier to elaborate the whole<br />

circuit instead of reusing the previous elaboration results.<br />

This option may be necessary if there was an error during the first elaboration (for example disk<br />

full, NFS error, data corrupted).<br />

Tip<br />

See also “Eldo Premier Options” in the Eldo Reference Manual.<br />

Related Topics<br />

Overview of Eldo Premier<br />

Enabling Eldo Premier<br />

Eldo Premier Selectable Accuracy Option<br />

Netlist Support<br />

Eldo Premier Selectable Accuracy Option<br />

You can specify a global macro-option to control accuracy in Eldo Premier simulations.<br />

It has an impact on the following:<br />

• Accuracy tuning<br />

• Device model optimization<br />

• Small R and C simplification<br />

• Reduction activation<br />

The option PREMIER_MODE can be set to five distinct values; OFF and 1 to 4, where 1 is the<br />

most accurate and slowest mode, and 4 is the least accurate and fastest. Syntax:<br />

.OPTION PREMIER_MODE=OFF|1|2|3|4<br />

The global macro-option, PREMIER_MODE, triggers specific combinations of actions<br />

according to Table 3-1, enabling a gradual speed/accuracy trade-off with monotonous behavior.<br />

Each individual action may be activated/deactivated through a specific option.<br />

Eldo® User's Manual, 15.3 71


Eldo Premier<br />

Eldo Premier Selectable Accuracy Option<br />

Table 3-1. Option PREMIER_MODE Effect<br />

PREMIER_MODE OFF 1 2 (Default) 3 4<br />

Option<br />

Tuning<br />

(.OPTION TUNING)<br />

Device Model<br />

Optimization<br />

(.OPTION<br />

ELDO_MODEL_MOD<br />

E)<br />

Mininum R val<br />

(.OPTION<br />

MINRVAL.OPTION<br />

RMMINRVAL)<br />

Split C val<br />

(.OPTION SPLITC)<br />

Reduction<br />

(.OPTION<br />

ELDO_REDUCTION_<br />

MODE)<br />

The default value of option PREMIER_MODE is 2 for Eldo Premier, which provides a<br />

balanced speed/accuracy trade-off. This option is equivalent to the Eldo command line<br />

argument -premier_mode. This option is not available in Eldo Classic, it is deactivated.<br />

The actions and associated options are as follows:<br />

• Accuracy tuning<br />

Default<br />

(standard)<br />

or<br />

specified<br />

Selects the default mode of operation of Eldo as regards to precision and speed.<br />

• Device model optimization<br />

Accurate<br />

or<br />

specified<br />

Device models are optimized with an average speed-up of 30%, on the total transient<br />

simulation time, compared to simulation with standard models. Device model<br />

optimization is disabled in a circuit with high voltage (above 6V) sources detected.<br />

• Removal of small linear resistors and floating capacitor simplification<br />

Simulation is accelerated by removing linear resistors and simplifying floating<br />

capacitors with values below a given threshold.<br />

• Default activation of reduction in Eldo Premier<br />

Default<br />

(standard) or<br />

specified<br />

Default<br />

(standard) or<br />

specified<br />

No Yes Yes Yes Yes<br />

Fast or<br />

specified<br />

No 1 mΩ 1 mΩ 1 mΩ 1 mΩ<br />

No 10 −18 F 10 −17 F 10 −16 F 10 −16 F<br />

No No Frequency=<br />

1/hmin<br />

Analog=yes<br />

Estimated<br />

frequency<br />

Analog=yes<br />

Estimated<br />

frequency<br />

Analog=no<br />

72<br />

Eldo® User's Manual, 15.3


Netlist reduction is activated with the corresponding setup.<br />

Related Topics<br />

Eldo Premier<br />

Eldo Premier Selectable Accuracy Option<br />

Tip<br />

For further information, see “.OPTION PREMIER_MODE” in the Eldo Reference<br />

Manual.<br />

Overview of Eldo Premier<br />

Enabling Eldo Premier<br />

Netlist Support<br />

Eldo® User's Manual, 15.3 73


Eldo Premier<br />

Netlist Support<br />

Netlist Support<br />

Eldo Premier supports a subset of the commands, options, and device models that the Eldo<br />

kernel supports but, given Eldo Premier’s transient-centric nature, there are a number of<br />

unsupported elements.<br />

Supported Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

Supported Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

Supported Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

Other Supported Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

Miscellaneous Limitations of Devices and Features in Eldo Premier. . . . . . . . . . . . . . . 93<br />

Supported Commands<br />

Most Eldo commands are supported by Eldo Premier. Some unsupported commands are<br />

ignored; others cause an automatic switch to Eldo Classic.<br />

• For unsupported commands that are ignored, Eldo Premier displays a warning message<br />

informing you the command is not supported.<br />

• For unsupported commands causing an automatic switch to Eldo Classic, for example<br />

.AC and .SST, Eldo Premier generates a warning informing you the command has<br />

caused Eldo Premier to be deactivated.<br />

Note<br />

All Eldo RF commands are unsupported causing an automatic switch to Eldo<br />

Classic.<br />

Error and warning messages specific to Eldo Premier are listed in “Errors Related to Eldo<br />

Premier” on page 1408 and “Warnings Related to Eldo Premier” on page 1450.<br />

Table 3-2 lists all Eldo commands and shows which are supported by Eldo Premier. Links are<br />

provided to the full syntax description for each in the Eldo Reference Manual.<br />

Table 3-2. Eldo Analysis Command Support in Eldo Premier<br />

Command<br />

Eldo Premier<br />

Support?<br />

Command<br />

Eldo Premier<br />

Support?<br />

.AC Switch to Eldo Classic .ACTIVITY Yes<br />

.ADDLIB Yes .AGE Yes<br />

.AGE_LIB Yes .AGE_SENSITIVITY Yes<br />

.AGEMODEL Yes .ALTER Yes<br />

74<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Supported Commands<br />

Table 3-2. Eldo Analysis Command Support in Eldo Premier (cont.)<br />

Command<br />

Eldo Premier<br />

Support?<br />

Command<br />

Eldo Premier<br />

Support?<br />

.BIND Yes .BINDSCOPE Ignored<br />

.CALL_TCL Yes .CHECKBUS Yes<br />

.CHECKSOA Yes .CHRENT Yes<br />

.CHRSIM Yes .COMCHAR Yes<br />

.COMPAT Yes .CONNECT Yes<br />

.CONSO Ignored .CORREL Switch to Eldo Classic<br />

.CORREL EXPR Switch to Eldo Classic .DATA Yes (see .STEP /<br />

.DATA / SWEEP<br />

Limitations in Eldo<br />

Premier)<br />

.DC<br />

Yes (See DC<br />

Analysis in Eldo<br />

Premier)<br />

.DCHIZ<br />

.DCMISMATCH Ignored .DEFAULT Yes<br />

.DEFINE_GROUP Yes .DEFINE_TASK Yes<br />

.DEFINE_TESTBENCH Yes .DEFMAC Yes<br />

.DEFMOD Yes .DEFPARAM Yes<br />

.DEFPLOTDIG Yes .DEFWAVE Yes<br />

.DEL Yes .DEX Ignored<br />

.DISCARD Yes .DISFLAT Ignored<br />

.DISTRIB Ignored .DSP Yes<br />

.DSPF_INCLUDE Yes .DSPMOD Ignored<br />

.EIL Ignored .ELDO_CL_MPRUN Yes<br />

.ELSE Yes .ELSEIF Yes<br />

.END Yes .ENDCOMPAT Yes<br />

.END_GROUP Yes .ENDIF Yes<br />

.ENDINLINE Yes .ENDL Yes<br />

.ENDS Yes .EQUIV Ignored<br />

.EXTMOD Yes .EXTRACT Yes<br />

.FFILE Ignored .FILTER Ignored<br />

Yes<br />

Eldo® User's Manual, 15.3 75


Eldo Premier<br />

Supported Commands<br />

Command<br />

Table 3-2. Eldo Analysis Command Support in Eldo Premier (cont.)<br />

.FORCE Ignored .FORMAT_STEP_LIMI<br />

TERS<br />

.FOUR Yes .FUNC Yes<br />

.GLOBAL Yes .GUESS Yes<br />

.HDL Ignored .HIER Yes<br />

.HISTOGRAM Yes .HIZ Yes<br />

.HIZ_CFG Yes .IC Yes<br />

.IF Yes .IGNORE_DSPF_ON_<br />

NODE<br />

.INCLUDE Yes .INIT Yes<br />

.INLINE Yes .IP_PROTECT Yes<br />

.IPROBE Switch to Eldo Classic .LIB Yes<br />

.LOAD Ignored .LOCALTOL Yes<br />

.LOOP Ignored .LOTGROUP Ignored<br />

.LSTB Switch to Eldo Classic .MALIAS Yes<br />

.MAP_DSPF_NODE_N<br />

AME<br />

Yes<br />

Yes<br />

Ignored .MC Yes<br />

.MCMOD Ignored .MEAS Yes<br />

.MODEL Yes .MODLOGIC Yes<br />

.MONITOR Yes .MPRUN Yes<br />

.MSELECT Yes .NEWPAGE Yes<br />

.NOCOM Yes .NODESET Yes<br />

.NOISE Switch to Eldo Classic .NOISE_CORREL Ignored<br />

.NOISETRAN<br />

Eldo Premier<br />

Support?<br />

Yes (subset, see<br />

Transient Noise<br />

Analysis in Eldo<br />

Premier)<br />

Command<br />

.NOTRC<br />

.NOTRCMOD Yes .NWBLOCK Ignored<br />

.OBJECTIVE Yes .OP Yess (see Operating<br />

Point Analysis in Eldo<br />

Premier for<br />

limitations)<br />

.OP_DISPLAY Yes .OPTFOUR Yes<br />

Eldo Premier<br />

Support?<br />

Yes<br />

76<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Supported Commands<br />

Table 3-2. Eldo Analysis Command Support in Eldo Premier (cont.)<br />

Command<br />

Eldo Premier<br />

Support?<br />

Command<br />

Eldo Premier<br />

Support?<br />

.OPTIMIZE Yes .OPTION Yes<br />

.OPTNOISE Ignored .OPTPWL Yes<br />

.OPTWIND Yes .PARAM Yes<br />

.PARAMDEX Ignored .PARAMOPT Switch to Eldo Classic<br />

.PART Switch to Eldo Classic .PLOT Yes<br />

.PLOTBUS Yes .PLOTWIND Yes<br />

.POWER_ANALYSIS Yes .PRINT Yes<br />

.PRINTBUS Yes .PRINTFILE Yes<br />

.PROBE Yes .PROBEBUS Yes<br />

.PROTECT Yes .PZ Ignored<br />

.RAMP Yes .RAMP_SUPPLY Yes<br />

.REDUCE<br />

Yes (subset, see RC<br />

Reduction in Eldo<br />

Premier)<br />

.REPORT_HEATING<br />

.RESTART Yes .SAVE Yes<br />

.SCALE Yes .SCOPE Yes<br />

.SELECT_DSPF_ON_N<br />

ODE<br />

Ignored .SENS Switch to Eldo Classic<br />

.SENS TRAN Switch to Eldo Classic .SENS AC Ignored<br />

.SENSPARAM Ignored .SETBUS Yes<br />

.SETKEY Yes .SETSOA Yes<br />

.SIGBUS Yes .SINUS No<br />

.SNF Switch to Eldo Classic .SOLVE Switch to Eldo Classic<br />

.SPEF_INCLUDE Yes .START_TIME Yes<br />

.STEP Yess (see .STEP /<br />

.DATA / SWEEP<br />

Limitations in Eldo<br />

Premier)<br />

.SUBCKT<br />

.SUBDUP Switch to Eldo Classic .TABLE Yes<br />

Yes<br />

Yes<br />

Eldo® User's Manual, 15.3 77


Eldo Premier<br />

Supported Options<br />

Table 3-2. Eldo Analysis Command Support in Eldo Premier (cont.)<br />

Command<br />

Eldo Premier<br />

Support?<br />

Command<br />

Eldo Premier<br />

Support?<br />

.TCL_WAVE Yes .TEMP Yes (see<br />

Temperature<br />

expression<br />

limitation)<br />

.TEMPNODE Yes .TF Ignored<br />

.TITLE Yes .TOPCELL Yes<br />

.TRAN Yes .TSAVE Yes<br />

.TVINCLUDE Yes .UNPROTECT Yes<br />

.USE Yes .USEKEY Yes<br />

.USE_TCL Yes .USE_VERILOGA Yes<br />

.VEC Yes .VERILOG Yes<br />

.WCASE Switch to Eldo Classic .WIDTH Yes<br />

Related Topics<br />

Overview of Eldo Premier<br />

Enabling Eldo Premier<br />

Eldo Premier Output<br />

Netlist Support<br />

Supported Options<br />

Most Eldo options are supported by Eldo Premier. All unsupported options are ignored, and<br />

Eldo Premier displays a warning message informing you the option is not supported.<br />

Table 3-3 lists all Eldo options and shows which are supported by Eldo Premier, and which are<br />

not (ignored). For full descriptions, see the “Simulator and Control Options” chapter in the Eldo<br />

Reference Manual.<br />

Table 3-3. Eldo Premier—Supported Options<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

ABSOLUTE_HMIN No ABSTOL Yes<br />

ABSVAR Yes ACCSEMICOL Yes<br />

78<br />

Eldo® User's Manual, 15.3


Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Eldo Premier<br />

Supported Options<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

ACDERFUNC No ACM Yes<br />

ACNOISE_FILE No ACOUT No<br />

ACSIMPROG No ADIT_CHECK Yes<br />

ADJSTEPTRAN Yes ADMSBS No<br />

ADMSMCDEVSEV - AEX Yes<br />

AIDSTP No ALIGNEXT Yes<br />

ALTCROSS - ALTER_ADDSTEP No<br />

ALTER_NOMINAL_TEXT Yes ALTER_SUFFIX Yes<br />

ALTERELDO Yes ALTINC Yes<br />

AMMETER No ANALOG No<br />

ASCII Yes ASCIIPLOT Yes<br />

ASPEC Yes AUTO[_SELECT] Yes<br />

AUTOCTYPE Yes AUTOSTOP Yes<br />

AUTOSTOPBUS Yes AUTOSTOPMODULO Yes<br />

BACKUP_ELDO_CL_NETLIS<br />

TS<br />

No BE Yes<br />

BLK_SIZE No BLOCKS=IEM No<br />

BLOCKS=NEWTON No BSIM3VER Yes<br />

BSIMCMG_OPT Yes BSIM4SOI_OPT Yes<br />

BSLASHCONT Yes CAPANW Yes<br />

CAPTAB No CARLO_GAUSS No<br />

CATMX No CATMX_REPORT -<br />

CHECKDUPL No CHGTOL Yes<br />

CKDCPATH No CLASSIC Yes<br />

COLLAPSE_DSPF_OUTPUT No COMPAT Yes<br />

COMPEXUP Yes COMPMOD Yes<br />

COMPNET Yes CONTINUE_INCLUDE Yes<br />

CONTINUOUS_FFT Yes COU Yes<br />

CPTIME Yes CSDF Yes<br />

Eldo® User's Manual, 15.3 79


Eldo Premier<br />

Supported Options<br />

Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

CSHUNT Yes CTEPREC Yes<br />

CTYPE Yes DCC_TUNING Yes<br />

DCLOG No DCPART No<br />

DCSIMPROG No DEFAD Yes<br />

DEFAS Yes DEFAULTFALLTIME Yes<br />

DEFAULTRISETIME Yes DEFL Yes<br />

DEFNRD Yes DEFNRS Yes<br />

DEFPD Yes DEFPS Yes<br />

DEFPTNOM Yes DEFRMSNTR No<br />

DEFW Yes DEPSRC_PWL_INTER Yes<br />

DEPSRC_PWL_LOG Yes DICPRIO Yes<br />

DIGITAL No DIS_EXP_LIM Yes<br />

DISPLAY_CARLO No DOTNODE No<br />

DPTRAN Yes DSCGLOB Yes<br />

DSPF_LEVEL Yes DUMP_EXTRACT Yes<br />

DUMP_FILE_LIST Yes DUMP_MCINFO No<br />

DUMP_MCINFO_CONF No DUMP_MCINFO_SENS No<br />

DVDT No DYND2ANALOG No<br />

DYND2ANALOG2 No ELDO_MODEL_MODE Yes<br />

ELDO_REDUCTION_MODE Yes ELDOMOS Yes<br />

EMPTY_MCHISTO No ENGNOT Yes<br />

EPS Yes EPSO Yes<br />

ERR0DIV0 Yes ETMODE Yes<br />

EXTCGS Yes EXTERR Yes<br />

EXTFILE Yes EXTMKSA Yes<br />

EXTMOD_GENWAVE Yes EXTRACT_EVAL_FINAL Yes<br />

EXTRACT_VECT_AXIS Yes FALL_TIME Yes<br />

FASTRLC Yes FLICKER_NOISE No<br />

80<br />

Eldo® User's Manual, 15.3


Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Eldo Premier<br />

Supported Options<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

FLOATGATE0 Yes FLOATBULKCHECK No<br />

FLOATBULKERR No FLOATFILE No<br />

FLOATGATE0 Yes FLOATGATECHECK Yes<br />

FLOATGATERR Yes FLUXTOL Yes<br />

FNLEV No FORCE_GROUNDED_CAP No<br />

FORCE_UPDATE - FORCE_WAVE_ALIASES Yes<br />

FREQSMP Yes FROM_TO Yes<br />

FS_PARTITION_DEBUG No FS_PARTITIONING No<br />

FS_SOLVE_AMS_NODES No FSDB Yes<br />

FSDB_SINGLE_FILE Yes FT Yes<br />

GEAR Yes GENK Yes<br />

GEOSHRINK Yes GMIN Yes<br />

GMIN_BJT_SPICE Yes GMINDC Yes<br />

GNODE No GRAMP Yes<br />

GSHUNT Yes HACC No<br />

HIER_SCALE No HIGHVOLTAGE Yes<br />

HIGHVTH Yes HISTLIM Yes<br />

HISTO_ZERO No HMAX Yes<br />

HMIN Yes HRISEFALL Yes<br />

IBIS_SEARCH_PATH No ICDC Yes<br />

ICDEV No IEM No<br />

IGNORE_CSHRC Yes IGNORE_LOCATION_MAP Yes<br />

IGNORE_LVS_VARIABLE No IKF2 No<br />

IMPLICIT_ISUB - INCLIB Yes<br />

INFODEV No INFOMC No<br />

INFOMOD No INGOLD Yes<br />

INPUT Yes INTERP Yes<br />

ITL1 Yes ITL3 Yes<br />

Eldo® User's Manual, 15.3 81


Eldo Premier<br />

Supported Options<br />

Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

ITL4 Yes ITL6 Yes<br />

ITL7 Yes ITL8 Yes<br />

ITOL Yes ITRPRT Yes<br />

JTHNOISE No JWDB Yes<br />

JWDB_ACTRAN_USE_TIME Yes JWDB_EVENT Yes<br />

JWDB_EXTENSIONS Yes JWDB_PERCENT Yes<br />

KEEP_DSPF_NODE No KEEP_ELDO_CL_TEMP_WAVE<br />

S<br />

Yes<br />

KEEP_HMPFILE No KEEPDANGLING No<br />

KEEPSHORTED No KLIM No<br />

KWSCALE Yes LCAPOP Yes<br />

LIBINC Yes LICN Yes<br />

LIMIT_GROUNDED_CAP No LIMNWRMOS No<br />

LIMPROBE Yes LIST No<br />

LOCAL_MINRACC Yes LOCAL_NOWARN No<br />

LOOPV0 Yes LOWVOLTAGE Yes<br />

LOWVTH Yes LVLTIM No<br />

M53<br />

Switch to Eldo<br />

Classic<br />

MACMOD<br />

Yes<br />

MAX_CHECKBUS No MAX_DSPF_PLOT No<br />

MAXADS No MAXL Yes<br />

MAXNODEORD No MAXNODES No<br />

MAXORD Yes MAXPDS No<br />

MAXSTEP No MAXTOTWARN No<br />

MAXTRAN No MAXV Yes<br />

MAXW Yes MAXWARN Yes<br />

MC_IGNORE_BINNING No MAX_NOMINAL_OP No<br />

MEAS_TARGWHEN Yes MEASFILE Yes<br />

MEASFORM Yes METHOD=GEAR Yes<br />

82<br />

Eldo® User's Manual, 15.3


Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Eldo Premier<br />

Supported Options<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

MINADS Yes MINL Yes<br />

MINPDS Yes MINRACC Yes<br />

MINRESISTANCE Yes MINRVAL Yes<br />

MINW Yes MIXEDSTEP Yes<br />

MMSMOOTH Yes MMSMOOTHEPS Yes<br />

MNUMER Yes MOD4PINS Yes<br />

MODMONTE No MODWL Yes<br />

MODWLDOT Yes MSGBIAS No<br />

MSGNODE No MTFILE Yes<br />

MULTITECH No NETLISTXN No<br />

NETSIZE No NEWACCT Yes<br />

NEWTON No NGATEDEF Yes<br />

NGTOL No NMAXSIZE No<br />

NO_FS_VA No NO_NOMINAL_ALTER Yes<br />

NOACDERFUNC Yes NOACT0 No<br />

NOADMSBS No NOAEX Yes<br />

NOALTCROSS - NOALTINCEX Yes<br />

NOASCII Yes NOASCIIPLOT Yes<br />

NOAUTOCTYPE Yes NOBOUND_PHASE Yes<br />

NOBSLASHCONT Yes NOCATMX N/A<br />

NOCKRSTSAVE Yes NOCMPUNIX No<br />

NOCONVASSIST Yes NOCOU Yes<br />

NODCINFOTAB No NODCPART No<br />

NODCPOWNEG No NODE No<br />

NODEFNEWTON No NODEFRMSNTR No<br />

NODUPINSTERR No NOELDOLOGIC No<br />

NOELDOSWITCH No NOERR_VAPINSMISMATCH No<br />

NOERR_XPINSMISMATCH Yes NOEXTRACTCOMPLEX No<br />

Eldo® User's Manual, 15.3 83


Eldo Premier<br />

Supported Options<br />

Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

NOFNSIEM No NOICNODE Yes<br />

NOIICXNAME Yes NOINT No<br />

NOISE_SGNCONV No NOISETRAN_TUNING Yes<br />

NOJWDB Yes NOKEYWPARAMSST No<br />

NOKWSCALE Yes NOLAT No<br />

NOLICN Yes NOLTEDISC No<br />

NOMALIAS_FOR_SOA Yes NOMATSING No<br />

NOMEMMC - NOMEMSTP No<br />

NOMOD Yes NOMODWL Yes<br />

NONOISE No NONTRCNOMSTEP No<br />

NONWRMOS Yes NOOP No<br />

NOPAGE Yes NOPROBEOP Yes<br />

NOQTRUNC Yes NORMOS No<br />

NOSETBUSEXPAND Yes NOSIZECHK Yes<br />

NOSMKMCWC No NOSSTKEYWORD No<br />

NOSTATP No NOSTVER Yes<br />

NOTHTOLSPI - NOTRC Yes<br />

NOTRCLIB Yes NOVATOPOCHK No<br />

NOWARN Yes NOWAVECOMPLEX No<br />

NOXTABNOISE No NOZSINXX No<br />

NSAFILE_FORMAT Yes NUMDGT Yes<br />

NWRMOS Yes OLDACCT No<br />

OPALLDC Yes OPSELDO_ABSTRACT No<br />

OPSELDO_ALTER - OPSELDO_DETAIL No<br />

OPSELDO_DISPLAY_GOALFI<br />

TTING<br />

No<br />

OPSELDO_FORCE_GOALFITTI<br />

NG<br />

No<br />

OPSELDO_JWDB_RUN No OPSELDO_NETLIST No<br />

OPSELDO_NO_DUPLICATE No OPSELDO_NOGOALFITTING No<br />

OPSELDO_OUTER No OPSELDO_OUTPUT No<br />

84<br />

Eldo® User's Manual, 15.3


Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Eldo Premier<br />

Supported Options<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

OPSOA No OPTYP Yes<br />

OSR No OUT_ABSTOL Yes<br />

OUT_MCPARAM Yes OUT_REDUCE Yes<br />

OUT_RELTOL Yes OUT_RESOL Yes<br />

OUT_SMP Yes OUT_STEP Yes<br />

PARAM_BEFORE_USE Yes PARAMETRIC_ACTRAN No<br />

PARAMOPT_NOINITIAL No PARHIER Yes<br />

PATTERN_MAX_ALLOWED_<br />

COEFF<br />

Yes PCS No<br />

PCSPERIOD No PCSSIZE No<br />

PEVFLY No PGATEDEF No<br />

PIVCHECK No PIVREL No<br />

PIVTOL No PODEV No<br />

POST Yes POST_DOUBLE Yes<br />

POWNEG0 No PREMIER Yes<br />

PREMIER_FORCE_ELDO_DC Yes PREMIER_FORCE_GEN Yes<br />

PREMIER_HISPEED Yes PREMIER_KEEP_OUTPUTS Yes<br />

PREMIER_MATRIX Yes PREMIER_MODE Yes<br />

PREMIER_NOFASTGEN Yes PREMIER_RCC Yes<br />

PREMIER_REMOVE_RESLIB Yes PREMIER_REUSE_AUTOSAVE<br />

D_IIC_FILE<br />

Yes<br />

PREMIER_SHM Yes PREMIER_USE_IC_TRAN_UIC Yes<br />

PREVENT_TRUNCATE_EXPR<br />

ESSION_REPRESENTATION<br />

Yes PRINT_ACCT No<br />

PRINT_ACOP No PRINT_DC No<br />

PRINT_OPTION No PRINTFILE_STEP No<br />

PRINTFILE_FREQ_STEP No PRINTFILE_TIME_STEP No<br />

PRINTLG Yes PROBE Yes<br />

PROBEOP Yes PROBEOP2 Yes<br />

Eldo® User's Manual, 15.3 85


Eldo Premier<br />

Supported Options<br />

Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

PROBEOPX Yes PROPAGATE_ELDO_CL_MAIN_<br />

ARGS<br />

Yes<br />

PSF Yes PSF_ALL_FILES Yes<br />

PSF_FULLNAME Yes PSF_NODEVICE_NOISE No<br />

PSF_SCALARDC Yes PSF_VERSION Yes<br />

PSF_WRITE_ALL Yes PSFASCII Yes<br />

PSOSC No PSP_NOI_MOD Yes<br />

PSTRAN Yes PWL1 -<br />

QTRUNC Yes QUEUE_TIMEOUT Yes<br />

QUOTREL Yes QUOTSTR Yes<br />

RAILINDUCTANCE No RAILRESISTANCE No<br />

RANDMC No RATPRINT No<br />

REDUCE Yes REDUCE_KEEP_INST Yes<br />

REDUCE_KEEP_NODE Yes REDUCE_KEEP_OUTPUTS Yes<br />

REDUCE_MAX_CAP Yes REDUCE_MAX_IND Yes<br />

REDUCE_MAX_RES Yes REDUCE_NETWORK_TYPE Yes<br />

RELTOL Yes RELTRUNC Yes<br />

RELVAR No REMOVE_ELDO_CL_TEMP_FIL<br />

ES<br />

Yes<br />

RESET_MULTIPLE_RUN No RESNW No<br />

RESTRICT_ELDO_CL_DECL<br />

ARATIONS<br />

Yes RGND Yes<br />

RGNDI Yes RISE_TIME Yes<br />

RMMINRVAL Yes RMOS Yes<br />

RMPOWDC Yes RMUNBIASED -<br />

RMV0 No RSMALL No<br />

SAMPLE No SAVETIME Yes<br />

SCALE Yes SCALEBSIM Yes<br />

SCALM Yes SEARCH Yes<br />

86<br />

Eldo® User's Manual, 15.3


Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Eldo Premier<br />

Supported Options<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

SELECTIVE_ELABORATION Yes SET_ELDO_CL_ARRAY_AUTO_<br />

EXPAND<br />

SET_ELDO_CL_MAX_PARA Yes SET_ELDO_CL_SIM_CHI_APPE<br />

ND<br />

Yes<br />

Yes<br />

SET_ELDO_CL_SIM_LOG_AP<br />

PEND<br />

Yes<br />

SET_ELDO_CL_STRING_COMP<br />

ARISON_CASE_SENSITIVE<br />

Yes<br />

SET_ELDO_CL_VERBOSE Yes SHRINK_FACTOR Yes<br />

SIGTAIL No SIMUDIV Yes<br />

SLASHCONT Yes SMOOTH Yes<br />

SOA_EXCLUDE_LIMITS - SOA_HIER_RULE -<br />

SOA_WAVE_FORMAT - SOIBACK No<br />

SPI3ASC Yes SPI3BIN Yes<br />

SPI3NOCOMPLEX Yes SPICEDC No<br />

SPIOUT Yes SPLITC Yes<br />

SPMODEL - SPMODLEV Yes<br />

SPNNB Yes SPNRAT Yes<br />

STARTSMP Yes STAT Yes<br />

STATISTICAL No STD_OP -<br />

STEP Yes STOPINFIRSTERROR Yes<br />

STRICT No STVER Yes<br />

SUBALEV Yes SUBFLAGPAR No<br />

SWARN - TEMP_UNTI Yes<br />

TEMPCOUK Yes THERMAL_NOISE No<br />

THTOLSPI - TIMEDIV Yes<br />

TIMESMP<br />

Yes<br />

TMAX Yes TMIPATH Yes<br />

TNOM Yes TPIEEE No<br />

TRAP Yes TRTOL Yes<br />

TTHRESOL Yes TUNING Yes<br />

Eldo® User's Manual, 15.3 87


Eldo Premier<br />

Supported Options<br />

Table 3-3. Eldo Premier—Supported Options (cont.)<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

Option<br />

Eldo<br />

PremierSupp<br />

ort?<br />

UDRM_GET_DEVICE_SQUA<br />

RE_M<br />

Yes ULOGIC No<br />

UNBOUND Yes UNFORCEDBULKCHECK No<br />

UNFORCEDBULKERR No USE_ELDO_CL_SAFE_WAVE_C<br />

P<br />

Yes<br />

USE_LAST_SUBCKT - USE_LOCATION_MAP Yes<br />

USE_SPECTRE_CONSTANT Yes USEALLSTEP -<br />

USEDEFAP Yes USEFIRSTDEF Yes<br />

USELASTDEF Yes VALIDATE_ELDO_CL_CONCU<br />

RRENCY<br />

Yes<br />

VAMAXEXP No VAMODEL -<br />

VAOPTS - VARTEMP No<br />

VBCSAT Yes VERBOSE No<br />

VMAX Yes VMIN Yes<br />

VNTOL Yes VOLTAGE_LOOP_SEVERITY Yes<br />

VXPROBE No WARN Yes<br />

WARN2ERR No WARNING_DEVPARAM No<br />

WARNMAXV No WBULK No<br />

WDB_IDELTA Yes WDB_NOSYNCHRO Yes<br />

WDB_VDELTA Yes WDF -<br />

WILDCARD_CORRELATION - WL Yes<br />

WRITE_ALTER_NETLIST Yes XA Yes<br />

XBYNAME No ZCHAR No<br />

ZOOMTIME<br />

Yes<br />

Tip<br />

For a list of the options specific to Eldo Premier, see “Eldo Premier Options” in the Eldo<br />

Reference Manual.<br />

Related Topics<br />

Overview of Eldo Premier<br />

88<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Supported Models<br />

Enabling Eldo Premier<br />

Eldo Premier Output<br />

Netlist Support<br />

Supported Models<br />

Eldo Premier supports the following models:<br />

• All SPICE basic models (R, C, L, E, F, G, F, and so on).<br />

• Eldo models (UDM and GUDM; charge controlled models only).<br />

• Verilog-A (default flow only).<br />

• VHDL models (when used inside Questa ADMS).<br />

• Capacitive MOSFET models.<br />

• A subset of Eldo built-in macromodels: all in the analog, digital, and mixed-signal<br />

groups; Switch (Sxx) from the switched capacitor group.<br />

Limitation: Eldo Premier does not plot the nodal current of macromodels, for example<br />

I(Ymacro.2).<br />

• Eldo S-domain (FNS) and Z-domain (FNZ) filters.<br />

• S Parameters FBLOCK (block defined with frequency tabulated data in Touchstone<br />

format).<br />

• LDTL, W and U models (transmission line models).<br />

• Ideal transmission line model (T element).<br />

• Microstrip models.<br />

• R, L, C elements defined with an expression (VALUE=) containing the FREQ<br />

keyword.<br />

• E and G of FREQ type (frequency dependent voltage-controlled voltage sources and<br />

voltage-controlled current sources).<br />

Other Supported Functionality<br />

Eldo Premier supports the following, with some exceptions:<br />

• All features of ECL except Simulation Dynamic Control, see “Eldo Control Language”<br />

on page 801.<br />

• Transient noise analysis subset, see “Transient Noise Analysis in Eldo Premier” on<br />

page 90.<br />

Eldo® User's Manual, 15.3 89


Eldo Premier<br />

Other Supported Functionality<br />

• RC reduction (TICER), see “RC Reduction in Eldo Premier” on page 90.<br />

• .OP command, see “Operating Point Analysis in Eldo Premier” on page 92.<br />

• .STEP/.DATA/SWEEP commands, see “.STEP / .DATA / SWEEP Limitations in Eldo<br />

Premier” on page 92.<br />

• Eldo UDRM, see “Reliability Simulation in Eldo Premier” on page 92.<br />

Transient Noise Analysis in Eldo Premier<br />

Eldo Premier supports a subset of the transient noise ( .NOISETRAN) analysis. This is to fulfill<br />

the need of large circuits and long simulations. Transient noise analysis in Eldo Premier<br />

supports optimized models, see .OPTION PREMIER_MODE. Only channel thermal noise and<br />

flicker noise are handled. The supported configuration is a single noisy transient run without a<br />

nominal run, with:<br />

• nonom set<br />

• nbrun set to 1 (single noisy transient run)<br />

• mrun set (the single run algorithm is not used)<br />

Command syntax and parameters available:<br />

.NOISETRAN [fmin=val] fmax=val [nbf=val] [amp=val] [seed=val]<br />

+ [nomod=val] [tstart=val] [tstop=val] [fmin_flicker=val]<br />

Note<br />

The setting of any other Eldo Classic parameters (for example all, nbbins) is ignored.<br />

The noise related parameters specified on device instance lines (nonoise, fmin, fmax, nbf) are<br />

supported.<br />

The simulation results of the .NOISETRAN analysis in Eldo Premier is only one noisy run (per<br />

plot). Any results related to multi-runs (rms and histogram) are not generated.<br />

Verilog-A devices do not generate noise during transient noise analysis in Eldo Premier.<br />

RC Reduction in Eldo Premier<br />

Eldo Premier supports RC reduction as follows:<br />

• .REDUCE command<br />

o<br />

o<br />

The generic .REDUCE command is supported with all options: ANALOG,<br />

FREQUENCY, TUNING, DELAY_ERROR, NOISE_ERROR, ENGINE.<br />

The .REDUCE TICER command is supported with all options except<br />

PORTMERGE.<br />

90<br />

Eldo® User's Manual, 15.3


o<br />

Eldo Premier<br />

Other Supported Functionality<br />

The .REDUCE CC and .REDUCE RONLY commands are not supported.<br />

• Reduction options<br />

The following options are supported:<br />

o<br />

o<br />

o<br />

o<br />

o<br />

.OPTION REDUCE_KEEP_INST<br />

.OPTION REDUCE_KEEP_NODE<br />

.OPTION REDUCE_KEEP_OUTPUTS<br />

.OPTION REDUCE_MAX_CAP<br />

.OPTION REDUCE_MAX_RES<br />

• Use .OPTION PREMIER_RCC to enable a number of RCC specific reduction options<br />

to improve the performance while preserving accuracy on RCC parasitic post-layout<br />

netlists.<br />

Note<br />

In addition to the support listed above, some modifications have been made to the default<br />

values set by the PREMIER_MODE tuning option in Eldo Premier.<br />

You can control the performance and accuracy of RC reduction in different ways, with the<br />

following rules of precedence (from highest priority to lowest priority):<br />

1. Manual setting, for example MINRVAL/SPLITC options.<br />

2. .REDUCE TUNING=vhigh|accurate|standard|fast<br />

3. .OPTION PREMIER_RCC<br />

4. .OPTION PREMIER_MODE=OFF|1|2|3|4<br />

Note<br />

Mixing these options is not recommended as it may lead to unexpected results.<br />

Limitations<br />

• The TICER algorithm is supported with the following limitations:<br />

Only R and C elements are reduced; L and K elements are not.<br />

TICER reduction is less aggressive in Eldo Premier than in Eldo Classic, because some<br />

optimizations (port merging and CC clumping) are not available.<br />

• The following algorithms are not supported by Premier:<br />

RONLY reduction, CC reduction.<br />

• The following options are not supported:<br />

Eldo® User's Manual, 15.3 91


Eldo Premier<br />

Other Supported Functionality<br />

o<br />

o<br />

.OPTION REDUCE_MAX_IND (not supported because inductors are not reduced:<br />

see limitations below).<br />

.OPTION REDUCE_NETWORK_TYPE (not supported: always set to RC, because<br />

inductors are not reduced: see limitations below).<br />

DC Analysis in Eldo Premier<br />

Eldo Premier supports DC (.DC) analysis with the following limitation:<br />

• Topology changes are not supported, that is, when a DC analysis adds or removes an<br />

access resistor.<br />

See also “Using Eldo Classic DC Solution” on page 66.<br />

Operating Point Analysis in Eldo Premier<br />

Eldo Premier supports operating point (.OP) analysis and the .OP_DISPLAY command with the<br />

following limitations:<br />

• OP info is not displayed for all linear devices (R, L, C, E, F, G and H). OP info is<br />

displayed for some non-linear devices (R, L, C, E, F, G and H).<br />

• Displayed information could be different compared with Eldo Classic due to different<br />

optimizations (merged or simplified devices).<br />

.STEP / .DATA / SWEEP Limitations in Eldo Premier<br />

Eldo Premier supports .STEP/.DATA/SWEEP commands with the following limitation:<br />

• Topology changes are not supported, that is when a .STEP adds or removes an access<br />

resistor.<br />

The outputs are consistent with Eldo Classic.<br />

Reliability Simulation in Eldo Premier<br />

Eldo Premier supports reliability simulation, Eldo UDRM, with the following limitations:<br />

• Eldo UDRM enables the update of non-model parameter values (through regular<br />

.PARAM commands). Because Eldo Premier does not keep the parameter dependencies,<br />

this capability is not supported when using UDRM inside Eldo Premier.<br />

Related Topics<br />

Eldo UDRM Users Manual<br />

Overview of Eldo Premier<br />

Enabling Eldo Premier<br />

92<br />

Eldo® User's Manual, 15.3


Eldo Premier<br />

Miscellaneous Limitations of Devices and Features in Eldo Premier<br />

Eldo Premier Output<br />

Netlist Support<br />

Miscellaneous Limitations of Devices and Features<br />

in Eldo Premier<br />

The following devices and features are not supported by the Eldo Premier kernel:<br />

• Magnetic and Switched Capacitor Eldo macromodels (except for the Sxx switch).<br />

• IBIS models.<br />

• Controlled devices using a function of frequency or time.<br />

• Eldo Interactive mode.<br />

• Merckel MOSFET models.<br />

• Specifying a temperature expression as a parameter of the .TEMP command<br />

(.TEMP ) produces incorrect simulation results for devices whose values<br />

vary with temperature (expression depends on the TEMPER variable).<br />

Workaround: Always use a numerical value instead of an expression as a parameter of<br />

the .TEMP command.<br />

When a model is not supported by Eldo Premier, a warning 93 is displayed causing an<br />

automatic switch to Eldo Classic. For example:<br />

Warning 93: Premier has been deactivated due to the unsupported model of<br />

the object 'M1' (MERCK1).<br />

Related Topics<br />

Overview of Eldo Premier<br />

Enabling Eldo Premier<br />

Eldo Premier Output<br />

Netlist Support<br />

Eldo® User's Manual, 15.3 93


Eldo Premier<br />

Miscellaneous Limitations of Devices and Features in Eldo Premier<br />

94<br />

Eldo® User's Manual, 15.3


Chapter 4<br />

Eldo Netlist Setup<br />

This chapter provides an overview of the circuit file (.cir) structure and describes general<br />

aspects of the Eldo syntax used to specify all circuit descriptions and simulation commands in<br />

the .cir file.<br />

Full descriptions of the Eldo syntax for device, source and macromodel instantiations, and all of<br />

the command set can be found in the Eldo Reference Manual.<br />

Netlist Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

Circuit Title. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

Model Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

Subcircuit Definitions and Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

Element and Source Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

Simulator Commands and Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br />

End Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

General Aspects of the Language Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

Continuation Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

Comment Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

Parameter Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

Case-Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105<br />

Numerical Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108<br />

Functions, Operators and Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

Arithmetic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

IF, ELSE, ELSEIF, ENDIF Conditional Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

String Operator on If Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

Directives Interpreted by the Eldo Parser (Default) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

Directives to Postpone Block of Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

Directives Interpreted using the C Pre-Processor (-E/-EE Arguments) . . . . . . . . . . . . . . . 126<br />

Working With Subcircuits and Device Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Subcircuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Device Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />

Encrypting Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />

encrypt_<strong>eldo</strong> Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

Protection of Encrypted Libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144<br />

Automatic Recognition of MOS Instantiations in TSMC Libraries . . . . . . . . . . . . . . . . 156<br />

Eldo® User's Manual, 15.3 95


Eldo Netlist Setup<br />

Running Multiple Runs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

Merging Instances in Parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br />

96<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Netlist Structure<br />

Netlist Structure<br />

The Eldo .cir netlist file contains all the information necessary to run an Eldo simulation. The<br />

Eldo structure and syntax is based on the SPICE language. However, Eldo provides many<br />

additional features not available in SPICE.<br />

Tip<br />

You can display .cir files with the AMS Results Browser.<br />

The circuit file example in Figure 4-1 shows the simple structure of an input circuit (.cir file).<br />

Figure 4-1. Circuit File Example<br />

The file is divided into the different sections labeled in the figure.<br />

The example also contains full line and inline comments. The first line (circuit title) and last line<br />

(.END) are the only ones that are order dependent. All other netlist lines are order independent.<br />

Eldo® User's Manual, 15.3 97


Eldo Netlist Setup<br />

Circuit Title<br />

Tip<br />

See also “General Aspects of the Language Syntax” on page 103.<br />

Circuit Title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

Model Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

Subcircuit Definitions and Calls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

Element and Source Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

Simulator Commands and Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br />

End Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

Circuit Title<br />

The first line of the netlist file is format free and always handled as comment, as in SPICE, and<br />

is reserved for the title of the circuit file. The title is used for each section of output in the ASCII<br />

file, and also in the waveforms database for viewing by the EZwave waveform viewer. This line<br />

is mandatory.<br />

Related Topics<br />

Netlist Structure<br />

General Aspects of the Language Syntax<br />

Analyzing Simulation Results<br />

Model Definitions<br />

Use the .MODEL command to group sets of pre-defined parameters which may be used by one<br />

or more devices. Models may be described directly in the input file or may be read from a<br />

library file using .MODEL LIB or the .LIB and .ADDLIB commands.<br />

Model Names<br />

Model names cannot start with a numeric. This causes compilation of the netlist to be broken,<br />

giving an error message.<br />

Tip<br />

See also “.MODEL” in the Eldo Reference Manual.<br />

Related Topics<br />

Netlist Structure<br />

98<br />

Eldo® User's Manual, 15.3


Subcircuit Definitions and Calls<br />

Eldo Netlist Setup<br />

Subcircuit Definitions and Calls<br />

A subcircuit consists of a group of elements. To define a subcircuit within a circuit description<br />

file, begin the subcircuit block with a .SUBCKT command and terminate it with the .ENDS<br />

command.<br />

Use the Xxx statement to instantiate a subcircuit previously defined using a .SUBCKT<br />

command. All components and nodes used in the subcircuit definition are known only locally,<br />

unless they have been globally defined via .GLOBAL or .PARAM commands. .MODEL<br />

specifications inside the subcircuit are also known only locally. There is no limit to the size or<br />

complexity of the subcircuit.<br />

Tip<br />

See “.SUBCKT,” “.ENDS” and “Subcircuit Instance” in the Eldo Reference Manual.<br />

Related Topics<br />

Netlist Structure<br />

Working With Subcircuits and Device Libraries<br />

Element and Source Definitions<br />

The circuit connectivity (netlist) is described in the netlist file by element statements of devices<br />

and sources.<br />

Element statements provide:<br />

• element name<br />

• nodes the element is connected to<br />

• parameter values<br />

The first letter of the element name is a key letter indicating the element type, for example:<br />

R for resistor, M for MOSFET, V for voltage source, and X for subcircuit instance.<br />

Component Names<br />

Component names start with the component reserved characters and continue with an arbitrary<br />

sequence of alphanumeric characters, including %, $, #, _. Component names cannot be broken<br />

at the end of a line.<br />

Node Name Conventions<br />

Node names may contain an arbitrary sequence of alphanumeric characters and some nonalphanumeric<br />

characters including: !, $, #, _, [], , :, \, /, |, +, -, *, %.<br />

Eldo® User's Manual, 15.3 99


Eldo Netlist Setup<br />

Simulator Commands and Options<br />

The following characters are not allowed in node names: (), {}, ', =. Node names can not begin<br />

with any of the following characters: *, +, -, &, |, ". Do not use the period character (.) in a node<br />

name because it is reserved as a hierarchy separator between a subcircuit name and a node<br />

name.<br />

Node names cannot be broken at the end of a line.<br />

Whenever Eldo sees a node name with suffix “.0”, Eldo assumes that node 0 was intended if the<br />

name also begins with an X, for example, the following are identical:<br />

C1 a XA.0 1p<br />

C1 a 0 1p<br />

Alternatively, with the following syntax, a node named a.0 is created as a regular node.<br />

C1 a a.0 1p<br />

Node Names Used Inside Subcircuits<br />

The following example shows a legal node name used to access a node from a higher level of<br />

hierarchy than the one in which it is defined:<br />

X27.X113.N3<br />

The node N3 is located within a subcircuit X113 which, in turn, is located inside another<br />

subcircuit X27.<br />

See Also<br />

• Sources chapter in the Eldo Reference Manual<br />

• Passive Device Elements chapter in the Eldo Reference Manual<br />

• Diode Models chapter in the Eldo Reference Manual<br />

• BJT Models chapter in the Eldo Reference Manual<br />

• MOSFET Models chapter in the Eldo Reference Manual<br />

Related Topics<br />

Netlist Structure<br />

General Aspects of the Language Syntax<br />

Simulator Commands and Options<br />

Simulator command statements include:<br />

• Analysis commands to specify what type of analysis to run.<br />

100<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Simulator Commands and Options<br />

• Display commands to control the messages and outputs generated from simulation.<br />

• Simulation control commands to modify general options for simulation.<br />

• Circuit description commands to describe the attributes of the circuit.<br />

Simulator control options, specified with the .OPTION command, to modify execution<br />

behavior; netlist options are divided into the following groups:<br />

Simulator compatibility<br />

Simulation speed, accuracy, and efficiency<br />

Model control<br />

Noise analysis<br />

Simulation output control<br />

Eldo Control Language<br />

Optimizer output control<br />

Netlist parser control<br />

Miscellaneous simulation control<br />

RC reduction<br />

Simulation display control<br />

File generation<br />

Mathematical algorithm<br />

Mixed-mode<br />

Multiple .OPTION commands can be used in a netlist. A single .OPTION statement can<br />

contain multiple options. The order of definition is not usually important. In case of a<br />

double definition, the last specified value is used.<br />

• Output commands define which simulation results will be written to the output files for<br />

display, and include:<br />

o<br />

o<br />

.EXTRACT<br />

Extracts waveform information using a combination of arithmetic expressions or<br />

pre-defined functions (.MEAS is also supported as an alternative).<br />

.PLOT<br />

Specifies which simulation results have to be kept by the simulator for graphical<br />

viewing and post-processing. Results are written to .wdb binary output files for postprocessing.<br />

Related Topics<br />

Tip<br />

See also “Simulator Commands” and “Simulator and Control Options” in the<br />

Eldo Reference Manual.<br />

Netlist Structure<br />

Output Commands Overview<br />

Eldo® User's Manual, 15.3 101


Eldo Netlist Setup<br />

End Statement<br />

End Statement<br />

Use the .END command to terminate the input description. Any text which follows it is ignored,<br />

unless there is another .END statement; in which case, all lines between the preceding .END<br />

and the current .END are treated as another circuit to simulate. This enables the possibility to<br />

have several circuits in the same netlist file.<br />

Tip<br />

See “.END” in the Eldo Reference Manual.<br />

Related Topics<br />

Netlist Structure<br />

General Aspects of the Language Syntax<br />

102<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

General Aspects of the Language Syntax<br />

General Aspects of the Language Syntax<br />

The following sections provide a summary of the Eldo language syntax. The Eldo Reference<br />

Manual contains complete descriptions of all the devices, sources, macromodels and commands<br />

listed in the following pages.<br />

Tip<br />

See “Documentation Syntax Conventions” on page 39 for a detailed description of the<br />

meanings of the different fonts, brackets, and so on, used throughout this manual.<br />

Continuation Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

Comment Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

Parameter Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

Case-Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105<br />

Numerical Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108<br />

Continuation Lines<br />

The length of one input line is limited to 2000 characters. A line may be continued by using the<br />

+ character at the beginning of the new line. In arithmetic expressions, this leading + sign will<br />

be ignored arithmetically and handled as a continuation. Two + signs may be placed together to<br />

both continue the line, and perform the addition operation.<br />

Related Topics<br />

Netlist Structure<br />

General Aspects of the Language Syntax<br />

Comment Lines<br />

A new comment line must begin with the * or // characters.<br />

If the comment follows an Eldo statement on the same line (inline comment), it must begin with<br />

the ! (or, in some cases, the *) character. The inline comment character (! or *) must be<br />

preceded by a white space. Otherwise, the ! or * character are handled as valid characters that<br />

can, for example, be used in node names or be ignored in other cases. The * character is not<br />

allowed as an inline comment on .EXTRACT, .DEFMAC, .DEFWAVE, .MEAS,<br />

.OBJECTIVE, and .PARAM commands. Use the .COMCHAR command to specify different<br />

inline comment characters.<br />

* <br />

! <br />

Eldo® User's Manual, 15.3 103


Eldo Netlist Setup<br />

Parameter Names<br />

The inline comment character (! or *) must be preceded by a white space. If not, Eldo could<br />

ignore it in the case of a parameter value, or consider it a valid character in node names. In the<br />

example below, the first line is accepted, without any error or warning message, to be identical<br />

to the second:<br />

r1 1 2 5! 22<br />

r2 2 0 5 22<br />

“5!” is interpreted as the number 5 and the 22 is parsed as the TC1 temperature coefficient.<br />

A set of comment lines can also be grouped together into a block as shown below:<br />

#com<br />

A block of<br />

comment<br />

#endcom<br />

In these cases the * character is not needed.<br />

Tip<br />

See “.COMCHAR” in the Eldo Reference Manual.<br />

Related Topics<br />

Netlist Structure<br />

General Aspects of the Language Syntax<br />

Parameter Names<br />

Parameter names may contain an arbitrary sequence of alphanumeric characters, including %, $,<br />

#, _, !. Parameter names cannot be broken at the end of a line. Parameter names should not<br />

contain boolean operators. Such a name can be quite ambiguous.<br />

String Parameters<br />

Eldo accepts quoted character strings as parameter values. These string values may be used for<br />

model names and filenames. To use a string as a parameter, enclose the string within double<br />

quotes, for example:<br />

.param TT1="ResMod"<br />

A string parameter can be defined on multiple lines if the string on each line is enclosed within<br />

double quotes, for example:<br />

104<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Case-Sensitivity<br />

.SIGBUS mybus base=bin TFALL=3n TRISE=3n THOLD=20n TDELAY=50n VHI=5 VLO=0<br />

+ pattern $(PAT)<br />

.PARAM PAT= " 00000 00001 00010 00011 00100 00101 00110 00111 "<br />

+ " 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 "<br />

+ " 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 "<br />

+ " 11100 11101 11110 11111 00000 00001 00010 00011 00100 00101 "<br />

The space before the double quote at the right hand side is mandatory. Without it, Eldo will<br />

generate an error.<br />

The value of a string is retrieved by specifying the dollar sign ($) and parentheses ( ), for<br />

example:<br />

.param MOD="Pmos1"<br />

m1 d g s b $(MOD) w=1u l=1u<br />

.param STIMFILE='"Stim.txt"'<br />

v1 1 0 pwl file=$(STIMFILE) R<br />

String parameters can be used in .SIGBUS or pattern sources. A sweep (for example .STEP) can<br />

also be made on string parameters.<br />

Reserved Keywords<br />

Some keywords should not be specified in a .PARAM command. If they are then errors will be<br />

generated.<br />

Tip<br />

See “.PARAM” in the Eldo Reference Manual.<br />

Related Topics<br />

Netlist Structure<br />

General Aspects of the Language Syntax<br />

Assigning Parameter Values<br />

Case-Sensitivity<br />

Eldo supports case-sensitive netlist formats with the command-line argument -case. When<br />

specified, all names (nodes, device instances, models, subcircuit definitions and instances,<br />

labels) will be case-sensitive. Eldo commands remain case-insensitive.<br />

Notes<br />

• Running Eldo in -compat mode does not change the behavior of the netlist parser when<br />

case-sensitivity is specified.<br />

Eldo® User's Manual, 15.3 105


Eldo Netlist Setup<br />

Case-Sensitivity<br />

• Running Eldo with the -case argument applies case-sensitivity to the full netlist. If the<br />

netlist contains different language parts then the argument is applied to all parts.<br />

Examples<br />

If you have the following netlist with case-sensitive model names (rLk and rlk):<br />

test1.cir<br />

.model rlk res level=4 RSH=1000<br />

.model rLk res level=4 RSH=10000<br />

Ibias1 0 N1 1mA<br />

Rbig1 N1 0 rLk L=10u W=10u<br />

Ibias2 0 N2 1mA<br />

Rbig2 N2 0 rlk L=10u W=10u<br />

.OP<br />

.end<br />

then you must run Eldo in case-sensitive mode:<br />

<strong>eldo</strong> test1.cir -case<br />

The voltage for node N1 will be 1V while voltage for node N2 it will be 10V. If you run Eldo in<br />

default mode on this netlist, it will exit with the following error generated:<br />

ERROR 504: In file "./test1.cir" line 3:<br />

+ MODEL "RLK": is defined twice.<br />

Here follows another example using case-sensitivity in nodes names (N1 and n1):<br />

Test2.cir<br />

Ibias1 0 N1 1mA<br />

Rbig1 N1 0 1K<br />

Ibias2 0 n1 1mA<br />

Rbig2 n1 0 1k<br />

.OP<br />

.end<br />

again you must run Eldo in case-sensitive mode:<br />

<strong>eldo</strong> test2.cir -case<br />

and the Eldo output will be:<br />

DC:2 iterations FOR DC analysis<br />

N1<br />

1.0000E+00<br />

n1<br />

2.0000E+00<br />

Running Eldo in default mode will output:<br />

DC:2 iterations FOR DC analysis<br />

N1<br />

1.5000E+00<br />

106<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Numerical Values<br />

There is no error generated in this example but the results are different.<br />

Tip<br />

See the “-case” command line argument in the Eldo Reference Manual.<br />

Related Topics<br />

Netlist Structure<br />

General Aspects of the Language Syntax<br />

Numerical Values<br />

Values are always handled as real numbers. They may be specified in exponential notation or<br />

with scale factors with symbols.<br />

See the scale factor symbols listed in Table 4-1:<br />

Notes<br />

Table 4-1. Scale Factors<br />

Symbol Multiplier Name<br />

A 1.0×10 −18 atto<br />

F 1.0×10 −15 femto<br />

P 1.0×10 −12 pico<br />

N 1.0×10 −9 nano<br />

U 1.0×10 −6 micro<br />

M 1.0×10 −3 milli<br />

K 1.0×10 3 kilo<br />

MEG 1.0×10 6 Mega<br />

G 1.0×10 9 Giga<br />

T 1.0×10 12 Tera<br />

• Letters which are not scale factors are ignored if they immediately follow a number.<br />

Hence 10, 10V and 10Hz all represent the same number, 10. However, 10A will be<br />

interpreted as 1.0e −17 , because of the atto scaling factor.<br />

Eldo® User's Manual, 15.3 107


Eldo Netlist Setup<br />

Environment Variables<br />

• Letters immediately following a scale factor are ignored. Thus M, MA, MSEC, and<br />

MMHOS all represent the same scale factor, M.<br />

• The scale factor M represents 1×10 −3 or “milli” units. 1×10 6 or “mega” units are<br />

specified using the MEG scale factor. This is commonly confused in SPICE syntax.<br />

• Scale factors are not cumulative. KK is not MEG, but K, since the second letter is<br />

ignored.<br />

• M.K.S. units are used throughout the netlist.<br />

• dB represents decibels.<br />

Related Topics<br />

Netlist Structure<br />

General Aspects of the Language Syntax<br />

Environment Variables<br />

Eldo supports the syntaxes $(variable) and ${variable} to identify environment variables. For<br />

example, if in the shell terminal you have an environment variable “var1” defined, you can use<br />

it in commands that operate with pathnames:<br />

.include test$(var1)lib/test.inc<br />

.include test${var1}lib/test.inc<br />

Related Topics<br />

General Aspects of the Language Syntax<br />

108<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Functions, Operators and Expressions<br />

Functions, Operators and Expressions<br />

This topic is divided into:<br />

Arithmetic Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

Arithmetic Functions<br />

A set of arithmetic functions may be used in Eldo for the calculation of device parameters,<br />

model parameters, new waves, and so on. These are divided into two groups:<br />

• Functions for use without restriction in any “runtime” expression, see Table 4-2.<br />

• Functions for use only in .EXTRACT, .DEFWAVE or .SETSOA, see Table 4-3.<br />

Table 4-2. Arithmetic Functions and Operators<br />

Function<br />

Returns<br />

ABS(val)<br />

Absolute value of val: |val|<br />

ACOS(val)<br />

Arc cosine of val<br />

ACOSH(val)<br />

Arc hyperbolic cosine of val<br />

ASIN(val)<br />

Arc sine of val<br />

ASINH(val)<br />

Arc hyperbolic sine of val<br />

ATAN(val)<br />

Arc tangent of val<br />

ATANH(val)<br />

Arc hyperbolic tangent of val<br />

BITOF(a, b) Returns “1” if bit b of the integer value of parameter a is a “1”.<br />

Returns “0” if bit b of the integer value of parameter a is a<br />

“0”.Returns “0” if bit b ≥ 32.<br />

CEIL(val)<br />

COS(val)<br />

COSH(val)<br />

DB(val)<br />

Ceiling rounding function, returns the smallest integer value not<br />

less than val. This is known as rounding up. For example ceil(1.25)<br />

returns 2.0 and ceil(-1.25) returns -1.0.<br />

Cosine of val, where val is defined in radians<br />

Hyperbolic cosine of val<br />

value in dBs of val (20×log 10 (val))<br />

DDT(val)<br />

DERIV(val)<br />

EXP(val)<br />

Returns the derivative of val<br />

Returns the derivative of val<br />

Exponent of val<br />

Eldo® User's Manual, 15.3 109


Eldo Netlist Setup<br />

Arithmetic Functions<br />

Function<br />

FLOOR(val)<br />

IDT(val)<br />

INTEG(val)<br />

Table 4-2. Arithmetic Functions and Operators (cont.)<br />

Returns<br />

Floor rounding function, returns the largest integer value not<br />

greater than val. This is known as rounding down. For example<br />

floor(1.25) returns 1.0 and floor(-1.25) return -2.0.<br />

Returns the integral of val<br />

Returns the integral of val (equivalent to IDT). Value returned<br />

does not depend on the current x-axis value.<br />

INT(val)<br />

LIMIT(a, b, c)<br />

LOG(val)<br />

LOG10(val)<br />

MAX(val1,..., valn)<br />

DMAX(val1,...,valn)<br />

MIN(val1,..., valn)<br />

DMIN(val1,...,valn)<br />

MOD(x,y)<br />

ONGRID([offset], step, value)<br />

POW(val1, val2)<br />

PWR(val1, val2)<br />

PWL(xvalue, interp, x1, y1, ...<br />

xn, yn)<br />

PWL_CTE(xvalue, interp, x1,<br />

y1, ... xn, yn)<br />

Integer value of val (equivalent to TRUNC)<br />

Returns b if a < b, returns c if a > c, returns a otherwise<br />

Neperian logarithm of val<br />

Decimal logarithm of val<br />

Returns the maximum of val1 to valn. There is no limit to the<br />

number of values that can be specified.<br />

Returns the minimum of val1 to valn. There is no limit to the<br />

number of values that can be specified.<br />

Modulo operator. Floating-point remainder value function of<br />

dividing x by y. Returns the value x − i × y, where i is the quotient<br />

of x / y, rounded towards zero to an integer. An error is returned if<br />

y is 0.<br />

Returns 1 if value = offset + k×step where k is an integer value.<br />

Otherwise it returns 0. Default value of offset is 0.0.<br />

Returns the value of val1 to the power of the integer part of val2<br />

Returns the absolute value of val1, raised to the power of val2,<br />

with the sign of val1<br />

Generates an interpolated output value from an input value xvalue,<br />

provided as the first argument, using a PWL table described as a<br />

series of x, y points passed as arguments to the function. interp=0|1<br />

specifies whether the y value is interpolated linearly (1) or not (0).<br />

xn and yn are used to calculate the equivalent output value.<br />

Generates an interpolated output value from an input value xvalue,<br />

provided as the first argument, using a PWL table described as a<br />

series of x, y points passed as arguments to the function. interp=0|1<br />

specifies whether the y value is interpolated linearly (1) or not (0).<br />

xn and yn are used to calculate the equivalent output value. This<br />

function will return y1 if the x value < x1, and will return yn if the<br />

x value > xn.<br />

110<br />

Eldo® User's Manual, 15.3


Function<br />

PWL_LIN(xvalue, interp, x1,<br />

y1, ... xn, yn)<br />

ROUND(val)<br />

SELECT(table_name, xvalue<br />

[, LINEAR |<br />

SAMPLE_HOLD |SPLINE])<br />

SGN(val)<br />

SIGMA()<br />

SIGN(val)<br />

SIGN(val1, val2)<br />

SIN(val)<br />

SINH(val)<br />

SMABS(val, eps)<br />

SMMAX(a, b, eps)<br />

SMMIN(a, b, eps)<br />

SMSGN(val, eps)<br />

SMSIGN(val, eps)<br />

SQRT(val)<br />

STRMATCH(str, pat)<br />

STRCMP(str1,str2)<br />

Table 4-2. Arithmetic Functions and Operators (cont.)<br />

Returns<br />

Eldo Netlist Setup<br />

Arithmetic Functions<br />

Generates an interpolated output value from an input value xvalue,<br />

provided as the first argument, using a PWL table described as a<br />

series of x, y points passed as arguments to the function. interp=0|1<br />

specifies whether the y value is interpolated linearly (1) or not (0).<br />

xn and yn are used to calculate the equivalent output value. This<br />

function linearly extrapolates the first value using the first two<br />

points of the function if the x value < x1. The last value will also be<br />

linearly extrapolated using the last two points if the x value > xn.<br />

Rounded, to the nearest integer, value of val<br />

Returns a value interpolated from an array of (x,y) values<br />

according to a given x value. table_name is the name of an array of<br />

(x,y) values defined with a .TABLE command, xvalue is the x<br />

value for which y is requested, LINEAR | SAMPLE_HOLD |<br />

SPLINE indicates the interpolation method to use to calculate the y<br />

value. The default is SAMPLE_HOLD.<br />

Returns the signum of val: +1 if val>0, 0 if val=0, -1 if val=0, -1 if val


Eldo Netlist Setup<br />

Arithmetic Functions<br />

Function<br />

STRNCMP(str1,str2,n)<br />

STRCASECMP(str1,str2)<br />

STRNCASECMP(str1,str2,n)<br />

TAN(val)<br />

TANH(val)<br />

TRUNC(val)<br />

Table 4-2. Arithmetic Functions and Operators (cont.)<br />

Returns<br />

Compare the first n characters of two strings. Returns logical true<br />

(1) if the first n characters of the strings str1 and str2 are the same,<br />

and returns logical false (0) otherwise. Case sensitive.<br />

Compare the strings str1 and str2, ignoring case, and returns<br />

logical true (1) if the two are identical, and logical false (0)<br />

otherwise.<br />

Compare the first n characters of two strings, ignoring case.<br />

Returns logical true (1) if the first n characters of the strings str1<br />

and str2 are the same, and returns logical false (0) otherwise.<br />

Tangent of val, where val is defined in radians<br />

Hyperbolic tangent of val<br />

Truncated value of val (integer part of real value)<br />

WINTEG(wave [, t]) Returns the time or frequency integral of waveform wave at time t.<br />

Value returned depends on the current x-axis value.<br />

Table 4-3. Arithmetic Functions Used Only in .EXTRACT, .DEFWAVE,<br />

.SETSOA<br />

Function<br />

Returns<br />

COMPLEX(a, b) Returns a complex number using “a” as the real part and “b” as the<br />

imaginary part<br />

CONJ()<br />

IMAG()<br />

MAGNITUDE()<br />

REAL()<br />

STOSMITH(val)<br />

YTOSMITH(val)<br />

ZTOSMITH(val)<br />

VALUEOF()<br />

Returns the conjugate of a complex number<br />

Returns the imaginary part of a complex number<br />

Returns the magnitude of a complex number<br />

Returns the real part of a complex number<br />

Returns a normalized value of a complex quantity. These functions<br />

can be used to convert complex functions (S/Y/Z parameters<br />

generated by a .STEP analysis) so they can be correctly plotted in a<br />

Smith chart; an “example” is given in the .PLOT command in the<br />

Eldo Reference Manual.<br />

Returns the current value of an extract. For example:.tcl_wave bar<br />

= TEST("value_of_meas",valueof(meas(foo)))<br />

112<br />

Eldo® User's Manual, 15.3


Notes<br />

Eldo Netlist Setup<br />

Arithmetic Functions<br />

• Where VAL is defined in the previous tables, it normally means a numeric value, but in<br />

certain cases, the functions may also be applied to waves.<br />

• The MAX and MIN functions are automatically converted into DMAX and DMIN<br />

functions when necessary, for example: R1 1 2 {min(2,1,5)} is equivalent to: R1 1 2<br />

{dmin(2,1,5)} which is also equivalent to: R1 1 2 1<br />

There is no limit to the number of arguments that can be used in MAX, MIN, DMAX<br />

and DMIN arguments.<br />

• If three arguments are specified for MIN (that is, MIN(a,b,c)), this represents the MIN of<br />

waveform a in the time window [b,c]. Use DMIN to return the minimum of a, b and c as<br />

computed at each time step.<br />

• The MIN/MAX/ABS/SGN/SIGN functions, when used in bias-dependent expression<br />

(such as in R(V)), can cause non-convergence due to these operators making the<br />

function non-derivable. Use option MMSMOOTH to make them derivable, to avoid<br />

such problems. Alternatively use the SMMIN, SMMAX, SMABS, SMSGN and<br />

SMSIGN operators.<br />

• DDT(VAL) and IDT(VAL) can only be used on E & G elements, see the corresponding<br />

descriptions for the Voltage Controlled Voltage Source and Voltage Controlled Current<br />

Source. Expressions associated with R/L/C devices do not support DDT/IDT<br />

operators.The DDT operator differs from the DERIV operator in the sense that DDT<br />

utilizes the integration scheme used by Eldo, while the DERIV operator exclusively uses<br />

the Backward-Euler algorithm.<br />

• There can be differences between the DERIV operator of Eldo and the equivalent<br />

operator (DRV) of EZwave. The formula used for the Eldo DERIV operator is<br />

Backward-Euler (that is, deriv(f(t)) = (f(t) - f(t-h))/h) with t being the current time and h<br />

being the time step, however the DRV operator of EZwave uses a more complex<br />

formula based on f(t), f(t-h) and f(t+h). Eldo cannot use the EZwave “post-processor”<br />

formulation, because it requires to know the value at t+h, which is not possible when the<br />

simulator is running (Eldo at time t cannot know the value at t+h), but post-processor<br />

formulation is usually smoother, hence both formulations are used.<br />

• Nested COMPLEX() statements are forbidden, as well as using complex quantities for<br />

the real or imaginary part. Corresponding errors are:<br />

ERROR 3040: Nested complex(,) functions is not allowed.<br />

ERROR 3041: Complex quantities can not be used inside complex(,)<br />

function.<br />

• If CEIL, ROUND, FLOOR cause convergence problems, Eldo will generate a warning<br />

and invite the <strong>user</strong> to specify option NOLTEDISC to bypass LTE checks.<br />

Eldo® User's Manual, 15.3 113


Eldo Netlist Setup<br />

Arithmetic Functions<br />

-compat Argument<br />

When the -compat argument is active, the following arithmetic function/operator rules apply:<br />

• log(x) = sign(x) × log(abs(x)).<br />

• log10(x) = sign(x) × log10(abs(x)).<br />

• db(x) = sign(x) × 20.0×log10×abs(x)).<br />

• sqrt(x) is −sqrt(abs(x)) if x is negative.<br />

• x**y is computed as x ψ if x is positive, x ΙΝΤ(ψ) if x is negative, and 0 if x is 0.<br />

• The power operator (^) has highest precedence (same as standard Eldo).<br />

Related Topics<br />

Operators<br />

Note<br />

In Eldo standard mode: sqrt(x) returns an error if x is negative; x**y is computed as<br />

exp(y×log(x)) if x is strictly positive, 0 if x is 0, and returns an error if x is negative.<br />

114<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Operators<br />

Operators<br />

This topic is divided into the following:<br />

Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

Bitwise Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

Operator Precedence<br />

The order of precedence and associativity of operators in Eldo affect the evaluation of<br />

expressions. For example, in the expression a=2+b*3, which happens first? the addition or the<br />

multiplication? Expressions with higher-precedence operators are evaluated first.<br />

Table 4-4 summarizes the precedence from highest to lowest and associativity (the order in<br />

which the operands are evaluated) of Eldo operators. Where several operators appear together,<br />

they have equal precedence and are evaluated according to their associativity.<br />

Table 4-4. Operator Precedence<br />

Operator Description Associativity<br />

() function call left-to-right<br />

! - logical NOT, unary negation right-to-left<br />

** ^ power, power (synonym) left-to-right<br />

* / multiply, divide left-to-right<br />

+ - add, subtract left-to-right<br />

> bitwise left shift, bitwise right shift left-to-right<br />

< >= less than, less than or equal, greater than, left-to-right<br />

greater than or equal<br />

== != equal, not equal left-to-right<br />

& bitwise AND left-to-right<br />

| bitwise OR left-to-right<br />

&& logical AND left-to-right<br />

|| logical OR left-to-right<br />

Related Topics<br />

Arithmetic Operators<br />

Operators<br />

Eldo® User's Manual, 15.3 115


Eldo Netlist Setup<br />

Operators<br />

Arithmetic Operators<br />

The arithmetic operators available are +, -, *, / and ^ (or **) for power.<br />

Note<br />

The power operator (^) has the highest precedence. For example:<br />

1+4^2 gives the result: 17<br />

2*3^2 gives the result: 18<br />

x^y or x**y is computed as exp(y*log(x)) if x is strictly positive, 0 if x=0, and returns an error<br />

if x is negative. Specify option POWNEG0 to allow a negative x value in power expressions:<br />

the expression will return 0. In versions of Eldo prior to v6.6, a negative x value was allowed.<br />

Related Topics<br />

Boolean Operators<br />

Operators<br />

Boolean Operators<br />

The following boolean expressions/operators are available:<br />

Table 4-5. Boolean Operators<br />

Operator Meaning<br />

!= not equal to<br />

== equal to<br />

< less than<br />

greater than<br />

>= greater than or equal to<br />

|| OR operator<br />

&&<br />

AND operator<br />

Related Topics<br />

Bitwise Operators<br />

Operators<br />

116<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Operators<br />

Bitwise Operators<br />

The following Bitwise operators are available:<br />

Related Topics<br />

Expressions<br />

Operators<br />

Table 4-6. Bitwise Operators<br />

Operator Meaning<br />

&<br />

Bitwise AND operator<br />

| Bitwise OR operator<br />

> Bitwise shift right<br />

operator<br />

Eldo® User's Manual, 15.3 117


Eldo Netlist Setup<br />

Expressions<br />

Expressions<br />

Expressions can be used in a netlist with the following restrictions.<br />

• Numerical expressions must be contained within braces, { and }, single quotes, ' and ', or<br />

parentheses, ( and ).<br />

• String expressions should be contained in double quotes, " and ".<br />

• Mathematical grouping within expressions must be done using normal parentheses, (<br />

and ).<br />

• Constants and parameters may be used in expressions, together with the built-in<br />

functions (see “Arithmetic Functions” on page 109) and operators (see “Operators” on<br />

page 115).<br />

Expressions may be used in the following situations:<br />

• Parameters in the calculation of MOS geometries and R, C and L values.<br />

• Parameter values in the .MODEL command.<br />

• Time point values in the signal descriptions PULSE, PWL, SFFM, SIN and EXP.<br />

• Parameters values in the .SIGBUS command.<br />

• Voltage and current source values.<br />

• S and Z transform (FNS and FNZ) devices.<br />

• .PARAM, .EXTRACT and .DEFWAVE commands.<br />

• E and G sources described by functions or tables.<br />

• R, C and L devices described by functions.<br />

Examples:<br />

Tip<br />

Some parameters may appear in expressions but will cause an error if used in a<br />

.PARAM command. For more information on these see “.PARAM” in the Eldo<br />

Reference Manual.<br />

r1 1 2 {3.0*p1-4k}<br />

.model nn nmos vt0={p2-p2/2.0}<br />

e1 1 2 value={15v*sqrt(v(3,2))}<br />

.defwave pow=v(a)*i(b)<br />

.param x1={2*sqrt(a)}<br />

Note<br />

By default, double quotes are used to specify a parameter string. However, in -compat<br />

mode, double quotes are interpreted as single quotes.<br />

118<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Expressions<br />

Specifying the Simulation Time in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

Conditional Evaluation of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

Specifying the Simulation Time in Expressions<br />

The current simulation time can be specified inside expressions using the TIME keyword.<br />

TIME is a variable returned by the simulator which gives the value of the current simulation<br />

time and may be used in subsequent calculations. The TIME variable may be used in the<br />

formulation of time-dependent expressions.<br />

The TIME variable may be used in conjunction with VALUE={EXPR} in resistors, capacitors,<br />

inductors, and E and G sources to specify devices/sources whose values vary with time.<br />

g1 1 0 value={TIME * 1u}<br />

r1 1 0 1<br />

.tran 1 10<br />

.print tran v(1)<br />

.end<br />

This specifies a voltage controlled current source between nodes 1 and 0. The current through<br />

g1 from node 1 to node 2 is equal to the current simulation time (TIME) multiplied by 1×10 −6 .<br />

Related Topics<br />

Expressions<br />

Conditional Evaluation of Expressions<br />

Conditional Evaluation of Expressions<br />

Parameters or source values can be evaluated in expressions containing conditional statements.<br />

Syntax<br />

VALIF(CONDITION,expression1,expression2)<br />

EVAL(CONDITION?expression1:expression2)<br />

If CONDITION is TRUE, then VALIF (or EVAL) returns expression1 else it returns<br />

expression2. The keyword VALIF (or EVAL) can be used in any expression. The VALIF<br />

operator also accepts strings in .PARAM statements. This is useful for selecting models<br />

according to parameter values.<br />

Examples<br />

.param p1 = 1.0<br />

.param p2 = 2.0<br />

.param p3 = valif(p1>p2,p1+1.5,p2+1.5)<br />

Here, P3 will be assigned the value 3.5.<br />

Eldo® User's Manual, 15.3 119


Eldo Netlist Setup<br />

Expressions<br />

.param p1 =1<br />

.param p2 = 2<br />

.param pu = valif(p1 > p2,"r1","r2")<br />

.model r1 r r = 1<br />

.model r2 r r = 2<br />

i1 1 0 1<br />

r1 1 0 $(pu) 1<br />

This examples shows the use of strings. Here, model r2 will be used because condition p1 > p2<br />

is false.<br />

Note<br />

The EVAL syntax is closer to ‘C’ language, and may be more convenient for some <strong>user</strong>s.<br />

Related Topics<br />

Expressions<br />

120<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Directives<br />

Directives<br />

Directives can be used to simulate variations of circuits.<br />

IF, ELSE, ELSEIF, ENDIF Conditional Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

String Operator on If Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

Directives Interpreted by the Eldo Parser (Default) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

Directives to Postpone Block of Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

Directives Interpreted using the C Pre-Processor (-E/-EE Arguments). . . . . . . . . . . . . 126<br />

IF, ELSE, ELSEIF, ENDIF Conditional Statements<br />

IF, ELSE, ELSEIF, and ENDIF conditional statements can be used inside the Eldo netlist and<br />

can be used to instantiate devices depending on parameter size. ELIF and ELSIF keywords are<br />

also accepted as the ELSEIF condition.<br />

• The IF, ELSE, ELSEIF, ENDIF section must not contain any command, otherwise<br />

unexpected results can be obtained. Warnings are issued in this case.<br />

• The parameters used in expressions of if statements are evaluated during the parsing of<br />

the design only, even if these parameters are changed at run time (because of .STEP, for<br />

instance), then the design will not be changed, a message will be issued that the<br />

operation cannot be taken into account. The .ALTER mechanism should be preferred<br />

here.<br />

Example of usage:<br />

.subckt foo 1 param: p1 = 1<br />

if (p1 >= 1.5)<br />

r1 1 0 '2*p1'<br />

else<br />

r1 1 0 '3*p1'<br />

endif<br />

.ends<br />

i1 1 0 3<br />

x1 1 foo p1 = 3<br />

.op<br />

.end<br />

In this example, the value of resistor r1 will be 6 Ω.<br />

Note<br />

Errors are issued if ADMS is used, or if X or Y statements are present inside if-endif blocks.<br />

Tip<br />

See “.IF, .ELSE, .ELSEIF, .ENDIF” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 121


Eldo Netlist Setup<br />

String Operator on If Expressions<br />

Related Topics<br />

Directives<br />

String Operator on If Expressions<br />

String Operator on If Expressions<br />

It is possible to use C-like functions strcmp and strncmp inside if statements used for netlist<br />

configuration. strcmp and strncmp return “0” when the string matches, “not 0” otherwise.<br />

Examples:<br />

.param p1 = "myp1"<br />

if (strcmp(p1,"myp1") == 0)<br />

i1 1 0 1<br />

else<br />

i1 1 0 2<br />

endif<br />

r1 1 0 1<br />

Here, i1 will be 1A.<br />

if (strcmp($(p1),"myp1") == 0)<br />

i1 2 0 3<br />

else<br />

i1 2 0 4<br />

endif<br />

r1 2 0 1<br />

Similarly, i1 will be 3A because the if statement is true.<br />

Related Topics<br />

Directives<br />

Directives Interpreted by the Eldo Parser (Default)<br />

Directives Interpreted by the Eldo Parser (Default)<br />

By default, (without the -E or -EE argument) Eldo understands the following simple preprocessor<br />

commands: #if, #define , #undef , #ifdef , #ifndef <br />

#else, #endif. These can be used as conditional statements to select a part of the netlist.<br />

For example:<br />

#define NO_RESISTOR<br />

...<br />

#ifndef NO_RESISTOR<br />

R1 A B 1k<br />

#endif<br />

...<br />

122<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Directives Interpreted by the Eldo Parser (Default)<br />

A definition can be specified in two ways:<br />

• when invoking Eldo with:<br />

<strong>eldo</strong> -define <br />

• in the netlist with:<br />

#define <br />

...<br />

For example, -define foo on the command line is equivalent to #define foo in the netlist. For<br />

both methods, the netlist statement #ifdef foo will be true.<br />

The #if statement can be used for making complex conditional statements using logical<br />

operators: OR ||, AND &&; and comparison operators: not equal to !=, equal to ==. For<br />

example:<br />

#if (defined(U) || defined(A))<br />

The #if directive can also be used in conjunction with the defined function, that is, if a #define<br />

is active, defined() returns 1 whatever value is assigned to .<br />

Pre-processor commands are position dependent; Eldo behaves like C: the #define is acted upon<br />

only when encountered. In an Eldo (or Questa ADMS mixed-signal) netlist there are normal<br />

SPICE commands and/or netlist pre-processor commands that work completely differently.<br />

SPICE commands are usually position-independent but pre-processor commands beginning<br />

with the # character are position-dependent according to C language.<br />

Examples<br />

V1 1 0 1<br />

#define U 0<br />

#if (defined(U) || defined(A))<br />

R1 1 0 1<br />

#else<br />

R1 1 0 2<br />

#endif<br />

.end<br />

Because U is defined in the above example, defined(U) will return 1. The #if statement is true<br />

and R1 will be set to 1. When the #if statement is substituted with: #if (defined(U) &&<br />

defined(A)), the #if statement will no longer be true because A is not defined. R1 would<br />

therefore be set to 2.<br />

An example of position dependency:<br />

If Eldo is invoked with “a” defined (<strong>eldo</strong> netlist.cir -define a), in the following:<br />

Eldo® User's Manual, 15.3 123


Eldo Netlist Setup<br />

Directives Interpreted by the Eldo Parser (Default)<br />

#ifdef b<br />

c1 1 0 1<br />

#endif<br />

#ifdef a<br />

#define b<br />

l1 2 0 1<br />

#endif<br />

the first #ifdef block is ignored because identifier b is not defined until the next #ifdef block.<br />

The correct order for identifier b to be taken into account in this example is as follows:<br />

#ifdef a<br />

#define b<br />

l1 2 0 1<br />

#endif<br />

#ifdef b<br />

c1 1 0 1<br />

#endif<br />

AMS_VERSION<br />

You can make use of the predefined name AMS_VERSION in directive statements.<br />

AMS_VERSION is accepted in two formats:<br />

• The year followed by the index number, for example 2010.1 or 2012.2 (for the 12.2<br />

release).<br />

• The release version, for example 12.2.<br />

For lettered releases, specify the letter to be taken into account, for example 2012.2a or 12.2a<br />

for the 12.2a release.<br />

Note<br />

This feature only works in a netlist being run by AMS2010.1 or newer.<br />

Using a version testing pragma such as this enables using and maintaining a single library with<br />

multiple releases of Eldo.<br />

Examples<br />

An example of using predefined name AMS_VERSION in #define statements:<br />

#if ( AMS_VERSION >= 2010.2)<br />

.lstb vd1 vd2<br />

#else<br />

*versions prior to 2010.2 do not support differential LSTB<br />

.lstb vstb<br />

#endif<br />

Another example using predefined name AMS_VERSION shows you can specify different<br />

options/settings depending on the version of Eldo you are using.<br />

124<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Directives to Postpone Block of Commands<br />

#if (AMS_VERSION >= 2012.1)<br />

.param p1 = 1<br />

#else<br />

.param p1 = 2<br />

#endif<br />

i1 1 0 p1<br />

r1 1 0 1<br />

.dc<br />

.end<br />

Related Topics<br />

Directives<br />

Directives to Postpone Block of Commands<br />

Directives to Postpone Block of Commands<br />

Every line declared between these two directives is postponed until the end of the netlist<br />

(.END). This could be used, for example, to enable a .ALTER definition anywhere in the netlist.<br />

If multiple #NETLIST_END/#END_NETLIST_END blocks are declared, they are handled<br />

according to their order in the design. These blocks can be defined in the top netlist or any<br />

included files. Nested #NETLIST_END/#END_NETLIST_END directives are ignored.<br />

Syntax<br />

#NETLIST_END<br />

...<br />

#END_NETLIST_END<br />

Example<br />

i1 1 0 dc 'p1'<br />

.dc<br />

#netlist_end<br />

.alter<br />

.param p1=3m<br />

#end_netlist_end<br />

.param p1=1m<br />

r1 1 0 1<br />

.extract dc v(1)<br />

.alter<br />

.param p1=2m<br />

.end<br />

In this example, three DC analyses will be performed: the first one using p1=1m, the second one<br />

using p1=2m, and the last one using p1=3m which is defined in a #netlist_end/#end_netlist_end<br />

block.<br />

Eldo® User's Manual, 15.3 125


Eldo Netlist Setup<br />

Directives Interpreted using the C Pre-Processor (-E/-EE Arguments)<br />

Related Topics<br />

Directives<br />

Directives Interpreted using the C Pre-Processor (-E/-EE Arguments)<br />

Directives Interpreted using the C Pre-Processor<br />

(-E/-EE Arguments)<br />

For an extended use of pre-processor commands to define macros and replace them inside the<br />

netlist (see the example below), the -E or -EE argument needs to be specified. These are not the<br />

Eldo default because the parsing of large circuits may be significantly slower.<br />

The -E argument forces Eldo to provide only the main netlist to the C pre-processor, whereas<br />

-EE ensures that all #include filename statements will be pre-processed before parsing. The<br />

.INCLUDE/.LIB statements, which are SPICE commands, are not understood by the C preprocessor<br />

and so will not be pre-processed.<br />

The #include directive can only be used when the -E/-EE arguments are specified.<br />

Note: The C pre-processor analyses files independently. Therefore #define statements are only<br />

known to the file they are defined in.<br />

The -define argument can also be specified on the command line, and it will have the same<br />

effect as without the -E/-EE arguments. To use #define in Eldo in the same way you define<br />

macros in the C language, the syntax is as follows:<br />

#define macro(args) expression<br />

When the macro is encountered in the netlist, it is replaced by the expression. Arguments of the<br />

macro will be replaced by the literals in the macro call. For example:<br />

#define sat_margin(device) abs(vds(device)-vdss(device))<br />

.extract sat_margin(XM0.M1)<br />

will be replaced by:<br />

.extract abs(vds(XM0.M1)-vdss(XM0.M1))<br />

Note<br />

Because -E/-EE uses the C pre-processor, you must ensure there is a carriage return<br />

proceeding the directive in the file to avoid problems. Uppercase function names are not<br />

accepted. Using comments defined with #com and #endcom are not compatible with -E/-EE.<br />

Related Topics<br />

Directives<br />

126<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Working With Subcircuits and Device Libraries<br />

Working With Subcircuits and Device Libraries<br />

This topic is divided into:<br />

Subcircuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Device Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />

Subcircuits<br />

Subcircuits can be used to simplify netlists because once defined they can be instantiated<br />

multiple times in the netlist. Subcircuit definitions and instances can be nested. The inner<br />

subcircuit definitions are local to the subcircuit definition in which they are defined, that is, they<br />

are not valid outside of it. Parameters contained in a subcircuit can be assigned explicitly or via<br />

the .PARAM command.<br />

Subcircuits may be parameterized. Symbols may be used as values within the subcircuit body<br />

which may be assigned values when the subcircuit is instantiated. A subcircuit may be stored in<br />

a library file, in which case the .SUBCKT LIB syntax should be used together with .LIB or<br />

.ADDLIB.<br />

A subcircuit may optionally be simulated using the differentiated accuracy system. The iteration<br />

technique used to process the subcircuit is chosen by the (ANALOG) optional keyword.<br />

Usually, a circuit with (ANALOG) specified indicates ‘high accuracy’.<br />

By default, when Eldo encounters multiple definitions of .SUBCKT statements an error is<br />

reported and the simulation is stopped. To enable the simulation to proceed you can force Eldo<br />

to only use the first definition by specifying option USEFIRSTDEF at the beginning of the<br />

netlist (any further definitions are ignored); or to only use the last definition specify option<br />

USE_LAST_SUBCKT or USELASTDEF (any previous definitions are ignored). The last<br />

definition takes into account contents included from library files.<br />

Order of Precedence of Subcircuit Parameter Assignments<br />

Parameters used within a subcircuit may be defined in several ways.<br />

• In the subcircuit instantiation:<br />

X1 N1 N2 N3 MY_SUBCIRCUIT P3=10<br />

• Internally, within the subcircuit:<br />

.SUBCKT MY_SUBCIRCUIT<br />

.PARAM p3=20<br />

.ENDS<br />

• In the subcircuit declaration:<br />

.SUBCKT MY_SUBCIRCUIT P1 P2 P3 PARAM: p3=2<br />

Eldo® User's Manual, 15.3 127


Eldo Netlist Setup<br />

Subcircuits<br />

• Or globally in the top level netlist:<br />

.PARAM p3=5<br />

X1 N1 N2 N3 MY_SUBCIRCUIT<br />

The precedence of these parameter assignment methods is, in descending order, subcircuit<br />

instantiation, internal subcircuit, subcircuit declaration which acts as a default only, and finally<br />

global declaration.<br />

Use option PARHIER to control the priorities for parameters.<br />

Note<br />

.PARAM assignments are order dependent within the netlist. Thus, a parameter value<br />

assigned using the .PARAM command will only apply to subcircuits instantiated after this<br />

.PARAM command. Therefore, for the below:<br />

.SUBCKT INV<br />

.PARAM p1=v0<br />

.ENDSx1 ... inv<br />

.param p1=v1<br />

This is accepted, and p1 retains the value of v0 within x1 (when option PARHIER is set to<br />

local).<br />

Accessing Nodes Inside Subcircuit Instances from Outside<br />

The following example illustrates how inner nodes may be accessed from outside of a subcircuit<br />

instance in which they are defined.<br />

.subckt inner n1 n2 n3<br />

r1 n1 n3 1k<br />

r2 n3 n8 4k<br />

q27 n1 n7 n8 nbip<br />

*...<br />

.ends inner<br />

.subckt outer n1 n2 n3 n4<br />

q1 n1 n5 n6 pbip<br />

*...<br />

x1 n10 n12 vdd inner<br />

*...<br />

.ends outer<br />

x13 n21 n25 n30 vdd outer<br />

cmill1 x13.n1 x13.n5 1.2p<br />

cmill2 x13.x1.n1 x13.x1.n5 0.9p<br />

Where cmill1 is the Miller Capacitance of q1 located inside the subcircuit x13 and cmill2 is the<br />

Miller Capacitance of q27 located inside x1 which in turn is located inside x13. Note that in this<br />

example, the capacitances are declared from outside of the subcircuit definitions.<br />

128<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Subcircuits<br />

Specifying Noise in Subcircuits<br />

By default, devices present noise contributions when a noise analysis is specified. The<br />

NONOISE parameter on a device model or instance can be specified so that no noise model will<br />

be used for the device when performing a noise analysis. The specification of noise on a device<br />

or subcircuit instance overrides any specification in the model definition (.MODEL statement).<br />

Noise can also be controlled at the subcircuit level in the following ways to specify that devices<br />

present no noise contribution to the noise analysis:<br />

• On the subcircuit definition (.SUBCKT statement) specify the (NONOISE) parameter.<br />

This parameter must be specified before the PARAM: or PAR=VAL specifications, if<br />

any.<br />

• On the subcircuit instance (X statement) specify the (NONOISE) or NOISE=0<br />

parameter. This parameter must be specified after the PARAM: or PAR=VAL<br />

specifications, if any.<br />

Local specification takes precedence. The specification of noise in the subcircuit overrides any<br />

specification in the parent subcircuit instance. In the following example:<br />

.subckt top1 in out (nonoise)<br />

Xinv1 in out inv wn=17u noise=1<br />

.ends<br />

XTOP in out top1 (nonoise)<br />

A noise analysis will run even though (NONOISE) is specified in the XTOP instance; this is<br />

because NOISE=1 is specified inside the subcircuit definition of top1.<br />

(INLINE) Keyword Example<br />

The following example illustrates how the (INLINE) keyword can be specified on the<br />

.SUBCKT instance, so that Eldo will not print the full hierarchical name of the device which has<br />

the same name as the .SUBCKT.<br />

X1 ... MFOO<br />

X2 ... MFOO<br />

.SUBCKT MFOO ... (INLINE)<br />

M1 ...<br />

MFOO<br />

M2<br />

...<br />

.ENDS<br />

In the OP table, it will not be X1.MFOO and X2.MFOO which appear, but simply X1 and X2.<br />

The other names, X1.M1, X2.M1, X1.M2 and X2.M2, will be printed out unaffected.<br />

DSCGLOB Option Example<br />

Nodes which appear in subcircuit definitions have priority over the nodes defined with<br />

.GLOBAL statements. Option DSCGLOB can be used to change this behavior. For example:<br />

Eldo® User's Manual, 15.3 129


Eldo Netlist Setup<br />

Subcircuits<br />

.GLOBAL QWE<br />

VG QWE 0 DC 3<br />

*.SUBCKT with a global node name in argument list<br />

.SUBCKT B QWE<br />

R1 QWE 0 1K<br />

.ENDS<br />

V2 PIN2 0 DC 2<br />

X2 PIN2 B<br />

By default, Eldo will connect R1 between PIN2 and 0 because the symbolic subckt pin QWE is<br />

related to real node PIN2.<br />

When option DSCGLOB=GLOBAL is specified Eldo will connect R1 between global node<br />

QWE and 0.<br />

Multiplication (M) Factor<br />

The M factor is an element multiplier, simulating the effect of multiple elements in parallel. The<br />

M factor can be specified as a subcircuit parameter and applies to all elements.<br />

For example, if you have a subcircuit defined and instantiated as follows:<br />

.SUBCKT MYRSUB IN OUT<br />

R1 IN 1 1000 M=4<br />

R2 1 OUT 1000<br />

.ENDS MYRSUB<br />

X1 IN OUT MYRSUB M=2<br />

By default, the resistances of X1.R1 and X1.R2 will be 125 Ω and 500 Ω respectively. It is<br />

simulated as if there are eight X1.R1 devices in parallel and two X1.R2 devices in parallel. As<br />

can be seen in the example, the M factor works through the hierarchy. When it is specified on a<br />

subcircuit instance (X instance), every element defined in the subcircuit will be duplicated by<br />

this multiplication factor.<br />

You should not specify an M factor value less than 1 on devices as this could lead to simulating<br />

devices that cannot be physically realized. However, specifying M=0 on a subcircuit instance<br />

means the M factor is ignored for that subcircuit.<br />

To change the M factor behavior, so that the M=val factor of a subcircuit instance is handled as<br />

a <strong>user</strong>-defined parameter instead of a multiplication factor, specify the M53 option. In the<br />

previous example, with M53 specified, the final resistances of X1.R1 and X1.R2 will be 250 Ω<br />

and 1000 Ω, respectively. It is simulated as if there are four X1.R1 devices in parallel.<br />

See Also<br />

• Subcircuit Instance in the Eldo Reference Manual<br />

• .SUBCKT in the Eldo Reference Manual<br />

• .GLOBAL in the Eldo Reference Manual<br />

130<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Subcircuits<br />

Related Topics<br />

Subcircuit Definitions and Calls<br />

Element and Source Definitions<br />

Device Libraries<br />

Eldo® User's Manual, 15.3 131


Eldo Netlist Setup<br />

Device Libraries<br />

Device Libraries<br />

To include model or subcircuit definitions from library files into the current input netlist the<br />

following statements are available. Eldo includes the whole contents of the file specified.<br />

• .INCLUDE<br />

Inserts the contents of a file into a .cir file. For example:<br />

.INCLUDE circuit_addon.inc<br />

Specifies that the contents of the circuit_addon.inc file be included in the circuit<br />

description file (netlist). In this case, the included file is resident in the same directory as<br />

the netlist.<br />

See “.INCLUDE” in the Eldo Reference Manual.<br />

• .LIB<br />

Inserts model or subcircuit definitions into an input netlist from a library file. For<br />

example:<br />

.LIB models.lib<br />

Specifies that any model and subcircuit information missing in the input netlist should<br />

be taken from the file models.lib. The models.lib file could contain model definitions for<br />

example:<br />

*BJT model definition<br />

.model qmod npn bf=160 rb=100 cjs=2p<br />

+ tf=0.3n tr=6n cje=3p cjc=2p vaf=100<br />

*...<br />

The input netlist could contain the following reference to the model defined:<br />

*main circuit<br />

q23 10 24 13 qmod<br />

Specifies the bipolar transistor q23 of model type qmod.<br />

See “.LIB” in the Eldo Reference Manual.<br />

• .ADDLIB<br />

Searches a directory for files with extensions .mod, .ckt, .sub and include in the .cir file<br />

the contents of files with names corresponding to referenced model and subcircuit<br />

definitions. For example:<br />

mn1 a b c d mna w=w l=l<br />

*...<br />

.ADDLIB 2 /<strong>user</strong>s/examples/<br />

.ADDLIB 1 /<strong>user</strong>s/models/<br />

132<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Device Libraries<br />

Specifies that all models and subcircuits missing in the input netlist should be searched<br />

for and extracted from .mod, .ckt, .sub or .cir files contained in the directories /<strong>user</strong>s/<br />

models/ and /<strong>user</strong>s/examples/ in this order. The file containing the model mna must be<br />

named mna.mod.<br />

See “.ADDLIB” in the Eldo Reference Manual.<br />

See also “Search Rules and Naming Conventions for Adding Libraries” on page 136.<br />

• .SCOPE<br />

See also:<br />

Associates a library to a set of instances, using a library identifier (key). For example:<br />

.LIB key=dk1 models1.lib foo<br />

.LIB key=dk2 models2.lib foo<br />

x1 a b foo<br />

x2 a b foo<br />

.SCOPE key=dk1 inst=x1<br />

.SCOPE key=dk2 inst=x2<br />

In this example, models1.lib and models2.lib both contain a definition of subcircuit foo.<br />

Each library is specified a different key, which is used to select the version of foo during<br />

instantiation. The .SCOPE commands attach a specific library to a specific instance with<br />

the key identifier. Here instance x1 is associated to the models1.lib library file, and<br />

instance x2 is associated to the models2.lib library file.<br />

See .SCOPE in the Eldo Reference Manual.<br />

• “Search Path Priorities” on page 133<br />

• “Library Variant Management” on page 134<br />

• “Deleting a Library” on page 136<br />

Search Path Priorities<br />

The order of directories in which include and library files are searched for is:<br />

1. Absolute path.<br />

2. Parent directory — Directories of the files in the calling hierarchy (files which contain<br />

the .INCLUDE/.LIB statement), the directory of the last calling file being searched first.<br />

3. Current directory — Directory from which Eldo was started.<br />

4. Search path — Specified using the -searchpath argument or .OPTION SEARCH=path<br />

within the netlist. If both are specified, then the contents of -searchpath is searched first.<br />

Eldo® User's Manual, 15.3 133


Eldo Netlist Setup<br />

Device Libraries<br />

Search Path Priorities Example<br />

The following example is related to search path priorities and shows the order in which<br />

directories are searched. If you have the following command in a netlist file:<br />

.LIB ./foo/myfile.lib<br />

and if in the library file myfile.lib, you have:<br />

.LIB toto<br />

then if file toto is not found in the netlist directory or parent directory, it is searched for in the<br />

current directory from which Eldo was started.<br />

In the case of a nested .LIB or .INCLUDE, the directory of the library file containing the .LIB or<br />

.INCLUDE statement is searched.<br />

Tip<br />

See “.OPTION SEARCH” and the “-searchpath” command-line argument in the Eldo<br />

Reference Manual.<br />

Related Topics<br />

Device Libraries<br />

Library Variant Management<br />

The .LIB command can be used to manage library variants such as “best,” “worst,” and<br />

“typical” process variations, also called device corners. Within the library, you must have<br />

sections defined by library variant blocks using the syntax:<br />

.LIB libtype<br />

* device corner specification<br />

.ENDL<br />

An example library file, mos_corners.lib, containing the device corners follows:<br />

lib case management<br />

.lib best<br />

.model MN nmos level=3 vt0=0.5<br />

.endl best<br />

.lib typ<br />

.model MN nmos level=3 vt0=0.75<br />

.endl typ<br />

.lib worst<br />

.model MN nmos level=3 vt0=1.0<br />

.endl worst<br />

134<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Device Libraries<br />

The device corner variants are the different threshold voltages. In the main netlist, you specify<br />

the library filename together with the name of a library variant to be used, for example the<br />

following specifies the “typ” device corner is to be used from the library file mos_corners.lib:<br />

lib case management<br />

.lib mos_corners.lib typ<br />

m1 vdd g 0 0 MN l=1.2U w=5U<br />

vdd vdd 0 5<br />

vg g 0 0.8<br />

.op<br />

.end<br />

Tip<br />

See “.LIB” and “.ENDL” in the Eldo Reference Manual.<br />

Related Topics<br />

Device Libraries<br />

Library Nesting<br />

Eldo libraries may themselves contain other libraries.<br />

For example, consider a library lib.lib:<br />

.lib best<br />

.lib mos.lib best<br />

.lib bip.lib best<br />

.endl best<br />

.lib typ<br />

.lib mos.lib typ<br />

.lib bip.lib typ<br />

.endl typ<br />

If a netlist contains the command:<br />

.LIB lib.lib best<br />

then Eldo will browse the mos.lib and bip.lib which are surrounded by .LIB best and<br />

.ENDL best.<br />

Tip<br />

See “.LIB” and “.ENDL” in the Eldo Reference Manual.<br />

Related Topics<br />

Device Libraries<br />

Eldo® User's Manual, 15.3 135


Eldo Netlist Setup<br />

Device Libraries<br />

Deleting a Library<br />

Use the .DEL LIB command to remove a library name used in a previous run from the nominal<br />

description. Next time a simulation is run, the .DEL LIB statement removes the corresponding<br />

.LIB statement and a new library can be specified. It can be used in conjunction with the<br />

.ALTER command to create modifications within the netlist before re-runs.<br />

This example demonstrates how a library file can be replaced after a first run. delib1.lib is<br />

removed and delib2.lib is put in its place:<br />

v1 1 0 1<br />

x1 1 2 r<br />

r2 2 0 1<br />

.dc<br />

.extract dc v(2)<br />

.lib delib1.lib<br />

.alter<br />

.del lib delib1.lib<br />

.lib delib2.lib<br />

.end<br />

Tip<br />

See “.DEL LIB” and “.LIB” in the Eldo Reference Manual.<br />

Related Topics<br />

Device Libraries<br />

Search Rules and Naming Conventions for Adding<br />

Libraries<br />

Search rules and uppercase/lowercase character naming conventions for the .ADDLIB<br />

command are as follows:<br />

• A filename must be in all uppercase or all lowercase and appended with a lowercase<br />

.mod, .ckt, .sub, or .cir.<br />

.mod for models only<br />

.sub, .ckt or .cir for subcircuits only<br />

• Files with uppercase are searched first. For example:<br />

My_2N2222a.mod (not searched)<br />

MY_2N2222A.mod (searched first)<br />

my_2n2222a.mod (searched last)<br />

• For subcircuits .ckt extension is searched first, then .sub is searched, .cir is searched last.<br />

For example:<br />

136<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Device Libraries<br />

op11A.ckt (not searched)<br />

OP11A.ckt (searched first)<br />

op11a.ckt (searched second)<br />

OP11A.sub (searched third)<br />

op11a.sub (searched fourth)<br />

OP11A.cir (searched fifth)<br />

op11a.cir (searched last)<br />

Related Topics<br />

Device Libraries<br />

Tip<br />

See “.ADDLIB” in the Eldo Reference Manual.<br />

Using Libraries in Eldo Interactive Mode<br />

It is possible to use the .LIB mechanism in Eldo interactive mode. The netlist must contain one<br />

or several lines of type:<br />

.LIB KEY=kname FNAME [LIBTYPE]<br />

In interactive mode, the following commands can be issued:<br />

.LIB key=toto mymod.tech nominal<br />

.LIB key=toto mymod.tech worst<br />

.LIB key=toto mymod2.tech<br />

Eldo will search for the kname to identify which library must be replaced. Limitations of the<br />

.LIB command when issued in interactive mode are as follows:<br />

• Subcircuits are not replaced.<br />

When .LIB is specified in the input file, it can be used to select a subcircuit to be<br />

included in the design. Since taking a subcircuit from another library than the library<br />

specified in the input file could result in a change of topology (and changing topology of<br />

the current design is strictly impossible), Eldo would issue an error whenever the <strong>user</strong><br />

attempts to substitute one subcircuit for another.<br />

• Switching between GUDM and non-GUDM models is prohibited. Similarly, switching<br />

between GUDM models is prohibited.<br />

• Only MOS, BJT, DIODE, JFET, R, L and C .MODEL commands can be substituted.<br />

Attempting to substitute other kinds of models will lead to an error.<br />

Tip<br />

See “.LIB” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 137


Eldo Netlist Setup<br />

Device Libraries<br />

Related Topics<br />

Device Libraries<br />

138<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Encrypting Libraries<br />

Encrypting Libraries<br />

This topic describes the encryption tool available in Eldo, used to encrypt libraries.<br />

• See “encrypt_<strong>eldo</strong> Tool” on page 140 for details of the tool syntax and arguments.<br />

• See “Protection of Encrypted Libraries” on page 144 for details of the IP protection<br />

system.<br />

Eldo® User's Manual, 15.3 139


Eldo Netlist Setup<br />

encrypt_<strong>eldo</strong> Tool<br />

encrypt_<strong>eldo</strong> Tool<br />

Use the encrypt_<strong>eldo</strong> tool to encrypt the libraries containing .SUBCKT definitions, .MODEL/<br />

.PARAM cards, .PROTECT/.UNPROTECT blocks, and Verilog-A source files. It uses DES<br />

encryption with an internal 56-bit key. The file will be automatically decrypted by Eldo at run<br />

time, but no encrypted information is displayed in any output files generated by Eldo, such as<br />

the ASCII output file (.chi). This guarantees the confidentiality of the data.<br />

Usage<br />

encrypt_<strong>eldo</strong> -i input_file [-o output_file] [-semi] [-nosemi]<br />

[-compat|-veriloga] [-v]<br />

Arguments<br />

• -i input_file<br />

Input filename. The file can contain model cards, parameter cards, subcircuit definitions,<br />

and protected blocks for encryption.<br />

• -o output_file<br />

Output filename. If this is not specified, the filename will be input_file.crypt.<br />

• -semi<br />

Enables semi-transparency for encrypted blocks generated from subcircuit definitions and<br />

.PROTECT/.UNPROTECT blocks. See “Semi-Transparent Encryption” on page 147.<br />

• -nosemi<br />

Disables semi-transparency for encrypted blocks, discarding any <strong>user</strong> annotation.<br />

Equivalent to removing all .SEMITRANSPARENT commands from the input file before<br />

encryption. See “Semi-Transparent Encryption” on page 147.<br />

• -compat<br />

Simulator compatibility argument, to encrypt HSPICE source files. When specified only<br />

.PROTECT/.UNPROTECT blocks will be encrypted.<br />

• -veriloga<br />

Encrypt Verilog-A source files.<br />

• -v<br />

Returns the software version number. No encryption is performed.<br />

Description<br />

Notes for Verilog-A Usage<br />

• When running the simulation multiple times, Eldo will not decrypt and recompile the<br />

Verilog-A file each time if the file or the launching parameters are unchanged.<br />

• .PROTECT/.UNPROTECT blocks have no effect with the -veriloga argument.<br />

140<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

encrypt_<strong>eldo</strong> Tool<br />

• .INLINE/.ENDINLINE act as .SUBCKT/.ENDS. The inline block is encrypted in the<br />

same way as subcircuits; it does not require the -veriloga argument.<br />

• For partial encyrption, use the Verilog-A source code directives `pragma protect begin<br />

\ `pragma protect end, `protect \ `endprotect, or `protect begin \ `protect end, to<br />

specify the blocks for protection inside the Verilog-A model file.<br />

• By default -veriloga encrypts the complete file, except the lines containing the keywords<br />

module, macromodule, endmacromodule, endmodule.<br />

Examples<br />

1. Unencrypted netlist (diode.lib):<br />

.model DNPPSJU<br />

+ d level=8 diolev=9 tr=27 tnom=27<br />

+ vr=0 cjbr=0.00072727 cjsr=8.649e-12<br />

+ cjgr=3.946e-10 jsdbr=3.5987e-07 jsdsr=3.4372e-12<br />

+ jsdgr=6.9543e-14 jsgbr=6.0153e-06 jsgsr=1.0506e-09<br />

+ jsggr=6.4326e-10 vdbr=0.55572 vdsr=0.49482<br />

+ vdgr=0.79381 pb=0.44466 ps=0.99<br />

+ pg=0.43889 nbj=1 nsj=1.2<br />

+ ngj=1<br />

.subckt diode A B<br />

.model my_diode D diolev=9 tr=27<br />

tnom=27<br />

+ vr=0 cjbr=0.00072727 cjsr=8.649e-12<br />

+ cjgr=3.946e-10 jsdbr=3.5987e-07 jsdsr=3.4372e-12<br />

R1 A A1 1k<br />

D1 A1 B1 my_diode<br />

R2 B1 B 1k<br />

.ends<br />

2. Command for encrypting this netlist with the Eldo license:<br />

encrypt_<strong>eldo</strong> -i diode.lib -o diode_crypt.lib<br />

3. Output file generated (diode_crypt.lib):<br />

Eldo® User's Manual, 15.3 141


Eldo Netlist Setup<br />

encrypt_<strong>eldo</strong> Tool<br />

%.model DNPPSJU<br />

%6A41CAC8CE3D50CB0B85F0126F6D1CCF23E5CA9C3BD0E7F21716251CB19DA7<br />

%36FBBF69EF23E826A0478CA39376DCC8C4B7DBCD4A5A61CD26999C7F74FA2C<br />

%75D9133AD4A91885751DDCE235FB1D944B96A4491CE3EDC5247588A7697FA1<br />

%F912ED3488C832AB598321B58D3F25D176D794F6376924596B7948A4068996<br />

%35363770AA370F3C10331A8FC0B5822FFDA963774FFFC74F1FFA3021EA693F<br />

%D88A1A3E8DDBC62012F317FE3BF379A999B6638BFE8A7A97E6B46C6E1E2B60<br />

%A2A9362162265083A1A898E5CF8EF5A5F6FF420A52C2E23FB9364E2BC13F29<br />

%6F79757FF86BB080DCBAA2B4FC7EBF863B3B0C7C896BAF6525DF00901CD9E1<br />

%6FC7E1BD4E691E6B006451AAE3302D64AD912114D5AC4F3D436BB1AAE5582F<br />

%1A<br />

.subckt diode A B<br />

%A40ACD98849922AC04809D607E2424D4255F6765FF779A2EF49C24DC0<br />

%483152A2024CA2B0C2E975EE8E41C1DCD2098C152082EA626C990AE64<br />

%7B7F38B8FFEA9868E28164C55E19139F8378A9FF6BB9946CC7448D744<br />

%127ADEA26B511101C631E3D455880E6E56EFBFEBC481964A7300C9FBF<br />

%5B57245A6CC15D2A72BC833D8437DCF53D85F1B017366485676443756<br />

%2BFFAC6DFEB58B5A43ACD64C30ECA1F7491380ED4F8777FBDF2BF6DA1<br />

%287BD1F4C86D96B25ABA5164851F196324189F42BFC67116235368287<br />

%5<br />

.ends<br />

4. Input file (test.cir)<br />

* example for encryption netlist<br />

.lib diode_crypt.lib<br />

v1 1 0 1<br />

d1 1 2 DNPPSJU<br />

x1 2 0 diode<br />

142<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

encrypt_<strong>eldo</strong> Tool<br />

.op<br />

.end<br />

5. Invoking Eldo.<br />

<strong>eldo</strong> test.cir<br />

Results<br />

The netlist is not displayed inside the Eldo output (.chi) file, as shown below:<br />

.MODEL DNPPSJU<br />

----> the lines 4 to 13 are not displayed here.<br />

.SUBCKT DIODE A B<br />

-> the lines 16 to 23 are not here.<br />

Warning 902: "DIOLEV in model DIODE.MY_DIODE": Model parameter ignored.<br />

Warning 902: "TR in model DIODE.MY_DIODE": Model parameter ignored.<br />

Warning 902: "VR in model DIODE.MY_DIODE": Model parameter ignored.<br />

Warning 902: "CJBR in model DIODE.MY_DIODE": Model parameter ignored.<br />

Warning 902: "CJSR in model DIODE.MY_DIODE": Model parameter ignored.<br />

Warning 902: "CJGR in model DIODE.MY_DIODE": Model parameter ignored.<br />

Warning 902: "JSDBR in model DIODE.MY_DIODE": Model parameter ignored.<br />

Warning 902: "JSDSR in model DIODE.MY_DIODE": Model parameter ignored.<br />

.ENDS<br />

V1 1 0 1<br />

D1 1 2DNPPSJU<br />

X1 2 1 DIODE<br />

The encrypted model parameters are not displayed inside the Eldo output .chi file.<br />

Tip<br />

See “.PROTECT” and “.UNPROTECT” in the Eldo Reference Manual.<br />

Related Topics<br />

Protection of Encrypted Libraries<br />

Running Eldo<br />

Eldo® User's Manual, 15.3 143


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

Protection of Encrypted Libraries<br />

An improved IP protection system is available for IP providers, providing an additional level of<br />

protection compared to simple encryption available through the encrypt_<strong>eldo</strong> utility. The device<br />

model libraries provided by IP providers (typically foundries) often contain process sensitive<br />

information such as SPICE device models, equations, technology parameters, and so on. These<br />

may be encrypted, but there is no easy way to restrict the usage of these encrypted model<br />

libraries. In particular, there is no way to restrict the allowed duration of usage.<br />

The purpose of the enhanced IP protection system is to enable an IP provider to ship encrypted<br />

and licensed model libraries to their customers, independent of Mentor Graphics. The licensing<br />

mechanism might be a standard commercial license managing system. Using the system, the IP<br />

provider can control the usage of its model libraries in exactly the same way that any<br />

commercial software is controlled, using features, license files, expiration dates, and so on. The<br />

system is designed in such a way that Mentor Graphics does not have to know the final end<strong>user</strong>s,<br />

nor generate any keys nor licenses. The IP provider creates and provides both the<br />

encrypted IP (the model libraries) and an “IP access library.” The IP access library is a dynamic<br />

load library (compiled C code). Mentor Graphics does not interfere with the encryption process,<br />

nor the license generation, maintenance, renewals, and so on, which are the entire responsibility<br />

of the IP provider.<br />

Preparing and Installing a Protected Library<br />

Lists the steps involved in preparing and installing a vendor-specific protected/encrypted<br />

library.<br />

Procedure<br />

1. The vendor, or IP provider, prepares a single IP access library. This is a dynamic load<br />

library coded in C.<br />

2. The vendor then prepares and encrypts the Eldo library source for each library the<br />

vendor wishes to distribute.<br />

3. The <strong>user</strong> installs the vendor-specific IP access library and the vendor protected/<br />

encrypted libraries.<br />

4. The <strong>user</strong> then installs the licensing software and keys provided by the IP vendor.<br />

144<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

Figure 4-2. IP Protection<br />

Related Topics<br />

encrypt_<strong>eldo</strong> Tool<br />

Coding and Encrypting a Protected Library<br />

Description of the Loading and Control Process<br />

Creating the IP Access Library<br />

Installing a Protected Library<br />

Eldo® User's Manual, 15.3 145


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

Coding and Encrypting a Protected Library<br />

If you are an IP provider wishing to protect a library, you must include the .IP_protect command<br />

in your library file (.lib).<br />

Usage<br />

.IP_protect IP_provider=NameOfTheIPProvider<br />

+ IP_access_lib=NameOfTheAccessLibrary feature=NameOfTheFeature<br />

+ ixl=ixl_crc ixl64=ixl64_crc<br />

Arguments<br />

• IP_provider=NameOfTheIPProvider<br />

The name of the IP provider, as it will appear in messages. Use a simple string comprising<br />

only letters (A-Z) and numbers (0-9). Do not use blanks.<br />

• IP_access_lib=NameOfTheAccessLibrary<br />

The name of the dynamic load library which communicates between Eldo and the actual<br />

license manager. Note that NameOfTheAccessLibrary must be given without its extension.<br />

Eldo will add the correct extension (such as “.so”) according to the platform. This library<br />

will have to be located in a path listed in the LD_LIBRARY_PATH environment variable.<br />

• feature=NameOfTheFeature<br />

The feature name which will be checked-out to grant access to the protected library.<br />

• ixl=ixl_crc, ixl_64=ixl64_crc<br />

These are CRC values of the IP access libraries, as returned by the <strong>eldo</strong>_checksum.exe<br />

utility provided in the AMS distribution. These CRC values must be provided, and are<br />

checked by Eldo to verify the integrity of the IP access library. The <strong>eldo</strong>_checksum.exe<br />

utility must be run once per physical platform.<br />

Description<br />

The .IP_protect command must be written inside a .PROTECT/.UNPROTECT area of the<br />

device model library (.LIB). The device model library then has to be encrypted using the<br />

standard <strong>eldo</strong> encryption tool, encrypt_<strong>eldo</strong>, which is provided with the AMS distribution. As<br />

the .IP_protect command is inside a .PROTECT/.UNPROTECT area, it is encrypted as well,<br />

and therefore cannot be read nor changed by the final <strong>user</strong>.<br />

Tip<br />

See “.IP_PROTECT”, “.PROTECT” and “.UNPROTECT” in the Eldo Reference Manual.<br />

Related Topics<br />

encrypt_<strong>eldo</strong> Tool<br />

Description of the Loading and Control Process<br />

146<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

Creating the IP Access Library<br />

Installing a Protected Library<br />

List of Encryption Errors and Warnings<br />

Semi-Transparent Encryption<br />

Semi-transparent encryption enables an encrypted part of the circuit to behave as if it was<br />

protected by a .PROTECT/.UNPROTECT block.<br />

By default, non-semi-transparent encryption blocks are not printed in the output file nor<br />

accessible through various plotting and extracting functions of Eldo. However, commands and<br />

devices that are not encrypted but appear in a protected block are not printed in the output file,<br />

but it is still possible to plot or extract nodes and devices.<br />

Semi-transparent encryption avoids encrypted content from being printed in the output file, but<br />

enables that content to be plotted or extracted.<br />

• Semi-transparent encryption with the encrypt_<strong>eldo</strong> utility<br />

Specify encrypt_<strong>eldo</strong> command line argument -semi to activate semi-transparency for<br />

encrypted blocks generated from subcircuit definitions and .PROTECT/.UNPROTECT<br />

blocks.<br />

• Semi-transparent encrypted blocks<br />

An encrypted block in a circuit netlist appears as consecutive lines made of a heading %<br />

sign followed by a string of hexadecimal characters of an arbitrary length, for example:<br />

%886B59DED5CEB36FC3D6EE8D90E8048F<br />

%BB6460E7E01502C4F0D03A632D324F2D<br />

Eldo deciphers the block into a list of original text lines:<br />

.INCLUDE r.inc<br />

V1 0 1 10<br />

A semi-transparent encrypted block looks exactly like a normal encrypted block, but<br />

once deciphered, the first command is .SEMITRANSPARENT. If the command appears<br />

anywhere but at the beginning of the deciphered lines, it is discarded. For example, if an<br />

encrypted block is deciphered into the following original text lines, then these lines are<br />

handled as semi-transparently encrypted:<br />

.SEMITRANSPARENT<br />

.INCLUDE r.inc<br />

V1 0 1 10<br />

When encrypt_<strong>eldo</strong> command line argument -semi is specified, it produces encrypted<br />

blocks starting with the .SEMITRANSPARENT command (for encrypted blocks<br />

generated by subcircuit definitions and the .PROTECT/.UNPROTECT blocks).<br />

Eldo® User's Manual, 15.3 147


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

• Safety guarantee<br />

The .SEMITRANSPARENT command is effective only if it is found at the beginning of<br />

the deciphered content of an encrypted block. The semi-transparency property only<br />

applies to the content of the very same encrypted block. This constraint guarantees that<br />

it is not possible to transfer the semi-transparency property to encrypted blocks that were<br />

not semi-transparently encrypted. The Eldo encryption scheme guarantees that there is<br />

no way for an attacker to decipher or modify the content of an existing encrypted block<br />

without computing the Eldo key. There is no way for an attacker to prepend<br />

.SEMITRANSPARENT to the content of an encrypted block in order to make it semitransparent.<br />

• User-defined semi-transparent encrypted block<br />

You can manually insert .SEMITRANSPARENT as the first command of a subcircuit<br />

definition or a protected block. As long as the command is in plain-text it is discarded by<br />

Eldo. But once the circuit netlist is encrypted (using the encrypt_<strong>eldo</strong> utility), the<br />

commands are processed by Eldo as if they appear at the proper location. If you specify<br />

the encrypt_<strong>eldo</strong> utility without the -semi argument, then the only semi-transparent<br />

blocks generated are those you manually annotated.<br />

The additional encrypt_<strong>eldo</strong> utility -nosemi argument produces non-semi-transparent<br />

encrypted blocks, discarding any <strong>user</strong> annotation. It is equivalent to removing every<br />

.SEMITRANSPARENT command from the input file before encrypting it.<br />

• Semi-transparent encryption of Verilog-A blocks.<br />

Examples<br />

Verilog-A modules embedded in a SPICE netlist, using the .INLINE command or<br />

described in a separate file, can be encrypted using the same mechanism above. Module<br />

internal nodes and variables are given public visibility while keeping the<br />

implementation private. To encrypt a Verilog-A file, specify the encrypt_<strong>eldo</strong> utility<br />

with the -veriloga argument.<br />

Only protected modules that have the Verilog `pragma protect viewport compiler<br />

directive defined before the `pragma protect begin directives, will be encrypted in a<br />

semi-transparent way. The other modules that do not have this directive before the<br />

`pragma protect begin are encrypted in a standard way. The encrypt_<strong>eldo</strong> utility -semi<br />

argument is not mandatory to achieve semi-transparent encryption of Verilog-A<br />

modules. If this argument is specified then all modules to be encrypted in a file are done<br />

so in a semi-transparent way.<br />

The .SEMITRANSPARENT command is optional if the encrypt_<strong>eldo</strong> utility is specified with<br />

the -semi argument. .MODEL commands must be included inside a .PROTECT or a .SUBCKT<br />

statement in order for them to be semi-transparently encrypted. For example, to encrypt a model<br />

semi-transparently, pass the following commands to the encrypt_<strong>eldo</strong> utility:<br />

148<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

.PROTECT<br />

.SEMITRANSPARENT<br />

.MODEL ...<br />

.MODEL ...<br />

.UNPROTECT<br />

This example shows a Verilog-A with partial protection and viewport directives:<br />

`include "disciplines.vams"<br />

`timescale 1ns / 100ps<br />

module circuit (out);<br />

output out;<br />

wire in, out;<br />

parameter integer frequency=20000000;<br />

multiplier mltp1 (in, out);<br />

stimulus #(.fr(frequency)) stim1(in);<br />

endmodule // circuit<br />

`pragma protect viewport<br />

`pragma protect begin<br />

module multiplier (in, out);<br />

input in;<br />

output out;<br />

electrical in, out;<br />

parameter mult = 2;<br />

analog begin<br />

V(out)


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

`include "disciplines.vams"<br />

`timescale 1ns / 100ps<br />

module circuit (out);<br />

output out;<br />

wire in, out;<br />

parameter integer frequency=20000000;<br />

multiplier mltp1 (in, out);<br />

stimulus #(.fr(frequency)) stim1(in);<br />

endmodule // circuit<br />

`pragma protect begin<br />

module multiplier (in, out);<br />

input in;<br />

output out;<br />

electrical in, out;<br />

parameter mult = 2;<br />

analog begin<br />

V(out)


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

encrypted library, the .LIB command in the netlist is a regular .LIB command (that is, whether<br />

the device model library is encrypted or not does not change the usage).<br />

Eldo decides if access is granted or denied by calling a function in the IP access library. This<br />

function must be coded by the IP provider, and it is in charge of interrogating the provider’s<br />

license daemon to grant/deny access to the necessary feature. See “Creating the IP Access<br />

Library” on page 151.<br />

As it would be too easy to fool this system by replacing the IP access library by another<br />

dynamic library which always returns ‘ALLOWED’, Eldo verifies that the checksum of the<br />

loaded library is the same as the one specified in the .IP_protect command. That means that if a<br />

new IP access library is compiled, the .IP_protect command must be rebuilt, and the model<br />

library re-encrypted, as the CRC will have changed. Note that a CRC is platform dependent, and<br />

therefore several CRCs must be provided in the .IP_protect command to accommodate the<br />

various targeted platforms (ixl and so on).<br />

The standalone executable, <strong>eldo</strong>_checksum.exe, generates the CRC of the library. This is<br />

available in the standard AMS distribution, located in the $MGC_AMS_HOME/$VCO/bin<br />

directory.<br />

For example, run:<br />

$MGC_AMS_HOME/$VCO/bin/<strong>eldo</strong>_checksum.exe <br />

where NameOfTheAccessLibrary is a .so file on Linux. Specify this name without its extension.<br />

The utility returns a CRC value which must be provided to the .IP_protect command. It must be<br />

run once for each platform.<br />

The NameOfTheIPprovider character string is used to display correct messages to the final <strong>user</strong><br />

if there is a problem during the license check-out.<br />

Related Topics<br />

Coding and Encrypting a Protected Library<br />

Creating the IP Access Library<br />

Installing a Protected Library<br />

List of Encryption Errors and Warnings<br />

Creating the IP Access Library<br />

The required Eldo interface of the IP access library must contain two functions:<br />

ty_lib_status * get_license_third_party(char *feature);<br />

ty_lib_status * release_license_third_party(char *feature);<br />

Eldo® User's Manual, 15.3 151


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

The ty_lib_status type and the function prototypes are defined in the <strong>eldo</strong>_ipprotect.h include<br />

file, shown below. This is provided in the $MGC_AMS_HOME/include folder. The various<br />

return values and their meanings are explained in the comments.<br />

The compilation command for the shared library is as follows:<br />

gcc -I$MGC_AMS_HOME/include (...other include folders...) <br />

-o -shared<br />

This library does not need to be recompiled with each new version of Eldo unless this is<br />

explicitly stated in the release notes of a new version.<br />

Contents of <strong>eldo</strong>_ipprotect.h Include File<br />

typedef enum<br />

{<br />

/*! The license manager has successfully checked out the feature,<br />

* nothing special to do */<br />

getFeatureOk,<br />

/*! The license manager failed to check out the feature.<br />

* An error message will be printed and the simulation will stops.*/<br />

getFeatureNOk,<br />

/*! The license manager has checked out the feature, but a warning<br />

* should be printed<br />

* (for example: if the license is about to expire soon) */<br />

getFeatureOkWarn,<br />

/*! The license manager has released the feature, nothing special to do<br />

*/<br />

releaseFeatureOk,<br />

/*! The license manager failed to release the feature. A warning message<br />

* will be printed and the simulation will continue.*/<br />

releaseFeatureNOk,<br />

/*! The license manager has released the feature, but a warning<br />

* should be printed */<br />

releaseFeatureOkWarn<br />

} en_ipstatus;<br />

152<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

/**<br />

* This structure is used by <strong>eldo</strong> to check the result of the license<br />

* request.<br />

*/<br />

typedef struct<br />

{<br />

/* The status of the request. According to it some actions will be<br />

done.*/<br />

en_ipstatus status;<br />

/* The message that <strong>eldo</strong> must print. Once the message is printed, <strong>eldo</strong><br />

* will free the memory allocated for the message.<br />

*/<br />

char *message;<br />

} ty_lib_status;<br />

/**<br />

* \brief This function is used to check that the feature given in<br />

* argument is available. Eldo doesn't manage the possible queue<br />

* systems. It is up to the library loaded by <strong>eldo</strong> to do that job.<br />

*<br />

* \param feature is the feature name (as it appears in the license file)<br />

* needed to continue to parse the design<br />

*<br />

* \returns the status of the license check-out.<br />

* If the license check-out failed, <strong>eldo</strong> will print the attached<br />

* message as an error, will free it just after,<br />

* and will abort the simulation. It will work the same way<br />

* if the status is getFeatureOkWarn but the printed message<br />

* will be a warning and it will not abort the simulation.<br />

*/<br />

ty_lib_status * get_license_thrd_party(char *feature);<br />

/**<br />

* \brief That function is used to release the feature given in argument.<br />

* Eldo doesn't manage the possible queue systems. It is up to the<br />

* library loaded by <strong>eldo</strong> to do that job.<br />

*<br />

* \param feature is the feature name that has been previously checked out<br />

* and that must be released.<br />

*<br />

* \returns the status of the license checkin.<br />

* If the license checkin failed, <strong>eldo</strong> will print the attached<br />

* message as a warning and will free the message just after.<br />

* The simulation will not be aborted. It will work the same way<br />

* if the status is releaseFeatureOkWarn.<br />

*/<br />

ty_lib_status * release_license_thrd_party(char *feature);<br />

Eldo® User's Manual, 15.3 153


Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

Related Topics<br />

Coding and Encrypting a Protected Library<br />

Description of the Loading and Control Process<br />

Installing a Protected Library<br />

List of Encryption Errors and Warnings<br />

Installing a Protected Library<br />

For Eldo to be able lo load a protected library, the IP access library (a .so file on Linux) must be<br />

located in a directory named .../ixl and so on, depending on its binary origin (Linux and so on).<br />

The parent of that directory must be specified in the standard LD_LIBRARY_PATH variable.<br />

Example<br />

Having received the foo.so library (for Linux 32-bit) from your provider IpProvider, you want<br />

to put that library under the common shared folder /shared/common/thirdPartyLibs. You must<br />

create a specific folder according to the platform of the foo.so library. In this example it is a<br />

Linux 32-bit library so put the file under /shared/common/thirdPartyLibs/ixl.<br />

The path to include in the LD_LIBRARY_PATH variable is /shared/common/thirdPartyLibs.<br />

Eldo will automatically search under the ixl folder if it is run on the Linux 32-bit system.<br />

Related Topics<br />

Coding and Encrypting a Protected Library<br />

Description of the Loading and Control Process<br />

Creating the IP Access Library<br />

List of Encryption Errors and Warnings<br />

List of Encryption Errors and Warnings<br />

In the list of messages below, “%s” is a place-holder for the actual name of the library, name,<br />

and so on.<br />

ERROR 1608: Wrong vendor library, found at:\n+ %s\n+ The CRC of that<br />

library is not the expected one. Please contact your %s office.<br />

The checksum made on the found library does not match the one specified in the netlist.<br />

ERROR 1609: Unable to find the %s%s dynamic library provided by %s.\n+<br />

Check first your LD_LIBRARY_PATH. It must contain the path to %s/%s%s.\n+<br />

If you don’t have that library, please contact your %s office to get one.<br />

154<br />

Eldo® User's Manual, 15.3


Eldo was not able to find the requested library through the folder given in the<br />

LD_LIBRARY_PATH variable (with respect to the rule specified above).<br />

Eldo Netlist Setup<br />

Protection of Encrypted Libraries<br />

ERROR 1610: The protected part of the %s design requires a license to be<br />

used. Eldo is unable to get a valid license feature %s\n+ %s”<br />

Checkout of the license has failed.<br />

ERROR 1611: Shared library %s%s was found but an error occured during its<br />

loading.\n+ Please contact %s office.<br />

An unexpected error has occurred (there was a missing function, the simulation was aborted<br />

before, the crc has been changed, and so on).<br />

ERROR 1612: Wrong vendor library %s%s found. The CRC of that library is<br />

not the expected one. Please contact your %s office.<br />

The checksum made on the found library does not match the one specified in the netlist.<br />

ERROR 1616: In command .IP_Protect, missing %s parameter or parameter<br />

value.<br />

The command contains one or several parameters that have no value, or a mandatory parameter<br />

has been forgotten.<br />

ERROR 1618: Command .IP_Protect is not supported on that platform.<br />

You have tried to run a circuit protected by ip_protect on a Windows platform. (Windows is not<br />

supported.)<br />

ERROR 1619: Errors occur during command .IP_Protect: aborting the<br />

simulation.<br />

This appears at the end of the command if an error occurred before.<br />

ERROR 1620: Fatal error while %s license %s from provider %s.\n+ Please<br />

contact your provider for more details.<br />

Eldo is unable to get a proper return value when trying to check-out or check-in the license.<br />

ERROR 1621: Fatal error while loading shared library %s%s.\n+ Please<br />

contact %s office.”<br />

Eldo is unable to load the dynamic library.<br />

Warning 1447: Unable to release %s license, feature %s\n+ %s<br />

The license check-in failed.<br />

Warning 1476: License message from Provider: %s – Feature: %s\n+<br />

&quot;%s&quot;<br />

Eldo® User's Manual, 15.3 155


Eldo Netlist Setup<br />

Automatic Recognition of MOS Instantiations in TSMC Libraries<br />

The license tool has a specific message to deliver to the end <strong>user</strong>.<br />

Related Topics<br />

encrypt_<strong>eldo</strong> Tool<br />

Protection of Encrypted Libraries<br />

Automatic Recognition of MOS Instantiations<br />

in TSMC Libraries<br />

Eldo accepts MOS devices instantiated in TSMC libraries using subcircuit instantiations.<br />

TSMC provides two sets of libraries:<br />

• MACRO library—where MOS devices are represented by subcircuits, and hence uses<br />

the letter ‘X’ in the netlist for instantiation. This is the MACRO approach.<br />

• TSMC Modeling Interface (TMI) library—where MOS devices are instantiated<br />

normally as MOS devices.<br />

The same netlists can be used when switching from one library to another. If Eldo cannot find a<br />

subcircuit definition with the expected name, but finds a .MODEL definition, it converts the ‘X’<br />

instance into a normal MOS instance.<br />

Related Topics<br />

Model Definitions<br />

Subcircuit Definitions and Calls<br />

Running Multiple Runs<br />

The .MPRUN command runs multiple simulations on one multi-processor machine, or on many<br />

machines.<br />

Notes<br />

• When the simulation of the netlist is very short (for example less than 1s), the .MPRUN<br />

feature is not suitable because most of the simulation time is spent collecting results.<br />

One solution is to use USE_LOCAL_HOST=NO, but for very short simulations this is<br />

not enough, and total simulation times are similar with or without the .MPRUN<br />

command.<br />

• In all cases, Eldo will warn you if a host cannot be used.<br />

156<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Running Multiple Runs<br />

This will happen when you do not have the permissions to see the machine and/or to<br />

write in the working directory. This error must be fixed by the system administrator<br />

before the .MPRUN command can be used.<br />

• The netlist must be in a shared directory (a place visible from the other machines on the<br />

network).<br />

• If using local installations of Eldo, the installation patches (not the binaries) must be<br />

strictly identical on all machines.<br />

• Users need to be able to login remotely to other machines without supplying a password.<br />

If a <strong>user</strong> needs a password to login remotely to other servers, Eldo will be unable to<br />

access systems on those servers to launch tasks, because the other machines require<br />

passwords and Eldo cannot supply them.<br />

• The result of a .CALL_TCL command used with .MPRUN is unpredictable since the<br />

behavior of the Tcl function is unknown to Eldo. It does not know if the command opens<br />

output files or returns a waveform.<br />

• .MPRUN cannot be specified inside a .ALTER section.<br />

• If you set QUEUE=YES on the .MPRUN command, Eldo adds -queue on the command<br />

line of the remote processes. The local process does not queue license requests. If you<br />

simulate a netlist with -queue, both the main process and the remote processes can queue<br />

license requests.<br />

Usage<br />

Before performing a run on a remote host, the .MPRUN command must initialize the remote<br />

environment. By default, Eldo does the following before running a simulation:<br />

cd <br />

setenv MGC_AMS_HOME ...<br />

setenv MGLS_LICENSE_FILE ...<br />

If you specify INIT_FILE=filename, the sequence becomes:<br />

cd <br />

source <br />

setenv MGC_AMS_HOME ...<br />

setenv MGLS_LICENSE_FILE ...<br />

and if you also specify DEFAULT_INIT=NO, the sequence becomes:<br />

cd <br />

source <br />

and if you remove the INIT_FILE=filename, the sequence becomes:<br />

cd <br />

See Also<br />

• .MPRUN in the Eldo Reference Manual<br />

Eldo® User's Manual, 15.3 157


Eldo Netlist Setup<br />

Merging Instances in Parallel<br />

• -queue in the Eldo Reference Manual<br />

Merging Instances in Parallel<br />

By default, Eldo merges instances connected in parallel into a single instance. The parallel<br />

instances must have the same set of parameters, and follow each other consecutively.<br />

The multiple instances are reduced into a single instance by Eldo with the M parameter, for<br />

example:<br />

X1 1 2 FOO A=1 B=1<br />

X2 1 2 FOO A=1 B=1<br />

X3 1 2 FOO A=1.0 B=1<br />

X4 1 2 FOO A=1 B=1<br />

Here, X3 remains as it is because the character string for A does not match, X4 remains as it is<br />

because it does not follow the other instances to be merged (X3 has broken the merge<br />

sequence). Merging is done for X instances X1 and X2; they will be replaced by:<br />

X1 1 2 FOO A=1 B=1 M=2<br />

An example showing the merging of parallel instances with different instances between:<br />

X1 A B INV1 W=0.8U L=0.35U<br />

xr1 B 0 RES<br />

X2 A B INV1 W=0.8U L=0.35U<br />

xr2 B 0 RES<br />

Merging is done for X instances X1 and X2, and also X instances xr1 and xr2. They will be<br />

replaced by:<br />

X1 A B INV1 W=0.8U L=0.35U M=2<br />

xr1 B 0 RES M=2<br />

This behavior applies to:<br />

• Resistors<br />

• Diodes<br />

• BJTs<br />

• MOSFETs<br />

158<br />

Eldo® User's Manual, 15.3


Eldo Netlist Setup<br />

Merging Instances in Parallel<br />

• Subcircuit instances<br />

The ASCII .chi output file lists the number of devices and subcircuit instances merged. For<br />

example:<br />

Number of X instances merged 3<br />

Number of devices merged 5<br />

To report all of the merged elements specify option CATMX_REPORT. In this case, the ASCII<br />

.chi output file contains the instances that have been merged. For example:<br />

X4 merged with X1<br />

X3 merged with X1<br />

X2 merged with X1<br />

R6 merged with R1<br />

R5 merged with R1<br />

R4 merged with R1<br />

R3 merged with R1<br />

R2 merged with R1<br />

The merging is done to speed-up simulations. However, this may also result in unexpected<br />

warnings in the following situations:<br />

• If an instance name is specified in a .PRINT/.PLOT/.EXTRACT, and if this instance is<br />

merged with another, Eldo issues a warning that the instance is not found. For example,<br />

with .PRINT dc ix(x2.1) Eldo issues a warning that instance x2 is not found.<br />

• The output may take into account the M factor. For example, .PRINT IX(X1.1) will<br />

return twice the number values obtained compared with if the instances had not been<br />

merged. For MOS instances, if the M factor specification is not equal to 1 (default) the<br />

merging of devices is not performed.<br />

• If option MINRAVL is specified, and if there are resistors inside some X instances<br />

which are merged, the working resistance of the device is R/M, where M is the number<br />

of items in parallel. R/M can become < MINRVAL when R was > MINRVAL. This<br />

should have limited impact on the results.<br />

• When using high impedance (Hi-Z) checking commands, impedance is not computed on<br />

the internal nodes of merged instances. Eldo issues a warning in this case to disable<br />

merging instances in parallel so it can compute the impedance of those nodes.<br />

To disable merging instances in parallel, specify option NOCATMX or invoke Eldo with the<br />

-nocatmx argument.<br />

Eldo® User's Manual, 15.3 159


Eldo Netlist Setup<br />

Merging Instances in Parallel<br />

Notes<br />

• Merging instances in parallel (with or without device multiplier M=val specified) is<br />

disabled when a Monte Carlo analysis is specified.<br />

• Merging instances in parallel is disabled in interactive mode.<br />

• Merging instances in parallel is disabled when a .DSPF_INCLUDE command is inside<br />

the netlist.<br />

• Instances inside Verilog-A instances are never merged.<br />

See Also<br />

• Combining Identical Resistors in the Eldo Reference Manual<br />

• Combining Identical Diodes in the Eldo Reference Manual<br />

• Combining Identical BJTs in the Eldo Reference Manual<br />

• Combining Identical MOSFETs in the Eldo Reference Manual<br />

• Combining Identical Subcircuits in the Eldo Reference Manual<br />

• Option CATMX_REPORT in the Eldo Reference Manual<br />

• Option NOCATMX in the Eldo Reference Manual<br />

160<br />

Eldo® User's Manual, 15.3


Chapter 5<br />

Simulator Compatibility<br />

Eldo provides compatibility with different simulators. Eldo can use an external simulator netlist<br />

as input, accepting the different constructs and syntax used by such simulators. This chapter<br />

shows the compatibility available.<br />

HSPICE Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

Hybrid Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

Compat Mode Flexibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164<br />

Devices in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

Sources in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

Commands in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

Options in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

Netlist in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

Arithmetic Functions and Operators in Compat Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

Output Format in Compat Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

Spectre Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

Spectre Compatibility Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180<br />

Spectre Compatibility Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

Working with Multiple Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185<br />

Troubleshooting the Spectre to Eldo Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186<br />

Spectre to Eldo Converter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

spect2el Command Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197<br />

Eldo® User's Manual, 15.3 161


Simulator Compatibility<br />

HSPICE Compatibility<br />

HSPICE Compatibility<br />

Eldo provides partial compatibility with HSPICE ®1 . You can use an HSPICE netlist as an Eldo<br />

input. The main effect of compat mode is that it accepts some HSPICE constructs and syntax.<br />

Eldo HSPICE compatibility is invoked as follows:<br />

<strong>eldo</strong> -compat ... cir_file_name<br />

or by adding in the netlist the following option (must be set at the top of the design):<br />

.OPTION COMPAT<br />

Note<br />

Argument -compat is equivalent to setting both -compmod and -compnet arguments.<br />

The different effects of HSPICE compatibility mode are divided into the following:<br />

Hybrid Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

Compat Mode Flexibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164<br />

Devices in Compat Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

Sources in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

Commands in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

Options in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

Netlist in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

Arithmetic Functions and Operators in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

Output Format in Compat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

Hybrid Compat Mode<br />

You can select a portion of the design for compat mode to be applied, and leave the rest of the<br />

design in native Eldo mode (an alternative to options COMPAT, COMPMOD, and<br />

COMPNET). This is done by encapsulating the section of the circuit inside .COMPAT and<br />

.ENDCOMPAT commands.<br />

For example:<br />

1.HSPICE is a registered trademark of Synopsys, Inc.<br />

162<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Hybrid Compat Mode<br />

My netlist<br />

.compat<br />

.subckt fooh 1<br />

r1 1 0 '-1.0*sqrt(-4)' $ comment<br />

i1 1 0 1m<br />

.ends<br />

.endcompat<br />

.subckt foo 1<br />

r1 1 0 'sqrt(4.0)' ! comm<br />

i1 1 0 1m<br />

.ends<br />

x1 1 foo<br />

x2 2 fooh<br />

.op<br />

.extract dc v(1)<br />

.extract dc v(2)<br />

.end<br />

In this example, the subcircuit fooh is run in compatibility mode. The remainder of the circuit is<br />

run in native Eldo mode.<br />

Files that are included with .LIB or .INCLUDE between .COMPAT and .ENDCOMPAT are<br />

handled in compat mode. In the following example, the content of the included files, file2 and<br />

file3, are handled in compat mode:<br />

.compat<br />

.include file2<br />

.lib file3 TT<br />

.endcompat<br />

You can use hybrid compat mode (.COMPAT/.ENDCOMPAT blocks) together with -<br />

compmod or -compnet arguments (or equivalent options). Locally inside the block the<br />

compatibility mode applies to both models and syntax, and outside the block it applies only to<br />

models or syntax respectively.<br />

Note<br />

If hybrid compat mode (.COMPAT/.ENDCOMPAT blocks) is used together with the -<br />

compat argument (or equivalent option) Eldo outputs a warning notifying that the<br />

.COMPAT command has been specified even though compat mode is already enabled.<br />

Limitations<br />

• The commands .COMPAT and .ENDCOMPAT can not be specified inside .ALTER<br />

sections.<br />

• In compat mode, analyses are run in the sequence they are listed in the .cir file. However<br />

this is not the case for analysis commands inside .COMPAT/.ENDCOMPAT blocks.<br />

For example:<br />

.tran 1n 10n<br />

.tran 1n 20n<br />

Eldo® User's Manual, 15.3 163


Simulator Compatibility<br />

Compat Mode Flexibility<br />

In this example, two analyses would be performed in standard compat mode, but if the<br />

commands were inside a .COMPAT/.ENDCOMPAT block only one transient analysis<br />

of 20n would be performed.<br />

• Hybrid compat mode, with .COMPAT/.ENDCOMPAT blocks, impacts only model/<br />

device parameters, not the way analyses are performed.<br />

• In hybrid compat mode, the default temperature of devices inside .COMPAT/<br />

.ENDCOMPAT blocks is 27°C, the same as the Eldo default mode. This temperature is<br />

applied across the entire design. In compat mode, the default temperature is 25°C.<br />

Tip<br />

See “.COMPAT” in the Eldo Reference Manual.<br />

Compat Mode Flexibility<br />

Instead of using -compat (or .OPTION COMPAT) to read an HSPICE netlist, the -compmod<br />

and -compnet arguments (or .OPTION COMPMOD and .OPTION COMPNET) can be set.<br />

The effects of these arguments are:<br />

• -compat — Interprets the netlist and the models as HSPICE format.<br />

• -compmod — Triggers only the automatic conversion of models, not the netlist syntax.<br />

Can alternatively be set with .OPTION COMPMOD. Only models referenced in the<br />

topic “Devices in Compat Mode” on page 165 will be converted.<br />

Note<br />

-compmod only effects the model selection, not the parameters of a library. If you<br />

have a HSPICE library that you want to be fully handled as such you should enclose<br />

the .LIB command with .COMPAT and .ENDCOMPAT commands for “Hybrid<br />

Compat Mode” on page 162. A library which contains no model, but only a subcircuit<br />

with parameters will not be converted. -compnet must be used instead of -compmod in<br />

this particular case.<br />

• -compnet — Causes the netlist to be interpreted as compatible format, but the device<br />

models are handled as Eldo SPICE models. This assumes the models are selected with<br />

the Eldo model levels (for example, to select the BSIM3v3 model you must specify level<br />

53, not 49). -compnet can alternatively be set with .OPTION COMPNET.<br />

The -compnet and -compmod arguments apply to the entire netlist, including library files. For<br />

example, when -compnet is set, even the statements in the library file, including those of model<br />

library files, are interpreted in compat mode.<br />

164<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Devices in Compat Mode<br />

Note<br />

See also the command line arguments “-compat,” “-compmod” and “-compnet” in the Eldo<br />

Reference Manual<br />

Related Topics<br />

HSPICE Compatibility<br />

Devices in Compat Mode<br />

The following tables show the model level mapping when in compat mode. For example,<br />

specifying LEVEL=70 in compat mode selects the BSIMSOIv4 model, but in Eldo standard<br />

mode it selects the Philips PSP model. Any models not listed are handled as standard Eldo<br />

models.<br />

Eldo Device Levels<br />

The following Eldo Levels are set in compat mode:<br />

Table 5-1. MOS Levels with -compat<br />

HSPICE Model Name<br />

Eldo LEVEL<br />

LEVEL<br />

2 Eldo2 12<br />

3 Eldo3 13<br />

6 Modified Lattin-Jenkins Grove 16<br />

8 Enhanced Berkeley LEVEL 2 17<br />

13 Berkeley BSIM1 8<br />

39 Berkeley BSIM2 11<br />

49 Berkeley BSIM3v3.0 & BSIM3v3.1 53<br />

50 Philips MOS Model 9 59<br />

54 Berkeley BSIM4 60<br />

57 Berkeley BSIMSOI3v2 PD 56, SOIMOD=1<br />

59 Berkeley BSIMSOI3v2 FD 56, SOIMOD=3<br />

64 HiSIM 66<br />

68 HiSIM 66<br />

69 Philips PSP 70<br />

70 BSIMSOIv4 72<br />

Eldo® User's Manual, 15.3 165


Simulator Compatibility<br />

Devices in Compat Mode<br />

HSPICE<br />

LEVEL<br />

Table 5-1. MOS Levels with -compat (cont.)<br />

Model Name<br />

73 HiSIM-LDMOS (HiSIM-HV) v1 73<br />

HiSIM-LDMOS (HiSIM-HV) v2 83<br />

77 Berkeley BSIM6 82<br />

See “MOSFET Models” in the Eldo Reference Manual.<br />

Eldo LEVEL<br />

Table 5-2. BJT Models with -compat<br />

HSPICE Model Name<br />

Eldo LEVEL<br />

LEVEL<br />

2 Improved Berkeley 5<br />

3 STMicroelectronics LEVEL 1 2<br />

4 VBIC v1.2 8<br />

(VERSION=1.15) VBIC v1.1.5 8<br />

6 Philips Mextram 503.2 4<br />

8 HICUM 9<br />

9 VBIC v1.2 8<br />

(VERSION=1.15) VBIC v1.1.5 8<br />

See “BJT Models” in the Eldo Reference Manual.<br />

Table 5-3. Diode Models with -compat<br />

HSPICE Model Name (Eldo Level)<br />

Eldo LEVEL<br />

LEVEL<br />

2 Fowler-Nordheim 3<br />

3 Berkeley Level 1 1, SCALEV=3<br />

4 JUNCAP Diode 8, DIOLEV=9<br />

6 JUNCAP2 Diode 8, DIOLEV=11<br />

See “Diode Models” in the Eldo Reference Manual.<br />

166<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Devices in Compat Mode<br />

Table 5-4. Resistor Level with -compat<br />

HSPICE Model Name<br />

Eldo LEVEL<br />

LEVEL<br />

1 RC Wire 3<br />

See “RC Wire Model Syntax” in the Eldo Reference Manual.<br />

PNP and NPN Devices<br />

Compat mode affects the default type for PNP and NPN devices. SUBS defines the type of BJT.<br />

By default, NPN and PNP are vertical:<br />

• If SUBS is -1, BJT is lateral.If SUBS is 1, BJT is vertical.<br />

• If -compat is set, NPN are vertical, PNP are lateral.<br />

See “BJT Model Syntax” in the Eldo Reference Manual.<br />

Resistor and Capacitor Model Syntax<br />

.MODEL R or C: SCALE equivalent to Eldo R or C.<br />

In compat mode (-compat or -compmod) R is not allowed as a parameter for a resistor model<br />

and C is not allowed as a parameter for a capacitor model. Use the SCALE parameter instead.<br />

Capacitor CTYPE Parameter<br />

In compat mode, CTYPE will always default to 0 for C(V) and VCCAP devices, and<br />

AUTOCTYPE is disabled. The default CTYPE can be globally set to 1 using .option<br />

CTYPE=1. AUTOCTYPE can be activated using .option AUTOCTYPE.<br />

Element Output<br />

In compat mode, LV1 represents the channel length for the BSIM4 MOS model, and the<br />

effective channel length (default) for all other MOS models.<br />

In compat mode, LV2 represents the channel width for the BSIM4 MOS model, and the<br />

effective channel width (default) for all other MOS models.<br />

See “Element Output” in the Eldo Reference Manual.<br />

Group Delay<br />

VT is equivalent to VGD, and IT is equivalent to IGD (Group Delay on voltage or current). For<br />

more information, see “VXxx(devname.posi)” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 167


Simulator Compatibility<br />

Sources in Compat Mode<br />

Node GROUND/GND/GND!<br />

Node GROUND, GND and GND! are assumed to be the global node 0.<br />

Value “x”<br />

“x” is equivalent to “meg”, that is, in compat mode:<br />

R1 1 0 1x<br />

is equivalent to:<br />

R1 1 0 1meg<br />

Otherwise, 1x corresponds to 1.0.<br />

S Parameter (SP) Model<br />

In compat mode, a subset of the small-signal parameter data frequency table model (SP model)<br />

is supported. The options and parameters supported are: S param data directly written in netlist,<br />

FBASE, FMAX, TYPE=Y, VALTYPE, DATA. The VALTYPE parameter is optional; if not<br />

specified, the default value is cartesian. Resistance is 50 Ω by default.<br />

See “Lossy Transmission Line W Sampled Matrix Model” in the Eldo Reference Manual.<br />

Related Topics<br />

HSPICE Compatibility<br />

Sources in Compat Mode<br />

The LFSR source syntax is different in compat mode:<br />

LFSR [(] vlow vhigh tdelay trise tfall rate seed<br />

+ [taps] [rout=val] [ENCODE=DW8b10b] [RD_INIT=1|2] [)]<br />

Related Topics<br />

HSPICE Compatibility<br />

Commands in Compat Mode<br />

Some commands have different behavior in HSPICE compatibility mode.<br />

• .ALTER<br />

This command is cumulative. For example:<br />

168<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Commands in Compat Mode<br />

r1 1 0 1<br />

r2 2 0 1<br />

.alter 1<br />

r1 1 0 2<br />

.alter 2<br />

r2 2 0 2<br />

The second “alter” simulation will be run with both r1 set to 2 (inheritance from later<br />

number 1), and r2 set to 2. In default Eldo mode without the -compat argument, the<br />

second “alter” simulation will be run with r1 set to 1 (original netlist) and r2 set to 2.<br />

Option COMPAT can be placed anywhere in the netlist; it is not order-dependent.<br />

However, if the netlist contains .ALTER statements, and the option is placed in the<br />

.ALTER block then it will not be taken into account in the nominal run, only the<br />

.ALTER run. Then it will remain active for any further .ALTER runs. For example, if<br />

the netlist contains:<br />

title<br />

netlist<br />

.alter 1<br />

.option compat<br />

.alter 2<br />

*...<br />

.end<br />

v1 1 0 1<br />

r1 1 0 1<br />

.dc<br />

.end<br />

Here, the nominal run will not recognize the COMPAT option, the first .ALTER will,<br />

and the second .ALTER will also. The statements between the last two .END statements,<br />

which correspond to the simulation of yet another circuit, will still treat COMPAT as<br />

active. Once activated, compat cannot be deactivated.<br />

See the “.ALTER command” in the Eldo Reference Manual.<br />

• .DC<br />

When only a DC analysis is specified in compat mode, by default the initial transient<br />

value is used.<br />

For .DC with .OP, a DC sweep is done before any OP calculations. The Eldo default<br />

behavior, and in hybrid compat mode (with .COMPAT/.ENDCOMPAT blocks but<br />

without .OPTION COMPAT), is to perform the OP around the first point of the DC<br />

sweep.<br />

See the “.DC command” in the Eldo Reference Manual.<br />

• .EXTRACT RMS()<br />

In compat mode, this extract returns the root mean square value of a waveform for<br />

transient analysis, computed as:<br />

Eldo® User's Manual, 15.3 169


Simulator Compatibility<br />

Commands in Compat Mode<br />

For example, if your netlist has the following AC analysis, then the frequency interval<br />

used is: x_start=0.1 (fmin) and x_end=10e6 (fmax).<br />

.ac dec 100 0.1 10e6<br />

Note<br />

EZwave is not instructed that compat mode has been used during the .wdb file<br />

generation, so you can incorrectly select rms_ac or rms_noise in the measurement<br />

tool. In this case, only rms_tran must be used to be consistent with compat mode.<br />

See the “.EXTRACT RMS command” in the Eldo Reference Manual.<br />

• .HDL<br />

The syntax is different in compat mode:<br />

.HDL "filename" [module_name] [module_alias]<br />

See the “.HDL command” in the Eldo Reference Manual.<br />

• .LIB<br />

.LIB behaves as .INCLUDE.<br />

See the “.LIB command” in the Eldo Reference Manual.<br />

• .LIN<br />

There are some limitations when using the .LIN command in compat mode:<br />

o<br />

o<br />

o<br />

o<br />

Parameter modelname is not used by Eldo, if specified it is ignored.<br />

Only format=touchstone is supported. It is set by default, if another format is<br />

specified an error will be displayed.<br />

Parameter noisecalc is not supported in Multiport syntax, only Two-Port syntax.<br />

Parameters gdcalc, FREQDIGIT, SPARDIGIT, listfreq, listcount, listfloor, and<br />

listsources are not supported.<br />

See the “.LIN command” in the Eldo Reference Manual.<br />

• .PLOT/.PRINT<br />

The sign convention of Ix is that the current is positive when it enters the device by pin<br />

x. However, when -compat is set, then the following apply:For R/L/C/E/F/G/H/I/V/D<br />

170<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Commands in Compat Mode<br />

devices, I2 returns the same value as I1.For M/B/J devices, I3 is positive when current<br />

leaves the object by pin number 3.<br />

See the “.PLOT” and “.PRINT” commands in the Eldo Reference Manual.<br />

• .PROBE<br />

The Eldo .PROBE command is emulated; all node voltages are dumped in the binary<br />

output file (.wdb). To only dump those items specified in .PLOT/.PROBE in the output<br />

file, add .OPTION PROBE.<br />

When .PROBE I is specified with .OPTION POST, only currents through dipoles are<br />

plotted, MOS current pins are not.<br />

See the “.PROBE command” in the Eldo Reference Manual.<br />

• .SAVE<br />

In compat mode, generates a .ic0 file.<br />

See the “.SAVE command” in the Eldo Reference Manual.<br />

• .SUBCKT<br />

When GLOBAL node names are used in the .SUBCKT definition node list, Eldo will<br />

check the node names in the subcircuit list definition prior to the global node list.<br />

See the “.SUBCKT command” in the Eldo Reference Manual.<br />

• .TEMP<br />

The model parameter TREF can be specified. This is equivalent to the parameter TNOM<br />

when the .TEMP command is used to apply temperature effects. When TREF is<br />

specified, TNOM will be ignored.<br />

o<br />

.PARAM TEMP<br />

In compat mode, you must use the TEMPER variable to return the current<br />

simulation temperature set by the .TEMP command. The TEMP variable is not<br />

supported in compat mode.<br />

See the “.TEMP command” in the Eldo Reference Manual.<br />

• .TRAN<br />

If the .TRAN command has four parameters, for example:<br />

.TRAN tprint tstop tstart hmax<br />

o<br />

If value4 (hmax) < value2 (tstop), it is handled as in Eldo standard mode:<br />

.TRAN tprint tstop tstart hmax<br />

o<br />

If value4 (hmax) ≥ value2 (tstop), it is handled as a list of INCRn Tn values:<br />

Eldo® User's Manual, 15.3 171


Simulator Compatibility<br />

Options in Compat Mode<br />

.TRAN INCR1 T1 [{INCRn Tn}] [TSTART=val] [UIC]<br />

See the “.TRAN command” in the Eldo Reference Manual.<br />

Related Topics<br />

HSPICE Compatibility<br />

Options in Compat Mode<br />

Some options have different behavior in HSPICE compatibility mode.<br />

• ACDERFUNC<br />

This option is automatically unset in compat mode.<br />

• ACM<br />

This option is automatically set in compat mode.<br />

• ACOUT=VAL<br />

ACOUT defaults to 1.<br />

1 — Vx(a,b) or Ix(a,b) are computed from the complex value Vx(a,0)-Vx(b,0) or from<br />

Ix(a,0)-Ix(b,0).<br />

• DEFPTNOM<br />

This option is automatically set in compat mode. Enables a parameter to be defined with<br />

the name TNOM. In such a case, this value will be used inside parameter expressions,<br />

instead of the default TNOM or the value set using option TNOM=val.<br />

• ICDC and ICDEV<br />

These options are automatically set in compat mode. This means that IC specifications<br />

given on devices are taken into account for the DC which is performed prior to TRAN.<br />

When -compat is not set, and neither are the ICDC and ICDEV options, then IC<br />

specifications given on devices are ignored, unless the UIC keyword is specified on the<br />

.TRAN card.<br />

• GENK<br />

This option is automatically set in compat mode. It forces Eldo to generate second order<br />

mutual inductors. It is used together with the KLIM option.<br />

• (NO)KWSCALE<br />

This option is automatically set in compat mode. Therefore, SCALE is not treated as a<br />

keyword and can be used as a parameter.<br />

• LIBINC<br />

172<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Options in Compat Mode<br />

This option is automatically set in compat mode. It specifies that all the libraries (.LIB)<br />

should be included without filtering the objects (model, card or subcircuit) that are not<br />

used in the specific netlist.<br />

• LICN<br />

This option is automatically set in compat mode. Causes the last initial condition (.IC)<br />

specification to have precedence over previous IC specifications.<br />

• MODWLDOT<br />

This option is automatically set in compat mode. It is used for binned models.<br />

• NOELDOLOGIC<br />

This option is automatically set in compat mode.<br />

• NOELDOSWITCH<br />

When specified in compat mode, it informs Eldo that devices beginning with an S are<br />

not switches (Eldo default) but S-parameter block instantiations.<br />

• NOINIT<br />

Set for cases where UIC is set on the .TRAN card.<br />

• OPSELDO_DETAIL<br />

If this option is not set, Eldo enables a variation of SILENT mode. Nothing is written in<br />

the .wdb and .aex files, but the last run is saved in the .chi file.<br />

• PARHIER=local|global<br />

Default is set to global. Global “parent” values have precedence. Example:<br />

.SUBCKT R1 1 2<br />

R1 1 2 a<br />

.ends<br />

X1 in out R1 a=2<br />

.param a=3<br />

When parhier is local, X1.R1 will be 2, while when parhier is global, X1.R1 is 3. See the<br />

“PARHIER” option in the Eldo Reference Manual.<br />

• PROBE<br />

.PROBE command is emulated, that is, all node voltages are dumped in the binary<br />

output file (.wdb). To dump only those items specified in .PLOT/.PROBE in the output<br />

file, add .OPTION PROBE.<br />

• QUOTREL<br />

This option is automatically set in compat mode.<br />

• SLASHCONT<br />

Eldo® User's Manual, 15.3 173


Simulator Compatibility<br />

Options in Compat Mode<br />

This option is automatically set in compat mode. It enables a single backslash to be used<br />

for the continuation of the line. Example:<br />

.OPTION SLASHCONT<br />

R1 1 2 \<br />

3k<br />

R2 1 2 1k<br />

R1 will be set to 3K. Disable this option by specifying .OPTION NOBSLASHCONT.<br />

• SWARN<br />

This option is automatically set in compat mode. It activates TSMC SOA checks.<br />

• TNOM<br />

TNOM defaults to 25°C instead of 27°C. For more information see “Temperature<br />

Handling” on page 287.<br />

Options Only Available in Compat Mode<br />

The following options are only available in compat mode:<br />

• ALTERELDO<br />

Changes the way the .ALTER re-run feature works in compat mode. In compat mode,<br />

for alter index ‘n’, Eldo revisits the ‘n-1’ alter looking for substitution. In default Eldo<br />

mode, for alter index ‘n’, Eldo only deals with the nominal and the alter ‘n’; it ignores<br />

the ‘n-1’ alter. In other words, in compat mode, alters are cumulative, but not in Eldo<br />

default mode. Specify ALTERELDO to activate the default Eldo mode behavior when<br />

in compat mode.<br />

• CKDCPATH<br />

Forces Eldo to issue a warning instead of an error when a dangling node (no DC path to<br />

ground) is encountered on a current source. The source is then disabled and the node<br />

connected to ground. This option is only used in compat mode.<br />

• COMPEXUP<br />

Forces Eldo to keep the name of the extraction results (from .EXTRACT and .MEAS<br />

statements) in uppercase. This option is only used in compat mode.<br />

• NOBSLASHCONT<br />

Disables option SLASHCONT which is set by default in compat mode.<br />

Related Topics<br />

HSPICE Compatibility<br />

174<br />

Eldo® User's Manual, 15.3


Netlist in Compat Mode<br />

Some aspects of the netlist syntax are different in HSPICE compatibility mode.<br />

Comment Character<br />

Dollar $ is used as the comment character in the netlist line instead of !.<br />

Simulator Compatibility<br />

Netlist in Compat Mode<br />

The comment character is usually treated as such only if the preceding character is a blank space<br />

or if the comment is at the beginning of a line. In -compat mode with the comment character $,<br />

then the above rule still applies; additionally, the $ character is a comment character if:<br />

• the preceding character is not a white space, and<br />

• the first character of the string is ‘, ’, “, a number, or a period (.)<br />

If you want to reference an environment variable using the $ character, for example to specify a<br />

file path, surround the path and filename in quotes.<br />

Examples:<br />

• Circumstances where $ is treated as a comment:<br />

o $ is treated a comment because the string begins with the digit 0:<br />

M1... l=0.1u$<br />

o<br />

$ is treated a comment because the preceding character is a blank space:<br />

M1... l=0.1u $<br />

.INCLUDE $HERE/myfile.txt<br />

o<br />

$ is treated a comment because the first character is a number:<br />

M1 1$ d g s b nmos w=1u l=3<br />

• Circumstances where $ is not treated as a comment:<br />

Wildcard Support<br />

M1 a1$ d g s b...<br />

M2 ‘1$’ d g s b ...<br />

.INCLUDE "$HERE/myfile.txt"<br />

The “?” wildcard character matches a single character in compat mode; it is not supported in<br />

default Eldo unless a “*” wildcard character is also specified.<br />

Eldo® User's Manual, 15.3 175


Simulator Compatibility<br />

Netlist in Compat Mode<br />

Parameters<br />

Multiple assignment of parameters which can be overwritten sequentially is allowed.<br />

In model instantiations, Eldo checks whether there is a .MODEL with the same name as the<br />

string after the nodes in a model declaration. If not, it looks for a parameter name.<br />

In .PARAM statements, LOT and DEV are not treated as keywords, however LOT/GAUSS,<br />

DEV/GAUSS, LOT/, and DEV/ are.<br />

Quotes<br />

Double quotes are treated as single quotes. (In standard Eldo mode, double quotes are used to<br />

specify a parameter string.) Use option QUOTSTR to treat double quotes as a parameter string<br />

delimiter.<br />

Order of Analyses<br />

Analyses are performed in the order specified in the netlist. The order in which analyses are<br />

performed can then differ from the original Eldo order, and there can be multiple analyses of the<br />

same type to be run sequentially. In addition, .PRINT/.PLOT/.EXTRACT/.MEAS commands<br />

are seen only by the preceding command. Example:<br />

.tran 1n 10n<br />

.print tran v(1)<br />

.tran 1n 50n<br />

.print tran v(2)<br />

.end<br />

In compat mode, the first .tran command forces Eldo to do a transient simulation between 0 and<br />

10n. Only v(1) will be displayed. The second .tran command forces Eldo to do a transient<br />

simulation between 0 and 50n. Only v(2) will be displayed for that simulation.<br />

Order of Analyses—AC in the Middle of a .TRAN<br />

AC in the middle of transient is handled with respect to the compat mode ordering rule (as<br />

described above). Whenever a .AC command, a .TRAN command, and a .OP command<br />

containing time specifications are specified in the .cir file, then the results will be:<br />

• .ac followed by .tran<br />

AC will be performed during the transient because .ac appears before .tran<br />

• .tran followed by .ac<br />

AC will be performed after the transient, and not inside it. A warning is issued:<br />

176<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Arithmetic Functions and Operators in Compat Mode<br />

Warning 1484: AC analysis will not be performed during transient<br />

because of the commands ordering.<br />

• .tran followed by .ac followed by another .tran<br />

The first transient is performed, then AC + transient as in the first case<br />

Related Topics<br />

HSPICE Compatibility<br />

Arithmetic Functions and Operators in Compat<br />

Mode<br />

Some arithmetic functions/operators have different behavior in HSPICE compatibility mode.<br />

The following rules apply:<br />

log(x) = sign(x) * log(abs(x))<br />

log10(x) = sign(x) * log10(abs(x))<br />

db(x) = sign(x) * 20.0*log10*abs(x))<br />

sqrt(x) is -sqrt(abs(x)) if x is negative.<br />

x**n is computed as x**n if x is positive, x**(INT(n)) if x is negative, and 0 if x is 0.<br />

The power operator (^) has highest precedence (same as standard Eldo).<br />

Note<br />

In Eldo standard mode:<br />

sqrt(x) returns an error if x is negative.<br />

x**n is computed as exp(n*log(x)) if x is strictly positive, 0 otherwise.<br />

EVAL Keyword<br />

When the -compat argument is active, the function keyword EVAL is not required in<br />

conditional expressions. For example:<br />

r1 1 2 '(p1 > p2 ? p2: p1)'<br />

Will be the equivalent of:<br />

r1 1 2 'eval(p1 > p2 ? p2: p1)'<br />

Related Topics<br />

Arithmetic Functions<br />

Eldo® User's Manual, 15.3 177


Simulator Compatibility<br />

Output Format in Compat Mode<br />

Output Format in Compat Mode<br />

Some different output files are generated in HSPICE compatibility mode.<br />

The following types of output files are generated in compat mode:<br />

• If option POST=1 or POST=2, Eldo generates only .tr0 output files, no .wdb file is<br />

generated.<br />

• Without specifying option POST, Eldo generates only .wdb output files.<br />

When running in compat mode (-compat) three types of files can be created:<br />

• .trX files for analysis in the time domain (transient, noisetran, tsst, tmodsst, and so on).<br />

• .acX files for analysis in the frequency domain (ac, fsst, fmodsst, and so on).<br />

• .swX files for dcsweep analysis.<br />

As a consequence, when loaded inside EZwave or converted into .wdb, the results are stored<br />

inside folders TRAN, AC and DC respectively.<br />

Note<br />

In compat mode, .SAVE generates a .ic0 file.<br />

Related Topics<br />

HSPICE Compatibility<br />

178<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Spectre Compatibility<br />

Spectre Compatibility<br />

Eldo can use a Spectre netlist as input.<br />

There are two flows to simulate a Spectre netlist in Eldo:<br />

• Spectre Compatibility Flow<br />

Run Eldo on the Spectre netlist. Eldo will call the spect2el script to convert netlists from<br />

Spectre format (Spectre language syntax) into Eldo format (Eldo syntax). Additionally,<br />

spect2el generates several files that will be used to map the Spectre name to a SPICE<br />

name, and to avoid the reconversion of the Spectre files if nothing has changed in them.<br />

This flow is more straightforward and more efficient. This is the preferred approach.<br />

• Spectre to Eldo Converter Flow<br />

This flow is based on the spect2el script that converts libraries and netlists from Spectre<br />

format (Spectre language syntax) into Eldo format (Eldo syntax). You then run Eldo on<br />

the converted netlist. This flow offers more flexibility, in particular if manual<br />

modifications are necessary to workaround unexpected conversion issues. See Spectre<br />

to Eldo Converter for more information on the spect2el script.<br />

Spectre Compatibility Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180<br />

Spectre Compatibility Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

Working with Multiple Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185<br />

Troubleshooting the Spectre to Eldo Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186<br />

Spectre to Eldo Converter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

spect2el Command Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197<br />

Eldo® User's Manual, 15.3 179


Simulator Compatibility<br />

Spectre Compatibility Flow<br />

Spectre Compatibility Flow<br />

Run an Eldo simulation on a Spectre netlist with the <strong>eldo</strong> -sp command line argument.<br />

Syntax<br />

<strong>eldo</strong> -sp spectre_file [-i spice_command_file] [-clean_sp]<br />

[-spectre_out pathname] [-sp_plot 2|1|0] [-css 1|0]<br />

Arguments<br />

• -sp spectre_file<br />

The filename of the Spectre format netlist to be used as input for Eldo. spectre_file must be<br />

specified with an extension. No guess is made on the possible extension. If the filename is<br />

specified without its extension an error is generated. Required.<br />

• -i spice_command_file<br />

The filename of the Eldo/SPICE command file to be used in association with the Spectre<br />

netlist. Optional. Used with the -sp argument when a Spectre netlist is the input.<br />

spice_command_file must be specified with an extension. No guess is made on the possible<br />

extension. If the filename is specified without its extension an error is generated. The<br />

spice_command_file must not include the spectre_file. Eldo automatically performs the link<br />

between these files. Including the Spectre file will not work and the simulation will stop.<br />

• -clean_sp<br />

Removes all the files generated by spect2el. As a consequence, if you want to relaunch the<br />

simulation on that design, the converter will reproduce the work. This increases the overall<br />

simulation time. Optional. Used with the -sp argument when a Spectre netlist is the input.<br />

• -spectre_out pathname<br />

Define the path in which the files generated by spect2el reside. Optional. Used with the -sp<br />

argument when a Spectre netlist is the input. Eldo creates pathname automatically if it does<br />

not exist. If –clean_sp is also specified, Eldo clears the files/subdirectories under pathname,<br />

while pathname itself is not removed after simulation. By default, pathname is identical to<br />

the one specified by –outpath.<br />

• -sp_plot 2|1|0<br />

Controls the conversion of Spectre save statements into Eldo .PRINT, .PLOT and .PROBE<br />

commands as below:<br />

0<br />

The save statement is converted into .PRINT (default).<br />

1<br />

The save statement is converted into .PLOT.<br />

2<br />

The save statement is converted into .PROBE.<br />

180<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Spectre Compatibility Description<br />

• -css 1|0<br />

Convert all or just the selected sections of your library. Set to 0 to convert all sections. Set to<br />

1 (default) to convert only selected sections. If a file is included in an unselected section,<br />

then this file is ignored even if it does not exist in the path of the include statement. When<br />

css=1, a missing file error is only generated if the file is called, otherwise a warning is<br />

printed in spect2el.log.<br />

Description<br />

If errors occur, a file named spect2el.error is generated clearly describing the errors.<br />

Note<br />

Eldo launches spect2el with the following options:<br />

-do_va 1 -netlist_converter 1<br />

You cannot change these options when running from the Eldo command line.<br />

Tip<br />

See the “-sp” command line argument in the Eldo Reference Manual.<br />

Related Topics<br />

Spectre Compatibility Description<br />

Working with Multiple Languages<br />

Troubleshooting the Spectre to Eldo Flow<br />

Spectre to Eldo Converter<br />

spect2el Command Reference<br />

Spectre Compatibility Description<br />

spectre_file and spice_command_file must be specified with their extensions. No attempt is<br />

made by Eldo to surmise the possible extension. If the filename is specified without its<br />

extension an error is generated.<br />

See Table 5-6 for example error messages.<br />

The convention for the generated files is as follows:<br />

• The converted SPICE files are written to the folder named [outpath].spectre_file_dir/.<br />

• The files generated for name mapping purpose are written to the folder named<br />

[outpath].spectre_file_map_dir/.<br />

• The files generated to avoid the (re)conversion of the Spectre files, when it is not<br />

necessary, are written to the folder named [outpath].spectre_file_db_dir/.<br />

Eldo® User's Manual, 15.3 181


Simulator Compatibility<br />

Spectre Compatibility Description<br />

You can manually remove these folders if they are no longer required. Specify an alternative<br />

output directory with the -spectre_out pathname argument.<br />

The spice_command_file must not include the spectre_file. Eldo automatically performs the<br />

link between these files. Attempting to include the Spectre file will not function, and the<br />

simulation will stop. For examples, see Include Files in “Troubleshooting the Spectre to Eldo<br />

Flow” on page 186.<br />

All SPICE commands (.PLOT/.PROBE/.STEP/.EXTRACT, and so on) can be used except for<br />

the .ALTER command, where the mapping is not handled. When specifying a name for the<br />

.PLOT command, the Spectre names can be used.<br />

Here follows a simple example:<br />

spectre_file.sp:<br />

simulator lang=spectre<br />

subckt foo a b<br />

Aresfoo a b resistor r=1k<br />

ends<br />

subckt bar a b<br />

Aresbar a b resistor r=1k<br />

myInstance a b foo<br />

ends<br />

anotherInstance 1 0 bar<br />

spice_command_file.cir:<br />

*first line<br />

c1 1 0 1p<br />

I1 1 0 1<br />

.plot tran I(anotherInstance.*)<br />

.plot tran v(c1)<br />

.tran 1n 10n<br />

.end<br />

182<br />

Eldo® User's Manual, 15.3


Eldo can be launched on the Spectre design by entering the following:<br />

<strong>eldo</strong> -sp spectre_file.sp -i spice_command_file.cir<br />

Simulator Compatibility<br />

Spectre Compatibility Description<br />

In the .wdb output file, the name of the plotted elements are as defined in the Spectre design. In<br />

this example, I(ANOTHERINSTANCE.ARESBAR) is plotted.<br />

Note<br />

By default, every device name or node name is case-insensitive because SPICE language is<br />

being used. Specify -case to parse the netlist in case-sensitive mode. Spectre is casesensitive<br />

by default.<br />

For example, if the Spectre design contains:<br />

aRes n1 n2 resistor r=1k<br />

ares n1 n2 resistor r=2k<br />

Eldo (SPICE) is case-insensitive, so it considers resistor “ares” has been defined twice. Spectre<br />

is case-sensitive so differentiates between “aRes” and “ares.” Run the Spectre to Eldo converter<br />

with the -case argument to enable the differentiation between “aRes” and “ares.”<br />

Spectre Default Constants and Functions<br />

When using Eldo with the command line argument -sp, or if option<br />

USE_SPECTRE_CONSTANT is specified in the SPICE netlist, Eldo understands a number of<br />

Spectre default parameters, constants, and functions as follows:<br />

• Spectre instance parameter trise is handled as an alias to dtemp for all instances.<br />

• Spectre instance parameter perim is handled as an alias to peri for diode instances.<br />

• Spectre default constants and functions as listed in Table 5-5 are allowed:<br />

Table 5-5. Spectre Constants and Functions<br />

Constant/Function Value<br />

m_e 2.7182818284590452354<br />

m_log2e 1.4426950408889634074<br />

m_log10e 0.43429448190325182765<br />

m_ln2 0.69314718055994530942<br />

m_ln10 2.30258509299404568402<br />

m_pi 3.14159265358979323846<br />

m_two_pi 6.28318530717958647652<br />

Eldo® User's Manual, 15.3 183


Simulator Compatibility<br />

Spectre Compatibility Description<br />

Table 5-5. Spectre Constants and Functions (cont.)<br />

Constant/Function Value<br />

m_pi_2 1.57079632679489661923<br />

m_pi_4 0.78539816339744830962<br />

m_1_pi 0.31830988618379067154<br />

m_2_pi 0.63661977236758134308<br />

m_2_sqrtpi 1.12837916709551257390<br />

m_sqrt2 1.41421356237309504880<br />

m_sqrt1_2 0.70710678118654752440<br />

m_degperrad 57.2957795130823208772<br />

p_q<br />

1.6021918×10 −19<br />

p_c 2.997924562×10 8<br />

p_k<br />

p_h<br />

p_eps0<br />

These constants can be used inside all expressions.<br />

Limitations<br />

• The .ALTER command is not supported.<br />

• When Eldo is using a Spectre netlist as input, and the netlist contains an internal node<br />

and a device with the same name, it is impossible for Eldo to distinguish between these.<br />

When Eldo analyses a subcircuit in the Spectre netlist, each element is attempted to be<br />

converted, without knowing if it is a node name or a device name. This can lead to plots<br />

not being performed as expected, because Eldo does not know what kind of plot is<br />

required (I or V for example). For examples, see Spectre Node and Device Names in<br />

“Troubleshooting the Spectre to Eldo Flow” on page 186.<br />

• Spectre RF commands are not supported.<br />

1.3806226×10 −23<br />

6.6260755×10 −34<br />

8.85418792394420013968×10 −12<br />

p_u0<br />

m_pi×4.0×10 −7<br />

p_celsius0 273.15<br />

f_mod(a,b)<br />

{a-b×int((a+0.5)/b)}<br />

atan2(a,b)<br />

{atan(a/b)}<br />

hypot(a,b)<br />

{sqrt(a×a + b×b)}<br />

184<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Working with Multiple Languages<br />

Related Topics<br />

Spectre Compatibility Flow<br />

Working with Multiple Languages<br />

Troubleshooting the Spectre to Eldo Flow<br />

Spectre to Eldo Converter<br />

Working with Multiple Languages<br />

The Spectre to Eldo converter supports multiple languages (Eldo, Spectre, SPICE) inside the<br />

same netlist. To switch between the different language modes, use one of the following methods<br />

provided:<br />

• To encapsulate portions of different languages specify start and end lines with the<br />

syntax:<br />

Simulator lang=ELDO|SPECTRE|SPICE<br />

...<br />

...<br />

End lang=ELDO|SPECTRE|SPICE<br />

• To encapsulate the language of included files (within the encapsulated lines) to be the<br />

same as the parent file specify start and end lines. This avoids any need to specify<br />

Simulator lang at the beginning of the called files.<br />

Included lang=ELDO|SPECTRE|SPICE<br />

...<br />

...<br />

End lang=ELDO|SPECTRE|SPICE<br />

Specify End lang to return the simulation language to the default one.<br />

Note<br />

To keep compatibility with Spectre behavior, the language of the included file can<br />

be determined using the “Priority Rules” on page 186, in other words, the included<br />

file does not have to be in the same language as its parent file.<br />

• To change the default language, invoke the Spectre to Eldo converter with the -lang<br />

keyword argument.<br />

spect2el -lang <strong>eldo</strong>|spectre|spice<br />

By default the Spectre to Eldo converter assumes Spectre syntax for the main file<br />

specified by the -file_list argument in the specte2el command line. Otherwise, all<br />

included files are assumed to be in Spice syntax by default to match Spectre behavior.<br />

Eldo® User's Manual, 15.3 185


Simulator Compatibility<br />

Troubleshooting the Spectre to Eldo Flow<br />

Priority Rules<br />

The language of any file is determined based on the rules prioritized below (where<br />

XYZ=SPECTRE | ELDO | SPICE). The first applied rule determines the file’s language without<br />

any further rule checking.<br />

1. If “simulator lang=XYZ” is specified inside the file, then the language of the file is<br />

XYZ.<br />

2. If “included lang=XYZ” is specified before a .include file statement, then the language<br />

of this included file is XYZ, and the language within “included lang=XYZ … end<br />

lang=XYZ” should also be XYZ.<br />

3. If “-i ” is specified in the command line of spect2el, then the language of file<br />

is Eldo.<br />

4. If the file extension is “.scs”, then its language is Spectre.<br />

5. If the file extension is “.sp”, then its language is SPICE.<br />

6. If “-lang XYZ” is specified in the command line of spect2el, then the language of all<br />

remaining files is XYZ (these files are not included in any of the above cases).<br />

7. If none of the above rules are applied, then the language of the file is SPICE.<br />

This applies to the standalone converter and also the Spectre compatibility flow (invoking Eldo<br />

with the command <strong>eldo</strong> -sp).<br />

Related Topics<br />

Spectre Compatibility Flow<br />

Troubleshooting the Spectre to Eldo Flow<br />

Spectre to Eldo Converter<br />

Troubleshooting the Spectre to Eldo Flow<br />

Some tips on troubleshooting the Spectre to Eldo flow.<br />

Include Files<br />

The spice_command_file must not include the spectre_file, and vice versa. Eldo automatically<br />

performs the link between these files. Attempting to include the Spectre file will not function,<br />

and the simulation will stop.<br />

• The SPICE file includes the Spectre file.<br />

Eldo will not be able to parse the Spectre file, leading to the following syntax error<br />

message (example):<br />

186<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Troubleshooting the Spectre to Eldo Flow<br />

ERROR 208: In file "./t1.sp" line 5:<br />

+ OBJECT "AOP": Unrecognized character or word A<br />

In this example, Eldo considers that “Aresfoo” in line 5 is requesting an aop (opamp).<br />

• The Spectre file includes the SPICE file.<br />

If you have the following top Spectre file, where t1.cir should be the<br />

spice_command_file:<br />

simulator lang=spectre<br />

subckt foo a b<br />

ends<br />

Aresfoo a b resistor r=2k<br />

subckt bar a b<br />

Aresbar a b resistor r=1k<br />

myInstance a b foo<br />

ends<br />

anotherInstance 1 0 bar<br />

simulator lang=spice<br />

.include "t1.cir"<br />

The Spectre to Eldo converter does not understand the .INCLUDE statement and so will<br />

not change its path nor copy the t1.cir file into the .t1.sp_dir folder. Eldo might find it,<br />

and proceed with the include, however it could also fail to find it and raise an error<br />

message.<br />

Moreover if the file is both included and specified using the -i command line option, you<br />

will have duplicate definitions, as the file is effectively included twice.<br />

Spectre does not understand SPICE syntax, which means only a full Spectre design can<br />

be used. However spectre_file could contain subcircuit definitions and Spectre library<br />

inclusion, and have its full design in the spice_command_file which may include some<br />

SPICE libraries.<br />

To summarize, from one side a full Spectre tree is allowed and from the other a full<br />

SPICE tree. This enables you to specify complex designs mixing both SPICE and<br />

Spectre.<br />

Eldo® User's Manual, 15.3 187


Simulator Compatibility<br />

Troubleshooting the Spectre to Eldo Flow<br />

Spectre Node and Device Names<br />

When Eldo is using a Spectre netlist as input, and the netlist contains an internal node and a<br />

device with the same name, it is impossible for Eldo to distinguish between these. When Eldo<br />

analyses a subcircuit in the Spectre netlist, each element is attempted to be converted, without<br />

knowing if it is a node name or a device name. This can lead to plots not being performed as<br />

expected, because Eldo does not know what kind of plot is required (I or V for example).<br />

If topsp, the Spectre input file, contains a subcircuit instance named x1, and the SPICE<br />

command file, cmd.cir, contains:<br />

.plot dc v(x1.c1)<br />

then c1 must be an internal node name as a voltage plot is requested.<br />

However, if cmd.cir contains:<br />

.plot dc I(x1.c1)<br />

then c1 must be a device name as a current plot is requested.<br />

When Eldo is using a Spectre netlist as input, Eldo does not initially know the kind of plot<br />

requested (I or V). Therefore, when Eldo analyses x1.c1, each element is attempted to be<br />

converted; x1.c1 is mapped to xx1.yy, where yy can be cc1 if there was a capacitor named c1 in<br />

that subcircuit in the Spectre design, or c1 if there was no capacitor named c1.<br />

So if the following is specified:<br />

.plot dc v(x1.c1)<br />

it is equivalent to .plot dc v(xx1.cc1) if c1 is defined as a device, no matter if it is a node name<br />

or not. In this case, the plot is not performed.<br />

Error Messages<br />

The Spectre to Eldo converter logs the line number where a conversion error occurs. Some<br />

example error messages and full descriptions are provided in Table 5-6.<br />

Table 5-6. Spectre Conversion Error Messages<br />

Error Message<br />

Code<br />

5 Unable to open the temporary file<br />

“a_name”.<br />

Description<br />

Eldo cannot create a temporary file<br />

required to process the simulation. The file<br />

contains the converted Spectre design and<br />

the SPICE command file, if there is one.<br />

188<br />

Eldo® User's Manual, 15.3


Error<br />

Code<br />

Related Topics<br />

Spectre Compatibility Flow<br />

Spectre Compatibility Description<br />

Working with Multiple Languages<br />

Spectre to Eldo Converter<br />

Simulator Compatibility<br />

Troubleshooting the Spectre to Eldo Flow<br />

Table 5-6. Spectre Conversion Error Messages (cont.)<br />

Message<br />

33 Spectre file not specified. Option -sp has been specified without a<br />

filename (<strong>eldo</strong> -sp).<br />

1602 outpath not specified. Option -outpath has been specified without<br />

a filename (<strong>eldo</strong> -sp topsp.sp -outpath).<br />

1603 Spectre input file is a directory. The specified Spectre file is in fact a<br />

directory name.<br />

1604 Spectre input file “a_name”<br />

doesn’t exist.<br />

1605 Error: Unable to create the<br />

directory “a_name”. Either you<br />

don’t have write access or there is<br />

not enough space left on device.<br />

1606 preprocessing of the Spectre files<br />

failed.<br />

Please refer to /spect2el.log<br />

file for more details.<br />

1606 preprocessing of the Spectre files<br />

failed.<br />

Please refer to spect2el.log file for<br />

more details.<br />

Description<br />

Eldo cannot find the specified Spectre file.<br />

For example, if the file extension was not<br />

specified or if the file does not exist.<br />

spect2el cannot create the directory that<br />

will contain the converted design.<br />

spect2el did not convert the Spectre design<br />

properly. Some missed cases may remain<br />

(when using the alterblock in Spectre for<br />

example).<br />

As above but with file and path<br />

information displayed.<br />

As above but when the Eldo -outpath<br />

argument is not specified.<br />

Eldo® User's Manual, 15.3 189


Simulator Compatibility<br />

Spectre to Eldo Converter<br />

Spectre to Eldo Converter<br />

The Spectre to Eldo converter is a tool script that converts from Spectre format (Spectre<br />

language syntax) into Eldo format (Eldo syntax). The script is named spect2el.<br />

For libraries including mixed-language syntax (Spectre and SPICE), Spectre to Eldo assumes<br />

SPICE input mode when it opens an include file. All included files, except top-level files and<br />

those with a .scs extension, that use the Spectre native language must begin with the statement:<br />

simulator lang=spectre. Exceptions are top-level files and files that end with a .scs extension<br />

which are read in Spectre input mode.<br />

Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

Installing a Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

Supported Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191<br />

Netlist Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

Prerequisites<br />

Prerequisites for the Spectre to Eldo converter.<br />

• Korn shell must be installed under the /bin directory. The tool is not able to run if /bin/<br />

ksh cannot be invoked.<br />

• The “gawk” utility. This is provided along with the tool.<br />

• The dos2unix utility must be installed on the running machine. The tool generates a<br />

warning and produce an inaccurate conversion or remain in hanged state if dos2unix<br />

cannot be invoked.<br />

Installing a Patch<br />

When an urgent fix is required, Mentor Graphics may provide a specific Spectre to Eldo<br />

converter patch mechanism to enable the fixed version of the converter to be used with an<br />

existing AMS installation. The patch is provided through a tar file.<br />

Follow the instructions below to patch an older AMS tree version with a newer Spectre to Eldo<br />

converter.<br />

Procedure<br />

1. Untar the patch tar file into an empty directory.<br />

2. Run the script patchs2e that has been extracted to the directory.<br />

3. Enter the full path of the output directory as requested by the script (must be existing<br />

prior to running the script, the script will not create a missing directory).<br />

190<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Spectre to Eldo Converter<br />

4. The script runs through the patch installation, and upon completion requests two settings<br />

to be added to your .cshrc (or equivalent) file:<br />

• Set the patch environment variable:<br />

setenv S2E_PATCH out_dir<br />

(where out_dir is the full path of the output directory as you entered in step 3)<br />

• Add $S2E_PATCH/bin to your PATH environment variable:<br />

setenv PATH $S2E_PATCH/bin :$PATH<br />

5. In a new shell, or sourcing the .cshrc, you will be able to use the new Spectre to Eldo<br />

converter.<br />

Supported Features<br />

The Spectre to Eldo converter can convert Spectre syntax to guarantee compatible results for:<br />

• Basic component instantiations.<br />

• Device models and instances.<br />

• Subcircuit definitions and instances.<br />

• nport instances.<br />

• Controlled sources.<br />

• Functions and “if” statements.<br />

• Statistics.<br />

• Conversion of some of the device models written with SPICE syntax (simulator<br />

lang=SPICE). These models are:<br />

MOSFET models (nmos and pmos) MOS1, MOS2, MOS3, BSIM1, BSIM2, BSIM3,<br />

BSIM3v3, BSIM4, and BSIM-CMG (SPICE levels 1, 2, 3, 4, 5, 10, 11, 54, and 72<br />

respectively); BJT model (npn, pnp, lnpn, and lpnp), SPICE BJT (equivalent to Eldo<br />

level 1 as SPICE does not support level for BJT); Diode model (SPICE levels 1 and 3).<br />

The Spectre to Eldo converter can handle libraries with nested includes for any number of levels<br />

and for any directory structure.<br />

The following Spectre device models are supported:<br />

• BSIM3v3 MOS model.<br />

• BSIM-CMG MOS model.<br />

• Philips PSP 102 MOS model.<br />

Eldo® User's Manual, 15.3 191


Simulator Compatibility<br />

Spectre to Eldo Converter<br />

Notes<br />

The following models are supported: psp1010, psp1020, pspnqs1020, psp1011,<br />

psp1021, pspnqs1021, psp101, psp102e, and pspnqs102e.<br />

• Philips PSP 103 MOS model.<br />

• Philips MOS Model 11 Level 1102.<br />

The following models are supported by the converter as Eldo Level 69: mos 11021,<br />

mos11021t, mos11020, mos11020t, mos1102e, and mos1102et.<br />

• Philips MOS Model 11 Level 11010.<br />

• HISIM MOS model (Eldo level 66).<br />

• HISIM-LDMOS MOS model (Eldo level 73).<br />

• VBIC bipolar model.<br />

• HICUM bipolar model.<br />

• BJT level one model (Gummel Poon).<br />

• Diode level one model.<br />

• JFET level one model.<br />

• MOS1 model.<br />

• Polynomial models for R, L, and C.<br />

• Geometric Resistor model.<br />

• Physical Resistor model (phyres).<br />

• R3_cmc resistor model.<br />

• MOS0 model.<br />

However, since this model has no equivalent in Eldo, it is mapped to the MOS level=1<br />

model of Eldo. Full compatibility is not guaranteed.<br />

• Bsource instances (r, l, c, i, v, q, g, and phi sources).<br />

• Other device models are converted from the syntax point of view only with primary<br />

compatibility testing.<br />

The list includes: BSIM4, DP500, MOS2, MOS3, BSIM1, BSIM2, BSIM3v2, EKV,<br />

BSIMSOI3 PD, BSIMSOI4, GAAS, TOM2, BJT504, BJT504t, JFET level 2, JFET<br />

level 4, PSP, TFT Polysilicon, TFT Amorphous, Mextram504, HICUM Level0,<br />

MOS2002, JUNCAP, JUNCAP2, JUNCAP_ELDO.<br />

192<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Spectre to Eldo Converter<br />

• For proper conversion of netlists or libraries, all the included files should exist. If any<br />

instance in the input library or netlist refers to a model, a subcircuit, or a Verilog-A<br />

module, which is not defined in the input library/netlist or one of its included files, this<br />

instance cannot be recognized or converted and a warning message is displayed in the<br />

running terminal. The conversion continues if running the tool in standalone mode.<br />

However, if running the tool from inside Eldo, the converter exits with error code 10<br />

informing that this line is not converted and the conversion process will not continue<br />

until this error is corrected. A file named spect2el.error is generated clearly describing<br />

the errors.<br />

• If model parameters wdexp and ldexp are not specified in the Spectre resistor model,<br />

then the converter prints them with a default value equal to 1. If model parameter AF is<br />

not specified in the Spectre resistor model, then the converter prints it with a default<br />

value equal to 2. In the case of a resistor instance, the converter ignores the printing of<br />

{wdexp, ldexp, weexp, leexp}.<br />

Netlist Conversion<br />

The netlist conversion features come with the spect2el tool. This feature automates the netlists<br />

conversion process from Spectre syntax to Eldo syntax. The following features are supported:<br />

Analyses<br />

• AC analysis<br />

• DC analysis<br />

• Transient analysis<br />

• S parameters analysis<br />

• Monte Carlo analysis<br />

• Sweep analysis<br />

• Noise analysis<br />

• Sensitivity analysis<br />

• Transfer function analysis<br />

• Stability analysis<br />

Note<br />

The above analyses types are partially supported. There are some combinations that<br />

are not yet supported.<br />

Eldo® User's Manual, 15.3 193


Simulator Compatibility<br />

Spectre to Eldo Converter<br />

Control Statements<br />

• Option statements:<br />

• Paramset statement<br />

• Save statement<br />

Reltol Vabstol Iabstol Temp<br />

Tnom Scalem Scale Gmin<br />

Digits Pivrel Pivab<br />

• Assert statement<br />

With the assert statement, you can set custom characterization checks to specify the safe<br />

operating conditions for your circuit. The Spectre circuit simulator then issues messages<br />

telling you when parameters move outside the safe operating area and, conversely, when<br />

the parameters return to the safe area.<br />

Using model types as a primitive with the assert statement like below is not yet<br />

supported:<br />

check assert primitive=bsim3v3 param=l min=10u max=100u<br />

• Simple combinations of alter and set statements<br />

• Include statement<br />

Any include statement between corner markers {//corner to //endcorner} are commented<br />

in the Eldo output, and included files in this area are converted in the /out_dir/corner/<br />

directory. Note that corner and endcorner are case-insensitive.<br />

o<br />

included lang=<strong>eldo</strong>|spice|spectre<br />

Specifying the statement included lang=<strong>eldo</strong>|spice|spectre instead of simulator lang<br />

behaves exactly like simulator lang, but in addition forces included files (included<br />

within included lang and end lang statements) to be in the same language as<br />

specified after included lang=. This avoids any need to specify simulator<br />

lang=<strong>eldo</strong>|spice|spectre at the beginning of the called files. It forces the language of<br />

included files to be controlled by the parent file. Specify end lang=<strong>eldo</strong>|spice|spectre<br />

to return the simulation language to the default one.<br />

Sources<br />

• Independent Sources:<br />

o<br />

o<br />

Isource<br />

Vsource<br />

194<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

Spectre to Eldo Converter<br />

• Controlled Sources:<br />

o<br />

o<br />

o<br />

o<br />

VCVS<br />

VCCS<br />

CCVS<br />

CCCS<br />

• Polynomial Controlled Sources:<br />

o<br />

o<br />

o<br />

o<br />

Pcccs<br />

Pccvs<br />

Pvccs<br />

Pvcvs<br />

Components<br />

• Primitive components (resistor, capacitor, diode, inductor, mutual inductor)<br />

• MOSFET, JFET, Bipolar transistors<br />

• Relay<br />

The four-terminal relay is a voltage controlled relay tied between terminals t1 and t2.<br />

The voltage between terminals ps and ns controls the relay resistance. The relay<br />

resistance varies nonlinearly between ropen and rclosed, the open relay resistance and<br />

closed relay resistance, respectively. These resistance values correspond to control<br />

voltages of vt1 and vt2 respectively.<br />

• Ideal switch<br />

Single-pole multiple-throw switch with infinite off resistance and zero on resistance.<br />

The switch is provided to enable you to reconfigure your circuit between analyses.<br />

When the switch is set to position 0, it is open. In other words, no terminal is connected<br />

to any other. When the switch is set to position 1, terminal 1 is connected to terminal 0,<br />

and all others are unconnected. When the position is set to position 2, terminal 2 is<br />

connected to terminal 0, and so on.<br />

The switch can change its position based on which analysis type is being performed<br />

using the xxx_position parameters.<br />

• Transformer<br />

• Delay Line<br />

The delay line model is a four-terminal device with zero output impedance and infinite<br />

input impedance. The output between nodes p and n is the input voltage between nodes<br />

ps and ns, delayed by the time delay td and scaled by gain.<br />

Eldo® User's Manual, 15.3 195


Simulator Compatibility<br />

Spectre to Eldo Converter<br />

• A2D<br />

The analog-to-logic converter transfers analog waveforms to a logic simulator.<br />

• D2A<br />

The logic-to-analog converter converts a binary signal from a logic simulator to an<br />

analog waveform.<br />

• Verilog-A instances<br />

• Current probe (iprobe)<br />

• Independent resistive source (port)<br />

Limitations<br />

• The following features cannot be converted with the tool. They require some manual<br />

modifications.<br />

o<br />

o<br />

o<br />

o<br />

o<br />

Related Topics<br />

Nested sweeps that sweeps more than one paramset. For example:<br />

sweep1 sweep paramset=paramset1 {<br />

sweep2 sweep paramset=paramset2 {<br />

}<br />

}<br />

....<br />

Complicated combinations of the alter set statements.<br />

In the PWL definition, a maximum of 500,000 pairs are accepted. If this number is<br />

exceeded, the conversion will fail.<br />

Long lines, it is advisable that any line should not be longer than 2,000 characters,<br />

usage of line continuation is strongly advised in the original netlist.<br />

Immediate set options and deferred set options are partially covered.<br />

Spectre to Eldo Converter<br />

spect2el Command Reference<br />

196<br />

Eldo® User's Manual, 15.3


spect2el Command Reference<br />

Simulator Compatibility<br />

spect2el Command Reference<br />

Runs the Spectre to Eldo converter script that converts from Spectre format into Eldo format.<br />

Syntax<br />

spect2el<br />

-in_dir [-file_list ] [-i ] [-lang <strong>eldo</strong>|spectre|spice]<br />

[-out_dir ] [-log ] [-remove_param 1|0] [-remove_param_warn 1|0]<br />

[-do_va 1|0] [-inline_warnings 1|0] [-netlist_converter 1|0] [-devx 1|0] [-scs2lib 1|0]<br />

[-condition 2|1|0] [-use_database 2|1|0] [-clr_database 1|0] [-sp_plot 2|1|0] [-css 1|0]<br />

[-case 1|0] [-p | -searchpath ] [-v]<br />

Arguments<br />

• -in_dir dir1<br />

Input directory where the library/netlist to be converted reside. This could be a full path or a<br />

relative path, relative to where the tool is initiated. Required.<br />

• -file_list list<br />

File list to be converted. It defaults to all files in the given directory if not specified. Default<br />

‘*’.<br />

The file list should only include the library main file(s), which is to be directly included in<br />

the netlist in case of library conversion, or only the netlist file in case of netlist conversion.<br />

Other files, which are included from within those main file(s) are handled automatically. In<br />

other words, each file in the file list should not be included in any other file in the file list.<br />

Each file in the file list should be a standalone file. It should not depend on any other file in<br />

the file list. That is, it should not use any model, parameter, or subcircuit, which is not<br />

defined in it or in any of the files it includes.<br />

• -i <strong>eldo</strong>_file<br />

Defines a single Eldo syntax file to be used in association with the Spectre netlist. This Eldo<br />

file and any included files from within is handled as Eldo syntax unless the statement<br />

simulator lang=spectre|spice is specified inside.<br />

• -lang <strong>eldo</strong>|spectre|spice<br />

Changes the default language syntax of the Spectre to Eldo converter. The default syntax is<br />

Spectre.<br />

Specify -lang <strong>eldo</strong> to set the default language syntax to Eldo. This avoids any need to<br />

specify simulator lang=<strong>eldo</strong> at the beginning of Eldo files.<br />

Specify -lang spice to set the default language syntax to SPICE. This avoids any need to<br />

specify simulator lang=<strong>eldo</strong> at the beginning of SPICE files.<br />

• -out_dir dir2<br />

Output directory where the converted files are to be written. This could be a directory name<br />

or a path. This directory is created by the tool. If this directory already exists a warning<br />

Eldo® User's Manual, 15.3 197


Simulator Compatibility<br />

spect2el Command Reference<br />

message is issued. If not specified, it defaults to the same name as the input directory name<br />

but with a suffix “_converted.” Default ./{in_dir}_converted for output name.<br />

• -log file<br />

Specifies the log file that contains a brief report about the conversion process including any<br />

error or warning messages appearing during the conversion. If not specified, it defaults to a<br />

file named spect2el.log in the current working directory. The file can be specified by name,<br />

or by full path, or relative path to the current working directory.<br />

• -remove_param 1|0<br />

If set to 1, some model card parameters not supported by Eldo are removed. Default is 1<br />

(set). If set, parameters removed are: “dope” for Diode level 1. “meto” and “wnoi” for<br />

BSIM3v3.<br />

• -remove_param_warn 1|0<br />

If set to 1, a warning is issued each time one of the above parameters is removed. This works<br />

only if -remove_param is set. Default is 0 (not set).<br />

• -do_va 1|0<br />

If set to 1, attempts to convert Verilog-A instances used inside SPICE netlists. Default is 1<br />

(set).<br />

Note<br />

This argument is not guaranteed. Its success is dependent on the syntax of the<br />

Verilog files included. Any unusual syntax in the Verilog file may cause this feature<br />

to fail. Any issue regarding Verilog syntax is beyond the scope of this converter.<br />

• -inline_warnings 1|0<br />

If set to 1, useful converter warnings are printed inline as comments in the converted netlist<br />

to ease any required manual conversion work. Default is 0 (not set).<br />

• -netlist_converter 1|0<br />

If set to 1, enables the netlist conversion feature. Default is 1 (set).<br />

• -devx 1|0<br />

Control whether the mismatch variation (for Monte-Carlo analysis) in Spectre would be<br />

converted to devx variation (set to 1) or dev variation (set to 0) in Eldo. Default is 1 which<br />

means that it would be converted to devx.<br />

• -scs2lib 1|0<br />

If set to 1, all files with extension .scs are converted to the extension .lib. This also handles<br />

all include statements. Default is 0 (not set).<br />

• -condition 2|1|0<br />

Controls the conversion of Spectre statements that include the conditional operator “?” as<br />

below:<br />

198<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

spect2el Command Reference<br />

0<br />

The converter parses the conditional statement as is (default).<br />

1<br />

The converter uses keyword eval in the conversion (pre-2008.2 behavior).<br />

2<br />

The converter uses keyword valif in the conversion.<br />

• -use_database 2|1|0<br />

0<br />

Disables this argument. Set to 0 if the <strong>user</strong>’s home directory quota is reached, to<br />

deactivate the database creation.<br />

1<br />

Default. Enables you to make use of a library that has been converted before and is<br />

included in your netlist instead of having to convert it again for each design or for<br />

each time you modify your design. This is achieved by saving a database for the<br />

library when it is first converted, and then reading this database later to convert the<br />

netlists using this library. The converter checks for every file if it has an entry in this<br />

database or not. If a file has an entry it is not converted but retrieved from the<br />

database instead. Otherwise, if the file does not have an entry in the database (or is<br />

more recent than the entry), this file is converted and saved to the database. The<br />

database is created in your home directory with the minimum needed size.<br />

Unmodified files are copied from the last path they were converted to.<br />

2<br />

The outer level included files are not converted to the external_files directory. Netlist<br />

include statements with those files specified point directly to the pre-converted files.<br />

It is important to ensure that these outer level files have previously been converted,<br />

otherwise the files are converted and written to the external_files directory.<br />

Note<br />

Spectre to Eldo requires enough disk space on the <strong>user</strong>’s home area to save the<br />

database.<br />

• -clr_database 1|0<br />

If set to 1, enables you to remove the database of converted libraries. Note that this option<br />

removes all databases at once. Default is 0 (not set).<br />

• -sp_plot 2|1|0<br />

Controls the conversion of Spectre save statements into Eldo .PRINT, .PLOT and .PROBE<br />

commands as below:<br />

0<br />

The save statement is converted into .PRINT (default).<br />

1<br />

Eldo® User's Manual, 15.3 199


Simulator Compatibility<br />

spect2el Command Reference<br />

The save statement is converted into .PLOT.<br />

2<br />

The save statement is converted into .PROBE.<br />

• -css 1|0<br />

Convert all or just the selected sections of your library. Set to 0 to convert all sections. Set to<br />

1 (default) to convert only selected sections. If a file is included in an unselected section,<br />

then this file is ignored even if it does not exist in the path of the include statement. When<br />

css=1, a missing file error is only generated if the file is called, otherwise a warning is<br />

printed in spect2el.log.<br />

• -case 1|0<br />

Set to 1 for the converter to be case-sensitive for all names (nodes, devices instances,<br />

models, subcircuit definitions and instances). Default is 0 (not set) which means that the<br />

converter is case-insensitive.<br />

• -p dir | -searchpath dir<br />

Specifies a directory where include files are located. If any included file from inside the<br />

netlist is not found, the converter looks for it in the location specified by ref_dir. If ref_dir is<br />

not a full path, it is generated relative to in_dir. Default is in_dir. See the usage examples.<br />

• -h<br />

Display the tool usage.<br />

• -v<br />

Display the Spectre to Eldo version, release, and build date.<br />

Description<br />

If errors occur, a file named spect2el.error is generated clearly describing the errors.<br />

All the above arguments are optional except for -in_dir.<br />

Examples<br />

The following is an example of converting a design including the library:<br />

spect2el -in_dir . -out_dir ./out -file_list netlist.scs -sp_plot 2<br />

The following is an example of converting a library:<br />

spect2el -in_dir . -out_dir ./out -file_list allModels.scs -scs2lib 1<br />

In both cases, the output directory out is created if it does not already exist. A directory named<br />

external_files is created in the directory out for converted .LIB/.INCLUDE files.<br />

The following shows an example of specifying a directory for the location of include files:<br />

200<br />

Eldo® User's Manual, 15.3


Simulator Compatibility<br />

spect2el Command Reference<br />

spect2el -in_dir spectre -out_dir <strong>eldo</strong> -file_list test.scs<br />

-p ../general_include<br />

Related Topics<br />

Spectre to Eldo Converter<br />

Spectre Compatibility<br />

Eldo® User's Manual, 15.3 201


Simulator Compatibility<br />

spect2el Command Reference<br />

202<br />

Eldo® User's Manual, 15.3


Chapter 6<br />

Setting Up An Analysis<br />

This chapter describes how to set up the following types of analysis for simulation in Eldo and<br />

the expected outputs.<br />

DC and Operating Point Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />

DC Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />

Performing a DC Analysis During Transient Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 207<br />

Operating Point Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208<br />

Differences Between DC and OP Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210<br />

DC Convergence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211<br />

Improving DC Convergence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211<br />

DC Convergence Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213<br />

Saving and Restarting DC Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215<br />

Transient Analyses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217<br />

Transient Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217<br />

Saving and Restarting Transient Simulations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219<br />

AC Related Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224<br />

AC Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224<br />

Adaptive AC Analysis Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226<br />

Performing an AC Analysis During Transient Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . 226<br />

Saving and Restarting AC Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227<br />

Loop Stability Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229<br />

Pole Zero Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230<br />

Transfer Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

Noise Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

Noise Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

Transient Noise Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241<br />

Statistical and Sensitivity Related Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

Worst Case Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

DC Mismatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269<br />

DC Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270<br />

Transient Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

AC Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

Sensitivity Analysis of Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

Design of Experiments Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

Other Miscellaneous Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />

Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />

Aging and Reliability Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277<br />

Eldo® User's Manual, 15.3 203


Setting Up An Analysis<br />

Check Safe Operating Area Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278<br />

High Impedance Node Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279<br />

Power Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279<br />

Viewing Power Analysis Results Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280<br />

Electrothermal Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282<br />

RF Analyses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283<br />

204<br />

Eldo® User's Manual, 15.3


DC and Operating Point Analyses<br />

The DC related analyses are:<br />

• “DC Analysis” on page 205<br />

• “Operating Point Analysis” on page 208<br />

DC Analysis<br />

Setting Up An Analysis<br />

DC and Operating Point Analyses<br />

The .DC command performs a DC analysis to determine the quiescent state or DC operating<br />

point (OP) of the circuit. The operating point of the circuit is computed with capacitances<br />

opened and inductances short-circuited. A DC analysis may be requested to determine the stable<br />

initial condition of an analog circuit prior to a transient or AC analysis.<br />

Tip<br />

See “.DC” in the Eldo Reference Manual.<br />

There are seven different types of DC analysis available as shown below:<br />

• .DC with no further parameters results in a single analysis of the circuit’s quiescent<br />

state.<br />

• .DC followed by a component name, CNAM, results in a variation of the element size or<br />

value. The variation sweeps from the value START to the value STOP with the<br />

incremental step INCR. The quiescent state is calculated for each incremental step.<br />

• .DC followed by a voltage or current source, SNAM, results in a voltage or current<br />

sweep of the specified source from START to STOP in increments INCR. The quiescent<br />

state is calculated for each incremental step. A second source SNAM2 may optionally<br />

be specified with associated sweep parameters. In this case, the first source is swept over<br />

its range for each value of the second source.<br />

• .DC followed by the TEMP keyword results in a variation of temperature. The<br />

temperature sweeps from the value of START to the value of STOP with the<br />

incremental step INCR. The quiescent state is calculated for each incremental step.<br />

• .DC followed by the PARAM keyword results in a variation of the value of a globally<br />

declared parameter PARAM_NAME. The variation sweeps from the value of START to<br />

the value of STOP with the incremental step INCR. The quiescent state is calculated for<br />

each incremental step.<br />

• .DC followed by the parameter, DATA=dataname, results in a sweep of the values predefined<br />

in the .DATA command. The quiescent state is calculated for each incremental<br />

step.<br />

Eldo® User's Manual, 15.3 205


Setting Up An Analysis<br />

DC Analysis<br />

• .DC followed by the parameter TIME={time} performs a DC analysis during a transient<br />

analysis. The transient analysis is stopped at each time specification, a true DC analysis<br />

is performed, then the transient analysis continues.<br />

DC sweeps can be nested up to three levels deep. For each value of the third level variable, the<br />

second level variable is swept through its specified range. For each value of the second level<br />

variable, the first level variable is swept through its specified range.<br />

DC Analysis Results<br />

For DC sweeps, the simulation output will contain tables of DC transfer voltages and currents<br />

available in the ASCII .chi file or binary waveform output.<br />

Example output in the .chi file from a .PRINT statement:<br />

0**** DC TRANSFER CURVES TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

V1 V(1) V(2) V(3)<br />

1.0000E+00 1.0000E+00 2.0000E+00 3.0000E+00<br />

1.5000E+00 1.5000E+00 2.0000E+00 3.0000E+00<br />

2.0000E+00 2.0000E+00 2.0000E+00 3.0000E+00<br />

1.0000E+00 1.0000E+00 2.5000E+00 3.0000E+00<br />

1.5000E+00 1.5000E+00 2.5000E+00 3.0000E+00<br />

2.0000E+00 2.0000E+00 2.5000E+00 3.0000E+00<br />

1.0000E+00 1.0000E+00 3.0000E+00 3.0000E+00<br />

1.5000E+00 1.5000E+00 3.0000E+00 3.0000E+00<br />

2.0000E+00 2.0000E+00 3.0000E+00 3.0000E+00<br />

1.0000E+00 1.0000E+00 2.0000E+00 3.5000E+00<br />

1.5000E+00 1.5000E+00 2.0000E+00 3.5000E+00<br />

2.0000E+00 2.0000E+00 2.0000E+00 3.5000E+00<br />

1.0000E+00 1.0000E+00 2.5000E+00 3.5000E+00<br />

1.5000E+00 1.5000E+00 2.5000E+00 3.5000E+00<br />

2.0000E+00 2.0000E+00 2.5000E+00 3.5000E+00<br />

1.0000E+00 1.0000E+00 3.0000E+00 3.5000E+00<br />

1.5000E+00 1.5000E+00 3.0000E+00 3.5000E+00<br />

2.0000E+00 2.0000E+00 3.0000E+00 3.5000E+00<br />

1.0000E+00 1.0000E+00 2.0000E+00 4.0000E+00<br />

1.5000E+00 1.5000E+00 2.0000E+00 4.0000E+00<br />

2.0000E+00 2.0000E+00 2.0000E+00 4.0000E+00<br />

1.0000E+00 1.0000E+00 2.5000E+00 4.0000E+00<br />

1.5000E+00 1.5000E+00 2.5000E+00 4.0000E+00<br />

2.0000E+00 2.0000E+00 2.5000E+00 4.0000E+00<br />

1.0000E+00 1.0000E+00 3.0000E+00 4.0000E+00<br />

1.5000E+00 1.5000E+00 3.0000E+00 4.0000E+00<br />

2.0000E+00 2.0000E+00 3.0000E+00 4.0000E+00<br />

Figure 6-1 shows an example waveform output from a .PLOT statement:<br />

206<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Performing a DC Analysis During Transient Analysis<br />

Figure 6-1. DC Device Characteristics<br />

Related Topics<br />

Performing a DC Analysis During Transient Analysis<br />

Operating Point Analysis<br />

Differences Between DC and OP Analyses<br />

DC Convergence<br />

Improving DC Convergence<br />

DC Convergence Troubleshooting<br />

Performing a DC Analysis During Transient<br />

Analysis<br />

It is possible to perform a true DC analysis during a transient analysis. This can be useful in<br />

cases where the circuit is brought to a certain state through transient patterns and simulation, for<br />

example digitally programmed circuits. Specifying .DC with time specifications enables you to<br />

stop the transient, perform a true DC analysis, and continue the transient analysis. The true DC<br />

analysis is initialized with the transient state of the circuit at that time, and might converge to a<br />

slightly different state, due to the fact that any residual dynamic current will be eliminated (true<br />

DC analysis searches for a solution with static currents only). Also, when restarting, the<br />

dynamic currents are lost, so the occurrence of a DC analysis during a transient analysis<br />

potentially perturbates the exact transient trajectory. It is recommended to specify the DC<br />

analysis during transient analysis at times where the circuit is stabilized: in a state with no or<br />

very small residual dynamic currents.<br />

Eldo® User's Manual, 15.3 207


Setting Up An Analysis<br />

Operating Point Analysis<br />

In the following example Eldo performs a DC analysis at times 20ns and 40ns during a transient<br />

analysis from 0 to 100ns.<br />

.DC TIME=20n 40n<br />

.TRAN 1n 100n<br />

The results of DC analysis during transient analysis are output using:<br />

.EXTRACT DC TIME=...<br />

Limitations:<br />

• Only one .DC command with time specifications is allowed: subsequent commands are<br />

ignored.<br />

• Not supported for Questa ADMS, SST/MODSST analysis, and NOISETRAN analysis.<br />

See Also<br />

• .DC in the Eldo Reference Manual<br />

• .EXTRACT in the Eldo Reference Manual<br />

• .TRAN in the Eldo Reference Manual<br />

Related Topics<br />

DC Analysis<br />

Operating Point Analysis<br />

The .OP command determines the DC Operating Point (DCOP) of the circuit with inductors<br />

short-circuited and capacitors opened. If either the specified simulation time is reached or one<br />

of the conditions described in the “optional parameters” is fulfilled, the DC operating point is<br />

saved to the .chi file.<br />

If no parameter is specified, the operating point information is saved for DC prior to AC, or first<br />

DC analysis in the case of a DC sweep.<br />

.OP analysis is automatically performed before an .AC analyses.<br />

Tip<br />

See “.OP” in the Eldo Reference Manual.<br />

DC Operating Point Calculation for RF<br />

The DC operating point calculation for Eldo RF differs from the Eldo .OP command by using<br />

an average value of the source, even if a DC value is specified.<br />

208<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Operating Point Analysis<br />

See “.OP RF” in the Eldo RF User’s Manual for more information.<br />

Operating Point Analysis Results<br />

The DC operating point is saved to the .chi file. Information concerning the operating points<br />

such as power dissipation, node voltages, and source currents are output to the .chi file.<br />

Example results:<br />

0**** DC OPERATING POINT TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

NODE VOLTAGE NODE VOLTAGE NODE VOLTAGE<br />

D 2.0000E+000 G 5.0000E-001 S 0.0<br />

VOLTAGE SOURCE CURRENT<br />

NAME CURRENT VOLTAGE POWER<br />

VD -7.7327E-013 2.0000E+000 -1.5465E-012<br />

VG 0.0 5.0000E-001 0.0<br />

VS 0.0 0.0 0.0<br />

TOTAL POWER DISSIPATION: 1.5465E-012 WATTS<br />

0**** OPERATING POINT INFORMATION TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

MN1<br />

MODEL<br />

MN<br />

ID<br />

7.7327E-013<br />

VGS<br />

5.0000E-001<br />

VDS<br />

2.0000E+000<br />

VBS 0.0<br />

VTH<br />

5.0000E-001<br />

VDSAT 0.0<br />

GM<br />

5.1797E-008<br />

GDS 0.0<br />

RON<br />

-1.0000E+030<br />

GMB 0.0<br />

CBD 0.0<br />

CBS 0.0<br />

CGS<br />

4.6042E-014<br />

CGD 0.0<br />

CGB 0.0<br />

Region<br />

saturation<br />

VTH_D 0.0<br />

Related Topics<br />

Differences Between DC and OP Analyses<br />

DC Convergence<br />

Improving DC Convergence<br />

Eldo® User's Manual, 15.3 209


Setting Up An Analysis<br />

Differences Between DC and OP Analyses<br />

DC Convergence Troubleshooting<br />

Differences Between DC and OP Analyses<br />

The .DC and .OP commands (without any parameters specified) both determine the quiescent<br />

state or DC Operating Point (DCOP) of the circuit. The operating point of the circuit is<br />

computed with capacitances opened and inductances short-circuited.<br />

Tip<br />

See “.DC” and “.OP” in the Eldo Reference Manual.<br />

The main difference between the commands is the information output to the .chi file:<br />

• The .DC command only prints DC Operating Point information related to the node<br />

voltages, source currents, and power dissipation. Look for the DC OPERATING POINT<br />

section in the .chi file.<br />

• The .OP command prints DC Operating Point information related to the node voltages,<br />

source currents, and power dissipation, as well as the Operating Point table information<br />

related to device bias. Look for the DC OPERATING POINT and OPERATING POINT<br />

INFORMATION sections in the .chi file. The items in the OP table can also be<br />

extracted, plotted, and printed.<br />

When sweeping parameters (for example .STEP), with a .DC or .OP command specified with<br />

no other analysis, a continuous waveform is generated when DC plots are requested. When<br />

another analysis (for example .AC) is requested during a sweep together with .DC, Eldo<br />

generates a single point waveform for each run and EZwave displays them as a compound<br />

waveform. If a .OP command is specified instead of the .DC command, no DC plots are<br />

generated.<br />

Eldo automatically determines the DC Operating Point before performing the following<br />

analyses:<br />

• .AC without UIC parameter specified—a .OP is first performed, the SMALL SIGNAL<br />

BIAS SOLUTION and OPERATING POINT INFORMATION are output to the .chi<br />

file.<br />

• .TRAN without UIC parameter specified—a .DC is first performed, no operating point<br />

information is output to the .chi file.<br />

• .DC sweep specified—a .DC is performed at each point of the DC sweep, no operating<br />

point information is output to the .chi file.<br />

Note<br />

The SMALL SIGNAL BIAS SOLUTION is equivalent to the DC OPERATING<br />

POINT information in the .chi file, just the label is different.<br />

210<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

DC Convergence<br />

Related Topics<br />

DC Analysis<br />

Operating Point Analysis<br />

DC Convergence<br />

DC Convergence<br />

Eldo partitions the circuit in one block or several blocks (especially in the case of large circuits<br />

with MOS). Partitioning iterations are used to find DC convergence. Partitioning iterations can<br />

be disabled by specifying either of the following options:<br />

• .OPTION NODCPART<br />

• .OPTION DCPART=0 (default values is 5)<br />

For DC Analysis, only the Newton Raphson algorithm is used to compute DC.<br />

Tip<br />

See “.OPTION NODCPART” and “.OPTION DCPART” in the Eldo Reference Manual.<br />

Related Topics<br />

Improving DC Convergence<br />

DC Convergence Troubleshooting<br />

Improving DC Convergence<br />

Before any kind of analysis is carried out by Eldo, a DC or operating point for the circuit in<br />

question is usually carried out, unless the UIC parameter is present in the .AC or .TRAN<br />

command.<br />

DC and operating point convergence times can vary greatly, depending on the type of circuit<br />

simulated. Eldo provides some commands that may be used to speed up the convergence<br />

process:<br />

.IC V=value<br />

When used, Eldo fixes the specified node voltages for the duration of the DC analysis. If the<br />

UIC parameter is also present (for example in the .TRAN command), no DC analysis is<br />

performed and the voltages are initialized as defined in the .IC command. All other voltages on<br />

nodes not initialized in the .IC command are determined by Eldo. During subsequent analysis<br />

(transient), the node voltages are freed of their initial values, and may therefore assume different<br />

values.<br />

Eldo® User's Manual, 15.3 211


Setting Up An Analysis<br />

Improving DC Convergence<br />

.NODESET V=value<br />

Used to help calculate the DC operating point by initializing selected nodes during the first DC<br />

operating point calculation. After the first calculation has been completed, the node values are<br />

released, and a second DC operating point calculation is started. This command is useful when<br />

the whereabouts of the DC operating point is known, enabling Eldo to converge directly to it,<br />

and also for bistable circuits or circuits with more than one operating point.<br />

.GUESS V=value<br />

Enables you to set the initial voltages to specific nodes for the first iteration of a DC operating<br />

point run. This differs from the .NODESET command where the node voltages are fixed for the<br />

duration of the first DC operating point calculation.<br />

.RAMP<br />

This command can be used when no DC operating point has been found using the above<br />

methods. Two ramping facilities are provided: DC ramping and transient ramping.<br />

DC convergence algorithms are automatically used by Eldo when the standard DC algorithm<br />

fails to converge. The sequence of algorithms used is as follows: Newton, Gmin ramping, DC<br />

ramping, Transient ramping, PSTRAN, T° ramping, and DPTRAN. The DPTRAN algorithm is<br />

used as a last attempt at convergence. To disable the automatic convergence aid mechanism,<br />

specify option NOCONVASSIST.<br />

.RAMP_SUPPLY<br />

This command provides a power supply ramping analysis as an alternative to the .RAMP<br />

command. It slowly applies the power range over the specified time value, or over a percentage<br />

of the total simulation duration if the simulation duration is known. This can be used as an<br />

alternative solution when .TRAN UIC is specified.<br />

.OPTION VMIN, VMAX<br />

By default, Eldo looks for the DC operating point within the limits of the circuit power supply.<br />

In the case of a circuit that contains elements that create energy, such as voltage- or currentcontrolled<br />

sources, it is possible that Eldo can look for solutions outside the expected bounds. If<br />

so, Eldo displays the message:<br />

Searching operating point between [x1,x2]<br />

You can control the x1 and x2 limits to speed up the DC convergence process using the VMIN<br />

and VMAX parameters. It must be stressed, however, that unrealistic limits can also cause<br />

convergence problems.<br />

Related Commands<br />

• .GUESS in the Eldo Reference Manual<br />

212<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

DC Convergence Troubleshooting<br />

• .IC in the Eldo Reference Manual<br />

• .NODESET in the Eldo Reference Manual<br />

• .RAMP in the Eldo Reference Manual<br />

• .RAMP_SUPPLY in the Eldo Reference Manual<br />

• Options GRAMP, PSTRAN, DPTRAN, and NOCONVASSIST in the Eldo Reference<br />

Manual<br />

• Options VMIN and VMAX in the Eldo Reference Manual<br />

Related Topics<br />

DC Convergence Troubleshooting<br />

DC Convergence Troubleshooting<br />

This topic describes some basic steps you can perform to help troubleshoot common DC<br />

operating point (DCOP) convergence problems in Eldo.<br />

Causes<br />

Most convergence problems are related to one of the following:<br />

• Devices and device models.<br />

• Circuit topology (open loop, closed loop, hierarchical).<br />

• Simulator setup (usually through simulation commands and options).<br />

In DC analysis, the main causes of convergence failure are:<br />

Solution<br />

• Model discontinuities.<br />

• Absence of (or insufficient) initial conditions.<br />

• Instability in the circuit, bistable circuit blocks, and so on.<br />

• Unpractical impedance levels (also check the units are correct: m is milli).<br />

To improve DC convergence, do at least one of the following:<br />

• Check circuit connections, especially for nodes with two connections or floating nets.<br />

• Use initial conditions for important nodes:<br />

.IC V(node)=...<br />

• Increase ITL1 to 200, 300, or even 400; this increases the number of allowed DC<br />

iterations before the simulator gives up:<br />

Eldo® User's Manual, 15.3 213


Setting Up An Analysis<br />

DC Convergence Troubleshooting<br />

.OPTION ITL1=200<br />

• Use ramping and related options to change DC bias incrementally to full bias, for<br />

example:<br />

.OPTION GRAMP=9<br />

• Add large shunt resistors and the keyword OFF to diodes, and so on, for example:<br />

D5 5 6 DMOD OFF<br />

RD5 5 6 100MEG<br />

For large circuits, it is advisable to save the entire DCOP data so that DC analysis will have to<br />

be done once and the results reused again and again as long as the design does not change.<br />

Follow these steps to do this:<br />

For an initial simulation (DCOP):<br />

• Use the suggestions above until a successful convergence is achieved.<br />

• Make sure you have the following commands in the simulation file:<br />

.OP<br />

.SAVE /filename.iic DC<br />

For subsequent simulations (AC, Transient), DC analysis will be skipped thus saving valuable<br />

CPU time. Do the following:<br />

• Remove the commands .OP and .SAVE from the simulation file.<br />

• Add a command to use the initial conditions captured for the whole circuit:<br />

.USE /filename.iic IC<br />

where IC is a keyword for Initial Conditions.<br />

• Modify the .TRAN statement to make use of the initial conditions:<br />

.TRAN tprint tstop [tstart [Hmax]] UIC<br />

where UIC is a keyword for Use Initial Conditions. This makes a big difference<br />

especially when DCOP data is available.<br />

• Modify the .AC statement in a similar way, by adding UIC at the end.<br />

These steps will solve most convergence problems without going into the guesswork of tuning<br />

simulator options. For troublesome designs, more advanced steps will need to be taken.<br />

When initial conditions are used (UIC parameter) Eldo performs a logical initialization prior to<br />

the Transient run (that is, no DC analysis to be performed). Specify option NOINIT to disable<br />

214<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Saving and Restarting DC Simulations<br />

this logical initialization; Eldo still considers .NODESET and .IC statements, but all other node<br />

voltages start at zero.<br />

Tip<br />

See “.DC” and “.OPTION NOINIT” in the Eldo Reference Manual.<br />

Related Topics<br />

DC Analysis<br />

Saving and Restarting DC Simulations<br />

A circuit may need to be simulated several times. In each case, the operating point must be<br />

determined, although it may be the same for each run or may be only slightly different; in any<br />

case a large change of operating point is unlikely. To avoid the wasteful recalculation of the<br />

operating point, a system is provided to store and reload the result of the DC analysis from Eldo;<br />

this significantly increases performance, as operating point calculation time is reduced.<br />

.SAVE DC in Combination with .RESTART<br />

The DC or operating point values for a circuit can be saved to a file and used later to greatly<br />

shorten this part of the analysis when the circuit is resimulated. This is achieved by employing<br />

the .SAVE DC and .RESTART commands, provided the circuit node names remain the same.<br />

To restart the simulation, you must modify the circuit description file. Remove the original<br />

.SAVE command, and include a .RESTART command in the circuit description file:<br />

.RESTART <br />

.SAVE DC in Combination with .USE<br />

The DC or operating point values for a circuit can be saved to a file and used later to greatly<br />

shorten this part of the analysis when the circuit is resimulated.This is achieved by employing<br />

the .SAVE DC and .USE commands, provided the circuit node names remain the same. The<br />

following steps are used, assuming that the circuit is stored in the circuit description file<br />

.cir.<br />

1. Add the following line to the circuit description file:<br />

.SAVE DC<br />

If no filename fname is given, the default used is .iic.<br />

2. Run the simulation to find the operating point of the circuit. This is stored in the file as<br />

specified in the .SAVE command.<br />

Eldo® User's Manual, 15.3 215


Setting Up An Analysis<br />

Saving and Restarting DC Simulations<br />

3. Change the circuit description file to include any other analysis required. Do not specify<br />

DC, UIC or operating point calculation. Add to the circuit description file one of the<br />

lines:<br />

.USE IC<br />

.USE NODESET<br />

.USE GUESS<br />

! to use .IC<br />

! to use .NODESET<br />

! to use .GUESS<br />

Rerun the simulation. Eldo will attempt to use the operating point information stored in<br />

the file.<br />

Eldo provides a system of combining the DC values of parts of a circuit to speed up the<br />

operating point calculation of the complete circuit. The DC state of the circuit sections that are<br />

available are stored in separate files. Such circuit parts may be whole subcircuits. In the general<br />

case, the DC data will be available in several files, called here OPDATA_SS. To use such data<br />

for the DC calculation of a complete circuit, add one of the following lines to the circuit<br />

description file, and for each OPDATA_SS file:<br />

• for usage with the .IC command:<br />

.USE IC<br />

• for usage with the .NODESET command:<br />

.USE NODESET<br />

• for usage with the .GUESS command:<br />

.USE GUESS<br />

Eldo will attempt to use the operating point information stored in all the OPDATA files.<br />

Note<br />

As a guide to choosing the appropriate command, .IC has more constraints than<br />

.NODESET, which has more constraints than .GUESS.<br />

Related Commands<br />

• .USE in the Eldo Reference Manual<br />

Related Topics<br />

DC Analysis<br />

Improving DC Convergence<br />

Saving and Restarting Transient Simulations<br />

216<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Analyses<br />

Transient Analyses<br />

The transient related analyses are:<br />

• “Transient Analysis” on page 217<br />

• “Transient Noise Analysis” on page 241<br />

Transient Analysis<br />

Transient analysis (.TRAN command) is a simulation over a specified time, also called a timedomain<br />

analysis.<br />

Transient output variables (that is, those variables contained within .PRINT and .PLOT<br />

commands in the input description file) are calculated as a function of time over a <strong>user</strong>specified<br />

time interval. The initial conditions are automatically determined by a DC analysis<br />

(unless the UIC parameter is specified) with all sources that are not time-dependent being set to<br />

their DC values.<br />

Different types of transient analysis can be specified:<br />

• Point-driven analysis—In the basic form of transient analysis you specify the analysis<br />

duration and the time interval for printing or plotting transient analysis results.<br />

• Parameter-driven analysis—The transient analysis can be performed while sweeping a<br />

parameter or device.<br />

• Data-driven analysis—As an alternative to constant timesteps, you can specify predefined<br />

timestep values in a .DATA command.<br />

Results of a previous simulation can be used as the input to the current simulation by using the<br />

.CHRSIM command.<br />

Multi-threading can be activated for a single DC or transient simulation; Eldo shares computer<br />

resources on a multi-processor machine.<br />

For transient analysis, Eldo analyzes the design by applying the time-domain behavior that you<br />

have specified for all stimulus models (such as voltage sources). To do this, Eldo calculates the<br />

behavior of all models a certain number of times for the duration of the analysis.<br />

Eldo provides sources or stimuli generators. Independent sources can be assigned a time<br />

dependent value for transient analysis. Time dependent functions provided are:<br />

Amplitude Modulation Function<br />

Exponential Function<br />

AM<br />

EXP<br />

Eldo® User's Manual, 15.3 217


Setting Up An Analysis<br />

Transient Analysis<br />

Noise Function<br />

Noise Table Function<br />

Pattern Function<br />

Pulse Function<br />

Piece Wise Linear Function<br />

Single Frequency FM Function<br />

Sine Function<br />

Trapezoidal Pulse With Bit Pattern Function<br />

Exponential Pulse With Bit Pattern Function<br />

Linear Feedback Shift Register (LFSR) Function<br />

Circuit-level transient simulation is the numerical resolution of an algebraic differential system<br />

of equations; as such, it is not an exact procedure (unlike the linear AC or NOISE analyses), and<br />

many ‘switches’ can be used to control the accuracy of the results. Typically, improved<br />

accuracy comes with an increased CPU time. The trade-off between speed and accuracy is the<br />

primary concern of <strong>user</strong>s designing simulations.<br />

For further information see the chapter “Speed and Accuracy” on page 1243.<br />

Transient Analysis Results<br />

NOISE<br />

NOISE TABLE<br />

PATTERN<br />

PULSE<br />

PWL<br />

SFFM<br />

SIN<br />

PBIT<br />

EBIT<br />

LFSR<br />

The results of transient analysis runs are output using .EXTRACT, .PLOT, .PRINT, and<br />

.PROBE commands.<br />

Example transient analysis waveform output from a .PLOT statement is shown in Figure 6-2:<br />

218<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Saving and Restarting Transient Simulations<br />

Figure 6-2. Transient Analysis Plot for a Butterworth Filter Circuit<br />

Related Commands<br />

• .TRAN in the Eldo Reference Manual<br />

• .DATA in the Eldo Reference Manual<br />

• Sources in the Eldo Reference Manual<br />

Related Topics<br />

Operating Point Analysis<br />

DC Convergence Troubleshooting<br />

Saving and Restarting Transient Simulations<br />

Transient Noise Analysis<br />

Saving and Restarting Transient Simulations<br />

Simulation results can be saved and then used as a starting point for other simulations.<br />

Performance advantages:<br />

Eldo® User's Manual, 15.3 219


Setting Up An Analysis<br />

Saving and Restarting Transient Simulations<br />

• Skip DC operating calculation<br />

• Skip a portion of transient simulation in subsequent run of the same design<br />

Save/restart can also be used to backup data for long simulations, thus avoid re-simulating<br />

design from the beginning if a power outage occurs.<br />

There are two ways to save simulation information:<br />

• .SAVE command saves analysis data to a file at DC, transient or end of transient<br />

• .OPTION SAVETIME=val saves results every val CPU hours<br />

There are three ways to read previously saved results:<br />

• .USE command<br />

This reads the saved DC result, and can be used as nodeset, ic, guess values.<br />

Used to load DC or operating point information for one or more parts of the circuit to be<br />

simulated; its application is thus in cases where a large or complex circuit is to be<br />

simulated, and the DC or operating point data for parts of the circuit is already known.<br />

Multiple .USE commands may be used in a simulation.<br />

• .LOAD command<br />

This reads the saved DC result, and can be used as nodeset, ic, guess values. Works in a<br />

similar way to the .USE.<br />

• .RESTART command<br />

This reads transient and end of transient saved result. It only supports simple TRAN<br />

simulation. .TRAN associated with .STEP, .MC, .WCASE, .NOISETRAN are not<br />

supported. Modification of circuit topology is not allowed. Old and new waveforms are<br />

concatenated.<br />

The .RESTART command is different from the .USE command in several ways. Firstly,<br />

whereas the .USE information may apply only to part of the circuit, .RESTART data<br />

always applies to the whole circuit. In fact, the .RESTART command first checks that<br />

the node names specified in the file used to restart the circuit, exactly correspond to<br />

those specified in the circuit description file where the .RESTART command is placed.<br />

The .RESTART command may be used to either load the operating (DC) point data and<br />

thereafter perform a transient simulation, or it may be used to restart a transient<br />

simulation from a specific point where the simulation had been interrupted in an earlier<br />

run. To carry out a transient analysis from a specific point, the .TRAN command<br />

parameters need to be changed to specify the new simulation times.<br />

220<br />

Eldo® User's Manual, 15.3


.SAVE END in Combination with .RESTART<br />

Setting Up An Analysis<br />

Saving and Restarting Transient Simulations<br />

It is possible to run a transient simulation and save the final state of the run. Thereafter, it is<br />

possible to restart the transient simulation from the time the last simulation was ended. To<br />

achieve this, use the .SAVE command in combination with the END parameter.<br />

To restart the simulation, the circuit description file must be modified. The original .SAVE<br />

command must be removed and the .TRAN command must be modified to reflect the new end<br />

time. Furthermore, a .RESTART command must be included in the circuit description file:<br />

.RESTART <br />

Using the above procedure, the simulation will produce a new binary output file (.wdb file) that<br />

contains data starting from the end of the last simulation. To concatenate old and new .wdb files,<br />

the old .wdb file should be renamed to, for example, tmpfile and the previous .RESTART<br />

command modified as follows:<br />

.RESTART FILE=<br />

The system then concatenates the old .wdb file data with the new .wdb data.<br />

More Sophisticated .SAVE and .RESTART Procedures<br />

The complete .SAVE syntax shown in the line below includes provision to save the simulation<br />

state either periodically or at predefined times and/or temperature or sweep (STEP) parameter<br />

conditions:<br />

.SAVE [fname] {DC|END|TIME=value} [REPEAT] [TEMP=value] [STEP=value]<br />

It is possible to save the result of the simulation periodically (with REPEAT), to save the run for<br />

a particular temperature (with TEMP) or for a particular swept parameter (with STEP).<br />

In each case, the rule to restart the simulation from a predefined state is the same; to restart the<br />

simulation, the .RESTART command needs to be added to the circuit description file. The<br />

.SAVE commands contained therein should be removed.<br />

The transient simulation parameters in the .TRAN command may also need to be modified to<br />

reflect the new desired simulation time stop.<br />

Save and Restart Example<br />

1. Run a simulation on the netlist file restart.cir containing the following command to save<br />

simulation information at 400ns to file test.sav:<br />

.SAVE test.sav time=400ns<br />

2. Rename the generated simulation results file restart.wdb as test_previous.wdb.<br />

3. Relaunch Eldo with the following command in the netlist:<br />

Eldo® User's Manual, 15.3 221


Setting Up An Analysis<br />

Saving and Restarting Transient Simulations<br />

.RESTART test.sav file=test_previous.wdb<br />

A new wdb file is created, restart.wdb, which is the concatenation of the previous results<br />

and the current simulation results file.<br />

In this example, Eldo will create the file restart.wdb as usual, but will first copy<br />

test_previous.wdb into restart.wdb before adding new points in the restart.wdb file. To permit<br />

the concatenation of the previous binary output file with the new binary output file, you have to<br />

rename it.<br />

If the file=test_previous.wdb string is omitted from the .RESTART command, then the first<br />

point in the restart.wdb file will correspond to the time at which simulation actually restarts.<br />

Save and Use Example<br />

1. Run a simulation containing the following command to save DC analysis results to file<br />

test.ddt:<br />

.SAVE test.ddt dc<br />

2. Relaunch Eldo with the following command in the netlist<br />

.USE test.ddt ic<br />

This specifies DC operating point values in test.ddt should be read as .IC values<br />

Aborting Simulation and Saving Current State<br />

If a transient simulation run is interrupted by the <strong>user</strong> with a Control-C, Eldo prompts the <strong>user</strong>,<br />

inquiring if the simulation status should be saved. If the <strong>user</strong> answers in the affirmative, the<br />

simulation data is saved in a file named .sav where cirname is the name of the circuit<br />

description file with no extension.<br />

To restart the simulation from this interrupted point, the circuit description file should be<br />

modified to include the command:<br />

.RESTART<br />

The simulation will then be restarted automatically from the time it was interrupted. The .TRAN<br />

command needs to be updated. Options and/or stimuli might be changed as well.<br />

Related Commands<br />

• .SAVE in the Eldo Reference Manual<br />

• .USE in the Eldo Reference Manual<br />

• .LOAD in the Eldo Reference Manual<br />

• .RESTART in the Eldo Reference Manual<br />

222<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Saving and Restarting Transient Simulations<br />

Related Topics<br />

Operating Point Analysis<br />

Saving and Restarting DC Simulations<br />

Transient Analysis<br />

Eldo® User's Manual, 15.3 223


Setting Up An Analysis<br />

AC Related Analyses<br />

AC Related Analyses<br />

The AC related analyses are:<br />

• “AC Analysis” on page 224<br />

• “Loop Stability Analysis” on page 229<br />

• “Pole Zero Analysis” on page 230<br />

• “Transfer Function” on page 237<br />

See also “Noise Analysis” on page 239.<br />

AC Analysis<br />

A small-signal analysis that computes the magnitude and phase of output variables as a function<br />

of frequency. Eldo first computes the circuit DC operating point (DCOP) with <strong>user</strong>-specifiable<br />

initial conditions; thereafter the behavior of the linearized circuit is computed for a sine input of<br />

<strong>user</strong>-specifiable amplitude, phase and frequency range.<br />

Different types of AC analysis can be specified:<br />

• Circuit frequency response analysis—.AC specified with the SWEEP parameter results<br />

in a frequency response analysis within the frequency range fstart to fstop with a number<br />

of points nb according to the sweep variation type.<br />

• Parameter-driven analysis—The frequency response analysis can be performed while<br />

sweeping a parameter or device.<br />

• Data-driven analysis—.AC followed by the parameter DATA=dataname results in a<br />

sweep of the values pre-defined in the .DATA command.<br />

• List-driven analysis—A list of frequency points can be specified instead of a frequency<br />

range.<br />

• Adaptive analysis—An adaptive variant of AC analysis can be used when there are ports<br />

in the design to generate an accurate touchstone file. Eldo will adjust the frequency<br />

based on a tolerance value in order that sharp peaks in the AC response are not missed.<br />

Whenever a .AC command, a .TRAN command, and a .OP command containing time<br />

specifications are in the .cir file, then an AC analysis will be performed at each of these time<br />

points. See Performing an AC Analysis During Transient Analysis for further details.<br />

An adaptive variant of AC analysis can be used when there are ports in the design to generate an<br />

accurate touchstone file. Eldo will then adjust the frequency in order that sharp peaks in the AC<br />

response are not missed. See Adaptive AC Analysis Example for further details.<br />

.MPRUN can be used to take advantage of multi-processor machines for data sweeps on the<br />

.AC command.<br />

224<br />

Eldo® User's Manual, 15.3


AC Analysis Results<br />

Setting Up An Analysis<br />

AC Analysis<br />

The results of AC analysis runs are output using .EXTRACT, .PLOT, .PRINT, and .PROBE<br />

commands.<br />

The amount of information in the .chi file relating to operating point can be limited using the<br />

option PRINT_ACOP.<br />

Use option ACOUT to control how complex expressions VX(a,b) and IX(a,b) are computed in<br />

AC analysis for their decibel magnitude, magnitude, phase, and group delay values.<br />

Figure 6-3 shows an example AC analysis waveform output from a .PLOT statement:<br />

Figure 6-3. AC Analysis Plot for an LCR Circuit<br />

Related Commands<br />

• .AC in the Eldo Reference Manual<br />

• .MPRUN in the Eldo Reference Manual<br />

• .OPTION ACOUT in the Eldo Reference Manual<br />

• .OPTION PRINT_ACOP in the Eldo Reference Manual<br />

Related Topics<br />

Operating Point Analysis<br />

Adaptive AC Analysis Example<br />

Eldo® User's Manual, 15.3 225


Setting Up An Analysis<br />

Adaptive AC Analysis Example<br />

Performing an AC Analysis During Transient Analysis<br />

Saving and Restarting AC Simulations<br />

Adaptive AC Analysis Example<br />

The following example shows the use of an adaptive AC analysis:<br />

* S-par extraction<br />

l1 1 1x 1e-7<br />

r1 1x 2x 10<br />

c1 2x 0 3e-12<br />

T1 2x 0 3x 0 Z0=50 Td=1n<br />

c2 3x 0 6e-12<br />

l2 3x 4x 2e-7<br />

r2 4x 2 8<br />

T2 2x 0 5x 0 Z0=40 Td=1.5n<br />

Vp 5x 0 0<br />

c11 1 0 10p<br />

c22 2 0 10p<br />

L3 3x 6x 2e-7<br />

R3 6x 5x 2<br />

I1 0 1 iport=1 rport=50<br />

I2 0 2 iport=2 rport=50<br />

.extract ac yval(sdb(1,1),1.45e8)<br />

.Ffile S sb1.s2p Hz RI<br />

.plot ac sdb(1,1)<br />

.ac adaptive 0.05 1e5 1e11<br />

Specifies an adaptive AC analysis between 1.0×10 5 Hz to 1.0×10 11 Hz with a relatively small<br />

tolerance. The magnitude of S11 is plotted in dB, and the extracted S parameters are stored in<br />

the file sb1.s2p with the frequency in Hz. The data is stored in the form of the Real and<br />

Imaginary parts.<br />

Related Commands<br />

• .AC in the Eldo Reference Manual<br />

Related Topics<br />

AC Analysis<br />

Performing an AC Analysis During Transient<br />

Analysis<br />

Whenever a .AC command, a .TRAN command, and a .OP command containing time<br />

specifications are in the .cir file, then an AC analysis will be performed at each of these time<br />

points.<br />

226<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Saving and Restarting AC Simulations<br />

In the following example Eldo will perform AC, NOISE and TRAN analyses at time 0, time 5n,<br />

and time 7n:<br />

.AC DEC 10 1 1e9<br />

.NOISE v(5) vin 70<br />

.TRAN 1n 20n<br />

.OP 5n 7n<br />

If some .EXTRACT commands related to AC analyses are specified, extract information will be<br />

returned for each AC analysis.<br />

When the output is cou format, an extra file, _tac.cou is created that holds the results<br />

of those AC simulations which are performed from within a transient simulation.<br />

When the output is JWDB, a folder TRAN is created with several AC folders inside, for<br />

example AC_1, AC_2.<br />

Limitations:<br />

• AC results performed from within a transient simulation will not be dumped in GWL<br />

and PSF output files.<br />

• If there is a .TEMP or a .STEP command in the input file, the .ext file which normally<br />

gets created will not be created in this instance.<br />

• Information related to .EXTRACT SWEEP will not be available.<br />

• Monte Carlo (.MC) enabled if .MC ALL is specified, Worst-Case (.WC), or transientnoise<br />

(.NOISETRAN) simulations are disabled.<br />

Related Commands<br />

• .AC in the Eldo Reference Manual<br />

• .TRAN in the Eldo Reference Manual<br />

• .NOISE in the Eldo Reference Manual<br />

• .OP in the Eldo Reference Manual<br />

• .OPTION NOACT0 in the Eldo Reference Manual<br />

Related Topics<br />

AC Analysis<br />

Saving and Restarting AC Simulations<br />

To restart an AC simulation, you need to have both of the following commands in your input<br />

netlist:<br />

Eldo® User's Manual, 15.3 227


Setting Up An Analysis<br />

Saving and Restarting AC Simulations<br />

• .RESTART file_name, where file_name comes from the results of a DC/TRAN<br />

simulation.<br />

• .AC ... UIC command.<br />

then the .RESTART command will be interpreted as:<br />

.USE file_name OVERWRITE_INPUT<br />

A warning message will be displayed that no DC analysis has been performed if attempting to<br />

run an AC simulation with UIC enabled without a restart file.<br />

When initial conditions are used (UIC parameter) Eldo performs a logical initialization prior to<br />

the AC run (that is, no DC analysis to be performed). Specify option NOINIT to disable this<br />

logical initialization; Eldo still considers .NODESET and .IC statements, but all other node<br />

voltages start at zero.<br />

Usage of .RESTART and .TRAN with .NOISETRAN, .MC, .WCASE, .STEP<br />

In the case of .TRAN and .RESTART associated with a .STEP, .MC, .WCASE or<br />

.NOISETRAN, the same restart file will be used for all runs, for example:<br />

.MC 5<br />

.TRAN<br />

.SAVE TIME = ...<br />

.END<br />

In this example you would assume that six restart files would be generated (five MC and one<br />

nominal), and that in subsequent commands:<br />

.MC 5<br />

.TRAN<br />

.RESTART<br />

.END<br />

each run would use its “restart file ancestor”. However, this is not how it works. Eldo will use<br />

only the latest “restart file” which has been generated for all runs, and unless explicitly<br />

specified, Eldo will create a restart file only for the first STEP run or the nominal MC run.<br />

Related Commands<br />

• .OPTION NOINIT in the Eldo Reference Manual<br />

• .AC in the Eldo Reference Manual<br />

• .RESTART in the Eldo Reference Manual<br />

Related Topics<br />

AC Analysis<br />

228<br />

Eldo® User's Manual, 15.3


Loop Stability Analysis<br />

Setting Up An Analysis<br />

Loop Stability Analysis<br />

Analyses the circuit stability. The classical method for stability analysis is to break the feedback<br />

loop at an appropriate point on AC analysis, while maintaining correct DC conditions. This<br />

means that the loop must be terminated with the appropriate impedance it ‘sees’ looking at the<br />

loop input. Obtaining this impedance value is not always a simple task. Loop stability analysis<br />

measures the loop gain by successive injection (Middlebrook Technique). A zero voltage source<br />

is placed in series in the loop: the first pin of the voltage loop must be connected to the loop<br />

input, the other pin to the loop output. The name of this voltage source is given in the .LSTB<br />

statement, and the loop gain can be displayed.<br />

Two loop stability analysis algorithms are available:<br />

• The default Middlebrook technique with successive injection (default convention<br />

T=AK, with an option to select the M. Tian convention T=−AK).<br />

• The K. Kundert algorithm from “A Test Bench for Differential Circuits.”<br />

Use the .IPROBE command with .LSTB to perform open loop simulations without editing the<br />

device netlists (no need to add a voltage source and nets to create an open loop).<br />

Related Commands<br />

• .LSTB in the Eldo Reference Manual<br />

• .IPROBE in the Eldo Reference Manual<br />

Related Topics<br />

Example 11—Loop Stability of an Opamp<br />

AC Analysis<br />

Eldo® User's Manual, 15.3 229


Setting Up An Analysis<br />

Pole Zero Analysis<br />

Pole Zero Analysis<br />

This topic describes the usage of the pole-zero post-processor.<br />

Eldo is able to obtain the locations of poles and zeros for analog circuits following a small<br />

signal analysis. This data is useful for obtaining stability and phase margin information as well<br />

as predicting closed loop performance from an open loop response. As a lot of closely spaced<br />

poles or zeros are not easily discernible via a Bode plot, the interactive post processor and its<br />

textual output clearly help to identify such singularities and evaluate the most important areas in<br />

a circuit's behavior.<br />

The pole-zero data is obtained by linearizing the circuit about an operating point and outputting<br />

information about circuit matrix description and AC response. This data will be analyzed by the<br />

Eigenvalue QZ algorithm, one of the most accurate techniques available.<br />

The pole-zero post-processor enables the designer to detect all the roots of the analyzed circuit<br />

and to simplify this information, extracting the most meaningful of these roots. Moreover, a<br />

high-level model of the reduced circuit—equivalent for AC and small signal analysis—is<br />

calculated and given in the form of an FNS device that can replace the original circuit when<br />

used as part of a more complex design.<br />

The pole-zero post-processor may be activated for circuits that have been simulated using the<br />

.PZ and .AC commands. The .PZ command can take either the voltage at a node, the voltage<br />

between two nodes, or the current through a voltage source as parameters. The pole-zero<br />

analysis determines the transfer function relationship—expressed as complex poles and zeros—<br />

between the input at which the AC voltage source is applied and the output specified as a<br />

parameter in the .PZ command.<br />

Pole-zero only works on quasi-static devices.<br />

Tip<br />

See “.AC” and “.PZ” in the Eldo Reference Manual.<br />

Pole-Zero Analysis Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230<br />

Running Pole-Zero Analysis in Batch Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231<br />

Running Pole-Zero Analysis in Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232<br />

Pole-Zero Analysis Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233<br />

FNS Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235<br />

Pole-Zero Numerical Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

Pole-Zero Analysis Flow<br />

To obtain the poles and zeros you must first run an analysis, then use the pole-zero postprocessor.<br />

230<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Pole Zero Analysis<br />

Procedure<br />

1. Run an AC analysis simulation using a netlist with both .AC and .PZ commands. If the<br />

simulation is successful, a pole-zero data file with extension .pz will be generated.<br />

2. Use the pole-zero post-processor to obtain the poles and zeros for the design under test.<br />

The pz command specified with the .pz file as argument begins the dialog for pole-zero<br />

analysis. Run the command:<br />

pz circuit.pz<br />

A list of poles and zeros will be generated and you will be prompted to refine the<br />

solution by removing less important poles and zeros.<br />

Related Topics<br />

Tip<br />

See “.AC” and “.PZ” in the Eldo Reference Manual.<br />

Running Pole-Zero Analysis in Batch Mode<br />

Running Pole-Zero Analysis in Interactive Mode<br />

Pole-Zero Analysis Output<br />

Running Pole-Zero Analysis in Batch Mode<br />

In batch mode, the pole-zero analysis runs without <strong>user</strong> interaction. Where the interactive mode<br />

would prompt for <strong>user</strong> input, the batch tool uses default responses.<br />

Prerequisites<br />

An AC analysis must have been run on the circuit of interest, and that analysis must have<br />

included a .PZ command (to generate a .pz file in the output directory.<br />

Procedure<br />

1. Navigate to the directory containing the output .pz file from the AC analysis.<br />

2. Run:<br />

pz .pz -batch<br />

The pole-zero post-processor runs until completion.<br />

Related Topics<br />

Tip<br />

See “.PZ” in the Eldo Reference Manual.<br />

Running Pole-Zero Analysis in Interactive Mode<br />

Eldo® User's Manual, 15.3 231


Setting Up An Analysis<br />

Pole Zero Analysis<br />

Pole-Zero Analysis Output<br />

FNS Model<br />

Running Pole-Zero Analysis in Interactive Mode<br />

In interactive mode, the pole-zero analysis prompts for <strong>user</strong> input as it runs, enabling the<br />

accurate specification of its input parameters.<br />

Prerequisites<br />

An AC analysis must have been run on the circuit of interest, and that analysis must have<br />

included a .PZ command (to generate a .pz file in the output directory.<br />

Procedure<br />

1. Navigate to the directory containing the output .pz file from the AC analysis.<br />

2. Run:<br />

pz .pz<br />

3. The pole-zero post-processor runs. When prompted, enter arguments for the following:<br />

• -th value<br />

Threshold for pole/zero cancellation<br />

• -cutoff value<br />

Cutoff frequency<br />

• -pindices indice_list -endpindices<br />

List of indexes for pole selection; indices must be in increasing order<br />

• -zindices indice_list -endzindices<br />

List of indexes for zero selection; indices must be in increasing order<br />

The pole-zero processor runs to completion.<br />

Note<br />

Any prompts for which an argument is not provided will take the default answer—<br />

that is, the same as for the -batch mode.<br />

Related Topics<br />

Tip<br />

See “.PZ” in the Eldo Reference Manual.<br />

Running Pole-Zero Analysis in Batch Mode<br />

232<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Pole Zero Analysis<br />

Pole-Zero Analysis Output<br />

FNS Model<br />

Pole-Zero Analysis Output<br />

This topic details the results generated by a pole-zero analysis, and lists the steps that can be<br />

taken—when running the analysis in interactive mode—to simplify the results.<br />

Tip<br />

You can view pole-zero analysis results with the AMS Results Browser.<br />

The first result is the impression of all the roots found for the circuit, ordered by magnitude, but<br />

with zeros divided in negative and positive real parts, as shown here for a typical example:<br />

Poles Modulus Real Part Imaginary Part<br />

1 6.264953E+00 -6.264953E+00 0.000000E+00<br />

2 3.853866E+06 -3.824006E+06 -4.788095E+05<br />

3 3.853866E+06 -3.824006E+06 4.788095E+05<br />

4 4.396770E+06 -4.396770E+06 0.000000E+00<br />

5 5.423444E+06 -5.423444E+06 0.000000E+00<br />

6 6.554762E+06 -3.126871E+06 -5.760866E+06<br />

7 6.554762E+06 -3.126871E+06 5.760866E+06<br />

8 6.584083E+06 -5.150248E+06 -4.101840E+06<br />

9 6.584083E+06 -5.150248E+06 4.101840E+06<br />

10 1.343013E+07 -1.343013E+07 0.000000E+00<br />

11 1.531050E+07 -1.531050E+07 0.000000E+00<br />

12 2.217833E+07 -2.217833E+07 0.000000E+00<br />

13 4.927351E+07 -4.927351E+07 0.000000E+00<br />

14 6.564085E+07 -6.564085E+07 0.000000E+00<br />

15 1.228260E+08 -1.228260E+08 0.000000E+00<br />

Zeros Modulus Real Part Imaginary Part<br />

1 3.853866E+06 -3.824006E+06 -4.788095E+05<br />

2 3.853866E+06 -3.824006E+06 4.788095E+05<br />

3 4.396770E+06 -4.396770E+06 0.000000E+00<br />

4 5.423444E+06 -5.423444E+06 0.000000E+00<br />

5 6.435558E+06 -5.867538E+06 -2.643560E+06<br />

6 6.435558E+06 -5.867538E+06 2.643560E+06<br />

7 6.554762E+06 -3.126871E+06 -5.760866E+06<br />

8 6.554762E+06 -3.126871E+06 5.760866E+06<br />

9 1.343013E+07 -1.343013E+07 0.000000E+00<br />

10 1.531050E+07 -1.531050E+07 0.000000E+00<br />

11 2.217833E+07 -2.217833E+07 0.000000E+00<br />

12 6.564085E+07 -6.564085E+07 0.000000E+00<br />

13 1.228260E+08 -1.228260E+08 0.000000E+00<br />

14 3.857487E+06 3.857487E+06 0.000000E+00<br />

15 2.908742E+09 2.908742E+09 0.000000E+00<br />

At this point it is possible to simplify the results since, in practice, many poles and zeros will be<br />

output, and some of them will be almost superimposed giving a negligible resultant effect.<br />

Moreover, sometimes the circuit will work in a well-determined frequency range over which we<br />

Eldo® User's Manual, 15.3 233


Setting Up An Analysis<br />

Pole Zero Analysis<br />

will focus our attention, while all the parasitic and less meaningful roots will also be detected.<br />

For these reasons, the following reduction mechanisms are available:<br />

• “Frequency Limit” on page 234<br />

• “Pole-Zero Cancellation by Threshold” on page 234<br />

• “Hand Selection” on page 235<br />

• “Select Index” on page 235<br />

Frequency Limit<br />

Eldo offers the option to limit the analysis up to a certain frequency, as shown in the following<br />

example:<br />

Do you want to set an upper frequency limit for the selected poles and<br />

zeros? [yes/no]:<br />

y<br />

So give the highest frequency to be considered:<br />

5e7<br />

Roots up to 0.5000E+08 Hz will be examined.<br />

If the roots of the circuit are spanned up to a frequency significantly higher than the upper<br />

frequency of the AC analysis, this limit can be very useful in simplifying textual output and<br />

FNS models without meaningful loss of accuracy.<br />

Pole-Zero Cancellation by Threshold<br />

Very close poles and zeros can be deleted, as their influence on the circuit behavior<br />

compensates. Big circuits with a lot of roots often have closely spaced poles and zeros, which<br />

can be deleted to show the most meaningful remaining roots. A reminder about the threshold<br />

mechanism shows the condition to delete a pole, P, and a zero, Z. The condition is that:<br />

abs(RE[P]-RE[Z]) < abs(RE[P]) * TH + TH<br />

and the same for the imaginary part.<br />

Therefore, if a threshold of, for example, 0.1 is given, there are two possibilities:<br />

• For very low frequency roots, for example, fractions of 1 Hz, TH has the meaning of<br />

maximum difference between the real parts of the pole and the zero, and the same for the<br />

imaginary part.<br />

• In most cases, there are roots at quite high frequencies so the first term on the right side<br />

of the relation dominates and TH takes the meaning of maximum ratio between the<br />

distance amongst the roots and their value, so in this case a 10% tolerance.<br />

At this point, a table of remaining poles and zeros (after the two elimination steps) is displayed.<br />

234<br />

Eldo® User's Manual, 15.3


Hand Selection<br />

Setting Up An Analysis<br />

Pole Zero Analysis<br />

After these steps, a further choice between the resulting roots is offered. A prompt asks:<br />

Do you agree with the Selected POLES [Yes/No]?<br />

If the selected poles and zeros are Ok, enter Y and the analysis continues. If only a certain<br />

number of poles and zeros are required, enter N and the following prompt is displayed:<br />

Poles selection by their index in INCREASING order<br />

Enter a negative index to end the selection.<br />

Select Index<br />

A prompt asks for the specification of which poles are to be included in the final transfer<br />

function. The selection is made via the index to the values—the index being the first number<br />

that appears in the tables above. Once the values to use have been chosen, the selection is<br />

terminated by entering a negative number. The process is then repeated for zeros.<br />

Note<br />

Ensure that the selections are made in increasing integer order including the negative<br />

terminator, otherwise required values may be lost.<br />

The remaining set of poles and zeros are printed, followed by another table showing the<br />

difference between the actual and the now-approximated model, swept in frequency and giving<br />

both the magnitude (dB) and the phase (degree) differences. For example:<br />

Hz dB’s Error Degrees Error<br />

1.000000E+01 6.525140E-04 1.020462E-02<br />

1.000000E+02 6.201058E-04 1.096881E-02<br />

1.000000E+03 5.805557E-04 1.102087E-02<br />

1.000000E+04 5.806112E-04 1.107192E-02<br />

1.000000E+05 5.791327E-04 3.599889E+02<br />

1.000000E+06 5.815470E-04 1.444244E-02<br />

1.000000E+07 1.179731E-03 4.588650E-02<br />

1.000000E+08 5.953287E-02 3.609858E-01<br />

1.000000E+09 4.490041E+00 2.134625E+00<br />

FNS Model<br />

The reduced circuit is now modeled as an S-domain transfer function (for example, an FNS<br />

device in Eldo syntax) which can replace the original circuit with the introduced approximations<br />

for AC and small-signal analysis—this can be very useful for developing complex designs,<br />

enabling the replacement of even a complex block with its equivalent model and great<br />

simplification of simulation of the higher-level system. The output format is as follows:<br />

Eldo® User's Manual, 15.3 235


Setting Up An Analysis<br />

Pole Zero Analysis<br />

FNS1 IN OUT<br />

+<br />

+ 498057.650621<br />

+ 0.0271151244556 ! * s^(-1)<br />

+ 4.88425501019e-10 ! * s^(-2)<br />

+ 2.65330374224e-18 ! * s^(-3)<br />

+ -3.22583377778e-27 ! * s^(-4)<br />

+ 8.84119411e-37 ! * s^(-5)<br />

+ ,<br />

+ 1<br />

+ 0.0315272851854 ! * s^(-1)<br />

+ 1.08957721435e-09 ! * s^(-2)<br />

+ 1.85561098689e-17 ! * s^(-3)<br />

+ 2.03791858143e-25 ! * s^(-4)<br />

+ 1.03556420914e-33 ! * s^(-5)<br />

If too many poles and zeros are left after the reduction steps, FNS evaluation could fail due to<br />

too high coefficients (a message is displayed in such a case). However, the efficiency of the<br />

reduction algorithm normally enables a reduction of, at most, 6-7 poles, which can give a very<br />

good approximation of the original circuit.<br />

The PZ program produces a .cpz output file for visualization with EZwave, which<br />

shows the Bode diagrams of gain and phase for the original and the reduced circuit. Also, a file<br />

.mpz is produced, showing a scatter map of the circuit’s roots in the complex plane.<br />

Finally, a subcircuit containing FNS is stored in file .pzck, which can be included by<br />

an upper level netlist.<br />

After all these steps, a prompt asks whether to repeat the analysis, typically to alter some<br />

parameters such as threshold, frequency limit, and so on, thereby modifying the accuracy/<br />

simplicity ratio of the whole analysis.<br />

If no is entered, the program exits, leaving an ASCII output file .pzr containing a trace<br />

of all of the program outputs.<br />

Related Topics<br />

Running Pole-Zero Analysis in Batch Mode<br />

Running Pole-Zero Analysis in Interactive Mode<br />

Pole-Zero Analysis Output<br />

Pole-Zero Numerical Issues<br />

Pole-Zero Numerical Issues<br />

There are possible numerical issues with poles and zeros. This topic explains why 500 variables<br />

is a reasonable maximal system size, and suggests a workaround using a two-step S-parameter<br />

block approach.<br />

236<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transfer Function<br />

Symptoms<br />

The .PZ command generates G and C matrices. The pole-zero post-processor computes poles<br />

and zeros, and generates approximated FNS to be used. It uses a QZ algorithm to solve the<br />

generalized Eigenvalue system:<br />

GX = λCX<br />

The CPU cost of the QZ algorithm is approximately n 3 , where n is the size of the G and C<br />

matrices. When n > 500, the CPU time is large, and numerical issues may arise. This is a<br />

constraint of the QZ algorithm.<br />

Solution<br />

Use a two-step S-parameter block approach:<br />

1. Extract the S-parameters of the circuit (using .FFILE and .AC commands).<br />

This generates a .s2p file containing the S-parameters.<br />

2. Use this S-parameter file in one of two ways:<br />

o<br />

o<br />

Use this S-parameter file (.s2p) as a macromodel of the circuit (using an FBLOCK<br />

model). This is more accurate than the FNS pole-zero approach.<br />

Alternatively, specify the .PZ command with the S-parameter file (.s2p) (using an<br />

FBLOCK model). The pole-zero post-processor can then be used to compute the<br />

poles and zeros as before, avoiding any numerical issues.<br />

Related Topics<br />

Tip<br />

See “.AC,” “.FFILE” and “.PZ” in the Eldo Reference Manual.<br />

Pole-Zero Analysis Flow<br />

Pole-Zero Analysis Output<br />

FNS Model<br />

Working with S, Y, Z Parameters<br />

Transfer Function<br />

The .TF command calculates the small signal transfer function by linearizing around a bias<br />

point. The gain from the input voltage source to the output node or source is calculated and<br />

output to the .chi file together with the input and output impedances.<br />

Tip<br />

See “.TF” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 237


Setting Up An Analysis<br />

Transfer Function<br />

Example transfer function output:<br />

0**** SMALL SIGNAL CHARACTERISTICS<br />

0 V(OUT)/VIN 6.000000E-001<br />

0 INPUT RESISTANCE AT VIN 5.000000E+004<br />

0 OUTPUT RESISTANCE AT V(OUT) 1.200000E+004<br />

The small signal transfer function is 0.6 for the voltage at node out with respect to the<br />

independent voltage source VIN, for an output resistance of 12kΩ.<br />

Related Topics<br />

AC Analysis<br />

238<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Noise Analyses<br />

Noise Analyses<br />

The noise related analyses are:<br />

• “Noise Analysis” on page 239.<br />

• “Transient Noise Analysis” on page 241<br />

• Eldo RF Steady-State Noise Analysis, see “RF Analyses” on page 283.<br />

Noise Analysis<br />

The .NOISE command specifies a noise analysis, which is performed in conjunction with the<br />

small-signal analysis. The circuit is linearized around its DC operating point, and the<br />

contribution of all noise sources is summed at a given output. All node voltages and currents are<br />

assumed to be small sinusoidal signals, all at the same frequency.<br />

The noise generated by devices is usually modeled as an equivalent noise spectral density,<br />

which is a frequency-dependent function. Thermal noise, shot noise and flicker noise are all<br />

noise sources due to different physical mechanisms, but they can be modeled as noise spectral<br />

densities, enabling the computation of how much noise (as an RMS voltage) a device generates<br />

in a given bandwidth.<br />

Use the NONOISE parameter on a device model or instance to specify that no noise model will<br />

be used for the device when performing noise analysis. The device presents no noise<br />

contribution to the noise analysis.<br />

Noise Analysis Results<br />

Noise results can be sorted in different ways with the .OPTNOISE command.<br />

Example noise results:<br />

******** NOISE IN THE DOMAIN 1.000000E+002Hz 1.000000E+004Hz ********<br />

OUTPUT NOISE PER DEVICE :<br />

R8 : 2.45421E-011 V^2 ---> : 4.95400E-006 V<br />

R12 : 2.09786E-011 V^2 ---> : 4.58024E-006 V<br />

R11 : 1.86080E-011 V^2 ---> : 4.31370E-006 V<br />

R9 : 9.84669E-012 V^2 ---> : 3.13794E-006 V<br />

R10 : 4.74119E-012 V^2 ---> : 2.17743E-006 V<br />

R2 : 2.03321E-012 V^2 ---> : 1.42591E-006 V<br />

R6 : 1.69155E-012 V^2 ---> : 1.30060E-006 V<br />

R5 : 6.59705E-013 V^2 ---> : 8.12222E-007 V<br />

R4 : 5.86775E-013 V^2 ---> : 7.66012E-007 V<br />

R3 : 3.27669E-013 V^2 ---> : 5.72424E-007 V<br />

R1 : 2.04526E-013 V^2 ---> : 4.52246E-007 V<br />

R7 : 2.02087E-013 V^2 ---> : 4.49541E-007 V<br />

TOTAL OUTPUT NOISE 9.188156E-006 Volts<br />

Eldo® User's Manual, 15.3 239


Setting Up An Analysis<br />

Noise Analysis<br />

INPUT NOISE PER DEVICE :<br />

R8 : 1.43229E-008 V^2 ---> : 1.19678E-004 V<br />

R12 : 1.30353E-008 V^2 ---> : 1.14172E-004 V<br />

R11 : 1.15623E-008 V^2 ---> : 1.07528E-004 V<br />

R9 : 6.08587E-009 V^2 ---> : 7.80120E-005 V<br />

R10 : 2.11063E-009 V^2 ---> : 4.59416E-005 V<br />

R6 : 7.15178E-010 V^2 ---> : 2.67428E-005 V<br />

R2 : 7.14807E-010 V^2 ---> : 2.67359E-005 V<br />

R5 : 2.78919E-010 V^2 ---> : 1.67009E-005 V<br />

R4 : 2.20371E-010 V^2 ---> : 1.48449E-005 V<br />

R3 : 1.23060E-010 V^2 ---> : 1.10932E-005 V<br />

R7 : 8.99627E-011 V^2 ---> : 9.48487E-006 V<br />

R1 : 2.80800E-011 V^2 ---> : 5.29906E-006 V<br />

TOTAL INPUT NOISE 2.220075E-004 Volts<br />

See Also<br />

• .NOISE in the Eldo Reference Manual<br />

• .OPTNOISE in the Eldo Reference Manual<br />

• Options THERMAL_NOISE and FLICKER_NOISE in the Eldo Reference Manual<br />

• Noise in MOSFETs in the Eldo Reference Manual<br />

Related Topics<br />

Example 3—AC and Noise Analysis of a Band Pass Filter<br />

AC Analysis<br />

240<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Transient Noise Analysis<br />

In most analog design applications, knowledge of noise levels generated by the circuit is of<br />

great importance. In all traditional SPICE-like simulators, noise computation is only available<br />

in AC analysis. In this case the circuit is assumed to have a fixed bias (DC operating point), and<br />

noise simulation can only be applied to circuits working under small signal conditions. For this<br />

reason, many applications cannot be simulated and their noise performance is unknown until<br />

physical measurement is possible on the manufactured design. The only other method available<br />

to obtain this important information is to perform tedious hand calculations (when possible).<br />

The objective of a noise simulation is to see the effect of the physical noise generated by the<br />

different devices on the characteristics of an electrical circuit. Three different noise analyses are<br />

available inside Eldo: .NOISE, .SSTNOISE, and .NOISETRAN.<br />

.NOISE and .SSTNOISE are similar in the sense that the effect of the noise sources is treated as<br />

linear (meaning that doubling the noise amplitude will double the effect). To compute the<br />

contribution from the different noise sources the circuit is linearized around its operation point<br />

(can be DC OP for .NOISE analysis or large signal Steady-State OP for .SSTNOISE analysis).<br />

The contributions from the individual noise sources are computed by multiplying the noise<br />

Power Spectral Density (PSD) by the corresponding transfer functions (or harmonic transfer<br />

functions) between the noise source and the specified circuit output.<br />

• Noise and signal are handled separately.<br />

• Noise is considered as small and noise effects are considered as linear.<br />

• It is possible to see the individual contributions from all the different noise sources.<br />

.NOISETRAN analysis is very different from .NOISE or .SSTNOISE analyses. It is a true noise<br />

simulation, similar to what actually happens in reality when an electrical circuit is running.<br />

There is no simplification, no linearization, and no assumption. Noise is handled as any other<br />

electrical signal during a transient simulation. There is no separation between noise and other<br />

signals, and no separation between the noise sources.<br />

Transient noise simulation can be applied to all types of circuit without restriction. To perform<br />

transient noise analysis, physical noise of electrical devices is emulated by time-dependent<br />

current sources. The frequency characteristics of these sources are referred to the noise models<br />

of the noisy components. The method used is simple, fast and does not disturb the simulated<br />

behavior of the circuit because the noise signals introduced are continuous and fully<br />

deterministic.<br />

Tip<br />

See “.NOISETRAN” in the Eldo Reference Manual.<br />

Simulation results from transient noise analysis include:<br />

Eldo® User's Manual, 15.3 241


Setting Up An Analysis<br />

Transient Noise Analysis<br />

• Transient response of the circuit, as generated by a pure transient analysis (the nominal<br />

run).<br />

• Transient response(s) with the added noise generated by the circuit (plotted as an<br />

oscillogram of experimental measurements).<br />

• The RMS value of the noise versus time, which gives the accuracy of the ideal transient<br />

response.<br />

To compute the RMS value of the generated noise, Eldo performs a normal transient<br />

analysis of the circuit, plus N transient simulations which include noise sources within<br />

the noisy devices. The RMS value of noise is computed at each time-step as follows:<br />

Where V ο (t) represents the nominal transient response of the circuit, and V ι (t) is the i th<br />

transient response of the circuit including the noise sources; N is the number of noise<br />

runs performed (specified by the NBRUN parameter of the .NOISETRAN command). If<br />

NBRUN=1, no RMS waveforms are created.<br />

To perform transient noise analysis, Eldo adds a noise contribution to the same components as<br />

in AC noise analysis (R, M, B, J, D). An additional noise model, connected with the Switch<br />

macromodel (S), is available to simulate noise in switched capacitor circuits.<br />

Figure 6-4. Circuit Components with their Added Noise Sources<br />

Refer to the noise models in the respective sections of the Eldo Reference Manual.<br />

See also:<br />

• “Transient Noise Analysis Principles” on page 243<br />

• “Specifying .NOISETRAN Parameters” on page 244<br />

• “Transient Noise Analysis Results” on page 259<br />

• “Transient Noise Analysis Example 1—High-Rate Particle Detector” on page 1368<br />

242<br />

Eldo® User's Manual, 15.3


Transient Noise Analysis Principles<br />

Setting Up An Analysis<br />

Transient Noise Analysis<br />

A .NOISETRAN analysis is very similar to a normal .TRAN analysis except that the circuit<br />

contains some additional time domain sources (current or voltage) that correspond to the<br />

physical noise sources. Noise sources are generated as pseudo-random signals having gaussian<br />

amplitude distribution and power spectral characteristics that correspond to the PSD model of<br />

the noise source.<br />

A .NOISETRAN can run an optional nominal run (normal transient run without noise sources)<br />

and multiple runs including noise sources. The time steps and simulation tolerances are<br />

automatically tuned to provide accurate results according to noise characteristics.<br />

The results of the .NOISETRAN are multiple noisy runs or a RMS curve computed with<br />

statistics from the difference between the noisy runs and the nominal run.<br />

Applications for Transient Noise Analysis<br />

A single noisy run may be used to compute:<br />

• Noise PSD at the post-processing output of a circuit. This may be useful for Sigma-<br />

Delta converters.<br />

• A phase noise spectrum at the output of a circuit from post-processing. The targeted<br />

circuits are free-running oscillators or PLLs. Forced circuits stimulated by periodic<br />

signals can also be good candidates. In this particular application, multiple noisy runs<br />

can be useful to average the phase noise results.<br />

Multiple noisy runs are used to get the RMS value of the noisy signal function of time. This<br />

functionality may be useful to characterize particle detectors, or CCD matrices for example.<br />

About Simulating Multiple Noisy Runs<br />

In some cases, you might want to run multiple noisy runs (by specifying the NBRUN parameter<br />

of the .NOISETRAN command as > 1). Eldo can compute these noisy runs in different ways:<br />

• Each individual run is performed sequentially, as independent transient simulations.<br />

This mode is activated with the MRUN flag of the .NOISETRAN command. This mode<br />

can also benefit from the distributed simulations with the .MPRUN command.<br />

• Accelerated method (the default).<br />

At each time step Eldo computes the nominal (noiseless) solution, and then computes<br />

for each noisy run, a perturbation of the nominal run (in parallel). This is the default<br />

method, and is used unless MRUN is set.<br />

This method is much faster because it saves a lot of calculations. It considers that the<br />

noise is a perturbation of the nominal transient simulation. This assumption is<br />

sometimes not fully verified with some specific applications, when noise causes the<br />

Eldo® User's Manual, 15.3 243


Setting Up An Analysis<br />

Transient Noise Analysis<br />

signal to deviate from its nominal trajectory (phase shift). The consequence is that this<br />

method can suffer from convergence problems or inaccuracy in some applications, such<br />

as those having very non-linear circuits, where noise is not just a perturbation of the<br />

nominal simulation. When convergence is affected a warning is reported, advising you<br />

to use the alternative method by setting the MRUN flag. This method may not be<br />

appropriate for PLLs or Sigma-Delta converter applications. By default, this method is<br />

deactivated when NBRUN=1.<br />

Related Topics<br />

Tip<br />

See “.NOISETRAN” in the Eldo Reference Manual.<br />

Specifying .NOISETRAN Parameters<br />

Transient Noise Analysis Results<br />

Specifying .NOISETRAN Parameters<br />

The .NOISETRAN command is used to control the transient noise analysis of a circuit and must<br />

be used in conjunction with a transient analysis (.TRAN).<br />

Tip<br />

For full description of the .NOISETRAN command and its syntax, refer to “.NOISETRAN”<br />

in the Eldo Reference Manual.<br />

The most important parameters are:<br />

• FMIN and FMAX define the range of the noise frequency band (same function as<br />

FSTART and FSTOP in AC noise analysis). This frequency range may sometimes not<br />

correspond to the noise frequency band at the output of the circuit. For instance, the<br />

band (FMIN, FMAX) does not correspond to the output noise frequency band in the<br />

case of filters, oscillators and mixers that exhibit frequency conversion.<br />

• NBRUN defines the number of noise simulations to perform (those which include the<br />

noise sources). This parameter defines the accuracy of the noise analysis. Care must be<br />

taken when setting the NBRUN parameter as it strongly influences the CPU time used<br />

by the simulation. This parameter is ignored when NONOM is specified to suppress the<br />

nominal simulation; a single noisy run is performed and a warning generated.<br />

• Other options are available for more advanced and more efficient use of the command.<br />

Note<br />

The .NOISETRAN command cannot be used in a netlist together with Monte Carlo<br />

analysis (.MC), except for the specific case of a single run Monte Carlo analysis<br />

specified with the IRUN parameter.<br />

244<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Influence of .NOISETRAN Parameters on Simulation Performance and<br />

Accuracy<br />

The following guidelines describe the effect of the .NOISETRAN parameters FMIN, FMAX<br />

and MRUN on simulation performance and accuracy, and provide guidance on how best to set<br />

them.<br />

• The FMAX parameter directly affects the time step size (through HMAX). Therefore,<br />

this parameter has to be set large enough to accurately represent the noise sources but<br />

not so large that simulation time is penalized. This parameter should correspond to the<br />

circuit noise bandwidth. The appropriate value depends on the highest frequency in the<br />

circuit.<br />

• The FMIN parameter should be set to 0 (the algorithm to generate noise sources will be<br />

faster and more accurate) unless you want to analyze the effect of the noise generated in<br />

a specific narrow bandwidth.<br />

• The MRUN flag should not be set except for some specific classes of circuits (PLLs,<br />

Sigma-Delta converters) or when the simulator experiences a convergence problem and<br />

reports that the MRUN flag should be used. With appropriate cases the .NOISETRAN<br />

simulation runs much faster without the MRUN flag.<br />

Related Topics<br />

Tip<br />

See “.NOISETRAN” and “.OPTION NOISETRAN_TUNING” in the Eldo<br />

Reference Manual.<br />

Generation of Time Domain Noise Sources<br />

Speeding Up Transient Noise Analysis<br />

Transient Noise Analysis Results<br />

Transient Noise Analysis Algorithms<br />

Two methods exist to generate transient noise signals, depending on the value of FMIN:<br />

• When FMIN ≠ 0, the algorithm uses a sum of sine waves with random phases.<br />

• When FMIN = 0, the algorithm uses gaussian random variables to generate noise<br />

sources.<br />

A noise source, with given frequency characteristics, will produce two different noise signals<br />

depending on the method used to generate them. These signals will have different instantaneous<br />

values but will have the same power and same frequency content.<br />

During transient noise analysis, Eldo generates noise sources in the time domain for each noisy<br />

component. These noise sources are generated as a sum of NBF sinusoids distributed between<br />

Eldo® User's Manual, 15.3 245


Setting Up An Analysis<br />

Transient Noise Analysis<br />

FMIN and FMAX. It means that the generated noise sources have a spectrum of discrete points<br />

and the energy of the noise sources is localized in a limited number of frequency points. When a<br />

frequency band is wide the corresponding generated noise source may have a poor frequency<br />

resolution.<br />

Consequently, an alternative algorithm was developed to generate the noise sources, leading to<br />

a continuous spectrum in the frequency band zero to FMAX. This algorithm is approximately<br />

twice as fast and with more accurate results. However, it cannot generate a noise source with a<br />

frequency band beginning at a value of FMIN other than zero. This algorithm is automatically<br />

activated by specifying FMIN as zero. When FMIN is not zero, the method using sinusoids is<br />

then used. Both methods can work together, one for some components, the other method for<br />

different noisy devices.<br />

The alternative method (when FMIN=0) is used to generate flicker noise and white noise<br />

sources (thermal and shot noise). It is not possible to have a flicker noise source with a<br />

frequency band starting from zero, therefore the generated flicker noise source will have a white<br />

spectrum from zero to f1 and a flicker noise spectrum from f1 to FMAX. The frequency f1 is<br />

calculated from the transient simulation duration: f1=1/TSTOP.<br />

Related Commands<br />

• .NOISETRAN command in Eldo Reference Manual<br />

• .TRAN command in Eldo Reference Manual<br />

Related Topics<br />

Generation of Time Domain Noise Sources<br />

Generation of Time Domain Noise Sources<br />

During noisy runs, each noise source is represented by a current or a voltage source. This source<br />

is pseudo-random and its characteristic is computed from the PSD model of the noise source. As<br />

the noise PSD models might depend on the device bias, and as the device bias is time varying<br />

during a transient simulation, the characteristics of the sources are updated function of the<br />

instantaneous device bias.<br />

A time domain noise source n(t) is generated with the following form:<br />

n(t) = m(t) . r(t)<br />

Where m(t) is a deterministic modulation part, calculated from the instantaneous bias conditions<br />

of the corresponding noisy device, and r(t) is a stationary random part that also contains the<br />

frequency dependence of the noise source.<br />

There exists two different ways to generate noise sources inside Eldo. The choice of the method<br />

is triggered by the FMIN parameter of the .NOISETRAN command.<br />

246<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

• When FMIN=0:<br />

Noise sources are generated from random pulses.<br />

See “Noise Sources Generated From Random Pulses” on page 247.<br />

• When FMIN≠0:<br />

Noise sources are generated from a sum of sinusoids.<br />

See “Noise Sources Generated From a Sum of Sinusoids” on page 253.<br />

Noise sources from random pulses have a continuous spectrum, whereas noise sources from<br />

sinusoids have a discrete spectrum. Noise sources from random pulses are much faster to<br />

generate than noise sources from sinusoids.<br />

It is recommended to use noise sources from random pulses rather than from sinusoids<br />

(FMIN=0). But in some cases, noise sources from sinusoids are useful, for example, when<br />

specifying noise in a specific narrow noise bandwidth.<br />

Noise Sources Generated From Random Pulses<br />

When FMIN=0, for white noise sources, r(t) is generated using random pulse with a specific<br />

width. The pulse magnitudes correspond to a random variable, with a Gaussian distribution and<br />

a variance equal to 1. The pulse width is computed from the .NOISETRAN command parameter<br />

FMAX (Tp=0.5/FMAX).<br />

The m(t) part of the noise source is computed from the PSD of the noise model:<br />

m(t)=sqrt(PSD(t) × FMAX)<br />

As PSD is bias dependent, m(t) is instantaneously updated function of bias changes.<br />

Eldo® User's Manual, 15.3 247


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-5. White Noise Signal From Random Pulses<br />

248<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-6. Random Pulses (Zoom)<br />

Eldo® User's Manual, 15.3 249


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-7. PSD of a White Noise Signal Generated with Random Pulses<br />

Figure 6-7 shows that the Power Spectral Density of a noise source generated with random<br />

pulses has an almost white spectrum (So) located between 0 and FMAX. In fact, it has a sinc<br />

shape: So.sinc 2 (2 × FMAX).<br />

The same kind of method is used to generate colored noise sources. A colored noise source is<br />

obtained from a sum of “sinc-shape” sources. For instance a flicker noise source is a sum of<br />

sinc-shape sources whose amplitudes and cut-off frequencies are determined such that the PSD<br />

of the resulting source fits between FMIN_FLICKER and FMAX with the theoretical PSD, as<br />

shown in Figure 6-8, Figure 6-9 and Figure 6-10.<br />

250<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-8. Flicker Noise Signal From a Sum of Random Pulses<br />

Eldo® User's Manual, 15.3 251


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-9. Flicker Noise Signal From a Sum of Random Pulses (Zoom)<br />

252<br />

Eldo® User's Manual, 15.3


Figure 6-10. PSD of a Flicker Noise Signal<br />

Setting Up An Analysis<br />

Transient Noise Analysis<br />

In the Power Spectral Density shown in Figure 6-10, FMIN_FLICKER is set to 1MHz and<br />

FMAX to 100MHz. The signal has a white spectrum for frequencies below 1MHz, then a 1/f<br />

shape (inversely proportional to the frequency) between 1MHz and 100MHz and then a sinc<br />

shape.<br />

Noise Sources Generated From a Sum of Sinusoids<br />

When FMIN≠0, the r(t) part of the source is generated from a sum of sinusoids with random<br />

phases. All the sinusoids have the same amplitude, and the frequencies are determined to<br />

provide the source with the correct color (frequency dependency). The frequency distribution<br />

can be seen on PSD plots.<br />

For instance, white noise sources are obtained with evenly distributed frequencies between<br />

FMIN and FMAX, as shown in Figure 6-13. Flicker noise sources are generated from a<br />

logarithmic frequency distribution as shown in Figure 6-16.<br />

The m(t) part of the noise source is computed from the PSD of the noise model. As PSD is bias<br />

dependent, m(t) is instantaneously updated function of bias changes.<br />

Eldo® User's Manual, 15.3 253


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-11. White Noise Signal From a Sum of Sinusoids<br />

Figure 6-12. White Noise Signal From a Sum of Sinusoids (Zoom)<br />

254<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-13. PSD of a White Noise Signal Generated From Sinusoids<br />

Eldo® User's Manual, 15.3 255


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-14. Flicker Noise Signal From a Sum of Sinusoids<br />

Figure 6-15. Flicker Noise Signal From a Sum of Sinusoids (Zoom)<br />

256<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-16. PSD of a Flicker Noise Signal Generated From Sinusoids<br />

Noise sources from random pulses have a continuous spectrum, whereas noise sources from<br />

sinusoids have a discrete spectrum. Noise sources from random pulses are much faster to<br />

generate than noise sources from sinusoids.<br />

Related Topics<br />

Transient Noise Analysis Principles<br />

Speeding Up Transient Noise Analysis<br />

Speeding Up Transient Noise Analysis<br />

To reduce the CPU time, parallel noise runs are performed during a single transient analysis to<br />

compute the RMS noise results, instead of several runs. This enables larger circuits to be<br />

handled, a larger number of runs, and the ability to analyze a circuit with a CPU time close to a<br />

normal (noiseless) transient analysis.<br />

Eldo will use the multiple-run MRUN algorithm (perform several runs sequentially) by forcing<br />

the MRUN parameter instead of the default single run algorithm if at least one of the conditions<br />

below is met:<br />

Eldo® User's Manual, 15.3 257


Setting Up An Analysis<br />

Transient Noise Analysis<br />

• .PART being used (for ADiT, and so on)<br />

• .CHRSIM present<br />

• Presence of DELAY operators, T elements, FNS elements<br />

• Use of local truncation error algorithm (QTRUNC option active)<br />

• Mixed-mode simulation (presence of .A2D/.D2A commands)<br />

• Use of Verilog-A<br />

The multiple-run MRUN scheme can also benefit from multi-processor machines to speed-up<br />

simulations in the following ways:<br />

• .NOISETRAN MRUN simulations can be distributed by the .MPRUN command<br />

• .NOISETRAN can be accelerated by specifying multi-threading with <strong>eldo</strong> –use_proc N<br />

As with many simulations, there is a compromise between accuracy and speed. The main<br />

transient noise parameters controlling this are as follows:<br />

• FMIN—setting to 0 uses a faster, more accurate algorithm.<br />

• FMAX—main factor to increase accuracy, even much higher than circuit cutoff<br />

frequency HMAX forced to 1/(2 × FMAX), thus CPU ~ FMAX. It is better to explicitly<br />

set a lower value for HMAX than a high value for FMAX to achieve the best accuracy<br />

possible.<br />

• NBRUN—CPU time and accuracy increase with NBRUN.<br />

• MRUN—single run algorithm is faster than multiple-run.<br />

Transient noise analysis requires more accuracy by default, therefore the simulator accuracy<br />

values (EPS, VNTOL, RELTOL) are overridden, see “Simulator Accuracy Considerations with<br />

Transient Noise” on page 258.<br />

Simulator Accuracy Considerations with Transient Noise<br />

The default values of EPS, VNTOL, RELTOL, and HMAX are changed in transient noise<br />

analysis from the values used in other analyses. For .NOISETRAN, the defaults are:<br />

• EPS=1.0×10 −6<br />

• VNTOL=1.0×10 −6<br />

• RELTOL=1.0×10 −6<br />

By default, Eldo is able to compute noise voltages down to approximately 1µV. As most of the<br />

applications create higher levels of noise, this should be sufficient in most cases. In all other<br />

cases, it is advisable to increase the simulator accuracy.<br />

258<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

For .NOISETRAN, the default HMAX value is HMAX=1/(2×FMAX). It is better to explicitly<br />

set a lower value for HMAX than a high value for FMAX to achieve the best accuracy possible.<br />

Related Commands<br />

• .NOISETRAN command in Eldo Reference Manual<br />

• .OPTION NOISETRAN_TUNING in Eldo Reference Manual<br />

Related Topics<br />

Specifying .NOISETRAN Parameters<br />

Transient Noise Analysis Results<br />

Transient Noise Analysis Results<br />

The results of transient noise analysis runs are output using .EXTRACT, .PLOT, .PRINT, and<br />

.PROBE commands. Eldo prints in ASCII form the individual contributions of the noisy devices<br />

in the .chi file.<br />

If extracts have been specified, the results are provided inside the NOISETRAN EXTRACT<br />

INFORMATION section of the .chi file.<br />

Figure 6-14 shows example transient noise analysis results with and without noise:<br />

Figure 6-17. Transient Noise Analysis Plot<br />

Eldo® User's Manual, 15.3 259


Setting Up An Analysis<br />

Transient Noise Analysis<br />

When a .NOISETRAN simulation is requested with multiple run MRUN specified, transient<br />

analysis extracts (or extracts without any analysis type) will by default return only nominal<br />

values in the .chi file. Specify option DEFRMSNTR to dump both RMS values (computed by<br />

the transient noise analysis) and nominal values (computed by the nominal transient analysis).<br />

Use the analysis type NTR on the .EXTRACT command to select computation based on RMS.<br />

If a single-run .NOISETRAN is performed, then the .EXTRACT command without any<br />

analysis will be interpreted only for the transient run, not for the transient noise analysis.<br />

Specify option DEFRMSNTR to report the nominal and the transient noise analysis (on RMS<br />

waves). Use the keyword NTR on the extract to obtain the RMS extract value.<br />

Spikes may appear in noisy runs of .NOISETRAN with the single-run algorithm. This is<br />

because the circuit (a latch for example) has a very non-linear behavior with respect to noise.<br />

Tip<br />

See “.NOISETRAN” in the Eldo Reference Manual.<br />

Related Topics<br />

Transient Noise Analysis<br />

Example: Extraction of the Phase Noise Spectrum at the<br />

Output of a PLL Circuit<br />

This example illustrates the use of a transient noise analysis to compute the phase noise<br />

spectrum at the output of a PLL circuit.<br />

The transient noise analysis is set in a single noisy run configuration without the nominal<br />

(noiseless) simulation.<br />

1. The following commands instruct the simulator to run a transient analysis up to the<br />

steady-state and save the results:<br />

.tran 0 5u<br />

.save pll.sav end<br />

.plot tran V(CP_VCNT)<br />

.optwind vntol=(2.9u, 5u, 1e-6)<br />

.optwind reltol=(2.9u, 5u, 1e-6)<br />

The following actions are performed:<br />

o<br />

o<br />

o<br />

Run the transient simulation up to 5μs.<br />

Save the state of the circuit at the end of the simulation, to the file pll.sav.<br />

Plot the control node of the VCO. This is used to verify that the PLL is in the steadystate.<br />

260<br />

Eldo® User's Manual, 15.3


o<br />

Setting Up An Analysis<br />

Transient Noise Analysis<br />

Run the simulation with the default accuracy up to 2.9μ, then tighten the tolerance<br />

(VNTOL and RELTOL set to 1e-6).<br />

The plot of the VCO control node is shown in Figure 6-18 (blue curve). It shows the<br />

steady-state being reached at about 4μs.<br />

Figure 6-18. VCO Control Node - Steady State Reached<br />

2. The following commands restart a transient noise analysis from the previously saved<br />

steady-state, and plot the output of the PLL circuit.<br />

.tran 0 100u<br />

.noisetran fmin=0 fmax=2GigaHz tstart=6u nbrun=1 mrun nonom<br />

.plot tran V(CP_VCNT)<br />

.plot tran V(VCO_OUT)<br />

.restart pll.sav<br />

The following actions are performed:<br />

o<br />

o<br />

o<br />

Run a transient noise analysis on the PLL circuit up to 100μs, starting from the<br />

steady-state store in the pll.sav file at 6μs. Noise sources are specified between 0 and<br />

2GHz.<br />

One noisy run is performed, without nominal simulation, in an MRUN<br />

configuration.<br />

Two simulation plots are requested: The VCO control node and the PLL output<br />

node.<br />

Eldo® User's Manual, 15.3 261


Setting Up An Analysis<br />

Transient Noise Analysis<br />

The plot of the VCO control node is shown in Figure 6-18 and Figure 6-19 (green<br />

curves). The plot of the PLL output will be used to compute the phase noise spectrum.<br />

Figure 6-19. VCO Control Node - Restarted Transient Noise Analysis<br />

3. The Waveform Calculator in EZwave is used to compute the Phase Noise spectrum<br />

from the transient noise analysis results. The post-processing function<br />

noisetrantophasenoise() (located in the RF functions menu) is applied on the VCO<br />

output waveform V(VCO_OUT) between 6μs and 100μs.<br />

262<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-20. EZwave Waveform Calculator - Phase Noise Computation<br />

4. The phase noise results obtained from transient noise analysis are compared to those<br />

obtained from partitioned steady-state noise analysis (use of .RFBLOCK, .SST PLL and<br />

.SSTNOISE commands). Figure 6-21 shows that both results match well. Phase noise<br />

results are plotted in green for transient noise analysis, and yellow for steady-state noise<br />

analysis.<br />

Eldo® User's Manual, 15.3 263


Setting Up An Analysis<br />

Transient Noise Analysis<br />

Figure 6-21. Phase Noise Plots Comparison<br />

Summary<br />

The upper frequency of the phase noise spectrum is Fout/2 (where Fout is the frequency of the<br />

PLL output). The lower frequency is defined by the length of the transient noise analysis.<br />

Therefore, increasing frequency resolution has a direct impact on simulation time.<br />

In this example, this functionality is illustrated with an integer rank PLL but it can be used<br />

exactly in the same way with a fractional PLL. The same methodology can be applied to get the<br />

phase noise spectrum for other kind of circuits, for instance free running oscillators, frequency<br />

dividers, clock trees.<br />

Related Commands<br />

• .NOISETRAN in the Eldo Reference Manual<br />

• .SSTNOISE in the Eldo RF User’s Manual<br />

• .SST PLL in the Eldo RF User’s Manual.<br />

Related Topics<br />

Transient Noise Analysis<br />

264<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Statistical and Sensitivity Related Analyses<br />

Statistical and Sensitivity Related Analyses<br />

The statistical and sensitivity related analyses are listed here.<br />

Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

Worst Case Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

DC Mismatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269<br />

DC Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270<br />

Transient Sensitivity Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

AC Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

Sensitivity Analysis of Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

Design of Experiments Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

Monte Carlo Analysis<br />

Monte Carlo analysis (.MC command) determines the uncertainty in estimates for dependent<br />

variables of interest. It focuses on data and how uncertainty in data propagates through<br />

computations.<br />

Eldo reads a netlist describing the circuit and translates it into mathematical equations. The<br />

inputs are the various design parameters, the process parameters, and the environmental<br />

conditions. The output space is characterized by the circuit performance of interest.<br />

Monte Carlo-based uncertainty analysis is performed on multiple model evaluations with<br />

randomly selected model input variables. The results of these evaluations (experiments) are<br />

then used to determine the uncertainty in model predictions, and the input variables that gave<br />

rise to this uncertainty.<br />

In statistical models for transistor level simulation, there are two types of variability in device<br />

properties:<br />

• Inter-die (between chips) variations or global variations (LOT keyword).<br />

Typical examples of statistical parameters with global tolerances are oxide thickness or<br />

channel length reduction.<br />

• Intra-die (within chip) variations are local variations that affect transistors individually<br />

(DEV keyword).<br />

A typical example of statistical parameters with local tolerances are the transistor<br />

threshold voltages.<br />

The overall Monte Carlo analysis run is made of several chunks of simulations. Using an<br />

incremental approach provides an insight into the spread of distribution. You can also<br />

extrapolate to obtain the general shape of the distribution. In Eldo, you control the sample size<br />

Eldo® User's Manual, 15.3 265


Setting Up An Analysis<br />

Monte Carlo Analysis<br />

and optionally, how the sampling is generated. The SAVE/RESTART arguments are used to<br />

save the random sampling and the simulated characteristics. These quantities can be used in<br />

subsequent Monte Carlo experiments.<br />

You can monitor the evolution of certain quantities. Eldo will flush out from the .wdb file the<br />

average and standard deviation of extracts and measurements versus the Monte Carlo run index<br />

to see how these entities evolve.<br />

To control the run-length in the context of sequential Monte Carlo algorithms, use the<br />

MCCONV extract function. In contrast to fixed run-length approaches, samples are generated<br />

until some error criterion is satisfied.<br />

Two algorithms are provided to control the convergence. It is possible to monitor the evolution<br />

of the various moments to precisely quantify the notion of convergence. The Monte Carlo<br />

process can be stopped early using .MC AUTOSTOP if these quantities do not vary more than a<br />

<strong>user</strong>-specified limit.<br />

Monte Carlo Analysis Results<br />

The results of Monte Carlo analysis runs are output using the .EXTRACT, .PRINT and .PLOT<br />

commands and provided in two ways:<br />

• ASCII Output (.chi)<br />

Examples of quantitative procedures are confidence intervals or bootstrap estimates for<br />

the mean value. These analyses are provided within the .chi file. Eldo prints the<br />

following basic statistics: the range, the mean (average), and the standard deviation.<br />

Two standard deviation results are provided:<br />

o<br />

o<br />

Standard Deviation<br />

The RMS value of the deviation of output with respect to the average value.<br />

Standard Deviation based on nominal run<br />

The RMS value of the deviation of output with respect to the nominal run.<br />

• Graphical Output<br />

Eldo provides some tools such as scatter plots, histograms, or probability distribution<br />

functions (PDF) which can be viewed using EZwave.<br />

By default, without the ALL argument, only the nominal, minimum, and maximum results of<br />

Monte Carlo simulations are saved. This includes both ASCII (.chi) and binary wave (.wdb)<br />

results. When ALL is specified, the waveform results of every Monte Carlo simulation run are<br />

stored in the output files.<br />

266<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Worst Case Analysis<br />

The minimum and maximum waveforms correspond to the waveform envelope across all<br />

Monte Carlo runs, not to a specific run. The minimum waveform is annotated _L in EZwave,<br />

and the maximum waveform is annotated _H. For example:<br />

.MC 10<br />

.plot ac vdb(out)<br />

This generates three waveforms:<br />

• VDB(OUT): nominal run<br />

• VDB(OUT)_L: minimum of v(out) across all 11 Monte Carlo runs (including nominal)<br />

• VDB(OUT)_H: maximum of v(out) across all 11 Monte Carlo runs (including nominal)<br />

See Also<br />

• .MC in the Eldo Reference Manual<br />

• Eldo Monte Carlo Quick Start<br />

Related Topics<br />

Monte Carlo Analysis<br />

Worst Case Analysis<br />

Worst Case analysis (.WCASE command) is a corner analysis that computes worst-case values<br />

for waveform data extracted using the .EXTRACT command according to a set of Monte Carlo<br />

parameters that have LOT and DEV variations.<br />

Considering a design which contains P parameters that have a statistical variation, and T targets<br />

(.EXTRACT commands), Eldo will perform several simulations:<br />

1. The first simulation is the nominal simulation, using nominal values for the P<br />

parameters.<br />

2. Next P simulations are sensitivity analysis runs, where Eldo applies a small variation to<br />

one of the P parameters, keeping all other parameters to their nominal value, and<br />

computes the sensitivity of the T targets relative to the current parameter.<br />

For each of the T targets, Eldo outputs a message like:<br />

With respect to MODEL R LOT<br />

Variation of MAX(V(1)) is negative: -1.000000e-02 (Unit/%) or<br />

1.000000e+00 (%/%)<br />

Negative variation means that when parameter is increased, target is decreasing.<br />

Eldo® User's Manual, 15.3 267


Setting Up An Analysis<br />

Worst Case Analysis<br />

3. With all the sensitivity data, Eldo computes the combination of min or max parameter<br />

values that will generate the best and worst cases (MIN and MAX) for each of the T<br />

targets.<br />

There can be at most 2×T worst case simulations. During these simulations, Eldo does<br />

not output anything.<br />

4. Finally, Eldo computes the worst case information for all the targets, and outputs this<br />

information.<br />

Thus, there can be at most 1 + P + 2×T simulations. Worst Case analysis assumes the<br />

influence of each parameter to be linear, and not correlated with other parameters.<br />

Sorting parameters can be specified to quickly identify the most sensitive parameters.<br />

Tip<br />

See “.WCASE” in the Eldo Reference Manual.<br />

Worst Case Analysis Results<br />

The results of worst case analysis runs are output using .EXTRACT, .PLOT, .PRINT, and<br />

.PROBE commands.<br />

If extracts have been specified, the results are provided inside the WORST CASE<br />

SENSITIVITY and WORST CASE INFORMATION sections of the .chi file, for example:<br />

0**** WORST CASE SENSITIVITY TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

With respect to MODEL RMOD DEV: Object :R1<br />

Variation of XYCOND(XAXIS,VDB(OUT)


Setting Up An Analysis<br />

DC Mismatch<br />

Related Topics<br />

Monte Carlo Analysis<br />

DC Mismatch<br />

DC Sensitivity Analysis<br />

AC Sensitivity Analysis<br />

DC Mismatch<br />

The .DCMISMATCH command runs a special form of sensitivity analysis based on statistical<br />

deviation properties of device model parameters. It computes the sensitivity of node voltages<br />

and of currents through voltage sources. All devices using a device model with statistical<br />

deviations potentially contribute to the output deviation. The aim of the DC mismatch analysis<br />

is to quantify these contributions and to identify the biggest contributors to the total output<br />

deviation. It has some degree of similarity with the worst-case analysis (.WCASE). However, it<br />

will usually provide (much) less pessimistic results than worst-case analysis.<br />

Mismatch models try to model the inherent differences which exist between two identically<br />

drawn transistors. Each transistor behavior departs (statistically) from the nominal behavior.<br />

The deviation depends strongly on the geometry (W, L) of the transistor. Small transistors tend<br />

to be more random than large ones.<br />

DC mismatch considers the DEV or DEVX variations specified for device model parameters (in<br />

.MODEL statements) and for global parameters in the .cir file (.PARAM statements specified at<br />

the top-level, outside any subcircuit definition). Mismatch effects are ignored if DEV<br />

specifications are associated to capacitance values (device or model parameters). The LOT<br />

specifications are not taken into account.<br />

Deviation is applied independently to the sensitive devices, and the resulting deviation of the<br />

output is computed from the RMS sum of the resulting deviations.<br />

Sorting parameters can be specified to quickly identify the most sensitive parameters.<br />

Tip<br />

See “.DCMISMATCH” in the Eldo Reference Manual.<br />

DC Mismatch Results<br />

Results of a DC mismatch analysis are provided inside the DC MISMATCH results section of<br />

the .chi file.<br />

Below is a typical DC mismatch analysis output showing N-sigma deviation of the outputs, and<br />

a table of sorted contributors.<br />

Eldo® User's Manual, 15.3 269


Setting Up An Analysis<br />

DC Sensitivity Analysis<br />

In the report table, the first column is listed in descending order to easily identify the main<br />

contributors. The second column is not listed in order; you need to manually examine the results<br />

to identify the parameter which has the major effect.<br />

In this example, XM2.M1 is the main contributor, and the deviation of the VTH0 mobility<br />

parameter of its associated model—XM2.MOD2—is the main contributor to the XM2.M1<br />

contribution.<br />

0**** DC MISMATCH results TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

#.DCMISMATCH V(S) SORT_REL = 1.000000e-03 NSIGMA = 1.000000e+00<br />

Analysis results:<br />

Output DC value : 1.7892U Volt<br />

Total output deviation : +/- 14.9166M Volt<br />

Output deviation due to the<br />

contributors in the report table : +/- 14.9166M Volt<br />

Report table<br />

----------------------------------------<br />

Output deviation Contributor Parameter<br />

7.9308M XM2.M1<br />

5.1779M M(XM2.MOD2,U0)<br />

6.0051M M(XM2.MOD2,VTH0)<br />

163.0689U M(XM2.MOD2,TOX)<br />

7.9294M XM1.M1<br />

5.1769M M(XM1.MOD2,U0)<br />

6.0040M M(XM1.MOD2,VTH0)<br />

163.0386U M(XM1.MOD2,TOX)<br />

6.1906M XM7.M1<br />

2.5507M M(XM7.MOD1,U0)<br />

5.6326M M(XM7.MOD1,VTH0)<br />

302.4733U M(XM7.MOD1,TOX)<br />

6.1906M XM6.M1<br />

2.5507M M(XM6.MOD1,U0)<br />

5.6326M M(XM6.MOD1,VTH0)<br />

302.4703U M(XM6.MOD1,TOX)<br />

...<br />

Related Topics<br />

Statistical and Sensitivity Related Analyses<br />

DC Sensitivity Analysis<br />

The .SENS [DC] command runs a DC sensitivity analysis. By linearizing the circuit around a<br />

bias point, the sensitivities of each of the output variables in relation to all the device values and<br />

the model parameters are calculated and output.<br />

270<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

DC Sensitivity Analysis<br />

Tip<br />

See “.SENS” in the Eldo Reference Manual.<br />

DC Sensitivity Analysis Results<br />

Results of a DC sensitivity analysis are provided inside the DC SENSITIVITY ANALYSIS<br />

section of the .chi file, for example:<br />

0**** DC SENSITIVITY ANALYSIS TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

DC SENSITIVITIES OF OUTPUT V(OUT)<br />

ELEMENT ELEMENT ELEMENT NORMALIZED<br />

NAME VALUE SENSITIVITY SENSITIVITY<br />

(VOLTS/UNIT) (VOLTS/PERCENT)<br />

XM16.M1<br />

XM17.M1<br />

XM15.M1<br />

XM13.M1<br />

XM14.M1<br />

XM12.M1<br />

XM3.M1<br />

...<br />

VDD 1.650E+000 -3.50E-003 -5.78E-005<br />

VSS -1.65E+000 -2.51E-004 4.145E-006<br />

VINP -9.00E-001 1.000E+000 -9.00E-003<br />

VB 9.500E-001 3.478E-003 3.304E-005<br />

W 4.556E-006 -1.38E+002 -6.27E-006<br />

L 1.075E-006 7.985E+002 8.588E-006<br />

W 2.984E-006 1.941E+002 5.790E-006<br />

L 9.934E-007 -7.57E+002 -7.52E-006<br />

W 2.984E-006 -8.60E+001 -2.56E-006<br />

L 9.934E-007 3.500E+002 3.477E-006<br />

W 2.984E-006 -8.56E+002 -2.55E-005<br />

L 9.934E-007 3.526E+003 3.502E-005<br />

W 7.560E-007 3.625E+002 2.741E-006<br />

L 1.075E-006 -2.64E+002 -2.84E-006<br />

W 4.556E-006 6.052E+002 2.757E-005<br />

L 1.075E-006 -2.80E+003 -3.01E-005<br />

W 4.556E-006 -6.87E+004 -3.13E-003<br />

L 1.075E-006 3.043E+005 3.272E-003<br />

Related Topics<br />

Statistical and Sensitivity Related Analyses<br />

Transient Sensitivity Analysis<br />

AC Sensitivity Analysis<br />

Eldo® User's Manual, 15.3 271


Setting Up An Analysis<br />

Transient Sensitivity Analysis<br />

Transient Sensitivity Analysis<br />

The .SENS TRAN command runs a transient sensitivity analysis to estimate the relative impact<br />

of design, process parameters or operating point conditions upon selected circuit responses.<br />

Tip<br />

See “.SENS TRAN” in the Eldo Reference Manual.<br />

Transient Sensitivity Analysis Results<br />

Results of a transient sensitivity analysis are provided inside the TRANSIENT SENSITIVITY<br />

ANALYSIS section of the .chi file, for example:<br />

0**** TRANSIENT SENSITIVITY ANALYSIS TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

TRANSIENT SENSITIVITIES OF OUTPUT V(2) AT TIME<br />

5 s<br />

ELEMENT ELEMENT ELEMENT NORMALIZED<br />

NAME VALUE SENSITIVITY SENSITIVITY<br />

(AMPS/UNIT) (AMPS/PERCENT)<br />

0.000E+00 -6.61E-01 -0.000E+00<br />

C1 1.000E+00 -6.61E-01 -6.61E-03<br />

Related Topics<br />

Statistical and Sensitivity Related Analyses<br />

DC Sensitivity Analysis<br />

AC Sensitivity Analysis<br />

AC Sensitivity Analysis<br />

The .SENS AC command runs an AC sensitivity analysis. By linearizing the circuit around a<br />

bias point, the sensitivities of each of the output variables in relation to R, L, C devices present<br />

in the design are calculated and output.<br />

Tip<br />

See “.SENS AC” in the Eldo Reference Manual.<br />

272<br />

Eldo® User's Manual, 15.3


AC Sensitivity Analysis Results<br />

Setting Up An Analysis<br />

Sensitivity Analysis of Parameters<br />

Results of an AC sensitivity analysis are provided inside the AC SENSITIVITY ANALYSIS<br />

section of the .chi file, for example:<br />

0**** AC SENSITIVITY ANALYSIS TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

.SENSAC V(OUT) SORT_REL = 1.000000e-003<br />

Analysis results at 1.0000E+004 Hertz:<br />

ELEMENT ELEMENT ELEMENT NORMALIZED<br />

NAME VALUE SENSITIVITY SENSITIVITY<br />

(VOLTS/UNIT) (VOLTS/PERCENT)<br />

C on OUT 1.000E-012 2.998E+005 2.998E-009<br />

CX 2.000E-007 -4.43E-001 -8.86E-010<br />

Related Topics<br />

Statistical and Sensitivity Related Analyses<br />

DC Sensitivity Analysis<br />

Transient Sensitivity Analysis<br />

Sensitivity Analysis of Parameters<br />

Designers need sensitivity information for design parameters (parameters they can act upon).<br />

The .SENSPARAM command computes the sensitivity of voltages/currents and extracts to<br />

these design parameters.<br />

The first simulation is the nominal simulation, using nominal values for the parameters. The<br />

following simulations are sensitivity analysis runs where Eldo applies a small variation to one<br />

of the P parameters, keeping all others to their nominal value, and computes the sensitivity of<br />

the targets relative to the current parameter. Therefore there are 1 + P simulations. The<br />

sensitivity results represent the variation of the extracted value for a variation of 1% of the<br />

parameter value.<br />

Tip<br />

See “.SENSPARAM” in the Eldo Reference Manual.<br />

Sensitivity Analysis of Parameters Results<br />

Results of a sensitivity analysis of parameters are provided inside the SENSPARAM<br />

INFORMATION section of the .chi file, for example:<br />

Eldo® User's Manual, 15.3 273


Setting Up An Analysis<br />

Design of Experiments Analysis<br />

0**** SENSPARAM INFORMATION TEMPERATURE = 27.000 DEG C<br />

0************************************************************************<br />

YVAL(I(R2),5N) NOM: 5.2297E-05<br />

*| Absolute Relative Parameter Parameter Parameter<br />

*| Sensitivity Sensitivity (%/%) Nominal Value Variation Name<br />

*| -9.4162E-07 -1.0803E-01 6.00000e+00 3.000e+00% X2.C<br />

*| -1.2688E-06 -7.2781E-02 3.00000e+00 1.000e-01% X2.D<br />

*| -3.3851E-06 -6.4729E-02 1.00000e+00 1.000e-01% X3.X1.D<br />

*| -3.3851E-06 -6.4729E-02 1.00000e+00 1.000e-01% X3.X2.D<br />

*| -3.5221E-07 -4.0408E-02 6.00000e+00 1.000e-01% X1.D<br />

Related Topics<br />

Statistical and Sensitivity Related Analyses<br />

Design of Experiments Analysis<br />

Design of Experiments is concerned with the standard techniques of factor screening, location<br />

and dispersion analysis, and response surface methodologies in circuit design. In this context, a<br />

general situation is considered where an observable output (extracted measure in Eldo) depends<br />

on a set of parameters and the effects (main effects and interactions) of parameters (factors) on<br />

the output are explored using the techniques of Design of Experiments.<br />

Eldo contains the basic tools to perform a factor screening experiment with the .DEX command.<br />

Because the main issue in studying statistical design problems lies in a large number of circuit<br />

parameters involved, the primary purpose of a variable screening experiment is to select or<br />

screen out the few important main effects from the many less important ones. Once a small<br />

number of important factors is identified, subsequent statistical design problems can be solved<br />

more efficiently and require fewer runs.<br />

In this context, a factor is a circuit parameter that is studied in the experiment. To study the<br />

effect of a factor on one or several <strong>user</strong>-defined responses, two or more values of the factor are<br />

used. These values are referred to as levels or settings. A combination of factor levels is called a<br />

run and will be associated to a specific simulation run in Eldo.<br />

In an experiment, one or more variables (or factors) are deliberately changed to observe the<br />

effect the changes have on one or more response variables. The DEX techniques are efficient<br />

procedures so that the data obtained can be analyzed to yield valid and objective conclusions.<br />

This efficiency is founded on some key properties of orthogonal arrays, which offer a<br />

systematic way of testing. The benefits include: a uniform distributed coverage of the test<br />

domain, all pair-wise combinations of test set created, and arrive at complex combinations of all<br />

the variables.<br />

Tip<br />

See “.DEX” in the Eldo Reference Manual.<br />

274<br />

Eldo® User's Manual, 15.3


Design of Experiments Analysis Results<br />

Setting Up An Analysis<br />

Design of Experiments Analysis<br />

A screening experiment will be conducted on the performance response. The factors will be<br />

taken from the list of circuit parameters specified by a .PARAMDEX statement. The results of<br />

this experiment are generated in the .dex file. This output file contains an ordered data table for<br />

each simulated response, a DEX mean table which provides the ranked list of factors (not<br />

including the interactions), the ranking is from the most important factor to least important<br />

factor, and a formal test of significance.<br />

The .dex file is a structured text file that is organized with sections and subsections, and enables<br />

you to skip one or more sections at different levels of detail. Run the utility named viewdex on<br />

the .dex file to display the results.<br />

Related Topics<br />

Statistical Experimental Design and Analysis<br />

Statistical and Sensitivity Related Analyses<br />

Eldo® User's Manual, 15.3 275


Setting Up An Analysis<br />

Other Miscellaneous Analyses<br />

Other Miscellaneous Analyses<br />

Other miscellaneous analyses are:<br />

Optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />

Aging and Reliability Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277<br />

Check Safe Operating Area Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278<br />

High Impedance Node Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279<br />

Power Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279<br />

Viewing Power Analysis Results Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280<br />

Electrothermal Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282<br />

Optimization<br />

The Eldo optimizer is a general-purpose electrical circuit optimization program. The term Eldo<br />

optimizer refers to the complete set of optimization tools available through the .OPTIMIZE<br />

command. The optimizer will calculate the value of parameters (the optimization variables) in<br />

the circuit such that the behavior or the characteristics of the circuit conform as close as possible<br />

to the specifications. The optimizer can achieve a simultaneous improvement in AC, DC,<br />

Transient domain, Steady-State and Modulated Steady-State analyses.<br />

The designer specifies the design objectives and the optimizer will adjust the component<br />

parameters of the circuit (such as resistor or capacitor values, the b value of a transistor, widths<br />

and lengths of a MOSFET) to meet a specified electrical performance. Optimization can be<br />

applied to:<br />

• Circuit parameters.<br />

• Model parameters.<br />

• Element parameters.<br />

• Device lengths, widths, areas, and peripheries.<br />

The parameter values must conform to the manufacturing limits, process limits, or discrete<br />

device values. To achieve this, restrictions can be specified on the design parameters. Various<br />

constraints (or inter-relations) can be specified, for example, circuit parameters must be<br />

non-negative, or must not violate upper boundaries. In addition, more complicated constraints<br />

can be specified, for example, how components physically interact with each other to produce<br />

non-linear relations.<br />

The process of identifying the objective, variables, and constraints for a specific problem is<br />

known as modeling. The construction of an appropriate model is the first step (sometimes the<br />

most important) in the optimization process. If the model is too simplistic, it will not generate<br />

useful insights into the practical problems. If too complex, it may become difficult to solve.<br />

276<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

Aging and Reliability Analysis<br />

Thus, the designer’s task is to discover what is the most appropriate model for their<br />

requirements.<br />

An objective is anything that can be extracted or measured from the output waveform. Regular<br />

.EXTRACT statements can be specified with additional optimization parameters, or the<br />

.OBJECTIVE command—specifically dedicated to optimization—can be used for more<br />

complex objectives.<br />

Tip<br />

See “.OPTIMIZE” in the Eldo Reference Manual.<br />

Optimization Results<br />

The results of optimization must be analyzed to verify whether the optimization has succeeded<br />

in its task of finding a solution. The results of optimization are output using the .EXTRACT and<br />

.PLOT commands and provided in two ways:<br />

• ASCII Output<br />

o<br />

o<br />

The Eldo standard output (.chi) file provides simplified information about the<br />

optimization process.<br />

The results of optimization are generated in a .otm file. This is a structured text file<br />

separated into three major sections: initialization (scaling of variables and<br />

objectives), optimization phase, and the results of the process (final variables and<br />

objectives). Run the utility named viewotm on the .otm file to display the results.<br />

• Graphical Output<br />

Extracted waveforms generated during an optimization process can be viewed using<br />

EZwave. These are implicitly declared waves which have the same name as the extract<br />

label they refer to.<br />

Related Topics<br />

Optimization<br />

Aging and Reliability Analysis<br />

Reliability models are implemented in the Eldo UDRM (User Defined Reliability Model)<br />

interface.<br />

The objective of aging and reliability simulation is to be able to model the gradual damage,<br />

which occurs to the devices in a certain design causing degradation in the performance of that<br />

design. It is required to evaluate the amount of degradation occurring in a certain period of<br />

operation and examine the circuit performance after this period. The modeled damage could<br />

follow one or more of several damage mechanisms, which show gradual degradation in device<br />

Eldo® User's Manual, 15.3 277


Setting Up An Analysis<br />

Check Safe Operating Area Analysis<br />

performance. Other mechanisms, which cause sudden and complete damage of the device, (like<br />

the oxide breakdown for example) are not targeted in this scope.<br />

Reliability changes can be analyzed for the following degradation effects:<br />

• Hot-Carrier Injection (HCI).<br />

• Negative Bias Temperature Instability (NBTI) degradation.<br />

• Other stress effects can be modeled.<br />

Aging and reliability analysis enables a comparison of the fresh and degraded (aged) waveforms<br />

to see how much impact the degradation has on circuit performance. It is then possible to<br />

determine which device parameter is primarily responsible for degradation and identify the<br />

most sensitive part of the circuit.<br />

Tip<br />

You can view reliability analysis results with the AMS Results Browser.<br />

See Also<br />

• Eldo UDRM User’s Manual<br />

• .AGE in the Eldo UDRM Manual<br />

Check Safe Operating Area Analysis<br />

The .CHECKSOA command checks for any violations of the circuit safe operating area (SOA)<br />

limits. The safe operating area limits are set for device parameters, model parameters, and Eldo<br />

expressions using the .SETSOA command.<br />

Tip<br />

You can view safe operating area violations with the AMS Results Browser.<br />

Related Commands<br />

• .CHECKSOA in the Eldo Reference Manual<br />

• .SETSOA in the Eldo Reference Manual<br />

Related Topics<br />

Safe Operating Area (SOA) Checks<br />

278<br />

Eldo® User's Manual, 15.3


High Impedance Node Check<br />

Setting Up An Analysis<br />

High Impedance Node Check<br />

The .HIZ/.DCHIZ commands or option ADIT_CHECK checks for circuit nodes in high<br />

impedance state (Hi-Z nodes). Eldo detects circuit Hi-Z states by checking the dynamic<br />

behavior of all nodes. This detection method works on any circuit topology and applies to all<br />

device types.<br />

Specify the node impedance quantity, IMP(), inside SOA, .EXTRACT/.MEAS, or<br />

.PLOT/.PRINT/.PROBE commands. The IMP quantity cannot be used to define the value of a<br />

component (R1 … value = IMP(Z) is not allowed). Specifying this quantity might have an<br />

impact on simulation time if lots of impedances are requested.<br />

Tip<br />

You can view high impedance detections with the AMS Results Browser.<br />

See Also<br />

• .DCHIZ in the Eldo Reference Manual<br />

• .HIZ in the Eldo Reference Manual<br />

• .OPTION ADIT_CHECK in the Eldo Reference Manual<br />

Related Topics<br />

High Impedance Node Checks<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

Power Analysis<br />

The .POWER_ANALYSIS command enables you to analyze power consumption of a circuit<br />

and its components over time. You can optionally define a time range and thresholds to narrow<br />

down problematic subcircuits or devices. The results are displayed in the EZwave Power<br />

Analysis dialog box. For further post-processing, use the EZwave interface and TCL commands<br />

to perform, for example, a batch analysis on multiple simulations or time range.<br />

The power analysis is fully hierarchical, which means that you can display all the circuit<br />

components, showing the hierarchy, and filter accordingly down through the hierarchy.<br />

The main purpose of this analysis is to help designers understand where and when the power is<br />

dissipated inside a large circuit, or which part of a circuit is consuming more than a specified<br />

threshold, or which subcircuits are consuming what power. You can analyze the power without<br />

having to resimulate, everything is manipulated in the Power Analysis dialog box and you<br />

perform your debugging tasks accordingly there.<br />

This analysis provides an effective way to report power and current consumption. For designs<br />

operating on battery supplies, power consumption and leakage issues are important. Advanced<br />

Eldo® User's Manual, 15.3 279


Setting Up An Analysis<br />

Viewing Power Analysis Results Example<br />

process nodes tend to make these problems worse. The power supply voltages tend to decrease,<br />

and the leakage currents tend to increase exponentially at each new node. This means the<br />

monitoring of current variables (that relate directly to power) is as important, if not more, than<br />

the monitoring of voltages. Entire circuits are dedicated to the sole function of power<br />

management, which means managing the complex sequences of powering up and powering<br />

down multi-chip systems, or SOCs, that operate with 10 or 20 different power supply levels (to<br />

save every microWatt possible).<br />

Tip<br />

See “.POWER_ANALYSIS” in the Eldo Reference Manual and “Analyzing Power<br />

Consumption” in the EZwave User’s and Reference Manual.<br />

Viewing Power Analysis Results Example<br />

This example shows the power analysis of a simple circuit.<br />

Prerequisites<br />

• A netlist with a .POWER_ANALYSIS command specified, for example:<br />

*Power Analysis example<br />

.subckt bottom bottom_in<br />

Rbottom1 bottom_in 0 100<br />

Rbottom2 bottom_in 0 100<br />

.ends bottom<br />

.subckt top top_in<br />

Xbottom top_in bottom<br />

Xmiddle top_in bottom<br />

Rmiddle top_in 0 100<br />

.ends top<br />

Vdd in 0 pwl ( 0 0 1u 0 2u 1 8u 1 10u 0)<br />

Xtop in top<br />

Rload in 0 100<br />

.tran 15u 15u<br />

.option eps=1e-4 nocatmx<br />

.power_analysis<br />

+ visible_columns=sum,type,max,avg<br />

.probe tran v(in)<br />

.end<br />

• The power analysis results are stored in the waveform database folder named<br />

POWER_TRAN.<br />

Procedure<br />

1. Run Eldo on a netlist with a .POWER_ANALYSIS command specified.<br />

2. Open the waveform database containing the power analysis results.<br />

280<br />

Eldo® User's Manual, 15.3


Results<br />

Setting Up An Analysis<br />

Viewing Power Analysis Results Example<br />

3. Expand the set of power analysis results in the Waveform List Panel, right-click on the<br />

POWER_TRAN folder and from the waveform pop-up choose Power Analysis to open<br />

the Power Analysis dialog. (The dialog can also be opened from the main menu Tools ><br />

Power Analysis.)<br />

4. Click the Analyze button. The hierarchical tree view is populated with the power<br />

waveform results from the design. As defined in the netlist in this case, the visible<br />

columns are: sum, type, maximum, and average. You can also view the results in a list<br />

view, with the full hierarchical name for each item.<br />

5. If you change any of the settings in the dialog, for example the power thresholds or<br />

analysis range, you need to click the Analyze button for the changes to take effect.<br />

• Use the Filter Names field and click the Filter button to only list the results of names<br />

matching the specified term. Clear the Filter Names field and click the Filter button<br />

again to show all names. Some columns, for example Type and Mode, can be<br />

filtered individually, by right-clicking on the column and choosing the items to<br />

show.<br />

• By default, Use Color Scaling is selected enhancing the results to easily show<br />

problematic areas with a color scale.<br />

6. Select the Save As to save the results as a CSV or text file.<br />

Figure 6-22 shows the Power Analysis dialog in EZwave with color scaling enabled.<br />

Eldo® User's Manual, 15.3 281


Setting Up An Analysis<br />

Electrothermal Simulation<br />

Figure 6-22. Power Analysis Results<br />

Example text file output:<br />

Name Sum Type Max Avg<br />

test01 6.448425e-1 - 6.000000e-2 1.572787e-2<br />

test01.RLOAD 1.074737e-1 Passive 1.000000e-2 2.621311e-3<br />

test01.VDD -6.448425e-1 Source 4.9E-324 -1.572787e-2<br />

test01.XTOP 5.373687e-1 Subcircuit 5.000000e-2 1.310655e-2<br />

test01.XTOP.RMIDDLE 1.074737e-1 Passive 1.000000e-2 2.621311e-3<br />

test01.XTOP.XBOTTOM 2.149475e-1 Subcircuit 2.000000e-2 5.242622e-3<br />

test01.XTOP.XBOTTOM.RBOTTOM1 1.074737e-1 Passive 1.000000e-2 2.621311e-3<br />

test01.XTOP.XBOTTOM.RBOTTOM2 1.074737e-1 Passive 1.000000e-2 2.621311e-3<br />

test01.XTOP.XMIDDLE 2.149475e-1 Subcircuit 2.000000e-2 5.242622e-3<br />

test01.XTOP.XMIDDLE.RBOTTOM1 1.074737e-1 Passive 1.000000e-2 2.621311e-3<br />

test01.XTOP.XMIDDLE.RBOTTOM2 1.074737e-1 Passive 1.000000e-2 2.621311e-3<br />

Related Topics<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

Electrothermal Simulation<br />

The .TEMPNODE command activates electrothermal simulation on a subcircuit to be<br />

monitored. The voltage value on the specified node represents the temperature increase of the<br />

corresponding subcircuit with respect to the global circuit temperature. Eldo computes the<br />

power dissipated by the active devices present in the subcircuit containing .TEMPNODE<br />

282<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

RF Analyses<br />

commands. This power, formally equivalent to a current source, is dissipated in the thermal<br />

network attached to the thermal net, resulting in a new temperature value of the subcircuit.<br />

The electrothermal simulation results can be sorted based on the thermal contributions. Specify<br />

the .REPORT_HEATING command to generate a report listing the instances or subcircuits that<br />

have seen their temperature change the most during an electrothermal simulation. The results<br />

are generated in the default .chi output file or a dedicated .heat file, and can be filtered and<br />

sorted.<br />

Related Commands<br />

• .TEMPNODE in the Eldo Reference Manual<br />

• .REPORT_HEATING in the Eldo Reference Manual<br />

• .OPTION ETMODE in the Eldo Reference Manual<br />

Related Topics<br />

Electrothermal Simulation<br />

RF Analyses<br />

Eldo RF extends the capabilities of the Eldo simulator with added extensions for RF simulation<br />

to enable the fast large-signal Steady-State analysis (SST analysis) of high frequency electronic<br />

circuits. Eldo RF provides a set of dedicated algorithms to accurately and efficiently handle the<br />

multi-GHz signals in modern wireless communication applications.<br />

Eldo RF capabilities include:<br />

• Steady-State Analysis<br />

Steady-State analysis of RF IC circuits excited with single-tone or multi-tone large<br />

signal sources is easy with Eldo RF. Multi-tone steady-state analysis enables you to<br />

quickly analyze amplifiers, filters, and mixers. Analysis features automate computation<br />

of intermodulation products, compression points, intercept points, and extraction of<br />

large-signal S parameters.<br />

• Steady-State Small-Signal Analysis<br />

A number of small-signal analyses such as the steady-state small signal (SSTAC)<br />

analysis or the steady-state transfer function (SSTXF) analysis complement the steadystate<br />

core algorithm. They are used to easily predict frequency responses when<br />

frequency translation occurs due to a mixing operation for example, and regular small<br />

signal analysis (AC) is not applicable.<br />

• Steady-State Noise Analysis<br />

Steady-state noise analysis determines the output noise spectrum and the noise figure,<br />

with results sorted by the individual contribution of every noisy device. Eldo RF has the<br />

Eldo® User's Manual, 15.3 283


Setting Up An Analysis<br />

RF Analyses<br />

remarkable capability that nonlinear noise analysis can be performed under large signal<br />

multi-tone conditions, which is mandatory for the accurate simulation of mixers.<br />

• Oscillator and Phase Noise Analysis<br />

Eldo RF computes the steady-state response of circuits containing multiple oscillators or<br />

voltage-controlled oscillators in a fraction of the time needed by transient based<br />

methods. Other fundamental frequencies are allowed, so large signal analysis of<br />

combinations such as VCO and mixer are easy to analyze. You don’t need to worry<br />

about the start-up conditions or the oscillator because everything is computed in the<br />

frequency domain. Phase noise and amplitude noise are easily and accurately analyzed,<br />

using proprietary algorithms, which yield accurate results both close to and far from the<br />

carrier. Sorted contributions of each and every element is available in tabular formats.<br />

Time domain period and long-term jitter information is also available, for both forced<br />

and non-forced circuits.<br />

• Frequency Dividers<br />

Eldo RF supports the analysis of frequency dividers combined with voltage controlled<br />

oscillators. Phase noise can also be predicted at the output of the dividers. Eldo RF is the<br />

only tool to accurately predict the phase noise at intermediate division stages, due to its<br />

unique handling of noise correlation. A very handy frequency divider macromodel is<br />

available for architectural exploration.<br />

• Modulated Steady-State Analysis<br />

To accurately predict effects such as adjacent channel power ratio, Eldo RF supports a<br />

dedicated algorithm that handles modulated signals. A time-varying spectrum is<br />

computed by this algorithm, which basically merges the steady-state and the transient<br />

algorithms, decoupling the resolution of the RF carriers from the slow-varying<br />

modulation information. Eldo RF can also use the MODSST algorithm for some<br />

partitions (typically, the RF blocks) and regular transient algorithm for the rest of the<br />

circuit (typically, the baseband blocks). The speed up provided by this algorithm may<br />

reach one or two orders of magnitude over brute force transient simulation, with no loss<br />

of accuracy. A variety of standard outputs such as IQ trajectory diagram, constellation<br />

diagram, or Eye diagram is available.<br />

• Digitally Modulated Sources<br />

To accommodate different wireless standards, Eldo RF supports all common digital<br />

modulation formats, such as GMSK, QPSK, QAM, GFSK, EDGE, OFDM, etc. Built-in<br />

sources deliver signals modulated according to these schemes, including the standard<br />

baseband filters such as Root Cosine or Gaussian filters. The input signal can be either<br />

explicit binary sequences, or CCITT compliant PRBS sequences. Arbitrary IQ<br />

modulators can also be used, which read the IQ information from external <strong>user</strong>-defined<br />

tables.<br />

• Parametric Sweeping<br />

284<br />

Eldo® User's Manual, 15.3


Setting Up An Analysis<br />

RF Analyses<br />

Take advantage of efficient parametric sweeping to vary signal power, fundamental<br />

frequencies, temperature, power supply level, component values, or any parameterized<br />

value for a complete verification of RF IC designs. Efficient parametric sweeping is<br />

critical for many RF simulations such as compression points or intermodulation, and the<br />

algorithms in Eldo RF are extremely well-suited for that purpose, thus maximizing<br />

designers productivity.<br />

• Phase-Locked-Loop Analysis<br />

Eldo RF contains a dedicated algorithm for the analysis of the steady-state behavior of<br />

PLLs. The analysis of PLLs is a difficult problem for classical transient simulation,<br />

because the time constants at sake differ by several orders of magnitudes. The<br />

bandwidth might be a few 100 kHz whereas the VCO oscillates at several GHz.<br />

Unfortunately, transient simulation has to follow the fastest signal, and thus the number<br />

of computed time points is prohibitive, leading to days or weeks of simulation, even on<br />

the most powerful computers.<br />

To overcome this difficulty, the Eldo RF steady-state PLL algorithm partitions the<br />

design and uses a global convergence loop to directly compute the steady-state solution<br />

(the locked state). The gain in CPU time is spectacular (typically 50X); and even better,<br />

the results are more accurate than the solution provided by the transient simulation. This<br />

is a rare case in which a clever algorithm provides both a spectacular speed up and<br />

higher accuracy. Usually, you have to accept a tradeoff between speed and accuracy,<br />

using either fast-spice or behavioral modeling techniques. The steady-state waveforms<br />

enable analyzing the spurious in the output spectrum, directly in the frequency domain;<br />

thus, the tedious post-processing FFTs of transient waveforms are completely avoided.<br />

• Closed-Loop Phase Noise Analysis<br />

See Also<br />

The Steady-State PLL algorithm in Eldo RF can also compute the closed-loop phase<br />

noise spectrum out of the PLL, using a partitioning strategy for accelerated convergence.<br />

All noise sources are taken into account, without any simplifications, because the input<br />

is a plain transistor-level netlist. All building blocks, such as phase-frequency detector,<br />

charge pump, divider, and VCO, operate as non-linear elements. All transistor device<br />

models are supported, and no behavioral modeling or linearization is necessary. A key<br />

feature of the algorithm provides the individual contributions of the building blocks to<br />

the global output phase noise.<br />

• Eldo RF User’s Manual<br />

Related Topics<br />

Setting Up An Analysis<br />

Eldo® User's Manual, 15.3 285


Setting Up An Analysis<br />

RF Analyses<br />

286<br />

Eldo® User's Manual, 15.3


Chapter 7<br />

Running Parametric Analyses<br />

Parametric analysis enables you to specify ranges of values for components, semiconductor<br />

parameters, and other circuit parameters, and then analyze the circuit over these specified<br />

values. This is called sweeping parameters.<br />

Temperature Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287<br />

Assigning Parameter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291<br />

Sweeping Parameters Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

.STEP Sweeping Parameters Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

Nested Sweeps Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295<br />

.DATA Parameter Sweeps Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296<br />

Altering Netlist Data For Simulation Reruns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298<br />

Removing .EXTRACT Statements from a Simulation Rerun . . . . . . . . . . . . . . . . . . . . . . 299<br />

Controlling Alter Blocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299<br />

.ALTER Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300<br />

Using Output Results From a Previous Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302<br />

Temperature Handling<br />

Eldo enables temperature handling in a number of ways.<br />

The order of priority of the following temperature related commands and parameters is, with<br />

decreasing priority: T (TEMP or DTEMP), then TMOD (or TNOM), and then .TEMP. That is,<br />

T has the highest priority.<br />

• .TEMP command.<br />

Specifies the circuit simulation temperature. You can specify this to execute several<br />

successive simulations at various temperatures.<br />

See “.TEMP” in the Eldo Reference Manual.<br />

• Keyword TEMP in .DC analysis command.<br />

.DC followed by the TEMP keyword results in a variation of temperature.<br />

See “.DC” in the Eldo Reference Manual.<br />

• TNOM option (.OPTION).<br />

Sets the default model reference temperature for parameters provided in the .MODEL<br />

statement (temperature at which the default model parameters were extracted). Default<br />

Eldo® User's Manual, 15.3 287


Running Parametric Analyses<br />

Temperature Handling<br />

is 27°C. TNOM is the temperature at which the given model parameters are valid. If T<br />

differs from TNOM, model parameters are internally recalculated to reflect the<br />

temperature dependence of the simulated devices.<br />

TNOM may appear in expressions. TNOM is a reserved keyword, however it may be<br />

specified as a parameter in a .PARAM command when .OPTION DEFPTNOM is set.<br />

The temperature value set with .OPTION TNOM=val is always used by the Eldo model<br />

evaluator.<br />

See options “DEFPTNOM” and “TNOM” in the Eldo Reference Manual.<br />

• TMOD parameter in devices (diode, BJT, JFET, MOSFET).<br />

Sets the model temperature in device model specifications. The value of this parameter<br />

overrides the .TEMP command.<br />

Note<br />

.OPTION TMOD and TNOM in the .MODEL statement are synonymous, the last<br />

one specified is used.<br />

• DTEMP parameter in devices (resistor, capacitor, inductor, diode, BJT, JFET,<br />

MOSFET, subcircuit).<br />

The DTEMP parameter, in certain devices, sets the temperature difference between the<br />

device and the rest of the circuit. You can also specify it on the subcircuit instance.<br />

• T (or TEMP) parameter in certain devices.<br />

The T parameter, in certain devices, sets the temperature of an individual instance of a<br />

device or model. You can also specify it on the subcircuit instance. This parameter<br />

overrides the TMOD parameter. If T differs from TNOM, the model parameters are<br />

recalculated to reflect the temperature dependence of the simulated devices.<br />

The T on the device overwrites the TMOD specified on the model statement, if any. If T<br />

differs from the global TNOM, or from the TNOM specified on the model card attached<br />

to that device, the model parameters are recalculated.<br />

Note<br />

TEMP and DTEMP are mutually exclusive. If both are specified, the last one is<br />

used.<br />

• Variable TEMPER (or TEMP) Eldo enables formulation of temperature-dependent<br />

functions.<br />

TEMPER (or TEMP) is a variable returned by Eldo supplying the value of the current<br />

simulation temperature; it may be used in subsequent calculations. This variable is the<br />

current simulation temperature resulting from a .TEMP command, a .DC TEMP sweep<br />

or, if neither are specified, the value of .OPTION TNOM. The TEMPER variable may<br />

be used in the formulation of temperature-dependent expressions. Any expressions<br />

288<br />

Eldo® User's Manual, 15.3


Running Parametric Analyses<br />

Temperature Handling<br />

containing the TEMPER variable will be automatically reevaluated in the case of a<br />

change in this temperature.<br />

Note<br />

The TEMP variable is synonymous with the TEMPER variable. Both refer to the<br />

temperature of the circuit.<br />

If TNOM is not specified on a model, the global TNOM is used. If TEMP is not specified on a<br />

model, the global .TEMP is used (or global TNOM if global .TEMP not specified).<br />

To dynamically change temperature you can define a temperature source as a voltage source<br />

and specify option VARTEMP to vary simulation temperature by following the source<br />

variation. See option “VARTEMP” in the Eldo Reference Manual.<br />

Temperature can be dynamic as well as static, and can be specified through a PWL source.<br />

Examples<br />

Differences between TNOM and TEMP<br />

The difference between TNOM (model reference temperature) and TEMP (simulation<br />

temperature) is shown in the examples below:<br />

The following example assumes that devices using model foo1 will use model parameters<br />

updated for a temperature of 30°C. Knowing that the parameters specified in the .MODEL<br />

statement are given for a temperature of 25°C (through the TNOM option) the model<br />

parameters will be updated accordingly. Devices using model foo2 will use model parameters<br />

for the nominal temperature of 25°C. The rest of the circuit will be simulated at 10°C.<br />

.model foo1 temp=30 vto=1<br />

.model foo2 vto=1<br />

.option tnom=25<br />

.temp 10<br />

The following example assumes that devices using model foo will use model parameters<br />

updated for a temperature of 30°C. Knowing that the parameters specified in the .MODEL<br />

statement are given for a temperature of 25°C (through the TNOM option) the model<br />

parameters will be updated accordingly. The rest of the circuit will be simulated at 25°C<br />

through the TNOM option.<br />

.model foo temp=30 vto=1<br />

.option tnom=25<br />

In the following example, a nominal temperature of 20°C is used for model foo1, a nominal<br />

temperature of 25°C is used for model foo2, and a nominal temperature of 30°C is used for<br />

foo3.<br />

Eldo® User's Manual, 15.3 289


Running Parametric Analyses<br />

Temperature Handling<br />

.model foo1 tnom=20 vto=1<br />

.model foo2 vto=1<br />

.model foo3 tmod=30 vto=1<br />

.option tnom=25<br />

DTEMP and TEMPER examples<br />

In this example, the DTEMP parameter sets the temperature of the capacitor 10°C above the<br />

circuit temperature.<br />

c1 1 2 cmodel1 tc1=25e-3 m=2 dtemp=10<br />

.model cmodel1 c cox=1e-12 capsw=1e-12 del=0.01 l=1 w=1<br />

.TEMP 70<br />

The TEMPER variable may be used in conjunction with VALUE={EXPR} in resistors,<br />

capacitors and inductors to specify devices whose values vary with temperature.<br />

The following example specifies a capacitor Cvariable connected between nodes 3 and 7 and its<br />

value defined as the nominal capacitance C0 multiplied by (1+ 0.002 multiplied by the square of<br />

the current simulation temperature TEMPER). The TEMPER variable may also be used in<br />

expressions for model parameters.<br />

Cvariable 3 7 VALUE={C0*(1+0.002*(TEMPER^2))}<br />

The following example shows how the DTEMP parameter is used to specify a difference<br />

between the circuit temperature and the subcircuit instance temperature. In this example Eldo<br />

will assume that the temperature of devices inside X1 will be 40 + 10 = 50 °C:<br />

.subckt r 1 2<br />

r1 1 2 1 tc1=1<br />

.ends<br />

i1 1 0 1<br />

x1 1 0 r dtemp = 10<br />

.TEMP 40<br />

.op<br />

.end<br />

See Also<br />

• Resistor, Capacitor, and Inductor in the Eldo Reference Manual<br />

• Diode Models, BJT Models, MOSFET Models in the Eldo Reference Manual<br />

• Subcircuit Instance in the Eldo Reference Manual<br />

Related Topics<br />

Assigning Parameter Values<br />

Electrothermal Simulation<br />

290<br />

Eldo® User's Manual, 15.3


Running Parametric Analyses<br />

Assigning Parameter Values<br />

Assigning Parameter Values<br />

Use the .PARAM command to assign values to parameter variables used in model and device<br />

instantiation statements.<br />

The following types of parameter statements are supported:<br />

• Simple description<br />

• Algebraic description<br />

• Character string assignment<br />

• User-defined function<br />

• Monte Carlo analysis<br />

Parameter Scoping Rules<br />

Option PARHIER controls the priorities for parameters. When PARHIER is GLOBAL or<br />

LOCAL, then the parameter priorities adopted in subcircuit instances (X statements) are<br />

performed as if the operations were executed inside the subcircuit. The following rules apply:<br />

When PARHIER=GLOBAL, the priority is the following:<br />

1. .PARAM statement at a higher level<br />

2. Subcircuit instantiation (X instance)<br />

3. .SUBCKT definition<br />

When PARHIER=LOCAL, the priority is:<br />

See Also<br />

1. Subcircuit instantiation (X instance)<br />

2. .SUBCKT definition<br />

3. .PARAM statement<br />

• .PARAM in the Eldo Reference Manual<br />

• Options PARAM_BEFORE_USE and PARHIER in the Eldo Reference Manual<br />

Related Topics<br />

.STEP Sweeping Parameters Examples<br />

Eldo® User's Manual, 15.3 291


Running Parametric Analyses<br />

Sweeping Parameters Examples<br />

Sweeping Parameters Examples<br />

To perform several simulations while sweeping one or several circuit parameters (multiple<br />

sweep) use the .STEP command.<br />

The following types of sweeps are supported:<br />

• Temperature sweep specified by TEMP keyword. Dipole (R, C, L) component whose<br />

value is swept specified by the DIPOLE name.<br />

.STEP TEMP | DIPOLE INCR_SPEC<br />

• MOS—name of the MOS component whose W or L parameter is swept:<br />

.STEP MOS W|L INCR_SPEC<br />

• Parameter PARAM_NAME of model MNAME is swept:<br />

.STEP MNAME PARAM_NAME INCR_SPEC<br />

• PAR_NAME is a parameter name defined through the .PARAM command:<br />

.STEP PARAM PARAM_NAME INCR_SPEC<br />

• To sweep a device parameter:<br />

.STEP E (device, parameter_name) INCR_SPEC<br />

• To sweep a parameter defined through .PARAM:<br />

.STEP P (global_parameter) INCR_SPEC<br />

• To sweep a model parameter:<br />

.STEP M (model_name, parameter_name) INCR_SPEC<br />

• To sweep different variants of a library:<br />

.STEP LIB (lib_name) INCR_SPEC<br />

.STEP Sweeping Parameters Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

Nested Sweeps Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295<br />

.DATA Parameter Sweeps Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296<br />

.STEP Sweeping Parameters Examples<br />

Some examples of sweeping parameters with the .STEP command.<br />

• This example specifies that the value of resistor r1 will be swept from 1kΩ to 2kΩ with<br />

a step of 1kΩ, and then from 2kΩ to 4kΩ with a step of 500Ω:<br />

292<br />

Eldo® User's Manual, 15.3


Running Parametric Analyses<br />

.STEP Sweeping Parameters Examples<br />

.param r1 1k<br />

*...<br />

.step param r1 1k 2k 1k, 2k 4k 500<br />

• This example shows how a non-primitive parameter p1 can be specified:<br />

.param p2=100k<br />

.param p1=sqrt(p2)<br />

*...<br />

.step param p1 1k 5k 1k<br />

• Temperature sweep:<br />

.step temp 25 40 2<br />

• Parameter RB of model qmod sweep:<br />

.step qmod rb 80 110 10<br />

• Parameter sweep:<br />

.param p2=100k<br />

.param p1=sqrt(p2)<br />

. . .<br />

.step param p2 1k 5k 1k<br />

Sweep cannot be done on p1 because p1 is not a primitive.<br />

• Subcircuit component sweep:<br />

.step x1.c1 1p 10p 1p<br />

• Conditional parameter and parameter sweep:<br />

.param p1 = 1 p2 = 2<br />

.param p3 = valif ( p1 > p2 , p1 + 1.5 , p2 + 1.5 )<br />

.param p4 = eval ( p1 > p2 ? P1 + 1.5 : p2 + 1.5 )<br />

.step param p1 list 1 2 3<br />

The following examples further show how the .STEP command can be used to sweep<br />

Parameters, Elements, Models, or Models attached to specific Elements:<br />

.PARAM P1=1u<br />

.MODEL NMOS NMOS LEVEL=1 VTO=2<br />

M1 p1 p2 p3 p4 NMOS w=p1 l=3u<br />

M2 p1 p2 p3 p4 NMOS w=p1 l=3u<br />

*...<br />

.end<br />

After the above specification, the following four .STEP commands are valid:<br />

.STEP P(P1) 1u 10u 1u<br />

Parameter P1 varies from 1μ to 10μ in steps of 1μ.<br />

Eldo® User's Manual, 15.3 293


Running Parametric Analyses<br />

.STEP Sweeping Parameters Examples<br />

.STEP E(M1,l) 3u 4u 1u<br />

Length of Element M1 varies from 3μm to 4μm in steps of 1μm.<br />

.STEP M(NMOS,VT0) 1 3 1<br />

Parameter VT0 of model NMOS varies from 1 to 3 in steps of 1.<br />

.STEP EM(M2,VT0) 1 4 1<br />

A private model will be assigned to M2. The VT0 of model attached to M2 will vary from 1 to 4<br />

in steps of 1; the VTO of model attached to M1 will remain unchanged.<br />

The following example shows a parameter vector sweep, with all parameters taking their values<br />

from lists. Eldo will sweep parameters IG1 and LR1 over four simulations. The first simulation<br />

with IG1 at 10u and LR1 at 1000u. The last simulation with IG1 at 100u and LR1 at 100u.<br />

.param IG1=10u LR1=1000u<br />

.step (p(IG1),p(LR1)) LIST (10u, 1000u) (20u, 500u) (50u, 200u)<br />

+ (100u, 100u)<br />

i1 1 0 ig1<br />

r1 1 0 '10e6*lr1'<br />

.plot dc v(1)<br />

.dc<br />

The following example shows how the .STEP command is used to make several Eldo runs, each<br />

of them using a different variant of the libraries, using the keyword LIB(libname):<br />

.LIB mylib TYP<br />

*...<br />

.STEP LIB(mylib) TYP MIN MAX<br />

.END<br />

Three simulations will be performed: one using the variant TYP of mylib, another one using the<br />

variant MIN, and a last one using the variant MAX.<br />

Note<br />

The LIB specification can be used with any other specification.<br />

TYP, MIN, and MAX are not keywords, but are the character strings that can appear as the<br />

second arguments of the .LIB command (.LIB FNAME [LIBTYPE]). Usually, variant names<br />

are TYP, MIN, and MAX, but they can be any string.<br />

.STEP P(P1) 1 2 0.5 LIB(mylib) TYP MIN MAX<br />

Here, Eldo will perform three simulations:<br />

• One with both P1=1.0 and mylib using variant TYP.<br />

• One with both P1=1.5 and mylib using variant MIN.<br />

294<br />

Eldo® User's Manual, 15.3


Running Parametric Analyses<br />

Nested Sweeps Examples<br />

• One with both P1=2.0 and mylib using variant MAX.<br />

Related Topics<br />

Sweeping Parameters Examples<br />

Nested Sweeps Examples<br />

.DATA Parameter Sweeps Examples<br />

Nested Sweeps Examples<br />

You can define several .STEP commands with an unlimited number of nesting levels. Multiple<br />

sweeps can change concurrently.<br />

• This example specifies that the value of resistor R22 will be swept from 20k to 100k,<br />

with an increment of 1k => 81 points, parameter COX will be swept from 0.4m to 0.3m<br />

at the same time with 81 increment points. R22 and COX are varying together and 81<br />

simulations are performed.<br />

.STEP E(R22,R) 20k 100k 1k M(MOS1,COX) 0.4m 0.3m<br />

• This examples specifies that 81 simulations for the first .step, 31 simulations for the<br />

second .step, with a total of 81 x 31 simulations performed.<br />

.STEP E(R22,R) 20k 100k 1k M(MOS1,COX) 0.4m 0.3m<br />

.STEP P(p1) 1 1000 DEC 10<br />

• In this example 3 simulations will be performed. The first one with p1=1 and mylib<br />

using variant min, the second one with p1=1.5 and mylib using variant typ, and the third<br />

one with p1=2 and mylib using variant max.<br />

.STEP P(p1) 1 2 0.5 LIB(mylib) LIST min typ max<br />

• In the following example, two simulations will be performed. The first with R1 value of<br />

20k, TEMP is 27 and uses the LIB variant typ for file corna.lib. The second with R1<br />

value set to 10k, a TEMP value of −40 and the LIB variant fast of the file corna.lib.<br />

.STEP PARAM (E(R1,R) TEMP LIB(corna.lib)) LIST<br />

+ (20k 27 typ)<br />

+ (10k -40 fast)<br />

Related Topics<br />

Sweeping Parameters Examples<br />

.DATA Parameter Sweeps Examples<br />

Eldo® User's Manual, 15.3 295


Running Parametric Analyses<br />

.DATA Parameter Sweeps Examples<br />

.DATA Parameter Sweeps Examples<br />

The .DATA command simultaneously defines a set of parameters. For example:<br />

.TRAN 1n 10n SWEEP DATA=datatran<br />

.DATA datatran p1 p2 p3<br />

+ 1.0 3.0 4.0<br />

+ 2.0 5.0 7.0<br />

.ENDDATA<br />

Here follow some examples of specifying multiple external files to be processed either<br />

sequentially or in parallel:<br />

.data example1 MERGE<br />

+ file=data1.inc col1=3 col2=2<br />

+ file=data2.inc colA=1 colB=3<br />

+ out=example1.inc<br />

.enddata<br />

After the first file name, the names of the columns to be created and the index where the data<br />

comes from are specified. The resulting .DATA is created using the merge of the two files:<br />

1 2 3<br />

4 5 6<br />

7 8 9<br />

10 20 30<br />

40 50 60<br />

70 80 90<br />

The specification col1=3 col2=2 and colA=1 colB=3 literally means: the first column is named<br />

col1 and its values come from the third column of merged files; the second column is named<br />

col2 and its values come from the second column of merged files. The resulting .DATA will be:<br />

.DATA example1<br />

+ col1 col2 colA colB<br />

+ 3 2 1 3<br />

+ 6 5 4 6<br />

+ 9 8 7 9<br />

+ 30 20 10 30<br />

+ 60 50 40 60<br />

+ 90 80 70 90<br />

.enddata<br />

The following example shows the LAMINATED specification for processing in parallel:<br />

.data example2 LAM<br />

+ file=data1.inc col1=3 col2=2<br />

+ file=data2.inc colA=1 colB=3<br />

+ out=example2.inc<br />

.enddata<br />

296<br />

Eldo® User's Manual, 15.3


Running Parametric Analyses<br />

.DATA Parameter Sweeps Examples<br />

As before, the names of the columns to be created and the index where the data comes from are<br />

specified. However, unlike the merge form, values come from the original files so in this case<br />

you will notice that the resulting .DATA will be different as follows:<br />

.DATA example2<br />

+ col1 col2 colA colB<br />

+ 3 2 10 30<br />

+ 6 5 40 60<br />

+ 9 8 70 90<br />

.enddata<br />

See Also<br />

• .PARAM in the Eldo Reference Manual<br />

• .STEP in the Eldo Reference Manual<br />

• .DATA in the Eldo Reference Manual<br />

Related Topics<br />

Sweeping Parameters Examples<br />

Eldo® User's Manual, 15.3 297


Running Parametric Analyses<br />

Altering Netlist Data For Simulation Reruns<br />

Altering Netlist Data For Simulation Reruns<br />

You can rerun simulations with a modified netlist using the .ALTER command. An alter block<br />

consists of Eldo element, subcircuit, command, and comment statements. The alter block ends<br />

with the next .ALTER or .END command. All Eldo statements in an alter block are backsubstituted<br />

in the original netlist except for some commands which are always added to the<br />

netlist with no substitution attempted. The circuit_name.chi ASCII log file contains a trace of<br />

all modifications made.<br />

The way Eldo processes a netlist with .ALTER blocks is as follows:<br />

1. Eldo reads the netlist up to the first .ALTER statement and performs the analyses. This<br />

is the first simulation run.<br />

2. Eldo then reads the block of statements between the first .ALTER and .END (or another<br />

.ALTER) statements.<br />

3. Eldo modifies the netlist using these alter block statements.<br />

4. Eldo reruns the simulation with the modified netlist.<br />

For multiple .ALTER blocks, the initial netlist is always as the reference to be altered, not the<br />

result of the previous .ALTER command. If there is an error in a .ALTER block, it will be<br />

skipped and the next .ALTER block will be used.<br />

To run a specific .ALTER block without first running the main netlist, invoke Eldo with the<br />

-alter argument together with the corresponding name or index of the alter block required.<br />

Specifying an index of 0 means the nominal run without any alters.<br />

Multiple indexes can be specified without separators. When Eldo identifies -alter, it interprets<br />

the following arguments as indexes until another argument is found (beginning with “-”). For<br />

example:<br />

<strong>eldo</strong> foo.cir -alter 2 5 10 11 12 13 20 21 22<br />

Tip<br />

See the “.ALTER” command and the “-alter” command-line argument in the Eldo<br />

Reference Manual.<br />

Removing .EXTRACT Statements from a Simulation Rerun. . . . . . . . . . . . . . . . . . . . . 299<br />

Controlling Alter Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299<br />

.ALTER Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300<br />

298<br />

Eldo® User's Manual, 15.3


Running Parametric Analyses<br />

Removing .EXTRACT Statements from a Simulation Rerun<br />

Removing .EXTRACT Statements from a Simulation<br />

Rerun<br />

To remove .EXTRACT commands specified in the nominal netlist from the subsequent<br />

simulation rerun (.ALTER) use the .FILTER command. For example, to remove the undesired<br />

.EXTRACT labeled foo inside the .ALTER specify:<br />

...<br />

.extract label=foo<br />

.alter<br />

.filter extract label=foo pass(foo)<br />

See Also<br />

• .ALTER in the Eldo Reference Manual<br />

• .FILTER in the Eldo Reference Manual<br />

Related Topics<br />

Controlling Alter Blocks<br />

.ALTER Examples<br />

Controlling Alter Blocks<br />

Use option ALTER_NOMINAL_TEXT=label to attach a label to the nominal run. The label<br />

used is the same as that specified in the command, for example: .ALTER label. This label is<br />

printed in the .chi/.aex file or attached to the JWDB waveforms in the parameter table of<br />

compound waveforms. The label string should be enclosed between double quotes if it contains<br />

space characters.<br />

Use option ALTER_SUFFIX to switch the naming convention for swept waves used in<br />

.ALTER statements between: xxx and xxx_alter:XX.<br />

For JWDB output, the alter index number can be viewed when highlighting waveforms in the<br />

EZwave Waves window.<br />

Error handling of multiple run netlists can be managed with option STOPONFIRSTERROR.<br />

When set to 2, the first error stops the simulation even if the netlist file contains .ALTER<br />

statements for multiple simulation runs. When set to 1, if the netlist file contains .ALTER<br />

statements, Eldo will stop on the first .ALTER that has an error, but continue with the remaining<br />

.ALTER statements.<br />

To replace one file by another one when using the Eldo re-run facility, use the option ALTINC.<br />

This forces Eldo to replace the first .INCLUDE statement found in an input netlist by the first<br />

.INCLUDE statement found in the .ALTER section of the netlist.<br />

Eldo® User's Manual, 15.3 299


Running Parametric Analyses<br />

.ALTER Examples<br />

By default, Eldo substitutes the .STEP commands in the main netlist by those found in .ALTER<br />

statements. To append .STEP commands in .ALTER statements, instead of substituting, use<br />

option ALTER_ADDSTEP.<br />

.PARAM statements present in a .ALTER section are systematically added at the end of the<br />

netlist being created for the current ALTER run. Eldo will not attempt to replace the parameter<br />

name; it is recommended to avoid using .ALTER to replace parameters inside .SUBCKT<br />

statements.<br />

By default, .ALTER restarts from the original netlist, in compat mode .ALTER is cumulative,<br />

see “Commands in Compat Mode” on page 168.<br />

See Also<br />

• .ALTER in the Eldo Reference Manual<br />

Related Topics<br />

Altering Netlist Data For Simulation Reruns<br />

.ALTER Examples<br />

.ALTER Examples<br />

Examples of rerunning simulations with a modified netlist using the .ALTER command.<br />

This example specifies two simulation runs. Both perform an AC analysis but certain<br />

component values, the number of points and stop frequency of the AC analysis are changed<br />

using the .alter command for the second run.<br />

alter command example<br />

r1 1 2 1k<br />

r2 2 0 1k<br />

c1 2 0 1n<br />

.ac dec 10 200 1000meg<br />

vin 1 0 ac 1<br />

.plot ac vdb(2) (-90, 0)<br />

.alter<br />

r1 1 2 10k<br />

c1 2 0 100p<br />

.ac dec 15 200 1500meg<br />

.end<br />

This example shows how to replace one included file with another one when using the Eldo rerun<br />

facility with the option ALTINC. The new_models file will be included in the re-run<br />

simulation instead of models.<br />

300<br />

Eldo® User's Manual, 15.3


Running Parametric Analyses<br />

.ALTER Examples<br />

.include models<br />

.option altinc<br />

r1 1 0 rval<br />

v1 1 0 dc 1<br />

.extract dc i(r1)<br />

.dc<br />

.alter<br />

.include new_models<br />

The example below demonstrates the use of the KEY parameter in conjunction with the<br />

.ALTER command. This command sequence causes three simulations to be performed always<br />

with library /work/bip/mymod typ.<br />

In the first simulation, library /work/mos/mymod typ is used.<br />

In the second simulation, library /work/mos/mymod best is used.<br />

In the third simulation, library /work/private/mymod typ is used.<br />

...<br />

.lib key=K1 /work/bip/mymod typ<br />

.lib key=K2 /work/mos/mymod typ<br />

...<br />

.alter<br />

.lib key=K2 /work/mos/mymod best<br />

.alter<br />

.lib key=K2 /work/private/mymod typ<br />

.end<br />

This example shows how option ALTER_SUFFIX can be used to switch the naming convention<br />

for swept waves used in .ALTER statements between: xxx and xxx_alter:XX. Run the circuit<br />

with and without the option and look at the difference in results.<br />

Eldo® User's Manual, 15.3 301


Running Parametric Analyses<br />

Using Output Results From a Previous Simulation<br />

*.option alter_suffix.param VTEST1=1<br />

vdc 1 0 dc VTEST1<br />

vin 2 0 dc 0<br />

v2 4 0 dc 1<br />

etest 3 0 value={mult*(2-v(1,2)*v(1,4))}<br />

r1 3 0 rval<br />

.dc vin 0 2 0.1<br />

.step param VTEST1 0.5 1.5 0.1<br />

.plot dc i(r1)<br />

.extract label=imax max(i(r1))<br />

.extract label=imin min(i(r1))<br />

.defwave sweep TEST=meas(imax)<br />

.param RVAL=1k<br />

.param MULT=1<br />

.alter first<br />

.param RVAL=1.3k<br />

.param MULT=1.3<br />

.alter second<br />

.param RVAL=0.7k<br />

.param MULT=1.3<br />

.alter<br />

.param RVAL=0.7k<br />

.param MULT=0.7<br />

.alter fourth<br />

.param RVAL=1.3k<br />

.param MULT=0.7<br />

.end<br />

Tip<br />

See “.ALTER” in the Eldo Reference Manual.<br />

Related Topics<br />

Altering Netlist Data For Simulation Reruns<br />

Using Output Results From a Previous<br />

Simulation<br />

The .CHRSIM command enables you to use the output of previous simulations as input to the<br />

current simulation. The previous simulation data must have been generated by a DC sweep or a<br />

transient analysis. The simulator assigns to the node IN of the current simulation, the output<br />

obtained at node OUT in the file FILE.wdb.<br />

302<br />

Eldo® User's Manual, 15.3


Running Parametric Analyses<br />

Using Output Results From a Previous Simulation<br />

Tip<br />

See “.CHRSIM” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 303


Running Parametric Analyses<br />

Using Output Results From a Previous Simulation<br />

304<br />

Eldo® User's Manual, 15.3


Chapter 8<br />

Specifying Simulation Output<br />

This chapter describes how to use output commands and variables to display simulation results<br />

in the time and frequency domains.<br />

Output Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306<br />

Output Commands Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306<br />

Plotting, Printing and Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

Files Created . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

Types of Waveforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309<br />

Monitoring of Hierarchical Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309<br />

Using Wildcards for Plotting and Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310<br />

Plotting, Printing and Probing States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

Plotting Internal Pin Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314<br />

Complex Modifiers and Initial Formatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314<br />

Compound Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

Plotting an Analog Signal as a Digital Bus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

X-Axis of Waveforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316<br />

Tabular Listing Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317<br />

Plotting Transmission Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317<br />

Dynamically Adding Voltage/Current Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318<br />

Output Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320<br />

Extracting Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321<br />

.EXTRACT Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322<br />

Plot and Print Quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323<br />

Extract Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />

Extract Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />

Extraction Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327<br />

Extract Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329<br />

Defining Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336<br />

Examples of Defining Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337<br />

Safe Operating Area (SOA) Checks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341<br />

Plotting Safe Operating Area Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341<br />

Safe Operating Area Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345<br />

High Impedance Node Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />

How to Enable High Impedance Node Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />

High Impedance Node Check Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350<br />

Limiting Output Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352<br />

Limiting the Size of Transient Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353<br />

Eldo® User's Manual, 15.3 305


Specifying Simulation Output<br />

Output Types<br />

Incremental Saving of the JWDB Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354<br />

Output Types<br />

Eldo can generate three types of output:<br />

• Graphical output (.wdb) for the EZwave waveform viewer.<br />

• Measurements from the results of simulation; either scalar or vector.<br />

• Tables and reports in the ASCII output (.chi) file and additional files.<br />

Related Topics<br />

Output Commands Overview<br />

Analyzing Simulation Results<br />

Output Commands Overview<br />

The output commands define which simulation results will be written to the output files for<br />

display.<br />

Output commands include:<br />

• .EXTRACT<br />

A fundamental and very powerful command in Eldo to extract information from the<br />

various analyses and waveforms using a combination of arithmetic expressions or predefined<br />

functions (.MEAS is also supported as an alternative).<br />

• .PLOT<br />

Specifies which simulation results have to be kept by the simulator for graphical<br />

viewing and post-processing. Results are written to .wdb binary output files for postprocessing.<br />

• .PRINT<br />

Defines the contents of a tabular listing of any number of output variables. Results are<br />

written to the .chi file in ASCII.<br />

• .PROBE<br />

Writes simulation results of specified objects to .wdb binary output files for postprocessing.<br />

• .MEAS<br />

Alternative to the more powerful .EXTRACT command.<br />

306<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Output Commands Overview<br />

• .DEFWAVE<br />

Defines a new waveform by relating previously defined waveforms and nodes. The<br />

resulting waveform can be used in .EXTRACT commands with the results being listed<br />

to the ASCII output (.chi) file, or may be plotted or printed using the .PLOT and .PRINT<br />

commands.<br />

Each output command specifies the output variables and type of result to be displayed, for<br />

example DC, AC, TRAN, NOISE. Depending on the analysis, Eldo will generate different types<br />

of output, for example some extract functions are specific to Monte Carlo analysis, see “Post-<br />

Analysis of Monte Carlo Simulations” on page 463. The type of analysis specified with .PLOT<br />

has an impact on what Eldo generates, for example specifying a NOISE plot will generate<br />

different results to an AC plot.<br />

Related Topics<br />

Plotting, Printing and Probing<br />

Output Variables<br />

Extracting Information<br />

Analyzing Simulation Results<br />

Eldo® User's Manual, 15.3 307


Specifying Simulation Output<br />

Plotting, Printing and Probing<br />

Plotting, Printing and Probing<br />

This section describes the types of output files generated by Eldo when plotting, printing and<br />

probing. It refers to the main three commands .PLOT, .PRINT, and .PROBE, even when<br />

generically referring to plotting.<br />

Files Created. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

Types of Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309<br />

Monitoring of Hierarchical Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309<br />

Using Wildcards for Plotting and Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310<br />

Plotting, Printing and Probing States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

Plotting Internal Pin Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314<br />

Complex Modifiers and Initial Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314<br />

Compound Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

Plotting an Analog Signal as a Digital Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

X-Axis of Waveforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316<br />

Tabular Listing Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317<br />

Plotting Transmission Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317<br />

Files Created<br />

The quantities listed in a .PLOT command are written to binary output files (.wdb) for viewing<br />

with the EZwave waveform viewer. Saved windows files .swd are created with a .wdb database<br />

and contain information on specific graph windows such as size or position. By default, the<br />

quantities listed in a .PLOT command are not written to the ASCII .chi output file. This avoids<br />

creating huge .chi output files in the case of large simulations.<br />

Eldo generates .wdb by default, however other formats can be generated. See “Output Files<br />

Generated” on page 358.<br />

When using .PRINT, simulation results are written to the .chi log file in ASCII format. When<br />

using .PROBE, the set of signals to be monitored is specified in the same way, but results are<br />

written to binary output files (.wdb) meaning the simulated results are available for postprocessing.<br />

Binary storage saves significant disk space and is faster to read/write than ASCII.<br />

.PROBE and .PLOT both dump waves to a database but .PLOT also adds some information for<br />

“plot combinations,” which means the ability to group waves into graphs, use Smith charts, and<br />

change wave representation (scattered, histogram, and so on).<br />

Related Topics<br />

Plotting, Printing and Probing<br />

308<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Types of Waveforms<br />

Types of Waveforms<br />

This section describes the types of waveforms generated by Eldo.<br />

Plotting Output Variables<br />

Many different simulation results can be created by Eldo. The simulator can output simple node<br />

voltages, but also currents through devices, currents through device or subcircuit pins, power<br />

quantities, S parameters, internal variables from device models, and so on. All these results are<br />

direct raw results from a simulation. For example:<br />

.PLOT TRAN V(OUT)<br />

.PLOT DC ISUB(XBIAS.VOUT)<br />

Plotting Extractions<br />

The .PLOT command may also be used to plot extraction results. A flexible language exists in<br />

Eldo to extract characteristics from raw simulation results (for example the maximum value of a<br />

waveform, or the time at which a given threshold is crossed by a waveform, and so on). See<br />

“Extracting Information” on page 321 and “Plot and Print Quantities” on page 323.<br />

Plotting Templates<br />

The .PLOT command combined with the .DEFWAVE command can be used to generate socalled<br />

template waveforms. Using .PLOT, these templates can be displayed together with the<br />

simulation results. See “Defining Waveforms” on page 336.<br />

Related Topics<br />

Monitoring of Hierarchical Nodes<br />

Plotting, Printing and Probing<br />

Monitoring of Hierarchical Nodes<br />

This output format is used to specify nodes that lie within subcircuits. The node itself cannot be<br />

referenced directly from the ‘top-level’ of the circuit and so it must be addressed through the<br />

levels of the subcircuit by separating elements with periods (.) in the output control statement.<br />

The example below illustrates this output format.<br />

.subckt sc1 n10 n12<br />

r10 n10 n11 0.2<br />

x2 n11 n12 sc2<br />

.ends sc1<br />

.subckt sc2 n20 n22<br />

r20 n20 n21 0.1k<br />

r22 n21 n22 0.1k<br />

.ends sc2<br />

x1 a b sc1<br />

.print tran v(x1.x2.n21) v(a) v(b)<br />

Eldo® User's Manual, 15.3 309


Specifying Simulation Output<br />

Using Wildcards for Plotting and Probing<br />

The above example specifies the output of three nodes. Node x1.x2.n21 is created as the second<br />

pin of resistor r20, which is an element of the subcircuit sc2, instantiated using instance x2,<br />

which is itself nested in the subcircuit sc1, instantiated using instance x1.<br />

Related Topics<br />

Using Wildcards for Plotting and Probing<br />

Plotting, Printing and Probing<br />

Using Wildcards for Plotting and Probing<br />

To analyze simulation results for huge circuits, and to display only part of the circuit, you can<br />

specify a .PLOT/.PROBE command with nodes defined via both hierarchy and wildcard<br />

characters. The wildcard (*) may be used to select any list of items for plotting/probing<br />

quantities such as voltage or current.<br />

If the wildcard * is specified, then Eldo enables it to be used in conjunction with ? and [ ] for<br />

matching characters (see “Special Characters” on page 312). If * is not in the specification, then<br />

? and [] are not supported; a warning will be generated. If you want to keep the [ ] inside the<br />

name specification and not have Eldo handle them as special characters, then specify .OPTION<br />

NOCMPUNIX or use the backslash delimiter.<br />

Note<br />

Option LIMPROBE can be specified to set the maximum number of nodes that may be<br />

monitored via the .PROBE command. By default, it is set to 10,000.<br />

Wildcards in Subcircuit Instances<br />

Subcircuit instances can be specified in the output command. A specific subcircuit node can be<br />

referenced or wildcards (*) can be used to select any list of items for probing quantities such as<br />

voltage or current. Subcircuit instances can be specified for keywords V, I, S, W, VX, IX, ISUB<br />

and POW. The following syntax is used to specify wildcards in subcircuit instances:<br />

V|I|S|W|VX|IX|ISUB|POW(.*)<br />

V|I|S|W|VX|IX|ISUB|POW(->*)<br />

When specifying parameters V, I, VX, IX, ISUB, POW with a subcircuit instance the -R<br />

parameter can also be specified to enter levels of hierarchy.<br />

V(Xnn.*) — Monitors the voltage on all of the nodes of subcircuit Xnn.<br />

S(Xnn.*) — Monitors the states on all of the nodes of subcircuit Xnn.<br />

S(Xnn.Ynn->*) — Monitors the states on all of the nodes of macromodel Xnn.Ynn.<br />

310<br />

Eldo® User's Manual, 15.3


Examples of Wildcard Usage in Subcircuit Instances<br />

• The below specifies that the node X1.1 will be probed:<br />

.PROBE TRAN V(X1.1)<br />

• To plot all nodes in subcircuit X1:<br />

.PLOT TRAN V(X1.*)<br />

• To store all currents in devices internal to the Xbias instance:<br />

.PROBE TRAN I(Xbias.*)<br />

Specifying Simulation Output<br />

Using Wildcards for Plotting and Probing<br />

• To plot all the nodes of subcircuit X1 but not probe internal nodes of the subcircuit<br />

hierarchy:<br />

.PLOT TRAN V(X1.*)<br />

• Use the -R parameter to probe all internal and external nodes of subcircuits beginning<br />

with the name X1:<br />

.PROBE TRAN -R V(X1.*)<br />

This can also be performed using the VX keyword.<br />

• To probe all nodes of subcircuit X1 and enter inside the n level of hierarchy under X1<br />

for plotting nodes:<br />

.PROBE TRAN -Rn V(X1.*)<br />

If n is 0 this specifies the top level.<br />

• To plot all nodes of subcircuit X1 and enter inside the n level of hierarchy under X1 for<br />

plotting nodes.<br />

.PLOT TRAN -R LEVEL=n V(X1.*)<br />

If n is 0 this specifies the top level. Equivalent to -Rn.<br />

Note<br />

.PLOT TRAN V(X1.*) is equivalent to: .PLOT TRAN -R0 V(X1.*)<br />

• VX, IX and ISUB can be used to probe voltages and currents on all subcircuit input<br />

nodes within the hierarchy. For example, to probe the current across all input nodes of<br />

subcircuits beginning with the name X1:<br />

.PROBE TRAN IX(X1.*)<br />

• Waveform definitions (defwaves) and digital quantities can also be probed for subcircuit<br />

instances using wildcards:<br />

Eldo® User's Manual, 15.3 311


Specifying Simulation Output<br />

Using Wildcards for Plotting and Probing<br />

o<br />

To probe all internal states (denoted by the syntax “->”) of macromodel y1 inside<br />

subcircuit x1:<br />

.PROBE TRAN S(x1.y1->*)<br />

o<br />

To probe all waveform definitions (defwaves) for subcircuits beginning with the<br />

name x1:<br />

Special Characters<br />

.PROBE TRAN W(x1.*)<br />

If the name used in a .PLOT/.PROBE command contains brackets, ( [ ] ), or the “?” character,<br />

these are interpreted as special characters when the wildcard character “*” is used (see<br />

Table 8-1). By default, according to UNIX convention, brackets are interpreted as special<br />

characters defining a wildcard expression. These special characters may be overridden by using<br />

the delimiter backslash character “\”, which removes the special function of the character that<br />

immediately follows it, or by specifying .OPTION NOCMPUNIX to change the interpretation.<br />

For example, the following only returns names that begin with X1.*, because, according to<br />

UNIX convention, X[1].* means all names beginning with “X” followed by the character “1”:<br />

.PROBE tran V(X[1].*)<br />

Therefore, to display all nodes beginning with V(X[1].*) either of the following should be used:<br />

or:<br />

.option NOCMPUNIX<br />

.PROBE tran V(X[1].*)<br />

.PROBE tran V(X\[1\].*)<br />

The following table contains a listing of the special characters that can be used with the .PLOT/<br />

.PROBE command.<br />

Table 8-1. Special Characters for Plotting and Probing<br />

Character Description<br />

* Matches any sequence of characters<br />

? Matches any single character<br />

[abcd]<br />

Matches any character in the specified set<br />

[-abcd]<br />

Matches any character in the specified range, for example [A-Z]<br />

matches all alphabetical characters<br />

[!abcd] Matches any character not in the specified set, for example [!0-9]<br />

matches all characters which are not digits<br />

312<br />

Eldo® User's Manual, 15.3


See Also<br />

• .PLOT command in the Eldo Reference Manual<br />

Specifying Simulation Output<br />

Plotting, Printing and Probing States<br />

• Options LIMPROBE and NOCMPUNIX in the Eldo Reference Manual<br />

Related Topics<br />

Plotting, Printing and Probing States<br />

Plotting, Printing and Probing<br />

Output Variables<br />

Limiting Output Information<br />

Plotting, Printing and Probing States<br />

To monitor or plot an internal state of a device, use the following syntax:<br />

.PLOT analysis S(device->state)<br />

For example, to monitor In for a given transistor Q1, specify the following in the netlist for DC,<br />

AC or TRAN analyses respectively:<br />

.PLOT DC S(Q1->In)<br />

.PLOT AC S(Q1->In)<br />

.PLOT TRAN S(Q1->In)<br />

For example, to monitor the HICUM Level0 transistor device temperature change due to selfheating<br />

in a transient simulation, specify:<br />

.plot tran s(q1->vthermal)<br />

For example, to monitor the TFT Amorphous-Si MOSFET device transconductance in a DC<br />

simulation, specify:<br />

.plot dc s(M1->Gm)<br />

Internal states specific to each device model are documented in the Printing/Plotting States<br />

tables in the Eldo Device Equations Manual.<br />

Tip<br />

See “.PLOT” in the Eldo Reference Manual.<br />

Related Topics<br />

Plotting Internal Pin Values<br />

Plotting, Printing and Probing<br />

Eldo® User's Manual, 15.3 313


Specifying Simulation Output<br />

Plotting Internal Pin Values<br />

Plotting Internal Pin Values<br />

To measure the intrinsic value of a pin you use the same syntax as for measuring its extrinsic<br />

value. However, you use an index number greater than the number of pins available that<br />

corresponds to the pins position. For example, the source voltage pin is the third pin of a<br />

MOSFET and there are four pins in total. Therefore, to obtain the intrinsic source voltage of this<br />

MOSFET you would use:<br />

.PLOT V(Mx.7)<br />

To obtain the intrinsic value of the drain current pin of a JFET you would use:<br />

.PLOT I(Jx.4)<br />

Note<br />

If the position number used is greater than the index available for the device it will return a<br />

value of zero.<br />

Related Topics<br />

Complex Modifiers and Initial Formatting<br />

Plotting, Printing and Probing<br />

Complex Modifiers and Initial Formatting<br />

Some results are real quantities, such as the currents and voltages from a transient analysis,<br />

while others are complex. In this case, real or imaginary parts, magnitude or phase or group<br />

delay, can be required by the <strong>user</strong>.<br />

Use option ACOUT to control how complex expressions VX(a,b) and IX(a,b) are computed in<br />

AC analysis for their decibel magnitude, magnitude, phase, and group delay values.<br />

It is also possible to specify some initial basic formatting of the results. For example, spectral or<br />

scattered display modes can be specified, instead of the default continuous-line mode. S, Y, Z<br />

parameters can be automatically displayed in a Smith chart, and so on. These optional<br />

specifications do not alter the raw data, they only tell the waveform viewer how to display the<br />

data initially.<br />

Tip<br />

See “.OPTION ACOUT” in the Eldo Reference Manual.<br />

Related Topics<br />

Compound Waveforms<br />

Plotting, Printing and Probing<br />

314<br />

Eldo® User's Manual, 15.3


Compound Waveforms<br />

Specifying Simulation Output<br />

Compound Waveforms<br />

Eldo can generate compound waveforms. This is a group of waveforms containing results of<br />

several simulations for the same “node.” They can be generated from multiple-run sweep<br />

analyses specified for example by .STEP or .ALTER commands.<br />

For an example, the EZwave output in Figure 8-1 shows three waveforms, each corresponding<br />

to a .ALTER:<br />

Figure 8-1. Compound Waveform Example<br />

Related Topics<br />

Plotting an Analog Signal as a Digital Bus<br />

Plotting, Printing and Probing<br />

Plotting an Analog Signal as a Digital Bus<br />

To enable the plotting of an analog signal as a digital bus, a setup command is required<br />

(.DEFPLOTDIG) to be used in conjunction with the VDIG parameter of the .PLOT command.<br />

.DEFPLOTDIG VTH1=2.2 VTH2=2.7<br />

.PLOT TRAN VDIG(n2)<br />

When .DEFPLOTDIG is used in conjunction with .PLOT VDIG, the signal node n2 is plotted<br />

as a digital curve and will only have values of “1” or “0”.<br />

• .DEFPLOTDIG [VTH[1]=VAL [VTH2=VAL]]<br />

Eldo® User's Manual, 15.3 315


Specifying Simulation Output<br />

X-Axis of Waveforms<br />

This is used as a precursor to VDIG to plot an analog curve as digital with reference to<br />

any stated threshold voltage(s).<br />

• VTH[1]=VAL<br />

If a voltage threshold is specified, the bus of an analog signal is plotted as a bus<br />

(hexadecimal format), else all the different signals of the bus are plotted separately in<br />

the waveform viewer as analog waves. (VTH and VTH1 are equivalent to ensure<br />

backwards compatibility.)<br />

• VTH2=VAL<br />

This can be used to plot the indeterminate value as shown below:<br />

o<br />

o<br />

When only VTH1 is given: If value < VTH then logic state 0. If value > VTH then<br />

logic state 1.<br />

When both VTH1 and VTH2 are given: If value < VTH1 then logic state 0. If VTH1<br />

< value < VTH2 then state X. If value > VTH2 then logic state 1.<br />

Related Topics<br />

Tip<br />

See “.DEFPLOTDIG” in the Eldo Reference Manual.<br />

X-Axis of Waveforms<br />

Plotting, Printing and Probing<br />

X-Axis of Waveforms<br />

In general, the created waveforms have their X-axis implicitly defined by the corresponding<br />

analysis. For example, the X-axis of a transient waveform is time, the X-axis of an AC<br />

waveform is frequency, and so on. The X-axis for a transient waveform is defined by the<br />

.TRAN tstep tmax command, it ranges from t=0 to t=tmax. The X-axis for an AC waveform is<br />

defined by the frequency points in the .AC command. DC and NOISE waveforms also inherit<br />

their X-axis from the corresponding analysis command (.DC or .NOISE).<br />

For all analyses but the transient analysis, the X-axis range and the spacing of points in the<br />

X-axis are thus predictable. For example, the frequency points in a .AC command are either<br />

listed explicitly or regularly spaced, in a predictable way. For transient analysis however, this is<br />

different. Eldo always uses a variable timestep algorithm, and the spacing of the timepoints<br />

where the circuit is solved is dictated by accuracy considerations only (see the Speed and<br />

Accuracy chapter). Thus the total number of timepoints is generally not predictable. By default,<br />

all computed timepoints are stored in the binary output files, so that any rapid change or glitch<br />

can be inspected visually in the waveform processor.<br />

However, when working with large circuits and/or long transient simulations and/or storing<br />

many waveforms, this may generate huge output files. The loading and post-processing of these<br />

316<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Tabular Listing Output<br />

huge output files by the waveform viewers may thus be slower. In extreme cases, this may also<br />

impact the simulation time, as writing gigabytes to a disk, possibly through a busy network,<br />

may take quite a while. To control this, see the discussion on the options available for Limiting<br />

the Size of Transient Output Files.<br />

In the case of .EXTRACT waveforms, the X-axis is defined in either of the following ways:<br />

• sweep parameter (for example .STEP, .TEMP)<br />

• .ALTER index or .MC run index<br />

In the case of multiple .STEP statements, the X-axis is defined by the last .STEP command. For<br />

example:<br />

.step param W 2u 10u 2u<br />

.step temp -25 75 25<br />

The extract waveforms will have temperature as the X-axis.<br />

.step temp -25 75 25<br />

.step param W 2u 10u 2u<br />

The extract waveforms will have width as the X-axis.<br />

Related Topics<br />

Tabular Listing Output<br />

Plotting, Printing and Probing<br />

Tabular Listing Output<br />

Use the .PRINTFILE command to define the contents of a tabular listing of any number of<br />

output variables, and dump them to the specified file in ASCII format or as a .DATA statement.<br />

Tip<br />

See “.PRINTFILE” in the Eldo Reference Manual.<br />

Related Topics<br />

Plotting Transmission Lines<br />

Plotting, Printing and Probing<br />

Plotting Transmission Lines<br />

Use the I(Txx.) syntax to print the current out of transmission lines:<br />

Eldo® User's Manual, 15.3 317


Specifying Simulation Output<br />

Dynamically Adding Voltage/Current Plots<br />

I(Txx.N1) I(Txx.N2) I(Txx.N3) I(Txx.N4)<br />

Related Topics<br />

Plotting, Printing and Probing<br />

Dynamically Adding Voltage/Current Plots<br />

It is possible to dynamically add .PLOT or .PROBE commands while a “batch” simulation is<br />

running (not interactive mode). This could be useful if a simulation takes days to run, and you<br />

realize when analyzing waveforms during the simulation that you need additional waveforms to<br />

be plotted. It is also possible to send these commands to simulations running on remote<br />

machines—simulations submitted to external dispatchers.<br />

The steps required to use the simulation manager functionality are as follows:<br />

Procedure<br />

1. Run a simulation with Eldo.<br />

By default, Eldo opens a communication port on the host it is running after a delay and<br />

not before the elaboration of the design is finished. The default delay value is set to 30s.<br />

This value can be modified with:<br />

.option CONNECT_DELAY=<br />

Once the port is opened the simulator creates an empty file in directory $HOME/.<strong>eldo</strong>/.<br />

This file is named after the host IP address and port number, for example:<br />

185.909.693.175:76. This file is removed once the simulator exits.<br />

Note<br />

To avoid the cost of port listening and file creation the simulation manager<br />

mechanism can be completely disabled with the Eldo command line argument -<br />

noconnect.<br />

2. Run the simulation manager with <strong>eldo</strong> -connect.<br />

To begin an interactive exchange, run the simulation session manager by entering on the<br />

local machine:<br />

<strong>eldo</strong> -connect<br />

Eldo will browse the directory $HOME/.<strong>eldo</strong>/ in search of running simulations. The<br />

active simulations are listed with their command line. A prompt is displayed enabling<br />

you to interact with the remote simulations with the available commands.<br />

3. Connect to a simulation.<br />

Use the connect command to open a communication channel with a simulation. When<br />

successful, the Simulation Connection Manager displays:<br />

318<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Dynamically Adding Voltage/Current Plots<br />

connection established, remote simulator is waiting for commands.<br />

When you connect to a simulation (Id1 for example), Active is displayed in the<br />

Connection column. If you then connect to a different simulation (Id2 for example), the<br />

Connection status of simulation Id1 changes to Opened and Id2 becomes Active. For<br />

example:<br />

+------------------------------------------------------------------------------------------<br />

| Id | Connection | Host | Simulator | Registration date | Input arguments<br />

+------------------------------------------------------------------------------------------<br />

| 1 | Opened | shamba | <strong>eldo</strong> | 2011-03-09 17:17:35 | test -compnet -outpath work<br />

| 2 | Active | shamba | <strong>eldo</strong> | 2011-03-09 17:17:37 | test<br />

| 3 | | shamba | <strong>eldo</strong> | 2011-03-09 17:18:19 | test<br />

| 4 | | shamba | <strong>eldo</strong> | 2011-03-09 17:24:06 | test -compnet -outpath work<br />

| 5 | | shamba | <strong>eldo</strong> | 2011-03-09 17:27:05 | test -compnet -outpath work<br />

| 6 | | shamba | <strong>eldo</strong> | 2011-03-09 17:42:30 | test -compnet -outpath work<br />

| | | | | |<br />

| | | | | |<br />

Once a simulation is connected Eldo will display the following in the simulation<br />

transcript:<br />

Note 54: Remote connection established. Simulation is suspended<br />

until connection is closed.<br />

4. Enter required .PLOT/.PROBE commands.<br />

For example:<br />

> .plot v(1)<br />

Each command entered is sent to the simulation and Eldo will verify the request. If the<br />

command is valid, the Simulation Connection Manager displays:<br />

Command successfully transmitted.<br />

Eldo will display the following in the simulation transcript:<br />

Note 57: Remote command received: .plot v(1)<br />

If the command is not valid, Eldo transmits any .PLOT/.PROBE related warnings back<br />

to the Simulation Connection Manager.<br />

You can also create a file of .PLOT/.PROBE commands and, using the load command<br />

of the Simulation Connection Manager, load the file content; each command is sent to<br />

the active simulation.<br />

5. Disconnect (or quit) to resume the simulation.<br />

Once a simulation is disconnected Eldo will resume simulation and display the<br />

following in the simulation transcript:<br />

Note 55: Remote connection closed. Simulation is resumed.<br />

Eldo® User's Manual, 15.3 319


Specifying Simulation Output<br />

Output Variables<br />

The waveform database will contain the dynamically added plots beginning at the time<br />

they were added.<br />

Related Topics<br />

Simulation Connection Manager<br />

Plotting, Printing and Probing<br />

Output Variables<br />

The output commands require output variables to plot analysis results for voltages, currents,<br />

conductances, capacitances, charges, power, noise, or device instance parameters.<br />

The output variables used by Eldo are divided into the following categories:<br />

• MOSFET Plotting and Printing<br />

• BJT Plotting and Printing<br />

• JFET Plotting and Printing<br />

• Diode Plotting and Printing<br />

• Common Plotting and Printing<br />

• Element Output<br />

• Two-port Parameters<br />

In most cases, the analysis type also needs to be specified, particularly when you have multiple<br />

types of analysis in the netlist file.<br />

Tip<br />

See “Output Quantities for Plotting and Printing” in the Eldo Reference Manual.<br />

320<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Extracting Information<br />

Extracting Information<br />

The .EXTRACT command is a fundamental and very powerful command in Eldo used to<br />

extract circuit information from the results of simulation (analyses and waveforms).<br />

.EXTRACT Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322<br />

Plot and Print Quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323<br />

Extract Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />

Extract Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />

Extraction Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327<br />

Extract Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329<br />

Eldo® User's Manual, 15.3 321


Specifying Simulation Output<br />

.EXTRACT Command<br />

.EXTRACT Command<br />

The most frequent usage is for simple extraction of a waveform value, with the following<br />

general form:<br />

Syntax<br />

.EXTRACT function(wave, condition, [min, max])<br />

Parameters<br />

• function<br />

User supplied function that can be any of the built-in functions, or a <strong>user</strong>-defined function.<br />

Some built-in functions:<br />

o<br />

o<br />

o<br />

Yval returns the value of an abscissa (Y-coordinate) corresponding to a given<br />

ordinate (X-value).<br />

Xyvalue returns the ordinate (X-Value) for which the abscissa (Y-value) satisfies a<br />

given condition.<br />

Xup gives the value of X when Y crosses a threshold in the upward direction, and so<br />

on for other functions.<br />

• wave<br />

Name of the waveform to which the function is applied. The wave can be any usual Eldo<br />

output, or a <strong>user</strong>-defined quantity supplied as a function of Eldo outputs.<br />

• condition<br />

Specifies a condition to be satisfied for the application of the .EXTRACT command. It can<br />

be expressed using any of the Eldo operators, including any legal mathematical expression.<br />

• min, max<br />

A pair of values defining the start and end of the range over which the .EXTRACT<br />

command applies. Specifying a min point higher than the max point is allowed, the analysis<br />

will proceed backwards from max to min. This can be useful in tracking the last occurrence<br />

of a given event.<br />

If MIN and MAX are not specified in a function call, information is returned when the<br />

CONDITION is true for the first time.<br />

The x-axis values MIN and MAX may be replaced by the keywords START and END to<br />

specify the beginning and end of the simulation interval respectively. The x-axis value MIN<br />

may be made greater than the MAX value. This causes Eldo to look backwards when<br />

CONDITION is true for the first time. This is useful for extracting waveform settling time<br />

data.<br />

An alternative to the .EXTRACT command is the .MEAS command, which provides<br />

compatibility with the HSPICE simulator.<br />

322<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Plot and Print Quantities<br />

Tip<br />

See “.EXTRACT” in the Eldo Reference Manual.<br />

Plot and Print Quantities<br />

Plotting and printing commands can be specified as extract commands. The plot and print<br />

quantities are generic, so the same syntax applies when specifying these in .EXTRACT<br />

statements. For example the following command plots the drain current of a MOSFET model:<br />

.plot DC ID(XA2.M1)<br />

This can also be specified as an extract as follows:<br />

.extract DC ID(XA2.M1)<br />

LVnn (Element) syntax is used to obtain <strong>user</strong>-input parameters, the following example returns<br />

the effective channel width:<br />

.extract DC LV2(M1)<br />

LXnn (Element) is used to obtain computed values such as charges, capacitances and<br />

derivatives, the following example returns the Drain-Source voltage (VDS):<br />

.extract DC LX3(M1)<br />

When extraction statements are combined with parameter sweeping statements (for example<br />

.STEP) Eldo automatically creates waveforms showing the extraction results versus the swept<br />

parameter. For example, you may extract the width of an output pulse from a transient<br />

simulation and sweep the power supply level, in which case Eldo will automatically create a<br />

waveform showing the width of the pulse versus the power supply level. Similarly, if<br />

extractions and .ALTER statements are combined, Eldo will automatically create waveforms<br />

showing the extraction results versus the index of the .ALTER runs. In this case, the X axis will<br />

contain 1, 2, 3, and so on. The initial display in the viewer can also be prepared using .PLOT<br />

commands (see the .PLOT EXTRACT... description). For example:<br />

.EXTRACT TRAN label=VMAX MAX(V(out))<br />

.PARAM powersupply=1.2<br />

VDD VDD 0 'powersupply'<br />

.STEP PARAM powersupply list 1.2V 1.3V 1.4V 1.6 2V<br />

.PLOT EXTRACT meas(VMAX) ! this will create a waveform<br />

* showing VMAX(powersupply)<br />

By default, using the .wdb format, the .EXTRACT waveforms are saved inside the EXT folder<br />

in the main .wdb file. Specify option EXTFILE to generate a .ext.wdb file with only the<br />

extraction results. The .ext.wdb file will not always be created as it depends on the type of<br />

simulation and the specification of the .EXTRACT command.<br />

Eldo® User's Manual, 15.3 323


Specifying Simulation Output<br />

Extract Outputs<br />

If using the .cou format, these .EXTRACT waveforms are created in a separate file with the .ext<br />

extension. The command line switch -couext (<strong>eldo</strong> -couext -i ) can be used to<br />

merge the extract waveforms into the .cou file, when possible. In this case, a single .cou file will<br />

contain the raw waveforms and also the extraction waveforms.<br />

Tip<br />

See “Output Quantities for Plotting and Printing” in the Eldo Reference Manual.<br />

Related Topics<br />

Types of Waveforms<br />

Extracting Information<br />

Extract Outputs<br />

Extraction results are displayed in the standard output, and written to the ASCII output log file<br />

(.chi). To write results to a separate file two methods are available:<br />

• Specify option AEX.<br />

All extraction data is written to the file circuit_name.aex. Useful for sweep analysis.<br />

• Specify FILE=filename parameter of the .EXTRACT command.<br />

Results of the extract extraction are written to the file filename.<br />

Related Topics<br />

Tip<br />

You can view extraction results with the AMS Results Browser.<br />

Extracting Information<br />

Extract Functions<br />

There are two types of extraction language: transient and general purpose.<br />

• Transient Extraction Language:<br />

Used in transient analysis, these functions are faster to execute, and consumes less<br />

memory because they perform measurements instantaneously at each time step. They do<br />

not require the signals they use to be stored in memory. The disadvantage is that their<br />

parameters can not use results from other measurements because they can not go back in<br />

time (for example if VH or TCROSS is known at the end).<br />

Transient extraction language is based on the following functions (links open the Eldo<br />

Reference Manual):<br />

324<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Extract Functions<br />

Table 8-2. Transient Extraction Language Functions<br />

D_WA<br />

Distance between two waveforms<br />

DELTA<br />

Difference between the value for the current run and the first run<br />

DTC<br />

Duty cycle<br />

SLEWRATE Slope of waveform at threshold<br />

TCROSS<br />

Crossing point of waveform<br />

TFALL<br />

Fall time of waveform<br />

TINTEG<br />

Integral of waveform<br />

TPD<br />

Propagation delay between two waveforms<br />

TPDDD<br />

Propagation delay between wave1 and wave2 both falling<br />

TPDDU<br />

Propagation delay between wave1 falling and wave2 rising<br />

TPDUD<br />

Propagation delay between wave1 rising and wave2 falling<br />

TPDUU<br />

Propagation delay between wave1 and wave2 both rising<br />

TPERIOD<br />

Period for crossing of a y-axis value<br />

TRISE<br />

Rise time of waveform<br />

VALAT<br />

Value of waveform at specified time<br />

• General Purpose Extraction Language:<br />

These functions are more expensive in terms of memory and CPU, but much more<br />

general in the sense that arguments can be expressions. General purpose extraction<br />

language is based on the following functions (links open the Eldo Reference Manual):<br />

Table 8-3. General Extraction Language Functions<br />

AVERAGE Average value of a waveform<br />

COMPRESS Compression point value of a waveform<br />

CROSSING Crossing point value of a waveform<br />

DCM<br />

DC mismatch information<br />

DISTO<br />

Total harmonic distortion of a waveform<br />

EVAL<br />

Element parameter value<br />

FAIL<br />

Fail information<br />

FALLING Falling value of a waveform<br />

INTEG<br />

Integral value of a waveform<br />

Eldo® User's Manual, 15.3 325


Specifying Simulation Output<br />

Extract Functions<br />

KFACTOR<br />

LOCAL_MAX<br />

LOCAL_MIN<br />

MAXGMVT<br />

MAX<br />

MEAN<br />

MIN<br />

MODPAR<br />

OPMODE<br />

PASS<br />

PVAL<br />

RISING<br />

RMS<br />

SLOPE<br />

VDSATC<br />

VTC<br />

WFREQ<br />

WINTEG<br />

XCOMPRESS<br />

XDOWN<br />

XMAX<br />

XMIN<br />

XTHRES<br />

XUP<br />

XYCOND<br />

YVAL<br />

Table 8-3. General Extraction Language Functions (cont.)<br />

Stability factor information<br />

Local maximum value of a waveform<br />

Local minimum value of a waveform<br />

Extracting Values During DC Analysis<br />

Not all pre-defined extract functions can be used in the DC domain. None of the functions using<br />

a waveform as an argument can be used in a .EXTRACT DC command. For example, the<br />

following cannot be used:<br />

.EXTRACT DC AVERAGE (WAVE,[MIN,MAX])<br />

Maximum transconductance threshold voltage for a MOS device<br />

Maximum value of a waveform<br />

Mean value of a waveform<br />

Minimum value of a waveform<br />

Value of a model parameter<br />

DC working mode of the device model<br />

Pass information<br />

Value of a parameter<br />

Rising value of a waveform<br />

Root mean square value of a waveform<br />

Slope of a waveform<br />

Threshold voltage for a MOS device<br />

Gate-source voltage for a MOS device<br />

Average frequency value of a waveform<br />

Time integral value of a waveform<br />

Compression point x-axis value of a waveform<br />

Falling x-axis value of a waveform<br />

Maximum x-axis value of a waveform<br />

Minimum x-axis value of a waveform<br />

X-axis crossing point of waveform<br />

X-axis rising value of a waveform<br />

Value of waveform for condition<br />

Y-axis value of waveform at given x-axis<br />

326<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Extraction Mode<br />

The functions listed below can be used in DC and are useful to check design settings:<br />

• EVAL<br />

• MAXGMVT<br />

• MODPAR<br />

• OPMODE<br />

• POW and POWER<br />

• PVAL<br />

Related Topics<br />

Tip<br />

See “.EXTRACT” in the Eldo Reference Manual.<br />

Extracting Information<br />

Extract Examples<br />

Extraction Mode<br />

To activate extraction mode, to perform measurements using waves stored in .wdb files, run<br />

Eldo with the -extract argument. Eldo only performs the .EXTRACT and .MEAS commands,<br />

without performing the simulations. Eldo will decorrelate the simulation from the extraction.<br />

The extractions in the netlist will be solved using the corresponding waves contained in the<br />

specified file. This functionality can also be specified with the netlist command .EXTMOD.<br />

Multiple levels of extraction (a combination of .STEP, .ALTER, .DC SWEEP, and so on) are<br />

not supported with the extraction mode.<br />

The extraction mode is driven by the input waveform file. This means:<br />

• The SPICE input file can contain .EXTRACT/.MEAS commands only, to reduce the<br />

parsing time for large designs.<br />

• All multiple-run commands specified in the netlist are ignored: .STEP, .MC, .TEMP,<br />

.ALTER, and so on.<br />

• Eldo loads the data from the input file, one analysis after another.<br />

• The main purpose of the extract mode is to calculate extracts as fast as possible,<br />

therefore Eldo does not save them in a new .wdb file by default; specify option<br />

EXTMOD_GENWAVE to enable the saving.<br />

• Eldo loads varying parameters (if available) from the input file and recreates a .STEPlike<br />

structure. SWEEP extracts are not replayed because Eldo does not know how the<br />

.STEP commands were ordered.<br />

Eldo® User's Manual, 15.3 327


Specifying Simulation Output<br />

Extraction Mode<br />

Examples<br />

<strong>eldo</strong> -outpath my_out -extract my_file.wdb<br />

Eldo uses file my_out/my_file.wdb.<br />

<strong>eldo</strong> -outpath my_out -extract ./my_file.wdb<br />

Eldo uses ./my_file.wdb, because the path is explicitly relative to the working directory.<br />

<strong>eldo</strong> -outpath my_out -extract /tmp/my_file.wdb<br />

Eldo uses /tmp/my_file.wdb, because the path is absolute.<br />

See Also<br />

• -extract in the Eldo Reference Manual<br />

• .EXTMOD in the Eldo Reference Manual<br />

• .OPTION EXTMOD_GENWAVE in the Eldo Reference Manual<br />

Related Topics<br />

Extracting Information<br />

328<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Extract Examples<br />

Extract Examples<br />

This section lists a number of examples using the .EXTRACT command:<br />

Example Extracting OPMODE, POW, and POWER Values . . . . . . . . . . . . . . . . . . . . . 329<br />

Example Extracting Parameter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330<br />

Example Extracting Model Parameter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />

Example Extracting Element Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />

Example Extracting Transient Analysis Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332<br />

Example of Condition Function Reusing Extraction Results . . . . . . . . . . . . . . . . . . . . . 332<br />

Example Combining Sweep Extract and .ALTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333<br />

Extracting Compression Point Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334<br />

Example Extracting OPMODE, POW, and POWER Values<br />

This example focuses on the OPMODE, POW, and POWER extract functions in DC analysis<br />

mode.<br />

Prerequisites<br />

• This example uses the extract_overshoot_opamp.cir netlist in $MGC_AMS_HOME/<br />

examples/<strong>eldo</strong>/<br />

Procedure<br />

1. Open the extract_overshoot_opamp.cir netlist in your preferred text editor, then add<br />

these extract commands to the netlist, then save it:<br />

.extract POW(XA3)<br />

.extract POWER<br />

.extract OPMODE(XA2.M*)<br />

2. Run the simulation:<br />

<strong>eldo</strong> extract_overshoot_opamp.cir<br />

3. View the extract results in the standard output or open the .chi file.<br />

Results<br />

• The first extract is a measure of the DC power absorbed by instance XA3.<br />

• The second extract is a measure of the total DC power.<br />

• The third extract measures the operating mode of all transistors inside XA2.<br />

Output listing:<br />

Eldo® User's Manual, 15.3 329


Specifying Simulation Output<br />

Extract Examples<br />

* POW(XA3) = 2.6784E-003 Watt<br />

* POWER = 2.1469E-002 Watt<br />

* OPMODE(XA2.M1) = subthreshold<br />

* OPMODE(XA2.M2) = subthreshold<br />

* OPMODE(XA2.M3) = subthreshold<br />

* OPMODE(XA2.M4) = linear<br />

* OPMODE(XA2.M5) = linear<br />

* OPMODE(XA2.M6) = subthreshold<br />

* OPMODE(XA2.M7) = subthreshold<br />

* OPMODE(XA2.M8) = subthreshold<br />

* OPMODE(XA2.M9) = subthreshold<br />

* OPMODE(XA2.M10) = linear<br />

* OPMODE(XA2.M11) = subthreshold<br />

* OPMODE(XA2.M12) = subthreshold<br />

* OPMODE(XA2.M13) = linear<br />

* OPMODE(XA2.M14) = subthreshold<br />

* OPMODE(XA2.M15) = saturation<br />

* OPMODE(XA2.M16) = linear<br />

* OPMODE(XA2.M17) = linear<br />

* OPMODE(XA2.M18) = linear<br />

* OPMODE(XA2.M19) = linear<br />

* OPMODE(XA2.M20) = saturation<br />

* OPMODE(XA2.M21) = saturation<br />

Related Topics<br />

Extracting Information<br />

Extract Examples<br />

Example Extracting Parameter Values<br />

This example focuses on the PVAL (Parameter VALue) extract function in DC analysis mode.<br />

PVAL is a predefined function returning the value of the parameter requested. The example<br />

shows how to plot an extract versus a parameter when the parameter is swept with the .ALTER<br />

command:<br />

Procedure<br />

1. Run Eldo on the netlist shown below. This example extracts both the original extract and<br />

the parameter value.<br />

R1 1 0 rval<br />

V1 1 0 dc 1<br />

.param rval=1<br />

.dc<br />

.extract dc label=ir i(r1)<br />

.extract pval(rval)<br />

.alter<br />

.param rval=10<br />

.alter<br />

.param rval=100<br />

2. Open the generated .wdb file in EZwave, and display both extracts in the same graph.<br />

330<br />

Eldo® User's Manual, 15.3


3. Right-click on the sweep parameter name, and select “Set as X axis.”<br />

Related Topics<br />

Extracting Information<br />

Extract Examples<br />

Specifying Simulation Output<br />

Extract Examples<br />

Example Extracting Model Parameter Values<br />

This example focuses on the MODPAR (MODel PARameter) extract function in DC analysis<br />

mode. MODPAR is a predefined function returning the value of a model parameter. This<br />

function is useful to extract a parameter value of a model defined inside a subcircuit.<br />

Run Eldo on the netlist shown below:<br />

.subckt mysub d g s b p1=0.2<br />

.model mymod NMOS<br />

+VT0=1.2 PHI=0.6<br />

M1 d g s b model=mymod w=1u l=1u<br />

.ends<br />

X1 d g 0 0 mysub p1=0.1<br />

X2 d g 0 0 mysub p1=0.3<br />

Vd d 0 dc 1<br />

Vg g 0 dc 1<br />

.op<br />

.extract dc label=vto modpar(mysub.mymod,vt0)<br />

.extract dc label=phi modpar(mysub.mymod,phi)<br />

.end<br />

View the extract results in the standard output or open the .chi file.<br />

VT0 = 1.2000E+00<br />

PHI = 6.0000E-01<br />

Tip<br />

See “MODPAR” function in the Eldo Reference Manual.<br />

Related Topics<br />

Extracting Information<br />

Extract Examples<br />

Example Extracting Element Values<br />

This example focuses on the EVAL (Element VALue) extract function in DC analysis mode.<br />

EVAL is a predefined function returning the value of the requested parameter for the circuit<br />

element name.<br />

Eldo® User's Manual, 15.3 331


Specifying Simulation Output<br />

Extract Examples<br />

.EXTRACT DC EVAL(X_A.M1,AD)<br />

This extracts the drain area (AD) of MOSFET M1 in subcircuit instance X_A.<br />

Additional parameters are available for MOSFET devices, for example:<br />

.EXTRACT DC EVAL(X_B.M1,Weff)<br />

This extracts the effective width (Weff) of MOSFET M1 in subcircuit instance X_B.<br />

Related Topics<br />

Extracting Information<br />

Extract Examples<br />

Example Extracting Transient Analysis Values<br />

The transient start and stop times can be extracted as follows:<br />

.extract tran label=tstart xmin(time)<br />

.extract tran label=tstop xmax(time)<br />

The combination of xmax/xmin functions with the time (or freq) keyword shows one way to use<br />

the time (or freq) keyword in .EXTRACT statements.<br />

If the transient analysis was specified as follows:<br />

.tran 2ns 100ns 50ns uic<br />

The extract results from the standard output or the .chi file would be:<br />

TSTART = 5.0000E-08<br />

TSTOP = 1.0000E-07<br />

Related Topics<br />

Extracting Information<br />

Extract Examples<br />

Example of Condition Function Reusing Extraction<br />

Results<br />

This example shows how the XYCOND() extract function conditions reusing extraction results.<br />

332<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Extract Examples<br />

.step param p1 1 10 0.5<br />

.extract tran label=idsm1 yval(ids(m1), 50n)<br />

.extract sweep label=idsm1_min min(extract(idsm1))<br />

.extract sweep label=p1_idsm1_min<br />

+ xycond(xaxis, extract(idsm1)==extract(idsm1_min))<br />

The first extract command finds the value idsm1 for each step. The second extract command<br />

finds the minimum of idsm1 over the sweep. The third extract command finds the p1 value<br />

corresponding to idsm1_min.<br />

Related Topics<br />

Extracting Information<br />

Extract Examples<br />

Example Combining Sweep Extract and .ALTER<br />

This example shows how the sweep extract also works on waveforms generated from an<br />

.EXTRACT combined with a .ALTER.<br />

The example is based on the loop_stability_opamp.cir netlist in $MGC_AMS_HOME/<br />

examples/<strong>eldo</strong>/, with some changes to the inputs, extracts, and with the addition of a .ALTER<br />

block.<br />

VINP INP 0 AC 1 0<br />

VINN INN 0 AC 1 0<br />

...<br />

.ac dec 10 1 1e8<br />

.plot ac v(out)<br />

.extract ac label=G400M yval(vdb(out),1k)<br />

.alter DM_GAIN<br />

VINP INP 0 AC 0.5 90<br />

VINN INN 0 AC 0.5 -90<br />

.extract sweep label=CMRR yval(meas(G400M),1)-yval(meas(G400M),0)<br />

The first extract command, labeled G400M, finds the y-axis value of the waveform vdb(out) at<br />

1kHz. The .ALTER block, DM_GAIN, replaces the opamp input voltage sources with a<br />

differential input where VINP is shifted in phase from VINN and extracts the G400M<br />

information again. The .EXTRACT SWEEP command in the .ALTER block finds the<br />

difference between the two extracted y-axis values to generate the CMRR result (ratio of the<br />

differential mode gain and common mode gain).<br />

Extract<br />

Alter index0 G400M<br />

Alter index1 G400M<br />

CMRR<br />

Value<br />

-1.4292E+01<br />

6.5083E+01<br />

7.9375E+01<br />

Eldo® User's Manual, 15.3 333


Specifying Simulation Output<br />

Extract Examples<br />

Related Topics<br />

Extracting Information<br />

Extract Examples<br />

Extracting Compression Point Values<br />

The COMPRESS/XCOMPRESS functions extract the co-ordinates of a compression point in<br />

the curve specified in the first parameter of the function. XCOMPRESS provides the X-value<br />

and COMPRESS the Y-value.<br />

This compression point is the point where the curve is value below the straight line defined by<br />

the slope of the curve at the origin. (value is the second parameter of the function.)<br />

In the illustration above, the curve is meas(POUTDBm), and the compression (value) is 1.0<br />

dBm.<br />

Note<br />

When these functions are used to extract compression points, the swept parameter (X-axis)<br />

and the curve (Y-axis) must be in dB (or dBm).<br />

Example<br />

* 1dB compression point<br />

.param fund=900Meg<br />

.extract fsst label=POUTdBm YVAL(PdBm(RL), fund)<br />

.extract sweep xcompress(meas(POUTdBm), 1.0)<br />

.extract sweep compress(meas(POUTdBm), 1.0)<br />

Related Topics<br />

Extracting Information<br />

334<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Extract Examples<br />

Extract Examples<br />

Eldo® User's Manual, 15.3 335


Specifying Simulation Output<br />

Defining Waveforms<br />

Defining Waveforms<br />

Use the .DEFWAVE command to define a new waveform by relating previously defined<br />

waveforms and nodes. Some usage notes follow:<br />

• Combining the .PLOT command with the .DEFWAVE command can be used to<br />

generate so-called template waveforms, that is, piece-wise-linear waveforms defined by<br />

a series of arbitrary (x,y) coordinates. Using .PLOT, these templates can be displayed<br />

together with the simulation results (this is very useful when verifying whether a filter<br />

response passes or not specifications such as cutoff frequencies, minimum attenuation,<br />

and so on). For example:<br />

.DEFWAVE FILTERSPEC=PWL(1e-3,0,100k,0,500k,-60,100G,-60)<br />

.PLOT AC VDB(OUT) W(FILTERSPEC)<br />

• Waveform definitions can be specified inside subcircuit definitions. Identical complex<br />

calculations can be performed for each instance of the subcircuit. Typically the<br />

subcircuit is declared once and instanced many times. This means there is no need to<br />

have many instances of the same subcircuit with definitions of .DEFWAVE and .PLOT<br />

for each. Eldo only calculates the .DEFWAVE statements that are called, not all<br />

.DEFWAVE statements declared.<br />

• Waveform names cannot contain arithmetic operators.<br />

• Waveform names cannot contain the hierarchical separator: the period character “.”.<br />

• Only one waveform may be defined per .DEFWAVE statement.<br />

• It is not possible to use functions which expect at least one waveform as input.<br />

• Built-in PPL functions that act on a waveform cannot be used in Tcl procs that are called<br />

from .DEFWAVE statements. This is because .DEFWAVE expressions represent a<br />

numerical value, and not a waveform.<br />

• A wave is instantiated by preceding the wave name w, which can be followed by a<br />

format suffix for complex waveforms, for example: wm, wdb, wp, wi, wr are enclosed<br />

in parentheses ().<br />

• A waveform expression cannot contain a division by zero. If this is the case, 1.0×10 -15 is<br />

automatically assigned to a value.<br />

• The .DEFWAVE command is order dependent in that all components of the waveform<br />

expression must have already been defined earlier in the netlist. The following is illegal:<br />

.defwave power_vdd=i(v1)*v(v1)<br />

*...<br />

v1 in out ...<br />

However, the following is allowed:<br />

336<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Examples of Defining Waveforms<br />

v1 in out ...<br />

*...<br />

.defwave power_vdd=i(v1)*v(v1)<br />

• The waveform expression must consist of waves and functions which are related to the<br />

type of analysis being performed as described in the .PLOT/PRINT commands. The<br />

following is illegal and will produce false results:<br />

.defwave amplification=v(2)/v(1)<br />

*...<br />

.plot ac w(amplification)<br />

However, the following is allowed:<br />

.defwave amplification=vm(2)/vm(1)<br />

*...<br />

.plot ac wdb(amplification)<br />

• The waveform expression may use the result of some extracts from a sweep analysis<br />

through direct reference to the label holding the result or use of the EXTRACT()<br />

accessor function. The following is allowed:<br />

.extract label=m1 yval(v(1),5n)<br />

.defwave tran foo=v(1)+extract(m1) ! using the accessor function<br />

.extract sweep label=m2 min(extract(m1))<br />

.extract sweep label=m3 yval(extract(m1),2.5)<br />

The following alternative is also allowed:<br />

.extract label=m1 yval(v(1),5n)<br />

.defwave tran foo=v(1)+m1 ! direct reference to the extract label<br />

.extract sweep label=m2 min(m1)<br />

.extract sweep label=m3 yval(m1,2.5)<br />

• The PWL function in .DEFWAVE can not be used in complex expressions. An error<br />

will be generated if the .DEFWAVE uses the function with other operators or<br />

mathematical functions. The following is not accepted:<br />

.defwave tran f1 = 1 + pwl(5n,0,7n,5,8n,5,9n,1)<br />

However, the following is allowed:<br />

.defwave tran f1 = pwl(5n,0,7n,5,8n,5,9n,1)<br />

Examples of Defining Waveforms<br />

Plot the AC power of the vxx voltage source:<br />

.defwave powf = 0.5*(vdip(vxx) * CONJ(I(vxx)))<br />

.plot ac wr(powf)<br />

Example of applying a wave operator:<br />

Eldo® User's Manual, 15.3 337


Specifying Simulation Output<br />

Examples of Defining Waveforms<br />

.EXTRACT LABEL = A MAX(V(1))<br />

.EXTRACT LABEL = B MAX(V(2))<br />

.STEP PARAM P1 1 3 1<br />

.DEFWAVE SWEEP my_wave = MEAS(a) + MEAS(b)<br />

.end<br />

Example using the SIGMA function to sum various items (numbers, parameters or output<br />

quantities); when items are output quantities, wildcards are accepted:<br />

.EXTRACT dc SIGMA(v(*),1.0,'p1+2')<br />

.DEFWAVE tran star3=SIGMA(ISUB(X2*.g),V(E*))<br />

Example of using the PWL function:<br />

v1 1 0 pwl ( 0 0 10n 10)<br />

r1 1 0 1<br />

.defwave tran foo = pwl(0,0,20n, meas(ex))<br />

.extract label = ex yval(v(1),5n)<br />

.tran 1n 10n<br />

.plot tran w(foo)<br />

.end<br />

Example of using the PWL, PWL_CTE and PWL_LIN functions.<br />

v1 1 0 pwl ( 0 0 10n 10)<br />

r1 1 0 1<br />

.defwave tran f1 = pwl(5n,0,7n,5,8n,5,9n,1)<br />

.defwave tran f2 = pwl_cte(5n,0,7n,5,8n,5,9n,1)<br />

.defwave tran f3 = pwl_lin(5n,0,7n,5,8n,5,9n,1)<br />

.defwave tran f4 = pwl_lin(5n,0, 5n, 5)<br />

.defwave tran f5 = pwl_lin(0n, 5)<br />

.extract label = ex yval(v(1),5n)<br />

.tran 1n 10n<br />

.plot tran w(f1) w(f2) w(f3) w(f4) w(f5)<br />

.end<br />

The plot obtained from the netlist is shown in Figure 8-2. The wave f4 demonstrates how to plot<br />

vertical waves with the .DEFWAVE command.<br />

338<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Examples of Defining Waveforms<br />

Figure 8-2. Defining Waveforms: PWL, PWL_CTE and PWL_LIN Functions<br />

The example below shows how waveform definitions can be specified inside subcircuit<br />

definitions. In this example, the sat curves for both devices are plotted, even though they are<br />

calculated differently.<br />

Eldo® User's Manual, 15.3 339


Specifying Simulation Output<br />

Examples of Defining Waveforms<br />

.subckt nmos d g s b<br />

m1 d g s b nmos w=10u l=1u<br />

.defwave sat=vds(m1)-vdss(m1)<br />

.defwave varI=(0.59*gm(m1)*gm(m1)+1.133*ids(m1)*ids(m1))*5u*1u<br />

.ends<br />

.subckt pmos d g s b<br />

m1 d g s b pmos w=5u l=1u<br />

.defwave sat=vdss(m1)-vds(m1)<br />

.defwave varI=(0.79*gm(m1)*gm(m1)+1.589*ids(m1)*ids(m1))*5u*1u<br />

.ends<br />

x0 g g s b nmos<br />

x1 d g s b nmos<br />

x2 d g s b pmos<br />

.plot dc w(x0.sat) w(x1.sat) w(x2.sat)<br />

.defwave Ioffset=sqrt(w(x0.varI)+w(x1.varI)+w(x2.varI))<br />

.plot dc w(Ioffset)<br />

Tip<br />

See “.DEFWAVE” in the Eldo Reference Manual.<br />

Related Topics<br />

Plotting, Printing and Probing<br />

340<br />

Eldo® User's Manual, 15.3


Safe Operating Area (SOA) Checks<br />

Specifying Simulation Output<br />

Safe Operating Area (SOA) Checks<br />

You can detect when a component is used outside safe operating area (SOA) limits. The SOA<br />

can also be used to verify min-max measurements. A warning will be generated during the<br />

simulation and displayed to the standard output and inside the .chi file. You can specify a<br />

separate file to write SOA results to. They can also be plotted for display in EZwave.<br />

Tip<br />

You can view safe operating area violations with the AMS Results Browser.<br />

Two commands are available for use with specifying and checking the safe operating area:<br />

• .SETSOA<br />

Specifies the safe operating area limits for devices, model parameters, or expressions.<br />

This can be defined in the netlist or any device library.<br />

See “.SETSOA” in the Eldo Reference Manual.<br />

• .CHECKSOA<br />

Checks the safe operating area limits previously set using .SETSOA.<br />

See “.CHECKSOA” in the Eldo Reference Manual.<br />

Plotting Safe Operating Area Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341<br />

Safe Operating Area Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345<br />

Plotting Safe Operating Area Limits<br />

Use the output quantity SOA(identifier) for .PLOT and .PROBE commands. This quantity only<br />

applies to .wdb (EZwave) output because it creates an assertion bus type object. The following<br />

syntaxes can be specified to create assertion buses:<br />

• Generic command:<br />

.probe [analysis] SOA<br />

This will probe all .SETSOA commands in a design.<br />

• SOA output quantity for subcircuit instance:<br />

.probe|.plot SOA(xinst)<br />

This will probe/plot all .SETSOA commands inside subcircuit instance named xinst.<br />

• SOA output quantity for device:<br />

.probe|.plot SOA(device)<br />

Eldo® User's Manual, 15.3 341


Specifying Simulation Output<br />

Plotting Safe Operating Area Limits<br />

This will probe/plot all .SETSOA commands related to device name device.<br />

• SOA output quantity for SOA identifier:<br />

.probe|.plot SOA(full_name)<br />

This will probe/plot a specific .SETSOA command as soon as full_name is a valid fully<br />

qualified .SETSOA identifier. The default naming rule for a fully qualified identifier is:<br />

where:<br />

o<br />

o<br />

o<br />

##<br />

device is the device name when the SOA applies to a device.<br />

FileName is the name of the netlist file containing the SOA.<br />

Line is the line number of the SOA in the associated netlist file.<br />

For example:<br />

.probe tran SOA(XM7.M1#test.cir#13)<br />

This will probe the .SETSOA command in line 13 of netlist file test.cir for device M1<br />

inside instance XM7.<br />

To change the format of the identifier, see “Modifying the SOA Identifier Format” on<br />

page 344.<br />

The PROBE keyword of the .CHECKSOA command can be used to save all output quantities<br />

(waveforms) specified in .SETSOA commands, but it does not create SOA assertion buses.<br />

EZwave displays SOA violations as an assertion bus that contains the simulated waveform(s),<br />

related to the .SETSOA statements, upon which they rely.<br />

Table 8-4 summarizes the graphic elements for SOA limits used in the EZwave graph window:<br />

Table 8-4. Graphic Elements for SOA Limits<br />

Graphic Element Cursor Label Meaning<br />

Blue line inactive SOA is inactive<br />

Green line active SOA is active<br />

Red line fail SOA failed<br />

Green triangle active_pass SOA passed<br />

Red triangle with horizontal red<br />

line below<br />

Inverted red triangle with<br />

horizontal red line above<br />

fail_failDown<br />

fail_failUp<br />

SOA failed, crossed the lower<br />

boundary<br />

SOA failed, crossed the upper<br />

boundary<br />

342<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Plotting Safe Operating Area Limits<br />

Example<br />

*SOA check<br />

.model n npn<br />

r1 in out 10k<br />

c1 out 0 1p<br />

q1 c b 0 0 n<br />

rl c vdd 1k<br />

vin in 0 pwl 0 0 1n 10 20n 10 21n 100<br />

vdd vdd 0 5<br />

vb b 0 pwl 0 -1 40n 1<br />

.setsoa label="DEVICE1" d r1 i=(*, 3m)<br />

.setsoa label="MODEL1" m n ic=(-1u, 3m)<br />

.checksoa file=test.soa<br />

.option eps=1u<br />

.tran 1n 50n<br />

.probe tran SOA<br />

.end<br />

The first .SETSOA command specifies a current limit of 3mA for resistor device R1. The<br />

second .SETSOA command specifies a collector current limit of between −1μA and 3mA for<br />

any BJT model of name n. With the .PROBE TRAN SOA statement present, the EZwave output<br />

displays when the SOA is exceeded, see Figure 8-3.<br />

Figure 8-3. EZwave Display of SOA Limits Assertion Bus<br />

Eldo® User's Manual, 15.3 343


Specifying Simulation Output<br />

Plotting Safe Operating Area Limits<br />

Note<br />

There is a shift between the x values printed in the .chi file (or saved SOA file) and the .wdb<br />

output because in the .chi file they are interpolated, but in the .wdb the events/data points are<br />

synchronized with time steps.<br />

Modifying the SOA Identifier Format<br />

It may be difficult to identify the .SETSOA command in EZwave using the default naming<br />

convention for SOA identifiers, option SOA_WAVE_FORMAT="value" can be used to control<br />

the format of the identifier. The value of the option is a string, composed of several predefined<br />

tokens identifying an element of a .SETSOA command:<br />

• %label provides the LABEL specification of the .SETSOA.<br />

• %code provides the SOACODE specification of the .SETSOA.<br />

• %file provides the filename where the .SETSOA command is defined.<br />

• %line provides the line in the file where the .SETSOA command is defined.<br />

The complete waveform name is built using the instance/device name together with a VHDL<br />

extended syntax suffix. For example, with the following:<br />

.option SOA_WAVE_FORMAT="%code%file%line%label"<br />

.setsoa tran SOACODE=1011 LABEL=foo ...<br />

EZwave displays: SOA(XM7.M1\code:1011\\file:test.cir\\:line:12\\label:foo\)<br />

A token may be specified more than once. For the following example:<br />

.option SOA_WAVE_FORMAT="%code%code"<br />

.setsoa tran SOACODE=1011 LABEL=foo ...<br />

EZwave displays: SOA(XM7.M1\code:1011\\code:1011\)<br />

TSMC SOA Support in Eldo<br />

Eldo supports the TSMC Safe Operating Area check functionality. Parameters are provided in<br />

the .MODEL statements for MOSFET, BJT, and Diode devices, and in both .MODEL<br />

statements and instances for Resistor and Capacitor devices. The .CHECKSOA command<br />

enables the TSMC SOA checks, unless option SWARN=0 is set. Alternatively, if there is no<br />

.CHECKSOA option but option SWARN=1, then only the TSMC SOA are checked, not the<br />

.SETSOA statements. (See option “SWARN” in the Eldo Reference Manual.)<br />

Eldo supports TSMC SOA versions v0.4 and v0.5. TSMC SOA is different to the TMI SOA,<br />

which is the SOA of the TSMC Modeling Interface (TMI). For further information, refer to the<br />

TSMC SOA specification document.<br />

344<br />

Eldo® User's Manual, 15.3


See Also<br />

• .CHECKSOA in the Eldo Reference Manual<br />

• .SETSOA in the Eldo Reference Manual<br />

• .OPTION SOA_WAVE_FORMAT in the Eldo Reference Manual<br />

Related Topics<br />

Safe Operating Area (SOA) Checks<br />

Safe Operating Area Examples<br />

Listing of examples to check safe operating area limits.<br />

• The following examples check specific instantiations:<br />

o<br />

Check VDS(X1.M2) > 1.2V:<br />

.SETSOA D X1.M2 VDS=(*,1.2)<br />

.CHECKSOA<br />

The following results will be generated in the .chi file:<br />

*| X1.M2:<br />

*| VDS(X1.M2)<br />

*| X AXIS WINDOW: [ 0.00000 11.23011N ]<br />

*| Value superior to 1.200000e+00<br />

*| X AXIS WINDOW: [ 23.21157N 31.23011N ]<br />

*| Value superior to 1.200000e+00<br />

*| X AXIS WINDOW: [ 43.21157N 50.00000N ]<br />

*| Value superior to 1.200000e+00<br />

Total number of SOA instances : 1<br />

Total number of violations : 3<br />

Specifying Simulation Output<br />

Safe Operating Area Examples<br />

o<br />

Check VTH(X2.M2) < 0.8V:<br />

.SETSOA D X2.M2 VT=(0.8,*)<br />

.CHECKSOA<br />

The following results will be generated in the .chi file:<br />

*| X2.M2:<br />

*| VT(X2.M2)<br />

*| X AXIS WINDOW: [ 5.14767N 10.04472N ]<br />

*| Value inferior to 8.000000e-01<br />

*| X AXIS WINDOW: [ 10.34305N 11.14998N ]<br />

*| Value inferior to 8.000000e-01<br />

*| X AXIS WINDOW: [ 12.45232N 24.34917N ]<br />

Value inferior to 8.000000e-01<br />

Total number of SOA instances : 1<br />

Total number of violations : 3<br />

Eldo® User's Manual, 15.3 345


Specifying Simulation Output<br />

Safe Operating Area Examples<br />

• The following example checks a model; it checks for all transistors abs(IDS) > 10μA for<br />

more than 3ns, during the first 50 ns:<br />

.SETSOA M NMOS ID(*)=(-10u,10u,3n)<br />

.CHECKSOA TSTART=0 TSTOP=50n<br />

The following results will be generated in the .chi file:<br />

*| ID(X1.M2)<br />

*| X AXIS WINDOW: [ 10.35049N 14.29079N ]<br />

*| Both MIN (-1.000000e-05) and<br />

*| MAX (1.00000e-05) values violated<br />

*| for more than 3.00000N<br />

*| X AXIS WINDOW: [ 30.35063N 34.29079N ]<br />

*| Both MIN (-1.000000e-05) and<br />

*| MAX (1.00000e-05) values violated<br />

*| for more than 3.00000N<br />

Total number of SOA instances : 1<br />

Total number of violations : 2<br />

• The following example checks an expression; it checks the absolute value of the sum of<br />

2 Nmos drain currents < 100μA:<br />

.SETSOA E ABS(ID(X1.M2)+ID(X2.M2)) = (*,100U)<br />

.CHECKSOA<br />

The following results will be generated in the .chi file:<br />

*|ABS(ID(X1.M2)+ID(X2.M2))<br />

*| X AXIS WINDOW: [ 10.44101N 46.03154N ]<br />

*| Value superior to 1.000000e-04<br />

Total number of SOA instances : 1<br />

Total number of violations : 1<br />

• The following is an example of SOA check syntax for device parameters (D), model<br />

parameters (M) and Eldo expressions (E):<br />

346<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Safe Operating Area Examples<br />

SOA check<br />

.width out=80<br />

.model n npn<br />

r1 in out 10k<br />

c1 out 0 1p<br />

q1 c b 0 0 n<br />

rl c vdd 1k<br />

vin in 0 pwl 0 0 1n 10 20n 10 21n 100<br />

vdd vdd 0 5<br />

vb b 0 pwl 0 -1 40n 1<br />

.setsoa d r1 i=(*, 3m)<br />

.setsoa m n ic=(-1u, 3m)<br />

.setsoa e IC(q1)/IB(q1)=(*, 100)<br />

.checksoa<br />

.option eps=1u<br />

.tran 1n 40n<br />

.plot tran v(out)<br />

.plot tran i(r1) ib(q1) ic(q1)<br />

.end<br />

This produces the following warning on screen (or in the .log file, if you are simulating<br />

in background):<br />

Warning 1897: SOA DETECTION: See output file soa.chi for details.<br />

The following results will be obtained in the .chi file:<br />

0*SOA check<br />

0**** SOA INFORMATION (TRANSIENT ANALYSIS)TEMPERATURE = 27.000 DEG C<br />

0******************************************************************<br />

*| R1:<br />

*| I(R1)<br />

*| X AXIS WINDOW: [ 20.32351N 31.73644N ]<br />

*| Value superior to 3.000000e-003 (up to 8.691883e-003 )<br />

*| IC(Q1)/IB(Q1)<br />

*| X AXIS WINDOW: [ 28.46930N 32.91922N ]<br />

*| Value superior to 1.000000e+002 (up to 1.155804e+002 )<br />

*| Q1: model=N<br />

*| IC(Q1)<br />

*| X AXIS WINDOW: [ 35.33005N 40.00000N ]<br />

*| Value superior to 3.000000e-003 (up to 4.972460e-003 )<br />

Total number of SOA instances : 3<br />

Total number of violations : 3<br />

• In the following example, two cards will be kept: the one in xsub corresponding to X1;<br />

and the top level card .SETSOA D X1.R1.<br />

Eldo® User's Manual, 15.3 347


Specifying Simulation Output<br />

Safe Operating Area Examples<br />

* Restrict SOA to list subckt instances<br />

.model resis res r= 1k dev/gauss=10%<br />

.subckt xsub a b<br />

r1 a b resis 1k<br />

.setsoa E I(R1)=(1.80u,1.90u) ! ((3 + D(M1,L)*2.0E+6) ) ) THEN V(G,S)=(*,0.3,2n) endif<br />

• .SETSOA command in the Eldo Reference Manual<br />

• .CHECKSOA command in the Eldo Reference Manual<br />

Related Topics<br />

Safe Operating Area (SOA) Checks<br />

348<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

High Impedance Node Checks<br />

High Impedance Node Checks<br />

A high impedance node (Hi-Z) refers to a circuit node in high impedance state. Eldo detects<br />

circuit Hi-Z states by checking the dynamic behavior of all nodes. This detection method works<br />

on any circuit topology and applies to all device types.<br />

Tip<br />

You can view high impedance detections with the AMS Results Browser.<br />

How to Enable High Impedance Node Checks<br />

To enable high impedance node checks use one of the commands: .DCHIZ, .HIZ,<br />

.OPTION ADIT_CHECK.<br />

Hi-Z detection is controlled by two parameters: GFLOAT_MAX and HIZ_TIME.<br />

The Hi-Z detection algorithm evaluates nodes’ conductance as well as voltage and current<br />

convergence criteria. This method allows more accurate and comprehensive Hi-Z detection<br />

compared to just evaluating conductance or voltage. Instead of having to control three<br />

parameters, namely voltage, current and conductance, a pseudo-conductance value<br />

(GFLOAT_MAX) is provided as the controlling parameter for the algorithm. The guideline is<br />

to set GFLOAT_MAX close to the conductance at Hi-Z; it does not set the exact conductance<br />

limit in which nodes are reported as Hi-Z. You can use GFLOAT_MAX to increase or decrease<br />

the number of nodes reported as Hi-Z. The default value is 1e-7. The smaller the<br />

GFLOAT_MAX value, the less number of nodes to be reported as Hi-Z.<br />

HIZ_TIME can be used to report only nodes that stay in Hi-Z state for longer than a specified<br />

time. The default value is 0, which means a node in Hi-Z state is reported as soon as it is<br />

detected at each transient time point. Reporting instantaneous Hi-Z states can generate massive<br />

reports and raise false alarm. It is recommended to define HIZ_TIME appropriately to only<br />

highlight significant Hi-Z states.<br />

In the circuit check report, Hi-Z nodes are categorized into two groups:<br />

• [HiZ_NULL_FANOUT] means the Hi-Z node does not drive any devices (has no<br />

fanout).<br />

• [HiZ] means the Hi-Z node drives some devices.<br />

Example Hi-Z check report from .OPTION ADIT_CHECK:<br />

[HiZ]:node(x1.n0) Hi-Z status from 1.58204e-05 to 5e-05<br />

[HiZ_NULL_FANOUT]:node(x1.nms) Hi-Z status from 0 to 5e-05<br />

[HiZ_NULL_FANOUT]:node(x1.nps) Hi-Z status from 0 to 5e-05<br />

Example Hi-Z check report from .HIZ command:<br />

Eldo® User's Manual, 15.3 349


Specifying Simulation Output<br />

High Impedance Node Check Examples<br />

INTCLK :<br />

X AXIS WINDOW: [0.0 4.907E-06]Impedance min: 6.355E+07 | max: 1.858E+11 | average: 9.283E+09<br />

N12OK :<br />

X AXIS WINDOW: [0.0 6.544E-06]Impedance min: 2.924E+08 | max: 4.544E+11 | average: 9.459E+10<br />

NET21 :<br />

X AXIS WINDOW: [2.048E-08 5.876E-06]Impedance min: 1.420E+07 | max: 1.507E+11 | average:<br />

9.603E+10<br />

X AXIS WINDOW: [8.648E-06 9.292E-06]Impedance min: 1.045E+07 | max: 1.652E+11 | average:<br />

1.593E+11<br />

NET22 :<br />

X AXIS WINDOW: [2.048E-08 5.876E-06]Impedance min: 1.268E+07 | max: 1.562E+11 | average:<br />

1.034E+11<br />

X AXIS WINDOW: [8.643E-06 9.294E-06]Impedance min: 1.736E+07 | max: 1.652E+11 | average:<br />

1.518E+11<br />

NET23 :<br />

X AXIS WINDOW: [0.0 1.551E-06]Impedance min: 6.806E+07 | max: 2.368E+09 | average: 6.699E+08<br />

X AXIS TIME: 3.588E-06 Impedance: 8.154E+07<br />

X AXIS WINDOW: [3.714E-06 3.965E-06]Impedance min: 2.518E+07 | max: 8.157E+07 | average:<br />

4.615E+07<br />

X AXIS WINDOW: [6.503E-06 7.299E-06]Impedance min: 1.419E+07 | max: 2.977E+09 | average:<br />

2.819E+09<br />

X AXIS WINDOW: [9.298E-06 9.322E-06]Impedance min: 1.255E+07 | max: 3.656E+10 | average:<br />

1.664E+10<br />

X AXIS WINDOW: [9.480E-06 1.000E-05]Impedance min: 1.026E+07 | max: 1.186E+07 | average:<br />

1.123E+07<br />

See Also<br />

• .HIZ in the Eldo Reference Manual<br />

• .OPTION ADIT_CHECK in the Eldo Reference Manual<br />

Related Topics<br />

High Impedance Node Check Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

High Impedance Node Check Examples<br />

In this example Eldo only checks the nodes connected to a gate through resistors or voltage<br />

sources, that is, inside the subcircuit pass_gate the nodes input1, input2 and n2 are checked. All<br />

nodes which have an equivalent impedance higher than 1e8 are displayed.<br />

350<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

High Impedance Node Check Examples<br />

***** Pass Gate Example *******<br />

.HIZ type=gate r=1e8<br />

.subckt pass_gate input1 input2 output<br />

mp1 vdd input1 n1 vdd pmos L=5e-7 W=2e-5<br />

mn1 n1 input1 0 0 nmos L=8E-07 W=2E-06<br />

mn3 n2 input2 n1 0 nmos L=8E-07 W=2E-06<br />

mp2 vdd n2 output vdd pmos L=5e-7 W=2e-5<br />

mn2 output n2 0 0 nmos L=8E-07 W=2E-06<br />

.ends<br />

vdd vdd 0 3.3<br />

vin1 in1 0 pwl (0 0 9n 0 10n 3.3 15n 3.3 15.5n 0)<br />

vin2 in2 0 pwl (0 5.3 2n 5.3 4n 5.3 10n 4.3 12n 0)<br />

x1 in1 in2 out pass_gate<br />

r1 out 0 1k<br />

.probe tran V I<br />

.plot tran vgs(*) vgd(*) vds(*)<br />

.tran 20u 20u<br />

.end<br />

No report file is specified on the command, so the HiZ information is written to the .chi file, for<br />

example:<br />

***HIGH IMPEDANCE DETECTION<br />

TRANSIENT ANALYSIS<br />

TEMPERATURE = 2.7000E+01 Celsius<br />

*> X1.N2 :<br />

*> X AXIS WINDOW: [6.740E-09 9.819E-09]<br />

Impedance min: 2.725E+08 | max: 9.999E+11 | average: 8.478E+11<br />

*> X AXIS WINDOW: [1.172E-08 2.000E-05]<br />

Impedance min: 8.150E+08 | max: 9.997E+11 | average: 9.859E+11<br />

See Also<br />

• .HIZ in the Eldo Reference Manual<br />

• .OPTION ADIT_CHECK in the Eldo Reference Manual<br />

Related Topics<br />

High Impedance Node Checks<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

Eldo® User's Manual, 15.3 351


Specifying Simulation Output<br />

Limiting Output Information<br />

Limiting Output Information<br />

The following options can be specified to limit the quantity of output information written to the<br />

.chi file.<br />

• .OPTION LIMPROBE (in the Eldo Reference Manual)<br />

Sets the maximum number of nodes that may be monitored via the .PROBE command.<br />

• .OPTION NOASCII (in the Eldo Reference Manual)<br />

Disables the printing of the output waveforms and print tables in the ASCII output .chi<br />

file.<br />

• .OPTION NOASCIIPLOT (in the Eldo Reference Manual)<br />

Set by default. Disables the printing of the output waveforms in the ASCII output .chi<br />

file. Print tables are still generated.<br />

• .OPTION NODCINFOTAB (in the Eldo Reference Manual)<br />

Disables the printout of the DC node information in the ASCII output .chi file.<br />

• .OPTION NOMOD (in the Eldo Reference Manual)<br />

Suppresses the printout of the model parameters in the ASCII output .chi file.<br />

• .OPTION NOOP (in the Eldo Reference Manual)<br />

Suppresses the printing of operating point (OP) table in the ASCII output .chi file.<br />

• .OPTION NOTRC (in the Eldo Reference Manual)<br />

Suppress the rewriting of the circuit description file in the ASCII output .chi file.<br />

• .OPTION PREVENT_TRUNCATE_EXPRESSION_REPRESENTATION=0 (in the<br />

Eldo Reference Manual)<br />

Prevents the truncation of the string representation of long expressions in the simulation<br />

outputs.<br />

• .OPTION PRINT_ACCT=0 (in the Eldo Reference Manual)<br />

Disables the printing of accounting information in the ASCII output .chi file.<br />

• .OPTION PRINT_ACOP=0 (in the Eldo Reference Manual)<br />

Disables the printing of the operating point information in the ASCII output .chi file<br />

when a .AC analysis is specified.<br />

• .OPTION PRINT_DC=0 (in the Eldo Reference Manual)<br />

Disables the printing of the initial transient solution (or small signal bias) in the ASCII<br />

output .chi file.<br />

352<br />

Eldo® User's Manual, 15.3


• .OPTION PRINT_OPTION=0 (in the Eldo Reference Manual)<br />

Specifying Simulation Output<br />

Limiting the Size of Transient Output Files<br />

Disables the printing of the option summary in the ASCII output .chi file.<br />

Limiting the Size of Transient Output Files<br />

At least three options are available in Eldo to limit the size of the output files for transient<br />

simulation: option OUT_STEP, option OUT_RESOL, and option INTERP.<br />

Of course, the many options related to the accuracy settings do generally have an impact upon<br />

the number of computed points and thus upon the size of the output files, but this is only<br />

qualitative and indirect. There is no way to quantitatively relate, say the eps or the reltol<br />

specification, to the final size of the output files—this all depends on the circuit. In contrast, the<br />

options discussed in this section enable controlling the amount of data in a predictable way (the<br />

OUT_RESOL option only sets a maximum size, whereas OUT_STEP and INTERP enable<br />

exact predictions). These options may have a considerable impact on the overall simulation<br />

speed, so it is important to define exactly what has to be achieved.<br />

• .OPTION OUT_STEP=val (in the Eldo Reference Manual)<br />

The .OPTION OUT_STEP=val command forces a timepoint at each multiple of val, and<br />

only these timepoints are stored in the binary output files. These timepoints are forced,<br />

that is, they come in addition to the normal timepoints picked by the simulator. When<br />

using this option, the timepoints are forced, that is, they are computed even if they are<br />

not required from an accuracy point of view. One of the applications of the OUT_STEP<br />

option is for FFT computations. In this case, it is frequent that the <strong>user</strong> wants to have<br />

exact, computed points, at regularly spaced timepoints, to minimize the interpolation<br />

artifacts when computing an FFT. However the OUT_STEP option is also a way to<br />

control the size of the output files, even if no FFT is scheduled. If not chosen properly, a<br />

possible risk of the OUT_STEP option is to slowdown the simulation unnecessarily, by<br />

forcing Eldo to compute more points than needed. This is particularly true if they are<br />

long periods of time with little or no activity in the simulation. Forcing a short out_step<br />

will force many useless timepoints during these periods, whereas Eldo would normally<br />

accelerate and compute fewer timepoints. This option is however preferred by some<br />

<strong>user</strong>s because the output waveforms ultimately contain only computed points, without<br />

interpolation.<br />

• .OPTION OUT_RESOL=resolution (in the Eldo Reference Manual)<br />

Another option used to reduce the size of the output file is the OUT_RESOL option.<br />

With this option, the <strong>user</strong> can specify the smallest resolution of the output file.<br />

Computed data is then dumped only if the current time is greater than the previously<br />

written timepoint, augmented by the resolution. For example if OUT_RESOL is set to<br />

1ns, and the simulator has written data at time t=24.65ns, all timepoints computed until<br />

t=25.65ns will not be dumped. The first timepoint after t=25.65ns will be dumped. This<br />

could be t=25.76ns for example, or t=27ns if the simulator can accelerate in this period<br />

of time. No timepoints are forced other than those naturally picked by the simulator.<br />

Eldo® User's Manual, 15.3 353


Specifying Simulation Output<br />

Incremental Saving of the JWDB Database<br />

Thus the spacing of timepoints in the output file is generally non-constant. The<br />

maximum average density of timepoints in the output file is determined by the<br />

resolution parameter of the option. The minimum density is not guaranteed, neither<br />

locally, nor globally. This option is an interesting alternative, combining the certainty<br />

that the points in the output are computed points only (no interpolation error), and the<br />

ability to handle low activity periods efficiently. It is however, generally not well suited<br />

for simulations where an FFT must be computed, because of the non-constant spacing of<br />

the timepoints (this would result in interpolation errors when re-sampling for the FFT).<br />

• .OPTION INTERP=1 (in the Eldo Reference Manual)<br />

Both OUT_STEP and OUT_RESOL options dump only computed points to the output<br />

file. Sometimes it may be desirable to obtain equally spaced time points, but forcing<br />

timepoints (with OUT_STEP for example) would result in an unacceptable CPU<br />

penalty. In these cases, interpolating may be useful. An interpolation option is available<br />

to force Eldo to sample the output data along the parameter of the .TRAN<br />

command. If using the option INTERP=1, the transient output waveforms are<br />

interpolated, and the timepoints written to the file are aligned with multiples of <br />

exactly. For example, if using both the following:<br />

.tran 1ns 100ns<br />

.option interp=1<br />

the output waveforms will contain exactly 101 points (time 0 is always included),<br />

spaced by 1ns. Glitches shorter than 1ns may not be caught in the resulting waveform.<br />

This is a radical way to reduce the size of the binary output files (.wdb). However, the<br />

written data is obtained by interpolation, thus including an unpredictable amount of<br />

interpolation error. During low-activity periods, Eldo still picks the largest possible<br />

timesteps which enable the accuracy requirements to be met, and fills the output data<br />

with interpolated data (at no or little cost, as opposed to the OUT_STEP technique<br />

discussed previously).<br />

Related Topics<br />

Error and Warning Message Classification<br />

Error and Warning Messages<br />

Plotting, Printing and Probing<br />

Incremental Saving of the JWDB Database<br />

By default, Eldo sends simulation results to the JWDB server, which stores them in memory and<br />

then generates the .wdb file at the end of the simulation. To invoke incremental saving, forcing<br />

Eldo to save JWDB format simulation results in to a .wdb file before the end of the simulation,<br />

invoke Eldo with the -jwdb_threshold argument. Simulation results will be saved each time the<br />

simulation result size has reached threshold value (default is 100 MB).<br />

354<br />

Eldo® User's Manual, 15.3


Specifying Simulation Output<br />

Incremental Saving of the JWDB Database<br />

This can be useful to avoid losing JWDB results from a very long Eldo simulation in case of a<br />

JWDB server or machine problem.<br />

Tip<br />

See “Running Eldo” in the Eldo Reference Manual.<br />

Related Topics<br />

Invoking Eldo<br />

Eldo® User's Manual, 15.3 355


Specifying Simulation Output<br />

Incremental Saving of the JWDB Database<br />

356<br />

Eldo® User's Manual, 15.3


Chapter 9<br />

Analyzing Simulation Results<br />

This chapter describes how to analyze the results of your Eldo simulation. Simulation results<br />

can be viewed as waveforms using the EZwave waveform viewer. A SPICE compatible output<br />

log file containing ASCII data, including results and error messages, is generated.<br />

Output Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357<br />

Output Files Generated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358<br />

Interpreting the Output Log (.chi) File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363<br />

Output Log (.chi) File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363<br />

Simulation Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365<br />

Locating Eldo Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368<br />

Error and Warning Message Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369<br />

EZwave Joint Waveform Database (JWDB). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370<br />

EZwave Graph Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371<br />

Displaying Eldo Simulation Data in EZwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372<br />

Run Eldo With EZwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372<br />

Complete Eldo Simulation and View Simulation Data Later. . . . . . . . . . . . . . . . . . . . . . . 373<br />

EZwave Reload Option. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374<br />

Manual Status Update. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374<br />

Marching Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375<br />

Diagnosing Convergence and Performance Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377<br />

Non-Convergence Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377<br />

Time Step Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

Performance Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

Using the Statistics File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385<br />

Statistics File Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386<br />

Output Types<br />

Eldo can generate three types of output:<br />

• Graphical output (.wdb) for the EZwave waveform viewer.<br />

• Measurements from the results of simulation; either scalar or vector.<br />

• Tables and reports in the ASCII output (.chi) file and additional files.<br />

Eldo® User's Manual, 15.3 357


Analyzing Simulation Results<br />

Output Files Generated<br />

Related Topics<br />

Tip<br />

You can view ASCII output files with the AMS Results Browser.<br />

Output Files Generated<br />

Interpreting the Output Log (.chi) File<br />

EZwave Joint Waveform Database (JWDB)<br />

Specifying Simulation Output<br />

Output Files Generated<br />

Eldo uses a number of different file types to accept control information and to provide results of<br />

interest.<br />

Table 9-1 contains a list of the file extensions Eldo uses, and where applicable provides a link to<br />

the description of the file. is the name of the input netlist control file to be simulated<br />

without the extension. For example, if the name of the input file is called test.cir, the associated<br />

.wdb is test.wdb.<br />

The files not generated by default are only produced by Eldo when the appropriate options have<br />

been set in the input file or command line flags.<br />

Table 9-1. Eldo Standard Output Files<br />

File Extension<br />

Description<br />

Files Generated By Default<br />

.chi<br />

Main output log file containing ASCII data, including results and<br />

error messages.<br />

See “Interpreting the Output Log (.chi) File” on page 363.<br />

You can view .chi files with the AMS Results Browser.<br />

.wdb<br />

Default when graphical output specified in netlist (option WDB<br />

or -gwl wdb — default).<br />

A binary output file generated by default for mixed-signal JWDB<br />

format files. Viewed with the EZwave waveform viewer.<br />

By default, using the .wdb format, the .EXTRACT and .MEAS<br />

waveforms are also saved inside the EXT folder in the main .wdb<br />

file. Waveforms defined by .DEFWAVE commands combined<br />

with .PLOT are saved inside the appropriate analysis folder (for<br />

example TRAN) in the main .wdb file.<br />

See “EZwave Joint Waveform Database (JWDB)” on page 370.<br />

358<br />

Eldo® User's Manual, 15.3


File Extension<br />

Table 9-1. Eldo Standard Output Files (cont.)<br />

Description<br />

Analyzing Simulation Results<br />

Output Files Generated<br />

.swd<br />

Default when graphical output specified in netlist with .PLOT<br />

command (option WDB or -gwl wdb — default).<br />

A saved windows JWDB output file used by the EZwave<br />

waveform viewer. See “EZwave Graph Windows” on page 371.<br />

.id<br />

Contains the identifiers of the EZwave JWDB server used by<br />

Eldo, to enable marching waveforms in EZwave. When you open<br />

a wdb file in EZwave, it first tries to connect to the server in the<br />

.id file. This is necessary because the file written on disk is<br />

incomplete until the simulation ends.<br />

.errm.log ASCII file containing warning/error messages. See “Locating<br />

Eldo Messages” on page 368.<br />

Additional Files Not Generated By Default<br />

.ext.wdb 1 Contains extraction or waveform information. Created when<br />

using a .EXTRACT command in the netlist with option<br />

EXTFILE specified (using the default .wdb format). This file<br />

will not always be output, it depends on the type of simulation<br />

and the specification of the .EXTRACT command.<br />

See “Extracting Information” on page 321.<br />

.meas.wdb Contains extraction or waveform information. Created when the<br />

commands .EXTRACT, .MEAS, or .PLOT W(XX) are present<br />

in an input netlist with option MEASFILE specified (using the<br />

default .wdb format). This file will not always be output, it<br />

depends on the type of simulation and the specification of the<br />

.EXTRACT, .MEAS, or .PLOT W(XX) command.<br />

See .OPTION MEASFILE in the Eldo Reference Manual.<br />

.aex<br />

Contains extraction/measurement information. Created when<br />

option AEX is used in conjunction with .EXTRACT or .MEAS<br />

commands. See .OPTION AEX in the Eldo Reference Manual.<br />

You can view .aex files with the AMS Results Browser.<br />

.cml<br />

Log of input commands in interactive mode.<br />

See “Eldo Interactive Mode” on page 1457.<br />

.hiz<br />

Contains results of HiZ analysis for .DCHIZ, .HIZ and option<br />

ADIT_CHECK commands.<br />

See the .HIZ command in the Eldo Reference Manual.<br />

You can view .hiz files with the AMS Results Browser.<br />

.pls<br />

S parameters file containing a list of poles and residues.<br />

See “Working with S, Y, Z Parameters” on page 683.<br />

Eldo® User's Manual, 15.3 359


Analyzing Simulation Results<br />

Output Files Generated<br />

File Extension<br />

.pz<br />

.stat<br />

.dex<br />

.otm<br />

.ops<br />

.op<br />

.opX<br />

.probeop<br />

.mapop<br />

.files_dump<br />

.iic<br />

.sav<br />

.sfo, .yfo, .hfo,<br />

.nfo, .gfo, .tfo, .afo, .zfo<br />

.nactivity<br />

.activity<br />

.trX<br />

.acX<br />

.swX<br />

.mtX<br />

.ftX<br />

Table 9-1. Eldo Standard Output Files (cont.)<br />

Description<br />

Output file used by the Pole Zero post-processor. Created when a<br />

.PZ command is specified in the netlist file.<br />

See “Pole Zero Analysis” on page 230.<br />

You can view .pzr files (generated from .pz files) with the AMS<br />

Results Browser.<br />

Created when Eldo is invoked with the -stat argument. This file<br />

should be sent to a support engineer in the event of a problem.<br />

See “Statistics File” on page 57.<br />

Design of experiments output file. Created when a .DEX<br />

command is specified in the netlist file.<br />

See “Statistical Experimental Design and Analysis” on page 555.<br />

Optimizer output file. Created when a .OPTIMIZE command is<br />

specified in the netlist file.<br />

See “Optimization” on page 587.<br />

Operating point information output files. Created when a .OP<br />

command is specified in the netlist file.<br />

See the .OP command and .OPTION PROBEOP in the Eldo<br />

Reference Manual.<br />

File containing all the files opened by Eldo (except temporary<br />

files) for a simulation. Useful for packaging an Eldo testcase.<br />

See .OPTION DUMP_FILE_LIST in the Eldo Reference<br />

Manual.<br />

Saved simulation information to be reused for additional<br />

simulations.<br />

See the .SAVE command option in the Eldo Reference Manual.<br />

S, Y, Z parameter output file specified with the .FFILE<br />

command.<br />

See “Working with S, Y, Z Parameters” on page 683.<br />

Circuit activity check. List of inactive (or active) nodes inside a<br />

design.<br />

See the .ACTIVITY command option in the Eldo Reference<br />

Manual.<br />

Generated with option COMPAT or -compat.<br />

HSPICE output files created during simulation in the netlist<br />

control file directory.<br />

See “HSPICE Compatibility” on page 162.<br />

360<br />

Eldo® User's Manual, 15.3


File Extension<br />

_csdf.trX<br />

_csdf.acX<br />

_csdf.swX<br />

.fsdb<br />

..fsdb<br />

Multiple PSF output files<br />

..wdf<br />

.spi3<br />

.cou<br />

.ext<br />

Table 9-1. Eldo Standard Output Files (cont.)<br />

Description<br />

Analyzing Simulation Results<br />

Output Files Generated<br />

Generated with option CSDF or -gwl csdf.<br />

CSDF output file created during simulation in the netlist control<br />

file directory.<br />

See the -gwl argument in the Eldo Reference Manual.<br />

Generated with option FSDB or -gwl fsdb, depending on the<br />

setting of option FSDB_SINGLE_FILE.<br />

Custom WaveView compatible output file.<br />

If option FSDB_SINGLE_FILE is not set, is the<br />

name of the corresponding JWDB folder.<br />

See the -gwl argument in the Eldo Reference Manual.<br />

Generated with option PSF or -gwl psf.<br />

Format for Cadence viewer (used with Artist Link).<br />

PSF output file created during simulation in the netlist control<br />

file directory. One output file is created for each analysis. The<br />

list of directories and files created by the PSF format is printed at<br />

the end of the .chi file.<br />

See the -gwl argument in the Eldo Reference Manual.<br />

Generated with option WDF or -gwl wdf.<br />

Custom WaveView compatible output file.<br />

is the name of the corresponding JWDB folder.<br />

See the -gwl argument in the Eldo Reference Manual.<br />

Generated with option SPI3BIN or SPI3ASC.<br />

SPICE3 compatible output file.<br />

See Simulator Compatibility Options in the Eldo Reference<br />

Manual.<br />

(option COU or -gwl cou)<br />

Legacy output format. A binary output file containing analog<br />

simulation results data. A special interface is provided to access<br />

this data from your own post-processor software if required.<br />

See the Eldo cou Library User’s Manual for more details.<br />

(option COU or -gwl cou)<br />

Legacy output format. Contains extraction or waveform<br />

information. Created when using a .EXTRACT command in the<br />

netlist and the .cou format output is specified. This file will not<br />

always be output, it depends on the type of simulation and the<br />

specification of the .EXTRACT command.<br />

Eldo® User's Manual, 15.3 361


Analyzing Simulation Results<br />

Output Files Generated<br />

File Extension<br />

.meas<br />

.ali<br />

.hmp<br />

Table 9-1. Eldo Standard Output Files (cont.)<br />

Description<br />

(option COU or -gwl cou)<br />

Legacy output format. Contains extraction or waveform<br />

information. Created when the commands .EXTRACT, .MEAS,<br />

or .PLOT W(XX) are present in an input netlist and the .cou<br />

format output is specified. This file will not always be output, it<br />

depends on the type of simulation and the specification of the<br />

.EXTRACT, .MEAS, or .PLOT W(XX) command.<br />

(option COU or -gwl cou)<br />

Legacy output format. Cou output file to define waveform<br />

aliases.<br />

Legacy output format. Cou output file contains results for each<br />

noise analysis. Created when option KEEP_HMPFILE is used in<br />

conjunction with the .NOISETRAN command.<br />

See the .NOISETRAN command in the Eldo Reference Manual.<br />

1.The four extract/measurement types of file (.ext, .ext.wdb, .meas, .meas.wdb) are also generated when<br />

functions are used in .DEFWAVE commands. In most cases, the result of such functions are known only<br />

at the end of the simulation so the waves issued from a .DEFWAVE can not be plotted in the .cou output<br />

file, but only in a specific file generated at the end of the simulation. These types of file are not generated<br />

if you do not use .PLOT or .PRINT commands in the netlist or options EXTFILE or MEASFILE specified.<br />

Related Topics<br />

Interpreting the Output Log (.chi) File<br />

Eldo Input and Output Files<br />

Invoking Eldo<br />

362<br />

Eldo® User's Manual, 15.3


Interpreting the Output Log (.chi) File<br />

Analyzing Simulation Results<br />

Interpreting the Output Log (.chi) File<br />

After a simulation is complete, Eldo writes simulator information to an output log (.chi) file<br />

containing ASCII data. This file contains details of the simulation including any warning or<br />

error messages, which may have been encountered during simulation.<br />

Depending on the analysis defined, the structure will be different, for example with .ALTER<br />

and .STEP commands there is usually a separate section for each analysis performed with<br />

header information and so on. Each section corresponds to an analysis defined in netlist. See<br />

“Setting Up An Analysis” on page 203 for example outputs for different types of analysis.<br />

Tip<br />

You can view .chi files with the AMS Results Browser.<br />

Output Log (.chi) File Contents<br />

A typical ASCII output log (.chi) file contains various information related to the netlist and the<br />

simulation.<br />

• System Information.<br />

Information about the machine used for simulation including: clock frequency, the<br />

number of cores, the number of threads used, and so on.<br />

• Date, Eldo version number, simulation time.<br />

• Circuit name (title).<br />

• Input Listing.<br />

Netlist with line numbers.<br />

• Information about netlist analysis (errors and warnings).<br />

• Generation.<br />

Information about the database generation.<br />

• Information about compilation.<br />

o<br />

Number of elements, nodes, input signals, and so on, for example:<br />

Eldo® User's Manual, 15.3 363


Analyzing Simulation Results<br />

Output Log (.chi) File Contents<br />

o<br />

44 elements<br />

29 nodes<br />

11 input signals<br />

Detail about objects and nodes found in the design...<br />

Number of nodes 29<br />

Number of intrinsic nodes 0<br />

Number of input signals 11<br />

Number of resistors 15<br />

Number of short-circuited resistors 0<br />

Number of floating capacitors 8<br />

Number of grounded capacitors 4<br />

Number of inductors 2<br />

Number of voltage sources 7<br />

Number of current sources 0<br />

Number of dependent sources 2<br />

Number of diodes 4<br />

Number of BJT 0<br />

Number of JFET 0<br />

Number of MOS 0<br />

Number of SWITCHES 0<br />

Number of transmission lines 0<br />

Total number of elements 48<br />

Eldo version and compilation date.<br />

• Simulation temperature.<br />

• Option Summary.<br />

Information about options.<br />

• Information about DC analysis.<br />

• Accounting information.<br />

Information about simulation, for example:<br />

364<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Simulation Counters<br />

Number of nodes 29<br />

Number of intrinsic nodes 2<br />

Number of input signals 16<br />

Number of resistors 1<br />

Number of floating capacitors 2<br />

Number of grounded capacitors 7<br />

Number of inductors 5<br />

Number of voltage sources 14<br />

Number of current sources 0<br />

Number of dependent sources 2<br />

Number of diodes 0<br />

Number of BJT 0<br />

Number of JFET 0<br />

Number of MOS 0<br />

Number of SWITCHES 0<br />

Number of transmission lines 2<br />

CFAS devices 3<br />

Total number of elements simulated 36<br />

Number of equations 26<br />

Number of non-zero terms 68<br />

Percent Zeros 89.94<br />

Number of Newton iterations 10718<br />

Average number of Newton iterations 2.012<br />

Number of accepted time steps 5328<br />

Number of rejected time steps 15<br />

due to LTE 0<br />

due to Newton 0<br />

Evaluation of active devices 0<br />

Memory size (MB) 6.228<br />

Number of time point rejection due<br />

to 'CROSS evt' synchronization....15<br />

• Total simulation time.<br />

o<br />

o<br />

o<br />

o<br />

CPU time.<br />

Related Topics<br />

Global CPU time.<br />

Global elapsed time.<br />

Job start and end time.<br />

Simulation Counters<br />

Error and Warning Message Classification<br />

Invoking Eldo<br />

Simulation Counters<br />

The information described in this topic is only generated with option OLDACCT specified. By<br />

default, this option is disabled. Enable this option for backward compatibility with older postprocessing<br />

scripts.<br />

Eldo® User's Manual, 15.3 365


Analyzing Simulation Results<br />

Simulation Counters<br />

Tip<br />

See “.OPTION OLDACCT” in the Eldo Reference Manual.<br />

After a simulation has been completed, Eldo writes simulation information, in tabular form, to<br />

the ASCII output (.chi) file. The following information is output:<br />

• Node and Element Information<br />

• Node and Element Information<br />

• Node and Element Information<br />

• Node and Element Information<br />

• Node and Element Information<br />

Node and Element Information<br />

Information concerning circuit nodes and elements is written to the .chi file in the following<br />

format:<br />

NUNODS NCNODS NUMNOD NUMEL DIODES BJT JFET MOSFET<br />

16 16 16 22 0 0 0 19<br />

where the parameters have the following definitions:<br />

NUNODS Number of nodes before subcircuit expansion. Corresponds to the number of top<br />

nodes, intrinsic nodes of devices not included.<br />

NCNODS Number of nodes after subcircuit expansion.<br />

NUMNOD Total number of nodes including those created by parasitic resistances.<br />

NUMEL Total number of elements contained in the circuit.<br />

DIODES Number of diode elements contained in the circuit.<br />

BJT Number of BJT elements contained in the circuit.<br />

JFET Number of JFET elements contained in the circuit.<br />

MOSFET Number of MOSFET transistor elements contained in the circuit.<br />

Grounded Capacitors Information<br />

Information concerning grounded capacitors is written to the .chi file in the following format:<br />

NUMGC<br />

1<br />

366<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Simulation Counters<br />

where the parameters have the following definitions:<br />

NUMGC Number of grounded capacitors not taken into account by NUMEL, see “Node and<br />

Element Information” on page 366.<br />

Matrix Information<br />

When Eldo creates a matrix, the following information is written to the .chi file:<br />

NSTOP NTERM PERSPA<br />

13 122 7.219e+01<br />

where the parameters have the following definitions:<br />

NSTOP Number of lines in the matrix<br />

NTERM Number of terms in the matrix<br />

PERSPA Sparsity coefficient in percent (%)<br />

Newton Block Information<br />

When Eldo creates a number of Newton blocks, the following information is written to the .chi<br />

file:<br />

NBLOCKS NODEBLK MAXSIZE MINSIZE<br />

where the parameters have the following definitions:<br />

NBLOCKS Total number of Newton blocks created<br />

NODEBLK Number of nodes contained in each Newton block<br />

MAXSIZE Size of the biggest Newton block<br />

MINSIZE Size of the smallest Newton block<br />

Convergence Information<br />

Information concerning circuit nodes and elements is written to the .chi file in the following<br />

format:<br />

NUMTTP NUMRTP LTERTP INWCALL ITERNW MEMSIZE<br />

80 15 2 243 2.000e+00 581896<br />

NDEVCALL NKIRCH NMAXCALL ITERM LATENCY<br />

16038 0 9 1.00e+00 5.208e+00%<br />

where the parameters have the following definitions:<br />

Eldo® User's Manual, 15.3 367


Analyzing Simulation Results<br />

Locating Eldo Messages<br />

NUMTTP Number of steps accepted by the simulator and sent to the binary output (.wdb) file<br />

NUMRTP Number of steps rejected due to the truncation error being too large<br />

LTERTP Number of time steps rejected due to LTE<br />

INWCALL Total number of iterations or Newton calls needed to solve the Newton blocks<br />

ITERNW Total number of Newton calls for .OP, .DC and .AC analyses; average number of<br />

Newton calls needed to achieve convergence for a .TRAN analysis<br />

MEMSIZE Memory size allocated to the circuit by Eldo<br />

NDEVCALL Number of device calls<br />

NKIRCH Number of calls or iterations needed to solve Kirchoff’s Law (OSR only)<br />

NMAXCALL Maximum number of calls needed to solve a time or DC point<br />

ITERM Average number of OSR loops<br />

LATENCY Percentage of latency in the circuit<br />

Related Topics<br />

Interpreting the Output Log (.chi) File<br />

Speed and Accuracy<br />

Locating Eldo Messages<br />

Error, warning, and information messages are not all grouped together in the same place inside<br />

the output log file (.chi) so sometimes they can be difficult to locate.<br />

Invoke Eldo with the -ovstatus command-line argument to generate in the standard output<br />

(stdout) a summary message at the end of simulation informing of any warnings and errors, for<br />

example:<br />

Simulation finished.<br />

There are 3 parsing warning(s).<br />

There are 1 simulation error(s).<br />

including %ld simulation non-convergence error(s).<br />

The first line indicates the simulation has finished and the output file transcript is complete,<br />

with or without errors and warnings. The second line indicates the number of parsing errors or<br />

368<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Error and Warning Message Classification<br />

warnings. The third line indicates the number of simulation errors or warnings. If there are nonconvergence<br />

errors, then an additional line will be displayed detailing these.<br />

This can be useful if using a browser to analyze the status of a run.<br />

If errors or warnings have been generated, an error message log file, .errm.log,<br />

is created. This file contains the error and warning messages used by the error message<br />

manager. To disable the generation of this error message log file, specify option NOERRMLOG<br />

or invoke Eldo with -noerrmlog.<br />

Related Topics<br />

Error and Warning Message Classification<br />

Error and Warning Messages<br />

Error and Warning Message Classification<br />

When an error or warning message is detected during parsing of the simulation input file, a<br />

message is printed out specifying the source line number and text containing the error.<br />

Warnings<br />

Warnings may be caused by improper use of commands or parameters which are then ignored<br />

by the analyzer. A warning does not prevent the continuation of analysis and simulation. By<br />

default, Eldo displays each type of node connection fault warnings (107, 108, 113 and 252) only<br />

three times; to override this default use the MSGNODE option.<br />

By default, all warnings are displayed by Eldo. Specify option NOWARN to suppress the<br />

display of all warnings or specify it together with a message ID to only suppress that warning.<br />

In order for this option to be taken into account, place it before the section of the netlist<br />

generating the warnings, ideally place this option at the beginning of the netlist.<br />

Syntax Errors<br />

Error messages usually result from commands or parameters which are not recognized by the<br />

analyzer. When a syntax error is detected the simulation does not continue. It is then necessary<br />

to edit .cir and correct the syntax error. In the printout .chi, the error<br />

location in the text is indicated by a “^” character, possibly accompanied by a message. The<br />

source line number and the source line may not be indicated if the syntax error is detected on a<br />

global basis without reference to a particular line.<br />

Effects<br />

In the event of a warning, execution continues. If a syntax error is detected on the first analysis<br />

step (lexical and syntax analysis), circuit parsing continues until the end of this step, otherwise<br />

Eldo® User's Manual, 15.3 369


Analyzing Simulation Results<br />

EZwave Joint Waveform Database (JWDB)<br />

execution is aborted immediately. The numbers of errors and warnings found are displayed at<br />

the end of the first and second step.<br />

Note<br />

After an error has been detected by the analyzer, subsequent error messages may be<br />

unfounded. It is therefore recommended to modify the source file to eliminate the first error<br />

before attempting to interpret the other messages.<br />

See Also<br />

• .OPTION MSGNODE in the Eldo Reference Manual<br />

• .OPTION NOWARN in the Eldo Reference Manual<br />

Related Topics<br />

Locating Eldo Messages<br />

Error and Warning Messages<br />

EZwave Joint Waveform Database (JWDB)<br />

The EZwave viewer obtains waveform data by loading a database. By default, the EZwave<br />

viewer uses the Joint Waveform DataBase (JWDB) as its input format. Waveform data from the<br />

simulation is stored in the JWDB, where it can be loaded into the EZwave viewer. In the<br />

EZwave viewer, you can view a single database or multiple databases in a single session.<br />

JWDB is a true mixed-signal waveform database. It can hold many different waveform types,<br />

including analog (float, double or complex), histogram, spectral, scatter, Verilog, standard<br />

logic, VHDL char, buses and records, bit, boolean, string, integer (16, 32, or 64 bits) and <strong>user</strong>defined<br />

enumerated types. X-values can either be 64-bit integers or double-precision floatingpoint<br />

numbers. It can contain signals from the time and frequency domains, or any other domain<br />

that is needed.<br />

JWDB is also a multi-run database. Waveforms and buses are stored, managed, and analyzed as<br />

compound waveforms. In addition to compound waveforms, JWDB has hierarchies which<br />

enable waveforms to be placed in folders for further data management.<br />

Tip<br />

See the EZwave User’s and Reference Manual.<br />

Related Topics<br />

EZwave Graph Windows<br />

Displaying Eldo Simulation Data in EZwave<br />

370<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

EZwave Graph Windows<br />

EZwave Graph Windows<br />

The EZwave viewer can store graph windows and waveform databases for future use through<br />

.swd and .wdb files.<br />

An .swd file can store:<br />

• Waveforms associated with the graph window.<br />

• Window size, position, axis and background settings.<br />

• Complex waveform transformation settings.<br />

• Waveform display and cursor settings.<br />

Related Topics<br />

Tip<br />

See the EZwave User’s and Reference Manual.<br />

Displaying Eldo Simulation Data in EZwave<br />

Eldo® User's Manual, 15.3 371


Analyzing Simulation Results<br />

Displaying Eldo Simulation Data in EZwave<br />

Displaying Eldo Simulation Data in EZwave<br />

The Eldo simulator outputs waveform data that can be displayed by EZwave.<br />

EZwave works with Eldo in the following scenarios:<br />

Run Eldo With EZwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372<br />

Complete Eldo Simulation and View Simulation Data Later . . . . . . . . . . . . . . . . . . . . . 373<br />

EZwave Reload Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374<br />

Manual Status Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374<br />

Marching Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375<br />

Run Eldo With EZwave<br />

In this scenario, the Eldo simulator runs a complete simulation and outputs the data in JWDB<br />

format to be directly viewed by EZwave.<br />

Procedure<br />

1. You can use one of the following methods:<br />

• Invoke Eldo simulator from the command line as in the following example:<br />

<strong>eldo</strong> test.cir -ezwave &<br />

This command invokes the Eldo simulator and directs it to run a complete simulation<br />

and output the data to a file.<br />

The simulator regularly saves incremental data to the disk (by default, each 100Mbs<br />

of data). This enables you to run very large simulations without consuming too much<br />

memory.<br />

• Use the -noisaving argument to disable incremental saves inside the Eldo simulator.<br />

• Use a pre-defined configuration:<br />

<strong>eldo</strong> test.cir -ezwave -wdb_config config.swd &<br />

2. The simulator requests that EZwave display waveforms as defined in the config.swd file<br />

(this is an EZwave Save Window file) instead of the .PLOT statements defined in the<br />

netlist test.cir. If some post-processed waveforms were stored through config.swd, they<br />

will be automatically re-computed with new simulation data.<br />

3. When the simulation is completed, the simulator exits and EZwave remains until you<br />

exit the program.<br />

Tip<br />

See the EZwave User’s and Reference Manual.<br />

372<br />

Eldo® User's Manual, 15.3


Related Topics<br />

EZwave Joint Waveform Database (JWDB)<br />

Displaying Eldo Simulation Data in EZwave<br />

Analyzing Simulation Results<br />

Complete Eldo Simulation and View Simulation Data Later<br />

Complete Eldo Simulation and View Simulation<br />

Data Later<br />

In this scenario, the Eldo simulator runs a complete simulation and outputs the data in JWDB<br />

format to be read by EZwave. In EZwave, the data can be organized and the window contents<br />

can then be saved for later viewing.<br />

Procedure<br />

1. Invoke Eldo simulator as in the following example:<br />

<strong>eldo</strong> test.cir<br />

This command invokes the Eldo simulator and directs it to run a complete simulation<br />

and output the data to a file.<br />

Alternatively, if you want to reuse the JWDB server launched by Eldo for other Eldo<br />

simulations, use the -jwdb_servermode argument as in the following example:<br />

<strong>eldo</strong> test.cir -jwdb_servermode<br />

This setting can also be specified in the <strong>eldo</strong>.ini file. Refer to “Eldo Initialization File”<br />

on page 51 for further details.<br />

2. To display simulation results, invoke EZwave.<br />

3. In EZwave, use the File > Open menu to open the JWDB file generated by the<br />

simulator. The waveform data appears.<br />

You can organize data in different graph rows and create some post processing<br />

waveforms. You can save the window contents using the File > Save option and then<br />

reuse the “saved window” .swd file later on.<br />

Note<br />

For this release, the following limitations apply for this scenario:<br />

• The post-processed waveform is not automatically updated during the simulation.<br />

• If EZwave still displays data at the end of the simulation, the data is “reloaded” from<br />

the disk. This can be time-consuming.<br />

• Having EZwave display multiple-run simulation results may lead to internal errors.<br />

Eldo® User's Manual, 15.3 373


Analyzing Simulation Results<br />

EZwave Reload Option<br />

EZwave Reload Option<br />

The File > Reload option in EZwave is a shortcut to update waveform data in EZwave with<br />

new simulated data with a single action. It also automatically updates all post-processed<br />

waveform data.<br />

Procedure<br />

1. To use the reload functionality:<br />

2. Invoke Eldo simulator as in the following example:<br />

<strong>eldo</strong> test.cir<br />

This command invokes the Eldo simulator and directs it to run a complete simulation<br />

and output the data to a file.<br />

3. To display simulation results, invoke EZwave.<br />

4. In EZwave, use the File > Open option to open the JWDB file generated by the<br />

simulator. The waveform data appears.<br />

5. You can organize data in different graph rows and create some post processing<br />

waveforms.<br />

6. Modify simulation parameters in test.cir and run another simulation:<br />

<strong>eldo</strong> test.cir<br />

7. In EZwave, use the File > Reload option to update waveforms with new simulated data.<br />

Related Topics<br />

Tip<br />

See the EZwave User’s and Reference Manual.<br />

EZwave Joint Waveform Database (JWDB)<br />

Displaying Eldo Simulation Data in EZwave<br />

Manual Status Update<br />

Waveform data can be manually collected from a running simulation at an interval of your own<br />

choosing. This enables you to get a status update on a running simulation.<br />

Procedure<br />

1. Invoke Eldo simulator using one of the following methods:<br />

Command line invocation: Invoke with EZwave using the following command:<br />

<strong>eldo</strong> test.cir -ezwave &<br />

374<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Marching Update<br />

Output in JWDB format: Invoke the Eldo simulator and run a complete simulation as<br />

in the following example:<br />

<strong>eldo</strong> test.cir &<br />

Then invoke EZwave and use the File > Open option to open the .wdb file generated by<br />

the simulation.<br />

2. To update the data in the EZwave viewer, click the Update Waveform Data button in the<br />

EZwave toolbar. This updates displayed waveforms with new simulation data.<br />

Note<br />

For this release, the following limitation applies for this scenario:<br />

If jwdb_servermode is set (from the command line or in the <strong>eldo</strong>.ini file) when an<br />

Eldo simulation is invoked, the simulation output data cannot be accessed until after the<br />

simulation completes.<br />

Related Topics<br />

Tip<br />

See the EZwave User’s and Reference Manual.<br />

EZwave Joint Waveform Database (JWDB)<br />

Displaying Eldo Simulation Data in EZwave<br />

Marching Update<br />

Waveform data can be collected from a running simulation at a predefined set interval. This<br />

interval is set in EZwave and is run simultaneously with the Eldo simulator. This automates the<br />

process of updating waveform data viewed in EZwave.<br />

Procedure<br />

1. Invoke Eldo simulator using one of the following methods:<br />

Command line invocation: Invoke with EZwave with the following command:<br />

<strong>eldo</strong> test.cir -ezwave &<br />

Output in JWDB format: Invoke the Eldo simulator and run a complete simulation as<br />

in the following example:<br />

<strong>eldo</strong> test.cir &<br />

Then invoke EZwave and use the File > Open option to open the .wdb file generated by<br />

the simulation.<br />

2. In EZwave, select Edit > Options to invoke the EZwave Display Preferences dialog<br />

box. Select General from the list in the dialog box to open the General options page.<br />

Eldo® User's Manual, 15.3 375


Analyzing Simulation Results<br />

Marching Update<br />

3. In the General options page, go to the Marching Waveforms area and set the update<br />

interval by either of the following options:<br />

Automatically Update Displayed Waveforms Every X time interval: The time<br />

interval can be by second, minute, or hour.<br />

Automatically Update Displayed Waveforms Every X% of Simulation: This updates<br />

based on the percentage completion of the simulation.<br />

Be careful not to set too small of an interval. Setting a short interval increase the number<br />

of updates and then the amount of resources globally used to update the waveform data<br />

viewed in EZwave.<br />

Note<br />

The following limitation applies for this scenario:<br />

If jwdb_servermode is set (from command line or in the <strong>eldo</strong>.ini file) when an Eldo<br />

simulation is invoked, the simulation output data cannot be accessed until after the<br />

simulation completes.<br />

Related Topics<br />

Tip<br />

See the EZwave User’s and Reference Manual.<br />

EZwave Joint Waveform Database (JWDB)<br />

Displaying Eldo Simulation Data in EZwave<br />

376<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Diagnosing Convergence and Performance Issues<br />

Diagnosing Convergence and Performance<br />

Issues<br />

A set of diagnostics are available through the -diagmode command line argument to help you<br />

understand why a circuit does not behave as expected, or takes more time than expected to<br />

simulate.<br />

Diagnostics activated are:<br />

Non-Convergence Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377<br />

Time Step Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

Performance Diagnostics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

Non-Convergence Analysis<br />

The analysis of non-convergence issues is enabled with the -diagmode conv command line<br />

argument. When Eldo stops because of a non-convergence a file is generated named<br />

.noconv, used as an input for the convergence analysis (where filename is either the<br />

netlist name or the name specified by the -out argument).<br />

This functionality is only available with Eldo Classic.<br />

Note<br />

It is recommended to use the -outpath command line argument in<br />

conjunction with this command as many new files might be generated during the new<br />

simulation.<br />

The non-convergence file generated, .noconv, contains:<br />

• Time at which the non-convergence occurred.<br />

• Cause of the non-convergence (Newton or LTE).<br />

• List of nodes/devices for which the residual current is too high (Newton).<br />

• List of nodes for which the bias is changing too much from one iteration to another<br />

(Newton).<br />

Based on this information Eldo automatically generates plots of the nodes, for Voltage (V) and<br />

current contributions (IN), for the devices connected to the detected nodes. Doing so you can<br />

monitor how the voltage evolves on those nodes and monitor the total current contributions of<br />

each device connected on those nodes. All the automatic plots generated are referenced in a new<br />

folder of the simulation database named DEBUG_.<br />

For example:<br />

Eldo® User's Manual, 15.3 377


Analyzing Simulation Results<br />

Non-Convergence Analysis<br />

The -diagmode conv argument also activates two other analyses.<br />

• The first returns the nodes that are either leading to a time step rejection because of<br />

newton or because of the local truncation error.<br />

• The other is the “stiff signal” detection returning the 20 nodes with the steepest voltage<br />

variation.<br />

During the new simulation Eldo triggers some automatic analyses when it detects convergence<br />

difficulties. Eldo checks the characteristics of some of the devices (diodes, BJT, JFET, MOS<br />

and Verilog-A instances) connected to the nodes that are suspected as problematic. Eldo creates<br />

a new database, .diagmode.wdb (where filename is either the netlist name or the<br />

name specified by the -out argument), containing all the sweeps it performed, assuming the<br />

simulator detected at least one non-monotonous characteristic. Information is displayed in the<br />

terminal, for example:<br />

378<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Non-Convergence Analysis<br />

Note 88: DIAGMODE(CONV) checking devices behavior at time 151.2517296711Us...<br />

Note 90: Change sign detected while sweeping node XIOCDX.XR1.DX_RNWELL.N4<br />

Note 91: On wave number 6, IX(XIOCDX.XR1.DX_RNWELL.6) at -185.0000MV<br />

Note 90: Change sign detected while sweeping node XIOCDX.XR1.XI<br />

Note 91: On wave number 6, IX(XIOCDX.XR1.DX_RNWELL.6) at -185.0000MV<br />

Note 90: Change sign detected while sweeping node XIOCDX.LDMOS<br />

Note 91: On wave number 4, ICB(XIOCDX.XMN4_1.M_NMOSMV) at -356.0000MV<br />

Note 91: On wave number 5, QD(XIOCDX.XMN4_1.M_NMOSMV) at -365.0000MV<br />

Note 91: On wave number 8, QB(XIOCDX.XMN4_1.M_NMOSMV) at -1.3280 V<br />

Note 90: Change sign detected while sweeping node XIOCDX.GM12<br />

Note 91: On wave number 4, ICB(XIOCDX.XMN4_1.M_NMOSMV) at 803.0000MV<br />

Note 90: Change sign detected while sweeping node XIOCDX.GM12<br />

Note 91: On wave number 4, ICB(XIOCDX.XI12.XI_1.XMMN1.M_DX_NMOS) at 2.0000M V<br />

Note 91: On wave number 7, QS(XIOCDX.XI12.XI_1.XMMN1.M_DX_NMOS) at -184.0000MV<br />

Because this stage can take some time, when Eldo starts checking it displays the Note 88 each<br />

time. For each device connected to a problematic node Eldo does a voltage sweep of that node<br />

and checks the derivatives of the characteristics of the devices with respect to that node. If the<br />

sign of the derivative changes then it means that the characteristic is non-monotonous (Note 90)<br />

and Eldo prints the name of the curves for which the sign of the derivative changed (Note 91).<br />

Even if this is not always a problem for Newton, or if the convergence issue can come from<br />

something else, this is usually an unsatisfactory characteristic and it could slow convergence or<br />

even lead to non-convergence. If at least one characteristic was detected as non-monotonous<br />

then all the sweeps done at that particular time point are saved in the new .wdb database. If<br />

nothing is detected then nothing is saved.<br />

Example of a generated database:<br />

Eldo also generates a small netlist with the model card instantiated with the computed parameter<br />

values. The device is instantiated with all its nodes (including the internal nodes), each of these<br />

nodes connected to a voltage source so the bias condition is exactly the same as during the<br />

simulation at that particular time point. Eldo also creates the required plot for all the simulation<br />

characteristics of the device (current, charges, or internal states for the Verilog-A models). You<br />

Eldo® User's Manual, 15.3 379


Analyzing Simulation Results<br />

Time Step Management<br />

can then simulate a specific single device with the proposed DC sweep or you can try different<br />

DC sweeps if you want to check the characteristics for some other dimensions (for example,<br />

performing a sweep on some other nodes of the device). The generated filename is of the form:<br />

.time=.sweep=.device=.cir<br />

Tip<br />

See “Running Eldo” in the Eldo Reference Manual.<br />

Related Topics<br />

Time Step Management<br />

Performance Diagnostics<br />

Time Step Management<br />

The analysis of time step management is enabled with the -diagmode tstep command line<br />

argument. Use this if Eldo performs too many average Newton iterations or if it rejects too<br />

many time steps: if the ratio of accepted time steps compared to rejected time steps is lower than<br />

six then specify this argument to try to understand what is limiting the simulator.<br />

This flag behaves in a similar way to -diagmode conv, but does not use an extra file and can be<br />

run directly.<br />

Tip<br />

See “Running Eldo” in the Eldo Reference Manual.<br />

Related Topics<br />

Non-Convergence Analysis<br />

Performance Diagnostics<br />

Performance Diagnostics<br />

The analysis of performance diagnostics is enabled with the -diagmode perf command line<br />

argument to help you understand why a circuit does not behave as expected, or takes more time<br />

than expected to simulate.<br />

The performance diagnostics generates the following information:<br />

• “Nodes/Devices Impacting Time-Step Adjustment” on page 381<br />

• “CPU Time Evaluating Device Types” on page 383<br />

380<br />

Eldo® User's Manual, 15.3


Nodes/Devices Impacting Time-Step Adjustment<br />

Analyzing Simulation Results<br />

Performance Diagnostics<br />

The performance diagnostics records the nodes and/or devices which impact the Eldo time-step<br />

adjustment. The .FORMAT_STEP_LIMITERS command formats the output of the<br />

performance diagnostics report.<br />

The performance diagnostics generates the following outputs:<br />

• Statistics about time-step computation are returned in the ASCII .chi file output, for<br />

example:<br />

Rejection due to no-convergence<br />

100% (11/11) due to Node 2<br />

Rejection due to Local-Truncation-Error (fast variation of signal)<br />

100% (48/48) due to Node 2<br />

Step limitation due to Local-Truncation-Error (fast variation of<br />

signal)<br />

100% (147/147) due to Node 2<br />

Step limitation due to time-synchronization<br />

54.3% (19/35) due to Signal on node 1<br />

Other items not dumped because 15% of total number reached<br />

Summary of contribution per X instance<br />

100% (241/241) due to Top circuit<br />

The statistics generated are:<br />

o<br />

o<br />

o<br />

o<br />

Rejection due to no-convergence.<br />

Lists the nodes and/or devices which caused Eldo to not converge at a given time<br />

step, and which force Eldo to take a smaller time-step.<br />

Rejection due to Local-Truncation-Error (fast variation of signal).<br />

Lists the nodes/devices for which Eldo has detected too steep a variation, which<br />

caused a time step to be rejected.<br />

Step limitation due to Local-Truncation-Error (fast variation of signal).<br />

Lists the nodes and/or devices which caused Eldo to limit the increase of a time-step<br />

due to variation on the nodes/devices because it anticipates that the variation on<br />

these items will be large.<br />

Step limitation due to time-synchronization.<br />

Lists the nodes and/or devices on which an input signal is applied, and which cause<br />

time-step adjustment. Typically, Eldo forces points on the time point of a PWL<br />

statement.<br />

In each of the above sections, the nodes/devices are listed by order of importance: Eldo<br />

reports the first SORT_MAX items, or the list of items which would count for at least<br />

Eldo® User's Manual, 15.3 381


Analyzing Simulation Results<br />

Performance Diagnostics<br />

SORT_REL. At the end of the report, Eldo reports the X instance names most frequently<br />

seen in all sections.<br />

These outputs are already present in the Questa ADMS statistics file when the tool is<br />

invoked with the vasim -stat argument.<br />

• A wave named dbg(tstep) is created, containing the information about the time-step:<br />

which nodes had impact in the choice of that step. It shows the size of the time-step used<br />

by Eldo as well as the node that was most limiting that time-step. For example:<br />

Figure 9-1. EZwave Waveform Showing Nodes Impacting Time-Step<br />

• The 20 nodes which have the steepest voltage variation are returned in the ASCII .chi<br />

file output, along with values of the slope (and time at which the variation occurs). This<br />

is a comparison between the maximum variation of the nodes. Example output showing<br />

nodes with the largest slewrate:<br />

382<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Performance Diagnostics<br />

Node X1.Q1_C<br />

Slope = 5.5538E+01V/ns<br />

Time = 3.4168E+00ns<br />

Node X1.3<br />

Slope = 5.4934E+01V/ns<br />

Time = 3.4168E+00ns<br />

Node X1.2<br />

Slope = 5.3028E+01V/ns<br />

Time = 9.2519E-01ns<br />

Node X1.Q1_B<br />

Slope = 5.3025E+01V/ns<br />

Time = 9.2519E-01ns<br />

Node 1<br />

Slope = 5.1499E+01V/ns<br />

Time = 2.0100E+00ns<br />

...<br />

CPU Time Evaluating Device Types<br />

The performance diagnostics records the percentage of CPU time spent evaluating the different<br />

type of devices. This distribution is reported per Verilog-A model, and per type of MOS, BJT,<br />

Diode, and JFET model. Example output of simulation time taken by the device model<br />

evaluation:<br />

Device Type/Model Name | nb of instances | Elapsed CPU Time | 1st %* | 2nd %**<br />

-------------------------------------------------------------------------------------------<br />

Linear Elements | 180269 | 11s | | 39.04%<br />

-------------------------------------------------------------------------------------------<br />

Diodes | 1458 | 2s | | 7.14%<br />

BERKDIO | 1458 | 2s | 100.00% | 7.14%<br />

-------------------------------------------------------------------------------------------<br />

MOSFET | 18353 | 16s | | 53.65%<br />

BSIM3V3 | 18353 | 16s | 100.00% | 53.65%<br />

-------------------------------------------------------------------------------------------<br />

• The “1st %” column is the percentage of time over the total load time for that type of<br />

device (MOSFET for example).<br />

• The “2nd %” column is the percentage of time over the total load time for all devices<br />

included.<br />

• All types taking less than 1s of elapsed CPU load time are ignored.<br />

Performance Diagnostic Outputs<br />

By default, for Questa ADMS and Eldo Classic/Premier, the reports are printed in the .chi file.<br />

If the -stat flag has been set on the command line then the reports are printed in the statistics file<br />

(.stat). Table 9-2 below summarizes the various ways to activate the performance diagnostics in<br />

Eldo and Questa ADMS. In the table, steps is the step statistics, slope is the steepest variation<br />

detection, and devcpu is the CPU time measurement in device evaluation.<br />

Eldo® User's Manual, 15.3 383


Analyzing Simulation Results<br />

Performance Diagnostics<br />

Table 9-2. Activating Performance Diagnostics<br />

-diagmode perf -stat .format_step_limiters Eldo<br />

-diagmode perf -stat .format_step_limiters Output: .stat file.<br />

Default data: step statistics.<br />

Data generated: steps, slope, device cpu.<br />

Step statistics formatted by<br />

.format_step_limiters options.<br />

-diagmode perf -stat Output: .stat file.<br />

Default data: step statistics.<br />

Data generated: slope, device cpu.<br />

Step statistics formatted by default options.<br />

-diagmode perf .format_step_limiters Output: .chi file.<br />

Default data: .chi default data.<br />

Data generated: steps, slope, device cpu.<br />

Step statistics formatted by<br />

.format_step_limiters options.<br />

-diagmode perf<br />

Output: .chi file.<br />

Default data: .chi default data.<br />

Data generated: steps, slope, device cpu.<br />

Step statistics formatted by default options.<br />

-stat .fomat_step_limiters Output: .stat file.<br />

Default data: step statistics.<br />

Added data generated: none.<br />

Step statistics formatted by<br />

.format_step_limiters options.<br />

-stat<br />

Output: .stat file.<br />

Default data: step statistics.<br />

Added data generated: none.<br />

Step statistics formatted by default options.<br />

.format_step_limiters No data.<br />

See Also<br />

• .FORMAT_STEP_LIMITERS command in the Eldo Reference Manual<br />

• Running Eldo in the Eldo Reference Manual<br />

Related Topics<br />

Diagnosing Convergence and Performance Issues<br />

Using the Statistics File<br />

384<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Using the Statistics File<br />

Using the Statistics File<br />

The statistics output file from Eldo can be useful to understand how a design behaves and to<br />

monitor node/device activity. It can help to monitor the simulation performance, determine<br />

circuit size impact on simulation, debug simulation slowdown, and determine which nodes and<br />

blocks should be handled for minimizing rejections. The statistics file is generated by invoking<br />

Eldo with the -stat argument.<br />

Statistics File Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386<br />

Eldo® User's Manual, 15.3 385


Analyzing Simulation Results<br />

Statistics File Content<br />

Statistics File Content<br />

Output from: Eldo invoked with the -stat argument.<br />

Statistics files are divided into sections highlighted by asterisks.<br />

Tip<br />

See “Running Eldo” in the Eldo Reference Manual.<br />

Format<br />

The content of the statistics file is divided into the following main parts:<br />

• General Design Info<br />

• Tool Versions<br />

• High-level Design Information<br />

• Analog Elaboration Information<br />

• Simulation Information<br />

Parameters<br />

• General Design Info<br />

o<br />

Design name: Netlist Design Name<br />

o<br />

o<br />

Machine: Machine and Platform information<br />

Starting time: Starting simulation time and date record<br />

• Tool Versions<br />

o<br />

Tool versions report<br />

• High-level Design Information<br />

o<br />

Eldo kernel options: a list of Eldo kernel options used for the simulation<br />

• Elaboration: Analog<br />

o<br />

Listing of number of Nodes in Eldo/Fast-SPICE/Both/Total<br />

• Number of nodes<br />

• Number of device internal nodes<br />

• Number of stimulus nodes<br />

o<br />

Listing of number of Devices in Eldo/Fast-SPICE/Both/Total<br />

• Number of resistors<br />

• Number of capacitors<br />

386<br />

Eldo® User's Manual, 15.3


Analyzing Simulation Results<br />

Statistics File Content<br />

• Number of grounded capacitors<br />

• Number of inductors<br />

• Number of voltage sources<br />

• Number of current sources<br />

• Number of controlled sources (E/F/G/H)<br />

• Number of diodes<br />

• Number of BJTs<br />

• Number of JFETs<br />

• Number of MOS<br />

• Number of switches<br />

• Number of transmissions lines<br />

• Total number of the above listed devices<br />

• Simulation: Rejection node list<br />

• Rejection due to Local-Truncation-Error<br />

Related Topics<br />

Statistics File<br />

• Step limitation due to Local-Truncation-Error<br />

(limited to the first 10 items)<br />

• Step limitation due to time-synchronization<br />

• Summary of contribution per X instance<br />

Contributions from subcircuit instances as a percentage of the total instances in<br />

the design, to see how subcircuit instances impact the number of rejections.<br />

Eldo® User's Manual, 15.3 387


Analyzing Simulation Results<br />

Statistics File Content<br />

388<br />

Eldo® User's Manual, 15.3


Chapter 10<br />

Post-Layout Simulation<br />

This chapter describes the DSPF (Detailed Standard Parasitic Format) backannotation and<br />

network reduction capabilities for post-layout simulation in Eldo.<br />

Post-Layout Simulation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389<br />

DSPF Backannotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392<br />

DSPF File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393<br />

Parasitic Network Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394<br />

Eldo Post-Layout Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394<br />

Eldo Post-Layout Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395<br />

DSPF Backannotation Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396<br />

SPEF Backannotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398<br />

SPEF File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399<br />

SPEF File Example for Corners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401<br />

Eldo Reduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403<br />

Basic Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403<br />

Parameters Controlling the Reduction Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404<br />

Reduction Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405<br />

Reduction Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406<br />

Reduction Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406<br />

Reduction Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407<br />

References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407<br />

Post-Layout Simulation Overview<br />

Eldo enables you to verify design functionality and timing including the effects of physical<br />

layout. To include these effects of layout, you must generate a netlist that includes parasitics<br />

extracted from layout using an extraction tool such as xCalibre. The extracted parasitic<br />

information is included in the netlist in the form of large networks of passive resistors,<br />

capacitors, and inductors connected to the transistors or other active objects of the circuit. Due<br />

to the large number of elements that they contain, such parasitic networks strongly constrain<br />

post-layout simulation both in terms of memory and CPU time.<br />

A typical analog post-layout flow is shown in Figure 10-1:<br />

Eldo® User's Manual, 15.3 389


Post-Layout Simulation<br />

Post-Layout Simulation Overview<br />

Figure 10-1. Post-Layout Flow<br />

The areas to understand when dealing with post-layout simulation are as follows:<br />

• “DSPF Backannotation” on page 392<br />

When parasitics are contained inside a DSPF file.<br />

• “SPEF Backannotation” on page 398<br />

390<br />

Eldo® User's Manual, 15.3


Post-Layout Simulation<br />

Post-Layout Simulation Overview<br />

When parasitics are contained inside an SPEF file.<br />

• “Eldo Reduction” on page 403<br />

When parasitics are obtained either from a flat SPICE netlist or from a backannotated<br />

DSPF file.<br />

Eldo® User's Manual, 15.3 391


Post-Layout Simulation<br />

DSPF Backannotation<br />

DSPF Backannotation<br />

Parasitic information is extracted into a DSPF (Detailed Standard Parasitic Format) file. There<br />

are typically two scenarios for parasitic extraction:<br />

• Only parasitic elements (resistors and capacitors) are extracted.<br />

• All devices, parasitics and internal nodes are extracted together.<br />

Eldo enables the annotation of parasitic information onto the netlist by including the DSPF file.<br />

To include the DSPF file after extracting your parasitics, specify the .DSPF_INCLUDE<br />

command together with some parameters and options to your netlist.<br />

The SPEF (Standard Parasitic Exchange Format) standard for backannotation is supported by<br />

the .SPEF_INCLUDE command. See “SPEF Backannotation” on page 398.<br />

DSPF File Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393<br />

Parasitic Network Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394<br />

Eldo Post-Layout Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394<br />

Eldo Post-Layout Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395<br />

DSPF Backannotation Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396<br />

392<br />

Eldo® User's Manual, 15.3


Post-Layout Simulation<br />

DSPF File Structure<br />

DSPF File Structure<br />

Input for: .DSPF_INCLUDE command.<br />

The DSPF file contains parasitic information extracted from layout.<br />

Format<br />

The file begins with a header including release number and tool used for extraction. It also<br />

includes the hierarchical divider and the delimiter used in subnode names.<br />

*|DSPF 1.0<br />

*|DIVIDER /<br />

*|DELIMITER :<br />

The following section, net parasitics, contains the net names and their total net capacitance:<br />

*|NET N1 5.324e-12<br />

The following section contains port names, instances and nodes:<br />

*|P (N1 X 0.0) --> A port in the net for external connection<br />

*|I (M2:g M2 G I 0.0) --> Instance pin in the net for internal connection<br />

*|S (N1:1) --> A subnode in the net<br />

The native SPICE parasitic network follows (instance section), including the transistors:<br />

Cin/01 N1 Vss 1.3pF<br />

Rin/01 N1 N1:1 5<br />

Rin/12 N1:10 M1:g 0.1k<br />

M1 M1:d M1:g M1:s M1:b nmos w=2e-6 l=1e-6 ad=1.04e-12 as=6.2e-13<br />

Note<br />

Make sure all parasitics in the DSPF file are placed before the Instance Section. Differences<br />

in DSPF files come from the different extraction tools.<br />

Parameters<br />

None.<br />

Related Topics<br />

Parasitic Network Types<br />

Eldo Post-Layout Commands<br />

Eldo Post-Layout Options<br />

DSPF Backannotation Examples<br />

SPEF File Structure<br />

Eldo® User's Manual, 15.3 393


Post-Layout Simulation<br />

Parasitic Network Types<br />

Parasitic Network Types<br />

The types of Parasitic Networks handled by Eldo are:<br />

• Capacitance (keyword C)<br />

Coupling (capacitance between nets) and intrinsic (capacitance to ground) capacitors<br />

represented as separate devices.<br />

• Lumped capacitance (keyword CC)<br />

Capacitors representing coupling + intrinsic capacitance.<br />

• Resistance plus capacitance (keyword RC)<br />

Resistors + capacitors representing coupling + intrinsic capacitance.<br />

• Full RCC networks (keyword RCC)<br />

Resistors and both types of capacitors.<br />

Related Topics<br />

Eldo Post-Layout Commands<br />

Eldo Post-Layout Options<br />

DSPF Backannotation Examples<br />

Eldo Post-Layout Commands<br />

The following post-layout backannotation simulation commands are available in Eldo:<br />

• .DSPF_INCLUDE<br />

Adds the parasitic elements described inside a specified DSPF file. Eldo loads the<br />

specified DSPF file and backannotates the parasitic RCs in the specified DSPF file to the<br />

pre-layout netlist. If the DSPF file contains the intentional devices, the geometric<br />

parameters will also be backannotated to the corresponding devices in the pre-layout<br />

netlist.<br />

Three modes are available through the DEV=SCH[EMATIC]|DSPF|MIXED parameter:<br />

o<br />

o<br />

SCH[EMATIC] specifies the DSPF file contains only the parasitics.<br />

DSPF specifies the DSPF file contains both the parasitics and the intentional<br />

devices. Sometimes it is more accurate to have the extractor generating a file<br />

containing both. When this mode is specified, Eldo will take three actions:<br />

i. Eldo will include the file specified in the command as if it was a .LIB command.<br />

Eldo will therefore have two variants of the same subcircuit in its database, one<br />

corresponding to the intentional devices which should be present in the circuit,<br />

394<br />

Eldo® User's Manual, 15.3


o<br />

ii.<br />

iii.<br />

Post-Layout Simulation<br />

Eldo Post-Layout Options<br />

and another one included by the .DSPF_INCLUDE command, corresponding to<br />

the version with its parasitics.<br />

Eldo will emulate a .BIND command on the instances/subcircuits which are<br />

specified on the .DSPF_INCLUDE command.<br />

Eldo will apply filters, if any, to the DSPF devices.<br />

MIXED specifies the DSPF file contains either only the parasitics or both the<br />

parasitics and the intentional devices. It is the intended subcircuit which is<br />

considered as being reference. This third mode is a mixture of the two other modes<br />

available. Default mode for Eldo Classic and Eldo Premier.<br />

MIXED is similar to mode SCH in that it is the intended SUBCKT which is taken as<br />

the reference for building the simulation database, and is similar to mode DSPF<br />

because the DSPF file may contains both parasitics and intended devices.<br />

See the “.DSPF_INCLUDE” command in the Eldo Reference Manual.<br />

• .MAP_DSPF_NODE_NAME<br />

Maps node references to a new DSPF node name.<br />

See the “.MAP_DSPF_NODE_NAME” command in the Eldo Reference Manual.<br />

• .IGNORE_DSPF_ON_NODE<br />

Ignores parasitic elements on a specified node when a DSPF file has been included.<br />

See the “.IGNORE_DSPF_ON_NODE” command in the Eldo Reference Manual.<br />

• .SELECT_DSPF_ON_NODE<br />

Selects parasitic elements on a specified node when a DSPF file has been included.<br />

See the “.SELECT_DSPF_ON_NODE” command in the Eldo Reference Manual.<br />

Eldo Post-Layout Options<br />

The following post-layout backannotation simulation options are available in Eldo:<br />

• COLLAPSE_DSPF_OUTPUT<br />

Regroup currents (I, Ix, Isub) and noise outputs according to the device or subckt<br />

instance specified in arguments.<br />

See “.OPTION COLLAPSE_DSPF_OUTPUT” in the Eldo Reference Manual.<br />

• DSPF_LEVEL=C|CC|RC|RCC<br />

Defines the level of parasitics to use from a specified DSPF file. The option will use part<br />

of the information stored in the RC extracted DSPF file specified by C, CC, RC or RCC.<br />

Eldo® User's Manual, 15.3 395


Post-Layout Simulation<br />

DSPF Backannotation Examples<br />

This can also be specified by the LEVEL parameter in the .DSPF_INCLUDE command.<br />

If specified in the command it will overwrite this option.<br />

See “.OPTION DSPF_LEVEL” in the Eldo Reference Manual.<br />

• KEEP_DSPF_NODE<br />

Keeps the reference to the original node names. Eldo keeps the original .PLOT/.PROBE<br />

command if a node coming from the DSPF has the same name. It is not set by default,<br />

because this node may be completely different to the original one.<br />

See “.OPTION KEEP_DSPF_NODE” in the Eldo Reference Manual.<br />

• KEEP_DANGLING<br />

Keeps dangling objects in the Eldo database.<br />

See “.OPTION KEEPDANGLING” in the Eldo Reference Manual.<br />

• KEEP_SHORTED<br />

Keeps shorted objects in the Eldo database.<br />

See “.OPTION KEEPSHORTED” in the Eldo Reference Manual.<br />

• MAX_DSPF_PLOT<br />

Sets the maximum number of DSPF interface nodes plotted.<br />

See “.OPTION MAX_DSPF_PLOT” in the Eldo Reference Manual.<br />

Related Topics<br />

DSPF File Structure<br />

Eldo Post-Layout Commands<br />

DSPF Backannotation Examples<br />

DSPF Backannotation Examples<br />

An example showing how to import a .dspf file containing layout parasitics is provided.<br />

See “Example 21—Post-Layout Simulation using DSPF” on page 1324. Using .ALTER<br />

statements, several simulations with different degrees of backannotation can be overlapped and<br />

compared. The circuit is a 2-stage opamp, connected in follower mode.<br />

Notice the generated notes relating to the replacement of nodes in the original netlist by DSPF<br />

networks:<br />

Note 70: Node X_OPAMP1.DIFFP has been replaced by a DSPF network.<br />

Note 70: Node X_OPAMP1.DIFFN has been replaced by a DSPF network.<br />

Note 70: Node X_OPAMP1.CURMIR has been replaced by a DSPF network.<br />

396<br />

Eldo® User's Manual, 15.3


Connecting a Source to a DSPF Backannotated Node<br />

Post-Layout Simulation<br />

DSPF Backannotation Examples<br />

It is possible to connect a source to a node that is backannotated with DSPF. This might be<br />

useful to insert a voltage or current source to a specific node to check a critical path. However,<br />

after DSPF extension, the original node might be expanded in several nodes, and there might be<br />

no path remaining between the extra source and the network, that is, the extra source no longer<br />

has a connection to the network. This is because the extra source was not in the design when<br />

DSPF information was created. The solution is that nodes connected to that extra source are not<br />

expanded by DSPF. Eldo can detect such situations when the extra source is instantiated from<br />

the top of the design and connected to a node at a lower level of hierarchy, using the full node<br />

pathname. For example:<br />

.SUBCKT INV in out<br />

*...<br />

R1 in internal 1k<br />

*...<br />

.ends<br />

X1 in out INV<br />

v1 X1.internal 0 5<br />

!full pathname usage<br />

Eldo will detect this configuration, and DSPF instructions will be ignored on node X1.internal.<br />

This is similar to the command: .IGNORE_DSPF_ON_NODE X1.internal.<br />

However if the extra source is added at the same level as the nodes (for example all at the top),<br />

Eldo will only be able to issue a message that the node is connected to a single device only, and<br />

will indicate that there is a possible DSPF connection problem. You must then manually add the<br />

command .IGNORE_DSPF_ON_NODE on that node to deal with that specific situation.<br />

Related Topics<br />

SPEF Backannotation<br />

DSPF File Structure<br />

Eldo Post-Layout Commands<br />

Eldo Post-Layout Options<br />

Example 21—Post-Layout Simulation using DSPF<br />

Eldo® User's Manual, 15.3 397


Post-Layout Simulation<br />

SPEF Backannotation<br />

SPEF Backannotation<br />

The SPEF (Standard Parasitic Exchange Format) standard for backannotation, defined by IEEE<br />

Std 1481-1999, is supported. The syntax is different from DSPF, but the processing is the same,<br />

Eldo “translates” the SPEF format into DSPF and sends the parasitics to the DSPF-annotation<br />

flow to achieve the SPEF-annotation.<br />

Use the .SPEF_INCLUDE command to perform SPEF parasitic backannotation.<br />

SPEF File Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399<br />

SPEF File Example for Corners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401<br />

398<br />

Eldo® User's Manual, 15.3


SPEF File Structure<br />

Post-Layout Simulation<br />

SPEF File Structure<br />

Input for: .SPEF_INCLUDE command.<br />

The SPEF file is an alternative format for parasitic information extracted from layout.<br />

Format<br />

The file begins with a header. It includes various information on the tools used for extraction.<br />

The important fields are the following:<br />

*SPEF "IEEE 1481-1999"<br />

*DESIGN "name"<br />

*DIVIDER /<br />

*DELIMITER :<br />

If used, the DESIGN field is the name of the subcircuit on which the parasitics will be applied.<br />

The DIVIDER field is the hierarchical divider, and the DELIMITER is used in subnode names.<br />

The following section contains the units used in the body of the file:<br />

*T_UNIT<br />

*C_UNIT<br />

*R_UNIT<br />

*L_UNIT<br />

1 NS<br />

1 PF<br />

1 OHM<br />

1 HENRY<br />

Time unit must be one of NS or PS; capacitance: PF or FF; resistor: OHM or KOHM; and<br />

inductance: HENRY, MH or UH. They are all mandatory.<br />

The next section contains the name mapping. You can map any net to a number. This is useful<br />

when net names are very long.<br />

*NAME_MAP<br />

*1 N1<br />

*2 N2<br />

*3 NETWITHALONGNAME<br />

*4 OTHER_NET<br />

The next section contains the ground nets:<br />

*GND_NETS VSS<br />

The following section contains the nodes which are considered as ports, with their direction, and<br />

an eventual load behind:<br />

*PORTS<br />

N0 O *L 10<br />

N1 O<br />

Top I<br />

Eldo® User's Manual, 15.3 399


Post-Layout Simulation<br />

SPEF File Structure<br />

The following section contains the parasitics, grouped by net name. A net section begins by the<br />

net name and the total net capacitance, and ends with a *END. This section contains subsections<br />

about connections, capacitances, resistors, and inductions. They are defined as follows:<br />

*D_NET N1 0.000153<br />

*CONN<br />

*P N1 I *L 0.1 --> port in the net for external connection<br />

*I N2:P1 I *L 0.001308 --> instance pin in the net for internal connection<br />

*CAP<br />

1 N1:1 0.000084<br />

2 N1 0.000032<br />

3 N2:P1 0.000037<br />

*RES<br />

1 N1:1 N1 0.353405<br />

2 N1:1 N2:P1 10.847200<br />

*INDUC<br />

1 N1 top 0.000001<br />

*END<br />

The following SPEF features are not supported:<br />

• *DEFINE<br />

• *PDEFINE<br />

• *R_NET<br />

• *D_PNET<br />

• *R_PNET<br />

• *PHYSICAL_PORTS<br />

• *N statements<br />

• *S and *D statements<br />

Parameters<br />

None.<br />

Related Topics<br />

DSPF File Structure<br />

SPEF File Example for Corners<br />

400<br />

Eldo® User's Manual, 15.3


SPEF File Example for Corners<br />

Post-Layout Simulation<br />

SPEF File Example for Corners<br />

This example shows how Eldo handles this SPEF file depending on the corner parameters<br />

specified.<br />

SPEF file:<br />

*SPEF "IEEE 1481-1997"<br />

*DESIGN "TEST"<br />

*DATE "Wed Jun 18 11:28:40 2008"<br />

*VENDOR "Mentor Graphics"<br />

*DESIGN_FLOW ""<br />

*DIVIDER /<br />

*DELIMITER :<br />

*BUS_DELIMITER [ ]<br />

*T_UNIT 1 NS<br />

*C_UNIT 1 PF<br />

*R_UNIT 1 KOHM<br />

*L_UNIT 1 HENRY<br />

*PORTS<br />

N0 O<br />

top O<br />

*D_NET N1 0.0000:0.01:0.2<br />

*CAP<br />

1 N1 N0 1.1:2.3:5.2<br />

*RES<br />

1 N1 top 1<br />

*END<br />

The Eldo handling of this SPEF file depends on the .SPEF_INCLUDE corner parameter<br />

specified. If you have:<br />

.SPEF_INCLUDE FILE=test.spef CORNER=1<br />

In this example, with CORNER=1, Eldo takes *D_NET N1 0.0000 and 1 N1 N0 1.1.<br />

.SPEF_INCLUDE FILE=test.spef CORNER=2<br />

In this example, with CORNER=2, Eldo takes *D_NET N1 0.01 and 1 N1 2.3.<br />

.SPEF_INCLUDE FILE=test.spef CORNER=3<br />

In this example, with CORNER=3, Eldo takes *D_NET N1 0.2 and 1 N1 N0 5.2.<br />

(min:typ:max) can be used as an alternative to select one of the three values. By default, Eldo<br />

takes the second value if there are three values specified.<br />

Eldo® User's Manual, 15.3 401


Post-Layout Simulation<br />

SPEF File Example for Corners<br />

Related Topics<br />

DSPF Backannotation<br />

SPEF Backannotation<br />

Eldo Reduction<br />

402<br />

Eldo® User's Manual, 15.3


Post-Layout Simulation<br />

Eldo Reduction<br />

Eldo Reduction<br />

The Eldo Reduction capabilities enable Eldo to cope with the parasitic networks constraint by<br />

substituting such networks on the fly with approximately equivalent but smaller-sized networks<br />

computed by the TICER reduction engine.<br />

Note<br />

See the TICER reduction engine references [1, 2, 3].<br />

The quality of the approximation is controlled by setting a cut-off frequency and/or an accuracy<br />

tuning parameter. Additionally a maximum delay error and/or a maximum noise error and/or a<br />

cut-off frequency may be used as explained in this chapter.<br />

Not only backannotated circuits can benefit from the savings in computer resources allowed by<br />

the Eldo Reduction, but also some specific circuits. For instance, this is the case for power<br />

distribution networks having large portions of purely resistive networks.<br />

The reduction methods available in Eldo are also, primarily, available in the xCalibre extraction<br />

tool, and it is strongly recommended to activate the reduction of parasitics while performing<br />

extraction with Calibre ® xRC /xL.<br />

Nevertheless, even when the reduction of parasitic networks is performed in the extraction tool<br />

there may be some benefit in performing reduction in Eldo. This is clearly the case when the<br />

parasitics were generated to be valid over a frequency range that far exceeds the signal<br />

frequencies involved in the simulations to be performed. Using its reduction capabilities enables<br />

Eldo to take full benefit of reduction for each simulation individually, while using parasitic<br />

networks valid over a possibly larger range of frequencies. Although this provides a convenient<br />

capability, it remains preferable (and it is recommended) to use different sets of extracted<br />

parasitics corresponding to the various frequency ranges of the simulations to be performed.<br />

The primary advantages of reduction are:<br />

• Results in smaller circuits, thus faster simulations.<br />

• Requires less memory resources (uses less RAM and reduces swap space allocations).<br />

Basic Reduction<br />

The easiest way of activating Eldo Reduction is by using the generic .REDUCE command:<br />

.REDUCE [FREQUENCY=value] [TUNING=FAST|MODERATE|STANDARD|ACCURATE|VHIGH]<br />

The TUNING=FAST setting is more targeted to digital-like circuits. These refer to circuits with<br />

square signals and for which the accuracy on the signals’ amplitude and delay are less stringent<br />

than for pure analog circuits. Other settings should be suitable for simulating circuits with<br />

higher accuracy requirements. You may optionally specify a maximum delay error, noise error,<br />

Eldo® User's Manual, 15.3 403


Post-Layout Simulation<br />

Parameters Controlling the Reduction Process<br />

or cut-off frequency for the reduction process. Default settings for these parameters usually<br />

suitable for either analog or digital-like circuits may be selected using the optional<br />

ANALOG=YES|NO parameter.<br />

By default the Eldo generic .REDUCE command automatically activates a combination of<br />

reduction methods expected to be well suited for the circuit being reduced according to its<br />

topology. However, this automatic selection may induce some CPU and memory overhead, and<br />

it is highly recommended that for large-sized backannotations, the type of (parasitic) network to<br />

be reduced be specified using the REDUCE_NETWORK_TYPE option.<br />

A third-party netlist reduction library, provided by EdXact SA (http://www.edxact.com), can be<br />

selected with the optional ENGINE=JIVARO parameter. The integration of the netlist reduction<br />

technology enables speeding up simulations with a large number of netlist parasitics, which are<br />

mainly resistors and capacitors. The library is capable of reducing resistors, capacitors and<br />

coupled capacitors. It has been derived from Jivaro , EdXact’s Model Order Reduction based<br />

netlist reduction technology, using a subset of the available options and a dedicated direct<br />

interface. The integration with Eldo is very tight, enabling a very easy integration for members<br />

of CAD departments and a very simple usage for designers.<br />

The Jivaro dynamic library and license to activate it is only provided by EdXact, and must be<br />

purchased from EdXact; not from Mentor Graphics. If you are interested in using the Jivaro<br />

reduction library with Eldo, please contact EdXact. Mentor Graphics does not ship the Jivaro<br />

library, the license must be purchased solely from EdXact. There is no need for any additional<br />

Mentor Graphics license to activate the library, only a license from EdXact is necessary.<br />

Advanced Reduction<br />

In addition to the .REDUCE [ANALOG=YES|NO] command, some specific reduction<br />

commands for RLC or RC (.REDUCE TICER command), resistive-only reduction (.REDUCE<br />

RONLY command) or coupling-capacitance reduction (.REDUCE CC command) are available.<br />

Together with the available reduction options they provide full control of the reduction process.<br />

See Also<br />

• .REDUCE in the Eldo Reference Manual<br />

• .REDUCE TICER in the Eldo Reference Manual<br />

• .REDUCE RONLY in the Eldo Reference Manual<br />

• .REDUCE CC in the Eldo Reference Manual<br />

Parameters Controlling the Reduction Process<br />

There are three main reduction parameters controlling the reduction methods activated by a<br />

.REDUCE command, or more advanced specific reduction commands, described in the<br />

dedicated sections of this chapter.<br />

404<br />

Eldo® User's Manual, 15.3


Post-Layout Simulation<br />

Reduction Output<br />

The NOISE_ERROR parameter is defined as the amount of change in noise amplitude relative<br />

to a full-strength signal. The noise-error value is a ratio, a unitless floating number. The default<br />

value is 0.01 (corresponding to 1%) for the .REDUCE ANALOG=YES command and 0.05<br />

(5%) for the .REDUCE ANALOG=NO command. Default values for both .REDUCE<br />

ANALOG=YES and .REDUCE ANALOG=NO commands are denoted analog default values<br />

and digital-like default values respectively.<br />

The DELAY_ERROR parameter refers to the timing delay threshold used for reduction. The<br />

delay error units are seconds. The analog default is 0.5e-12 (a half picosecond); the digital-like<br />

default is 1.0e-12 (one picosecond).<br />

The FREQUENCY parameter (cut-off frequency) refers to the upper limit of the frequency<br />

band ranging from DC upwards, over which the Eldo Reduction is requested to maintain<br />

accuracy of the simulation results computed using the reduced circuit, within the effective noise<br />

error and delay error margins, as compared to the simulation results that would be obtained with<br />

the original unreduced circuit. Refer to the “.REDUCE” command in the Eldo Reference<br />

Manual for a more detailed explanation of this cut-off frequency parameter.<br />

Since the members of this parameter trio are interdependent, at most two of them can be<br />

specified. Moreover, some of them—even if specified explicitly on the reduction command—<br />

may be overridden according to parameters specified on some possibly conflicting reduction<br />

commands, according to the minimum frequency required to resolve the circuit input signals<br />

and possibly to the frequency range implied by the required simulation analyses as well. When<br />

such a situation occurs, Eldo issues a warning indicating the effective value of the reduction<br />

parameter being modified.<br />

See Also<br />

• .REDUCE in the Eldo Reference Manual<br />

• Reduction Options in the Eldo Reference Manual<br />

Reduction Output<br />

Statistics are printed to enable you to assess the efficiency of the reduction process using the<br />

default or specified parameter values (noise error, delay error, and/or cut-off frequency).<br />

These statistics may change between two successive Eldo versions as a result of a permanent<br />

development process toward increasing reduction efficiency. Nevertheless, the accuracy of the<br />

simulation results, relative to those of the original unreduced circuit, is preserved as long as the<br />

reduction cut-off frequency, noise error, and delay error are set adequately.<br />

See Also<br />

• Reduction Options in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 405


Post-Layout Simulation<br />

Reduction Commands<br />

Related Topics<br />

Parameters Controlling the Reduction Process<br />

Reduction Commands<br />

A number of reduction commands are available in Eldo:<br />

• .REDUCE<br />

Actives a combination of TICER, RONLY, and/or CC reduction methods expected to be<br />

well suited for the circuit being reduced.<br />

See “.REDUCE” in the Eldo Reference Manual.<br />

• .REDUCE CC<br />

Controls reduction of coupled capacitance between RLC or RC nets based on total<br />

capacitance.<br />

See “.REDUCE CC” in the Eldo Reference Manual.<br />

• .REDUCE RONLY<br />

Reduces resistive-only networks by eliminating all internal nodes.<br />

See “.REDUCE RONLY” in the Eldo Reference Manual.<br />

• .REDUCE TICER<br />

Specifies to perform TICER reduction in a way that has little impact on circuit<br />

characteristics, such as delay up to a specified frequency.<br />

See “.REDUCE TICER” in the Eldo Reference Manual.<br />

Related Topics<br />

Reduction Options<br />

Reduction Options<br />

A number of options are provided with the aim of helping the reduction process to achieve<br />

greater efficiency or controlling the topological impact of reduction on the circuit.<br />

The following topics in the Eldo Reference Manual detail each option:<br />

• .OPTION REDUCE_KEEP_INST<br />

• .OPTION REDUCE_KEEP_NODE<br />

• .OPTION REDUCE_KEEP_OUTPUTS<br />

• .OPTION REDUCE_MAX_CAP<br />

406<br />

Eldo® User's Manual, 15.3


Post-Layout Simulation<br />

Reduction Restrictions<br />

• .OPTION REDUCE_MAX_IND<br />

• .OPTION REDUCE_MAX_RES<br />

• .OPTION REDUCE_NETWORK_TYPE<br />

Note<br />

For backward compatibility, the old (pre-2009.1 release) “RC_REDUCE_*” options<br />

are still accepted for reduction. A warning message is displayed to inform you that<br />

this syntax is deprecated, suggesting to use .REDUCE commands instead for greater<br />

efficiency. If both syntax is found in a netlist then the newer .REDUCE syntax takes<br />

precedence.<br />

Related Topics<br />

Parameters Controlling the Reduction Process<br />

Reduction Restrictions<br />

Reduction is disabled—even when a .REDUCE command has been explicitly used—when any<br />

of the following analyses are requested:<br />

• Monte Carlo (see the “.MC” command in the Eldo Reference Manual)<br />

• DC Mismatch (see the “.DCMISMATCH” command in the Eldo Reference Manual)<br />

• Worst-Case (see the “.WCASE” command in the Eldo Reference Manual)<br />

• Sensitivity (see the “.SENSPARAM” command in the Eldo Reference Manual)<br />

• Steady-State Mismatch (see the “.SSTMISMATCH” command in the Eldo RF User’s<br />

Manual)<br />

Related Topics<br />

Eldo Reduction<br />

References<br />

Articles referenced in this chapter:<br />

1. B. Sheehan, Branch Merge Reduction of RLCM networks, proceedings of the IEEE<br />

International Conference on Computer-Aided Design, 9-13 Nov. 2003, pp. 658-664.<br />

2. B. Sheehan, TICER: Realizable Reduction of Extracted RC Circuits, proceedings of the<br />

IEEE International Conference on Computer-Aided Design, 7-11 Nov. 1999, pp. 200-<br />

203.<br />

3. B. Sheehan, Realizable Reduction of RC Networks, IEEE Trans. Computer-Aided<br />

Design Integr. Circuits Syst., vol. 26, no. 8, pp. 1393-1407, Aug. 2007.<br />

Eldo® User's Manual, 15.3 407


Post-Layout Simulation<br />

References<br />

408<br />

Eldo® User's Manual, 15.3


Chapter 11<br />

Monte Carlo Analysis<br />

Monte Carlo analysis (.MC command) determines the uncertainty in circuit performance due to<br />

simulated random variations.<br />

Tip<br />

For an overview of Monte Carlo analysis in Eldo, refer to the Eldo Monte Carlo Quick Start<br />

manual.<br />

Introduction to Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411<br />

Introduction to Uncertainty Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411<br />

The Monte Carlo Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415<br />

Basic Statistical Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415<br />

Monte Carlo Basic Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417<br />

Specifying a Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421<br />

Statistical Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423<br />

Specifying Statistical Variations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423<br />

Specifying Statistical Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427<br />

Sharing Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429<br />

How to Specify a Distribution Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

Correlation Between Gaussian Input Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437<br />

Local and Global Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442<br />

Specifying Statistical Variations for Individual Model Parameters . . . . . . . . . . . . . . . . . . 445<br />

Statistical Variations on Binning Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446<br />

Assigning Statistical Variations using the .MCMOD Command . . . . . . . . . . . . . . . . . . . . 446<br />

Tolerance Setting Using DEV, DEVX or LOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447<br />

Sampling Plan Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451<br />

Standard Monte Carlo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451<br />

Importance Sampling Monte Carlo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452<br />

Quasi-Monte Carlo Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456<br />

Latin Hypercube Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457<br />

Model-Based Monte Carlo Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

Post-Analysis of Monte Carlo Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463<br />

Output of Uncertainty Analysis (the .chi File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465<br />

Primary Statistics of Uncertainty Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473<br />

Additional Uncertainty Analyses (the .mcm File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491<br />

Input/Output Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504<br />

Graphical Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509<br />

Run-Length Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514<br />

Eldo® User's Manual, 15.3 409


Monte Carlo Analysis<br />

CONFIDENCE Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514<br />

SETTLING Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517<br />

MCCONV Extract Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518<br />

Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520<br />

Global Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520<br />

Large Scale Variable Screening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523<br />

Monte Carlo Analysis Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526<br />

A Simple Passive Low-Pass Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526<br />

Importance Sampling Monte Carlo Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528<br />

Model-Based Approximations Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532<br />

Further Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534<br />

Parameter Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536<br />

Problems in Statistical Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544<br />

Obsolete Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548<br />

410<br />

Eldo® User's Manual, 15.3


Introduction to Monte Carlo Analysis<br />

Monte Carlo Analysis<br />

Introduction to Monte Carlo Analysis<br />

The main goal of the Monte Carlo command is to analyze the uncertainty in circuit performance<br />

due to simulated random variations. It focuses on how uncertainty in input data propagates<br />

through computations.<br />

The input data is the various design parameters, the process parameters, and the environmental<br />

conditions. A circuit performance may be any measure that is extracted from the simulation, and<br />

will be noted with the functional form , where we note the input parameters with the<br />

generic symbol x.<br />

Eldo reads a netlist describing the circuit and translates it into mathematical equations. The<br />

Monte Carlo simulation is performed on multiple model evaluations with randomly selected<br />

model input variables. The results of these evaluations are then used to determine the<br />

uncertainty in model predictions, and the input variables that gave rise to this uncertainty.<br />

To use the Monte Carlo analysis in Eldo, you must do the following:<br />

• Provide a working netlist with one or more <strong>user</strong>-defined circuit performances (the output<br />

measures) based on other analyses (DC, AC, TRAN, ...).<br />

• Specify the .MC statement in the netlist. See “Specifying a Monte Carlo Analysis” on<br />

page 421.<br />

• Introduce some statistical variations on circuit parameters, model parameters and/or<br />

environmental conditions (the input variables X). See “Statistical Variations” on<br />

page 423.<br />

The following topics are devoted to the definition of the concept of uncertainty and its relation<br />

to the Monte Carlo simulation.<br />

Introduction to Uncertainty Analysis<br />

In our context, we may define the uncertainty u(H) of a circuit performance H, as a parameter<br />

that characterizes the dispersion of the values that can be attributed to the random variations of<br />

this performance. This parameter may be a standard deviation or the width of an interval having<br />

a given level of coverage or yield. Conversely, one may be interested in estimating the<br />

probability of being between <strong>user</strong>-defined specifications.<br />

Standard Uncertainty<br />

An estimate of the expectation of a random variable (the circuit performance of interest) for<br />

which n independent observations Y i =H(X i ) are simulated, is the arithmetic mean:<br />

Eldo® User's Manual, 15.3 411


Monte Carlo Analysis<br />

Introduction to Uncertainty Analysis<br />

This is, in some sense, the best estimate possible of the expectation. The sample variance, which<br />

estimates the variance of the probability distribution of Y, is given by:<br />

This estimate of the variance and its square root (called the experimental standard deviation)<br />

characterizes the variability of the observed values Y i , or their dispersion about their mean.<br />

Figure 11-1. Central Tendency and Dispersion<br />

A Monte Carlo experiment (with 1,000 runs, for example) provides one single realization of the<br />

random variables (sample mean, variance, and so on). However, this realization is not useful if<br />

the result does not come with a reliable confidence interval. Figure 11-1 shows an interval<br />

that encloses the mean . This interval characterizes the precision obtained by<br />

the Monte Carlo estimator of the mean.<br />

In practice, the coefficient of variation and the relative standard error of mean<br />

are often used to quantify the relative variability (or obtained precision) of one<br />

given estimator . The Eldo Monte Carlo flow uses the following definition of the RSEM if the<br />

mean is non-zero:<br />

412<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Introduction to Uncertainty Analysis<br />

If the mean is zero, the relative standard deviation scaled by<br />

is used instead:<br />

The coefficient of variation is defined as a multiple of the RSEM. Refer to “Mean and<br />

Standard Deviation” on page 478 for more information.<br />

Uncertainty as an Interval<br />

Under the assumptions that the probability distribution of the output measure can be assumed to<br />

be normal (Gaussian). The uncertainty is often defined as an interval about the measurement<br />

result that may be expected to cover a given fraction of the distribution of values. This interval<br />

can be associated to a number u(H) obtained by multiplying the standard deviation by a<br />

coverage factor κ p :<br />

The number p is the coverage probability or level of confidence of the interval. A measurement<br />

is then conveniently expressed as:<br />

Then for example, one may take κ p = 2 for having an interval with confidence interval of<br />

approximately 95 percent. By taking κ p = 3, a confidence level of approximately 99 percent<br />

would be obtained.<br />

It is important to understand that the assumption of normality cannot be used in any cases, and<br />

this motivates the introduction of Monte Carlo simulation methods as general and flexible tools<br />

for addressing difficult estimation problems. The Monte Carlo method provides a numerical<br />

approximation of the output distribution, which may be non-Gaussian. This distribution is in<br />

general not symmetric, and a coverage interval is not necessarily centered on the average value.<br />

Yield and Failure Probability Estimation<br />

You may want to compute the probability values associated with lower and upper bounds<br />

(y L , y U ) for a circuit performance Y. Conversely, you may want to compute the bound or<br />

threshold that corresponds to a target probability value π L, U .<br />

Eldo® User's Manual, 15.3 413


Monte Carlo Analysis<br />

Introduction to Uncertainty Analysis<br />

Figure 11-2. Tail Probabilities and Yield Computation<br />

These tasks typically enter in a manufacturing flow called “yield learning flow”. In such a flow,<br />

yield is defined to be the proportion of the manufactured circuits that satisfy both the design<br />

engineers’ and the process engineers’ specifications. The yield of a manufactured product<br />

should increase from the initial design to the large-volume production. Yield is therefore related<br />

to the cost of production. Process variations significantly impact circuit performance in nanoscale<br />

technologies, and as process variations become relatively large beyond the 65nm<br />

technologies, the task of yield estimation is increasingly important for circuit designers.<br />

Yield is often interpreted as the probability of failure, rather than the probability of success. A<br />

typical and important example is SRAM manufacturing yield, which is defined to be the<br />

probability of a wrong operation (read, write, or retention) occurring in an SRAM circuit.<br />

Yield may be quantitatively appreciated by considering an explicit value for the acceptable<br />

quality limit (AQL). For example, an AQL for 1Megabit SRAM bit-cell circuits could be<br />

100 ppm. If production of one million such circuits is targeted, the manufacturing process<br />

cannot allow more than 100 defective bit-cells globally. This means that the probability of<br />

failure must be at most:<br />

A specific Monte Carlo algorithm must be used for such low probability values. Eldo provides a<br />

a novel “rare events” Monte Carlo algorithm based on importance sampling techniques. Refer<br />

to “Importance Sampling Monte Carlo” on page 452 for more information.<br />

414<br />

Eldo® User's Manual, 15.3


The Monte Carlo Flow<br />

Monte Carlo Analysis<br />

The Monte Carlo Flow<br />

To be more precise, the Monte Carlo is defined as a systematic sampling from the random<br />

distribution f X (x)=PDF X (x) for the input variables X. A simple Monte Carlo estimate of the<br />

distribution of Y=H(X) is obtained by generating X i for i = 1, 2, ..., n from the PDF X , and<br />

simulating Y i =H(X i ). The observed values Y i are used as an estimate of the distribution of Y.<br />

This is depicted in Figure 11-3.<br />

Figure 11-3. Propagation of Distributions<br />

In some sense, the Monte Carlo method provides an efficient way to propagate the input<br />

distributions through the simulation engine, and to compute the distribution function:<br />

Any property of the output distribution, such as the expectation (average value), variance and<br />

coverage intervals can be obtained using CDF Y .<br />

Basic Statistical Concepts<br />

This short section formalizes some concepts in Probability Theory used in this chapter.<br />

Some other materials can be found in Basic Concepts on Multivariate Distributions.<br />

The basic ingredients of a statistical model are the following. First, a random variable Y, which<br />

represents a quantity whose outcome is uncertain. The set of possible outcomes of Y, denoted Ω,<br />

is the sample space. Second, a probability distribution, which assigns probabilities to events<br />

associated with Y. The random variables we consider are continuous random variables: they<br />

Eldo® User's Manual, 15.3 415


Monte Carlo Analysis<br />

Basic Statistical Concepts<br />

have a sample space Ω, that is continuous. Probability distributions can be specified by their<br />

probability distribution function, defined as:<br />

for each y in Ω. From this identity we can calculate the probabilities of Y falling within intervals<br />

as:<br />

If the distribution function F Y is differentiable, it is also useful to define the probability density<br />

function of Y as f Y (y) = dF Y /dy, in which case:<br />

and:<br />

It is often convenient to summarize a probability distribution by one or two statistics that<br />

characterize its main features. The most common are expectation and variance. In the case of<br />

continuous random variable with probability density function f Y , the expectation is<br />

and the variance is:<br />

Expectation provides a measure of location, or average value, of the distribution, while the<br />

variance measures the dispersion or spread of the distribution. The standard deviation is defined<br />

as the square root of the variance, providing a measure of variability in the same units as Y.<br />

416<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Monte Carlo Basic Features<br />

Monte Carlo Basic Features<br />

Monte Carlo analysis can be understood as a form of integration algorithm, or as an incremental<br />

approach providing a gradual insight into the spread of distribution.<br />

Monte Carlo as an Integration Algorithm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417<br />

Monte Carlo Incremental Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419<br />

Monte Carlo Analysis With a Varying Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419<br />

Monte Carlo as an Integration Algorithm<br />

Monte Carlo analysis can be understood as a form of integration, where the expected value:<br />

of a random variable Y = φ(H(X)) needs to be estimated. Depending on the chosen function φ,<br />

several different quantities can be estimated:<br />

• φ(h) = h<br />

The mean of the output response Y = H(X) is estimated.<br />

• φ(h) = h 2<br />

The second order moment and the variance of the distribution are estimated.<br />

• φ(h) = I {h ≥ y}<br />

The probability of exceeding the threshold y is estimated.<br />

The standard Monte Carlo approach (referred to as the “Monte Carlo method”, following<br />

Metropolis and Ulam (1949)), is to use a sample X 1 , …, X n from the density f X to approximate<br />

the expectation by the empirical average:<br />

In a simple Monte Carlo analysis the values of the circuit characteristics are independent and<br />

identically distributed (i.i.d.), therefore standard results apply (under some assumptions): the<br />

Strong Law of Large Numbers and the Central Limit Theorem describe the convergence of the<br />

sample mean. The average converges almost surely to the expectation E(H(X)) and the<br />

speed of convergence can be assessed because the variance<br />

Eldo® User's Manual, 15.3 417


Monte Carlo Analysis<br />

Monte Carlo Basic Features<br />

may be approximated with the summation:<br />

This property implies that a convergence test can be constructed and that confidence bounds on<br />

the computations can be provided. In Eldo it is possible to use the .MC AUTOSTOP parameter<br />

to control the run length for estimating the average value E(H(X)) (this can save CPU time).<br />

For example, a convergence test based on confidence interval techniques can be defined with<br />

the extract function MCCONV as follows:<br />

* EXTRACT SECTION<br />

* THE PERFORMANCE CRITERIA OF INTEREST IS:<br />

* THE OSCILLATION FREQUENCY: OFREQ<br />

.EXTRACT TRAN LABEL=OFREQ 1/(XDOWN(V(1),2.5,END)-XDOWN(V(1),2.5,START))<br />

* MONTECARLO ANALYSIS<br />

.MC 1000 AUTOSTOP=’mc_conv_freq’<br />

.EXTRACT MC LABEL=mc_conv_freq MCCONV(OFREQ, AVG, CONFIDENCE, 100, 0.95)<br />

where the expression MCCONV(OFREQ, AVG, CONFIDENCE, 100, 0.95) is a Boolean<br />

value, which is true if some specific criterion is satisfied for the sample mean value AVG.<br />

Example with multiple MCCONV extracts:<br />

* MONTE CARLO ANALYSIS<br />

.MC 1000 AUTOSTOP='mc_conv_avg && mc_conv_std'<br />

.EXTRACT MC LABEL=mc_conv_avg<br />

+ MCCONV(V1,AVG,CONFIDENCE, 100, 0.99, 0.0004, 0)<br />

.EXTRACT MC LABEL=mc_conv_std<br />

+ MCCONV(V1,STD,CONFIDENCE, 100, 0.99, 0.0003, 0)<br />

Note that the Central Limit Theorem says that the sample mean converges to the expected value<br />

at the rate O(n −1/2 ) which means that in practice an extra digit of accuracy requires 100 times as<br />

many simulations. The convergence is therefore slow compared to more efficient numerical<br />

methods such as Riemann quadrature or Simpson method, but the convergence of the MC<br />

method is completely independent of the dimension of the input space.<br />

Related Topics<br />

Specifying a Monte Carlo Analysis<br />

CONFIDENCE Technique<br />

418<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Monte Carlo Basic Features<br />

Tips for Improving Simulation Performance<br />

Monte Carlo Incremental Approach<br />

The overall Monte Carlo analysis run is made of several batches of simulations. Using an<br />

incremental approach provides gradually an insight into the spread of distribution.<br />

In Eldo, you control the sample size n and optionally, how the sampling is generated. In this<br />

example, 100 simulations are requested by including the following statement in the netlist<br />

description:<br />

* Monte Carlo Analysis<br />

.MC 100 SAVE=mc_file RESTART=mc_file<br />

The additional SAVE/RESTART arguments are used to save the random sampling and the<br />

simulated characteristics (see “Tips for Improving Simulation Performance” on page 1259).<br />

These quantities can be used in subsequent Monte Carlo experiments. SAMPLING=LHS is<br />

disabled when RESTART is specified.<br />

Tip<br />

See “.MC” in the Eldo Reference Manual.<br />

Monte Carlo Analysis With a Varying Circuit<br />

When you specify Monte Carlo analysis, Eldo performs the complete Monte Carlo analysis<br />

after each change of the circuit parameters or the circuit’s configuration.<br />

The probability distribution of a random variable may depend on the values of some circuit<br />

parameters. For instance, the temperature of a MOS device affects the device’s threshold<br />

voltage. After each change of the circuit parameters, Eldo recomputes the probability<br />

distributions of the random variables, then performs the specified Monte Carlo analysis using an<br />

appropriate set of input samples.<br />

The probability distribution of a random variable may also depend on the circuit’s<br />

configuration, which you can alter using .ALTER statements. Eldo performs a separate Monte<br />

Carlo analysis for each configuration specified in the netlist, starting with the unmodified<br />

netlist.<br />

The results of each Monte Carlo analysis follow the corresponding change of circuit parameters<br />

or netlist modification in the .chi file. If you requested detailed statistical outputs, the results of<br />

the ith Monte Carlo analysis are also contained in the file _.mcm. The optional<br />

output files _.mci and _.mco contain tables of the input and output<br />

samples for the ith Monte Carlo analysis.<br />

For example, the following netlist specifies Monte Carlo analysis with a sweep of a circuit<br />

parameter PVG through 7 values:<br />

Eldo® User's Manual, 15.3 419


Monte Carlo Analysis<br />

Monte Carlo Basic Features<br />

* Example of Monte Carlo analysis with a swept parameter.<br />

* Extract the leakage current of a BSIM4 device. The manufacturing<br />

* process introduces statistical variation in the threshold voltage.<br />

.MODEL N NMOS LEVEL=60 VTH0=250m DEV/GAUSS=5%<br />

M1 D G 0 0 N W=1u L=65n<br />

VD D 0 2<br />

VG G 0 PVG<br />

.DC<br />

.EXTRACT DC LABEL=ID ID(M1)<br />

* Specify Monte Carlo analysis and request statistical outputs.<br />

.MC 1000 NBINS=60 DATAFLOW=1 PRINT_TEST_AP=1 PRINT_MOMENTS=1<br />

* Sweep the voltage applied to the gate from 2V to 0V.<br />

.PARAM PVG=2<br />

.STEP PARAM PVG LIST 2 1 0.4 0.35 0.3 0.1 0<br />

.END<br />

In this example, Eldo will perform 7 separate Monte Carlo analyses and generate files<br />

example_1.mcm, example_2.mcm, …, example_7.mcm containing statistical information about<br />

the output measure ID (the leakage current of M1) for PVG=2, PVG=1, …, PVG=0<br />

respectively. In particular, each .mcm file contains an estimate of the skewness of the<br />

distribution of ID:<br />

PVG Output File Skewness of ID<br />

2 example_1.mcm 6.26×10 -2<br />

1 example_2.mcm 5.86×10 -2<br />

0.4 example_3.mcm 2.98×10 -2<br />

0.35 example_4.mcm 3.31×10 -1<br />

0.3 example_5.mcm 7.30×10 -1<br />

0.1 example_6.mcm 1.40<br />

0 example_7.mcm 1.42<br />

The distribution of ID is almost normal for PVG=2 to PVG=0.4, but as PVG approaches 0 the<br />

distribution of ID becomes log-normal.<br />

In addition to affecting the input and output sample distributions, the values of circuit<br />

parameters and the circuit’s configuration can affect the convergence rate of the Monte Carlo<br />

algorithm. This means that the quality of the statistical results may vary as the circuit varies. In<br />

the above example, the coefficient of variation for ID (at 95%) ranges from 0.408% to 2.756%<br />

as PVG is swept from 2 to 0. By increasing the number of runs per Monte Carlo analysis to<br />

10000, this range can be improved to 0.013%–0.888%. However, the disadvantage of uniformly<br />

420<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Specifying a Monte Carlo Analysis<br />

increasing the number of runs is that Eldo then performs unnecessarily long Monte Carlo<br />

analysis for the larger values of PVG.<br />

To ensure consistent quality of the statistical results across the full range of circuit parameters<br />

and configurations, it is recommended to specify a large number of maximum runs and use a<br />

convergence condition to automatically stop each Monte Carlo analysis. Refer to “Run-Length<br />

Control” on page 514 for more information.<br />

Related Topics<br />

Specifying a Monte Carlo Analysis<br />

Post-Analysis of Monte Carlo Simulations<br />

Specifying a Monte Carlo Analysis<br />

To specify a Monte Carlo analysis, include a .MC statement in your netlist. Optional parameters<br />

for run-length (or convergence) control, the control of graphical output in EZwave, and the<br />

sampling algorithm can be specified. The nrun_max argument is mandatory:<br />

.MC NRUN_MAX [OV] [RUN CONTROL PARAMETERS] [OUTPUT CONTROL PARAMETERS]<br />

[SAMPLING METHOD PARAMETERS]<br />

Run Control Parameters<br />

NRUN_MAX IRUN OUTER AUTOSTOP SAVE<br />

RESTART NONOM DATAFLOW<br />

Output Control Parameters<br />

ALL OV SENS RESPONSE<br />

NBBINS RULEBIN MEASCORR SIZECORR<br />

PRINT_EXTRACT<br />

PRINT_ALL_POST_ANALYSIS<br />

PRINT_NO_ANALYSIS<br />

PRINT_ASCII_HISTO<br />

PRINT_ASCII_IN_SAMPLE<br />

PRINT_ASCII_OUT_SAMPLE<br />

PRINT_COV<br />

PRINT_CONF<br />

PRINT_ALT_STATS<br />

PRINT_MINMAX<br />

PRINT_MOMENTS<br />

PRINT_TEST_AP<br />

PRINT_CAPABILITY<br />

PRINT_OUTPUT_CORREL<br />

Sampling Method Parameters<br />

SEED VARY SAMPLING SSD_COMPLEXITY<br />

SSD_NRUN_TEST IS_MAXITER IS_RTOL<br />

For a detailed description of all optional parameters, see .MC in the Eldo Command Reference.<br />

Eldo® User's Manual, 15.3 421


Monte Carlo Analysis<br />

Specifying a Monte Carlo Analysis<br />

Other Parameters<br />

MONITOR SIGBIN MAXABSBIN MAXRELBIN ORDMCS<br />

MCLIMIT<br />

The .MC command is used to control the Monte Carlo algorithm, and the setup of statistical<br />

problem (input variables) is defined with some simple extensions of the basic statements:<br />

.PARAM, .MODEL, and .MCMOD. More specific statements such as .CORREL, .DISTRIB,<br />

and .LOTGROUP may also be used.<br />

Tip<br />

See “.MC” in the Eldo Reference Manual.<br />

Related Topics<br />

Statistical Variations<br />

422<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Statistical Variations<br />

Statistical Variations<br />

How statistical models are specified depends in general on the foundries. They define to place<br />

the most appropriate distributions on parameters within their PDK model files.<br />

Statistical models are generally written as functions of both process parameters and geometrical<br />

parameters.<br />

• Process parameters<br />

These parameters determine the behavior of the instantiated devices, such as junction<br />

depths, sheet resistances, dielectric thickness and doping levels.<br />

• Geometric layout parameters<br />

Device length and width, and more specific parameters related to the layout.<br />

Specifying Statistical Variations<br />

In statistical modeling, the variations in parameter P are formulated as either relative or<br />

absolute. Some physical quantities such as mobility, sheet resistances, dielectric thicknesses and<br />

doping concentrations have their variations directly in a relative sense:<br />

In this case, the models use the percentage value δP = ΔP/P typ in the definition of parameters,<br />

and P = P typ (1 + δP).<br />

There are parameters for which this model does not apply. Geometrical variations will have<br />

their variations in the absolute sense:<br />

For example, the following statements define a gaussian distribution on the TOX parameter in a<br />

relative sense:<br />

.PARAM A_MM_TOX=0.4543U B_MM_TOX=0.1435<br />

+ DEV_MM_TOX = ’A_MM_TOX/SQRT(WDRAWN*LDRAWN)+B_MM_TOX’<br />

.PARAM TOX = TOX_TYP DEV/GAUSS={DEV_MM_TOX}%<br />

The standard deviation of the Gaussian distribution is specified with the percent % character.<br />

Eldo® User's Manual, 15.3 423


Monte Carlo Analysis<br />

Specifying Statistical Variations<br />

Statistical Configuration on Devices and Subcircuits<br />

The device model argument, STATISTICAL=0|1, can be specified on X instances, device<br />

declarations, or on .SUBCKT definitions, to specify whether any statistical variation due to .MC<br />

can be applied to the specified entities.<br />

If STATISTICAL is 0, the selected devices will keep their nominal values. If STATISTICAL is<br />

1, the selected devices have statistical variation applied. The global default value can be<br />

specified using the option STATISTICAL= 0|1. Default is 1. See the Statistical Configuration<br />

Usage Example.<br />

Note<br />

When a Monte Carlo analysis is specified, merging devices or subcircuits in parallel (with<br />

or without device multiplier M=val specified) is disabled.<br />

Example of Process Variations on a Capacitor Model<br />

The following example demonstrates the statements for a subcircuit to model a simple capacitor<br />

device, and the effects of process variations upon this device. Typically, process experts create<br />

libraries of subcircuits containing much more complex equations and interactions representing<br />

the process effect. Here we have modeled the fact that large geometry devices tend to exhibit<br />

better matching characteristics than small geometry devices.<br />

In the subcircuit CAPA, a capacitor is connected across the two ports PLUS and MINUS. The<br />

value of the capacitor is a function of the subcircuit parameters and the process parameters. The<br />

subcircuit input parameters include the default values of the capacitor area CAREA and<br />

perimeter CPERI (assuming a rectangular shape).<br />

424<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Specifying Statistical Variations<br />

.SUBCKT CAPA PLUS MINUS B<br />

+ PARAM: CAREA=1.0 CPERI=2.0 C=-1 W=-1 MISMATCH=1 TOMETER=1E-6<br />

.PARAM TOX_TYP = 1.9E-08<br />

+ COX_TYP = ‘3.9 * 8.85418E-12 / TOX_TYP’<br />

.PARAM D=’CPERI**2-4*CAREA’<br />

.PARAM WDRAWN =<br />

+‘VALIF((C>0)&&(W>0),W,<br />

+ VALIF(D>0,SQRT(D)+CPERI,CPERI)/2)*TOMETER’<br />

.PARAM LDRAWN =<br />

+‘VALIF((C>0)&&(W>0),C/(COX_TYP*WDRAWN),<br />

+ VALIF(D>0,CAREA/WDRAWN,WDRAWN))*TOMETER’<br />

.PARAM A_MM_TOX=0.4543U B_MM_TOX=0.1435<br />

+ DEV_MM_TOX = ’A_MM_TOX/SQRT(WDRAWN*LDRAWN)+B_MM_TOX’<br />

.PARAM TOX = TOX_TYP DEV/GAUSS={DEV_MM_TOX}%<br />

.PARAM COX = ‘3.9 * 8.85418E-12 / TOX’<br />

.PARAM DL = 0.0 LOT/GAUSS={2.0E-09}<br />

.PARAM DW = 0.0 LOT/GAUSS={5.0E-09}<br />

.PARAM LEFF = ‘LDRAWN - DL’<br />

.PARAM WEFF = ‘WDRAWN - DW’<br />

.PARAM AEFF = ‘WEFF*LEFF’<br />

*<br />

CC PLUS MINUS VALUE=’COX * AEFF’<br />

*<br />

.ENDS CAPA<br />

The subcircuit parameters also define intermediate values including the drawn length<br />

LDRAWN and width WDRAWN of the device. These quantities are computed depending on<br />

the values of capacitance C and width W, which are the input parameters of the subcircuit.<br />

When the default value, -1, is used for these parameters the geometry is computed from<br />

CAREA and CPERI. It may be more useful for a designer to specify the capacitance and width,<br />

then calculate the drawn length at the layout stage.<br />

The typical (or nominal) value of the COX parameter is used in the definition of the drawn<br />

length:<br />

You may use this value at layout time to determine the capacitor length that gives the desired<br />

capacitance for a given width. Once a Monte Carlo analysis is started, the parameter COX will<br />

be subject to statistical variations. This is why the typical value of the COX parameter is used,<br />

because if the parameter COX were to be used in the previous expression instead of the nominal<br />

value COX_TYP, different values for capacitor length would be calculated.<br />

Eldo® User's Manual, 15.3 425


Monte Carlo Analysis<br />

Specifying Statistical Variations<br />

The parameters LEFF, WEFF, and AEFF contain respectively the effective length, width, and<br />

area of the capacitor. Indirectly, the expression of AEFF depends on the statistical variations of<br />

the geometry. This will vary the effective area AEFF, and therefore will affect the effective<br />

capacitance value.<br />

Process Parameters and Geometrical Variations<br />

The process parameters are given for the oxide thickness TOX and the geometrical variations<br />

DL and DW. The nominal value for the oxide thickness is 19nm. The typical values for the<br />

variations for DL and DW are fixed to 0.<br />

The local variations of the oxide thickness have an area dependency:<br />

In the netlist this matches the expression:<br />

.PARAM DEV_MM_TOX = ’A_MM_TOX/SQRT(WDRAWN*LDRAWN)+B_MM_TOX’<br />

where the two factors, A_MM_TOX and B_MM_TOX are defined for the statistical<br />

distribution of oxide thickness. They are defined as constant terms:<br />

• A_MM_TOX=0.4543U<br />

• B_MM_TOX=0.1435<br />

This equation relates the variance of the process parameter TOX to the inverse square root of the<br />

area. The local variation decreases as the device size increases. Note that by contrast, the global<br />

process variations are independent of the effective length L and width W.<br />

This equation is based on the mismatch model proposed by Pelgrom: M.J.M. Pelgrom et. al.,<br />

Matching Properties of MOS Transistors, IEEE Journal of Solid-State Circuits, Vol. 24, No. 5,<br />

1989, pp. 1433-1439.<br />

Local Mismatch Variations<br />

The modeling of local mismatch variations can be done using a MOS device L, W, M by<br />

accessing the EVAL() function: E(X1.M1,L) or EVAL(*,W).<br />

Related Topics<br />

Specifying Statistical Parameters<br />

426<br />

Eldo® User's Manual, 15.3


Specifying Statistical Parameters<br />

Monte Carlo Analysis<br />

Specifying Statistical Parameters<br />

There are two different methods for the specification of statistical parameters using the<br />

.PARAM statement.<br />

First Syntax<br />

.PARAM PARAMETER_NAME = UNIF|AUNIF|GAUSS|AGAUSS|LIMIT({OPTION_LIST})<br />

where the distributions and their arguments are defined below:<br />

• UNIF(NOM_VALUE, FRAC_VALUE)<br />

Defines a uniform distribution with relative variation . The parameter<br />

PARAM_NAME varies uniformly between and , where is the<br />

NOM_VALUE argument and ρ is the positive value FRAC_VALUE.<br />

• AUNIF(NOM_VALUE, ABS_VALUE)<br />

Defines a uniform distribution with absolute variation . The parameter<br />

PARAM_NAME varies uniformly between and , where is the<br />

NOM_VALUE and h is the positive half-range ABS_VALUE.<br />

• GAUSS(NOM_VALUE, FRAC_VALUE, SIGMA_COEF)<br />

Defines a Gaussian distribution . The distribution is centered at NOM_VALUE,<br />

and the standard deviation is given by σ = (NOM_VALUE × FRAC_VALUE) ÷<br />

SIGMA_COEF.<br />

• AGAUSS(NOM_VALUE, ABS_VALUE, SIGMA_COEF)<br />

Defines a Gaussian distribution . The distribution is centered at NOM_VALUE,<br />

and the standard deviation is given by σ = ABS_VALUE ÷ SIGMA_COEF.<br />

• LIMIT(NOM_VALUE, ABS_VALUE)<br />

Defines a discrete probability distribution on the finite set of values NOM_VALUE -<br />

ABS_VALUE and NOM_VALUE + ABS_VALUE with equal probability.<br />

There is an additional argument to the UNIF and GAUSS macro-definitions. This argument is<br />

named MULT in the following syntax commands:<br />

.PARAM PARAM_NAME = UNIF|AUNIF(NOM_VALUE, RANGE_VALUE, MULT)<br />

.PARAM PARAM_NAME = GAUSS|AGAUSS(NOM_VALUE, STD_VALUE, SIGMA_COEF, MULT)<br />

The role of the MULT argument, which is an integer value greater than 1, is to eliminate the<br />

simulation of the sub-population that is “closed” to the median value of the parameter. The role<br />

of this argument is explained in more detail in “Weighted Uniform and Gaussian Distributions”<br />

on page 551.<br />

Eldo® User's Manual, 15.3 427


Monte Carlo Analysis<br />

Specifying Statistical Parameters<br />

Eldo Native Syntax<br />

The second approach uses a combination of the keywords DEV, DEVX, and LOT to specify the<br />

individual statistical parameters. Sometimes it is more appropriate for modeling local (DEV)<br />

and global (LOT) variations. This approach is also used within the .MODEL and .MCMOD<br />

statements.<br />

The syntax is defined as follows:<br />

.PARAM PARAM_NAME=NOM_VALUE LOT/UNIF=HALF_RANGE_VALUE[%]<br />

.PARAM PARAM_NAME=NOM_VALUE DEV/UNIF=HALF_RANGE_VALUE[%]<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT/UNIF=HALF_RANGE_VALUE[%]<br />

+ DEV/UNIF=HALF_RANGE_VALUE[%]<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT=(UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ DEV=(UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT=(UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%])<br />

+ DEV=(UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%])<br />

and for the Gaussian distributions:<br />

.PARAM PARAM_NAME=NOM_VALUE LOT/GAUSS=SIGMA_VALUE[%]<br />

.PARAM PARAM_NAME=NOM_VALUE DEV/GAUSS=SIGMA_VALUE[%]<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT/GAUSS=SIGMA_VALUE[%]<br />

+ DEV/GAUSS=SIGMA_VALUE[%]<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT=(NOR,MINUS_3SIGMA_VALUE[%],PLUS_3SIGMA_VALUE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

. DEV=(NOR,MINUS_3SIGMA_VALUE[%],PLUS_3SIGMA_VALUE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT=(UNI,MINUS_3SIGMA_VALUE[%],PLUS_3SIGMA_VALUE[%])<br />

+ DEV=(UNI,MINUS_3SIGMA_VALUE[%],PLUS_3SIGMA_VALUE[%])<br />

The argument [LOT|DEV]/UNIF=VALUE[%] specifies a range value for the uniform<br />

distribution , and the additional percentage character % is used to specify the<br />

distribution .<br />

The DEVX keyword is used to indicate that the variations of a subcircuit parameter must have a<br />

global scope within the .SUBCKT block. In other words, the DEVX parameters have LOT<br />

variations within a .SUBCKT block. If a parameter is used at the top level (outside of a<br />

subcircuit) and is defined with DEVX variation, the parameter keeps its nominal value during<br />

statistical analysis.<br />

428<br />

Eldo® User's Manual, 15.3


Controlling Statistical Parameter Value Types<br />

Monte Carlo Analysis<br />

Sharing Distributions<br />

By default, the value used for statistical parameters in .EXTRACT and .DEFWAVE commands<br />

is the nominal value. This allows easy interpretation of results mixing both LOT and DEV<br />

variations.<br />

To change the type of value returned by statistical parameters, specify .OPTION<br />

OUT_MCPARAM=LOT.<br />

Tip<br />

See “.PARAM” in the Eldo Reference Manual.<br />

Related Topics<br />

Specifying Statistical Variations for Individual Model Parameters<br />

Assigning Statistical Variations using the .MCMOD Command<br />

Sharing Distributions<br />

To enable different entities to share the same distribution specify the .LOTGROUP command.<br />

Anywhere Eldo accepts LOT or DEV specification, LOTGROUP=GROUP_NAME can be<br />

specified.<br />

When used in Monte Carlo statistical variation, if the LOTGROUP variation is absolute, the<br />

same random number is added to the nominal value for each parameter of the group. If the<br />

LOTGROUP variation is relative, the same random number is multiplied by the nominal value.<br />

The .LOTGROUP command enables a probability distribution function to be defined that will<br />

be shared by different entities in the circuit. It may be thought of as a template where the<br />

location value of the distribution (the mean for example) is not specified.<br />

The .LOTGROUP only defines the family of the distribution (Uniform, Gaussian) and its range<br />

or variance. For example, the statement:<br />

.LOTGROUP MY_LOT_GROUP=UNIFORM/10%<br />

defines a template of distribution UNIF(NOM_VALUE,0.1*NOM_VALUE) where<br />

NOM_VALUE is unspecified. The NOM_VALUE parameter will be known when a statistical<br />

parameter is associated to the LOTGROUP distribution. For example, you could have:<br />

.PARAM P=1.0 LOTGROUP=MY_LOT_GROUP<br />

and the statistical parameter P will be randomly chosen in the interval [0.9, 1.1].<br />

Tip<br />

See “.LOTGROUP” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 429


Monte Carlo Analysis<br />

Sharing Distributions<br />

Related Topics<br />

How to Specify a Distribution Function<br />

430<br />

Eldo® User's Manual, 15.3


How to Specify a Distribution Function<br />

Monte Carlo Analysis<br />

How to Specify a Distribution Function<br />

By definition, “simple” random variables refer to statistical distributions that can easily be<br />

generated on a computer. The context usually dictates which random variables are meant. For<br />

example, the uniform distribution U([0, 1]) is simple, and so are the normal or <strong>user</strong>-defined<br />

cumulative distributions in most circumstances. In other terms, the simple distributions are<br />

elementary building blocks, and “complex” distributions can be defined as the result of complex<br />

transformations of the other distributions. The simple random variables are often associated to<br />

independent variables such as some process parameters or environmental conditions. In some<br />

cases, the PDK models are derived from Principal Components Analysis, and the principal<br />

components are simple Gaussian distributions.<br />

The available distributions are grouped into two classes. The first class is associated to<br />

parametric models. These models aim to describe probability distributions of a random variable<br />

with the aid of a limited number of parameters Θ. The probability density of X can be expressed<br />

as f X (x, Θ). The list of these distributions is given here:<br />

• Uniform Distribution<br />

• Gaussian or Normal Distribution<br />

• Weighted Uniform and Gaussian Distributions<br />

The second class represents distributions that are specified by a non-parametric procedure. A<br />

typical example is given by the so-called weighted uniform or gaussian that is defined implicitly<br />

by an accept/reject algorithm. The list of these distributions is given here:<br />

• User-defined Distribution<br />

• NOR/UNI Distributions<br />

• Weighted Uniform and Gaussian Distributions<br />

Note<br />

Some of these distributions, such as the “weighted” UNIF/GAUSS, may seem unusual or<br />

non-standard for many <strong>user</strong>s. They represent the legacy of past experimentations in Eldo<br />

and other third part tools. The implementation of those distributions are described.<br />

Uniform Distribution<br />

The uniform distribution defines equal probability over a given range for a continuous<br />

distribution. The parameters are Θ = (L, U), with the constraint L < U. The probability density<br />

function is expressed as:<br />

Eldo® User's Manual, 15.3 431


Monte Carlo Analysis<br />

How to Specify a Distribution Function<br />

Figure 11-4 shows the common statistics for a uniform distribution ( ).<br />

Figure 11-4. Common Statistics for UNIF Distribution<br />

The common statistics for the uniform distribution are:<br />

• mean:<br />

• standard deviation:<br />

The half-range of the distribution is the value h = (U − L)/2. Therefore, for the following<br />

definition (using the Eldo native syntax, other syntaxes may also be valid):<br />

.PARAM PARAMETER_NAME=NOMINAL_VALUE {LOT|DEV|DEVX}/UNIF=HALF_RANGE_VALUE<br />

the value HALF_RANGE_VALUE, noted h in the formulae, represents the half range (see<br />

Figure 11-4), giving:<br />

or when this value h is specified as a percentage:<br />

432<br />

Eldo® User's Manual, 15.3


Gaussian or Normal Distribution<br />

Monte Carlo Analysis<br />

How to Specify a Distribution Function<br />

In this case the parameters are Θ = (μ, σ), with the constraint σ > 0. The probability density is<br />

given as:<br />

We note that a random variable which follows a Gaussian distribution as defined here takes real<br />

values from (−∞, ∞). The simulated values are actually truncated to some <strong>user</strong>-defined interval.<br />

This interval is defined with the SIGTAIL argument on the .MC statement. See the Remarks on<br />

the Truncated Normal Distribution.<br />

The parameter μ provides the most likely value (for which the probability density function is at<br />

its highest), and the density function is symmetric around this value; μ is also the expected value<br />

(mean) of this distribution. The parameter σ provides a measure of dispersion: the larger it is,<br />

the flatter the probability density function is (that is, values far away from μ are still likely, or in<br />

other words possible values are more spread out).<br />

The plot in Figure 11-5 depicts the common statistics of the Gaussian distribution.<br />

Figure 11-5. Percentage of Cases in Eight Portions of the Gaussian Distribution<br />

This plot may help you define the SIGTAIL argument of the .MC analysis. For example, the<br />

range [−σ, σ] represents 34.13% + 34.13% = 68.26% of cases obtained after running the sample<br />

process in the Monte Carlo algorithm, and the range [−3σ, 3σ] covers 2(34.13% + 13.59% +<br />

2.14%) = 99.72% of the cases.<br />

Remarks on the Truncated Normal Distribution<br />

For the truncated Normal distribution, the parameters are Θ = (μ, σ, a, b), with the constraints<br />

that σ > 0, b > a.<br />

Eldo® User's Manual, 15.3 433


Monte Carlo Analysis<br />

How to Specify a Distribution Function<br />

The probability density function is expressed as:<br />

where φ and Φ represent the probability density and the cumulative distribution function<br />

respectively of the reduced centred Normal distribution (that is, the mean μ zero and standard<br />

deviation σ equal to 1).<br />

A random variable that follows a truncated Normal distribution takes values in the interval<br />

[a, b]. The parameter μ describes the most likely value. Whilst σ provides a measure of<br />

dispersion. Figure 11-6 shows an example with μ = 20, σ = 7, and [a, b] = [10, 35].<br />

In Eldo, the centered and reduced Gaussian variables are generated with the truncated normal<br />

distribution before transformation to the original scales of the input space.<br />

Figure 11-6. Plot of the Truncated Normal<br />

The bounds of the truncation interval are fixed by default to the SIGTAIL value. Note that this<br />

interval is necessarily a symmetric interval.<br />

434<br />

Eldo® User's Manual, 15.3


User-defined Distribution<br />

Monte Carlo Analysis<br />

How to Specify a Distribution Function<br />

You can define an arbitrary model using the .DISTRIB command. Provided here is the example<br />

of triangular distribution (which is actually a parametric distribution), where the .DISTRIB<br />

command is used as a template for a slightly skewed triangular distribution.<br />

This general triangular distribution is defined with three parameters (a, b, m), with the<br />

constraints a≤m, m≤b, b>a. The probability density function is expressed as:<br />

Note, a random variable that follows a triangular distribution as defined here takes in the<br />

interval [a, b]. The parameter m describes the most likely value. Figure 11-7 shows the plot of<br />

triangular distribution with m=15 and [a, b] = [5, 20].<br />

Figure 11-7. Plot of the Triangular Distribution<br />

The distribution given in Figure 11-7 can be obtained with the following statements:<br />

Eldo® User's Manual, 15.3 435


Monte Carlo Analysis<br />

How to Specify a Distribution Function<br />

.DISTRIB TRI (0, 0) (0.66666, 1) (1, 0)<br />

.PARAM XVAL=5 LOT/TRI=15<br />

V1 1 0 XVAL<br />

.OP<br />

.MC 1000 NBBINS=50<br />

.EXTRACT DC LABEL=R1 E(V1,V)<br />

.END<br />

The distribution parameters a, b are defined implicitly by construction. The most frequent value<br />

m is obtained by the formula: 5 × 0.66666 + 5 ≈ 15. Note also that the value XVAL=5 in the<br />

PARAM statement cannot be considered as the nominal value of the resistor. It is used as a shift<br />

in value of XVAL and LOT/TRI=15 is a scaling factor.<br />

Other Common Distributions<br />

You can generate additional distributions by using the basic building blocks of the previous<br />

section.<br />

• Half-Normal Distribution<br />

The half-normal distribution is the probability of the absolute value of a normal<br />

distribution with mean 0 and variance σ 2 . If X ~ N(0, σ 2 ), then Y = |X| is half-normally<br />

distributed.<br />

• Log-Normal Distribution<br />

The log-normal distribution is the single-tailed probability distribution of any random<br />

variable whose logarithm is normally distributed. If X is a random variable with a<br />

normal distribution, then Y = e X has a log-normal distribution.<br />

Related Topics<br />

Tip<br />

See “.DISTRIB” in the Eldo Reference Manual.<br />

Correlation Between Gaussian Input Variables<br />

Specifying a Monte Carlo Analysis<br />

436<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Correlation Between Gaussian Input Variables<br />

Correlation Between Gaussian Input Variables<br />

You can specify linear correlations between random variables in Eldo under some conditions:<br />

the variables must have Gaussian distribution and only LOT variations. We review some basic<br />

notions on multivariate probabilities.<br />

Basic Concepts on Multivariate Distributions<br />

A multivariate random variable is a vector of random variables. Notation is made more compact<br />

by writing X = (X 1 , …, X k ) T . Each of the components X i is a random variable in its own right,<br />

but specification of the properties of X as a whole requires information about influence of every<br />

variable on each of the others. Knowledge that one component is large therefore increases the<br />

probability that the other components are large.<br />

Generalizing the single variable case, the joint distribution function of X is defined by:<br />

where x = (x 1 , …, x k ) T . When the X i are continuous random variables, and provided it exists, the<br />

joint density function is given by:<br />

In this case:<br />

The probability density functions of each of the individual X i , termed marginal density<br />

functions, are obtained by integrating out the other components. For example:<br />

is the marginal probability density function of the component X 1 . Similarly:<br />

Eldo® User's Manual, 15.3 437


Monte Carlo Analysis<br />

Correlation Between Gaussian Input Variables<br />

is the joint marginal density function of (X 1 , X 2 ).<br />

In the special situation where the outcome of one random variable has no effect on the<br />

probability distribution of another, the variables are said to be independent. Formally, the<br />

variables X 1 and X 2 are independent if their joint density function factorizes:<br />

More generally, the influence of one random variable on the probability structure of another is<br />

characterized by the conditional density function:<br />

In the case of independent random variables:<br />

but generally the conditional density function depends also on the value of x 2 .<br />

The notions of expectation and variance apply to each margin in turn to give measures of the<br />

location and dispersion of each marginal component. It is also useful, however, to summarize<br />

the extent of dependence between components; that is the extent to which the components<br />

increase or decrease in harmony. The usual summaries are pairwise. The covariance of the<br />

variable X and Y, having joint density function f X, Y , is defined by:<br />

The covariance coefficient is often re-scaled to obtain a measure on a fixed interval. This leads<br />

to the correlation coefficient, defined by:<br />

438<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Correlation Between Gaussian Input Variables<br />

The correlation coefficient has a similar interpretation to the covariance, but is such that<br />

-1≤ρ(X,Y)≤1. For independent random variables, the correlation is zero. The converse is false,<br />

as the correlation is a measure only of the extent to which variables are linearly associated.<br />

Consequently, variables may have zero correlation if their association is non-linear.<br />

Figure 11-8. Scatter Plot of a Gaussian Sample and Contour Ellipses<br />

For a general random vector X = (X 1 , …, X k ) T , it is usual to pack together all the information on<br />

variances and covariances between each pair of variables into matrix, the variance-covariance<br />

matrix, defined as:<br />

where and for .<br />

Eldo® User's Manual, 15.3 439


Monte Carlo Analysis<br />

Correlation Between Gaussian Input Variables<br />

Like in the univariate case, there are standard families of probability distributions for random<br />

vectors. In particular, the multivariate normal distribution with mean vector μ = (μ 1 , …, μ k ) T<br />

and variance-covariance matrix C has the density:<br />

This definition implies that each of the marginal distribution is normal and that the complete<br />

joint distribution is determined once the marginal means and the variance-covariance matrix are<br />

specified.<br />

From its definition, we see also that the density of multinormal distribution is constant on<br />

ellipsoids of the form:<br />

Figure 11-8 shows the contour ellipses of a two-dimensional normal distribution. These contour<br />

ellipses are the iso-distance curves from the mean of this normal distribution corresponding to<br />

the metric C −1 .<br />

Tip<br />

As emphasized, the relationships between the input variables are described with the concept<br />

of linear correlation. In fact “linearity” is strongly related to “gaussianity.” The two terms<br />

could be consider as synonyms in this context. It is possible, however, to describe general<br />

multivariate distributions and to represent dependence structure among the input variables.<br />

Understanding these relationships can be done with the notion of a “copula” function. For an<br />

introduction, see for example Bouye, E., Durrleman, V., Nikeghbali, A., Riboulet, G., Roncalli,<br />

T., Copulas for Finance: A Reading Guide and Some Applications, 2000, Working Paper,<br />

Groupe de Recherche Operationnelle, Credit Lyonnais.<br />

Specifying Linear Correlation with .CORREL<br />

You can define a correlation coefficient between Gaussian parameters using the .CORREL<br />

command.<br />

Refer to the .CORREL command in the Eldo Reference Manual.<br />

The following netlist is a toy example which shows the effect of linear correlation between<br />

input variables. We can indirectly visualize the joint distribution of the Gaussian input P1 and<br />

P2.<br />

440<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Correlation Between Gaussian Input Variables<br />

R1 N1 0 P1<br />

V1 N1 0 1<br />

R2 N2 0 P2<br />

V2 N2 0 1<br />

.PARAM P1=10 LOT/GAUSS=10%<br />

.PARAM P2=10 LOT/GAUSS=5%<br />

.CORREL PARAM={P1,P2} CC=-0.5<br />

.DC<br />

.MC 500 ALL<br />

.EXTRACT DC LABEL=IR1 1/I(R1)<br />

.EXTRACT DC LABEL=IR2 1/I(R2)<br />

After extraction of the simulated values one can plot the resulting scatter plot. Figure 11-9 also<br />

shows the marginal densities of the joint distribution of (IR1,IR2).<br />

Figure 11-9. Scatter Plot and Marginal Distributions<br />

Eldo® User's Manual, 15.3 441


Monte Carlo Analysis<br />

Local and Global Variations<br />

We also plot the regression line Y = aX + b which relates the dependent variable Y=IR2 to<br />

X=IR1. It is a well known result that the slope of this line is given by the formula:<br />

and the intercept is .<br />

Local and Global Variations<br />

In statistical models for transistor level simulation, there are two types of variability in device<br />

properties:<br />

• Inter-die (between chips) variations or global variations.<br />

Typical examples of statistical parameters with global tolerances are oxide thickness or<br />

channel length reduction.<br />

• Intra-die (within chip) variations are local variations that affect transistors individually.<br />

A typical example of statistical parameters with local tolerances are the transistor<br />

threshold voltages.<br />

Inter-die variability consists of the accumulated fluctuations of material characteristics between<br />

lot-to-lot, wafer-to-wafer and die-to-die (chip-to-chip). However, once the wafers have been cut<br />

into individual chips there is no longer a traceable correlation among them. Therefore, lot-to-lot,<br />

wafer-to-wafer and die-to-die variations are pooled together into one term: the inter-die<br />

variability. This variability equally affects all devices on a given chip. In simulation terms, this<br />

means that all devices of a certain type use the same statistical model.<br />

Local variations lead to an increase in the number of statistical parameters relative to the<br />

number of transistors in a circuit. In a circuit with 100 transistors, there will be one global<br />

threshold voltage V th, glob that affects all transistors equally and 100 local threshold voltages<br />

V ith, loc for i = 1, ..., 100 that affect each transistor individually and independently from others.<br />

Therefore, you can consider that the effective threshold voltage for the i-th device is the sum:<br />

According to these definitions, global statistical parameters are not correlated with local<br />

statistical parameters, and local statistical parameters are not correlated with each other.<br />

Example<br />

In this example, LOT and DEV variations are defined on the length and width of the resistor<br />

model. By definition, there are two independent random variables associated to the inter-die<br />

442<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Local and Global Variations<br />

variations of the (W, L) parameters. The resistors R1 and R2 will receive the same random<br />

values for DLR and DW during the Monte Carlo sampling. These variables are defined as the 2-<br />

dimensional vector (DLR, DW R ).<br />

.TITLE RCWIRE_EXAMPLE<br />

* CIRCUIT PARAMETERS (WITH VARIATIONS)<br />

.PARAM VARL=0 LOT/UNIF=0.05U DEV/UNIF=0.1U<br />

.PARAM VARW=0 LOT/UNIF=0.05U DEV/UNIF=0.1U<br />

* CIRCUIT<br />

I1 0 1 1M<br />

I2 0 2 1M<br />

R1 1 0 RESISTOR<br />

R2 2 0 RESISTOR<br />

.MODEL RESISTOR R LEVEL=3 W=3U L=3U RSH=100 DW=VARW DLR=VARL<br />

.DC<br />

.MC 1000<br />

* EXTRACT<br />

.EXTRACT DC LABEL=V1 V(1)<br />

.EXTRACT DC LABEL=V2 V(2)<br />

.END<br />

The resistor R1 (respectively R2) will be associated to two independent random variables. This<br />

defines four independent uniform random variables (DL R1 , DW R1 , DL R2 , DW R2 ). The random<br />

sampling will be run with a joint probability distribution that is the product of six uniform<br />

distributions.<br />

The vector of random variables associated to this circuit is a 6-dimensional vector noted as:<br />

Note that, in the output file (the .chi file), these parameters will be named as follows:<br />

• The global variables (DL R , DW R ) will be associated to P(VARW), P(VARL).<br />

• The local variations of the width and the length of the R1 resistor will be:<br />

PEM(VARW,R1,R), PEM(VARL,R1,R).<br />

• The local variations of the width and the length of the R1 resistor will be:<br />

PEM(VARW,R2,R), PEM(VARL,R2,R).<br />

See “Parameter Naming Conventions” on page 536 for a detailed description of these macros.<br />

Eldo® User's Manual, 15.3 443


Monte Carlo Analysis<br />

Local and Global Variations<br />

Statistical Model<br />

It is clear that X is a vector of independent variables, because there is no functional dependences<br />

between these circuit parameters. From the designer’s view, the true physical model is actually<br />

characterized by the correlations between the global and local variations. This can be made<br />

explicit by rewriting the relations between the random variables. A new vector of random<br />

variables is defined by:<br />

such that:<br />

The pair of variables<br />

represents the effective length variations specified<br />

in the circuit by the command expressions .PARAM VARL=0.0 LOT/UNIF=0.05U DEV/<br />

UNIF=0.1U. In this example, the distribution of the variable L R1 is the sum distribution of DL R<br />

+ DL R1 . This distribution can be obtained explicitly as the convolution product:<br />

From these equations, it can also be deduced that the new variables are correlated. The<br />

correlation structure is given by the following arguments: define the matrix A such that<br />

. The variance of a linear transformation is known to equal:<br />

Since the random variables X are independent, Var{X} = diag(σ), and<br />

444<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Specifying Statistical Variations for Individual Model Parameters<br />

This correlation structure is handled implicitly by the simulator. The transformation is<br />

calculated during the simulation, and the sampling is generated in the space of the independent<br />

variable X.<br />

Related Topics<br />

Specifying Statistical Variations for Individual Model Parameters<br />

Input Sample<br />

Specifying Statistical Variations for Individual<br />

Model Parameters<br />

Individual model parameters may have statistical variations. You can specify these using the<br />

DEV and/or LOT parameters immediately following the model parameter in the .MODEL<br />

statement.<br />

For example, use the following syntax to define an NMOS model with VTO set to 0.6V and<br />

TOX set to 1.5×10 −7 :<br />

.MODEL N NMOS VTO=0.6 TOX=1.5e-7 DEV=1.0e-8<br />

The model parameter TOX has a uniform distribution with σ = 1.0×10 -8 , but VTO has a<br />

constant value. The following specification is equivalent:<br />

.MODEL N NMOS VTO=0.6 TOX=1.5e-7 DEV=6.66%<br />

To use a Gaussian distribution, change the DEV parameter to DEV/GAUSS. Using the same<br />

example, changing the TOX distribution to Gaussian would modify the .MODEL card as<br />

follows:<br />

.MODEL N NMOS VTO=0.6 TOX=1.5e-7 DEV/GAUSS=1.0e-8<br />

Tip<br />

See “.MODEL” in the Eldo Reference Manual.<br />

Related Topics<br />

Statistical Variations on Binning Parameters<br />

Assigning Statistical Variations using the .MCMOD Command<br />

Eldo® User's Manual, 15.3 445


Monte Carlo Analysis<br />

Statistical Variations on Binning Parameters<br />

Statistical Variations on Binning Parameters<br />

Eldo takes into account changes in binning parameters (for example LMIN, LMAX) due to<br />

Monte Carlo variations. Eldo will first make the variations on the .MODEL, and then select the<br />

appropriate model at each Monte Carlo run. For example:<br />

.PARAM P1=1 DEV=5%<br />

.MODEL N.1 NMOS LMIN='1U*P1' LMAX = '2U*P1'<br />

.MODEL N.2 NMOS LMIN='2U*P1' LMAX='3U*P1'<br />

M1 D G S B N W=1U L=1U<br />

Here Eldo will extract a new random value for P1. This value will be used to update parameters<br />

of both N.1 and N.2. When all parameters of the .MODEL have been updated, Eldo will select<br />

the appropriate model to be used for device M1.<br />

If both the size of a device and the binning parameters of its model are altered by Monte Carlo<br />

variations, Eldo will issue an error that it cannot handle this situation.<br />

Use .OPTION MC_IGNORE_BINNING to disable this automatic selection of the binning<br />

parameters at run time; the model selected at the nominal run will then be used for the whole<br />

Monte Carlo process.<br />

Tip<br />

See .PARAM, .MODEL, and .OPTION MC_IGNORE_BINNING in the Eldo Reference<br />

Manual.<br />

Related Topics<br />

Specifying Statistical Variations for Individual Model Parameters<br />

Assigning Statistical Variations using the .MCMOD Command<br />

Assigning Statistical Variations using the .MCMOD<br />

Command<br />

Modifying the .MODEL lines for the Monte Carlo analysis may not be convenient.<br />

Alternatively, use the .MCMOD command to assign statistical variations for .MODEL<br />

parameters without changing any part of the .MODEL statement.<br />

.MCMOD MODEL_NAME [(LIST_OF_INSTANCES)]<br />

+ PARAM1_NAME LOT|DEV=VALUE [PARAM2_NAME LOT|DEV=VALUE ...}]<br />

The .MODEL name must be specified, followed by one or more pairs of parameters and LOT<br />

and/or DEV values. Optionally, specifying a list of instances will apply the Monte Carlo<br />

probabilities to only instances in that list.<br />

Using the example above, the Monte Carlo parameter may be written as:<br />

446<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Tolerance Setting Using DEV, DEVX or LOT<br />

.MODEL N NMOS VTO=0.6 TOX=1.5e-7<br />

.MCMOD N VTO DEV=0.1<br />

DEV Variation<br />

DEV variation specified with .MODEL statements (or .MCMOD) can refer to dimensions of the<br />

current object directly, without any need to encapsulate models into subcircuits. The syntax for<br />

accessing an instance parameter is for example:<br />

E(*,)<br />

The * character is used here to refer to the current instance.<br />

Example<br />

.MODEL M nmos VTH=1 DEV={sqrt(E(*,l)*(E(*,W))*1.0e-5}<br />

M1 p1 p2 p3 p4 m w=10u l = 3u<br />

The two lines above are equivalent to the five below:<br />

.SUBCKT foo d g s b param: w=1u l=1u<br />

.model m nmos VTH=1 DEV={sqrt(l*w)*1.0e-5}<br />

M1 d g s b m w=w l=l<br />

.ENDS<br />

X1 p1 p2 p3 p4 foo w=10u l=3u<br />

A full example to illustrate this:<br />

* test DEVX<br />

M1 D1 G1 0 B mos1 w=w l=l as=0 ad=0 ps=0 pd=0 m=1<br />

M2 D2 G2 0 B mos1 w=w l=l as=0 ad=0 ps=0 pd=0 m=1<br />

.MODEL mos1 nmos<br />

+ level=53 version=3.24<br />

+ u0=300 tox=5n<br />

+ vth0=1 DEV={sqrt(E(*,l)*(E(*,w)))*1.0e-05}<br />

.param l=5e-6 w=10e-6<br />

.op<br />

.MC 10<br />

.option display_carlo EXTMKSA<br />

Tolerance Setting Using DEV, DEVX or LOT<br />

The size of the tolerance appears in a .MODEL command after the parameter keyword and<br />

value. The tolerance may be specified either as a percentage or an absolute quantity. To denote<br />

a percentage, the % sign must be used. Parametric expressions are allowed when specifying<br />

DEV or LOT.<br />

The DEV tolerance parameter causes devices which use the same .MODEL statement to vary<br />

independently of each other, as illustrated in the following example:<br />

c1 4 0 cmod 10p<br />

c2 6 8 cmod 10p<br />

.model cmod cap dev=10%<br />

Eldo® User's Manual, 15.3 447


Monte Carlo Analysis<br />

Tolerance Setting Using DEV, DEVX or LOT<br />

In the above example, both c1 and c2 use the model cmod. Their nominal values are both 10pF.<br />

The dev declaration placed immediately after the cap keyword indicates that during a Monte<br />

Carlo analysis, their values may vary independently of each other by at most ±10%. So, c1<br />

could have a value of 9.9pF while c2 has the value of 10.1pF during a simulation run.<br />

To use a Gaussian distribution, the DEV parameter is changed to DEV/GAUSS. Using the same<br />

example, changing the distribution to Gaussian would alter the .MODEL card as follows:<br />

c1 4 0 cmod 10p<br />

c2 6 8 cmod 10p<br />

.model cmod cap dev/gauss=10%<br />

Both c1 and c2 may vary independently of each other with a Gaussian distribution, where the<br />

standard deviation is 10 percent of the nominal value, 10pF.<br />

The DEV tolerance is appropriate for situations where the variation of parameters is uncorrelated.<br />

The devices on a printed circuit board are such an example.<br />

The DEVX specification forces Eldo to use a new random value for each instance of a<br />

subcircuit. The difference compared with DEV is that even if a parameter is used several times<br />

in the same subcircuit, only one value will be used for that particular instance.<br />

Note<br />

DEVX can only be used in a .PARAM statement and not in a .MODEL statement. It is<br />

impossible to have DEV and DEVX specified on the same parameter. If DEV and DEVX<br />

are specified on the same parameter, the last specification will be retained.<br />

The LOT tolerance setting causes devices which use the same .MODEL statement to vary<br />

together with each other, as illustrated in the following example:<br />

c1 4 0 cmod 10p<br />

c2 6 8 cmod 10p<br />

.model cmod cap lot=10%<br />

This is the same as the previous example with the exception that the tolerance has been changed<br />

from DEV to LOT. Now c1 and c2 will always have the same value. They may be both equal to<br />

9.9pF during one run and 10.1pF during another run, but c1 will not have a value of 9.9pF<br />

while c2 has the value of 10.1pF during the same run.<br />

The LOT tolerance is appropriate for situations where there is a variation of the parameters<br />

track. Devices in an integrated circuit are such examples.<br />

When an instance parameter is used in the expression of a subcircuit parameter that varies with<br />

LOT, one draw is made for all the parameter instantiations inside the subcircuit (LOT type) and<br />

one draw is made for each instance of the subcircuit (DEVX type). In this particular case, the<br />

LOT variation is equivalent to a DEVX variation. An example of this is provided below.<br />

448<br />

Eldo® User's Manual, 15.3


Examples<br />

Monte Carlo Analysis<br />

Tolerance Setting Using DEV, DEVX or LOT<br />

• This example specifies five Monte Carlo runs of the transient analysis at the output node<br />

n5. All devices with the model name rmod have a dev tolerance attached to their<br />

nominal value:<br />

.model rmod res dev=2%<br />

...<br />

.mc 5 v(n5)<br />

.tran 1n 100n<br />

.plot tran v(n5)<br />

• This example specifies five Monte Carlo runs of the transient analysis at the output node<br />

n5. All devices with the model name cmod have a lot tolerance with a Gaussian<br />

distribution, where the standard deviation is two percent of the nominal value:<br />

.model cmod cap lot/gauss=2%<br />

...<br />

.mc 5 v(n5)<br />

.tran 1n 50n<br />

.plot tran v(n5)<br />

Tip<br />

An example of this type of analysis can also be found in “Example 7—Monte Carlo<br />

Analysis Basic” on page 1290.<br />

• This example illustrates a case of LOT/DEVX equivalence. Replacing LOT by DEVX<br />

will generate the same Monte Carlo results.<br />

* test LOT/DEVX equivalence<br />

.subckt res2 a b param: rval=1k<br />

.param rvalstat='2*rval' lot=10%<br />

r1 a b rvalstat<br />

r2 a b rvalstat<br />

.ends<br />

va a 0 dc 2<br />

vb b 0 dc 0<br />

x1 a b res2 rval=1k<br />

x2 a b res2 rval=1k<br />

.dc<br />

.mc 100 seed=1<br />

.extract dc label=i1_1 i(x1.r1)<br />

.extract dc label=i1_2 i(x1.r2)<br />

.extract dc label=i2_1 i(x2.r1)<br />

.extract dc label=i2_2 i(x2.r2)<br />

.option aex dump_mcinfo<br />

.end<br />

Eldo® User's Manual, 15.3 449


Monte Carlo Analysis<br />

Tolerance Setting Using DEV, DEVX or LOT<br />

Related Topics<br />

Specifying Statistical Parameters<br />

450<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Sampling Plan Methods<br />

Sampling Plan Methods<br />

The goal of Monte Carlo analysis is usually to estimate the distribution of a measure of<br />

performance defined over a circuit.<br />

The sampling plan methods available in Eldo Monte Carlo analysis are specified with the<br />

SAMPLING parameter of the .MC command, as follows:<br />

• Standard Monte Carlo uses a pseudo-random number generator to draw the input<br />

sample. This is the random input used by default in Eldo. It comes from a pseudorandom<br />

generator that outputs numbers between 0 and 1, which are assumed to imitate a<br />

sequence of uniform random variables between 0 and 1. These numbers are then<br />

transformed to follow the probability distributions specified by the model.<br />

• Importance Sampling Monte Carlo uses a dedicated method for computing tail<br />

probabilities. This method is specified using the MCPROB and MCBOUND functions.<br />

Importance sampling uses the same pseudorandom generator as standard Monte Carlo<br />

sampling. The pilot runs are standard MC runs, and the standard post-analysis is<br />

performed on these runs.<br />

• Quasi-Monte Carlo Method is an empirical sampling method based on Monte Carlo, but<br />

using low discrepancy point sets instead of pseudorandom numbers. This improved (and<br />

deterministic) sampling scheme roughly ‘fill the space’ in a better way.<br />

• Latin Hypercube Sampling may be considered as a particular case of stratified sampling.<br />

The purpose of stratified sampling is to achieve a better coverage of the sample space of<br />

the input factors.<br />

• Model-Based Monte Carlo Simulation is a variability analysis where the sampling plan<br />

is optimized with respect to the number of random input variables and a <strong>user</strong>-defined<br />

budget of runs.<br />

Standard Monte Carlo<br />

There are two different random number generators in Eldo depending on the argument<br />

DATAFLOW of the .MC command.<br />

When DATAFLOW=0 Eldo uses the drand48 routine provided in the standard C library, and<br />

when DATAFLOW=1 the RNARRY routine described in D.E. Knuth, The Art of Computer<br />

Programming (3rd edition, Addison Wesley, vol 2, Seminumerical algorithms, Chap 3).<br />

The pseudo-random generator proposed with DATAFLOW=1 belongs to the family of lagged<br />

Fibonacci generators. It overcomes some well-known weaknesses of the linear congruential<br />

generator used in the drand48 routine. Specifically, if we build d-dimensional vectors from<br />

consecutive random numbers (X i , X i+1 , …, X i+d ), then the points will lie on a relatively small<br />

number of hyperplanes. This is due to the fact that the low-order bits of the generated numbers<br />

have very short periods. Using this routine attempts to satisfy three objectives:<br />

Eldo® User's Manual, 15.3 451


Monte Carlo Analysis<br />

Importance Sampling Monte Carlo<br />

• It should produce high-quality random numbers uniformly distributed in the interval<br />

(0, 1).<br />

• The computations should be fast. Separate threads of random numbers are allowed to be<br />

generated in parallel.<br />

• It should be portable (Unix and Windows platforms).<br />

To start this generator, its initial state needs to be specified. Knuth introduced an algorithm that<br />

uses a single integer, which can take on approximately 10 9 different values, in such a way that a<br />

given seed is guaranteed to produce at least 10 21 different starts before colliding with those<br />

produced by a different seed.<br />

Importance Sampling Monte Carlo<br />

The Importance Sampling Monte Carlo (ISMC) method is dedicated to the estimation of failure<br />

probabilities (or the computation of parametric yield in circuit design terms) and, conversely, to<br />

the estimation of the thresholds corresponding to <strong>user</strong>-defined yield.<br />

Note<br />

Estimation of low failure probabilities is often called a “high sigma” problem in the EDA<br />

literature. The terms “low probability estimation” and “rare events simulation” are used in<br />

this section to mean the same thing.<br />

Rare events can be defined as the regions of the input parameter space that have a very small<br />

volume with respect to the measure induced by the joint probability of the parameters. The<br />

associated probabilities of interest are close to zero, and may range from 10 −4 to 10 −10 . In this<br />

context, Monte Carlo analysis is used as a verification tool to check that the probability of<br />

exceeding a performance specification is acceptably small.<br />

The Monte Carlo algorithm is an iterative simulation method that may be described briefly as a<br />

random exploration of the space of input parameters. The fundamental problem with this<br />

technique is that the sample size has to be large when the probabilities to estimate are small. For<br />

example, estimating a probability of around 10 −K (where K > 2) to a target accuracy of 10% will<br />

involve more than 10 −(K + 2) simulations of the circuit performances.<br />

The ISMC method is implemented using an adaptive procedure based on importance sampling,<br />

and has the following properties:<br />

• It is as insensitive as possible to the dimension of the problem.<br />

• It requires no prior knowledge to function. Specifically, it functions if nothing is known<br />

about the output distribution and its tails.<br />

• It does not need to be manually tuned to work with a given cell or circuit.<br />

452<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Importance Sampling Monte Carlo<br />

• It includes a robust and reliable accuracy estimator.<br />

Figure 11-10. The ISMC Method<br />

Eldo® User's Manual, 15.3 453


Monte Carlo Analysis<br />

Importance Sampling Monte Carlo<br />

Figure 11-10 illustrates the general principle underlying the ISMC method. The top plot<br />

represents the probability distribution function of the output measure Y = H(X). The vertical<br />

lines at y t are associated with the failure boundary curves C t = {x | H(x) = y t } shown in the<br />

bottom plot. The difficult problem of estimating the very small probabilities is broken down<br />

into a sequence of simpler intermediate problems of the form:<br />

where the levels y t are a chosen monotone sequence that tend to the goal value y.<br />

At each iteration t, an intermediate sample X t is generated in order to estimate the intermediate<br />

probability π t . This intermediate sample is a standard Monte Carlo random sample of size at<br />

least NRUN_PILOT. The number of steps needed to compute a single tail probability is<br />

approximately NRUN_PILOT × IS_MAXITER. When both bounds are specified, the number<br />

of steps needed is approximately double this value. Refer to “Probability and Quantile<br />

Estimators” on page 480 and “Importance Sampling Monte Carlo Examples” on page 528 for<br />

more information.<br />

Yield and Failure Probability Computation using MCPROB<br />

The yield value and probability of failure are complementary quantities used to measure how<br />

well a given circuit conforms to a set of <strong>user</strong>-defined specifications. For practical reasons, the<br />

ISMC method only considers failure probabilities.<br />

The MCPROB function computes the probability π y that a given response is greater than or less<br />

than a bound y:<br />

• To calculate a left-tail probability:<br />

use the following command:<br />

.EXTRACT MC LABEL=LABEL MCPROB(OUTPUT, LE, BOUND)<br />

where OUTPUT is the name of the output response H(X), and where BOUND is y.<br />

• To calculate a right-tail probability:<br />

use the following command:<br />

.EXTRACT MC LABEL=LABEL MCPROB(OUTPUT, GE, BOUND)<br />

where OUTPUT is the name of the output response H(X), and where BOUND is y.<br />

454<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Importance Sampling Monte Carlo<br />

The two forms of the MCPROB function can be combined to calculate yield, that is, the<br />

probability π L, U that a given response is between bounds y L and y U (with y L ≤ y U ). To calculate<br />

such a probability:<br />

use the following commands:<br />

.EXTRACT MC LABEL=PROB_L MCPROB(OUTPUT, LE, BOUND_L)<br />

.EXTRACT MC LABEL=PROB_U MCPROB(OUTPUT, GE, BOUND_U)<br />

.EXTRACT MC LABEL=PROB_LU '1-(PROB_L+PROB_U)'<br />

where OUTPUT is the name of the output response H(X), and where BOUND_L and<br />

BOUND_U are y L and y U respectively.<br />

Quantile Computation using MCBOUND<br />

The MCBOUND function computes the quantile y π associated with a given probability π.<br />

Formally, the computed value is the solution to the following optimization problem. For 0 < π <<br />

1, the quantity F Y −1 (π) = inf{y | F Y (y) ≥ π} is called the π-quantile of the random variable Y.<br />

The MCBOUND function is inverse to the MCPROB(…, LE, …) function. To calculate a<br />

quantile y π satisfying:<br />

use the following command:<br />

.EXTRACT MC LABEL=BOUND MCBOUND(OUTPUT, PROB)<br />

where OUTPUT is the name of the output response H(X), and where PROB is π.<br />

To determine a yield interval, defined as the interval (y L , y U ) such that the associated coverage<br />

probability π L, U has a given value, use the following commands:<br />

.EXTRACT MC LABEL=BOUND_L MCBOUND(OUTPUT, PROB_L)<br />

.EXTRACT MC LABEL=BOUND_U MCBOUND(OUTPUT, PROB_U)<br />

where OUTPUT is the name of the output response H(X), and where PROB_L and PROB_U<br />

are probability values satisfying PROB_U - PROB_L = π L, U .<br />

Eldo® User's Manual, 15.3 455


Monte Carlo Analysis<br />

Quasi-Monte Carlo Method<br />

Quasi-Monte Carlo Method<br />

Quasi-Monte Carlo is an empirical sampling method based on Monte Carlo, but using low<br />

discrepancy point sets (such as the Faure, Sobol, or Niederreiter sequences) instead of<br />

pseudorandom numbers.<br />

This improved (and deterministic) sampling scheme roughly ‘fill the space’ in a better way as<br />

shown in Figure 11-11. The left plot shows an example of LDS in (0,1) 2 compared to a<br />

pseudorandom sequence calculated with a classical generator.<br />

Figure 11-11. Comparison Between Low Discrepancy and Pseudorandom<br />

Point Sets<br />

The Monte Carlo integration error depends on the discrepancy of the sequence used:<br />

where V Τ is the total variation function. The discrepancy is defined as the deviation to the<br />

perfect uniformity as follows:<br />

where λ(I) is the Lebesgue’s measure of the interval and n I the number of points in the interval.<br />

456<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Latin Hypercube Sampling<br />

The quasi-Monte Carlo efficiency relies on the empirical convergence rate of commonly used<br />

sequences. This convergence rate is governed by the discrepancy that is asymptotically given<br />

by:<br />

Asymptotically this is smaller than the standard error of a pseudorandom estimate, the error<br />

converges in O(n −1 ) instead of O(n −1/2 ) for traditional Monte Carlo. We then have a method<br />

that can potentially compete with MC to run the simulations. Unfortunately the convergence<br />

rate depends on the dimension d. For example, with d = 10, we have:<br />

for n ≤ 10 34<br />

We conclude that the current implementation of the QMC techniques should not be used as an<br />

option to accelerate the Monte Carlo analysis when only a moderate number of simulations is<br />

allowed and when the number of parameters is greater than 5.<br />

The estimators of the mean, yield, variance, and so on, are the same as in the Monte Carlo<br />

method. However, a disadvantage of this approach is that the use of a deterministic source<br />

means that the unbiased and the usual error estimation methods are lost. Therefore it is difficult<br />

to assess the final value of the integral (the mean value).<br />

For a detailed overview of QMC methods, refer to: P. L’Ecuyer and C. Lemieux, Recent<br />

Advances in Randomized Quasi-Monte Carlo Methods in Modeling Uncertainty: An<br />

Examination of Stochastic Theory, Methods and Applications, Kluwer, 2001.<br />

Related Topics<br />

Sampling Plan Methods<br />

Latin Hypercube Sampling<br />

Latin hypercube sampling (LHS) may be considered as a particular case of stratified sampling.<br />

The purpose of stratified sampling is to achieve a better coverage of the sample space of the<br />

input factors. In the latin hypercube, sampling is undertaken as follows:<br />

• The range of each input factor x j is divided into n intervals of equal marginal probability<br />

1/n.<br />

• One observation of each input factor is made in each interval using random sampling<br />

within that interval.<br />

Eldo® User's Manual, 15.3 457


Monte Carlo Analysis<br />

Latin Hypercube Sampling<br />

• All the intervals having common state with the previous intervals are put apart from the<br />

list of available intervals.<br />

Thus, there are n non-overlapping realizations for each of the d input factors. The method has<br />

the advantage of ensuring input factor has all portions of its distribution represented by input<br />

values.<br />

For further information on LHS, refer to the classical paper: M.D. McKay, R.J. Beckman and<br />

W. J. Conover, A Comparison of Three Methods for Selecting Values of Input Variables in the<br />

Analysis of Output from a Computer Code, Technometrics (Amer. Stat. Assoc.) Vol. 21, No. 2,<br />

1979, pp. 239-245.<br />

Two-dimensional Case<br />

Suppose we can afford to sample 16 points in (0, 1) 2 . Sampling one point from each of 16<br />

vertical strata would be a good strategy if the function f depended primarily on the horizontal<br />

coordinate. Conversely if the vertical coordinate is the more important one, then it would be<br />

better to take one point from each of 16 horizontal strata.<br />

It is possible to stratify both ways with the same sample, in what is known as Latin hypercube<br />

sampling (see “Latin Hypercube Sampling” on page 457). Figure 11-12 shows a set of 16 points<br />

in the square, that are simultaneously stratified in each of 16 horizontal and vertical strata.<br />

Figure 11-12. Latin Hypercube Sampling<br />

The left plot shows 16 points, one in each of 16 vertical strata. The right plot shows the same 16<br />

points. There is one in each of 16 horizontal strata. These points form what is called a Latin<br />

Hypercube sample.<br />

If the function f on (0, 1) 2 is dominated by either the horizontal coordinate or the vertical one,<br />

then we will get an accurate answer, and we do not even need to know which is the dominant<br />

variable. Better yet, suppose that neither variable is dominant but that<br />

458<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Model-Based Monte Carlo Simulation<br />

where f H depends only on the horizontal variable, f V depends only on the vertical one, and the<br />

residual f RES is defined by subtraction.<br />

Latin hypercube sampling will give an error that is largely unaffected by the additive part<br />

f H (u) +f V (u). One can prove that the variance in Latin hypercube sampling is approximately<br />

σ 2 RES /n where σ RES is the smallest variance of f RES for any decomposition of f.<br />

LHS versus Random<br />

The LHS method ensures that each of these components is represented in a fully stratified<br />

manner, no matter which components might turn out to be important. It can be proved that LHS<br />

is never worse than random sampling for estimating the mean and the population distribution<br />

function. In particular the closer the output function is to being additive in its input variables,<br />

the more reduction in variance (variance of the mean estimator).<br />

When choosing the Monte Carlo sampling plan best suited for your analysis, follow these<br />

guidelines:<br />

• For uncertainty and sensitivity analyses, choose the standard Monte Carlo sampling plan<br />

(RAND).<br />

• For Large Scale Sensitivity (LSS) analysis, it makes sense to choose the Latin<br />

Hypercube Sampling (LHS) method. It is related to the stratification method used in this<br />

approach. The disadvantage of this method is the lack of a save/restart feature; the<br />

current samples cannot be augmented with additional points. The LHS plans are in some<br />

way very monolithic, unlike the standard Monte Carlo sampling plan which is very<br />

flexible.<br />

The LHS method is based on the classical approach, the stratification method used in LHS takes<br />

into account the underlying distribution. The LHS sampling is uniform, (0, 1) N , but the resulting<br />

sample is obtained by transforming this uniform sample into the scales (and shape) of the joint<br />

probability distribution.<br />

Related Topics<br />

Sampling Plan Methods<br />

Model-Based Monte Carlo Simulation<br />

The basic idea of a model-based Monte Carlo simulation is to perform surrogate modeling to<br />

drastically reduce the number of simulations from the response function of interest. The<br />

surrogate model serves as a substitute for the high-fidelity SPICE simulations in the context of<br />

Monte Carlo analysis.<br />

The name that we used in Eldo to denote this feature is “Super Saturated Design” (SSD). It<br />

refers to the early developments of the approach for constructing design plans satisfying optimal<br />

Eldo® User's Manual, 15.3 459


Monte Carlo Analysis<br />

Model-Based Monte Carlo Simulation<br />

requirements. SSD indicates a different approach compared to the standard Monte Carlo or<br />

Latin Hypercube methods, where the specific sampling plan does not require too many<br />

simulations. The SSD approach has to be understood now as an ensemble of modeling<br />

techniques designed to accelerate the variability analysis.<br />

In model-based Monte Carlo settings, the variability analysis is composed of three distinct<br />

steps:<br />

• The first one is the sampling phase where a space-filling design is used to collect<br />

variations of the output responses of a circuit from the input variations.<br />

• The modeling phase is formulated as a pure regression (or interpolation) problem.<br />

• And the final variability analysis is directly performed on the surrogate function.<br />

The key points of the SSD approach are as follows:<br />

• You provide the number of runs that you want Eldo to perform, NRUN_MAX, based on<br />

how much CPU-time you want to spend, and Eldo determines a sampling plan with<br />

some space filling properties.<br />

• You may also specify the number of test runs that you want Eldo to perform, using the<br />

.MC parameter SSD_NRUN_TEST. The test runs are used to compute accuracy<br />

metrics, contained in the .mcm file, which you can use to determine the quality of the<br />

surrogate model. Refer to “Model Adequacy Checking for Model-Based MC” on<br />

page 476 for more information.<br />

Note<br />

By default, Eldo does not perform any test runs. Prior to AMS release 15.3, Eldo<br />

automatically determined how many test runs to perform based on the value of<br />

NRUN_MAX.<br />

• The complexity of the surrogate model for the SSD sampling method<br />

(SAMPLING=SSD) is controlled with the .MC parameter SSD_COMPLEXITY,<br />

defined as multiple choice from the simplest model (0) to the more complex (1) which is<br />

the default.<br />

We assume that each circuit response y i , i=1, …, N is simulated with d variables x 1 , …,<br />

x d given the realizations {y i , x 1i , …, x di }. The goal is to estimate a function s that<br />

satisfies a regression model:<br />

over some domain: containing the input data. The additive stochastic term ε has<br />

its expected value defined to be zero, and defines the dependence of the output variable<br />

on quantities other than the selected input variables.<br />

460<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Model-Based Monte Carlo Simulation<br />

When SSD_COMPLEXITY=0, a model is optimized to capture the shape of the output<br />

measures, and is defined as an affine combination of univariate random variables, as<br />

follows:<br />

In the chosen non-linear extension with SSD_COMPLEXITY=1, we assume that the<br />

surrogate function s(.) is represented as a linear combination of basis functions ϕ k (x),<br />

k=0, …, K:<br />

Notes<br />

and the coefficients α 0 , α 1 , …, α K are estimated with a dedicated optimization algorithm.<br />

• After running the Monte Carlo analysis with the SSD method, statistical plots are<br />

available in EZwave. The SSD method tries to provide the same post-analysis features<br />

as standard Monte Carlo. View the outputs in the .mcm file and the additional .mch, .mci,<br />

and .mco files.<br />

The following notes aim at expressing some important facts you have to understand before<br />

using this model-based approach. Some rules that may help you are provided.<br />

• The SSD approach suffers from an issue that is common to many model-based Monte<br />

Carlo Analyses. It is difficult to quantify the error committed on the Statistics obtained<br />

from the variability analysis. The fundamental problem is that we cannot relate the error<br />

estimated during the model-based Monte Carlo analysis to the true uncertainty that<br />

could be obtained by running the Monte Carlo based on SPICE simulations. A specific<br />

methodology has been implemented and tested.<br />

If we translate the popular adage “There's no such thing as a free lunch” to our<br />

variability settings, we want to express the idea that despite the potential CPU speedup<br />

we may obtain, it is impossible to get something for nothing. Using the statistical<br />

concepts of bias and variance, model-based approaches potentially reduce variance of<br />

estimators to zero, but the bias may be large and not controllable. The reason is that the<br />

cost of model evaluation becomes almost negligible with respect to true simulation.<br />

Hence, a very large number of model evaluation is allowed and implies almost zero<br />

variance estimators.<br />

Eldo® User's Manual, 15.3 461


Monte Carlo Analysis<br />

Model-Based Monte Carlo Simulation<br />

• The SSD approach is best suited to circuits where the CPU-time is a strong constraint for<br />

the designer and specifically for applications with a very limited budget of simulations.<br />

A typical sample size ranges from a few tens to hundreds of simulations. The linear<br />

approximation used within the SSD algorithm assumes that the regression function is<br />

linear in the inputs. Augmenting the number of runs does not automatically improve the<br />

accuracy of the model. However, for prediction purposes, it can sometimes outperform<br />

more complex non-linear models, especially in situations with small numbers of training<br />

cases.<br />

• You should first validate the SSD results against a standard Monte Carlo simulation<br />

before applying the SSD method full-scale across a set of circuit variants.<br />

• A non-linear model better takes into account the potential non-linearity of the circuit<br />

responses. This compensates the rigid form of the linear models, and produce more<br />

accurate models, leading to more accurate variability estimates. You should not expect<br />

an accurate estimation of the output response in the tails. The SSD sampling plan is<br />

designed to capture the so-called “normal events.”<br />

• When the simulation budget ranges from a few hundreds or thousands of runs, the SSD<br />

approach should not be considered as an alternative to the standard Monte Carlo.<br />

Related Topics<br />

Sampling Plan Methods<br />

Model-Based Approximations Example<br />

462<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Post-Analysis of Monte Carlo Simulations<br />

Post-Analysis of Monte Carlo Simulations<br />

Recall that the Monte Carlo analysis is mainly dedicated to uncertainty analysis. Monte Carlo<br />

simulations provide a general (and efficient) approach for determining the distribution function:<br />

for a circuit characteristic . This distribution function encodes all the information<br />

known about Y, any property of Y such as expectation, variance and coverage intervals can be<br />

approximated using CDF Y .<br />

We consider this distribution function as the primary output of the Monte Carlo analysis. We<br />

distinguish the parts in the output as follows:<br />

• The primary output: the expectation of Y (the mean), taken as an estimate of the quantity<br />

of interest, the standard deviation of Y, taken as the standard uncertainty associated with<br />

y, and a coverage interval containing Y with a specified probability (the coverage<br />

probability), approximation to the probability density function (via histograms) and the<br />

discrete representation of the distribution function.<br />

• The additional output contains: inter-quartile range (alternative measures of dispersion),<br />

min/max values, confidence interval for the mean and prediction interval, distributional<br />

measures (skewness, kurtosis), normal fit and normality test.<br />

For backward compatibility constraints, some of these results will still be present in the .chi file.<br />

Therefore, the post-analysis results of a Monte Carlo simulation are provided in two ways: the<br />

.chi file and four files dedicated to the Monte Carlo analysis (see Figure 11-13).<br />

• Output of Uncertainty Analysis (the .chi File)<br />

The .chi file. This file contains the traditional output of the Monte Carlo analysis and<br />

additional information extracted from the simulation. It is the file where <strong>user</strong>s can find<br />

the values of the extract after each run. The results are presented in raw manner.<br />

• Primary Statistics of Uncertainty Analysis<br />

The .mcm and the additional data files. The main file contains the primary output. This<br />

file has extension .mcm and represents an evolution of the .chi file. Two optional files<br />

are added for data mining features, with the extension .mci and .mco, containing the<br />

complete input and output samples generated for the simulations.<br />

Eldo® User's Manual, 15.3 463


Monte Carlo Analysis<br />

Post-Analysis of Monte Carlo Simulations<br />

Figure 11-13. Output Files Organization<br />

The idea which drives the multiple files option, is that the .chi should not mix<br />

informations on how the circuit simulations are processed (the simulator job) and the<br />

statistical analyses of the Monte Carlo simulations (the post-processing phase).<br />

These outputs are available by specifying the argument DATAFLOW=1 on the .MC<br />

command, which means that this feature is not activated by default. Due to backward<br />

compatibility issues, this alternative Monte Carlo flow (and the resulting output) is<br />

deactivated when some features of the Monte Carlo analysis are used. It is also<br />

deactivated if no measurements (.EXTRACT statements) are specified in the netlist.<br />

If the netlist contains swept parameters or .ALTER blocks, Eldo generates multiple<br />

.mcm, .mci, and .mco files. Refer to “Monte Carlo Analysis With a Varying Circuit” on<br />

page 419 for more information.<br />

• Graphical Output<br />

Eldo provides some tools such as scatter plots, histograms, or probability distribution<br />

functions which you can view using EZwave.<br />

464<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Output of Uncertainty Analysis (the .chi File)<br />

Output of Uncertainty Analysis (the .chi File)<br />

The .chi file contains the traditional output of the Monte Carlo analysis and additional<br />

information extracted from the simulation.<br />

Extract Functions Specific to Monte Carlo Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465<br />

Extracting the Index and Total Number of Runs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468<br />

Basic Statistics and Histograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469<br />

Bootstrap Estimates for Mean and Standard Deviation . . . . . . . . . . . . . . . . . . . . . . . . . 470<br />

Global Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471<br />

Summary of Extracted Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471<br />

Extract Functions Specific to Monte Carlo Analysis<br />

You can specify additional .EXTRACT commands in the netlist to obtain the minimum, the<br />

maximum, the mean, and the standard deviation values, quantiles and probabilities, together<br />

with higher order moments. The keyword MC is required on the .EXTRACT statements that<br />

make use of these Monte Carlo extract functions.<br />

In the following list, the string LABEL_EXT refers to the name of an existing .EXTRACT<br />

command. Given a sequence of univariate data Y 1 , Y 2 , …, Y n extracted from a Monte Carlo<br />

analysis, Eldo provides in the .chi file the values of the following MC extract functions:<br />

• MCMIN(LABEL_EXT)<br />

Returns the minimum value of the selected extract:<br />

• MCIMIN(LABEL_EXT)<br />

Returns the index of the run providing the minimum value of the selected extract.<br />

• MCMAX(LABEL_EXT)<br />

Returns the maximum value of the selected extract:<br />

• MCIMAX(LABEL_EXT)<br />

Returns the index of the run providing the maximum value of the selected extract.<br />

• MCNBENCH(LABEL_EXT)<br />

Returns the number of measured values for the selected extract.<br />

Eldo® User's Manual, 15.3 465


Monte Carlo Analysis<br />

Output of Uncertainty Analysis (the .chi File)<br />

• MCAVG(LABEL_EXT)<br />

Returns the average value of the selected extract (see the section Mean and Standard<br />

Deviation for more information):<br />

• MCSTD(LABEL_EXT)<br />

Returns the standard deviation of the selected extract (see the section Mean and<br />

Standard Deviation for more information):<br />

• MCVAR(LABEL_EXT)<br />

Returns the sample variance<br />

of the selected extract.<br />

• MCSKEW(LABEL_EXT)<br />

Returns the third standardized moment also known as sample skewness and denoted by<br />

(see the section Parametric Fit and Normality Test for more information).<br />

• MCSKEW_NB(LABEL_EXT)<br />

Returns the Fisher G-statistics also known as the unbiased sample skewness and denoted<br />

by G 1 (see the section Parametric Fit and Normality Test for more information). The<br />

suffix _NB refers to no bias.<br />

• MCKURT(LABEL_EXT)<br />

Returns the fourth standardized moment also known as sample kurtosis and denoted by<br />

β 2 (see the section Parametric Fit and Normality Test for more information).<br />

• MCKURT_NB(LABEL_EXT)<br />

Returns the Fisher g-statistics also known as the unbiased sample kurtosis and denoted<br />

by G 2 (see the section Parametric Fit and Normality Test for more information). The<br />

suffix _NB refers to no bias.<br />

• MCMOM(LABEL_EXT,CENTER_VALUE,ORDER)<br />

Returns the moment of order ORDER for the selected extract, centered at the value<br />

CENTER_VALUE.<br />

466<br />

Eldo® User's Manual, 15.3


• MCCORR(LABEL_EXT1,LABEL_EXT2)<br />

Monte Carlo Analysis<br />

Output of Uncertainty Analysis (the .chi File)<br />

Returns the pairwise-linear correlation coefficient between each pair of output measures.<br />

The sample correlation coefficient between two random variables (U, V) is given by the<br />

formula:<br />

(see the section Coorelation of Test Concordance for more information).<br />

• MCCOVAR(LABEL_EXT1,LABEL_EXT2)<br />

Returns the pairwise-linear covariance coefficient between each pair of output measures.<br />

The sample covariance coefficient between two random variables (U, V) is given by the<br />

formula:<br />

When the value U i or V i is undefined, because the corresponding extract function cannot<br />

be measured at the i-th run of the Monte Carlo simulation, then this data is removed<br />

from the computation. When all the pairwise data are removed, Eldo will return the<br />

value UNDEF (see the section Coorelation of Test Concordance for more information).<br />

• MCPROB(LABEL_EXT,LE | GE, BOUND_VALUE)<br />

Returns the probability π y that a given response is less or greater than a <strong>user</strong>-defined<br />

bound y. We write this probability as follows:<br />

when the second argument is LE, or<br />

when the argument is GE. The probability can be recast into the evaluation of the<br />

expectation<br />

where I {A} is the indicator function of the event A, and<br />

therefore computed through Monte Carlo simulations as follows:<br />

Eldo® User's Manual, 15.3 467


Monte Carlo Analysis<br />

Output of Uncertainty Analysis (the .chi File)<br />

A similar expression can be obtained for the probability<br />

“Less or Equal” with the operator “Greater or Equal.”<br />

See section “Probability and Quantile Estimators” on page 480.<br />

• MCBOUND(LABEL_EXT, PROB_VALUE)<br />

by replacing the operator<br />

Returns the quantile probability associated to a given probability π. This is the<br />

inverse problem solved in the MCPROB(.) function. The argument PROB_VALUE is<br />

the value π. Formally this function is computed with the following optimization<br />

problem. For 0 < π < 1, the quantity:<br />

is called the π-quantile of Y. The standard estimator of the π-quantile is<br />

where<br />

is the integer ceiling function and Y (k) is the k-th order statistics with<br />

.<br />

See section “Probability and Quantile Estimators” on page 480.<br />

• MCMED(LABEL_EXT)<br />

Returns the median value of the output sample of a given response Y. The median value<br />

is the 0.5-quantile of the distribution (see the section Robust Measures of Location for<br />

more information).<br />

• MCQ1(LABEL_EXT) and MCQ3(LABEL_EXT)<br />

Returns the first quartile and the third quartile of the distribution of a given response Y.<br />

We have the 0.25 quantile and the 0.75 quantile (see<br />

the section Alternative Measures of Dispersion for more information).<br />

Extracting the Index and Total Number of Runs<br />

Use the ICARLO and NBCARLO keywords to extract the index of the current run and the total<br />

number of runs:<br />

• ICARLO<br />

Extracts the index of the current Monte Carlo run (first index is 0). See the ICARLO<br />

Usage Example.<br />

• NBCARLO<br />

468<br />

Eldo® User's Manual, 15.3


Extracts the total number of Monte Carlo runs.<br />

Monte Carlo Analysis<br />

Output of Uncertainty Analysis (the .chi File)<br />

Note<br />

These keywords are not functions like those listed in Extract Functions Specific to Monte<br />

Carlo Analysis.<br />

Basic Statistics and Histograms<br />

At the end of Monte Carlo simulations, Eldo prints the following basic statistics in the .chi file:<br />

the range, the mean, the standard deviation, and a basic histogram for each .EXTRACT<br />

command. Eldo also provides bootstrap estimates for the mean and the standard deviation.<br />

For example, the following syntax:<br />

.EXTRACT TRAN LABEL=OPFREQ (1/MAX(EXTRACT(DELAY6), EXTRACT(DELAY7)))<br />

+ LBOUND=280Meg<br />

generates the following output in the .chi file:<br />

Distribution of OPFREQ<br />

Range [ 2.6909E+08 3.7686E+08]<br />

Nominal value: 3.2011E+08<br />

Average value: 3.1768E+08<br />

Standard Deviation: 1.9211E+07<br />

Standard Deviation based on nominal run: 1.9364E+07<br />

Passed : 191 ( 96.46465 %)<br />

[ 250.000MEG 265.000MEG] NB = 0 FREQ = 0.00e+00% |<br />

[ 265.000MEG 280.000MEG] NB = 7 FREQ = 3.54e+00% |*<br />

[ 280.000MEG 295.000MEG] NB = 14 FREQ = 7.07e+00% |***<br />

[ 295.000MEG 310.000MEG] NB = 48 FREQ = 2.42e+01% |************<br />

[ 310.000MEG 325.000MEG] NB = 68 FREQ = 3.43e+01% |*****************<br />

[ 325.000MEG 340.000MEG] NB = 36 FREQ = 1.82e+01% |*********<br />

[ 340.000MEG 355.000MEG] NB = 15 FREQ = 7.58e+00% |***<br />

[ 355.000MEG 370.000MEG] NB = 8 FREQ = 4.04e+00% |**<br />

[ 370.000MEG 385.000MEG] NB = 2 FREQ = 1.01e+00% |<br />

[ 385.000MEG 400.000MEG] NB = 0 FREQ = 0.00e+00% |<br />

In this output provided in the .chi file we can extract the following information:<br />

• The range is the interval given by the largest and smallest values in a data set. Note that<br />

this measure is based only on the minimum and maximum values in the sample. The<br />

spread near the center of the data is not captured at all.<br />

• The nominal and average values.<br />

• The standard deviation (or the square root of the sample variance). Note that the<br />

standard deviation restores the units of the spread to the original data units (the variance<br />

squares the units). Although the variance is intended to be an overall measure of spread,<br />

it can be greatly affected by the tail behavior.<br />

Eldo® User's Manual, 15.3 469


Monte Carlo Analysis<br />

Output of Uncertainty Analysis (the .chi File)<br />

• Standard Deviation based on nominal run is also computed:<br />

• The histogram. You can specify the number of bins for the histogram in the .MC<br />

command using the NBBINS parameter (the default is 10). The histogram is output in<br />

the binary output file and displayed with EZwave.<br />

• Approximation of the Yield. It is defined as the percentage of circuits that satisfy a <strong>user</strong>defined<br />

set of performance specifications. The LBOUND and UBOUND arguments of<br />

the .EXTRACT command are used to control the lower and upper specifications<br />

imposed on the extracted value. In our example this specification is given by a single<br />

lower bound on the frequency: LBOUND=280Meg.<br />

*** MC runs which passed all extract: 191 ( 96.46465 %)<br />

MC run 46 Failed<br />

MC run 53 Failed<br />

MC run 77 Failed<br />

MC run 94 Failed<br />

MC run 144 Failed<br />

MC run 147 Failed<br />

MC run 148 Failed<br />

A Monte Carlo analysis can use this information to divide the acceptability region in the<br />

parameter space into two parts: the “pass” circuits with acceptable performance and the<br />

“fail” circuits with unacceptable performance.<br />

Bootstrap Estimates for Mean and Standard Deviation<br />

The bootstrap is a general method for doing statistical analysis without making strong<br />

parametric assumptions. It was originally designed to estimate bias and standard errors for<br />

statistical estimates. In Eldo, the bootstrap technique is used to estimate the uncertainty of a<br />

statistic such as the mean and the standard deviation.<br />

These computations are given after the histogram. In our example, the following bootstrap<br />

confidence intervals for AVG are obtained:<br />

[------ Average value ------------]<br />

Level LeftLimit Estimate RightLimit<br />

95.0000% 3.1487E+08 3.1766E+08 3.1994E+08<br />

99.0000% 3.1438E+08 3.1766E+08 3.2103E+08<br />

99.9000% 3.1401E+08 3.1766E+08 3.2142E+08<br />

99.9900% 3.1465E+08 3.1766E+08 3.2123E+08<br />

99.9990% 3.1290E+08 3.1766E+08 3.2162E+08<br />

470<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Output of Uncertainty Analysis (the .chi File)<br />

This tabular output estimates the left and right limits θ L and θ U , respectively, in the definition of<br />

the confidence interval:<br />

for some values of the confidence level α.<br />

You can generate a summary of the Monte Carlo bootstrap estimates and sensitivity analysis<br />

results in a specific file, the .aex file, and the file specified in the .EXTRACT command using<br />

the options .OPTION DUMP_MCINFO_CONF (bootstrap estimates) and .OPTION<br />

DUMP_MCINFO_SENS (sensitivity analysis).<br />

Global Sensitivity Analysis<br />

The ASCII output for the sensitivity analysis is provided here. This result is composed of:<br />

• The name of the measure, the number of Monte Carlo runs, and the dimension of the<br />

random vector.<br />

• A list of important factors and their sensitivity index.<br />

See “Global Sensitivity Analysis” on page 520.<br />

This example is extracted from the output file of the “Model-Based Approximations Example”<br />

on page 532.<br />

Estimation of Sensitivity Indices for Output Measure : OPFREQ<br />

Number of metamodel-based Simulations : 10000 (Effective Number of Runs)<br />

List of Important Parameters :<br />

Index(I) Histo S(I) (percent / cumulative) Variable<br />

Value<br />

Name<br />

35 |-------------------- 30.7% 30.7% P(TP)<br />

8 |------- 11.9% 42.7% M(SBSIMN,U1)<br />

6 |--- 6.1% 48.8% M(SBSIMN,MUZ)<br />

11 |- 2.5% 51.2% M(SBSIMN,X3E)<br />

7 |- 2.4% 53.7% M(SBSIMN,U0)<br />

14 |- 1.9% 55.6% M(SBSIMN,MUS)<br />

Summary of Extracted Results<br />

You can generate a summary of the extracted Monte Carlo distribution results in the .aex file,<br />

and the file specified in the .EXTRACT command using the option DUMP_MCINFO.<br />

Tip<br />

See “.OPTION DUMP_MCINFO” and “.EXTRACT” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 471


Monte Carlo Analysis<br />

Output of Uncertainty Analysis (the .chi File)<br />

Related Topics<br />

Graphical Output<br />

MCCONV Extract Function<br />

472<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

The .mcm file is composed as a sequence of sections that give numerical summaries of the<br />

Monte Carlo simulations and statistical tests. The Primary Statistics section provides: the<br />

average value and the standard deviation of each output measure, and an estimation of the<br />

coverage interval (at different level of coverage probability). When the model-based approach<br />

is used a specific section is added for model adequacy checking.<br />

Some sections in the post-analysis files are not printed by default:<br />

• Summary Statistics: Robust measures of location, Alternative measure of location, Min/<br />

Max values, Confidence Intervals.<br />

• Parametric Fit: scale and shape, normal fit, test of normality.<br />

• Capability Indices.<br />

• Correlation between the output responses.<br />

• Sensitivity analysis.<br />

When some the these analyses are disabled, for instance when the correlation analysis is not<br />

performed on the whole set of output responses, it is still possible to request a specific value of<br />

correlation between two chosen responses. For further details see “Control of the Monte Carlo<br />

Post-Analysis” on page 473.<br />

Control of the Monte Carlo Post-Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473<br />

General Information and Status of Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474<br />

Model Adequacy Checking for Model-Based MC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476<br />

Mean and Standard Deviation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478<br />

Confidence Intervals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479<br />

Probability and Quantile Estimators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480<br />

Approximations of the CDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485<br />

Coverage Intervals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487<br />

Approximation of the Density Function (Histogram File .mch) . . . . . . . . . . . . . . . . . . . 489<br />

Control of the Monte Carlo Post-Analysis<br />

Use optional arguments to control the post-analysis. You can enable or disable the generation of<br />

the ASCII output data files and specific subsections of the main primary output (.mcm) file.<br />

• Generation of ASCII output data files (.mcm, .mch, .mci, and .mco):<br />

PRINT_NO_ANALYSIS<br />

PRINT_ASCII_HISTO<br />

Eldo® User's Manual, 15.3 473


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

PRINT_ASCII_IN_SAMPLE<br />

• Generation of subsections of the primary .mcm file:<br />

PRINT_ASCII_OUT_SAMPLE<br />

PRINT_ALL_POST_ANALYSIS<br />

PRINT_CONF<br />

PRINT_MINMAX<br />

PRINT_TEST_AP<br />

PRINT_OUTPUT_CORREL<br />

PRINT_COV<br />

PRINT_ALT_STATS<br />

PRINT_MOMENTS<br />

PRINT_CAPABILITY<br />

General Information and Status of Simulations<br />

The following sections utilize a slight modification of the example monte_carlo_sensitivity.cir.<br />

Some arbitrary lower and upper specifications are added to the output measures.<br />

.EXTRACT AC LABEL=MAX MAX(VDB(OUT)) LBOUND=0.765 UBOUND=0.885<br />

.EXTRACT AC LABEL=BW 'CROSSING(VDB(OUT), -3) / 10E6' UBOUND=2.2<br />

.EXTRACT DC LABEL=IVDD I(VDD) LBOUND=-0.540<br />

.MC 1000 DATAFLOW=1<br />

The first part of the .mcm file contains some general informations such as the dimension of the<br />

problem and the type of algorithm used to run the Monte Carlo simulations.<br />

The most important is a table of counters associated to each output measures. These counters<br />

give the number of undefined values in the Monte Carlo simulations. This information is also<br />

available in the .mco file for each run.<br />

474<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

**********************************************************<br />

*** ***<br />

*** Monte Carlo Analysis ***<br />

*** ***<br />

**********************************************************<br />

...<br />

==> Main File for Monte Carlo Analysis (test31.mcm)<br />

==> Version 1.0<br />

==> Additional Files :<br />

Input Sample test.mci (no)<br />

Output Sample test.mco (no)<br />

Histograms test.mch (no)<br />

==> Optional Sections in Post-Analysis :<br />

Print Coverage Intervals (yes)<br />

Print Confidence Intervals (yes)<br />

Alternative Statistics (no)<br />

Min/Max Values<br />

(no)<br />

Scale and Shape Values (no)<br />

Normality Test<br />

(no)<br />

Capability Indices<br />

(no)<br />

Output Correlation Analysis (no)<br />

Sensitivity Analysis<br />

(no)<br />

==> Dimensions:<br />

Random Variables : 51<br />

Output Measures : 3<br />

==> Parameters:<br />

Design : Standard Monte Carlo (pseudo-random generator)<br />

==> Simulations : 1000 (Number of Runs)<br />

List of Output Measures:<br />

Undef. Filtered %Relative<br />

Simulations Out Std Dev Name<br />

--------------------------------------------------------------------<br />

Meas 1 0 ( 0.00 %) No 4.6215 MAX<br />

Meas 2 0 ( 0.00 %) No 0.9024 BW<br />

Meas 3 0 ( 0.00 %) No 1.4823 IVDD<br />

Here “Undefined” means that for some reason Eldo failed to extract the value from an<br />

individual simulation. It has nothing to do with yield approximation. This latter is given in the<br />

.mco file, see Output Sample.<br />

It is important to note that we automatically remove undefined data from the computations.<br />

The column Filtered Out indicates whether or not the corresponding extract has been removed<br />

from the list of analyzed measures. This typically occurs when the measure is constant or almost<br />

constant. In this case the Relative Standard Deviation would be less than 10 −6 ( = 0.0001%).<br />

Eldo® User's Manual, 15.3 475


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

If the netlist contains swept parameters or .ALTER blocks, Eldo generates multiple .mcm files.<br />

In this case, each .mcm file corresponds to the Monte Carlo analysis that Eldo performed for<br />

particular values of the circuit parameters and a particular configuration of the circuit. Refer to<br />

“Monte Carlo Analysis With a Varying Circuit” on page 419 for more information. The first<br />

part of each .mcm file contains the following section:<br />

Where:<br />

==> Analysis Included in Outer Loop : yes<br />

Index in Loop : 3<br />

Number of Outer Parameters : 1<br />

List of Outer Parameters:<br />

-------------------------<br />

Param 1 PVG : 4.0000000e-01<br />

• Index in Loop identifies the Monte Carlo analysis that the .mcm file corresponds to. For<br />

example, if a circuit parameter is swept through 7 values, Index in Loop will range from<br />

1 to 7 in the .mcm files.<br />

• Number of Outer Parameters is the total number of swept parameters and .ALTER<br />

blocks in the netlist.<br />

• List of Outer Parameters lists the values that any swept parameters were set to before<br />

Eldo performed the Monte Carlo analysis. List of Outer Parameters also indicates which<br />

.ALTER block was in force, if any, with 0 representing the unmodified netlist.<br />

Model Adequacy Checking for Model-Based MC<br />

In practice, no surrogate model will represent its simulator with perfect validity. What is<br />

searched are “good enough” surrogate models to capture the central tendency.<br />

The problem of assessing a modeling method for prediction is classically solved by evaluating<br />

the test-error. The method consists in dividing the dataset into two parts: a training set for<br />

regression R, and a test set T. The regression set is used to fit the models and the test set is used<br />

for assessment of the test-error of the optimal model. It is the prediction error over an<br />

independent test sample T of finite size. This gives the sample approximation:<br />

The regression set R is fixed, and the test error refers to the error for this specified regression<br />

set. Classical estimators associated to the prediction error are the following:<br />

• RMSE — Root Mean Squared Error<br />

476<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

• RRMSE — Relative Root Mean Square Error<br />

• MAE — Maximum Absolute Error<br />

• RMAE — Relative Maximum Absolute Error<br />

• Rsqr — Coefficient of determination<br />

with:<br />

The R 2 coefficient may be understood as a measure of the unexplained variance, since the<br />

second term compares the unexplained variance (Mean Square Error Test) with the total<br />

variance of the test data. The values of these estimators are given in the Modeling Accuracy part<br />

of the .mcm file:<br />

Eldo® User's Manual, 15.3 477


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

******************************<br />

*** Modeling Accuracy ***<br />

******************************<br />

==> Measures of prediction error:<br />

RMSE ... Root Mean Square Error<br />

RRMSE ... Relative Root Mean Square Error<br />

MAE ... Maximum Absolute Error RMAE ... Relative Maximum Absolute Error<br />

Rsqr ... Coefficient of determination<br />

Index<br />

Name<br />

of Meas RMSE RRMSE MAE RMAE Rsqr of Meas<br />

-------------------------------------------------------------------------------------------<br />

1 2.82286e-01 2.95719e-01 7.44927e-01 7.80375e-01 0.910766 DELAY6<br />

2 2.51033e-01 2.63053e-01 5.68490e-01 5.95709e-01 0.929391 DELAY7<br />

3 2.67857e-01 2.78019e-01 6.00334e-01 6.23111e-01 0.921128 OPFREQ<br />

Mean and Standard Deviation<br />

The first table in the .mcm file provides basic summaries.<br />

==> Mean and Standard Deviation:<br />

Mean ... Arithmetic Mean %RSEM ... Relative Standard Error of Mean<br />

Std ... Standard Error StdNom ... Standard Error w.r.t Nominal<br />

Index Nominal Name<br />

of Meas Value Mean %RSEM Std StdNom of Meas<br />

--------------------------------------------------------------------------------<br />

1 8.38073e-01 8.37262e-01 0.304762% 4.02154e-02 4.02236e-02 MAX<br />

2 2.19652e+00 2.19539e+00 6.355605% 2.00982e-02 2.01302e-02 BW<br />

3 -5.44334e-02 -5.44318e-02 2.380805% 7.52874e-04 7.52876e-04 IVDD<br />

What is called Std here is defined as the “corrected for bias” sample standard deviation:<br />

It is actually a biased estimator for the population standard deviation, but less biased than the<br />

uncorrected sample standard deviation.<br />

The bias is of the order n −1 , and decreases as the sample size increases.<br />

What we called CV here is defined as the relative half-range of the confidence interval on the<br />

mean at a 95% level of confidence. The standard definition of the confidence interval is defined<br />

as follows for n:<br />

478<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

where α = 0.05 = 5%. The relative half-range of this interval is therefore given by:<br />

The approximation comes from the fact that we have<br />

. The last term is two times<br />

the coefficient of variation of the mean estimator. The RSEM value gives a relative estimate of<br />

the committed error in the empirical estimator of .<br />

We also give standard deviation based on nominal run StdNom.<br />

Confidence Intervals<br />

Confidence limits for the mean are an interval estimate for the mean. Interval estimates are<br />

often desirable because the estimate of the mean varies from sample to sample. Instead of a<br />

single estimate for the mean, a confidence interval generates a lower and upper limit for the<br />

mean. The interval estimate gives an indication of how much uncertainty there is in our estimate<br />

of the true mean. The narrower the interval, the more precise is our estimate.<br />

Confidence limits are expressed in terms of a confidence coefficient. Although the choice of<br />

confidence coefficient is somewhat arbitrary, in practice 90%, 95%, and 99% intervals are often<br />

used, with 95% being the most commonly used.<br />

Confidence limits are defined as:<br />

where is the sample mean, s is the sample standard deviation, n is the sample size, α is the<br />

desired significance level, and t (α/2, ν−1) is the upper critical value of the t distribution with n -1<br />

degrees of freedom. Note that the confidence coefficient is 1 −α.<br />

From the formula, it is clear that the width of the interval is controlled by two factors:<br />

• As n increases, the interval gets narrower from the term. That is, one way to obtain<br />

more precise estimates for the mean is to increase the sample size.<br />

Eldo® User's Manual, 15.3 479


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

• The larger the sample standard deviation, the larger the confidence interval. This simply<br />

means that with a large standard deviation, are going to generate wider intervals than<br />

data with a smaller standard deviation.<br />

Note<br />

A 95% confidence interval does not mean that there is a 95% probability that the<br />

interval contains the true mean. The interval computed from a given sample either<br />

contains the true mean or it does not. Instead, the level of confidence is associated with<br />

the method of calculating the interval. The confidence coefficient is simply the<br />

proportion of samples of a given size that may be expected to contain the true mean.<br />

That is, for a 95% confidence interval, if many samples are collected and the confidence<br />

interval computed, in the long run about 95% of these intervals would contain the true<br />

mean.<br />

We provide confidence intervals on the mean and the standard deviation. An expression of the<br />

confidence interval for the standard deviation is given in section Stopping Test for STD.<br />

The confidence intervals are given in the following manner. We also give the value of the Mean<br />

and the Standard Deviation (Sigma).<br />

==> Confidence Intervals:<br />

Mean CI ... 95 percent Confidence Interval for the Sample Mean<br />

Sigma CI ... 95 percent Confidence Interval for the Sample Std. Dev.<br />

Index Mean CI Sigma CI Name<br />

of Meas [ Lower, Upper ] [ Lower, Upper ] of Meas<br />

------------------------------------------------------------------------------<br />

1 8.64645e-01 4.88203e-02 MAX<br />

8.29721e-01 8.99569e-01 3.35803e-02 8.91269e-02<br />

2 2.20836e+00 2.34238e-02 BW<br />

2.19161e+00 2.22512e+00 1.61117e-02 4.27628e-02<br />

3 -5.42017e-05 4.93124e-07 IVDD<br />

-5.45544e-05 -5.38489e-05 3.39188e-07 9.00253e-07<br />

Probability and Quantile Estimators<br />

The MCPROB and MCBOUND functions compute probabilities and quantiles (respectively)<br />

associated with circuit performances. The output examples may be obtained using a modified<br />

copy of the netlist $MGC_AMS_HOME/examples/<strong>eldo</strong>/monte_carlo_vco_lc_tank.cir.<br />

Probability Estimator using Standard Monte Carlo<br />

The first MCPROB extract is modified as follows:<br />

.EXTRACT MC LABEL=proba_fosc_left_1_75 MCPROB(fosc, LE, 1.82G)<br />

480<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

The lower bound on the frequency FOSC is raised to increase the probability of simulating “tail<br />

events”. The second probability estimator is kept at its original value. Running Eldo with<br />

SAMPLING=RAND and 5000 runs produces a .mcm file containing the following data:<br />

==> Table of Estimators and Confidence Intervals:<br />

[...]<br />

Tail Boundary/ Lower Pr. Value Upper CV(%) Name<br />

Dist. Sigma Tail / Complementary of Meas<br />

--------------------------------------------------------------------------------<br />

Left 1.82000e+09 2.030e-01 2.144e-01/7.856e-01 2.258e-01 5.31% FOSC<br />

-0.780 NQ = -0.831 -0.791 -0.753<br />

WCI = 2.032e-01 2.146e-01/7.854e-01 2.260e-01 5.30%<br />

Right -1.10000e+02 0.000e+00/1.000e+00 0.00% PHASE_N<br />

19.736 ECI = 0.000e+00 5.991e-04<br />

Note that the results differ for the two MCPROB functions:<br />

• The results of the FOSC extract indicate that the left-tail probability is approximately<br />

2.144×10 −1 , with confidence interval [2.030×10 −1 , 2.258×10 −1 ]. The precision or the<br />

coefficient of variation is 5.3% at a 95% confidence level. This confidence interval is<br />

known in the statistical literature as the Wald interval or the Normal approximation. The<br />

formula is:<br />

The line below the Wald interval contains the following information:<br />

o<br />

The value of q σ , which represents a normalized distance of the <strong>user</strong> specification<br />

y = y l or y u . It is given by the following ratio:<br />

In the case of perfect normality of the output Y, this value is the normal quantile of<br />

the bound y. The value of q σ is -0.780 in the above example. Compare this value<br />

with the NQ values contained in the same line.<br />

o<br />

The NQ values of the corresponding quantiles of the normal N(0, 1). If π y is a<br />

probability given by the normal interval then the associated normal quantile is<br />

y NQ = Φ −1 (π y ), where Φ is the distribution function of normal distribution N(0, 1).<br />

The second NQ value in the above example is -0.791 ≈ Φ −1 (2.144×10 −1 ).<br />

Eldo® User's Manual, 15.3 481


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

The third line contains another confidence interval, known as the Wilson score interval<br />

(WCI). This interval has better properties, even for a small number of runs. The formula<br />

is:<br />

• The results of the phase noise extract indicate that no fail simulation was found, because<br />

the reported failure probability is zero. Only the value of q σ (which represents a<br />

normalized distance of the <strong>user</strong> specification) and the extract confidence interval (ECI)<br />

are reported for this case. The ECI gives an upper bound on the “true” failure<br />

probability. Refer to “Zero Failure Probability and True Failure Probability” on<br />

page 482 for more information.<br />

Zero Failure Probability and True Failure Probability<br />

If a certain event related to a <strong>user</strong> specification does not occur in a sample of size n, the reported<br />

failure probability is zero. The standard Monte Carlo method provides a conservative estimator<br />

of the true failure probability, which might actually be non-zero. However, use of this estimator<br />

will result in “overdesign” of the circuit characteristics by taking large margins.<br />

Given a random variable Y and a threshold y, the probability π y = Pr{Y ≤ y} has estimator:<br />

where:<br />

The expectation and the variance of this empirical estimator are:<br />

Since S n follows a binomial law with parameters n and π y , an exact confidence upper bound<br />

b n, α on π y is available such that Pr(π y ≤ b n, α ) ≥ 1 - α. When S n = 0, which happens with<br />

probability (1 - π y ) n , the (1 - α)-confidence interval is [0, 1 - α 1/n ]. For a 95% confidence level (α<br />

= 0.05), the upper bound is approximately given by:<br />

482<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

The value of this upper bound in the above example is:<br />

Importance Sampling Monte Carlo efficiently handles these cases of low failure probabilities.<br />

Quantile Estimators using Standard Monte Carlo<br />

The first MCBOUND extracts are modified as follows:<br />

.EXTRACT MC LABEL=quantile_fosc_left_1em4 MCBOUND(fosc, 1e-1)<br />

.EXTRACT MC LABEL=quantile_phn_right_1em4 MCBOUND(phase_noise_1meg,1.0 -<br />

1e-1)<br />

The target probabilities in the left tail of the frequency FOSC and the right tail of the phase<br />

noise are shifted to the “normal events” domain. These specifications can be simulated more<br />

easily using the standard Monte Carlo method. Running Eldo with SAMPLING=RAND and<br />

5000 runs produces a .mcm file containing the following data:<br />

Tail Probability Lower Quantile Upper Prec(%) Name<br />

(Goal Value) Value of Meas<br />

--------------------------------------------------------------------------------<br />

Left 1.000e-01 1.80857e+09 1.80963e+09 1.81042e+09 0.10% FOSC<br />

Right 9.000e-01 -1.17933e+02 -1.17911e+02 -1.17887e+02 0.04% PHASE_N<br />

The lower and upper bounds are obtained by inverting the confidence interval:<br />

where π is the target probability, and where h is the half-range of the confidence interval:<br />

A theoretical result ensures that a central limit theorem exists for quantiles.<br />

Probability and Quantiles using Importance Sampling Monte Carlo<br />

Running Eldo with SAMPLING=ISMC and 500 runs for each batch produces a .mcm file<br />

containing the following data:<br />

Eldo® User's Manual, 15.3 483


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

Tail Bndry/ Lower Pr. Value Upper CV(%) #Runs Speedup Name<br />

Dist. Sigma Tail / Comp of Meas<br />

--------------------------------------------------------------------------------<br />

Left 1.75e+09 7.69e-05 8.45e-05/1.0e+00 9.22e-05 9.05 3530 1.6e+03 FOSC<br />

-4.631 NQ=(-3.785 -3.761 -3.739)<br />

Right -1.10e+02 3.53e-06 3.88e-06/1.0e+00 4.23e-06 9.05 5560 2.2e+04<br />

21.303 NQ=( 4.492 4.472 4.453)<br />

PHASE_N<br />

These values may be compared with the results obtained using the standard Monte Carlo<br />

method (refer to “Probability Estimator using Standard Monte Carlo” on page 480).<br />

Using the standard Monte Carlo method, the upped bound for the phase noise response was<br />

5.99×10 −4 . The ISMC method returns 3.88×10 −6 as an estimation of the probability, with 9%<br />

precision. The confidence interval (3.53×10 −6 , 4.23×10 −6 ) for this estimator is given on the<br />

same line. Notice the major gap (almost two orders of magnitude) between the upper bound<br />

based on the binomial law and the value obtained using ISMC. This implies that the probability<br />

of the phase noise exceeding -110dBC/Hz is much less than the conservative estimation<br />

computed using the standard Monte Carlo method.<br />

An estimation of the speedup over the standard Monte Carlo method is given in the .mcm file. In<br />

the case of the phase noise response, approximately 5560 × 2.2 × 10 4 ≈ 120 million standard<br />

Monte Carlo runs would need to be carried out to obtain equivalent results (in terms of value<br />

and precision).<br />

The .mcm file contains the normal quantiles (NQ) corresponding to the probability estimator<br />

and its confidence interval. The normalized distance of the <strong>user</strong> specification to the mean of the<br />

distribution (q σ ) is also given. In the above example, the first response is slightly non Gaussian<br />

(compare NQ = -3.761 with q σ = -4.631), while the phase noise has a very right-skewed<br />

distribution which is clearly non-Gaussian (compare NQ = 4.472 with q σ = 21.303). In this<br />

second case, making the assumption that the output distribution is Gaussian can lead to severe<br />

underestimation of the true risk.<br />

The ISMC method produces an .mcm file containing the following data about quantile<br />

estimators:<br />

Tail Probability Lower Quantile Upper Prec(%) #Runs Speedup Name<br />

(Goal Value) Value of Meas<br />

--------------------------------------------------------------------------------<br />

Left 1.00e-04 1.750e+09 1.751e+09 1.752e+09 0.06% 3010 2.0e+02 FOSC<br />

Right 1.00e+00 -1.124e+02 -1.121e+02 -1.119e+02 0.27% 2510 1.1e+02 PHASE_N<br />

Two columns are added to the standard Monte Carlo results: the number of runs associated with<br />

the estimator and the speedup over the standard Monte Carlo method. The precision is obtained<br />

by inverting the confidence interval on the underlying probability estimator.<br />

484<br />

Eldo® User's Manual, 15.3


Approximations of the CDF<br />

Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

Recall that the Monte Carlo method enables the computation of the full empirical CDF function<br />

of the random output Y=H(X).<br />

We will first explain how the distribution function is built for the standard Monte Carlo<br />

method and secondly for the model-based approach. The second section is devoted to the<br />

presentation of these results and how to use it.<br />

CDF Function and Confidence Bounds<br />

The computation of the empirical CDF uses the simulated sample Y 1 , …, Y n and is given by a<br />

staircase function whose usual definition resembles the Monte Carlo estimator in:<br />

This function approximates the probability<br />

follows:<br />

. Its estimated variance is defined as<br />

This variance in turns enables an approximation of the 100(1−α)% confidence interval bounds<br />

on the empirical CDF thanks to the Central Limit Theorem (provided the number of runs n is<br />

sufficiently large). These two bounds read as follows:<br />

where<br />

is an appropriate percentage point from the normal distribution.<br />

In the case of model-based approach, one proposes to consider estimating<br />

substitution:<br />

by simple<br />

Eldo® User's Manual, 15.3 485


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

This should result in a good estimate if the model m(x) is a good approximation of H(x), but the<br />

main issue lies in quantifying the uncertainty in the estimate. One consider estimates of the<br />

distribution function based on extreme estimates of H(x)<br />

where c(Xi) is a measure of variance at the point Xi coming from a 100(1−α)% prediction<br />

interval for an unknown observation. It is important to note that there is no theoretical<br />

justification for this expression. These “pseudo-bounds” are only related to the quantities that<br />

we are interested in. The previous expression is based on the distribution function for<br />

100(1-α)% pointwise bounds on H(X), when the real interest is in pointwise bounds of the<br />

distribution function of H(X).<br />

How to Interpolate the CDF function<br />

We provide the order statistics in the .mco file and the associated uniformly spaced cumulative<br />

probabilities: (Y (i) , p i ). These values can be useful to work with a piecewise linear<br />

approximation of the cumulative distribution. We describe how you can build a continuous<br />

approximation of the CDF and how the confidence intervals are defined point-wise on this<br />

function.<br />

If Y (1) , Y (2) , …, Y (n) is the sample sorted from smallest value to largest value. The order statistics<br />

Y (i) can be found in the column labelled with “Value(order)” and the cumulative probabilities in<br />

the column “CDF(Cum.Prob)”:<br />

.<br />

. ==> Main sample (runs 1..1000)<br />

.<br />

.<br />

.<br />

. Index Output Measure 1 : MAX<br />

. of Run/ Index<br />

. Order of Meas ... Value(order) CDF(Cum.Prob) +/- T*STD<br />

. -------------------------------------------------------------------------------<br />

1 1 ... 7.1261259e-01 1.0000000e-03 6.1992631e-05<br />

2 1 ... 7.1281508e-01 2.0000000e-03 1.2386115e-04<br />

3 1 ... 7.2847591e-01 3.0000000e-03 1.8560556e-04<br />

4 1 ... 7.3749211e-01 4.0000000e-03 2.4722587e-04<br />

5 1 ... 7.3848200e-01 5.0000000e-03 3.0872206e-04<br />

6 1 ... 7.3881086e-01 6.0000000e-03 3.7009415e-04<br />

7 1 ... 7.3981639e-01 7.0000000e-03 4.3134212e-04<br />

...<br />

To build the function<br />

we define:<br />

486<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

• The uniformly spaced probabilities p i =(i-1/2)/n where i=1, ..., n, the p i are the midpoints<br />

of n contiguous probability intervals of width 1/n.<br />

• The continuous strictly increasing piecewise-linear function joining the n points<br />

(Y (i) ,p ι ):<br />

where:<br />

To avoid undefined denominators one must remove interior points in an interval of<br />

constant output values.<br />

Because is piecewise-linear, so is its inverse, and for a rank i such that , the<br />

expression of inverse CDF is:<br />

Coverage Intervals<br />

A coverage interval for an output measure is an interval containing a known proportion of the<br />

probability content of the distribution of that measure. That is a 100p% coverage interval for a<br />

quantity Y with probability density function f Y is an interval [y low , y high ] for which:<br />

We give in the .mcm file two different coverage intervals computed with the approximation<br />

of the cumulative density function:<br />

• The symmetric coverage interval defined as follows. Let α denote a value between 0 and<br />

1 − p. The bounds of a 100p% coverage interval are obtained by linear inverse<br />

interpolation.<br />

To identify the lower endpoint such that<br />

, we determine the rank r for<br />

which the points and satisfy . Then by<br />

interpolation:<br />

Eldo® User's Manual, 15.3 487


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

The upper endpoint defined as<br />

, is given by the formula:<br />

where the rank s satisfies<br />

. The choice α =(1− p)/2 gives the<br />

coverage interval defined by (1 − p)/2- and (1 − p)/2-quantiles. The symmetry is<br />

defined with respect to the median value of the distribution.<br />

• The shortest coverage interval is obtained from the CDF approximation by computing α<br />

that:<br />

is minimum. There is no analytical formula for the solution. This interval has the<br />

property that, for unimodal distributions, it contains the mode which is the most<br />

probable value of the output. Moreover, it is a more practical information for nonsymmetric<br />

distributions.<br />

==> Coverage Intervals:<br />

Required Coverage Probabilities: p = 0.68, 0.90, 0.95, 0.99<br />

Symmetric Cov. Inter. ... Cov. Int. (1-p)/2- and (1+p)/2-quantiles<br />

Shortest Cov. Inter. ... Shortest Coverage Interval<br />

Index Coverage Symmetric Cov. Inter. Shortest Cov. Inter. Name<br />

of Meas Prob. [ Lower Upper ] [ Lower Upper ] of Meas<br />

-------------------------------------------------------------------------------<br />

1 0.68 7.98633e-01 8.77034e-01 7.99932e-01 8.78198e-01 MAX<br />

0.90 7.70098e-01 9.03279e-01 7.75404e-01 9.06395e-01<br />

0.95 7.58738e-01 9.12106e-01 7.59759e-01 9.12617e-01<br />

0.99 7.38646e-01 9.39293e-01 7.37492e-01 9.34906e-01<br />

2 0.68 2.17662e+00 2.21513e+00 2.17724e+00 2.21546e+00 BW<br />

0.90 2.16188e+00 2.22854e+00 2.16432e+00 2.23077e+00<br />

0.95 2.15420e+00 2.23476e+00 2.15689e+00 2.23655e+00<br />

0.99 2.14510e+00 2.25731e+00 2.14460e+00 2.24787e+00<br />

3 0.68 -5.51864e-02 -5.36483e-02 -5.51178e-02 -5.36134e-02 IVDD<br />

0.90 -5.56705e-02 -5.32053e-02 -5.56753e-02 -5.32140e-02<br />

0.95 -5.59181e-02 -5.29856e-02 -5.59735e-02 -5.30732e-02<br />

0.99 -5.62951e-02 -5.26181e-02 -5.62996e-02 -5.26464e-02<br />

488<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

Approximation of the Density Function (Histogram File<br />

.mch)<br />

The histogram is an effective graphical technique for assessing the variability of a data sample<br />

showing. It can help to analyze both of the components of the variability:<br />

• How spread out are the data values near the center?<br />

• How spread out are the tails?<br />

The histogram is provided in a specific file with the extension .mch.<br />

Histogram for measure : MAX<br />

Size of sample : 1000<br />

Frequency 2 10 75 164 269 264 157 51 6 2<br />

Frequency% 0.2 1.0 7.5 16.4 26.9 26.4 15.7 5.1 0.6 0.2<br />

-----------------------------------------------------------------<br />

Each * equals 9 points<br />

270 *<br />

261 * *<br />

252 * *<br />

243 * *<br />

234 * *<br />

225 * *<br />

216 * *<br />

207 * *<br />

198 * *<br />

189 * *<br />

180 * *<br />

171 * *<br />

162 * * *<br />

153 * * * *<br />

144 * * * *<br />

135 * * * *<br />

126 * * * *<br />

117 * * * *<br />

108 * * * *<br />

99 * * * *<br />

90 * * * *<br />

81 * * * *<br />

72 * * * * *<br />

63 * * * * *<br />

54 * * * * * *<br />

45 * * * * * *<br />

36 * * * * * *<br />

27 * * * * * *<br />

18 * * * * * *<br />

9 * * * * * * * *<br />

-----------------------------------------------------------------<br />

Interval : 0.705 0.765 0.825 0.885 0.945<br />

Mid-points: 0.735 0.795 0.855 0.915 0.975<br />

Eldo® User's Manual, 15.3 489


Monte Carlo Analysis<br />

Primary Statistics of Uncertainty Analysis<br />

In addition to this ASCII plot we provide an automatic rule for the computation of the number<br />

of bins. You can control this rule with the RULEBIN argument of the .MC command. The<br />

number of bins K is controlled with following rules:<br />

• RULEBIN=0. The default rule. The number of bins is <strong>user</strong>-defined and specified with<br />

the NBBINS argument.<br />

• RULEBIN=1. The Sturge’s rule takes where n is the number of<br />

Monte Carlo runs.<br />

• RULEBIN=2. The Scott’s rule takes:<br />

where<br />

is Gaussian.<br />

is the bin width. This rule is “optimal” when the distribution<br />

490<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

Additional Uncertainty Analyses (the .mcm File)<br />

The .mcm file contains additional numerical summaries of the statistical tests.<br />

Basic Concepts on Quantitative Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491<br />

Robust Measures of Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492<br />

Alternative Measures of Dispersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494<br />

Min/Max Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495<br />

Parametric Fit and Normality Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495<br />

Capability Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499<br />

Coorelation of Test Concordance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500<br />

Monte Carlo Sensitivity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501<br />

Basic Concepts on Quantitative Statistics<br />

In statistics, it is very common to use in a complementary way, graphical techniques and<br />

quantitative techniques. For example, if the quantitative methods yield different conclusions<br />

than the graphical analysis, then some effort should be invested to understand why. Often this is<br />

an indication that some of the assumptions of the classical techniques are not satisfied. Many of<br />

the quantitative techniques given in the .mcm file fall into two general categories:<br />

• Interval estimates<br />

• Hypothesis tests<br />

Interval Estimates<br />

A classical task in statistics is to estimate a parameter from a sample of data. The value of the<br />

parameter using all of the possible data, not just the sample data, is called the population<br />

parameter or true value of the parameter. An estimate of the true parameter value is made using<br />

the sample data. This is called a point estimate or a sample estimate.<br />

For example, the most commonly used measure of centrality or location is the mean. The<br />

population mean (or the “true” mean) is the sum of all the members of the given population<br />

divided by the number of members in the population. In our simulation context, random<br />

variables have continuous distributions, it is therefore impossible to simulate every member of<br />

the population. A random sample is drawn from the population with the Monte Carlo method.<br />

The sample mean is calculated by summing the values in the sample and dividing by the number<br />

of values in the sample. This sample mean is then used as the point estimate of the population<br />

mean.<br />

Interval estimates incorporate the uncertainty of the point estimate. In the example for the mean<br />

above, different samples from the same population will generate different values for the sample<br />

mean (for example by varying the seed value in the .MC command setup). An interval estimate<br />

Eldo® User's Manual, 15.3 491


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

quantifies this uncertainty in the sample estimate by computing lower and upper values of an<br />

interval which will contain the population parameter (with a given level of confidence.)<br />

Hypothesis Tests<br />

Hypothesis tests also address the uncertainty of the sample estimate. However, instead of<br />

providing an interval, a hypothesis test attempts to refute a specific claim about a population<br />

parameter based on the sample data.<br />

To reject a hypothesis is to conclude that it is false. However, to accept a hypothesis does not<br />

mean that it is true, only that we do not have evidence to believe otherwise. Thus hypothesis<br />

tests are usually stated in terms of both a condition that is doubted (null hypothesis) and a<br />

condition that is believed (alternative hypothesis).<br />

A common format for a hypothesis test is:<br />

• H0 — A statement of the null hypothesis, for example, a population is normal.<br />

• Ha — A statement of the alternative hypothesis, for example, a population is not<br />

normal.<br />

• Test Statistic — The test statistic is based on the specific hypothesis test.<br />

• Significance Level — The significance level, alpha, defines the sensitivity of the test. A<br />

value of α = 0.05 means that we inadvertently reject the null hypothesis 5% of the time<br />

when it is in fact true. This is also called the type I error. The choice of α is somewhat<br />

arbitrary. In practice values of 0.1, 0.05, and 0.01 are commonly used.<br />

Note<br />

There is an important distinction between statistical significance and practical significance.<br />

Statistical significance simply means that we reject the null hypothesis. The ability of the<br />

test to detect differences that lead to rejection of the null hypothesis depends on the sample size.<br />

For example, for a particularly large sample, the test may reject the null hypothesis that a output<br />

measure is normal. However, in practice the non-normality may be relatively small and has no<br />

real engineering significance. Moreover, if the sample size is small, a difference that is large in<br />

engineering terms may not lead to rejection of the null hypothesis. The designer should not trust<br />

blindly the results of a test, but should combine engineering judgment with statistical analysis<br />

(this is why graphical analysis is important).<br />

Robust Measures of Location<br />

A basic task is to estimate a location or central value that best describes the data. There are<br />

various alternatives to the mean for measuring location. These alternatives were developed to<br />

address non-normal data since the mean is an optimal estimator if the data are normal. The<br />

492<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

mean lacks robustness, that is confidence intervals based on the mean tend to be not precise if<br />

the underlying distribution is in fact not normal.<br />

The subsection “Robust Measures of Location” provides three of the classical robust measures<br />

of location: the median, the mid-mean, and the trimmed-mean.<br />

==> Robust Measures of Location:<br />

Median ... Median Value (50th percentile)<br />

Mid-Mean ... Mean between 25th and 75th percentiles<br />

Trimmed Mean ... Mean with 5% of trimmed points in lower/upper tails<br />

Index Nominal Mid Trimmed Name<br />

of Meas Value Median Mean Mean of Meas<br />

-----------------------------------------------------------------------------<br />

1 8.38073e-01 8.37607e-01 8.37391e-01 8.37282e-01 MAX<br />

2 2.19652e+00 2.19540e+00 2.19524e+00 2.19535e+00 BW<br />

3 -5.44334e-02 -5.44314e-02 -5.44231e-02 -5.44296e-02 IVDD<br />

What Robustness Means<br />

There are two properties that we expect for robust measures of location, where robustness<br />

means independence to the effects of non-normality:<br />

• Robustness of type I: the confidence intervals for the population location have a large<br />

probability of covering the population location regardless of what the underlying<br />

distribution is.<br />

• Robustness of type II: the confidence intervals for the population location tend to be<br />

almost as narrow as the best that could be done if we knew the true shape of the<br />

distribution.<br />

The median is an example of an estimator that tends to have robustness of type I, but not of type<br />

II. The median is the value of the point which has half the data smaller than that point and half<br />

the data larger than that point. That is, if Y (1) , Y (2) , …, Y (n) is a sample sorted from smallest<br />

value to largest value, then the median is defined as:<br />

The alternative measures of location try to balance these two concepts of robustness. That is, the<br />

confidence intervals for the case when the data are normal should be almost as narrow as the<br />

confidence intervals based on the mean. However, they should maintain their validity even if<br />

the underlying data are not normal.<br />

Eldo® User's Manual, 15.3 493


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

Alternative Measures of Location<br />

These alternatives can solve the problem of heavy-tailed distributions:<br />

• Mid-mean: computes a mean using the data between the 25th and 75th percentiles.<br />

• Trimmed mean: similar to the mid-mean except different percentile values are used. A<br />

common choice is to trim 5% of the points in both the lower and upper tails, that is,<br />

calculate the mean for data between the 5th and 95th percentiles.<br />

The first three alternative location estimators defined above have the advantage of the median in<br />

the sense that they are not affected by extremes in the tails. However, they generate estimates<br />

that are closer to the mean for data that are normal (or nearly so).<br />

Alternative Measures of Dispersion<br />

When analyzing the variability of a simulated sample, the designer may face two key questions:<br />

• How spread out are the simulated values near the central value?<br />

• How spread out are the tails?<br />

In the normal case, the variance (and its square-root the standard deviation) fully answers to<br />

these two points. But it is known that it lacks what we defined robustness of type I.<br />

In the subsection “Alternative Measures of Dispersion” of the .mcm file, we provide the range<br />

and the inter-quartile range. These two numerical summaries are different answers to these two<br />

points. The choice of the dispersion estimator is often driven by which of these points you want<br />

to summarize.<br />

==> Alternative Measures of Dispersion:<br />

IQR ... Inter-Quartile Range<br />

Q1, Q3 ... Lower and Upper Quartile<br />

Index Range IQR Name<br />

of Meas [ Min , Max ] [ Q1 , Q3 ] of Meas<br />

-------------------------------------------------------------------------<br />

1 2.72468e-01 5.55356e-02 MAX<br />

7.12613e-01 9.85080e-01 8.09695e-01 8.65231e-01<br />

2 1.31492e-01 2.57794e-02 BW<br />

2.13597e+00 2.26746e+00 2.18230e+00 2.20808e+00<br />

3 4.67989e-03 1.02707e-03 IVDD<br />

-5.68030e-02 -5.21231e-02 -5.49313e-02 -5.39042e-02<br />

We define these summaries as follows:<br />

• The range is the largest value minus the smallest value in a data set. This measure is<br />

based only on the lowest and highest extreme values in the sample. The spread near the<br />

center of the distribution is not captured at all.<br />

494<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

• The inter-quartile range is the value of the 75th percentile minus the value of the 25th<br />

percentile. This measure of dispersion attempts to measure the variability of points near<br />

the center.<br />

The inter-quartile range is an estimates of dispersion that have robustness of type I (but not of<br />

type II).<br />

Note<br />

If the histogram of an output measure indicates that the data are in fact reasonably<br />

approximated by a normal distribution, then it makes sense to use the standard deviation as<br />

the estimate of dispersion. However, if the data are not normal, and in particular if there are long<br />

tails, then using an alternative measure such as inter-quartile range makes sense. Moreover,<br />

comparing the range to the standard deviation gives an indication of the spread of the data in the<br />

tails.<br />

Min/Max Values<br />

Minimum and maximum values in data sample are given for each output measures in the<br />

following table.<br />

==> Min and Max Values:<br />

Min ... Minimum Value Max ... Maximum Value<br />

I-min ... Index of Minimum I-max ... Index of Maximum<br />

Index<br />

Name<br />

of Meas I-min Min I-max Max Range of Meas<br />

--------------------------------------------------------------------------------<br />

1 231 7.12613e-01 367 9.85080e-01 2.72468e-01 MAX<br />

2 551 2.13597e+00 247 2.26746e+00 1.31492e-01 BW<br />

3 109 -5.68030e-02 711 -5.21231e-02 4.67989e-03 IVDD<br />

We also provide the index of the corresponding run. These numbers may be used with the IRUN<br />

argument on the .MC command for extracting more informations of these “extreme”<br />

simulations.<br />

Parametric Fit and Normality Test<br />

The section “Parametric Fit and Normality Test” in the .mcm file is important when the designer<br />

wants to check the normality assumption of the sample data.<br />

Scale and Shape<br />

We provide the sample estimates of the third and fourth standardized moments as an indication<br />

of non-normality.<br />

These two standardized moments of interest are given by:<br />

Eldo® User's Manual, 15.3 495


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

and:<br />

These values measure the skewness and the kurtosis. The skewness for a normal distribution is<br />

zero , and any symmetric data should have a skewness near zero. Negative values for<br />

the skewness indicate data that are skewed left and positive values for the skewness indicate<br />

data that are skewed right. Skewed left means the left tail is long relative to the right tail.<br />

Similarly, skewed right means the right tail is long relative to the left tail. Some measurements<br />

have a lower bound and are skewed right. We plot two examples of skewed distributions in<br />

Figure 11-14.<br />

Figure 11-14. Illustration of Kurtosis and Skewness with μ=0 and σ=1<br />

The kurtosis refers to the curvature of the distribution. The kurtosis for a standard normal<br />

distribution is three. When β 2 > 3 then unimodal distributions tend to have heavier or thicker<br />

496<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

tails than the normal distribution. They also have higher modes in the central area. When β 2 3(n−1)/(n+1)<br />

indicates thick tails in the distribution.<br />

In the .mcm file we provide Fisher G-statistics to remove the bias in b 2 . The quantities are<br />

analogous to<br />

and b 2 , but involve ratios of unbiased cumulant. We give the formulae here:<br />

These values are presented in the following table:<br />

Eldo® User's Manual, 15.3 497


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

==> Scale and Shape:<br />

Mu ... Maximum Likelihood (ML) Estimation to the Mean<br />

Sigma ... ML Estimation to the Standard Deviation<br />

Skewness ... Third Central Moment Divided by the Cube of Sigma<br />

Kurtosis ... Fourth Central Moment Divided by Fourth Power of Sigma<br />

(Sample Skewness and Kurtosis are Corrected for Bias)<br />

Index<br />

Name<br />

of Meas Mu Sigma Skewness Kurtosis of Meas<br />

----------------------------------------------------------------------------<br />

1 8.38289e-01 9.93480e-03 -5.07100e-02 2.90190e+00 MAX<br />

2 2.19635e+00 5.09067e-03 -3.76104e-02 2.90041e+00 BW<br />

3 -5.44169e-02 1.96232e-04 -3.38857e-02 3.17208e+00 IVDD<br />

D’Agostino-Pearson Test of Normality<br />

We provide the test of normality of D’Agostino-Pearson K 2 (K-squared test) based on the<br />

skewness and kurtosis coefficients. When these two numbers are different from the reference<br />

value, one may conclude that the empirical distribution is not compatible with the normal law.<br />

As the number of samples increase this test becomes particularly efficient when n ≥ 20, and is<br />

better than the Kolmogorov-Smirnov test. The idea is relatively simple. One tries to center and<br />

reduce the skewness and kurtosis indicators to obtain two statistics z 1 and z 2 . And one can prove<br />

that the statistics z 1 and z 2 are asymptotically normal. The D’Agostino-Pearson statistic is the<br />

combination:<br />

If the null hypothesis of normality is true, then K 2 is approximately distributed as the χ 2<br />

distribution with two degrees of freedom. Given a significance level α, the hypothesis regarding<br />

the normality is rejected if the test statistic satisfies:<br />

Tip<br />

For an instructive introduction to this test see: R. B. D’Agostino, A. Belanger and R. B.<br />

D’Agostino Jr, A suggestion for Using Powerful and Informative tests of Normality. The<br />

American Statistician, Vol 44, No 4. (1990), pp. 316-321.<br />

The results of this test are organized as classical hypothesis tests, see Hypothesis Tests section<br />

for more information.<br />

498<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

==> D’Agostino-Pearson Hypothesis Test of Normality:<br />

Null Hypothesis H0 : Distribution is Normal<br />

Alternate Hypothesis HA: Distribution is not Normal<br />

Number of Observations : 1000<br />

*** Output Measure : MAX<br />

Test Statistic K2 : 3.62537e-02<br />

P-value : 9.82036e-01<br />

Alpha Level<br />

Conclusion<br />

90.00 % Accept H0<br />

95.00 % Accept H0<br />

99.00 % Accept H0<br />

*** Output Measure : BW<br />

Test Statistic K2 : 5.43884e+00<br />

P-value : 6.59130e-02<br />

Alpha Level<br />

Conclusion<br />

90.00 % Reject H0<br />

95.00 % Accept H0<br />

99.00 % Accept H0<br />

*** Output Measure : IVDD<br />

Test Statistic K2 : 2.37019e+00<br />

P-value : 3.05716e-01<br />

Alpha Level<br />

Conclusion<br />

90.00 % Accept H0<br />

95.00 % Accept H0<br />

99.00 % Accept H0<br />

Capability Indices<br />

Capability indices or process capability ratios are statistical indicators of the ability of a process<br />

to produce output within specification limits.<br />

Under the assumption of normality we provide the probability of being within an interval of<br />

specifications [L, U]:<br />

The function represents the cumulative distribution function of the normal distribution<br />

with parameters (μ, σ).<br />

The capability indices are given in the last columns of the table.<br />

Eldo® User's Manual, 15.3 499


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

==> Warning: The indices are computed under the assumption of normality<br />

P ... Estimated Probability of Being Within Limits<br />

Pl ... Prob. of Being Below L (lower spec)<br />

Pu ... Prob. of Being Above U (upper spec)<br />

Cp ... (UBound-LBound)/(6*Sigma)<br />

Cpl ... (Mu-LBound)/(3*Sigma)<br />

Cpu ... (UBound-Mu)/(3*Sigma)<br />

Cpk ... min(Cpl, Cpu)<br />

Index P Cp Name<br />

of Meas [ Pl , Pu ] [ Cpl, Cpu ] Cpk of Meas<br />

---------------------------------------------------------------------------------<br />

1 8.46218e-01 4.97321e-01 MAX<br />

3.61774e-02 1.17604e-01 5.98960e-01 3.95683e-01 3.95683e-01<br />

2 5.90732e-01 Infinity BW<br />

0.00000e+00 4.09268e-01 -Infinity 7.64764e-02 -Infinity<br />

3 1.00000e+00 Infinity IVDD<br />

0.00000e+00 0.00000e+00 2.14984e+02 Infinity 2.14984e+02<br />

Coorelation of Test Concordance<br />

This feature computes the pairwise-linear correlation coefficient between each pair of output<br />

measures. The sample correlation coefficient between two random variables (U, V) is given by<br />

the formula:<br />

There are some practical conventions used for computation:<br />

• By default, when one of two random variables has no variation, Eldo set the correlation<br />

coefficient to zero (0/0=0).<br />

• When the value U i or V i is undefined, because the corresponding extract function cannot<br />

be measured at the i-th run of the Monte Carlo simulation, then this data is removed<br />

from the computation. When all the pairwise data are removed, Eldo will return the<br />

value UNDEF.<br />

We also computes the p-value for testing the hypothesis of no correlation against the alternative<br />

that there is a non-zero correlation. If P-Val is small, say less than 5%, then the correlation r U, V<br />

is significantly different from zero.<br />

500<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

Number of Computed Correlations : 3<br />

Number of Simulations : 1000<br />

Size of Sample for Test : 200<br />

==> Test of no correlation:<br />

Null Hypothesis H0: no correlation between measures I and J<br />

Alternate Hypothesis HA: there is a non-zero correlation<br />

==> Type of Correlation: Pearson (linear correlation)<br />

Coef ... Correlation with -1


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

Method : Functional ANOVA (global sensitivity indices)<br />

Number of Simulations : 1000 (Number of Runs)<br />

Number of Random Variables : 51<br />

==> List of Random Variables:<br />

Avg.Sens ... Arithmetic Mean of the Sensitivities<br />

Index<br />

of Var Distrib Mean Std. Dev. Name<br />

---------- ... -----------------------------------------------------------<br />

1 Gaussian 1.90000e-08 2.92115e-11 EM(XM16.M1,TOX)<br />

2 Gaussian -3.73283e-01 -1.01878e-03 EM(XM16.M1,VTH0)<br />

3 Gaussian 1.38761e+02 8.35592e-01 EM(XM16.M1,U0)<br />

...<br />

50 Gaussian 3.32200e-01 7.29079e-04 EM(XM10.M1,VTH0)<br />

51 Gaussian 3.88320e+02 1.58357e+00 EM(XM10.M1,U0)<br />

The left part summarizes the average sensitivities for each output measure. The column<br />

Avg.Sens. is an indicator of importance. This number is not necessarily the most representative<br />

value of sensitivity since all measures are considered identically.<br />

==> List of Random Variables:<br />

Avg.Sens ... Arithmetic Mean of the Sensitivities<br />

Index<br />

of Var Meas 1 Meas 2 Meas 3 Avg.Sens ... Name<br />

------------------------------------------------------------<br />

1 0.31% 0.55% 0.86% 0.57% ... EM(XM16.M1,TOX)<br />

2 0.48% 6.32% 11.01% 5.94% ... EM(XM16.M1,VTH0)<br />

3 0.64% 6.66% 11.29% 6.20% ... EM(XM16.M1,U0)<br />

4 0.93% 2.94% 2.38% 2.08% ... EM(XM17.M1,TOX)<br />

...<br />

Ordered Sensitivity Indices<br />

This result is organized as a Pareto chart and it is composed as follows:<br />

• The name of the measure, the effective number of Monte Carlo runs used for the<br />

calculations.<br />

• A list of important factors and their sensitivity index.<br />

See “Global Sensitivity Analysis” on page 520 for more details on the methodology.<br />

502<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Additional Uncertainty Analyses (the .mcm File)<br />

Estimation of Sensitivity Indices for Output Measure : MAX<br />

Number of Simulations : 1000 (Effective Number of Runs)<br />

List of Important Parameters :<br />

Index(I) Histo S(I) (percent / cumulative) Variable<br />

Value<br />

Name<br />

11 |-------------------- 16.1% 16.1% EM(XM13.M1,VTH0)<br />

17 |------------ 10.1% 26.3% EM(XM12.M1,VTH0)<br />

18 |------------ 10.1% 36.4% EM(XM12.M1,U0)<br />

35 |----------- 9.4% 45.8% EM(XM9.M1,VTH0)<br />

12 |----------- 9.0% 54.7% EM(XM13.M1,U0)<br />

48 |------- 6.1% 60.8% EM(XM8.M1,U0)<br />

45 |------ 5.5% 66.4% EM(XM7.M1,U0)<br />

30 |------ 4.9% 71.2% EM(XM1.M1,U0)<br />

27 |----- 4.8% 76.0% EM(XM11.M1,U0)<br />

36 |----- 4.6% 80.6% EM(XM9.M1,U0)<br />

33 |---- 3.9% 84.5% EM(XM2.M1,U0)<br />

28 |---- 3.3% 87.9% EM(XM1.M1,TOX)<br />

51 |--- 2.9% 90.7% EM(XM10.M1,U0)<br />

47 |--- 2.8% 93.6% EM(XM8.M1,VTH0)<br />

10 |--- 2.7% 96.3% EM(XM13.M1,TOX)<br />

26 |-- 2.1% 98.4% EM(XM11.M1,VTH0)<br />

Eldo® User's Manual, 15.3 503


Monte Carlo Analysis<br />

Input/Output Samples<br />

Input/Output Samples<br />

Two files are provided for use in “Data Mining” applications, which exploit the input and<br />

output data set generated during the Monte Carlo analysis. The file with extension .mci contains<br />

the sample from the input space, and the file .mco contains the output results.<br />

Depending on the size of the problem, these files may be quite large in size. To disable the<br />

generation of the .mci and .mco files specify PRINT_ASCII_IN_SAMPLE=0 and<br />

PRINT_ASCII_OUT_SAMPLE=0 on the .MC command.<br />

File Organization (the .mci and .mco Files)<br />

The .mci and .mco files are organized in a similar fashion. The data sets are available in a raw<br />

form and separated from a formatted table containing respectively some informations on the<br />

input variables and simulated results. This additional information is printed in the file with a dot<br />

‘.’ character in the first place. These lines can therefore be skipped during data extraction.<br />

Input Sample<br />

The .mci starts with basic informations about the size of the problem and the algorithm used to<br />

draw the random input variables.<br />

504<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Input/Output Samples<br />

.<br />

. **********************************************************<br />

. *** ***<br />

. *** Monte Carlo Analysis ***<br />

. *** ***<br />

. **********************************************************<br />

.<br />

.<br />

. ...<br />

.<br />

. ==> Input Sample File (test.mci)<br />

.<br />

. ==> Dimensions:<br />

. Simulations : 1000<br />

. Random Variables : 51<br />

. Output Measures : 3<br />

.<br />

. ==> Parameters:<br />

. Design : standard Monte Carlo (pseudo-random generator)<br />

.<br />

.<br />

. ==> List of Random Variables:<br />

. Index Mean Std. Index Name<br />

. of Var Distrib Value Deviation of Ref Var / Ref<br />

. ------------------------------------------------------------------------------<br />

. 1 Gaussian 1.90000e-08 2.92115e-11 0 EM(XM16.M1,TOX)<br />

. 2 Gaussian -3.73283e-01 -1.01878e-03 0 EM(XM16.M1,VTH0)<br />

. 3 Gaussian 1.38761e+02 8.35592e-01 0 EM(XM16.M1,U0)<br />

. 4 Gaussian 1.90000e-08 7.13135e-11 0 EM(XM17.M1,TOX)<br />

...<br />

. 49 Gaussian 1.90000e-08 4.91192e-11 0 EM(XM10.M1,TOX)<br />

. 50 Gaussian 3.32200e-01 7.29079e-04 0 EM(XM10.M1,VTH0)<br />

. 51 Gaussian 3.88320e+02 1.58357e+00 0 EM(XM10.M1,U0)<br />

.<br />

A list of random variables is also printed and contains the following informations:<br />

• The type of the distribution and the parameters of this distribution are provided for each<br />

X i , the i-th input variable (mean value, standard deviation, half-range, ...).<br />

• The column “Index of Ref” contains integer values that refer to the “Index of Var”<br />

column. A positive integer k > 0 in this column, indicates that this variable is associated<br />

to local variations of a device and that the effective value is composed by summing the<br />

value of the k-th variable with global variations and the value of the i-th variable with<br />

independent and local variations.<br />

A zero value k = 0 in this column indicates the i-th variable has no local variations.<br />

For instance, with the example given in section Local and Global Variations, there is one<br />

global threshold voltage V th, glob that affects all transistors equally and 100 local<br />

Eldo® User's Manual, 15.3 505


Monte Carlo Analysis<br />

Input/Output Samples<br />

threshold voltages V th, loc for i= 1, ..., 100 that affect each transistor individually and<br />

independently from others. The effective threshold voltage for the i-th device is the sum:<br />

This configuration is represented in Figure 11-15.<br />

Figure 11-15. Global/Local Hierarchy<br />

The second part of the .mci file contains the data set. It is organized as a sequence of tables: one<br />

table for each variable. In table associated to a variable we give the index of the Monte Carlo<br />

run, the index of this variable, the status of the simulation and the value of the variable.<br />

.<br />

. ==> Main sample (runs 1..1000)<br />

.<br />

.<br />

. Random Variable 1 : EM(XM16.M1,TOX)<br />

.<br />

. Index Index Sim<br />

. of Run of Var Status Value(indep) Value(effect)<br />

. -----------------------------------------------------------------<br />

1 1 1 1.8949413e-08 1.8949413e-08<br />

2 1 1 1.8969849e-08 1.8969849e-08<br />

3 1 1 1.9051539e-08 1.9051539e-08<br />

4 1 1 1.9009045e-08 1.9009045e-08<br />

5 1 1 1.8968941e-08 1.8968941e-08<br />

6 1 1 1.8973925e-08 1.8973925e-08<br />

7 1 1 1.8990268e-08 1.8990268e-08<br />

The column “Sim Status” indicates that for the corresponding MC run, one or more output<br />

measures cannot be extracted (Undefined value).<br />

506<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Input/Output Samples<br />

The column labelled “Value(indep)” represents the independent variations associated to a<br />

random variables. In the previous example it is the random variable V i th, loc . The effective value<br />

V i th is given in the column “Value(effect)”. When the variable is not associated to local<br />

variations, the values in the columns are the same (there is no correlation).<br />

If the netlist contains swept parameters or .ALTER blocks, Eldo generates multiple .mci files. In<br />

this case, the table for each random variable contains an additional column, Index in Loop,<br />

which identifies the Monte Carlo analysis that the .mci file corresponds to. Refer to “Monte<br />

Carlo Analysis With a Varying Circuit” on page 419 for more information.<br />

Output Sample<br />

The list of output measures is printed in the first part of the file. Users will also find a short<br />

summary of the Monte Carlo simulations. We give the nominal value, the average value and the<br />

empirical estimation of the Yield. This estimation is given in the column “Pass (percent)”. The<br />

column “Number of Undef” counts the number of runs with Undefined value.<br />

. ==> List of Output Measures:<br />

.<br />

.<br />

. Index Number Nominal Lower Mean Upper Pass Name<br />

.of Meas of Undef Value Bound Value Bound (percent) of Meas<br />

. -------------------------------------------------------------------------------<br />

. 1 0 8.380e-01 7.650e-01 8.372e-01 8.850e-01 84.70 % MAX<br />

. 2 0 2.196e+00 -Infinity 2.195e+00 2.200e+00 60.30 % BW<br />

. 3 0 -5.443e-02 -5.400e-01 -5.443e-02 Infinity 100.00 % IVDD<br />

.<br />

The second part is a sequence of tables containing the detail results of the Monte Carlo runs.<br />

Each table has n rows where n is the number of MC runs. The first column gives the run index<br />

which corresponds to the column “Value”, and the order of the run that corresponds to the order<br />

statistics. In other words, the column “Value” gives the sequence Y 1 , Y 2 , ..., Y n , and the column<br />

“Value (order)” gives the sequence Y [1] , Y [2] , ..., Y [n] of order statistics.<br />

.<br />

. ==> Main sample (runs 1..1000)<br />

.<br />

.<br />

.<br />

. Index Output Measure 1 : MAX<br />

. of Run/ Index<br />

. Order of Meas Value P/F Value(order) CDF(Cum.Prob) +/- T*STD<br />

. ------------------------------------------------------------------------------<br />

1 1 8.7112e-01 1 7.1261e-01 1.0000e-03 6.1992e-05<br />

2 1 8.9774e-01 0 7.1281e-01 2.0000e-03 1.2385e-04<br />

3 1 7.8203e-01 1 7.2847e-01 3.0000e-03 1.8560e-04<br />

4 1 8.1764e-01 1 7.3749e-01 4.0000e-03 2.4722e-04<br />

5 1 8.6639e-01 1 7.3848e-01 5.0000e-03 3.0872e-04<br />

6 1 7.8002e-01 1 7.3881e-01 6.0000e-03 3.7009e-04<br />

...<br />

Eldo® User's Manual, 15.3 507


Monte Carlo Analysis<br />

Input/Output Samples<br />

The column “P/F” corresponds to Pass/Fail condition. If it is 1 the value satisfies the optional<br />

specifications LBOUND/UBOUND, otherwise it is 0.<br />

Finally, the three last columns return an approximation of the CDF and the half-range of 1-<br />

sigma confidence interval for the CDF.<br />

If the netlist contains swept parameters or .ALTER blocks, Eldo generates multiple .mco files.<br />

In this case, the table for each output measure contains an additional column, Index in Loop,<br />

which identifies the Monte Carlo analysis that the .mco file corresponds to. Refer to “Monte<br />

Carlo Analysis With a Varying Circuit” on page 419 for more information.<br />

508<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Graphical Output<br />

Graphical Output<br />

During the post-analysis and, Eldo provides, through EZwave, some basic tools for statistical<br />

analysis and/or exploratory data analysis.<br />

• Statistical Analysis Plots<br />

o<br />

The histogram. The purpose of this plot is to graphically summarize the distribution<br />

of a response variable. It shows the following: the typical value, the spread of the<br />

data, the skewness of the data, and the presence of multiple modes in the data.<br />

In Eldo, the most common form of the histogram is used. It is obtained by splitting<br />

the range of the data into equal-sized bins. Then for each bin, the number of points<br />

from the data set falling into that bin are counted.<br />

A Kernel Density Estimation of the PDF can be added to the histogram plot. It can<br />

be thought of as a “smooth” histogram that may help to extrapolate the data to the<br />

whole range of values.<br />

A Gaussian PDF can also be added to the Histogram Plot.<br />

o<br />

The empirical CDF. The empirical distribution function is a step function defined<br />

by:<br />

This value is therefore a probability estimator, and confidence bounds are provided.<br />

• Exploratory Data Plots<br />

o<br />

o<br />

o<br />

The Response-sequence plot summarizes a univariate data set. It provides a plot of<br />

an output response with respect to the index of the Monte Carlo run.<br />

The AVG-sequence plot shows the evolution of the mean value estimator versus the<br />

index of the Monte Carlo run. This plot is available by adding the argument<br />

MONITOR to the .MC statement.<br />

The STD-sequence plot shows the evolution of the standard deviation estimator<br />

versus the index of the Monte Carlo run. This plot is available by adding the<br />

argument MONITOR to the .MC statement.<br />

In this section:<br />

Histogram Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510<br />

Cumulative Distribution Function (CDF) Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . 511<br />

Eldo® User's Manual, 15.3 509


Monte Carlo Analysis<br />

Graphical Output<br />

Histogram Annotations<br />

Specify the .HISTOGRAM command to control the measurement annotations displayed by<br />

EZwave.<br />

• SPEC_BOUNDS: controls the plot of lower bound (LBOUND) and upper bound<br />

(UBOUND) cursors and the corresponding yield value. These specification values are<br />

not necessarily entered by <strong>user</strong>s for each extract. It is also possible that only one value is<br />

given. In this case, the other bound must be considered as +/-infinity.<br />

• GAUSS_PDF: controls the plot of the Gaussian PDF that best approximates the data.<br />

This waveform is named Gaussian PDF.<br />

• GAUSS_FIT: controls the plot of 1-sigma, 2-sigma and 3-sigma cursors and their<br />

associated yield values. All three cursors are plotted.<br />

• STAT_LEGEND: controls the presence of the statistical measures legend displayed on<br />

the histogram, which contains for example:<br />

o<br />

o<br />

o<br />

o<br />

o<br />

Size Sample (Samples). The number of MC runs. The nominal run is never used in<br />

computations.<br />

Empirical Mean (Mean)<br />

Standard Deviation (Std. Dev.)<br />

Coefficient of Variation (Coef. of Var.). Note that we actually provide the Relative<br />

Standard Deviation.<br />

Min/Max values (Min/Max)<br />

When the .HISTOGRAM statement is not specified within the netlist, the default annotations<br />

are controlled by EZwave.<br />

Figure 11-16 shows a histogram plotted with the following annotations: Kernel PDF curve,<br />

Coverage intervals (yield percentage) at 1σ, 2σ, 3σ specifications, based on empirical CDF.<br />

510<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Graphical Output<br />

Figure 11-16. Histogram Annotations 1<br />

See Also<br />

• .HISTOGRAM command in the Eldo Reference Manual<br />

• Plotting Histograms in the EZwave User’s and Reference Manual<br />

Related Topics<br />

Graphical Output<br />

Cumulative Distribution Function (CDF) Annotations<br />

Cumulative Distribution Function (CDF) Annotations<br />

Specify the .CDF command to control the measurement annotations displayed by EZwave.<br />

• CONF_BOUNDS: controls the plot of Lower and Upper Confidence Bounds (LCB and<br />

UCB).<br />

• LEFT_TAIL and RIGHT_TAIL: controls the plot of the left- and right-tail parts of the<br />

Empirical CDF.<br />

• GAUSS_FIT: controls the plot of the Gaussian CDF that best fits the empirical data.<br />

• INTERPOLATE: controls how the CDF curve is plotted. The usual method is to use the<br />

staircase representation that strictly follows the mathematical notion of this function.<br />

Eldo® User's Manual, 15.3 511


Monte Carlo Analysis<br />

Graphical Output<br />

Note<br />

The CDF plot in EZwave also plots the empirical CDF without interpolation, as a<br />

staircase function. The interpolated representation is accessible by setting the<br />

Interpolate option in the dialog box.<br />

• STAT_LEGEND: controls the presence of the Statistical Summary legend displayed on<br />

the CDF plot, which contains for example:<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

size sample<br />

empirical mean<br />

standard deviation<br />

coefficient of variation (percentage)<br />

min/max values<br />

number of UNDEF values<br />

When the .CDF statement is not specified within the netlist, the default annotations are<br />

controlled by EZwave.<br />

Figure 11-17 shows a CDF plotted with confidence bounds on the central tendency plot of the<br />

CDF. The Lower Confidence Bounds (LCB) curve in blue and the Upper Confidence Bounds<br />

(UCB) in yellow are computed with the formulae given in “CDF Function and Confidence<br />

Bounds” on page 485.<br />

Figure 11-17. CDF Plot (with Confidence Bounds)<br />

512<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Graphical Output<br />

Figure 11-18 shows a CDF plot dedicated to the analysis of the “tail-behavior.” The right-tail<br />

matches the values greater than the empirical mean to the cumulative probabilities. This is<br />

similar to the left-tail plot but instead we use the complementary function:<br />

They are represented with a semi-log plot (the y-axis is log-scaled) to ensure that lower<br />

probabilities are clearly visible. For example, the cursor indicates a quantile value of y=54.0<br />

and gives the empirical estimation of Pr(Y≥y) jointly with the 95% confidence bounds.<br />

Figure 11-18. CDF Plot Right-Tail Part of the Empirical CDF<br />

See Also<br />

• .CDF command in the Eldo Reference Manual<br />

• Plotting CDFs in the EZwave User’s and Reference Manual<br />

Related Topics<br />

Graphical Output<br />

Histogram Annotations<br />

Eldo® User's Manual, 15.3 513


Monte Carlo Analysis<br />

Run-Length Control<br />

Run-Length Control<br />

You can use the MCCONV extract function to control the run-length in the context of<br />

sequential Monte Carlo algorithms for estimating E(Y). In contrast to fixed run-length<br />

approaches, samples are generated until some error criterion is satisfied.<br />

Two algorithms CONFIDENCE Technique and SETTLING Technique are provided to control<br />

the convergence. You can monitor the evolution of the various moments to precisely quantify<br />

the notion of convergence. The moments are: AVG and STD for the CONFIDENCE method<br />

and AVG, STD, KURT and SKEW for the SETTLING method to precisely quantify the notion<br />

of convergence. You can stop the Monte Carlo process early by using .MC AUTOSTOP if these<br />

quantities do not vary more than a <strong>user</strong>-specified limit. This can save CPU time.<br />

The simulation framework used to estimate μ = E[Y]:<br />

• First simulate θ 1 , θ 2 , ..., θ n and set:<br />

• The strong Law of Large Numbers says as .<br />

At this point it is not known how large n should be to obtain a confidence in μ n as an estimator<br />

of μ. In other words, for a fixed value of n, what can be said about the quality of μ n ? There are<br />

two methods to answer this: CONFIDENCE Technique and SETTLING Technique.<br />

Note<br />

Using the Monte Carlo analysis convergence test may interfere with the sensitivity analysis,<br />

and the combination of these features should be avoided as much as possible. The global<br />

sensitivity analysis in the Monte Carlo analysis needs a minimum number of simulations to<br />

provide good results (for example, ~1000 simulations). Users must be careful when interpreting<br />

global sensitivity analysis when the number of simulations is small.<br />

CONFIDENCE Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514<br />

SETTLING Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517<br />

MCCONV Extract Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518<br />

CONFIDENCE Technique<br />

Convergence test based on confidence interval techniques.<br />

514<br />

Eldo® User's Manual, 15.3


Stopping Test for AVG<br />

Monte Carlo Analysis<br />

CONFIDENCE Technique<br />

Suppose it is required to estimate μ with a random sequence θ 1 , θ 2 , ..., θ n whose distribution<br />

depends on μ. Then L(Y) and U(Y) are searched for such that:<br />

where 0 ≤ α ≤ 1 is a pre-specified number. We then say that [L(θ), U(θ)] is a 100(1 − α)%<br />

confidence interval for μ.<br />

There are two types of error to consider:<br />

• The absolute error, given by:<br />

• The relative error, given by:<br />

It is known that as so that the errors both tend to 0. If μ = 0 then the relative<br />

error E r is not defined. The following error criterion is specified:<br />

Error Criterion: Given 0 ≤ α ≤ 1 and ε > 0, the condition required is:<br />

E is the error type specified (relative or absolute).<br />

To satisfy the condition<br />

, then samples continue to be generated until:<br />

where z 1 −α/2 is the (1 −α/2) percentile point of the N(0, 1) distribution and σ p is the estimate of<br />

σ based upon the first p samples. It is important that p be sufficiently large, so that μ n and σ n are<br />

sufficiently good estimates of μ and σ respectively. As a result, it is typically insisted that p = 20<br />

before stopping. The parameter p may be redefined by setting the NRUN_PILOT within the<br />

MCCONV function.<br />

Eldo® User's Manual, 15.3 515


Monte Carlo Analysis<br />

CONFIDENCE Technique<br />

To control the relative error and have<br />

, then samples are simulated until:<br />

This statistical test is implemented as follows:<br />

where ε ABS and ε REL are respectively the absolute tolerance and the relative tolerances for<br />

convergence, with default values ε ABS = 10 −2 and ε REL = 10 −2 . By default the confidence level<br />

is chosen such that a 95% confidence interval is computed for μ, and you can adjust this<br />

parameter.<br />

Stopping Test for STD<br />

A similar criterion exists for the standard deviation. It is possible to give a confidence interval<br />

for the variance under some assumptions. With a random sequence θ 1 , θ 2 , ..., θ n which follows a<br />

normal distribution N(μ, σ 2 ) where the mean value μ is unknown, we can prove that:<br />

With a confidence interval:<br />

with confidence level 1 − α. The numbers a and b are automatically computed and satisfy the<br />

relation where . This statistical test is implemented as<br />

follows:<br />

The value σ p is obtained after p pilot simulations.<br />

516<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

SETTLING Technique<br />

Related Topics<br />

MCCONV Extract Function<br />

SETTLING Technique<br />

The SETTLING method controls the absolute and relative errors with a simple moving average<br />

of the estimator μ. In other words, the unweighted mean of the previous w data points is<br />

computed:<br />

and we test for all<br />

the inequality:<br />

where ε ABS and ε REL are respectively the absolute tolerance and the relative tolerances for<br />

convergence, with default values ε ABS = 10 −2 and ε REL = 10 −2 .<br />

Figure 11-19. Principle of the SETTLING Procedure<br />

The parameter w is the size of the ‘window’ used within the test.<br />

Related Topics<br />

MCCONV Extract Function<br />

Eldo® User's Manual, 15.3 517


Monte Carlo Analysis<br />

MCCONV Extract Function<br />

MCCONV Extract Function<br />

The test of convergence is associated to a specific ‘pseudo-extract’ in Eldo’s language for<br />

extraction. The MCCONV extract returns 0 or 1 to indicate convergence of the Monte Carlo<br />

process for the specified quantity. This extract function, used in conjunction with .MC<br />

AUTOSTOP, controls the run-length of the Monte Carlo process, and can save CPU time.<br />

Syntax<br />

.EXTRACT MCCONV(meas_name, AVG|STD|KURT|SKEW,<br />

+ SETTLING[,WINDOW[,ABSTOL[,RELTOL]]])<br />

.EXTRACT MCCONV(meas_name, AVG|STD,<br />

+ CONFIDENCE[,NRUN_PILOT[,CONFIDENCE_LEVEL[,ABSTOL[,RELTOL]]]])<br />

Parameters<br />

• SETTLING<br />

The Monte Carlo process is stopped if adding new samples no longer changes the output by<br />

more than a certain threshold. When the SETTLING algorithm is specified, the default<br />

values are WINDOW=20, ABSTOL=0.01, and RELTOL=0.01. In the description of the<br />

SETTLING Technique algorithm, the WINDOW argument is referred to as parameter w,<br />

and the arguments ABSTOL and RELTOL are referred to as ε ABS and ε REL .<br />

• CONFIDENCE<br />

The Monte Carlo analysis is stopped when the confidence interval is small. This algorithm<br />

is defined for AVG and STD; not for SKEW, or KURT. When the CONFIDENCE<br />

algorithm is specified, the default values are NRUN_PILOT=20,<br />

CONFIDENCE_LEVEL=0.95, ABSTOL=0.01, and RELTOL=0.01. In the description of<br />

the CONFIDENCE Technique algorithm, the NRUN_PILOT argument is referred to as<br />

parameter p, and the arguments ABSTOL and RELTOL are referred to as ε ABS and ε REL .<br />

The CONFIDENCE_LEVEL argument is the value 1 − α within the error criterion, it must<br />

satisfy the bounds 0 < 1 − α < 1. For example, a 99% confidence interval will correspond to<br />

CONFIDENCE_LEVEL=0.99. If a value is specified out of the bounds it will default to<br />

0.95 (or 95%).<br />

Note<br />

The arguments WINDOW and NRUN_PILOT have a different meaning. The<br />

window size represents the number of times the convergence test has to be satisfied<br />

before stopping the Monte Carlo procedure. On the other hand, the number of pilot runs<br />

represents the minimum number of runs that Eldo must perform before controlling the<br />

run-length. This number must be considered as the minimal number of runs to perform<br />

to obtain a first approximation of the AVG or STD estimator.<br />

518<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

MCCONV Extract Function<br />

Examples<br />

• In this example, the second extract returns a boolean value (1 or 0). It returns 1 when the<br />

standard deviation of quantity GAIN_DB has converged to within ± (0.01 + 0.05 ),<br />

where<br />

is the average value of the STD taken from the last w=20 Monte Carlo runs.<br />

.EXTRACT AC LABEL=GAIN_DB YVAL(VDB(OUT), 1MEG)<br />

.EXTRACT MC LABEL=STDDEV_GAIN_DB_CONV<br />

+ MCCONV(GAIN_DB, STD,SETTLING, 20, 0.01, 0.05)<br />

• Similarly, a test on the standard deviation can be specified with the confidence<br />

techniques:<br />

.EXTRACT MC LABEL=STDDEV_GAIN_DB_CONV<br />

+ MCCONV(GAIN_DB, STD, CONFIDENCE, 40, 0.95, 0.00, 0.01)<br />

• In the next example, the first three .EXTRACT statements are taken into account, and all<br />

three of them must have converged before the MCCONV() function returns 1.<br />

.EXTRACT AC LABEL=GAIN_DB YVAL(VDB(OUT), 1MEG)<br />

.EXTRACT AC LABEL=PHASE_DB YVAL(VP(OUT), 1MEG)<br />

.EXTRACT DC LABEL=CC I(VDD)<br />

.EXTRACT MC LABEL=STD_CONV MCCONV(ALL, STD, SETTLING, 20, 0.01,0.05)<br />

Tolerance tuning is inefficient in this situation; instead, use the default values as much<br />

as possible, for instance, the following syntax should give a first estimate of the<br />

uncertainty:<br />

.EXTRACT MC LABEL=MC_AVG_CONV MCCONV(ALL, AVG, CONFIDENCE)<br />

Then, use the SAVE/RESTART feature to obtain more accurate estimates.<br />

Related Topics<br />

CONFIDENCE Technique<br />

SETTLING Technique<br />

Post-Analysis of Monte Carlo Simulations<br />

Monte Carlo Analysis Examples<br />

Eldo® User's Manual, 15.3 519


Monte Carlo Analysis<br />

Sensitivity Analysis<br />

Sensitivity Analysis<br />

There are two different methods that can post-process the Monte Carlo simulations for<br />

computing the sensitivities. The first method, the Global Approach, is a variance-based method<br />

that does not rely on model assumptions. The second method, Large Scale Variable Screening,<br />

specifically builds a regression function which attempts to capture the main variations of the<br />

response variables of interest.<br />

As a rule of thumb, the global approach should be used when the context enables a large number<br />

of Monte Carlo simulations, say a few thousand. This sensitivity analysis is independent of the<br />

problem dimension (the number of circuit parameters with statistical variations). On the other<br />

hand, when you can afford only a few tens of simulations and the number of variables is much<br />

larger, the approach must be based on the assumption that the problem dimension (or the<br />

effective dimension) is very small, say ten variables are really important. This assumption is<br />

important for efficiency and the interpretability of the approach.<br />

Global Sensitivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520<br />

Large Scale Variable Screening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523<br />

Global Sensitivity Analysis<br />

Use global sensitivity analysis to identify the parameters in the circuit that, left free to vary over<br />

their range of uncertainty, make no significant contribution to the variability of the output. The<br />

identified factors can then be fixed at any given value without affecting the output variance.<br />

A variance-based method is used with the capacity to capture the influence of the full range of<br />

variation of each input factor. The method is based on the decomposition of the response:<br />

into a set of functions of increasing dimensionality:<br />

This expansion, also named ANOVA decomposition, is not unique. In Eldo, an approximation<br />

is made of the first terms that form a sum of univariate functions in the representation:<br />

The univariate terms are called the first-order ‘main effects’, and the bivariate terms f ij (X i ,X j )<br />

the interactions of second-order.<br />

In particular, it can be proved that under some assumptions:<br />

520<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Global Sensitivity Analysis<br />

where<br />

is the conditional expectation.<br />

This conditional expectation is approximated. In this way, if the scatter plot (X i , Y) has a pattern,<br />

the conditional expectation has a large variation across X i values, and parameter X i is<br />

revealed to be important. In fact, the variance of the terms in the decomposition above is the<br />

measure of importance being sought. We then compute<br />

and when this is divided<br />

by the unconditional variance Var(Y), the first-order sensitivity index is obtained:<br />

Tip<br />

For further reading on Global Sensitivity methods, see: Saltelli, A. et. al., Global Sensitivity<br />

Analysis. The Primer, John Wiley & Sons, 2008.<br />

Different sensitivity computation modes are available in Eldo, specified by the SENS parameter<br />

of the .MC command.<br />

Interpreting a Global Sensitivity Analysis<br />

Global sensitivity analysis results are written to the .chi and .mcm files.<br />

Some properties used in the interpretation of sensitivity indices are:<br />

• The index S i is a number always between 0 and 1. A large value indicates an important<br />

parameter X i .<br />

• The sum of the sensitivity indices is less than 1 (in theory). In other words, the sum of<br />

the conditional variances<br />

cannot be greater than the total variance.<br />

• The sum of all S i is equal to 1 for additive output Y, such that:<br />

and less than 1 for non-additive models. The difference:<br />

Eldo® User's Manual, 15.3 521


Monte Carlo Analysis<br />

Global Sensitivity Analysis<br />

is an indicator of the presence of interactions in the model.<br />

• It is possible for the sum of all S i to be close to 0 (therefore a number of S i indices are<br />

also very small). It indicates that the variability of the output cannot be analyzed without<br />

taking into account the interactions. This output is truly non-additive.<br />

In practice, the sum of all S i can be greater than 1. These are some artifacts due to the<br />

approximation procedure of the conditional expectation. Small variations of the order 1% or<br />

less, when cumulated, may give , and some truly non-important parameters would be<br />

classified as important. This is particularly true when the number of statistical parameters is<br />

large. Eldo uses some statistical tests to overcome this situation, refer to the example “Example<br />

17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier” on page 1309.<br />

Example<br />

A simple example is analyzed here for the purpose of familiarization with sensitivity indices.<br />

The input distributions are X i ~ N(0, 1). The scatter plots of the output Y = X 1 + X 2 2 + X 1 X 2 are<br />

given in Figure 11-20.<br />

Figure 11-20. Scatter Plots of Output<br />

This function has an immediate representation:<br />

• The mean value: .<br />

• The first-order terms: and .<br />

• The interaction term: .<br />

522<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Large Scale Variable Screening<br />

Except for the relative inaccuracy at the border, the non-parametric model, which fits the<br />

conditional expectation, is a good approximation of the first-order terms.<br />

The numerical procedure for computing the sensitivity indices gives S 1 = 0.2096 and<br />

S 2 = 0.3990 with sample size N = 1024. The non-zero difference 1 − S 1 − S 2 < 1 is a clear<br />

indication that the interaction term f 12 (X 1 , X 2 ) cannot be neglected in the output.<br />

Related Topics<br />

Post-Analysis of Monte Carlo Simulations<br />

Sensitivity Analysis<br />

Monte Carlo Analysis Examples<br />

Large Scale Variable Screening<br />

As already mentioned, this second approach to sensitivity analysis is a model-based method. It<br />

means that a (meta-) model is specified for the regression function f(x) = E[Y|X=x], with the<br />

assumption that this function f(x) is approximately linear in its arguments:<br />

At this step, it is clear that each individual component of the vector β gives a certain amount of<br />

information about the relative importance of the parameters (the main effects).<br />

Classically, the parameters β are found by Ordinary Least Squares regression based on the set of<br />

training data (x i ,y i ) from the Monte Carlo simulation. This estimation method finds the β by<br />

minimizing the residual sum of squares:<br />

In the context of large scale screening the dimension of the vector of variables x is much larger<br />

than the number of simulations, and it is assumed that there is only a small set of important<br />

variables. This means we are willing to determine a small subset of variables that give the main<br />

effects and neglect the small effects. We perform this task by using the well known method<br />

LASSO which is stable and exhibits good properties for subset selection. The LASSO method<br />

find a continuous path of solutions by minimizing the residual sum of squares and a L 1<br />

penalization of the vector β:<br />

Eldo® User's Manual, 15.3 523


Monte Carlo Analysis<br />

Large Scale Variable Screening<br />

and by varying the penalty parameter λ. Typically, only a small subset of the β j will be non-zero<br />

for a fixed value of λ.<br />

Tip<br />

For an introduction to Subset Selection and Shrinkage methods, see Hastie, Tibshirani and<br />

Friedman, The Elements of Statistical Learning: Data Mining, Inference, and Prediction,<br />

2009, 2nd Edition, New York: Springer Verlag.<br />

Using the Large Scale Variable Screening Method<br />

The Large Scale Variable Screening method should be used when the number of variables is<br />

much larger than the number of simulations that can be afforded. However, the method can only<br />

perform well if the number of simulations is around five times greater than the number<br />

significant variables. In most cases, only a few dozens of variables are important. Thus, one<br />

hundred simulations should be sufficient. For computational efficiency, the Large Scale<br />

Variable Screening method only uses the first 500 Monte Carlo simulations. The sensitivity<br />

indices computed by the Large Scale Variable Screening method have the same meaning as<br />

those of the “Global Sensitivity Analysis” on page 520.<br />

The Large Scale Variable Screening method is applied to a simple circuit composed of 500<br />

serial resistors whose nominal value is 10kΩ. Ten resistors have their standard deviation equal<br />

to 1kΩ while the standard deviation of the others is set to 1Ω. A Monte Carlo analysis with 100<br />

runs is performed. The results of the sensitivity analysis are shown below:<br />

Estimation of Sensitivity Indices for Output Measure : V(1,0)<br />

List of Important Parameters :<br />

Index(I) Histo S(I) (percent / cumulative) Variable<br />

Value<br />

Name<br />

494 |-------------------- 8.6% 8.6% PE(DEV_1000,R7,R)<br />

498 |------------------- 8.3% 16.9% PE(DEV_1000,R3,R)<br />

491 |------------------- 8.2% 25.2% PE(DEV_1000,R10,R)<br />

495 |------------------- 8.2% 33.4% PE(DEV_1000,R6,R)<br />

497 |------------------ 8.0% 41.4% PE(DEV_1000,R4,R)<br />

492 |------------------ 8.0% 49.4% PE(DEV_1000,R9,R)<br />

493 |------------------ 8.0% 57.4% PE(DEV_1000,R8,R)<br />

499 |------------------ 7.8% 65.2% PE(DEV_1000,R2,R)<br />

496 |------------------ 7.8% 73.0% PE(DEV_1000,R5,R)<br />

500 |----------------- 7.6% 80.6% PE(DEV_1000,R1,R)<br />

174 | 0.0% 80.6% PE(DEV_1,R327,R)<br />

133 | 0.0% 80.6% PE(DEV_1,R368,R)<br />

337 | 0.0% 80.6% PE(DEV_1,R164,R)<br />

190 | 0.0% 80.6% PE(DEV_1,R311,R)<br />

524<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Large Scale Variable Screening<br />

The ten resistors whose standard deviation is set to 1kΩ are correctly identified as important<br />

parameters by the Large Scale Variable Screening method. This example is provided in the<br />

netlist file large_scale.cir in the $MGC_AMS_HOME/examples/optimizer directory.<br />

Related Topics<br />

Sensitivity Analysis<br />

Eldo® User's Manual, 15.3 525


Monte Carlo Analysis<br />

Monte Carlo Analysis Examples<br />

Monte Carlo Analysis Examples<br />

This section contains the following examples of Monte Carlo Analysis:<br />

A Simple Passive Low-Pass Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526<br />

Importance Sampling Monte Carlo Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528<br />

Model-Based Approximations Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532<br />

Further Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534<br />

A Simple Passive Low-Pass Filter<br />

You can easily see the effects of Monte Carlo analysis in a simple passive low-pass filter.<br />

.MODEL C CAP DEV=20%<br />

.MODEL R RES LOT=20% DEV=5%<br />

.MC 1000 ALL<br />

V1 VIN 0 AC=1 DC=1<br />

R1 VIN A R 1k<br />

C1 A 0 C 10P<br />

.AC DEC 10 100 1e8<br />

.PROBE V<br />

.END<br />

The capacitor model has uniform LOT variations with a half-range of 20%, so all capacitors<br />

using this model are uncorrelated and vary up to 20% from the nominal value specified in the<br />

element instantiation. Capacitor C1 varies uniformly between 8 pF and 12 pF. The resistor<br />

model produces resistors such that the resistance values are correlated. After Eldo applies the<br />

20% LOT variations, each resistor has a 5% non-correlated variations.<br />

The .MC ... ALL argument requests Eldo to save the result from every Monte Carlo iteration.<br />

Running this simulation and viewing the voltage at node A produces the graph in Figure 11-21.<br />

526<br />

Eldo® User's Manual, 15.3


Figure 11-21. Monte Carlo Analysis Example<br />

Monte Carlo Analysis<br />

A Simple Passive Low-Pass Filter<br />

Related Topics<br />

Model-Based Approximations Example<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier<br />

Eldo® User's Manual, 15.3 527


Monte Carlo Analysis<br />

Importance Sampling Monte Carlo Examples<br />

Importance Sampling Monte Carlo Examples<br />

The sample netlists monte_carlo_sram_bitcell.cir and monte_carlo_vco_lc_tank.cir can be<br />

used to demonstrate the advantages of the IMSC method over the standard Monte Carlo<br />

method.<br />

SRAM Bit Cell Circuit<br />

Netlist file: monte_carlo_sram_bitcell.cir<br />

The sample circuit is a classic six-transistor SRAM bit cell designed in CMOS 45nm. A subset<br />

of the device model parameters has variability information, in the form of a DEV/GAUSS<br />

specification. The total number of statistical parameters is 36 (6 per device). Although the<br />

IMSC method is insensitive to the number of statistical parameters, it is always preferable to<br />

keep this number “reasonable”.<br />

The cell is configured for measuring the write delay, and the purpose of the Monte Carlo<br />

simulation is to estimate the probability of the write delay exceeding a certain threshold. This<br />

threshold could be used to define a “fail” behavior for yield estimation. Formally, the problem is<br />

to estimate π = Pr{Y > y} and the associated confidence interval on (the empirical estimator<br />

of π), where y is the threshold.<br />

The following .EXTRACT MC … MCROB() statement is given in the netlist:<br />

.EXTRACT MC LABEL=prob_plus_6 MCPROB(write_delay_qx, GE, 53.12)<br />

This statement illustrates how to use the .EXTRACT and MCPROB commands to specify this<br />

kind of probability estimation problem: refer to (usually) another .EXTRACT or .MEAS<br />

statement, specify a right tail (upper threshold) or a left tail (lower threshold), then specify the<br />

threshold. The following results are obtained:<br />

Lower Pr. Value Upper CV(%) #Runs Speedup<br />

Tail / Complementary<br />

-----------------------------------------------------------------------------<br />

8.89e-06 9.65e-06/1.00e+00 1.04e-05 7.87 8060 8.0e+03<br />

This kind of low probability estimation is very difficult (if not impossible) using the standard<br />

Monte Carlo method because a very large number of runs is required to obtain a decent<br />

accuracy (in terms of the confidence interval on the probability). In this example, the ISMC<br />

method estimates a probability of 9.6×10 −6 to within +/-7.8% (with a 95% confidence level) in<br />

roughly 8,000 runs, whereas the standard Monte Carlo method would require roughly<br />

64,000,000 runs (see Table 11-1).<br />

The estimation of the speedup of the ISMC method over the standard Monte Carlo method<br />

comes from the binomial law. The random variable:<br />

528<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Importance Sampling Monte Carlo Examples<br />

follows a binomial law with parameters (n, π y ). Since S n is the sum of independent Bernouilli<br />

random variables with parameter π y (such that<br />

), the central limit theorem<br />

gives:<br />

where<br />

At a confidence level α, the precision ε can be related to the sample size via 2Φ(-t) ≤ α. The<br />

number of Monte Carlo simulations is:<br />

In terms of the relative precision (the IS_RTOL parameter in the .MC statement) τ > 0, the<br />

number of Monte Carlo simulations is:<br />

because ε = τπ y .<br />

The reported speedup can be calculated by replacing τ by the effective relative precision<br />

obtained for the estimator. This value is given in the CV(%) column of the results. The ratio<br />

n MC / n ISMC then gives the speedup, where n ISMC is the effective number of runs.<br />

Table 11-1 displays the results of an experiment that can be carried out using this example. The<br />

value of IS_MAXITER is 50 to limit the total number of Monte Carlo runs. The ISMC method<br />

only failed to reach the desired precision within 50 iterations in the last experiment (1% RTOL).<br />

Eldo® User's Manual, 15.3 529


Monte Carlo Analysis<br />

Importance Sampling Monte Carlo Examples<br />

RTOL<br />

Table 11-1. Speedup of ISMC Over Standard Monte Carlo<br />

Effective Relative<br />

Precision<br />

Probability<br />

Estimator<br />

Number of<br />

Runs<br />

Speedup<br />

20% 10.80% 9.6×10 −6 7040 4.9×10 3<br />

10% 7.87% 9.65×10 −6 8060 8.0×10 3<br />

5% 4.88% 9.11×10 −6 11120 1.6×10 4<br />

1% 1.83% 9.051×10 −6 53960 2.3×10 4<br />

In general, the number of runs does not significantly decrease as the precision increases<br />

(compare 10% and 20% RTOL in Table 11-1). This is because the ISMC method uses batches<br />

of runs, and a whole batch must be completed before the accuracy can be determined. However,<br />

decreasing the batch size would have a negative impact on the rate of convergence and the<br />

robustness of the results.<br />

Now compare 10% and 1% RTOL in Table 11-1. It is known that to achieve a single extra digit<br />

of precision, the number of standard Monte Carlo runs must increase by a factor of 100. For<br />

effective precision, the results in Table 11-1 (7.9% precision with 8060 runs and 1.8% precision<br />

with 53960 runs) give the following reduction in variance:<br />

This speedup remains moderate with respect to one obtained using the standard Monte Carlo<br />

method. It also indicates that sampling for a high precision is (still) difficult. The default value<br />

of 10% was chosen from this practical point of view.<br />

The following .EXTRACT MC … MCROB() statement specifies a rare events simulation:<br />

.EXTRACT MC LABEL=prob_rare MCPROB(write_delay_qx, GE, 63.40)<br />

The following results are obtained using the ISMC method:<br />

Lower Pr. Value Upper CV(%) #Runs Speedup<br />

Tail / Complementary<br />

--------------------------------------------------------------------------<br />

3.30e-09 3.65e-09/1.00e+00 4.00e-09 9.66 24340 4.6e+06<br />

The failure probability is obtained with a precision of 9.66% using 24340 Monte Carlo runs,<br />

yielding a variance reduction factor of over 4 million. The standard Monte Carlo method would<br />

require over 12 billion runs to obtain comparable results.<br />

530<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Importance Sampling Monte Carlo Examples<br />

VCO Circuit<br />

Netlist file: monte_carlo_vco_lc_tank.cir<br />

The sample circuit is configured for .SST analysis and transient simulation (much slower than<br />

.SST). The circuit is a simple LC-tank VCO oscillating at 1.8GHz (adapted from Craninckx &<br />

Steyaert, IEEE JSSC, May 1997). The oscillation frequency is obtained using the .SST analysis<br />

of Eldo RF (requires an Eldo RF licence).<br />

The phase noise at 1meg offset from the carrier is also extracted using the steady-state noise<br />

analysis of Eldo RF. Both the oscillation frequency and the phase noise are strongly non-<br />

Gaussian. The distributions are heavily skewed (left and right respectively). This means that<br />

Gaussian extrapolations using the estimated standard deviation with a few hundred runs are<br />

completely wrong.<br />

With this analog IP block, the ISMC method can easily capture extreme events. In contrast, the<br />

standard Monte Carlo method is useless as soon as the probabilities are in the range of 10 −3<br />

because the number of runs needed to obtain a decent confidence interval becomes prohibitively<br />

large.<br />

This example sets up four simultaneous measurements: two probabilities and two quantiles.<br />

With importance sampling, the total number of runs grows roughly linearly with the number of<br />

measurements, so simulations are shorter if only one probability or quantile is measured at a<br />

time. For this reason, when preparing and checking simulations, it is better to proceed one<br />

.EXTRACT command at a time.<br />

Even with moderately small probabilities and quantiles, the speedup of the ISMC method over<br />

the standard Monte Carlo method ranges from 200 to 26,000. This can be observed in the .mcm<br />

output file. Refer to “Probability and Quantiles using Importance Sampling Monte Carlo” on<br />

page 483 for more information.<br />

The results of the transient simulation are obtained using Monte Carlo extracts. First, the<br />

following statement sets up a Monte Carlo simulation using the ISMC method:<br />

.MC 500 DATAFLOW=1 SAMPLING=ISMC<br />

The 10 −4 -quantile for the oscillation frequency is close to 1.75Ghz (see below). The following<br />

statement extracts this quantile:<br />

.EXTRACT MC LABEL=quantile_fosc_left_1em4 MCBOUND(fosc_tran, 1e-4)<br />

The following statement extracts the probability that the oscillation frequency is lower than<br />

1.75GHz:<br />

.EXTRACT MC LABEL=proba_fosc_left_1_75 MCPROB(fosc_tran, LE, 1.75G)<br />

The following results are obtained for the probability estimator:<br />

Eldo® User's Manual, 15.3 531


Monte Carlo Analysis<br />

Model-Based Approximations Example<br />

Lower Pr. Value Upper CV(%) #Runs Speedup<br />

Tail / Complementary<br />

------------------------------------------------------------------------------<br />

8.86e-05 9.60e-05/1.00e+00 1.03e-04 7.69 3530 1.9e+03<br />

Additionally, the quantile estimator returns a value of 1.74980×10 9 , which is very close to the<br />

value specified in the MCPROB extract statement. The speedup of the ISMC method over the<br />

standard Monte Carlo method is modest, but still very interesting. The standard Monte Carlo<br />

method would require 6.7 million runs to reach the same precision.<br />

Model-Based Approximations Example<br />

Netlist file: monte_carlo_ssd.cir<br />

This example centers around an 8-bit CMOS ripple carry adder, which is able to add to 7-bit<br />

binary numbers in parallel. The adder is constructed from a chain of 7 cascaded one-bit adder<br />

stages, with each stage connected to the next via a carry-link.<br />

The maximum operating frequency of such an adder is limited by the time it takes for the carry<br />

signal to propagate (ripple) through the chain, from the far-right stage to the sum6 and sum7<br />

outputs on the left. Given the circuit topology, this propagation delay depends on:<br />

• The design parameters (geometries of transistors in the carry path).<br />

• The statistical variations in transistor parameters due to manufacturing tolerances.<br />

• Environmental temperature.<br />

You, the designer, can choose the values of the design parameters. Temperature and some<br />

manufacturing process parameters may be controllable, but more often are not “designable.”<br />

The objectives for the 8-bit adder in this example are:<br />

• To simulate the fluctuation of the maximum operation speed due to manufacturing<br />

variations and as a function of temperature.<br />

• To predict the likely manufacturing yield with respect to a <strong>user</strong>-specified lower limit on<br />

the operating speed.<br />

• To compare the standard Monte Carlo method and the supersaturated design (SSD)<br />

approach.<br />

Approximation of the Parametric Yield<br />

Here, we calculate an approximation of the probability that a given circuit fails to satisfy a set<br />

performance specification. In the example, this value is obtained using the LBOUND and<br />

UBOUND arguments on the .EXTRACT command:<br />

.EXTRACT TRAN LABEL=OPFREQ (1/MAX(EXTRACT(DELAY6), EXTRACT(DELAY7)))<br />

+ LBOUND=280Meg<br />

532<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Model-Based Approximations Example<br />

For 10,000 runs, 9765 circuits are obtained that pass the specification. The approximate yield is<br />

therefore 97.65%.<br />

Comparison of Standard Monte Carlo and SSD Methods<br />

The Monte Carlo simulations of reference involves 1000 runs, and the SSD sampling is defined<br />

with a simulation budget of 100 runs. The results provide in Table 11-2 are extracted from the<br />

.mcm file. A comparison is generated only for the extract OPFREQ (in Hz).<br />

Table 11-2. Comparison of Standard Monte Carlo and SSD Methods<br />

This simple example shows the SSD algorithm correctly captured the central location and the<br />

range of the distribution. The relative error on the range is about 5% with respect to the golden<br />

Monte Carlo simulation. The worst error is given by the approximation of the third moment.<br />

The skewness of the distribution is clearly underestimated. This fact comes from the linear<br />

model used to approximate the output response. This model cannot identify asymmetric<br />

distributions.<br />

The choice of simulation budget here is based on preliminary experiments. NRUN=100 was<br />

used here, but sometimes it is necessary to increase this budget. A use model, could be to first<br />

run a golden Monte Carlo simulation on typical circuits that represent a large class of other<br />

circuits and then find a sufficient number of runs for the SSD algorithm.<br />

Related Topics<br />

Data MC Reference<br />

(command .MC 1000<br />

SAMPLING=RAND)<br />

Fitted Distribution<br />

(command .MC 100<br />

SAMPLING=SSD) with<br />

relative error Err%<br />

Mean Value 3.18873×10 8 3.20965×10 8 (Err% = 0.6 %)<br />

Standard Deviation 2.66935×10 7 3.16319×10 7 (Err% = 18%)<br />

Skewness 2.23588×10 −1 1.26011×10 −2 (Err% = 94%)<br />

Kurtosis 3.02094 2.84756 (Err% = 5.7%)<br />

Shortest Coverage Interval<br />

(L,U) with α = 0.95<br />

(2.70380×10 8 , 3.72227×10 8 ) (2.55207×10 8 , 3.78589×10 8 )<br />

(Err% = (5.6%,1.7%))<br />

Model-Based Monte Carlo Simulation<br />

Further Examples<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier<br />

Eldo® User's Manual, 15.3 533


Monte Carlo Analysis<br />

Further Examples<br />

Further Examples<br />

This section provides a selection of further examples:<br />

• Device sizes can be subject to a probabilistic distribution, simulating process variation,<br />

through the use of .PARAM statements. In this example, the NMOS transistor’s width<br />

follows a Gaussian distribution, centered around 20e-6 with σ = 0.2×20e-6 = 4e-6 as<br />

defined by the parameter nwidth. This parameter will also be subject to DEV variation.<br />

A .EXTRACT measures the propagation time through the inverter. The .chi file contains<br />

statistical information about the outcome of the .EXTRACT:<br />

.MODEL N NMOS LEVEL=1 VTO=1.2 KP=2.5e-5 GAMMA=1.5<br />

.MODEL P PMOS LEVEL=1 VTO=-1.5 KP=1.2e-5 GAMMA=1.2<br />

.PARAM NWIDTH=GAUSS(20U,0.2,1)<br />

M1 OUT IN VSS VSS N W=NWIDTH L=15U<br />

M2 OUT IN VDD VDD p W=30U L=15U<br />

COUT OUT 0 0.1P<br />

VDD VDD 0 5<br />

VSS VSS 0 0<br />

VIN IN 0 PWL (0 0 50N 0 51N 5)<br />

.MC 1000 ALL<br />

.TRAN 1N 100N<br />

.PROBE TRAN V(OUT)<br />

.EXTRACT TRAN LABEL=TPD TPDUD(V(IN), V(OUT))<br />

.END<br />

The .PARAM usage may be applied to model parameters as well. The VTO of the<br />

NMOS transistor can be replaced with a Gaussian random parameter. In this case, the<br />

standard deviation σ is 0.24. This technique may be more useful if the parameter needs<br />

to be a mathematical function of several variables.<br />

.PARAM NVTO=GAUSS(1.2,0.2,1)<br />

.MODEL N NMOS LEVEL=1 VTO=NVTO KP=2.5E-5 GAMMA=1.5<br />

.MODEL P PMOS LEVEL=1 VTO=-1.5 KP=1.2E-5 GAMMA=1.2<br />

M1 OUT IN VSS VSS N W=20U L=15U<br />

M2 OUT IN VDD VDD P W=30U L=15U<br />

COUT OUT 0 0.1P<br />

VDD VDD 0 5<br />

VSS VSS 0 0<br />

VIN IN 0 PWL (0 0 50N 0 51N 5)<br />

.MC 1000 ALL<br />

.TRAN 1n 100n<br />

.PROBE TRAN V(OUT)<br />

.EXTRACT TRAN LABEL=TPD TPDUD(V(IN), V(OUT))<br />

.END<br />

534<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Further Examples<br />

Each instance of a transistor using the NMOS model will have the same value of VTO<br />

because NVTO affects a model parameter, and therefore LOT variation is used.<br />

• The following is an example of statistical configuration usage:<br />

.MODEL R RES TC1=2 LOT=5% DEV=10%<br />

.SUBCKT R A B<br />

R1 A B 1K<br />

.ENDS<br />

I1 1 0 PWL (0 1 10N 10)<br />

X1 1 2 R STATISTICAL=0<br />

X2 2 3 R<br />

X2 3 0 R<br />

.TRAN 1N 10N<br />

.EXTRACT DC V(1)<br />

.TEMP 10<br />

.MC 1000<br />

.END<br />

Here, X1.R1 will remain at its nominal value during Monte Carlo analysis. This is<br />

because STATISTICAL is set to 0 for X1.<br />

.MODEL R RES TC1=2 LOT=5% DEV=10%<br />

.SUBCKT R A B<br />

R1 A B R 1K<br />

.ENDS<br />

I1 1 0 PWL (0 1 10N 10)<br />

X1 1 2 R<br />

X2 2 3 R STATISTICAL=1<br />

X3 3 0 R<br />

.TRAN 1N 10N<br />

.EXTRACT DC V(1)<br />

.TEMP 10<br />

.MC 1000<br />

.OPTION STATISTICAL=0 !Consider all the devices non-statistical by<br />

default<br />

.END<br />

Here, only X2.R1 will vary during Monte Carlo analysis. This is because the global<br />

STATISTICAL option is set to 0, meaning that devices are considered non-statistical by<br />

default, but this is overridden by the STATISTICAL keyword, which is set to 1 for X2.<br />

• The following is an example of using ICARLO in an extract:<br />

Eldo® User's Manual, 15.3 535


Monte Carlo Analysis<br />

Parameter Naming Conventions<br />

* ICARLO example<br />

.MODEL C CAP DEV=20%<br />

.MODEL R RES LOT=20% DEV=5%<br />

.MC 5 ALL<br />

V1 VIN 0 AC=1 DC=1<br />

R1 VIN A R 1k<br />

C1 A 0 C 10P<br />

.TRAN 20ns 20ns<br />

.PROBE V<br />

.EXTRACT tran file=test_out label=maxA max(v(A))<br />

.EXTRACT tran file=icarlo_out {1+ICARLO}<br />

.end<br />

This will generate the following results in the icarlo_out file:<br />

TITLE * ICARLO example<br />

EXTRACT for TRANSIENT ANALYSIS<br />

TEMPERATURE = 2.7000E+01 Celsius<br />

ICARLO = 0<br />

*{1+ICARLO} = 1.0000E+00<br />

TITLE * ICARLO example<br />

EXTRACT for TRANSIENT ANALYSIS<br />

TEMPERATURE = 2.7000E+01 Celsius<br />

ICARLO = 1<br />

*{1+ICARLO} = 2.0000E+00<br />

...<br />

Related Topics<br />

Monte Carlo Analysis Examples<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier<br />

Parameter Naming Conventions<br />

This topic describes the naming conventions for the identification of statistical parameters. It is<br />

necessary to use these conventions in a sensitivity analysis to identify the significant circuit<br />

parameters.<br />

As an example, if X is a uniform random variable defined on the interval [−1, 1] then the<br />

variable Y = function(X) is a dependent variable obtained by simulating the uniform variable<br />

and applying a given transformation. The following example models a voltage dependent<br />

resistor, with a linear dependence with respect to the uniform random variable RSH,<br />

.PARAM W=1U L=1U<br />

.PARAM RSH=AUNIF(1K,100,1)<br />

.PARAM B1=-0.4 B2=8U<br />

R1 A B ’RSH*L/W*(1+B1*(TANH(B2*ABS(V(A,B)/L))))’<br />

In this section, the RC Wire model is used to demonstrate the effect of various formulations that<br />

combine local and global variations. The LEVEL parameter is set to LEVEL=3 for the RC wire<br />

model. The expression of the wire resistance is given by:<br />

536<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Parameter Naming Conventions<br />

where and .<br />

The model parameters DW and DLR are the differences between drawn and actual width and<br />

length respectively. The sheet resistance is fixed to RSH = 100.<br />

Note<br />

This is a simplification of the effective expression where the scaling factors have been<br />

removed. Refer to RC Wire in the Eldo Reference Manual for the full formula.<br />

Implicit Rule<br />

An implicit rule exists to determine whether a parameter has global or local variations. If the<br />

parameter P is defined as a simple random variable such as:<br />

.PARAM P=AUNIF(...)<br />

then this variable has implicit DEV variations. It means that each reference of P in the circuit<br />

netlist will lead to the creation of an independent random variable.<br />

Macro PE(.)<br />

The following example illustrates the use of the macro PE(.). There are two references to the<br />

VAR parameter:<br />

.PARAM VAR=AUNIF(3U,0.1U)<br />

.PARAM BIAS=1M<br />

I1 0 1 BIAS<br />

I2 0 2 BIAS<br />

R1 1 0 RESISTOR W=3U L=VAR<br />

R2 2 0 RESISTOR W=3U L=VAR<br />

.MODEL RESISTOR R LEVEL=3 W=3U L=3U RSH=100<br />

Two random variables will be associated to the resistors R1 and R2. These variables will be<br />

named PE(VAR,R1,L) and PE(VAR,R2,L).The macro PE has three arguments. The syntax is<br />

defined as follows:<br />

PE(parameter_name, device_name, instance_parameter)<br />

The random variable that affects the instance parameter instance_parameter associated to the<br />

device device_name is such that its distribution is specified in the definition of the parameter<br />

parameter_name.<br />

Eldo® User's Manual, 15.3 537


Monte Carlo Analysis<br />

Parameter Naming Conventions<br />

Macro PP(.)<br />

In the following netlist, a new parameter GLOBVAR is introduced, and the instance parameter,<br />

W, of each resistor is associated to the GLOBVAR variable:<br />

.PARAM VAR=AUNIF(3U,0.1U)<br />

.PARAM GLOBVAR=VAR<br />

.PARAM BIAS=1M<br />

I1 0 1 BIAS<br />

I2 0 2 BIAS<br />

R1 1 0 RESISTOR W=GLOBVAR L=VAR<br />

R2 2 0 RESISTOR W=GLOBVAR L=VAR<br />

.MODEL RESISTOR R LEVEL=3 W=3U L=3U RSH=100<br />

The GLOBVAR parameter will have implicit LOT variations. Multiple references to<br />

GLOBVAR do not create multiple random variables. The parameter variations are defined<br />

globally; this is an artifact of the syntax that enables circuit parameters to be specified with<br />

global variations.<br />

For Eldo, the GLOBVAR parameter does not inherit the DEV variations of the VAR parameter,<br />

and only one random variable will be created in the Monte Carlo sampling. This should be<br />

avoided as much as possible in the netlist, and instead explicit specifications with the DEV/LOT<br />

keywords should be used.<br />

The random variable associated to this parameter GLOBVAR is named with the macro PP(.)<br />

according to this syntax:<br />

PP(parameter1_name, parameter2_name)<br />

The random variable that affects the parameter parameter2_name such that its distribution is<br />

specified in the definition of the parameter parameter1_name.<br />

Example of Macro PP(.) and PE(.) Usage<br />

Consider the statements:<br />

.PARAM VAR=AUNIF(3U,0.1U)<br />

.PARAM GLOBVAR=VAR<br />

.PARAM LOCVAR=AUNIF(0U,0.02U)<br />

.PARAM BIAS=1M<br />

I1 0 1 BIAS<br />

I2 0 2 BIAS<br />

R1 1 0 RESISTOR W=’GLOBVAR+LOCVAR’ L=VAR<br />

R2 2 0 RESISTOR W=’GLOBVAR+LOCVAR’ L=VAR<br />

.MODEL RESISTOR R LEVEL=3 W=3U L=3U RSH=100<br />

538<br />

Eldo® User's Manual, 15.3


Five independent random variables will be created in the sampling:<br />

• The variable PP(VAR,GLOBVAR) with global variations.<br />

Monte Carlo Analysis<br />

Parameter Naming Conventions<br />

• The two variables PE(LOCVAR,R1,W) and PE(LOCVAR,R2,W) which come from the<br />

statement LOCVAR=AUNIF(0U,0.02U).<br />

• The two variables PE(VAR,R1,L) and PE(VAR,R2,L).<br />

Macro PM(.)<br />

Consider the following statements:<br />

.PARAM VAR=AUNIF(0U,0.05U)<br />

.PARAM BIAS=1M<br />

I1 0 1 BIAS<br />

I2 0 2 BIAS<br />

R1 1 0 RESISTOR<br />

R2 2 0 RESISTOR<br />

.MODEL RESISTOR R LEVEL=3 W=3U L=3U RSH=100 DW=VAR DLR=VAR<br />

This example is another application of the previous implicit rule on variations. The parameter<br />

VAR has DEV variations, and it is used two times in the .MODEL definition. Two random<br />

variables are associated to this model, but these variables are global for the circuit, because the<br />

model has a global scope. The resistors R1 and R2 will share the same random variables.<br />

The macro PM(.) was introduced for referencing these random variables. In this example, we<br />

have two independent variables: PM(VAR,RESISTOR,DW) and PM(VAR,RESISTOR,DL).<br />

The syntax is defined as follows:<br />

PM(parameter_name, model_name, model_parameter)<br />

The random variable that affects the model parameter model_parameter associated to the model<br />

model_name is such that its distribution is specified in the definition of the parameter<br />

parameter_name.<br />

It is important to note that the variables PM(VAR,RESISTOR,DW) and<br />

PM(VAR,RESISTOR,DL) have the same distribution. The previous lines are strictly equivalent<br />

to the following (from the mathematical view):<br />

Eldo® User's Manual, 15.3 539


Monte Carlo Analysis<br />

Parameter Naming Conventions<br />

.PARAM VARW=AUNIF(0U,0.05U)<br />

.PARAM VARL=AUNIF(0U,0.05U)<br />

.PARAM BIAS=1M<br />

I1 0 1 BIAS<br />

I2 0 2 BIAS<br />

R1 1 0 RESISTOR<br />

R2 2 0 RESISTOR<br />

.MODEL RESISTOR R LEVEL=3 W=3U L=3U RSH=100 DW=VARW DLR=VARL<br />

In this case, Eldo will create the variables PM(VARW,RESISTOR,DW) and<br />

PM(VARL,RESISTOR,DL).<br />

Implicit Rules of Inheritance<br />

It is possible to define global and local variations by using implicit rules of inheritance.<br />

Consider the following netlist:<br />

.PARAM VAR=AUNIF(3U,0.05U)<br />

.PARAM VARW=AUNIF(VAR,0.01U)<br />

.PARAM BIAS=1M<br />

I1 0 1 BIAS<br />

I2 0 2 BIAS<br />

R1 1 0 RESISTOR W=VARW L=3U<br />

R2 2 0 RESISTOR W=VARW L=3U<br />

.MODEL RESISTOR R LEVEL=3 W=3U L=3U RSH=100<br />

Where we have VARW=AUNIF(VAR,0.05U), a reference to the statistical parameter VAR is<br />

used in the definition of the distribution associated to VARW. In other words, VARW is the<br />

sum VAR + AUNIF(0,0.01U); the distribution of VARW is the sum of two random variables.<br />

In this example, there are three random variables:<br />

• PP(VAR,VARW) the random variable with global variations.<br />

• PE(VARW,R1,W) and PE(VARW,R2,W) the local random variables.<br />

The VARW parameter does not inherit the DEV variations of VAR. During the Monte Carlo<br />

sampling, a value for PP(VAR,VARW) is drawn from the uniform distribution<br />

AUNIF(3U,0.05U) and two independent values PE(VARW,R1,W) and PE(VARW,R2,W) are<br />

obtained from the uniform distribution AUNIF(0,0.01U). The final values of the width W in R1<br />

and R2 are therefore computed by summing these random values to PP(VAR,VARW).<br />

Note that this behavior cannot be obtained with following statements:<br />

.PARAM VAR1=AUNIF(0,0.05U)<br />

.PARAM VAR2=AUNIF(0,0.01U)<br />

.PARAM VARW=’3U + VAR1 + VAR2’<br />

540<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Parameter Naming Conventions<br />

In this case two random variables are obtained PP(VAR1,VARW) and PP(VAR2,VARW) with<br />

global variations.<br />

This use of the implicit rules should be avoided as much as possible. It is encouraged for <strong>user</strong>s<br />

to specify explicit DEV/LOT variations.<br />

Macro P(.)<br />

The macro P(.) has only one argument:<br />

P(parameter_name)<br />

and the associated random variable has global variations. Consider the following netlist<br />

.PARAM VARL=0 LOT/UNIF=0.05U<br />

.PARAM VARW=0 LOT/UNIF=0.05U<br />

.PARAM BIAS=1M<br />

I1 0 1 BIAS<br />

I2 0 2 BIAS<br />

R1 1 0 RESISTOR<br />

R2 2 0 RESISTOR<br />

.MODEL RESISTOR R LEVEL=3 W=3U L=3U RSH=100 DW=VARW DLR=VARL<br />

The parameters VARL and VARW now have explicit LOT variations, and there are two<br />

independent random variables P(VARL) and P(VARW).<br />

Macro PEM(.)<br />

If a DEV argument is added to the previous .PARAM definitions,<br />

.PARAM VARL=0 LOT/UNIF=0.05U DEV/UNIF=0.02U<br />

.PARAM VARW=0 LOT/UNIF=0.05U DEV/UNIF=0.02U<br />

we will have six random variables in the Monte Carlo sampling:<br />

• P(VARL) and P(VARW) the global components of the variations on the width and<br />

length of resistors.<br />

• PEM(VARW,R1,R) and PEM(VARL,R1,R) the local components of the variations on<br />

the width and length of the resistor R1.<br />

• PEM(VARW,R2,R) and PEM(VARL,R2,R) the local components of the variations on<br />

the width and length of the resistor R2.<br />

The syntax of the PEM(.) macro is defined as follows:<br />

PEM(parameter_name, device_name, instance_parameter)<br />

Eldo® User's Manual, 15.3 541


Monte Carlo Analysis<br />

Parameter Naming Conventions<br />

As above, one may read this macro as follows: the random variable that affects the instance<br />

parameter instance_parameter associated to the device device_name and such that its<br />

distribution is specified in the definition of the parameter parameter_name.<br />

Note that it may happen that on some devices there is no instance_parameter, there are only two<br />

arguments in the macro. An example follows.<br />

Macros EM(.) and M(.)<br />

Here, consider a more elaborate netlist which uses a combination of local and global variations<br />

on some model parameters of a bipolar junction transistor NPN. It represents a notable situation<br />

where no implicit rule conflicts with the common sense.<br />

The circuit is a Low Noise Amplifier. DEV and LOT variations are defined on the model<br />

parameter ISS (saturated current for substrate junction), and the parasitic resistances parameters<br />

RE, RB, and RC. 16 random variables are obtained:<br />

• The global or LOT component for each model parameters: M(BIPNPN.NPNBIP,RB),<br />

M(BIPNPN.NPNBIP,RC), M(BIPNPN.NPNBIP,RE), M(BIPNPN.NPNBIP,ISS). In<br />

these macros there is no reference to local instances of subcircuits or devices. The model<br />

cards are placed at the top level of a circuit.<br />

• The local or DEV component for each instance of the subcircuit BIPNPN:<br />

EM(XDUT.XDUT.XQ0.Q0,RB), EM(XDUT.XDUT.XQ0.Q0,RC),<br />

EM(XDUT.XDUT.XQ0.Q0,RE), EM(XDUT.XDUT.XQ0.Q0,ISS),<br />

EM(XDUT.XDUT.XQ1.Q0,RB), etc. The letter E means Element. The name of the<br />

model is given, but is clearly associated to the given instance.<br />

Syntax<br />

The syntax of the M(.) macro is defined as follows:<br />

M(model_name, model_parameter)<br />

which may be interpreted as the random variable that affects the model parameter<br />

model_parameter of the model model_name and such that its distribution is specified in the<br />

definition of the parameter.<br />

The syntax of the EM(.) macro is defined as follows:<br />

EM(device_name, model_parameter)<br />

You may read this macro as follows: the random variable that affects the model parameter<br />

model_parameter of the device device_name and such that its distribution is specified in the<br />

definition of the parameter.<br />

Example<br />

The complete netlist is provided below:<br />

542<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Parameter Naming Conventions<br />

LNA demo<br />

.GLOBAL GND!<br />

.CONNECT GND! 0<br />

* BIPOLAR<br />

.SUBCKT BIPNPN 1 2 3 4<br />

Q0 1 2 3 4 NPNBIP<br />

.MODEL NPNBIP NPN IS=24.5E-18 BF=121 NF=1 VAF=35 IKF=32E-3 ISE=847E-18<br />

+ NE=1.9 BR=3.81 NR=1 VAR=3.2 IKR=2E-3 ISC=847E-18 NC=1.9<br />

+ IRB=80E-6 RBM=5 XTB=0.5 EG=1.2 XTI=3 CJE=59.6E-15 VJE=0.895<br />

+ MJE=0.41 TF=11E-12 XTF=15 VTF=1.5 ITF=40E-3 PTF=0 CJC=45.8E-15<br />

+ VJC=0.642 MJC=0.33 XCJC=0.3 TR=5E-9 CJS=75.5E-15 VJS=0.65<br />

+ MJS=0.33 FC=0.875<br />

+ TRB1=1.05E-3 TRB2=4.4E-6 TRC1=1E-3 TRC2=3.1E-6 TRE1=0 TRE2=0<br />

+ KF=1.32E-10 AF=1.8<br />

+ RE=3.5 LOT=5% DEV=2.5%<br />

+ RC=25 LOT=5% DEV=2.5%<br />

+ RB=100 LOT=5% DEV=2.5%<br />

+ ISS=1E-16 LOT=5% DEV=2.5%<br />

.ENDS<br />

* ANALYSIS<br />

.PARAM FEND=3.8E9 FSTART=1.4E9 IBIAS=5M VCC=1.5<br />

.TEMP 27<br />

.AC LIN 100 FSTART FEND<br />

* MEASURES<br />

.DEFWAVE AC GAIN=V(OUT)/V(IN)<br />

.EXTRACT AC LABEL=MAX_GAIN MAX(WM(GAIN))<br />

.EXTRACT AC LABEL=GMAX MAX(W(GAIN))<br />

.EXTRACT AC LABEL=FRES CROSSING(W(GAIN), MAX(W(GAIN))-0.001)<br />

** CIRCUIT<br />

XDUT GND! IN OUT VPLUS LNA_DEMO<br />

RROUT OUT GND! 50<br />

VVIN IN GND! DC 0 AC 1 RPORT=50<br />

VVCC VPLUS GND! DC VCC<br />

.SUBCKT LNA_TEST GNDA IN IREF OUT SUB VPLUS<br />

LL1 NET8 GNDA L=1.2N<br />

CC0 NET16 OUT C=500F<br />

RR1 NET14 IN R=2K<br />

RR0 NET19 NET14 R=2K<br />

XQ2 IREF NET19 GNDA SUB BIPNPN<br />

XQ1 VPLUS IREF NET14 SUB BIPNPN<br />

XQ0 NET16 IN NET8 SUB BIPNPN<br />

LL0 VPLUS NET16 L=8N<br />

.ENDS LNA_TEST<br />

.SUBCKT LNA_DEMO VMINUS IN OUT VPLUS<br />

XDUT VMINUS NET020 NET022 OUT VMINUS VPLUS LNA_TEST<br />

LL0 IN VMINUS 3.9N<br />

Eldo® User's Manual, 15.3 543


Monte Carlo Analysis<br />

Problems in Statistical Modeling<br />

CC0 NET020 IN 4P<br />

II6 VMINUS NET022 IBIAS<br />

.ENDS LNA_DEMO<br />

.MC 1000<br />

Suppose now that the subcircuit BIPNPN is defined as follows:<br />

.SUBCKT BIPNPN 1 2 3 4<br />

Q0 1 2 3 4 NPNBIP<br />

.PARAM RE_VAR=3.5 LOT=5% DEV=2.5%<br />

.PARAM RB_VAR=100 LOT=5% DEV=2.5%<br />

.PARAM RC_VAR=25 LOT=5% DEV=2.5%<br />

.PARAM ISS_VAR=1E-16 LOT=5% DEV=2.5%<br />

.MODEL NPNBIP NPN IS=24.5E-18 BF=121 NF=1 VAF=35 IKF=32E-3 ISE=847E-18<br />

+ NE=1.9 BR=3.81 NR=1 VAR=3.2 IKR=2E-3 ISC=847E-18 NC=1.9<br />

+ IRB=80E-6 RBM=5 XTB=0.5 EG=1.2 XTI=3 CJE=59.6E-15 VJE=0.895<br />

+ MJE=0.41 TF=11E-12 XTF=15 VTF=1.5 ITF=40E-3 PTF=0 CJC=45.8E-15<br />

+ VJC=0.642 MJC=0.33 XCJC=0.3 TR=5E-9 CJS=75.5E-15 VJS=0.65<br />

+ MJS=0.33 FC=0.875<br />

+ TRB1=1.05E-3 TRB2=4.4E-6 TRC1=1E-3 TRC2=3.1E-6 TRE1=0 TRE2=0<br />

+ KF=1.32E-10 AF=1.8<br />

* PARAMETERS WITH VARIATIONS<br />

+ RE=RE_VAR RC=RC_VAR RB=RB_VAR<br />

+ ISS=ISS_VAR<br />

.ENDS<br />

The statistical variations are defined outside the .MODEL statement. In this case, we still have<br />

16 random variables with different names. The following table gives the equivalence between<br />

these two different syntaxes.<br />

First syntax<br />

Second syntax<br />

LOT variations M(BIPNPN.NPNBIP,RB) P(BIPNPN.RB_VAR)<br />

M(BIPNPN.NPNBIP,RC) P(BIPNPN.RC_VAR)<br />

... ...<br />

DEV variations EM(XDUT.XDUT.XQ0.Q0,RB) ...<br />

EM(XDUT.XDUT.XQ0.Q0,RC) PEM(BIPNPN.RC_VAR,XDUT.X<br />

DUT.XQ0.Q0)<br />

... ...<br />

There is no clear difference between these approaches; it depends on the context.<br />

Problems in Statistical Modeling<br />

This section is devoted to some issues that you may encounter in statistical modeling.<br />

544<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Problems in Statistical Modeling<br />

Using the final example in “Macros EM(.) and M(.)” on page 542, modifying the subcircuit<br />

definition to replace the .PARAM statements with .MCMOD commands:<br />

.SUBCKT BIPNPN 1 2 3 4<br />

Q0 1 2 3 4 NPNBIP<br />

.MODEL NPNBIP NPN IS=24.5E-18 BF=121 NF=1 VAF=35 IKF=32E-3 ISE=847E-18<br />

+ NE=1.9 BR=3.81 NR=1 VAR=3.2 IKR=2E-3 ISC=847E-18 NC=1.9<br />

+ IRB=80E-6 RBM=5 XTB=0.5 EG=1.2 XTI=3 CJE=59.6E-15 VJE=0.895<br />

+ MJE=0.41 TF=11E-12 XTF=15 VTF=1.5 ITF=40E-3 PTF=0 CJC=45.8E-15<br />

+ VJC=0.642 MJC=0.33 XCJC=0.3 TR=5E-9 CJS=75.5E-15 VJS=0.65<br />

+ MJS=0.33 FC=0.875<br />

+ TRB1=1.05E-3 TRB2=4.4E-6 TRC1=1E-3 TRC2=3.1E-6 TRE1=0 TRE2=0<br />

+ KF=1.32E-10 AF=1.8<br />

+ RE=3.5 RC=25 RB=100<br />

+ ISS=1E-16<br />

.MCMOD NPNBIP RB LOT=5% DEV=2.5%<br />

.MCMOD NPNBIP RE LOT=5% DEV=2.5%<br />

.MCMOD NPNBIP RC LOT=5% DEV=2.5%<br />

.MCMOD NPNBIP ISS LOT=5% DEV=2.5%<br />

.ENDS<br />

then Eldo will generate several warning messages during the first phase of simulation:<br />

Warning 921: In file “./test71_2.cir” line 22:<br />

+ MC variation on BIPNPN.NPNBIP: new MC LOT (5.000000e-02 ) on<br />

parameter RB specified.<br />

+ Previous specification is ignored.<br />

Warning 921: In file “./test71_2.cir” line 22:<br />

+ MC variation on BIPNPN.NPNBIP: new MC DEV (2.500000e-02 ) on<br />

parameter RB specified.<br />

+ Previous specification is ignored.<br />

...<br />

The reason for these warnings is that the .MCMOD introduces local modifications of the<br />

NPNBIP model while the .MODEL card has global scope in the netlist (it is placed at the top<br />

level). The .MCMOD commands therefore redefine and overwrite the previous definitions. This<br />

situation should be avoided.<br />

Here is another example. The example of the 2-stage operational amplifier given in the previous<br />

section is used.<br />

Eldo® User's Manual, 15.3 545


Monte Carlo Analysis<br />

Problems in Statistical Modeling<br />

.SUBCKT N D G S B PARAM: W=1U L=1U<br />

M1 D G S B MODN W=W L=L<br />

.PARAM TOX=19E-09 A_MM_TOX=0.4543U B_MM_TOX=0.1435<br />

+ DEV_MM_TOX =’A_MM_TOX/SQRT(W*L)+B_MM_TOX’<br />

.PARAM VTH0=.3322 A_MM_VTH0=0.40654U B_MM_VTH0=0.11654<br />

+ DEV_MM_VTH0 =’A_MM_VTH0/SQRT(W*L)+B_MM_VTH0’<br />

.PARAM U0=388.3203 A_MM_U0=0.565745U B_MM_U0=0.264563<br />

+ DEV_MM_U0 =’A_MM_U0/SQRT(W*L)+B_MM_U0’<br />

.MODEL MODN NMOS<br />

+LEVEL=53<br />

+TOX = TOX DEV/GAUSS={DEV_MM_TOX}%<br />

+VTH0 = VTH0 DEV/GAUSS={DEV_MM_VTH0}%<br />

+U0 = U0 DEV/GAUSS={DEV_MM_U0}%<br />

+KF=1E-27 AF=2<br />

+TNOM=27.0<br />

...<br />

.ENDS<br />

We will have 51 random variables (17 transistors and 3 three statistical parameters with DEV<br />

variations) in the Monte Carlo sampling: EM(XM1.M1, TOX), EM(XM1.M1,VTH0),<br />

EM(XM1.M1,U0), etc. See the definition above of the macro EM(.).<br />

In this case, it is important to note that Eldo will create one model entry for each instance of the<br />

subcircuit N. This is due to the definition of the model parameters TOX, VTH0, U0 which are<br />

functions of the instance parameter W and L (the geometry). The .MODEL MODN definition<br />

has a local scope. This implicit rule may have some unexpected side effects. Consider this<br />

simple modification of the previous netlist:<br />

546<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Problems in Statistical Modeling<br />

.SUBCKT P D G S B PARAM: W=1U L=1U<br />

M1 D G S B MODP W=W L=L<br />

.PARAM TOX=19E-09 A_MM_TOX=0.365543U B_MM_TOX=0.001435<br />

+ DEV_MM_TOX =’A_MM_TOX/SQRT(W*L)+B_MM_TOX’<br />

.PARAM VTH0=-.3732829 A_MM_VTH0=0.30654U B_MM_VTH0=0.1452<br />

+ DEV_MM_VTH0 =’A_MM_VTH0/SQRT(W*L)+B_MM_VTH0’<br />

.PARAM U0=138.7609 A_MM_U0=0.565745U B_MM_U0=0.366454<br />

+ DEV_MM_U0 =’A_MM_U0/SQRT(W*L)+B_MM_U0’<br />

.MODEL MODP PMOS<br />

+LEVEL=53<br />

+TOX = TOX LOT/GAUSS=2% DEV/GAUSS={DEV_MM_TOX}%<br />

+VTH0 = VTH0<br />

DEV/GAUSS={DEV_MM_VTH0}%<br />

+U0 = U0 DEV/GAUSS={DEV_MM_U0}%<br />

+KF=1E-27 AF=2<br />

+TNOM=27.0<br />

...<br />

.ENDS<br />

A global variation is added on the oxide thickness and we will have nine random variables for<br />

the LOT component of the TOX parameter: M(XM1.MODN,TOX), M(XM2.MODN,TOX),<br />

M(XM7.MODN,TOX), M(XM8.MODN,TOX), M(XM9.MODN,TOX),<br />

M(XM10.MODN,TOX), M(XM13.MODN,TOX), M(XM15.MODN,TOX),<br />

M(XM17.MODN,TOX). We obtained nine independent random variables instead of only one<br />

random for the global variations of the TOX parameter. It is very unlikely that this list of<br />

parameters is what you want to model in this case.<br />

The global variations can be obtained by rewriting the netlist as follows:<br />

Eldo® User's Manual, 15.3 547


Monte Carlo Analysis<br />

Obsolete Features<br />

.PARAM TOX=19E-09<br />

.PARAM TOX_GLOB =TOX<br />

LOT/GAUSS=2%<br />

.SUBCKT N D G S B PARAM: W=1U L=1U<br />

M1 D G S B MODN W=W L=L<br />

.PARAM A_MM_TOX=0.4543U B_MM_TOX=0.1435<br />

+ DEV_MM_TOX =’A_MM_TOX/SQRT(W*L)+B_MM_TOX’<br />

.PARAM VTH0=.3322 A_MM_VTH0=0.40654U B_MM_VTH0=0.11654<br />

+ DEV_MM_VTH0 =’A_MM_VTH0/SQRT(W*L)+B_MM_VTH0’<br />

.PARAM U0=388.3203 A_MM_U0=0.565745U B_MM_U0=0.264563<br />

+ DEV_MM_U0 =’A_MM_U0/SQRT(W*L)+B_MM_U0’<br />

.MODEL MODN NMOS<br />

+LEVEL=53<br />

+TOX = TOX_GLOB DEV/GAUSS={DEV_MM_TOX}%<br />

+VTH0 = VTH0 DEV/GAUSS={DEV_MM_VTH0}%<br />

+U0 = U0 DEV/GAUSS={DEV_MM_U0}%<br />

+KF=1E-27 AF=2<br />

+TNOM=27.0<br />

...<br />

.ENDS<br />

Outside the .SUBCKT block we created the parameter TOX_GLOB with explicit LOT<br />

variations. This results in the generation of a random variable named P(TOX_GLOB). Finally<br />

we will have 52 independent variables.<br />

Related Topics<br />

Statistical Variations<br />

Obsolete Features<br />

The features described here are related to sampling methods, not statistical models, and should<br />

not be used.<br />

LIMIT Distribution<br />

The LIMIT distribution is a discrete probability distribution on finite set {L, U} which can be<br />

characterized by saying that the values L and U are equally probable.<br />

548<br />

Eldo® User's Manual, 15.3


Figure 11-22. LIMIT Distribution with L=-1 and U=+1<br />

Monte Carlo Analysis<br />

Obsolete Features<br />

This distribution is implicitly used when the argument MCLIMIT is specified on the .MC<br />

command. This option forces Eldo to draw random variations of uniform and Gaussian<br />

distributions from the extreme limits of their support. For example, for a uniform variable we<br />

will get:<br />

NOR/UNI Distributions<br />

As described in the topic “Specifying Statistical Parameters” on page 427, use the following<br />

syntax to assign a statistical distribution to the parameter.<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT=(UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ DEV=(UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT=(UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%])<br />

+ DEV=(UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT=(NOR,MINUS_3SIGMA_VALUE[%],PLUS_3SIGMA_VALUE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

. DEV=(NOR,MINUS_3SIGMA_VALUE[%],PLUS_3SIGMA_VALUE[%])<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ LOT=(UNI,MINUS_3SIGMA_VALUE[%],PLUS_3SIGMA_VALUE[%])<br />

+ DEV=(UNI,MINUS_3SIGMA_VALUE[%],PLUS_3SIGMA_VALUE[%])<br />

For UNI distributions, only the absolute values of<br />

MINUS_HALF_RANGE,PLUS_HALF_RANGE are considered, and they represent the<br />

negative and positive half-ranges (respectively) of the distribution from its nominal value. A<br />

negative value for MINUS_HALF_RANGE can be used if considered more readable, but it<br />

does not matter. In all cases, the parameter will take its values between NOM_VALUE-<br />

ABS(MINUS_HALF_RANGE) and NOM_VALUE-ABS(PLUS_HALF_RANGE).<br />

Eldo® User's Manual, 15.3 549


Monte Carlo Analysis<br />

Obsolete Features<br />

If the specified values MINUS_HALF_RANGE,PLUS_HALF_RANGE are different (in<br />

absolute value), the resulting distribution will no longer be uniform. An example is given<br />

Figure 11-23 in top-left plot, where the support of the distribution is the union of two<br />

contiguous intervals of different length: [2, 5] and [5, 10]. The points are uniformly sampled in<br />

each intervals.<br />

For NOR distributions, if MINUS_3SIGMA_VALUE,PLUS_3SIGMA_VALUE have the same<br />

absolute value, then the distribution is a Gaussian distribution with mean value NOM_VALUE,<br />

and a standard deviation of ABS(MINUS_3SIGMA_VALUE)/3 or<br />

ABS(PLUS_3SIGMA_VALUE)/3. The samples from this distribution are generated from a<br />

centered and reduced truncated normal distribution where the interval of truncation is [−3, 3].<br />

Note<br />

When using this notation, it is key to understand that what is given is the 3-sigma value, not<br />

the 1-sigma value.<br />

It is also possible to specify different values for the 3-sigma bounds of the NOR distribution. An<br />

example is given Figure 11-23 in top-right plot.<br />

Note<br />

When the nominal value is not zero, it is possible to specify percentages instead of absolute<br />

values for the bounds. In this case the percentages must be understood as percentages of the<br />

nominal value.<br />

Examples<br />

• The following syntax gives a Gaussian distribution with mean value 0, and standard<br />

deviation (1-sigma) equal to 4 (12/3). The values taken by P1 will vary between -12 and<br />

12.<br />

.PARAM P1=(0) LOT=(NOR, -12, 12)<br />

• The following syntax specifies a distribution with a longer right tail compared to the left<br />

tail:<br />

.PARAM P2=(5) LOT=(NOR, -3, 5)<br />

See Figure 11-23 in top-right plot.<br />

• Using the following syntax, the parameter will take values between 180 and 220. Its<br />

mean value will be 200, and its standard deviation will be 20/3.<br />

.PARAM P3=(200) LOT=(NOR, -10%, 10%)<br />

550<br />

Eldo® User's Manual, 15.3


Figure 11-23. Four Random Samples from NOR/UNI Distributions<br />

Monte Carlo Analysis<br />

Obsolete Features<br />

It is possible to specify an interval of rejection for the NOR/UNI distributions. This means that<br />

Eldo will never draw random values within this interval. The bounds of this interval are<br />

specified with two additional arguments after the keyword bi. For example, one statement for a<br />

LOT or DEV variations will satisfy the following syntax:<br />

.PARAM PARAM_NAME=NOM_VALUE<br />

+ [LOT | DEV]=(<br />

+ UNI,MINUS_HALF_RANGE[%],PLUS_HALF_RANGE[%],<br />

+ bi, MINUS_DEAD_ZONE[%],PLUS_DEAD_ZONE[%])<br />

Two examples were simulated in Figure 11-23 in bottom plots.<br />

Weighted Uniform and Gaussian Distributions<br />

There is an additional argument to the UNIF and GAUSS macro-definitions. This argument is<br />

named MULT in the following syntax commands:<br />

Eldo® User's Manual, 15.3 551


Monte Carlo Analysis<br />

Obsolete Features<br />

.PARAM PARAM_NAME = UNIF|AUNIF(NOM_VALUE, RANGE_VALUE, MULT)<br />

.PARAM PARAM_NAME = GAUSS|AGAUSS(NOM_VALUE, STD_VALUE, SIGMA_COEF, MULT)<br />

The role of the MULT argument, which is an integer value greater than 1, is to eliminate the<br />

simulation of the sub-population that is “closed” to the median value of the parameter. The<br />

LIMIT distribution (also known as the Rademacher distribution) may be considered as the<br />

extreme case, where only the limits of the interval [-1, 1] are effectively simulated. By<br />

augmenting the multiplier argument, continuous approximations of the LIMIT distribution are<br />

generated.<br />

In Figure 11-24, four realizations are plotted of the random sample obtained by varying the<br />

multiplier of the AUNIF macro. For example, one can see that the median value 0 will not be<br />

simulated (or with a very small probability) when MULT=5.<br />

Figure 11-24. Four Random Samples when AUNIF(0,1,MULT) is Specified<br />

This kind of distributions is often described as bimodal distributions. The distributions have two<br />

modes (the most frequent values) which are closed to the extreme values of the original<br />

distribution. The phenomenon is much more visible in Figure 11-25.<br />

552<br />

Eldo® User's Manual, 15.3


Monte Carlo Analysis<br />

Obsolete Features<br />

Figure 11-25. Four Random Samples when AGAUSS (0,1,1,MULT) is Specified<br />

If we are interested in the extreme values of a dependent random variable Y = F(X), where X is a<br />

given random variable, then it is possible to simulate only the extreme cases of the input<br />

distribution. Be aware that the effectiveness of this approach is related to a strong assumption of<br />

monotonicity about the function F. For example, if this function F is monotonically increasing,<br />

it preserves the order of the real set, for all x and y such that x ≤ y one has F(x) ≤ F(y). Therefore<br />

the extreme realizations of X are mapped directly to the extreme realizations of F.<br />

Related Topics<br />

Specifying Statistical Parameters<br />

Eldo® User's Manual, 15.3 553


Monte Carlo Analysis<br />

Obsolete Features<br />

554<br />

Eldo® User's Manual, 15.3


Chapter 12<br />

Statistical Experimental Design and<br />

Analysis<br />

Statistical Experimental Design and Analysis focuses on the standard techniques of factor<br />

screening, location and dispersion analysis, and response surface methodologies in circuit<br />

design. An observable output (extracted measure in Eldo) depends on a set of parameters and<br />

you can then explore the effects (main effects and interactions) of parameters (factors) on the<br />

output using the design of experiment techniques.<br />

Introduction to Statistical Experimental Design and Analysis . . . . . . . . . . . . . . . . . . . . 555<br />

Factor Screening Experiments in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557<br />

DEX Example Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558<br />

Factorial Design Comparison with Worse Case Analysis . . . . . . . . . . . . . . . . . . . . . . . . . 559<br />

Statistical Modeling for Discrete Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560<br />

Designing a Screening Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562<br />

Reference Factors for the DEX Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562<br />

Defining the Levels of Factors for the DEX Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565<br />

Determining the List of Noise Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570<br />

Conducting a Screening Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573<br />

Choosing the Type of Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573<br />

Selecting the Number of Factors and the Design Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . 574<br />

Viewing the Experiment Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576<br />

Examples of Factor Screening Experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577<br />

Example of Experiment Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577<br />

Example of Conducting an Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579<br />

Example of Analysis Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581<br />

References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586<br />

Introduction to Statistical Experimental Design<br />

and Analysis<br />

The primary purpose of a factor screening experiment is to select or screen out the few<br />

important main effects from the many less important ones. By reducing the large number of<br />

circuit parameters involved, subsequent statistical design problems can be solved more<br />

efficiently and will require fewer runs. A screening experiment is often referred to as phase zero<br />

of a response surface study.<br />

Eldo® User's Manual, 15.3 555


Statistical Experimental Design and Analysis<br />

Introduction to Statistical Experimental Design and Analysis<br />

A factor is a circuit parameter that is studied in the experiment. To study the effect of a factor on<br />

one or several <strong>user</strong>-defined responses, two or more values of the factor are required. These<br />

values are referred to as levels or settings. A combination of factor levels is called a run and will<br />

be associated to a specific simulation run in Eldo. In an experiment, one or more variables (or<br />

factors) are deliberately changed so that the effect the changes have on one or more response<br />

variables can be observed.<br />

Factor screening experiments require two different types of circuit parameter:<br />

• Deterministic or designable parameters x, also referred to as control parameters.<br />

• Statistical or hard to control parameters s, also referred to as noise parameters.<br />

Integrated circuit designs feature both types of parameter. The transistor geometries, such as<br />

widths and lengths, are deterministic design parameters. They are in a different space to the<br />

transistor model parameters which are statistical parameters that reflect manufacturing<br />

fluctuations.<br />

This is different from discrete RLC circuits where the designable parameters and the statistical<br />

parameters are in the same space. For discrete RLC circuits, to screen out the important main<br />

effects you can safely investigate only the main effects associated with noise factors. See<br />

“Statistical Modeling for Discrete Circuits” on page 560 for more detail.<br />

Related Topics<br />

Factor Screening Experiments in Eldo<br />

Designing a Screening Experiment<br />

Conducting a Screening Experiment<br />

Viewing the Experiment Results<br />

Examples of Factor Screening Experiments<br />

556<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Factor Screening Experiments in Eldo<br />

Factor Screening Experiments in Eldo<br />

Eldo contains the basic tools for performing a factor screening experiment. Use the Eldo .DEX<br />

command to perform the factor screening.<br />

The DEX techniques incorporated in the Eldo command .DEX are efficient procedures ensuring<br />

the data obtained can be analyzed to yield valid and objective conclusions. This efficiency is<br />

founded on some key properties of orthogonal arrays, which offer a systematic way of testing.<br />

The benefits include: a uniform distributed coverage of the test domain; all pair-wise<br />

combinations of the test set are created; and you can arrive at complex combinations of all the<br />

variables.<br />

The procedures implemented in the DEX analysis should be qualified. The quantitative<br />

techniques used for factor screening are incomplete since they are numeric summaries. By<br />

reducing the data to a few numbers (filtering the data) you are omitting and screening out other,<br />

sometimes crucial, information.<br />

The .DEX command enables for two-level designs that have just “High” and “Low” settings for<br />

each factor. The most popular experimental designs are two-level designs. These are ideal for<br />

screening designs, because they are simple and economical and also give most of the<br />

information required to go to a multilevel response surface experiment if one is needed.<br />

Note<br />

In two-level experiments, only the linear effects can be studied. To detect a curvature effect<br />

three-level factors should be considered. For example, the factor “temperature” may affect<br />

the responses in a non-monotone way. Using only two temperature levels (“High” and “Low”)<br />

makes a strong assumption about the relationship between the responses and the temperature.<br />

Use the following Eldo commands for experimental design:<br />

• .PARAMDEX — Assigns values to parameters (factors) used in the design of<br />

experiments.<br />

• .DEX — Conducts a screening experiment. Factors are taken from the list of circuit<br />

parameters appearing on a .PARAMDEX statement.<br />

• viewdex — A service routine that is run on the .dex file to display the results.<br />

Tip<br />

For the syntax and detailed descriptions, see “.PARAMDEX” and “.DEX” in the<br />

Eldo Reference Manual.<br />

DEX Example Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558<br />

Factorial Design Comparison with Worse Case Analysis . . . . . . . . . . . . . . . . . . . . . . . . 559<br />

Statistical Modeling for Discrete Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560<br />

Eldo® User's Manual, 15.3 557


Statistical Experimental Design and Analysis<br />

DEX Example Files<br />

DEX Example Files<br />

Example circuit files are provided to illustrate using design of experiments with Eldo.<br />

Table 12-1 lists the example files that are available in your installed directory:<br />

$MGC_AMS_HOME/examples/dex/.<br />

Table 12-1. Example Files<br />

Example Filename Description<br />

Passive band pass filter bpass.cir Basic discrete RLC circuit<br />

Active band pass filter filter.cir Another discrete circuit<br />

CMOS delay circuit cmos_delay.cir Basic example with BSIM1 models<br />

CMOS ring oscillator cmos_ring.cir Another example with BSIM1 models<br />

8-bit CMOS ripple<br />

carry adder<br />

adder.cir Another example with BSIM1 models<br />

The following example is extracted from the sample netlist bpass.cir (available in the directory:<br />

$MGC_AMS_HOME/examples/dex/):<br />

* DETERMINISTIC PARAMETERS.PARAM<br />

+ LL1=1.824 CC1=78.7N LL2=427.2M CC2=988N<br />

* CIRCUIT<br />

LL1 N2 N1 'LL1 + D_LL1'<br />

CC1 N2 N3 'CC1 + D_CC1'<br />

LL2 N6 N5 'LL2 + D_LL2'<br />

CC2 N6 N7 'CC2 + D_CC2'<br />

* DEFINE PERFORMANCE TARGETS (EXTRACT SECTION)<br />

.EXTRACT AC LABEL=V210 YVAL(VDB(OUT),210)<br />

UBOUND=-45.36<br />

.EXTRACT AC LABEL=V240 YVAL(VDB(OUT),240)<br />

UBOUND=-45.36<br />

.EXTRACT AC LABEL=V360 YVAL(VDB(OUT),360) LBOUND=-10.96 UBOUND=-8.36<br />

.EXTRACT AC LABEL=V490 YVAL(VDB(OUT),490) LBOUND=-10.96 UBOUND=-8.36<br />

* DETERMINISTIC PARAMETERS<br />

* LEVELS FOR SCREENING EXPERIMENTS.PARAMDEX<br />

+ LL1 CTRL/REL=20% NOM=1.824<br />

+ CC1 CTRL/REL=20% NOM=78.7N<br />

+ LL2 CTRL/REL=20% NOM=427.2M<br />

+ CC2 CTRL/REL=20% NOM=988N<br />

* SCREENING EXPERIMENT: USING ORTHOGONAL ARRAYS BASED<br />

* ON HADAMARD MATRIX.DEX+ EXPERIMENT=SCREENING+ DESIGN=ORTHA_2_2N<br />

+ RESPONSE=V210,V240,V360,V490<br />

Related Topics<br />

Factorial Design Comparison with Worse Case Analysis<br />

558<br />

Eldo® User's Manual, 15.3


Statistical Modeling for Discrete Circuits<br />

Examples of Factor Screening Experiments<br />

Statistical Experimental Design and Analysis<br />

Factorial Design Comparison with Worse Case Analysis<br />

Factorial Design Comparison with Worse Case<br />

Analysis<br />

The traditional “one-factor-at-a-time” design method based on a single or double-sided<br />

sensitivity analysis does not conduct a systematic or comprehensive search over the<br />

experimental region.<br />

By comparison with the factorial design method implemented in the DEX procedures,<br />

traditional design methods have the following disadvantages:<br />

• Some interactions cannot be estimated.<br />

• Conclusions from the analysis are not general.<br />

• Optimal settings of factors can be missed.<br />

When investigating main effects, the following main effect model around the nominal point x 0<br />

is assumed:<br />

This model can be applied to the following cases:<br />

• Where interactions can be tentatively assumed to be zero.<br />

• For screening a large set of factors where some factors have large main effects on the<br />

output y.<br />

The traditional “one-factor-at-a-time” design method to estimate the coefficients α i is used in<br />

the sensitivity computations of the .WCASE command. Here, each of the variables x i are<br />

perturbed by ±Δx i about the nominal point x 0 , keeping all the others at their nominal values.<br />

The .WCASE command also provides the so-called worst case values of the response y(x)<br />

where x is replaced by the following ‘worst case points’:<br />

where the coordinates are all set to their extreme values: a low level of x low = (1− Δ) · x i and a<br />

high level of x high = (1+ Δ) · x i .<br />

Eldo® User's Manual, 15.3 559


Statistical Experimental Design and Analysis<br />

Statistical Modeling for Discrete Circuits<br />

These points, which are not necessarily the true worst case points, are systematically tested<br />

when the selected screening design uses about 2N runs (this is the default argument of the<br />

DESIGN argument of the .DEX command).<br />

Related Topics<br />

Factor Screening Experiments in Eldo<br />

Statistical Modeling for Discrete Circuits<br />

Statistical Modeling for Discrete Circuits<br />

When screening out the important main effects for discrete RLC circuits you can safely<br />

investigate only the main effects associated with the noise factors.<br />

Consider the following netlist (extracted from the example filter.cir available in the directory<br />

$MGC_AMS_HOME/examples/dex/):<br />

V1 1 0 DC 0 AC 1<br />

R1 1 2 ’R1 + D_R1’<br />

R3 2 0 ’R3 + D_R3’<br />

C2 2 INN ’C + D_C’<br />

C3 2 OUT ’C + D_C’<br />

R2 OUT INN ’R2 + D_R2’<br />

Y1 OPAMP1 0 INN OUT 0 PARAM: GAIN=’GAIN + D_GAIN’ P1=’P1 + D_P1’<br />

where the circuit parameters are defined as follows:<br />

* DETERMINISTIC PARAMETERS<br />

.PARAM R1 = 159K R2 = 3.18MEG R3 = 79.5<br />

+ C = 1U<br />

+ P1 = 10 GAIN = 10E6<br />

* NOISE PARAMETERS<br />

.PARAM D_R1 = AGAUSS( 0, 10.6K, 1)<br />

.PARAM D_R2 = AGAUSS( 0, 0.212MEG, 1)<br />

.PARAM D_R3 = AGAUSS( 0, 5.30, 1)<br />

.PARAM D_C = AGAUSS( 0, 0.067U, 1)<br />

.PARAM D_P1 = AGAUSS( 0, 0.667U, 1)<br />

.PARAM D_GAIN = AGAUSS( 0, 0.667E6, 1)<br />

For the resistors, the statistical model is expressed by transformations of the form R + D_R<br />

where R represents the nominal value and D_R is the element tolerance or the random<br />

variations associated with the control parameter R. These random variables have zero mean.<br />

This reflects an important property of discrete RLC circuits—that the controllable parameters x<br />

and the statistical variables s are in the same space. In other words, any circuit performance is a<br />

function of random expressions E(x i , s i ) = x i + s i .<br />

This property implies that a circuit performance y(x, s) = y(x + s) satisfies the following<br />

relation:<br />

560<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Statistical Modeling for Discrete Circuits<br />

The computation of the sensitivity with respect to the designable variables x will be equivalent<br />

to the computation of the sensitivity with respect to the tolerances s. Hence, to screen out the<br />

important effects you can safely investigate only the main effects associated to noise factors.<br />

Related Topics<br />

Factor Screening Experiments in Eldo<br />

Factorial Design Comparison with Worse Case Analysis<br />

Eldo® User's Manual, 15.3 561


Statistical Experimental Design and Analysis<br />

Designing a Screening Experiment<br />

Designing a Screening Experiment<br />

These sections describe how to specify the parameters (factors) that will be considered by the<br />

.DEX command when conducting the experiment by adding .PARAMDEX command<br />

statements to added to the netlist.<br />

The .PARAMDEX statements can either be prepared by manually editing the working netlist or,<br />

for noise parameters, the .DEX command has a FIND_FACTOR option which can be used to<br />

determine the list of noise parameters prior to the DEX analysis. This list is generated in an<br />

include file _paramdex.inc which contains the related .PARAMDEX statements.<br />

Preparation of the .PARAMDEX statements involves:<br />

• “Reference Factors for the DEX Analysis” on page 562<br />

• “Defining the Levels of Factors for the DEX Analysis” on page 565<br />

See also “Determining the List of Noise Parameters” on page 570 for more information about<br />

the FIND_FACTOR option.<br />

Note<br />

The .PARAMDEX statement also contains an optional argument [NOISE/ | CTRL/] which<br />

specifies the category of the factor (noise or control). Although Eldo automatically<br />

determines this category, for clarity in the netlist we recommend including this argument within<br />

all .PARAMDEX statements.<br />

Tip<br />

For more detail on .PARAMDEX statements see “.PARAMDEX” in the Eldo Reference<br />

Manual.<br />

See also “Example of Experiment Design” on page 577.<br />

Reference Factors for the DEX Analysis<br />

Selectors are used to identify circuit parameters (noise and control factors) within<br />

.PARAMDEX statements as reference factors.<br />

Tip<br />

See “.PARAMDEX” in the Eldo Reference Manual.<br />

Global Parameter Selector Specification<br />

The P() selector enables global parameters to be referenced.<br />

The syntax of the P() selector is:<br />

562<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Reference Factors for the DEX Analysis<br />

P(parameter_name)<br />

This is equivalent to:<br />

parameter_name<br />

Consider the situation:<br />

.PARAM param4_global=value<br />

The global parameter param4_global has no random variations. It is therefore a deterministic<br />

(control) parameter and can only be referenced with these equivalent statements:<br />

.PARAMDEX param4_global [CTRL/] ...<br />

.PARAMDEX P(param4_global) [CTRL/] ...<br />

Model Parameter Selector Specification<br />

The EM(.,.) and M(.,.) selectors enable random variables that are associated with model<br />

parameters to be referenced.<br />

The syntax of the M(.,.) selector is:<br />

M(model_name, model_parameter)<br />

This references the random variable that is associated with the model parameter<br />

model_parameter of the model model_name. Its distribution is specified in the definition of the<br />

parameter. It will always be associated with a parameter with LOT variations, since it refers<br />

globally to a model parameter.<br />

The syntax of the EM(.,.) selector is:<br />

EM(device_name, model_parameter)<br />

This references a random variable that is associated with the model parameter model_parameter<br />

of the device device_name. Its distribution is specified in the definition of the parameter. It will<br />

always be associated with a model parameter that is associated with a specific instance, hence it<br />

means that this parameter must have DEV or DEVX variations.<br />

Consider a model MOD1 with two parameters:<br />

* MODEL DEFINITION<br />

.MODEL MOD1 ...<br />

+ param1_model=value DEV=value param2_model=value LOT=value ...<br />

and a device named MA:<br />

MA ... MOD1 param1_inst=value ... param1_model=value param2_model=value<br />

...<br />

Eldo® User's Manual, 15.3 563


Statistical Experimental Design and Analysis<br />

Reference Factors for the DEX Analysis<br />

Assume that the model MOD1 has some instance parameters, named param1_inst, and so on.<br />

The .PARAMDEX statements for the model parameters param1_model and param2_model<br />

would take the form:<br />

.PARAMDEX<br />

+ EM(MA,param1_model) [NOISE/] ...<br />

+ M(MOD1,param2_model) [NOISE/] ...<br />

Tip<br />

For further details see “.PARAMDEX” in the Eldo Reference Manual.<br />

Related Topics<br />

Defining the Levels of Factors for the DEX Analysis<br />

Determining the List of Noise Parameters<br />

564<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Defining the Levels of Factors for the DEX Analysis<br />

Defining the Levels of Factors for the DEX Analysis<br />

The Eldo .PARAMDEX command statement is used to specify the levels of factors, including<br />

the normal and uniform distributions. The .PARAMDEX command is also used to specify<br />

levels of factors with respect to the standard deviation and half ranges of these distributions, and<br />

with respect to the nominal value for both noise and control factors.<br />

Note<br />

When writing levels for factors within .PARAMDEX statements, extreme values may give<br />

runs that are not feasible. These runs are simply ignored during post-analysis of the<br />

experiment.<br />

Tip<br />

See “.PARAMDEX” in the Eldo Reference Manual.<br />

This topic is divided into:<br />

Defining Levels for Noise Factors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565<br />

Defining Levels With Respect to the Nominal Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570<br />

Defining Levels for Noise Factors<br />

For noise factors, the .PARAMDEX command statement is directly related to the statistical data<br />

defined in the .PARAM statement.<br />

The levels information is extracted from the arguments of the .PARAM statement:<br />

.PARAM PARAMETER_NAME=EXPRESSION<br />

+ {LOT|DEV|DEVX}[/GAUSS|/UNIFORM] = RVALUE|RVALUE%<br />

The value EXPRESSION defines the nominal value x nom , or the mean value, for the normal and<br />

uniform distributions. The value RVALUE represents the standard deviation σ for the normal<br />

distribution and the half-range for the uniform distribution.<br />

Note<br />

In Eldo, the definition of the standard deviation σ for the uniform distribution is not correct<br />

from a statistical point of view. There is confusion between the standard deviation and the<br />

range of the distribution.<br />

For coherency, the DEX analysis uses the proper definition of this statistical value, with<br />

arguments SIG and RNG available for factors associated with uniform distributions.<br />

Eldo® User's Manual, 15.3 565


Statistical Experimental Design and Analysis<br />

Defining the Levels of Factors for the DEX Analysis<br />

Normal Distribution<br />

The normal (or Gaussian) distribution, is a bell shaped continuous distribution. The general<br />

formula for the probability density function of a normal distribution is:<br />

where the parameters , the mean μ, and the standard deviation σ > 0 are known.<br />

Note<br />

The macro GAUSS(NOM_VALUE, REL_VALUE, SIG_COEF) enables negative values<br />

for the standard deviation SIGMA which is computed as NOM_VALUE*REL_VALUE/<br />

SIG_COEF. The .DEX command will only consider the absolute values of these parameters,<br />

even if the nominal value NOM_VALUE is negative.<br />

Figure 12-1 depicts the common statistics relating to the Gaussian distribution.<br />

Figure 12-1. Percentage of Cases in Eight Portions of the Gaussian Distribution<br />

The range [−σ, σ] represents 34.13% + 34.13% = 68.26% of cases obtained after running the<br />

sample process in the Monte Carlo algorithm. The range [−3σ, 3σ] covers 2×(34.13% + 13.59%<br />

+ 2.14%) = 99.72% of cases.<br />

The high and low levels, defined as ±n·σ, are the worst case points of these ranges.<br />

Uniform Distributions<br />

For a continuous distribution, the uniform distribution defines equal probability over a given<br />

range. The general formula for the probability density function of the uniform distribution is:<br />

566<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Defining the Levels of Factors for the DEX Analysis<br />

for<br />

The common statistics for the mean μ uniform distribution are:<br />

The common statistics for the standard deviation σ uniform distribution are:<br />

The range of the distribution is the value U − L.<br />

For the definition:<br />

.PARAM PARAMETER_NAME=EXPRESSION {LOT|DEV|DEVX} /UNIFORM=RVALUE|RVALUE%<br />

.PARAM PARAMETER_NAME={AUNIF|UNIF}(EXPRESSION,RVALUE)<br />

the value RVALUE, shown as h in our formulas, represents half of the range (see Figure 12-2).<br />

Figure 12-2. Common Statistics for UNIF(x,h)<br />

The standard deviation σ in terms of the half range h is given by:<br />

Eldo® User's Manual, 15.3 567


Statistical Experimental Design and Analysis<br />

Defining the Levels of Factors for the DEX Analysis<br />

When h is specified as a percentage:<br />

Defining Levels as a Fraction of the Standard Deviation<br />

You can specify the levels as a fraction of the standard deviation σ defined on noise parameters<br />

that are associated with the normal or uniform distribution. The values of the low level xlow and<br />

high level x high are defined as ±n·σ.<br />

This situation is depicted in Figure 12-3, with factor levels x low and x high for parameter x.<br />

Figure 12-3. Factor Levels for a Circuit Parameter x<br />

The syntax for this is defined as:<br />

.PARAMDEX FACTOR_NAME [NOISE/] SIG=NSIGMA<br />

568<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Defining the Levels of Factors for the DEX Analysis<br />

Note<br />

This syntax assumes that a uniform or gaussian distribution has been defined on the circuit<br />

parameter.<br />

For example:<br />

.PARAM TP = AGAUSS( 35.0, 11.667, 1.0)<br />

.PARAMDEX TP NOISE/SIG=1.2<br />

Note<br />

It is possible to define levels outside of the range of a uniform distribution.<br />

If the NSIGMA value is greater than √3, we have x high ≥ U and x low ≤ L.<br />

Defining Levels as a Fraction of the Half Range of Uniform Distribution<br />

This option enables you to specify the levels as a fraction of the half range h that is defined on<br />

noise parameters which are associated with the uniform distribution. The values of the low level<br />

x low and high level x high are defined as ±n·h where h is the half range of the uniform distribution<br />

on the factor.<br />

The command syntax is:<br />

.PARAMDEX FACTOR_NAME [NOISE/] RNG=NRANGE<br />

For example:<br />

.PARAM VARL=0 LOT/UNIF=0.05U DEV/UNIF=0.1U<br />

.PARAMDEX VARL NOISE/RNG=0.5<br />

Note<br />

It is possible to define levels outside of the range of a uniform distribution.<br />

If the NSIGMA value is greater than 1.0, we have x high ≥ U and x low ≤ L.<br />

Tip<br />

See “.PARAMDEX” in the Eldo Reference Manual.<br />

Related Topics<br />

Defining the Levels of Factors for the DEX Analysis<br />

Eldo® User's Manual, 15.3 569


Statistical Experimental Design and Analysis<br />

Determining the List of Noise Parameters<br />

Defining Levels With Respect to the Nominal Value<br />

This option enables you to specify the levels for noise or control parameters with respect to the<br />

nominal value x nom . The low levels x low and high levels x high can be defined using the following<br />

syntax:<br />

* NOISE FACTORS<br />

.PARAMDEX FACTOR_NAME [NOISE/] ABS=DELTA<br />

.PARAMDEX FACTOR_NAME [NOISE/] REL=DELTA%<br />

* CONTROL FACTORS<br />

.PARAMDEX FACTOR_NAME [CTRL/] ABS=DELTA [NOM=RVALUE]<br />

.PARAMDEX FACTOR_NAME [CTRL/] REL=DELTA% [NOM=RVALUE]<br />

The ABS=DELTA argument is used to specify an absolute perturbation of the nominal value<br />

x nom giving a low level of x low = x nom − Δ and a high level of x high = x nom − Δ for each factor.<br />

The REL=DELTA% argument is used to specify a relative perturbation of the nominal value<br />

x nom giving a low level of x low = (1− Δ)·x nom and a high level of x high = (1+ Δ)·x nom for each<br />

factor.<br />

With control factors, you can also specify the nominal value x nom using the argument<br />

NOM=RVALUE. For example:<br />

.PARAMDEX<br />

+ WIN_GLOB CTRL/REL=10% NOM=40U<br />

Tip<br />

See “.PARAMDEX” in the Eldo Reference Manual.<br />

Related Topics<br />

Defining the Levels of Factors for the DEX Analysis<br />

Determining the List of Noise Parameters<br />

Determining the List of Noise Parameters<br />

This example shows how to use the FIND_FACTOR option in the .DEX command to determine<br />

the list of noise parameters prior to any DEX analysis. This list is then used to prepare the<br />

.PARAMDEX statements. Two output files are produced: a .dex file containing formatted data,<br />

and an include file, _paramdex.inc, containing the related .PARAMDEX commands.<br />

Consider the following netlist (from the example filter.cir available in the directory<br />

$MGC_AMS_HOME/examples/dex/):<br />

570<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Determining the List of Noise Parameters<br />

* CIRCUIT<br />

V1 1 0 DC 0 AC 1<br />

R1 1 2 ’R1 + D_R1’<br />

R3 2 0 ’R3 + D_R3’<br />

C2 2 INN ’C + D_C’<br />

C3 2 OUT ’C + D_C’<br />

R2 OUT INN ’R2 + D_R2’<br />

Y1 OPAMP1 0 INN OUT 0 PARAM: GAIN=’GAIN + D_GAIN’ P1=’P1 + D_P1’<br />

* DETERMINISTIC PARAMETERS.PARAM R1 = 159K R2 = 3.18MEG R3 = 79.5<br />

+ C = 1U<br />

+ P1 = 10 GAIN = 10E6<br />

* NOISE PARAMETERS<br />

.PARAM D_R1 = AGAUSS( 0, 10.6K, 1)<br />

.PARAM D_R2 = AGAUSS( 0, 0.212MEG, 1)<br />

.PARAM D_R3 = AGAUSS( 0, 5.30, 1)<br />

.PARAM D_C = AGAUSS( 0U, 0.067U, 1)<br />

.PARAM D_P1 = AGAUSS( 0, 0.667U, 1)<br />

.PARAM D_GAIN = AGAUSS( 0, 0.667E6, 1)<br />

Modify the netlist by adding the following .DEX command:<br />

.DEX<br />

+ EXPERIMENT=SCREENING_NOISE<br />

+ DESIGN=ORTHA_2_N<br />

+ RESPONSE=OPGAIN,OPFREQ,OPBW<br />

+ FIND_FACTOR<br />

By running Eldo on the modified netlist, a .dex file is generated containing the list of noise<br />

parameters as follows:<br />

List of candidates for the DEX analysis<br />

---------------------------------------<br />

Noise Factor(s) Dummy Distrib Nominal Dev/Range<br />

Name<br />

Value<br />

D_GAIN SIG=1 N1 Gaussian 0.0000e+00 6.6700e+05<br />

D_P1 SIG=1 N2 Gaussian 0.0000e+00 6.6700e-07<br />

D_C SIG=1 N3 Gaussian 0.0000e+00 6.7000e-08<br />

D_R3 SIG=1 N4 Gaussian 0.0000e+00 5.3000e+00<br />

D_R2 SIG=1 N5 Gaussian 0.0000e+00 2.1200e+05<br />

D_R1 SIG=1 N6 Gaussian 0.0000e+00 1.0600e+04<br />

And the following .PARAMDEX statement is generated in the file filter_paramdex.inc:<br />

.PARAMDEX<br />

+ D_GAIN NOISE/SIG=1.0<br />

+ D_P1 NOISE/SIG=1.0<br />

+ D_C NOISE/SIG=1.0<br />

+ D_R3 NOISE/SIG=1.0<br />

+ D_R2 NOISE/SIG=1.0<br />

+ D_R1 NOISE/SIG=1.0<br />

You can use this generated information to prepare the .PARAMDEX statements.<br />

Eldo® User's Manual, 15.3 571


Statistical Experimental Design and Analysis<br />

Determining the List of Noise Parameters<br />

See Also<br />

• “.DEX” in the Eldo Reference Manual<br />

• “.PARAMDEX” in the Eldo Reference Manual<br />

Related Topics<br />

Reference Factors for the DEX Analysis<br />

Defining the Levels of Factors for the DEX Analysis<br />

572<br />

Eldo® User's Manual, 15.3


Conducting a Screening Experiment<br />

Guidelines for using the .DEX command and its arguments.<br />

To use the .DEX command, you must provide the following:<br />

• A working netlist.<br />

Statistical Experimental Design and Analysis<br />

Conducting a Screening Experiment<br />

• The factors. In the netlist you must specify the parameters (factors) that will be<br />

considered by the .DEX command when conducting the experiment. Factors are<br />

specified by adding minor modifications to the working netlist, using the .PARAMDEX<br />

command. For more information see “Designing a Screening Experiment” on page 562<br />

and “Selecting the Number of Factors and the Design Matrix” on page 574.<br />

• A response function which defines the list of measures to be considered in the<br />

experiment. These measures are specified by the .EXTRACT and .MEAS commands in<br />

the netlist.<br />

• A type of experiment to be conducted. For more information see “Choosing the Type of<br />

Experiment” on page 573.<br />

• A design matrix which may either be an orthogonal array based on Hadamard matrices<br />

or a full factorial design. For more information see “Selecting the Number of Factors<br />

and the Design Matrix” on page 574.<br />

Tip<br />

For more information on the .DEX command see “.DEX” in the Eldo Reference Manual.<br />

Choosing the Type of Experiment<br />

This section describes the alternatives for the EXPERIMENT option in the .DEX command.<br />

The regression model used in the DEX analysis is:<br />

The y 0 , α’s and the β’s are a set of unknown coefficients.<br />

To estimate the values of these parameters, the DEX analysis collects data on the system under<br />

study. When no distinction can be made among the factors, the y 0 , α, β are estimated within the<br />

same experiment. For this kind of experiment use EXPERIMENT=SCREENING in the .DEX<br />

command.<br />

Eldo® User's Manual, 15.3 573


Statistical Experimental Design and Analysis<br />

Selecting the Number of Factors and the Design Matrix<br />

For integrated circuit design, where the designable and noise variables are defined in separate<br />

spaces, consider using a two-stage strategy. This will enable you to identify the critical noise<br />

factors and critical control factor separately. This is particularly useful when some noise factors,<br />

such as environmental noise factors, have large masking effects.<br />

The phase zero of the response surface study will then involve two steps:<br />

• Conduct a screening experiment for noise factors first by not considering the designable<br />

factors. Use EXPERIMENT=SCREENING_NOISE in the .DEX command. The DEX<br />

analysis runs the experiment using x = x 0 , where x 0 is the experiment center in the space<br />

of control variables. This will give the amplitude of the β’s.<br />

• Next conduct a screening experiment for control factors by not considering the noise<br />

factors. Use EXPERIMENT=SCREENING_CTRL in the .DEX command. The<br />

amplitude of the α’s are then analyzed. The DEX analysis runs the experiment using s =<br />

s 0 , where s 0 is the experiment center in the space of noise variables.<br />

Tip<br />

For further details see “.DEX” in the Eldo Reference Manual.<br />

Selecting the Number of Factors and the Design<br />

Matrix<br />

The .DEX command is compatible with the Multiple Run features. The maximum number of<br />

factors N max is 40,000. However, running very large experiments is not recommended. The<br />

range 7 to 150 is considered to be the ideal number of factors.<br />

Tip<br />

See the command description for “.MPRUN” in the Eldo Reference Manual.<br />

The design matrix used to run the experiment enables you to specify either an orthogonal array<br />

at two levels based on Hadamard matrices (DESIGN=ORTHA_2_N or<br />

DESIGN=ORTHA_2_2N) or a full factorial design (DESIGN=FULL_FACT). If N is the<br />

number of factors, the orthogonal arrays, which have an economical run size, will use about N<br />

runs or 2N runs. However, a full factorial design will use 2 N runs.<br />

Figure 12-4 depicts the geometrical differences between a full factorial design and an<br />

orthogonal array based on Hadamard matrices.<br />

574<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Selecting the Number of Factors and the Design Matrix<br />

Figure 12-4. Cuboidal Representation of Two 3-factors Designs<br />

The black bullets indicate that the corners are effectively chosen. The first design is obtained by<br />

setting the argument DESIGN=FULL_FACT and the second by DESIGN=ORTHA_2_N. The<br />

last design is a balanced subset of the full factorial design.<br />

Note<br />

With DEX analysis based on Hadamard matrices, the main effects are, in general, heavily<br />

confounded (or aliased) with two-factor interactions. As such it may be difficult to handle<br />

large numbers of aliased effects and interpret their significance. The main effect analysis may<br />

not explain the variation in <strong>user</strong>-defined response very well.<br />

See Also<br />

• “.DEX” in the Eldo Reference Manual<br />

• “.EXTRACT” in the Eldo Reference Manual<br />

• “.MEAS” in the Eldo Reference Manual<br />

• “.PARAMDEX” in the Eldo Reference Manual<br />

Related Topics<br />

Designing a Screening Experiment<br />

Viewing the Experiment Results<br />

Example of Conducting an Experiment<br />

Eldo® User's Manual, 15.3 575


Statistical Experimental Design and Analysis<br />

Viewing the Experiment Results<br />

Viewing the Experiment Results<br />

The .dex file contains the results of the experiment. It is a structured text file that is organized<br />

with sections and sub-sections, and enables the <strong>user</strong> to skip one or more sections at different<br />

levels of detail. To display the results run the service routine named viewdex on the .dex file in<br />

order.<br />

Syntax<br />

viewdex [-l d] -f file.dex<br />

Arguments<br />

• -l d<br />

Where d is the level of detail that <strong>user</strong>s wants to view. The range of levels is 1 to 3, level 1<br />

(default) gives the least amount of data while level 3 gives the most amount of data.<br />

Level 1:<br />

Only the results of the screening experiment are printed for multi and simple response<br />

problems. Default.<br />

Level 2:<br />

In the case of multi-response problems, the results of the screening experiments for<br />

each response are given separately.<br />

Level 3:<br />

The script gives the ordered and unordered data tables (in CSV format) and the design<br />

matrix.<br />

When an outer loop has been performed, the amount of data can be very large. In this case<br />

level 1 only reports simplified results in a table printed at the end of the .dex file.<br />

• -f<br />

Name of the .dex file to be formatted.<br />

See “Example of Analysis Results” on page 581 for an example of the contents of a .dex<br />

file.<br />

Related Topics<br />

Designing a Screening Experiment<br />

Conducting a Screening Experiment<br />

576<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Examples of Factor Screening Experiments<br />

Examples of Factor Screening Experiments<br />

This section provides some basic examples netlists which include the design and conducting of<br />

experiments, along with an example of the output that will be used for analysis.<br />

• “Example of Experiment Design” on page 577<br />

This netlist extract, taken from testcase cmos_delay.cir, shows the .PARAMDEX<br />

command specifying the parameters (factors) that will be considered when conducting<br />

the factor screening experiment.<br />

• “Example of Conducting an Experiment” on page 579<br />

This netlist extract, taken from testcase filter.cir, shows how to specify the .DEX<br />

command arguments for a factor screening experiment.<br />

• “Example of Analysis Results” on page 581<br />

This example presents the results of an example experiment, available in the .dex output<br />

file.<br />

Example of Experiment Design<br />

These examples are extracted from the testcase cmos_delay.cir (available in the directory:<br />

$MGC_AMS_HOME/examples/dex/). This circuit contains three groups of parameters:<br />

• The process parameters used in a Level 8 NMOS model, such as the Oxide Thickness<br />

TOX, NMOS Length and Width Reductions (DLN, DWN), and so on.<br />

• A second set of environmental noise parameters such as two supply voltages (VPERI,<br />

VBB) and the temperature TP.<br />

• The designable variables, the length and width of transistors.<br />

Specifying Process Parameters Selectors<br />

Suppose our approach is to assume that process disturbances affect devices within the same chip<br />

in the same way: only inter-die variations exist and intra-die variations are negligible. The set of<br />

process parameters is common to all NMOS and PMOS devices within the same chip. These<br />

statistical definitions can be translated as follows:<br />

.PARAM TOX = AGAUSS( 0.015, 0.0003, 1)<br />

+ DL = AGAUSS( 0.05, 0.0044, 1)<br />

+ DW = AGAUSS( 1.00, 0.044, 1)<br />

+ VFB = AGAUSS( -0.8632, 0.0186, 1)<br />

Then the associated .PARAMDEX statements could be defined as follows:<br />

Eldo® User's Manual, 15.3 577


Statistical Experimental Design and Analysis<br />

Example of Experiment Design<br />

.PARAMDEX<br />

+ DL NOISE/SIG=2.5<br />

+ DW NOISE/SIG=2.5<br />

+ TOX NOISE/SIG=2.5<br />

+ VFB NOISE/SIG=2.5<br />

Note that these statements are equivalent to the following:<br />

.PARAMDEX<br />

+ P(DL) NOISE/SIG=2.5<br />

+ P(DW) NOISE/SIG=2.5<br />

+ P(VFB) NOISE/SIG=2.5<br />

+ P(TOX) NOISE/SIG=2.5<br />

Specifying Model Parameter Selectors<br />

The following example illustrates the use of the constructs M(.,.) and EM(.,.) with the inter and<br />

intra variations. The use of M(.,) is not very useful in this case but we will assume that the<br />

statistical variations were stated as follows:<br />

.PARAM TOX=0.015<br />

.MCMOD NCH TOX LOT/GAUSS=0.0003<br />

.MCMOD PCH TOX LOT/GAUSS=0.0003<br />

There are two independent random variables TOX associated with the PMOS and NMOS<br />

transistor. Two PMOS, or respectively two NMOS, transistors are assumed to be perfectly<br />

tracking each other, but the PMOS and NMOS transistors have independent variations. This is a<br />

very hypothetical situation, since the Oxide Thickness should affect the PMOS and NMOS<br />

transistors in the same way. The associated .PARAMDEX command would be as follows:<br />

.PARAMDEX<br />

+ M(PCH,TOX) SIG=2.5<br />

+ M(NCH,TOX) SIG=2.5<br />

Suppose now we are interested in intra-die variations. The statistical variations can be defined<br />

as follows:<br />

.PARAM TOX=0.015<br />

.MCMOD NCH TOX DEV/GAUSS=0.0003<br />

.MCMOD PCH TOX DEV/GAUSS=0.0003<br />

It follows that the associated .PARAMDEX statements are:<br />

578<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Example of Conducting an Experiment<br />

.PARAMDEX<br />

+ EM(MOPA,TOX) SIG=2.5<br />

+ EM(MIPC,TOX) SIG=2.5<br />

+ EM(MIPA,TOX) SIG=2.5<br />

+ EM(MPN0E,TOX) SIG=2.5<br />

+ EM(MPN4A,TOX) SIG=2.5<br />

+ EM(MPN3A,TOX) SIG=2.5<br />

+ EM(MPN2A,TOX) SIG=2.5<br />

+ EM(MPN1A,TOX) SIG=2.5<br />

+ EM(MONA,TOX) SIG=2.5<br />

+ EM(MINC,TOX) SIG=2.5<br />

+ EM(MINA,TOX) SIG=2.5<br />

+ EM(MNN0D,TOX) SIG=2.5<br />

+ EM(MNN4C,TOX) SIG=2.5<br />

+ EM(MNN4B,TOX) SIG=2.5<br />

These statements define a list of independent factors, one for each device. Eldo acts as if private<br />

models were created for each device leaving the original model unchanged.<br />

Related Topics<br />

Example of Conducting an Experiment<br />

Example of Analysis Results<br />

Example of Conducting an Experiment<br />

This netlist is extracted from the testcase filter.cir (available in the directory:<br />

$MGC_AMS_HOME/examples/dex/). Consider the netlist:<br />

* CIRCUIT<br />

V1 1 0 DC 0 AC 1<br />

R1 1 2 'R1 + D_R1'<br />

R3 2 0 'R3 + D_R3'<br />

R2 OUT INN 'R2 + D_R2'<br />

C2 2 INN 'C + D_C'<br />

C3 2 OUT 'C + D_C'<br />

Y1 OPAMP1 0 INN OUT 0 PARAM: P1='P1 + D_P1'<br />

The designable control parameters are defined by:<br />

* DETERMINISTIC PARAMETERS<br />

.PARAM R1 = 159K R2 = 3.18MEG R3 = 79.5<br />

+ P1 = 10<br />

The statistical noise parameters that follow the normal distribution and are defined by:<br />

* NOISE PARAMETERS<br />

.PARAM D_R1 = AGAUSS( 0, 10.6K, 1)<br />

.PARAM D_R2 = AGAUSS( 0, 0.212MEG, 1)<br />

.PARAM D_R3 = AGAUSS( 0, 5.30, 1)<br />

.PARAM D_P1 = AGAUSS( 0, 0.667U, 1)<br />

The response factors are defined within the following statements:<br />

Eldo® User's Manual, 15.3 579


Statistical Experimental Design and Analysis<br />

Example of Conducting an Experiment<br />

* EXTRACT SECTION<br />

.EXTRACT AC LABEL=OPGAIN MAX(VDB(OUT)) LBOUND=20<br />

.EXTRACT AC LABEL=OPFREQ XMAX(VDB(OUT)) LBOUND=9.95 UBOUND=10.05<br />

The associated .PARAMDEX statements for noise and control parameters could be defined as<br />

below. Here the noise parameters, which follow the normal distribution, are defined as having<br />

levels with a standard deviation of 1.0 around the nominal value:<br />

* NOISE FACTORS.PARAMDEX<br />

+ D_R1 SIG=1.0<br />

+ D_R2 SIG=1.0<br />

+ D_R3 SIG=1.0<br />

+ D_P1 SIG=1.0<br />

The control parameters have levels with a relative perturbation of 20% around nominal values<br />

that are defined by the NOM= argument:<br />

* CONTROL FACTORS<br />

.PARAMDEX<br />

+ R1 CTRL/REL=20% NOM=159K<br />

+ R2 CTRL/REL=20% NOM=3.18MEG<br />

+ R3 CTRL/REL=20% NOM=79.5<br />

+ P1 CTRL/REL=20% NOM=10<br />

The following command conducts the experiment based on the performance responses defined<br />

in the earlier .EXTRACT statements:<br />

.DEX<br />

+ EXPERIMENT=SCREENING<br />

+ DESIGN=ORTHA_2_2N<br />

+ RESPONSE=OPGAIN,OPFREQ<br />

Related Topics<br />

Example of Experiment Design<br />

Example of Analysis Results<br />

580<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Example of Analysis Results<br />

Example of Analysis Results<br />

The results of an experiment are available in the .dex file.<br />

This output file contains:<br />

• Ordered Data Table—for each simulated response.<br />

• DEX Mean Table—which provides the ranked list of factors (not including the<br />

interactions). The ranking is from the most important factor to least important factor.<br />

• Formal Test of Significance—based on the Lenth’s method.<br />

• Multi-Responses—a summary of the screening experiments for each response in the<br />

case of multi-responses.<br />

• Unordered Data Table (CSV Table)—giving the simulation results.<br />

The results of an example analysis are presented below. The example used is cmos_ring.cir<br />

(available in the directory: $MGC_AMS_HOME/examples/dex/). Two response functions are<br />

defined which are the oscillation frequency 30 MHz < OSCFREQ < 50 MHz, and the AC<br />

switching power dissipation: ACPOWER < 5 MW.<br />

This analysis is performed with respect to 34 noise factors. Note that the .dex file gives the<br />

name and the properties of each factor. A dummy name is associated to each factor to get more<br />

compact tables. The control factors are designated by C1, C2, C3, ... and the noise factors by<br />

N1, N2, N3, and so on.<br />

Eldo® User's Manual, 15.3 581


Statistical Experimental Design and Analysis<br />

Example of Analysis Results<br />

Factors and Levels<br />

------------------<br />

==> Level values and coded factors<br />

==> Output in the following order:<br />

Distrib ... Statistical distribution of factor (Uniform or Gaussian)<br />

Coding ... Levels are coded with the Std. Deviation<br />

Mult ... Fraction of the Std. Deviation or the Range<br />

Dev/Range ... Std. Deviation or Range<br />

Mean ... Mean value of the statistical distribution<br />

Low/High ... Low and High settings (coded with -1 and +1)<br />

Noise Factor(s) Distrib Coding +/-Mult Dev/Range<br />

N1 - M(SBSIMP,X3U1) Gauss StdDev 1.0e+00 2.8900e-03 ...<br />

N2 - M(SBSIMP,X3MS) Gauss StdDev 1.0e+00 1.4400e+00 ...<br />

N3 - M(SBSIMP,X2MS) Gauss StdDev 1.0e+00 1.4700e+00 ...<br />

N4 - M(SBSIMP,MUS) Gauss StdDev 1.0e+00 2.2100e+01 ...<br />

N5 - M(SBSIMP,X2U1) Gauss StdDev 1.0e+00 2.1400e-03 ...<br />

N6 - M(SBSIMP,X2U0) Gauss StdDev 1.0e+00 7.7600e-04 ...<br />

N7 - M(SBSIMP,X3E) Gauss StdDev 1.0e+00 7.6500e-04 ...<br />

N8 - M(SBSIMP,X2E) Gauss StdDev 1.0e+00 8.2600e-04 ...<br />

N9 - M(SBSIMP,X2MZ) Gauss StdDev 1.0e+00 7.2600e-01 ...<br />

...<br />

N29 - M(SBSIMN,MUZ) Gauss StdDev 1.0e+00 4.6100e+01 ...<br />

N30 - M(SBSIMN,ETA) Gauss StdDev 1.0e+00 5.3200e-03 ...<br />

N31 - M(SBSIMN,K2) Gauss StdDev 1.0e+00 3.7800e-02 ...<br />

N32 - M(SBSIMN,K1) Gauss StdDev 1.0e+00 1.1900e-01 ...<br />

N33 - M(SBSIMN,PHI) Gauss StdDev 1.0e+00 1.0800e-02 ...<br />

N34 - M(SBSIMN,VFB) Gauss StdDev 1.0e+00 8.0600e-02 ...<br />

Ordered Data Table<br />

The result is an ordered data table for each simulated response. This data table answers the<br />

question: What is the best setting (based on the data) for each of the N factors? An ordered data<br />

table is formed by:<br />

• Vertical axis: the ordered (smallest to largest) raw response value for each run in the<br />

experiment.<br />

• Horizontal axis: the corresponding factor index with (at each run) a designation of the<br />

corresponding settings (−1 or +1) for each of the N factors.<br />

This analysis can be found in the .dex file as follows:<br />

582<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Example of Analysis Results<br />

Ordered Data Table<br />

------------------<br />

Response Y : OSCFREQ<br />

Mean Value<br />

: 4.8667e+07<br />

Value at nominal point : 4.8667e+07<br />

==> Vertical axis: the ordered raw response<br />

value for each of the 72 runs in the experiment.<br />

Horizontal Axis: the corresponding dummy variable index (1 to 34)<br />

with settings (-1 or +1) for each of the 34 factors.<br />

Run N1 N2 N3 N4 ... N29 N30 N31 N32 N33 N34 Response Y<br />

4 +1 -1 -1 -1 +1 -1 +1 +1 +1 -1 4.1226377e+07<br />

56 -1 +1 +1 -1 +1 -1 +1 +1 +1 +1 4.1369450e+07<br />

31 -1 -1 +1 -1 -1 -1 -1 +1 +1 +1 4.2162628e+07<br />

72 +1 +1 -1 -1 -1 -1 -1 -1 -1 +1 4.2545442e+07<br />

15 -1 -1 +1 -1 -1 +1 +1 -1 +1 +1 4.2712903e+07<br />

61 +1 +1 -1 +1 +1 +1 -1 +1 -1 +1 4.3002165e+07<br />

11 +1 -1 +1 -1 +1 +1 -1 +1 +1 -1 4.3099024e+07<br />

14 -1 +1 -1 +1 +1 +1 -1 +1 +1 -1 4.3174847e+07<br />

19 -1 -1 +1 -1 ... +1 -1 -1 -1 -1 +1 4.3490089e+07<br />

...<br />

DEX Mean Table<br />

A DEX mean table provides the ranked list of factors (not including the interactions). The<br />

ranking is from the most important factor to least important factor. This table is appropriate for<br />

analyzing data from an experiment, with respect to important factors, where the factors are at<br />

two levels. The table gives the mean value and the amplitude of the main effect coefficient (a<br />

line proportional to this magnitude is also printed).<br />

Note<br />

Note that the magnitude represents the absolute value of the coefficient α i .<br />

This qualitative analysis can be found in the .dex file as follows (the central part has been<br />

removed):<br />

Eldo® User's Manual, 15.3 583


Statistical Experimental Design and Analysis<br />

Example of Analysis Results<br />

DEX Mean Table<br />

--------------<br />

Response Y : OSCFREQ<br />

==> Horizontal axis: the mean response for a given setting (- or +)<br />

of a factor, for each of the 34 factors.<br />

Vertical axis: the 34 factors and the two settings (- and +)<br />

within each factor.<br />

Value at nominal point : 4.8667e+07<br />

Mean Value<br />

: 4.8667e+07<br />

Factor Name Sign of Magnitude<br />

effect (percent / exact / cumulative)<br />

N4 M(SBSIMP,MUS) [+] 13.0% 3.6552e+06 13.0%<br />

N27 M(SBSIMN,U1) [-] 12.8% 3.6022e+06 25.8%<br />

N21 M(SBSIMN,MUS) [+] 11.6% 3.2592e+06 37.3%<br />

N32 M(SBSIMN,K1) [-] 9.9% 2.7839e+06 47.2%<br />

N15 M(SBSIMP,K1) [-] 7.8% 2.1921e+06 55.0%<br />

N10 M(SBSIMP,U1) [-] 7.5% 2.1091e+06 62.5%<br />

N17 M(SBSIMP,VFB) [-] 6.0% 1.6999e+06 68.5%<br />

N34 M(SBSIMN,VFB) [-] 5.8% 1.6240e+06 74.3%<br />

N18 M(SBSIMN,X3U1) [+] 3.1% 8.7887e+05 77.4%<br />

N11 M(SBSIMP,U0) [-] 2.8% 7.8008e+05 80.2%<br />

...<br />

N23 M(SBSIMN,X2U0) [-] 0.0% 1.5643e+03 100.0%<br />

N9 M(SBSIMP,X2MZ) [-] 0.0% 7.2275e+02 100.0%<br />

The last column gives the following information: almost 70% of the response’s variability is<br />

explained with the variations of the eight factors M(SBSIM*,MUS), M(SBSIM*,U1),<br />

M(SBSIM*,K1) and M(SBSIM*,VFB) where the ‘*’ character means ‘P’ positive or ‘N” for<br />

negative.<br />

Formal Test of Significance<br />

A formal test of significance is based on the Lenth’s method. This method is usually employed<br />

for unreplicated experiments, where there are no replicated runs and no dispersion modeling is<br />

investigated.<br />

A detailed description of this algorithm can be found in [1].<br />

This quantitative analysis is given as follows:<br />

584<br />

Eldo® User's Manual, 15.3


Statistical Experimental Design and Analysis<br />

Example of Analysis Results<br />

==> Response Y[1] : OSCFREQ<br />

==> Initial standard error s0 : 5.8724e+05<br />

Pseudo standard deviation PSE : 3.6619e+05<br />

Signifiance level alpha : 0.05<br />

Critical value<br />

: 2.0525e+00<br />

Main Name Accept/Reject Value t(PSE) P-value<br />

Effect<br />

N4 M(SBSIMP,MUS) *** PASS *** 9.9816e+00 0.001<br />

N27 M(SBSIMN,U1) *** PASS *** 9.8368e+00 0.001<br />

N21 M(SBSIMN,MUS) *** PASS *** 8.9002e+00 0.001<br />

N32 M(SBSIMN,K1) *** PASS *** 7.6022e+00 0.001<br />

N15 M(SBSIMP,K1) *** PASS *** 5.9861e+00 0.001<br />

N10 M(SBSIMP,U1) *** PASS *** 5.7594e+00 0.001<br />

N17 M(SBSIMP,VFB) *** PASS *** 4.6422e+00 0.001<br />

N34 M(SBSIMN,VFB) *** PASS *** 4.4348e+00 0.002<br />

N18 M(SBSIMN,X3U1) *** PASS *** 2.4000e+00 0.03<br />

N11 M(SBSIMP,U0) *** PASS *** 2.1302e+00 0.05<br />

N28 M(SBSIMN,U0) 1.7737e+00 0.09<br />

N31 M(SBSIMN,K2) 1.7069e+00 0.1<br />

N29 M(SBSIMN,MUZ) 1.5284e+00 0.2<br />

N1 M(SBSIMP,X3U1) 1.5215e+00 0.2<br />

N12 M(SBSIMP,MUZ) 1.4868e+00 0.2<br />

N16 M(SBSIMP,PHI) 1.3491e+00 0.2<br />

...<br />

Non-expert <strong>user</strong>s should only consider the central column Accept/Reject. Based on our<br />

experience, the Lenth’s method is not very restrictive. Inactive factors can pass the test. We<br />

suggest that misidentifying an inert factor as active should be less important than missing an<br />

important and active factor.<br />

Multi-Responses<br />

In the case of multi-response problems, a summary of the screening experiments is performed<br />

for each response.<br />

Eldo® User's Manual, 15.3 585


Statistical Experimental Design and Analysis<br />

References<br />

Active effect(s) for 2 response(s) :<br />

N4 - M(SBSIMP,MUS) Rank = 33 Response(s) : OSCFREQ ACPOWER<br />

N27 - M(SBSIMN,U1) Rank = 32 Response(s) : OSCFREQ ACPOWER<br />

N21 - M(SBSIMN,MUS) Rank = 31 Response(s) : OSCFREQ ACPOWER<br />

N32 - M(SBSIMN,K1) Rank = 30 Response(s) : OSCFREQ ACPOWER<br />

N15 - M(SBSIMP,K1) Rank = 29 Response(s) : OSCFREQ ACPOWER<br />

N10 - M(SBSIMP,U1) Rank = 28 Response(s) : OSCFREQ ACPOWER<br />

N17 - M(SBSIMP,VFB) Rank = 27 Response(s) : OSCFREQ ACPOWER<br />

N34 - M(SBSIMN,VFB) Rank = 26 Response(s) : OSCFREQ ACPOWER<br />

N18 - M(SBSIMN,X3U1) Rank = 25 Response(s) : OSCFREQ ACPOWER<br />

N11 - M(SBSIMP,U0) Rank = 24 Response(s) : OSCFREQ ACPOWER<br />

Active effect(s) for 1 response(s) :None<br />

Unimportant effect(s) detected for all responses:<br />

N9 - M(SBSIMP,X2MZ)<br />

N33 - M(SBSIMN,PHI)<br />

N12 - M(SBSIMP,MUZ)<br />

N13 - M(SBSIMP,ETA)<br />

N8 - M(SBSIMP,X2E)<br />

N3 - M(SBSIMP,X2MS)<br />

...<br />

This global analysis based on the Lenth’s method clearly identifies the eight factors<br />

M(SBSIM*,MUS), M(SBSIM*,U1), M(SBSIM*,K1), M(SBSIM*,VFB), and the additional<br />

M(SBSIMN,X3U1), M(SBSIMP,U0) as active factors.<br />

Unordered Data Table (CSV Table)<br />

An unordered data table gives the simulation results. These results are stored in a CSV format<br />

(Comma Separated Values) table. CSV is a delimited data format with fields/columns separated<br />

by the comma character and records/rows separated by new lines.<br />

Related Topics<br />

Example of Experiment Design<br />

Example of Conducting an Experiment<br />

References<br />

Articles referenced in this chapter:<br />

1. C. F. Jeff Wu, Michael Hamada. Experiments: Planning, Analysis, and Parameter<br />

Design Optimization. John Wiley & Sons, 2000.<br />

2. Hedayat, A. and Wallis W.D. Hadamard Matrices and Their Applications. Annals of<br />

Statistics, Vol. 6, No. 6 (Nov., 1978), pp. 1184-1238.<br />

586<br />

Eldo® User's Manual, 15.3


Chapter 13<br />

Optimization<br />

The purpose of optimization is to attain a specified electrical performance for a circuit (for<br />

example a desired frequency response for a filter circuit) by adjusting component parameters of<br />

the circuit (such as resistor or capacitor values, the current gain (β) value of a transistor, widths<br />

and lengths of a MOSFET) to meet this desired performance.<br />

Optimization can be applied to:<br />

• Circuit parameters.<br />

• Model parameters.<br />

• Element parameters.<br />

• Device lengths, widths, areas, and peripheries.<br />

Optimization in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589<br />

Optimization Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589<br />

Optimization Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591<br />

Eldo Optimization Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592<br />

Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594<br />

Discretized Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594<br />

Specifying Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596<br />

Specifying Tracking with Design Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597<br />

Scaling Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599<br />

Design Objectives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603<br />

Specifying Design Objectives Using .EXTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604<br />

Specifying Design Objectives Using .OBJECTIVE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608<br />

Types of Design Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610<br />

Design Objectives for Multi-Point Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618<br />

Scaling Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621<br />

Optimization Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622<br />

Eldo Optimizer SQP Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622<br />

Eldo Optimizer/Search Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626<br />

Conducting an Eldo Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629<br />

Global and Local Optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629<br />

Continuous and Discrete Optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630<br />

Smooth and Non-Smooth Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631<br />

Multiple-Run Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632<br />

Optimization of Sweep Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633<br />

Post-Analysis of Optimization Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639<br />

Eldo® User's Manual, 15.3 587


Optimization<br />

Output from the Optimization Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639<br />

Explicitly Declaring Results For Graphical Viewing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641<br />

Viewing the ASCII Output File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642<br />

ASCII Optimization File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643<br />

Monitoring Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653<br />

Final Diagnostic Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656<br />

Normal and Elastic Modes of Termination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659<br />

Examples of Circuit Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664<br />

Designing a Low Noise Amplifier (LNA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664<br />

Fourband Filter Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671<br />

MOS Characterization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675<br />

Robust Optimization Using Corners. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677<br />

Setup Time Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681<br />

References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682<br />

588<br />

Eldo® User's Manual, 15.3


Optimization<br />

Optimization in Eldo<br />

Optimization in Eldo<br />

Eldo contains a general-purpose electrical circuit optimization tool that simultaneously<br />

improves AC, DC, Transient domain, Steady-State, and Modulated Steady-State analyses.<br />

With each run of the optimizer, the adjustable component parameters of the circuit (the design<br />

variables, see “Design Variables” on page 594) are modified in an attempt to reach desired<br />

performance (the design objectives, see “Design Objectives” on page 603). The parameters<br />

relating to the specified electrical performance are extracted and measured (the extracted<br />

measures) to verify whether the desired performance has been met.<br />

The design variables must conform to manufacturing limits, process limits, or discrete device<br />

values (known as constraints). For example, they must be non-negative, or must not violate<br />

upper boundaries. Restrictions and/or inter-relations can also be specified, for example, how<br />

components physically interact with each other to produce non-linear relations.<br />

The process of identifying the design objectives, design variables, and constraints for a specific<br />

problem is known as modeling. The construction of an appropriate model is the first step in the<br />

optimization process. If the model is too simplistic, it will not generate useful insights into the<br />

practical problems. If too complex, it may become difficult to solve.<br />

The optimizer output shows if the target performance (design objectives) has been reached, and<br />

whether it might be possible to improve on the current solution. It also details the values of the<br />

design variables, extracted measures, and constraints for each run.<br />

Optimization Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589<br />

Optimization Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591<br />

Eldo Optimization Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592<br />

Optimization Commands<br />

The definition of the design variables, the design objectives and the constraints, along with the<br />

request for optimization, are all specified in the netlist file using simple extensions of the Eldo<br />

commands. The links open the Simulator Commands chapter in the Eldo Reference Manual.<br />

The .PARAMOPT command specifies the design variables and the constraints on them. The<br />

syntax is:<br />

.PARAMOPT VARIABLE_NAME=(<br />

+ [INIT_VALUE,]<br />

+ {LOWER_BOUND | LOWER_PERCENT% },<br />

+ {UPPER_BOUND | UPPER_PERCENT% }<br />

+ [, INCREMENT])<br />

In the following example the .PARAMOPT command is used to specify the optimization<br />

variables, the length l and the width w of a MOS transistor:<br />

Eldo® User's Manual, 15.3 589


Optimization<br />

Optimization Commands<br />

.PARAMOPT<br />

+ L=(10U, 2U, 100U)<br />

+ W=(60U, 2U, 200U)<br />

This statement defines an initial length of 10μm and an initial width of 60μm. The length is<br />

allowed to vary between 2μm and 100μm and the width can vary between 2μm and 200μm.<br />

The .EXTRACT and .MEAS commands can be used to specify design objectives where they are<br />

represented by a single number (scalar version) or represented by a vector of measures. These<br />

are regular .EXTRACT and .MEAS command statements with additional optimization<br />

parameters. The syntax for the .EXTRACT command is:<br />

.EXTRACT<br />

+ [EXTRACT_INFO] [LABEL=NAME] [FILE=FNAME]<br />

+ [VECT] [CATVECT] $MACRO|FUNCTION<br />

+ [OPTIMIZER_INFO]<br />

The .MEAS command (the HSPICE-compatible equivalent of .EXTRACT) shares all of the<br />

same syntax and parameters.<br />

The .OBJECTIVE command can also be used to specify the design objectives. It is dedicated to<br />

optimization and can be used for more complex objectives. The syntax is:<br />

.OBJECTIVE<br />

+ EXTRACT_INFO [LABEL=NAME]<br />

+ {$MACRO|FUNCTION}<br />

+ OBJECTIVE_INFO<br />

+ [SCALING_INFO]<br />

+ [MONITOR_INFO]<br />

+ [PRINT_INFO]<br />

In the following example the design objective is specified using an .OBJECTIVE command. It<br />

shows the optimization of the phase margin for an operational amplifier in closed-loop<br />

configuration:<br />

.OBJECTIVE AC<br />

+ LABEL=phasemarg(XYCOND(VP(out),VDB(out)


Optimization<br />

Optimization Options<br />

.OPTIMIZE<br />

+ [METHOD=DICHOTOMY|SECANT|PASSFAIL|SEARCH]<br />

+ [QUALIFIER=VALUE{, QUALIFIER=VALUE}]<br />

+ [PARAM=LIST_OF_VARIABLES|*]<br />

+ [RESULTS=LIST_OF_MEASURES|*]<br />

+ [OUTER=LIST_OF_PARAMETERS]<br />

Once the design variables and the design objectives have been defined, the .OPTIMIZE<br />

command is added to the netlist file to request the optimization.<br />

After simulating the netlist, run the viewotm command line utility on the optimization output<br />

(.otm file) to display the optimization results. The syntax is:<br />

viewotm [-l 1|2|3] -f file.otm<br />

For further details, see “Viewing the ASCII Output File” on page 642.<br />

See Also<br />

• .EXTRACT in the Eldo Reference Manual<br />

• .OBJECTIVE in the Eldo Reference Manual<br />

• .OPTIMIZE in the Eldo Reference Manual<br />

• .PARAMOPT in the Eldo Reference Manual<br />

Related Topics<br />

Optimization Options<br />

Eldo Optimization Methods<br />

Design Variables<br />

Design Objectives<br />

Optimization Options<br />

The following Eldo options can be specified with the .OPTION command to modify execution<br />

behavior for optimization. The links open the Simulator Options chapter in the Eldo Reference<br />

Manual.<br />

• .OPTION OPSELDO_ABSTRACT generates a summary table of simulations<br />

containing parameter and extract values for each run.<br />

• .OPTION OPSELDO_ALTER forces Eldo to perform optimization on all .ALTER<br />

sections.<br />

• .OPTION OPSELDO_DETAIL specifies the level of detail stored in the generated files.<br />

• .OPTION OPSELDO_NETLIST generates a modified netlist containing the optimized<br />

variable parameter values.<br />

Eldo® User's Manual, 15.3 591


Optimization<br />

Eldo Optimization Methods<br />

• .OPTION OPSELDO_OUTER specifies a reverse behavior of optimization and sweep<br />

simulations.<br />

• .OPTION OPSELDO_OUTPUT specifies the format for optimization results using the<br />

Dichotomy, Secant, and Passfail methods.<br />

• .OPTION PARAMOPT_NOINITIAL enables the .PARAMOPT command to be<br />

specified without an initial value, which is instead taken from the netlist. For example, if<br />

the capacitors CT, CLC and CPASS are specified in the netlist:<br />

.PARAM CT=0.02U CLC=0.001U CPASS=0.3U<br />

with the associated .PARAMOPT statement:<br />

.PARAMOPT<br />

+ CT = (0.001U, 0.05U)<br />

+ CLC = (0.001U, 0.005U)<br />

+ CPASS = ( 0.1U, 1.0U)<br />

.OPTION PARAMOPT_NOINITIAL<br />

The option PARAMOPT_NOINITIAL specifies that the parameter INITIAL_VALUE<br />

is omitted from the .PARAMOPT command and should be taken from the netlist<br />

instead.<br />

Related Topics<br />

Optimization Commands<br />

Eldo Optimization Methods<br />

Design Variables<br />

Design Objectives<br />

Inner and Outer Sweep Parameters<br />

Eldo Optimization Methods<br />

Sometimes you need to be more precise about the underlying method or algorithm used during<br />

the optimization.<br />

The terminology in Table 13-1 enables you to specify the underlying method or algorithm.<br />

Table 13-1. Eldo Optimization Methods<br />

Name Algorithm/Method Terminology<br />

Eldo optimizer/SQP SQP method .OPTIMIZE<br />

Eldo optimizer/Search Dichotomy and inverse<br />

quadratic interpolation<br />

.OPTIMIZE METHOD=SEARCH<br />

592<br />

Eldo® User's Manual, 15.3


Table 13-1. Eldo Optimization Methods (cont.)<br />

Name Algorithm/Method Terminology<br />

Optimization<br />

Eldo Optimization Methods<br />

Eldo optimizer/Passfail Pass or fail technique .OPTIMIZE<br />

METHOD=PASSFAIL<br />

Eldo optimizer/Dichotomy<br />

This chapter focuses primarily on the Eldo optimizer SQP algorithm, and also covers the Eldo<br />

optimizer/Search algorithm.<br />

The other group of methods (Dichotomy, Secant, and Passfail) represent a specific class of<br />

algorithms categorized as Derivative Free Optimization (DFO) algorithms. They enable<br />

optimization in the restricted case of one-dimensional problems.<br />

See Also<br />

• Eldo Optimizer/Dichotomy/Secant/PassFail Parameters in the Eldo Reference Manual<br />

Related Topics<br />

Optimization Commands<br />

Optimization Options<br />

Design Variables<br />

Design Objectives<br />

Eldo Optimizer SQP Algorithm<br />

Eldo Optimizer/Search Algorithm<br />

Dichotomy (or bisection)<br />

algorithm<br />

.OPTIMIZE<br />

METHOD=DICHOTOMY<br />

Eldo optimizer/Secant Hybrid Dichotomy/Secant .OPTIMIZE METHOD=SECANT<br />

Eldo® User's Manual, 15.3 593


Optimization<br />

Design Variables<br />

Design Variables<br />

Design variables represent the vector of the variables x that will be tuned during the<br />

optimization. They are specified through the .PARAMOPT command.<br />

The Eldo simulator is regarded as a black box that provides a vector of extracted measures F(x)<br />

and derivatives F’(x) given the set of design variables x, as shown in Figure 13-1.<br />

Figure 13-1. Simulator as a Black Box<br />

This topic describes design variables in the context of the Eldo simulator, then details how to<br />

specify them.<br />

Discretized Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594<br />

Specifying Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596<br />

Specifying Tracking with Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597<br />

Scaling Design Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599<br />

Discretized Design Variables<br />

This topic explains how the optimizer handles design variables that are restricted to being<br />

members of a finite set of values.<br />

Figure 13-2 illustrates such a situation.<br />

594<br />

Eldo® User's Manual, 15.3


Figure 13-2. Discretization of Design Variables<br />

Optimization<br />

Discretized Design Variables<br />

The continuous box represents the feasible domain specified by the upper and lower bounds,<br />

and the black bullets are the feasible points where the final parameters are allowed to lie.<br />

The Eldo optimizer initially ignores discretization requirements, solving the optimization<br />

problem with real variables. All the design variables are then rounded to the nearest point onto<br />

the grid at the end of optimization.<br />

Note<br />

This strategy is not guaranteed to give solutions that are close to optimal. See “Solving<br />

Problems with Pseudodiscrete Variables” on page 668 for a detailed example.<br />

When the lower bound is a finite number, the set of discretized points are as follows:<br />

{x l (i) , x l (i) + δ i , x l (i) + 2δ i , …}<br />

Where δ i > 0 is the given increment.<br />

When the lower bound is infinite (x l (i) = ∞), the grid is started from the upper bound, if it is<br />

finite. The set of discretized points is then:<br />

{x u (i) , x u (i) + δ i , x u (i) + 2δ i , …}<br />

When a design variable is unbounded (x l (i) = −∞ and x u (i) = ∞), discretization is not considered.<br />

Related Topics<br />

Optimization in Eldo<br />

Design Objectives<br />

Optimization Methods<br />

Conducting an Eldo Optimization<br />

Eldo® User's Manual, 15.3 595


Optimization<br />

Specifying Design Variables<br />

Specifying Design Variables<br />

This topic uses examples to explain how to use the .PARAMOPT statement to specify design<br />

variables. Design variables can be different types of circuit parameters and can take the<br />

following forms:<br />

parameter_name<br />

P(parameter_name)<br />

P(subckt_name, subckt_parameter)<br />

E(device_name, device_parameter)<br />

M(model_name, model_parameter)<br />

EM(device_name, model_parameter)<br />

In our first example, the length and width of a MOS transistor are specified by:<br />

.PARAMOPT<br />

+ L=(10U, 2U, 100U)<br />

+ W=(60U, 2U, 200U)<br />

This .PARAMOPT statement defines an initial length of 10μm and a initial width of 60μm. The<br />

length is allowed to vary between 2μm and 100μm and the width can to take values between<br />

2μm and 200μm.<br />

Suppose an optimization is required on the following circuit:<br />

.MODEL NMOD1.1 NMOS LEVEL=53<br />

+ LMIN=0.1U LMAX=0.2U<br />

+ WMIN=1U WMAX=100U<br />

+ VTH0=0.2<br />

.MODEL NMOD1.2 NMOS LEVEL=53<br />

+ LMIN=0.2U LMAX=0.3U<br />

+ WMIN=1U WMAX=100U<br />

+ VTH0=0.3<br />

.MODEL NMOD1.3 NMOS LEVEL=53<br />

+ LMIN=0.3U LMAX=1U<br />

+ WMIN=1U WMAX=100U<br />

+ VTH0=0.4<br />

VD D 0 DC 1.5<br />

VS S 0 DC 0<br />

VB B 0 DC 0<br />

VG G 0 DC 3<br />

RD1 D D1 1<br />

RD2 D D2 1<br />

M1 D2 G S B NMOD1 W=10U L=0.25U<br />

M2 D1 G S B NMOD1 W=10U L=0.35U<br />

Adding the following commands adjusts the length of M2:<br />

.PARAMOPT E(M2,L)=(0.35U, 0.1U, 1U)<br />

596<br />

Eldo® User's Manual, 15.3


Optimization<br />

Specifying Tracking with Design Variables<br />

The length of M1 and M2 is adjusted with:<br />

.PARAMOPT E(M*,L)=(*, 0.1U, 1U)<br />

The initial values specified on the instances are kept unchanged.<br />

The following command adjusts lengths of M1 and M2, the initial values are both set to<br />

0.35μm.<br />

.PARAMOPT E(M*,L)=(0.35U, 0.1U, 1U)<br />

The following sequence of examples affect model parameter VTH0:<br />

.PARAMOPT EM(M2,VTH0)=(0.3, 0.1, 1)<br />

Adjusts the parameter VTH0 of the model used by device M2. For this type of parameter the<br />

initial value is ignored.<br />

Using wildcards, the parameter VTH0 can be changed for both devices M1 and M2. This is<br />

achieved with:<br />

.PARAMOPT EM(M*,VTH0)=(*, 0.1, 1)<br />

The commands:<br />

and:<br />

.PARAMOPT M(NMOD1.3,VTH0)=(0.3, 0.1, 1)<br />

.PARAMOPT M(NMOD1.*,VTH0)=(0.3, 0.1, 1)<br />

change the parameter VTH0 of the model NMOD1.3 and all models NMOD1.* respectively.<br />

For this type of parameter the initial value is ignored.<br />

See Also<br />

• .PARAMOPT in the Eldo Reference Manual<br />

Related Topics<br />

Discretized Design Variables<br />

Specifying Tracking with Design Variables<br />

Scaling Design Variables<br />

Specifying Tracking with Design Variables<br />

Design variables can track each other during the optimization process. Tracking is specified<br />

through the command:<br />

Eldo® User's Manual, 15.3 597


Optimization<br />

Specifying Tracking with Design Variables<br />

.CORREL EXPR ELEMENT={EXPRESSION}<br />

Where ELEMENT can take the form of:<br />

parameter_name<br />

P(parameter_name)<br />

P(subckt_name, subckt_parameter)<br />

E(device_name, device_parameter)<br />

M(model_name, model_parameter)<br />

EM(device_name, model_parameter)<br />

The character string EXPRESSION can contain references to E(), EM() and M(). These<br />

quantities must be defined in the .PARAMOPT command.<br />

Note<br />

The ELEMENT should not be set as a design variable using the .PARAMOPT command.<br />

Doing so would disable the .CORREL EXPR expression.<br />

In the following case the .CORREL EXPR expression is disabled because P2 has been set as a<br />

design variable with the .PARAMOPT command:<br />

R1 1 0 P1<br />

R2 2 0 P2<br />

.PARAMOPT<br />

+ P1=(1K, 1K, 100K)<br />

+ P2=(5K, 5K, 500K) ! Incorrect<br />

.CORREL EXPR P2=’1.2*P1’<br />

In the following case P2 will not be affected by P1, but will track the value of the resistor R1:<br />

R1 1 0 P1<br />

R2 2 0 P2<br />

.PARAMOPT P1=(1K, 1K, 100K)<br />

.CORREL EXPR P2=E(R1,R)<br />

The .CORREL EXPR command enables you to avoid having to edit files when an optimization<br />

is performed on a non-parametric netlist. For example:<br />

598<br />

Eldo® User's Manual, 15.3


Optimization<br />

Scaling Design Variables<br />

* LCR Parallel Network<br />

VIN 1 0 AC 10<br />

R2 1 2 50<br />

R3 2 3 50K<br />

R5 3 0 50<br />

L1 2 3 100U<br />

C4 2 3 1N<br />

VIN2 a 0 AC 10<br />

RA A B 50<br />

RB B C 50K<br />

RC C 0 50<br />

LA B C 100U<br />

CA B C 1N<br />

.PARAMOPT E(C4,C)=(1N,1N,20N)<br />

.CORREL EXPR E(CA,C)=’1.2* E(C4,C)’<br />

Note<br />

The meaning of .CORREL EXPR is completely different to .CORREL in a Monte Carlo<br />

analysis.<br />

See Also<br />

• .CORREL EXPR in the Eldo Reference Manual<br />

• .PARAMOPT in the Eldo Reference Manual<br />

Related Topics<br />

Discretized Design Variables<br />

Specifying Design Variables<br />

Scaling Design Variables<br />

Scaling Design Variables<br />

This topic considers the effect of widely disparate variable scales on the algorithms and how to<br />

deal with it. For example, you may have a minimization problem in which the first design<br />

variable x (1) is in the range [10 8 , 10 9 ] Hz and the second x (2) in the range [10 −7 , 10 −6 ] seconds.<br />

These ranges are referred to as the scales of the respective variables.<br />

Scaling will affect algorithms when calculating the difference between iterates (the successive<br />

values of design variables taken during optimization). In the above example the second variable<br />

(time) is virtually ignored in any calculation.<br />

The Eldo optimizer SQP method rescales the variables used in the optimization - that is,<br />

changes their units. For example, if the units of x (1) are changed to gigahertz (GHz) and the<br />

units of x (2) are changed to microseconds (μs), then both variables have the range [0.1, 1] and<br />

Eldo® User's Manual, 15.3 599


Optimization<br />

Scaling Design Variables<br />

the scaling problem in computing the differences is eliminated. This corresponds to changing<br />

the design variable to:<br />

where D is a diagonal matrix of scaling.<br />

The Eldo optimizer SQP method uses an affine scaling transformation based on the values of<br />

the upper and lower bounds. If the variable x satisfies the relationship l ≤ x ≤ u, two numbers<br />

can be introduced:<br />

that define the transformation:<br />

With this formula the transformed variable has a range of [-1, 1]. The bounds that correspond to<br />

the change in units must be set on the variable x. The algorithms then operate as if they are<br />

working in the transformed variable space.<br />

When the variables are unbounded below or above, a similar transformation is used by utilizing<br />

the nominal value x 0 . For example, if l = −∞, the transformation is defined as:<br />

When x 0 = u:<br />

A similar transformation is used when u = ∞.<br />

600<br />

Eldo® User's Manual, 15.3


Optimization<br />

Scaling Design Variables<br />

The result of this scaling procedure is described in the output file .otm, in the section headed<br />

Section 2 - Scaling Transformation For Variables. For more information, refer to “Section 2 -<br />

Scaling Transformation For Variables” on page 644.<br />

This scaling strategy is not always appropriate and there are cases that need an alternative<br />

approach. Consider the following example:<br />

* Circuit Statements<br />

.PARAM LOGL={LOG10(150U)}<br />

.PARAM LOGR={LOG10(10)}<br />

.PARAM LOGC={LOG10(10U)}<br />

V1 1 0 AC 1<br />

L1 1 2 5U<br />

L2 2 3 150U<br />

C1 3 0 33U<br />

LA 2 2A {10^LOGL}<br />

CA 2A 2B {10^LOGC}<br />

RA 2B 3 {10^LOGR}<br />

.AC DEC 500 1E2 1E5<br />

* Optimization Commands<br />

.OPTIMIZE<br />

.PARAM LNOM={LOG10(150U)} LMIN={LOG10(150U)} LMAX={LOG10(1)}<br />

.PARAMOPT LOGL=(LNOM,LMIN,LMAX)<br />

.PARAM CNOM={LOG10(10U)} CMIN={LOG10(1P)} CMAX={LOG10(1)}<br />

.PARAMOPT LOGC=(CNOM,CMIN,CMAX)<br />

.PARAM RNOM={LOG10(10)} RMIN={LOG10(1E-3)} RMAX={LOG10(1E+6)}<br />

.PARAMOPT LOGR=(RNOM,RMIN,RMAX)<br />

.OBJECTIVE AC LABEL=Q MAX(W(’VM(3)’))<br />

+ GOAL=MINIMIZE<br />

This example represents a <strong>user</strong>-defined transformation based on the logarithmic function:<br />

The exponent becomes the parameter to optimize. Consider the third .PARAMOPT command,<br />

the original formulation would have been the following statements:<br />

.PARAM RNOM=10 RMIN=1E-3 RMAX=1E+6<br />

.PARAMOPT R=(RNOM, RMIN, RMAX)<br />

The affine scaling transformation is not appropriate since the upper bound RMAX=1E+6 will<br />

dominate inside the expression of the matrix D:<br />

Eldo® User's Manual, 15.3 601


Optimization<br />

Scaling Design Variables<br />

Related Topics<br />

Discretized Design Variables<br />

Specifying Design Variables<br />

Specifying Tracking with Design Variables<br />

602<br />

Eldo® User's Manual, 15.3


Optimization<br />

Design Objectives<br />

Design Objectives<br />

This topic describes how to specify the design objectives to be considered by the .OPTIMIZE<br />

command when performing an optimization.<br />

Design objectives represent a desired behavior, for example a required frequency response for a<br />

filter circuit. The optimizer adjusts the design variable parameters of the circuit (such as resistor<br />

or capacitor values, the current gain (β) value of a transistor, widths and lengths of a MOSFET)<br />

to meet the desired behavior. They are specified using .EXTRACT statements with additional<br />

optimization parameters, or for more complex objectives the .OBJECTIVE command<br />

(dedicated to optimization) can be used. For example, the objective of fixing the input power<br />

matching of a Low Noise Amplifier (LNA) at a frequency of 2.4GHz to -15 is specified as:<br />

.EXTRACT AC LABEL=S11_dB@2.4GHz<br />

+ YVAL(SDB(1,1),2.4G)<br />

+ GOAL=-15<br />

This section covers:<br />

Specifying Design Objectives Using .EXTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604<br />

Specifying Design Objectives Using .OBJECTIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608<br />

Types of Design Objective. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610<br />

Design Objectives for Multi-Point Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618<br />

Scaling Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621<br />

Eldo® User's Manual, 15.3 603


Optimization<br />

Specifying Design Objectives Using .EXTRACT<br />

Specifying Design Objectives Using .EXTRACT<br />

This section describes an extension of the .EXTRACT command parameters used explicitly for<br />

optimization.<br />

The .EXTRACT command can be used to define two categories of design objectives, as<br />

described in the following sections:<br />

• Those represented by a single number — Scalar Design Objectives.<br />

• Those represented by a vector of measures — Vector Design Objectives.<br />

Note<br />

The .MEAS command (HSPICE-compatible equivalent of .EXTRACT) shares all of the<br />

same syntax and parameters.<br />

604<br />

Eldo® User's Manual, 15.3


Scalar Design Objectives<br />

Optimization<br />

Specifying Design Objectives Using .EXTRACT<br />

The general syntax of the .EXTRACT command for scalar objectives is:<br />

Syntax<br />

.EXTRACT<br />

+ [EXTRACT_INFO] [LABEL=NAME] [FILE=FILE_NAME]<br />

+ [VECT] [CATVECT] $MACRO|FUNCTION<br />

+ [OPTIMIZER_INFO]<br />

Parameters<br />

• [EXTRACT_INFO] [LABEL=NAME] [FILE=FILE_NAME] [VECT] [CATVECT]<br />

$MACRO|FUNCTION<br />

Refer to .EXTRACT in the Eldo Reference Manual for more information.<br />

• OPTIMIZER_INFO:=<br />

GOAL=MINIMIZE|MAXIMIZE [WEIGHT=RVALUE]<br />

| GOAL=RVALUE [WEIGHT=RVALUE]<br />

| GOAL=OPMODE_VALUE<br />

| EQUAL=RVALUE<br />

| {LBOUND=RVALUE | UBOUND=RVALUE}<br />

| LBOUND=RVALUE UBOUND=RVALUE<br />

The OPTIMIZER_INFO parameter describes the optimization. It is ignored if the<br />

.OPTIMIZE command is not specified in the netlist.<br />

A MINIMIZE or MAXIMIZE objective specifies that the extracted measure is to be<br />

minimized or maximized.<br />

The optional WEIGHT parameter is a positive value attached to the design objective and<br />

weights objectives with respect to their relative importance.<br />

The parameter GOAL=RVALUE defines a soft constraint on the measure. The default value<br />

is 0. This does not apply to the passfail method.<br />

The parameter GOAL=OPMODE_VALUE defines a set of hard constraints on the<br />

operating mode of a given device. This “goal” must be specified when the extract function is<br />

defined as OPMODE(DEVICE_NAME).<br />

The LBOUND, UBOUND and EQUAL parameters define hard constraints on the measure.<br />

Note<br />

The additional parameters (GOAL, EQUAL, LBOUND, UBOUND and WEIGHT)<br />

have no effect when the .OPTIMIZE command is not specified in the netlist. The<br />

specification of at least one of the parameters GOAL, EQUAL, LBOUND and/or<br />

UBOUND is mandatory for optimization.<br />

Related Topics<br />

Vector Design Objectives<br />

Eldo® User's Manual, 15.3 605


Optimization<br />

Specifying Design Objectives Using .EXTRACT<br />

Vector Design Objectives<br />

Vector objectives are specified using the FITTING parameter with the .EXTRACT command.<br />

The general syntax of the .EXTRACT command for vector objectives is:<br />

Syntax<br />

.EXTRACT<br />

+ [EXTRACT_INFO] [LABEL=NAME] [FILE=FILE_NAME]<br />

+ [VECT] [CATVECT]<br />

+ FITTING TARGET_NAME $MACRO|FUNCTION<br />

+ [SCALE_INFO] [WEIGHT=RVALUE]<br />

+ [INTERP_INFO | SELECT_INFO]<br />

Parameters<br />

• [EXTRACT_INFO] [LABEL=NAME] [FILE=FILE_NAME] [VECT] [CATVECT]<br />

$MACRO|FUNCTION<br />

Refer to .EXTRACT in the Eldo Reference Manual for more information.<br />

• FITTING TARGET_NAME<br />

Specifies the name of the discretized curve to fit. It can be the name of a previously defined<br />

wave or a reference to a variable in a .DATA statement. For more information run the<br />

example fourband in the directory: $MGC_AMS_HOME/examples/optimizer.<br />

• SCALE_INFO:= [LINEAR|LOG|LOG10]<br />

Specifies the scale (LINEAR, LOG, or LOG10) of the x-axis for the extracted measures.<br />

• INTERP_INFO:= INCR=RVALUE<br />

The INTERP_INFO parameter is used only when goal values are specified through .DATA<br />

statements. INCR=RVALUE specifies the real-valued step of the analysis sweep variable<br />

used for generating goal values through piece wise linear interpolation of data provided by<br />

an associated .DATA command.<br />

• SELECT_INFO:= DEC=RVALUE<br />

Specifies the number of points per decade in the analysis sweep variable used for generating<br />

goal values using a logarithmic interpolation of the data points provided. The corresponding<br />

simulated values are obtained by interpolation of the available simulated values.<br />

Description<br />

Notes:<br />

• You can specify a multi-dimensional specification of GOAL objectives. This is<br />

equivalent to specifying the .EXTRACT FITTING command.<br />

• Coherency is enforced between analysis commands and objective specifications.<br />

• The .OPTIMIZE command is required in the netlist.<br />

606<br />

Eldo® User's Manual, 15.3


Optimization<br />

Specifying Design Objectives Using .EXTRACT<br />

Examples<br />

Examples of forbidden situations.<br />

Example 1<br />

The situation in the following example is detected and forbidden. Here the analysis command<br />

should be driven by the values of VDS and VGS specified in the .DATA construct. The use of<br />

.DATA constructs is then restricted.<br />

DC Operating Point analysis is performed for every value of VDS from 0 to 40 with a step<br />

increment of 1, and every value of VGS between 4 and 16 with a step increment of 2.<br />

.DC VDS 0 40 1 VGS 4 16 2<br />

Three design objectives are defined for the variable IDS through the .DATA statement labeled<br />

MOSFIT, corresponding to the values of VGS equal to 4 and the values of VDS equal to 1, 2,<br />

and 3 respectively. The current through voltage source VDRAIN is optimized to fit the values<br />

of IDS. The values of VDS and VGS for the measurements correspond to the simulation points<br />

on a short range as specified in the .DC command.<br />

.EXTRACT DC LABEL=FIT_IDS<br />

+ FITTING<br />

+ MOSFIT(IDS) I(VDRAIN)<br />

.DATA MOSFIT<br />

+ VDS VGS IDS<br />

+ 1.000E+00 4.000E+00 1.574E+00<br />

+ 2.000E+00 4.000E+00 1.806E+00<br />

+ 3.000E+00 4.000E+00 1.826E+00<br />

.ENDDATA<br />

Example 2<br />

Consider the next example where interpolation is required to obtain the values for the measures<br />

required for optimization.<br />

Interpolation for measures is forbidden with optimization, since this technique introduces<br />

additional errors that cannot be bounded, and provides non-smooth measurements. When<br />

optimization is required, all simulation points must be included in the set of simulation points.<br />

A small signal analysis is performed for frequencies in the range [100 kHz, 1 GHz] with 2<br />

points per decade. The voltage magnitude at node 16 VM(16) is optimized to fit the values of<br />

the data labelled V16 in the statement .DATA VFIT.<br />

Eldo® User's Manual, 15.3 607


Optimization<br />

Specifying Design Objectives Using .OBJECTIVE<br />

.AC DEC 2 100k 1g<br />

.EXTRACT AC LABEL=FIT_VM16<br />

+ FITTING<br />

+ VFIT(V16) VM(16)<br />

.DATA VFIT<br />

+ FREQ V16<br />

+ 100K 200<br />

+ 30Meg 200<br />

+ 1G 1m<br />

.ENDDATA<br />

There are three measurement points defined at 100 kHz, 30 MHz and 1 GHz respectively. The<br />

values of VM(16) at these frequencies would need to be obtained by interpolation of the values<br />

simulated according to the .AC analysis command.<br />

Related Topics<br />

Scalar Design Objectives<br />

Specifying Design Objectives Using .OBJECTIVE<br />

The .OBJECTIVE command is dedicated to optimization, based on the .EXTRACT construct.<br />

Some restrictions are imposed and the semantics are different in some situations. The<br />

specification of design objectives is simplified.<br />

Tip<br />

Refer to .OBJECTIVE in the Eldo Reference Manual for a complete description of the<br />

command syntax and parameters.<br />

The .OBJECTIVE command should be used rather than .EXTRACT for the following reasons:<br />

• Some notions, such as scope, are not clearly defined in relation to the .EXTRACT<br />

command. For example, when several .ALTER blocks are used with optimization, the<br />

.EXTRACT commands are simply added to each .ALTER block. By default,<br />

.OBJECTIVE commands have a local scope.<br />

• It makes it easier to separate the optimization block, the circuit statements, and the plot<br />

statements.<br />

• In the .chi file, it is difficult to print the values of objectives as they are effectively<br />

processed in the optimizer.<br />

• The dump of the results into a file (using the FILE parameter) is not of great use and<br />

vector optimization makes the results difficult to read.<br />

608<br />

Eldo® User's Manual, 15.3


Notes<br />

Optimization<br />

Specifying Design Objectives Using .OBJECTIVE<br />

• For backward compatibility, the equivalent of the .OBJECTIVE command can be<br />

specified with the .EXTRACT command.<br />

Related Topics<br />

Optimization Methods<br />

Specifying Design Objectives Using .EXTRACT<br />

Design Objectives for Multi-Point Simulation<br />

Scaling Design Objectives<br />

Eldo® User's Manual, 15.3 609


Optimization<br />

Types of Design Objective<br />

Types of Design Objective<br />

This section describes the different types of design objectives that will be considered by the<br />

.OPTIMIZE command when conducting an optimization.<br />

It covers:<br />

Minimization and Maximization Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610<br />

Goal Values Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612<br />

Range Constraints Objectives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614<br />

Objectives for Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616<br />

Minimization and Maximization Objectives<br />

This topic explains how to specify design objectives that minimize or maximize extracted<br />

measures.<br />

Note<br />

Optimization in Eldo always minimizes. Maximizing f(x) is handled as minimizing -f(x).<br />

Objectives that minimize measures are specified using the .OBJECTIVE command as follows:<br />

* Minimize or Maximize statements<br />

.OBJECTIVE EXTRACT_INFO LABEL=f_m<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=MINIMIZE<br />

+ [WEIGHT=MU_M]<br />

The optional weight μ m is a positive number, defaulting to one.<br />

Multiple Specifications of Minimization Objectives<br />

The syntax enables .OBJECTIVE command statements to be specified multiple times in the<br />

netlist. If several objectives are qualified as GOAL=MINIMIZE (or MAXIMIZE), a weighted<br />

objective function is built as the summation of all these particular measures. The optimizer<br />

minimizes a unique objective that is the weighted sum of the whole objectives. Consider the<br />

following:<br />

* Aggregation of two Minimize statements<br />

.OBJECTIVE EXTRACT_INFO_1 LABEL=F_M_1<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=MINIMIZE WEIGHT=MU_M_1<br />

.OBJECTIVE EXTRACT_INFO_2 LABEL=f_M_2<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=MINIMIZE WEIGHT=MU_M_2<br />

610<br />

Eldo® User's Manual, 15.3


Optimization<br />

Types of Design Objective<br />

These statements, where two design objectives are minimized, define a bi-criterion problem or<br />

a vector-valued objective function (f m (1) , f m (2) ). The technique used, known as scalarization, is<br />

a standard approach for finding the solution to a vector optimization problem. Applied to this<br />

simple problem, it leads to the minimization of the global objective function:<br />

F = μ m (1) f m<br />

(1)<br />

+ μ m (2) f m<br />

(2)<br />

The optimization method considers a unique problem that is the aggregation of two concurrent<br />

problems.<br />

In practice you need to experiment with the different choices of weights with successive<br />

adjustments. This technique is explained in “Role of the Weight Values on Minimization<br />

Objectives” on page 611.<br />

Effect of Multiple Sweeps on Minimization Objectives<br />

When multiple sweeps or multiple step increments on circuit parameters are present in the<br />

netlist, an extracted measure qualified as GOAL=MINIMIZE (or MAXIMIZE) must be handled<br />

as a multi-dimensional object. Consider the following statements where P parameters have been<br />

specified:<br />

* Design parameters specification<br />

.STEP PARAM OMEGA_J ! for all j in {1, ..., P}<br />

* Minimize or Maximize statements<br />

.OBJECTIVE EXTRACT_INFO LABEL=f_m<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=MINIMIZE<br />

+ WEIGHT=MU_M<br />

As above, the technique of scalarization is used, replacing the minimization of the<br />

vector-valued function by the minimization of the sum of the components of f m . The optimizer<br />

then forms and minimizes the function:<br />

The extracted measure f m can be considered as a group of functions to be minimized. In these<br />

cases the weight value applies to all functions in the group implying that all functions have the<br />

same relative importance.<br />

Role of the Weight Values on Minimization Objectives<br />

The values μ<br />

(i)<br />

m are positive weight values attached to each design objective. Increase the<br />

weight value μ<br />

(i)<br />

m if you want the objective f (i) m (x) to be a lower value.<br />

Eldo® User's Manual, 15.3 611


Optimization<br />

Types of Design Objective<br />

The ratio μ m<br />

(i)<br />

/ μ m<br />

(j)<br />

can be interpreted as the relative weight of the ith objective compared with<br />

the jth objective. This is useful when you want to alter weights to get lower values of a chosen<br />

objective, for example the kth. To find an optimal point which trades off the kth objective,<br />

increase the weight on the kth objective.<br />

Related Topics<br />

Specifying Design Objectives Using .EXTRACT<br />

Specifying Design Objectives Using .OBJECTIVE<br />

Design Objectives for Multi-Point Simulation<br />

Scaling Design Objectives<br />

Goal Values Objectives<br />

This topic explains how to specify design objectives that define goal values on extracted<br />

measures. With this type of design objective the extracted measure aims to get as close as<br />

possible to a goal value r.<br />

Objectives that define goals values on measures are specified using the .OBJECTIVE command<br />

as follows:<br />

* Goal values on measures<br />

.OBJECTIVE EXTRACT_INFO LABEL=F_R<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=R<br />

+ [WEIGHT=MU_R]<br />

The optional weight μ r is a positive number, defaulting to one.<br />

Multiple Specifications<br />

If multiple objectives are qualified as GOAL=R, a weighted objective function is built using the<br />

non-linear least squares approach, that is by minimizing the squared difference between the<br />

actual value of the measure f r and the goal value r:<br />

μ r (f r − r) 2<br />

Consider the following example:<br />

* Aggregation of two Minimize statements<br />

.OBJECTIVE EXTRACT_INFO_1 LABEL=F_R_1<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=R_1 WEIGHT=MU_R_1<br />

.OBJECTIVE EXTRACT_INFO_2 LABEL=F_R_2<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=R_2 WEIGHT=MU_R_2<br />

612<br />

Eldo® User's Manual, 15.3


Optimization<br />

Types of Design Objective<br />

This leads to the minimization of the global objective function:<br />

F = μ r (1) (f r<br />

(1)<br />

− r (1) ) 2 + μ r (2) (f r<br />

(2)<br />

− r (2) ) 2<br />

In practice you need to experiment with different choices of weights by successive adjustments<br />

(refer to “Role of the Weight Values on Minimization Objectives” on page 611).<br />

Effect of Multiple Sweeps and Step Increments<br />

The combination of optimization with goal values and multiple .STEP commands is supported.<br />

Consider the following statements where P parameters have been specified:<br />

* Design parameters specification<br />

.STEP PARAM OMEGA_1 <br />

.STEP PARAM OMEGA_2 <br />

*...<br />

.STEP PARAM OMEGA_P <br />

* Goal statement<br />

.OBJECTIVE EXTRACT_INFO LABEL=F_R<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=R<br />

+ WEIGHT=MU_R<br />

As above, the technique of scalarization is used, replacing the minimization of a vector-valued<br />

function by the minimization of the sum of the components of f r . The optimizer then forms and<br />

minimizes the function:<br />

Note<br />

The weight number applies to all functions in the group, however, it is possible to associate<br />

a weight to each component of f r . This can done with the .DATA command. Refer to<br />

“Design Objectives for Multi-Point Simulation” on page 618 for more information.<br />

Related Topics<br />

Minimization and Maximization Objectives<br />

Range Constraints Objectives<br />

Objectives for Operating Modes<br />

Eldo® User's Manual, 15.3 613


Optimization<br />

Types of Design Objective<br />

Range Constraints Objectives<br />

This topic explains how to specify design objectives that define bounds on extracted measures.<br />

These types of objectives are called equality constraints or range constraints and correspond to<br />

relations such as l≤ f i (x) ≤ u.<br />

Equality constraints are range constraints with equal lower and upper bounds: l=u.<br />

Objectives that define ranges on measures are specified using the .OBJECTIVE command by:<br />

* Range constraint<br />

.OBJECTIVE EXTRACT_INFO LABEL=F_I<br />

+ {$MACRO|FUNCTION}<br />

+ LBOUND=L UBOUND=U<br />

When the objective f i does not need to be bounded by a lower or an upper value, the parameters<br />

may be omitted. For example, if a design objective must be positive f i ≥ 0 (its lower bound is 0),<br />

you can specify the following:<br />

* Positive objective<br />

.OBJECTIVE EXTRACT_INFO LABEL=F_I<br />

+ {$MACRO|FUNCTION}<br />

+ LBOUND=0.0<br />

The Eldo Optimizer SQP Algorithm handles them directly as hard constraints. These objectives<br />

must be satisfied at the solution of the problem.<br />

Notes<br />

• The iterates (the successive values of design parameters taken during optimization) may<br />

not satisfy the constraints. If the optimization problem appears to be feasible, the<br />

constraints will be satisfied at the solution, or in the vicinity of a solution.<br />

• In general, inequality constraints are more relevant than equality constraints as<br />

equalities are more difficult to satisfy. Consider the objective of fixing the input power<br />

matching of a low noise amplifier at a frequency of 2.4GHz:<br />

.EXTRACT AC LABEL=S11_dB@2.4GHz YVAL(SDB(1,1),2.4G)<br />

+ GOAL=-15<br />

A more appropriate objective is to specify a tolerance on the target value, for example<br />

±1dB.<br />

The Eldo optimizer SQP method does not enable you to specify a tolerance on equality<br />

constraints. Instead you can combine GOAL objectives to center the design and range<br />

constraints with the same objective in separate statements.<br />

• The limitation above also means that equalities and inequalities are mutually exclusive.<br />

The parameter EQUAL cannot appear inside the same objective statement as the<br />

parameters LBOUND and UBOUND.<br />

614<br />

Eldo® User's Manual, 15.3


Optimization<br />

Types of Design Objective<br />

• A constraint of the form f > 0 is difficult to handle in an active set method such as the<br />

Eldo optimizer SQP algorithm. This is because the feasible region is not closed and the<br />

constraint cannot be active at a solution.<br />

Constraints of this type can be included via the transformation f(x) ≥ ε > 0. If the<br />

constraints are active, you can solve a sequence of problems in which ε → 0. This<br />

prevents f(x) from being evaluated at an infeasible point where it is not defined.<br />

Multiple Specifications<br />

Multiple range constraints can be specified. For example, if the netlist consists of two<br />

statements such as:<br />

* Aggregation of two range constraints<br />

.OBJECTIVE EXTRACT_INFO_1 LABEL=F_I_1<br />

+ {$MACRO|FUNCTION}<br />

+ LBOUND=L_1 UBOUND=U_1<br />

.OBJECTIVE EXTRACT_INFO_2 LABEL=F_I_2<br />

+ {$MACRO|FUNCTION}<br />

+ LBOUND=L_2 UBOUND=U_2<br />

These objectives will be optimized jointly, meaning that a vector of design variables x has to<br />

satisfy the system of inequalities:<br />

This approach consists of defining a unique optimization problem that is the aggregation of all<br />

the constraint statements.<br />

Effect of Multiple Sweeps and Step Increments<br />

Optimizations can be specified where range constraints are combined with multiple .STEP<br />

commands. Consider the following statements where P parameters have been specified:<br />

* Design parameters specification<br />

.STEP PARAM OMEGA_1 <br />

.STEP PARAM OMEGA_2 <br />

*...<br />

.STEP PARAM OMEGA_P <br />

* Range cosntraint statement<br />

.OBJECTIVE EXTRACT_INFO LABEL=f_i<br />

+ {$MACRO|FUNCTION}<br />

+ LBOUND=L<br />

+ UBOUND=U<br />

The optimizer forms a group (or system) of inequalities as shown below:<br />

Eldo® User's Manual, 15.3 615


Optimization<br />

Types of Design Objective<br />

Related Topics<br />

Minimization and Maximization Objectives<br />

Goal Values Objectives<br />

Objectives for Operating Modes<br />

Objectives for Operating Modes<br />

You can optimize the operating mode of transistors and bipolars in your circuit. The syntax of a<br />

single statement is given as follows:<br />

* OPMODE constraint statement<br />

.OBJECTIVE EXTRACT_INFO LABEL=f_op<br />

+ OPMODE(DEVICE_NAME)<br />

+ GOAL=OPMODE_NAME<br />

The goal is not specified as a value, it is a string. The different modes are recalled here:<br />

• GOAL=SATURATION (MOS and BJT)<br />

• GOAL=LINEAR (MOS and BJT)<br />

• GOAL=ON (only BJT)<br />

• GOAL=OFF (only BJT)<br />

• GOAL=SUBTHRESHOLD (only MOS)<br />

For a transistor, these modes can be expressed as numerical relations (constraints) between the<br />

voltages VGS, VT, VDS, and VDSAT. For example, the LINEAR mode is characterized with the<br />

two following constraints: VGS ≥ VT and VDS ≤ VDSAT. The same applies to the other modes.<br />

There is no “goal value” for this objective, it is attempted to find a feasible configuration which<br />

satisfies the OPMODE constraints. It is very likely that there is an infinite number of circuits<br />

which are feasible. This means you must introduce additional objectives to optimize the circuit,<br />

the role of these constraints is to force the circuit into a good operation mode.<br />

Consider the following inverter example, the two transistors are “symmetric,” and must be<br />

mutually in opposite configuration or state (linear and subthreshold):<br />

616<br />

Eldo® User's Manual, 15.3


Optimization<br />

Types of Design Objective<br />

*OPMODE on NMOS and PMOS device<br />

.MODEL MODN NMOS LEVEL=60 VERSION=4.3<br />

.MODEL MODP PMOS LEVEL=60 VERSION=4.3<br />

.PARAM VDD = 5<br />

VDD VDD 0 VDD<br />

Vin VG 0 VIN<br />

M1 VOUT VG 0 0 MODN W=10U L=3U<br />

M2 VOUT VG VDD VDD MODP W=10U L=3U<br />

.DC<br />

.EXTRACT DC LABEL=ID1 I(M1.D)<br />

.EXTRACT DC LABEL=ID2 I(M2.D)<br />

.EXTRACT DC LABEL=VT1 VT(M1)<br />

.EXTRACT DC LABEL=VG1 VG(M1)<br />

.EXTRACT DC LABEL=VT2 VT(M2)<br />

.EXTRACT DC LABEL=VG2 VG(M2)<br />

.EXTRACT DC LABEL=VIN V(VG, 0)<br />

.EXTRACT DC LABEL=VOUT V(VOUT, 0)<br />

.OPTIMIZE<br />

.PARAMOPT VIN=(0,-10,10)<br />

.EXTRACT LABEL=DC1 DC OPMODE(M1) GOAL=SUBTHRESHOLD<br />

.EXTRACT LABEL=DC2 DC OPMODE(M2) GOAL=LINEAR<br />

.END<br />

Related Topics<br />

Minimization and Maximization Objectives<br />

Goal Values Objectives<br />

Range Constraints Objectives<br />

Design Objectives for Multi-Point Simulation<br />

Eldo® User's Manual, 15.3 617


Optimization<br />

Design Objectives for Multi-Point Simulation<br />

Design Objectives for Multi-Point Simulation<br />

This section explains how to specify design objectives based on multi-point simulations for<br />

small-signal analysis and transient analysis. It is not relevant for DC-based design objectives.<br />

It starts by explaining the notion of implicit and explicit data points for multi-point simulations,<br />

then describes how to specify design objectives for multi-point analysis. This section covers:<br />

Implicit and Explicit Data Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618<br />

Specifying Design Objectives with Explicit Data Points . . . . . . . . . . . . . . . . . . . . . . . . . 619<br />

Implicit and Explicit Data Points<br />

Restrictions ensure a reasonable connection is maintained between simulation statements and<br />

optimization objectives. These limitations are based on two categories of multi-point analysis:<br />

analysis with implicit data points, and analysis with explicit data points:<br />

• Transient analysis may have implicit data points where Eldo computes the data points<br />

for accuracy. For example:<br />

.TRAN TPRINT TSTOP [TSTART [HMAX]]<br />

For transient and the small-signal analyses, time and frequency are implicit data points.<br />

• Transient and AC analyses may alternatively have explicit data points where the data<br />

points are specified. For example:<br />

.TRAN DATA=DATA_NAME<br />

The explicit case is favored because it enables the simulation and the optimization commands to<br />

refer to the same list of data. For transient and the small-signal analyses, frequency and time<br />

must be included in the explicit set of simulation data points when optimization is required.<br />

These limitations are related to the algorithm implemented in the Eldo optimizer SQP method.<br />

For more information refer to the topic “Smooth and Non-Smooth Problems” on page 631.<br />

Related Topics<br />

Specifying Design Objectives Using .EXTRACT<br />

Specifying Design Objectives Using .OBJECTIVE<br />

Types of Design Objective<br />

Specifying Design Objectives with Explicit Data Points<br />

Scaling Design Objectives<br />

618<br />

Eldo® User's Manual, 15.3


Optimization<br />

Design Objectives for Multi-Point Simulation<br />

Specifying Design Objectives with Explicit Data Points<br />

This topic describes how to specify design objectives when simulation points are explicitly<br />

specified. It first considers data-driven AC and transient analyses, and then parameter- and listdriven<br />

AC analysis, and transient analysis in HSPICE compatibility mode.<br />

Data-Driven Analysis<br />

Consider data-driven AC and transient analyses where the command matches one of the<br />

following:<br />

.AC DATA=data_name [SWEEP DATA=data_name]<br />

.AC DATA=data_name [SWEEP param_name TYPE nb start stop]<br />

.AC DATA=data_name [SWEEP param_name start stop incr]<br />

.TRAN DATA=data_name [SWEEP DATA=data_name]<br />

.TRAN DATA=data_name [SWEEP param_name TYPE nb start stop]<br />

.TRAN DATA=data_name [SWEEP param_name start stop incr]<br />

In these cases, a GOAL or EQUAL objective statement has the following syntax:<br />

. DATA=OMEGA_DATA(OMEGA)<br />

.DATA OMEGA_DATA<br />

+ OMEGA GOAL_VAL WEIGHT_VAL TYP_VAL<br />

+ OMEGA1 GOAL_VAL1 WEIGHT_VAL1 TYP_VAL1<br />

*... ... ... ...<br />

+ OMEGAP GOAL_VALP WEIGHT_VALP TYP_VALP<br />

.ENDDATA<br />

.OBJECTIVE<br />

+ EXTRACT_INFO [LABEL=NAME]<br />

+ {$MACRO|FUNCTION}<br />

+ OBJECTIVE_INFO<br />

+ [SCALE_INFO]<br />

where the parameter OMEGA is the keyword TIME or FREQ, and:<br />

and:<br />

OBJECTIVE_INFO:=<br />

{GOAL=OMEGA_DATA(GOAL_VAL)|RVALUE} | {EQUAL=OMEGA_DATA(GOAL_VAL)|RVALUE}<br />

[ WEIGHT=OMEGA_DATA(WEIGHT)|RVALUE]<br />

SCALE_INFO:=<br />

TYPVAL=OMEGA_DATA(TYP_VAL) | RVALUE<br />

Using the same .DATA statement in the analysis and the objective statement ensures data<br />

coherency. A scalar value (denoted by RVALUE) can be specified for the GOAL, EQUAL,<br />

WEIGHT and TYPVAL parameters.<br />

Eldo® User's Manual, 15.3 619


Optimization<br />

Design Objectives for Multi-Point Simulation<br />

Note<br />

When WEIGHT and TYPVAL are scalar values, they apply to all lines.<br />

An objective statement with the parameters LBOUND or UBOUND type has the following<br />

syntax:<br />

with:<br />

and:<br />

. DATA=OMEGA_DATA<br />

.DATA OMEGA_DATA OMEGA L_VAL U_VAL WEIGHT_VAL TYP_VAL<br />

+ OMEGA1 L_VAL1 U_VAL1 WEIGHT_VAL1 TYP_VAL1<br />

*...<br />

+ OMEGAP L_VALP U_VALP WEIGHT_VALP TYP_VALP<br />

.ENDDATA<br />

.OBJECTIVE<br />

+ EXTRACT_INFO [LABEL=NAME]<br />

+ {$MACRO|FUNCTION}<br />

+ OBJECTIVE_INFO<br />

+ [SCALE_INFO]<br />

OBJECTIVE_INFO:=<br />

{{LBOUND=OMEGA_DATA(L_VAL)|RVALUE} | {UBOUND=OMEGA_DATA(U_VAL)|RVALUE}}<br />

| {LBOUND=OMEGA_DATA(L_VAL)|RVALUE} {UBOUND=OMEGA_DATA(U_VAL) | RVALUE}<br />

[WEIGHT=OMEGA_DATA(WEIGHT_VAL) | RVALUE]<br />

SCALE_INFO:=<br />

TYPVAL={OMEGA_DATA(TYP_VAL) | RVALUE}<br />

Other Types of Analysis<br />

Consider parameter- and list-driven AC analysis where the command syntax matches one of the<br />

following:<br />

.AC TYPE NB FSTART FSTOP [SWEEP DATA=DATA_NAME]<br />

.AC TYPE NB FSTART FSTOP [SWEEP PARAM_NAME TYPE NB START STOP]<br />

.AC TYPE NB FSTART FSTOP [SWEEP PARAM_NAME START STOP INCR]<br />

.AC LIST {LIST_OF_FREQUENCIES} [SWEEP DATA=DATA_NAME]<br />

.AC LIST {LIST_OF_FREQUENCIES} [SWEEP PARAM_NAME TYPE NB START STOP]<br />

.AC LIST {LIST_OF_FREQUENCIES} [SWEEP PARAM_NAME START STOP INCR]<br />

Alternatively consider transient analysis in HSPICE compatibility mode where the command<br />

matches one of the following:<br />

.TRAN INCR1 T1 [{INCRn Tn}] [TSTART=VAL] [SWEEP DATA=DATA_NAME]<br />

.TRAN INCR1 T1 [{INCRn Tn}] [SWEEP PARAM_NAME TYPE NB START STOP]<br />

.TRAN INCR1 T1 [{INCRn Tn}] [SWEEP PARAM_NAME START STOP INCR]<br />

620<br />

Eldo® User's Manual, 15.3


Optimization<br />

Scaling Design Objectives<br />

In these cases the objective statement parameters GOAL, EQUAL, LBOUND, UBOUND,<br />

WEIGHT and TYPVAL must be a scalar value or a constant waveform. Refer to “Specifying<br />

Design Objectives Using .OBJECTIVE” on page 608 for more details on these parameters.<br />

When waveforms are used in OBJECTIVE_INFO, the value of the objectives (goal and bounds)<br />

are sampled values of the waveform at simulation points.<br />

It is possible to mix scalar values and waveforms. Specifying LBOUND as a scalar means that<br />

this bound is global.<br />

Related Topics<br />

Implicit and Explicit Data Points<br />

Scaling Design Objectives<br />

Consider the scale of the design objectives, particularly in relation to the stopping conditions<br />

and the computation of derivatives. Differing sizes among the component functions of an<br />

extracted measure F can cause the same types of problems as differing sizes among the<br />

optimization variables.<br />

For instance, if the algorithm requires a decrease in the merit function, and it is clear that if the<br />

units of two component functions of F(x) are widely different, then the smaller component<br />

function is virtually ignored. For this reason, the Eldo optimizer algorithms also use a positive<br />

diagonal scaling matrix Df on the design objectives F(x), which works as D does on x.<br />

The diagonal matrix Df is chosen so that all the components of Df . F(x) will have a similar<br />

magnitude. You can specify an initial Df using the parameter TYPVAL. The algorithm then<br />

sets:<br />

The result of this scaling procedure is described in the output file .otm, in the section headed<br />

Section 1- Scaling Transformation Design Objectives. Refer to “ASCII Optimization File<br />

Contents” on page 643 for more information.<br />

Related Topics<br />

Specifying Design Objectives Using .EXTRACT<br />

Specifying Design Objectives Using .OBJECTIVE<br />

Types of Design Objective<br />

Design Objectives for Multi-Point Simulation<br />

Eldo® User's Manual, 15.3 621


Optimization<br />

Optimization Methods<br />

Optimization Methods<br />

This section provides an overview of the SQP and Search .OPTIMIZE methods and their<br />

parameters:<br />

• Eldo Optimizer SQP Algorithm<br />

• Eldo Optimizer/Search Algorithm<br />

The other group of methods (Dichotomy, Secant, and Passfail) represents a specific class of<br />

algorithms categorized as Derivative Free Optimization (DFO) algorithms. They enable<br />

optimization in the restricted case of one-dimensional problems. Refer to Eldo Optimizer/<br />

Dichotomy/Secant/PassFail Parameters in the Eldo Reference Manual to set-up a measurement<br />

with Eldo using these methods.<br />

Tip<br />

Refer to .OPTIMIZE in the Eldo Reference Manual for a complete description of the<br />

command syntax and parameters.<br />

See also:<br />

• “Optimization in Eldo” on page 589<br />

• “Design Variables” on page 594<br />

• “Conducting an Eldo Optimization” on page 629<br />

• “Post-Analysis of Optimization Simulations” on page 639<br />

• “Examples of Circuit Optimization” on page 664<br />

Eldo Optimizer SQP Algorithm<br />

The Eldo optimizer SQP method optimizer is based on a Sequential Quadratic Programming<br />

method (SQP), using an active-set algorithm for solving large-scale quadratic programming<br />

problems.<br />

The active-set algorithm (proposed by Fletcher [2]) is efficient for solving a large class of<br />

smooth optimization problems belonging to the following list:<br />

• Unconstrained and bound constrained problems (using only the statements<br />

GOAL=MINIMIZE|MAXIMIZE and GOAL=RVALUE).<br />

• Systems of non-linear equations (using only the statement EQUAL=RVALUE).<br />

• General (equality and inequality) constrained problems.<br />

622<br />

Eldo® User's Manual, 15.3


Optimization<br />

Eldo Optimizer SQP Algorithm<br />

Refer to Nocedal and Wright [5], and Fletcher [3] for recent books giving a broader view of<br />

optimization techniques. For more advanced books consult Bonnans, Gilbert, Lemarechal and<br />

Sagastizabal [1] and Gill, Murray and Wright [4].<br />

The design variables are denoted by:<br />

x =(x (1) , x (2) , ... , x (N) )<br />

a vector of real numbers of dimension N. Therefore the space of variables is denoted by R N . The<br />

scalar product is denoted by:<br />

onto the space R Ν , and its associated norm is ||u||.<br />

A simplified structure of the kth iteration can be depicted as:<br />

1. Step Computation: determine a direction of search s k (by solving a tangent quadratic<br />

subproblem (QP) k<br />

2. Step Assessment: find α k > 0 to minimize a chosen merit function x → Φ(x) along the<br />

line α→ x k + αs k<br />

3. Update: x k+1 = x k + α k s k<br />

This approach is referred to as a descent method since the search direction s k satisfies a descent<br />

property:<br />

where the vector:<br />

represents the gradient of the chosen merit function. The role of the line search algorithm is to<br />

dampen the displacement s k .<br />

During the optimization process, simulations are required at two distinct stages:<br />

• The computation of derivatives of the extracted measures involved in the problem<br />

statement.<br />

• The step assessment procedure, or line search algorithm.<br />

Eldo® User's Manual, 15.3 623


Optimization<br />

Eldo Optimizer SQP Algorithm<br />

Role of Tolerances in the Eldo Optimizer SQP Method<br />

This topic describes the role of the parameters TOL_GRAD, TOL_FEAS and TOL_OPT.<br />

For more information on these parameters, see Eldo Optimizer/SQP Parameters in the Eldo<br />

Reference Manual.<br />

Suppose a value of x that is a local minimizer of f(x) in the interval a ≤ x ≤ b is to be obtained:<br />

Minimize: f(x)<br />

Subject to: a ≤ x ≤ b<br />

Or using a SPICE formulation:<br />

.OPTIMIZE<br />

* Minimize Statement<br />

.OBJECTIVE EXTRACT_INFO LABEL=F<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=MINIMIZE<br />

* Design variable specification<br />

.PARAMOPT X=(X0, A, B)<br />

The optimality conditions OPTIM(x) in the definition of the TOL_GRAD parameter are listed<br />

in Table 13-2:<br />

Table 13-2. Optimality Conditions<br />

OPTIM(x) x<br />

f’(x)<br />

a < x < b<br />

min(f’(x), 0) x = a<br />

max(f’(x),0) x = b<br />

Consider the first case in Figure 13-3. The minimum is the point x = b. The blue vector<br />

represents the derivative f’(x) at point b. The derivative f’(x) is negative, so max(f’(x), 0) = 0. A<br />

zero or very small OPTIM(x) indicates that the point x is an optimum. The number TOL_GRAD<br />

is used in the stopping test of the Eldo optimizer SQP method. The point x is optimal when the<br />

absolute value of OPTIM(x) is less than TOL_GRAD.<br />

Consider the second case in Figure 13-3. Point y is an unconstrained minimizer of f, since it lies<br />

strictly in the interval [a, b]. The optimality condition is then OPTIM(y) = f’(y) which is the<br />

slope of f at point y. Here OPTIM(y) equals zero.<br />

624<br />

Eldo® User's Manual, 15.3


Figure 13-3. Illustration of Optimality Conditions<br />

Optimization<br />

Eldo Optimizer SQP Algorithm<br />

Note<br />

Previous definitions of the optimality conditions related only to bound constraint<br />

minimization problems. The conditions OPTIM(x) have been extended to more general<br />

problems that the Eldo optimizer SQP method can handle.<br />

In many cases the function values are the result of extensive computation, possibly involving an<br />

iterative procedure that can provide a few digits of precision at reasonable cost.<br />

Suppose that a constraint function c (i) (x) is computed for some relevant x and the first six digits<br />

are known to be correct. A constraint is considered as active at its upper bound (or lower bound)<br />

if the difference between the values c (i) (x) and c (i) u (or c (i) l respectively) is less than some<br />

tolerance of order 1.0 × 10 −6 .<br />

This tolerance, δ, specifies how accurately the constraints are satisfied. It defines the maximum<br />

absolute violation in non-linear constraints at a feasible point. A constraint is considered<br />

satisfied if its violation does not exceed the tolerance δ.<br />

The feasible region for the constraints c l (i) ≤ c (i) (x) ≤ c u (i) is shown in Figure 13-4.<br />

Figure 13-4. Illustration of Constraints<br />

The constraints are considered satisfied if c (i) (x) lies in the region 2, 3 or 4, and inactive if c (i) (x)<br />

lies in region 3. The constraint c (i) l ≤ c (i) (x) is considered active in region 2, and violated in<br />

region 1. Similarly, c (i) (x) ≤ c (i) u is active in region 4, and violated in region 5. For equality<br />

constraints c<br />

(i)<br />

l = c (i) u , regions 2 and 4 are the same, and region 3 is empty. The default value is<br />

appropriate when the constraints contain data about the accuracy.<br />

Eldo® User's Manual, 15.3 625


Optimization<br />

Eldo Optimizer/Search Algorithm<br />

Note<br />

Specifying an appropriate tolerance on feasibility TOL_FEAS may lead to several savings<br />

by enabling the optimization procedure to terminate when the difference between function<br />

values along the search direction becomes as small as the absolute error in the values.<br />

Computation of Finite-Difference Derivatives<br />

One of the most demanding phases in terms of simulation is the computation of derivatives. The<br />

Eldo optimizer uses finite differences; an approach to calculating the approximate derivatives<br />

coming from Taylor’s theorem. Like many software tools, the Eldo optimizer performs<br />

automatic calculation of finite differences whenever the simulator is unable to supply the code<br />

to compute exact derivatives.<br />

A popular formula for approximating the partial derivative ∂F/∂x at a given point is forward<br />

differences or one-sided differences. The parameter h f controls the interval used to estimate the<br />

gradients of the function F by forward differences:<br />

One-sided difference estimates are used to ensure feasibility with respect to an upper or lower<br />

bound on x. If x is close to an upper bound, the trial intervals will be negative. The final interval<br />

is always positive.<br />

• An approximation to the derivative of F is obtained by evaluating the function F at N + 1<br />

points and performing some elementary arithmetic.<br />

• The resulting gradient estimates should be accurate to O(h f ) unless the functions are<br />

badly scaled.<br />

Related Topics<br />

Eldo Optimizer/Search Algorithm<br />

Eldo Optimizer/Search Algorithm<br />

The Search method is efficient for solving minimization optimization problems that are onedimensional.<br />

This method belongs to the class of derivative free optimization (DFO) algorithms that are<br />

dedicated to solving problems having one variable and one extracted measure. The Dichotomy<br />

and Secant methods also belong to this class. The search method runs faster than the Dichotomy<br />

method and is more robust than the modified Dichotomy (the Eldo optimizer/Secant) method.<br />

Search is based on two distinct algorithms: FIND_ZERO and FIND_MINIMUM.<br />

626<br />

Eldo® User's Manual, 15.3


Optimization<br />

Eldo Optimizer/Search Algorithm<br />

The algorithm FIND_ZERO aims to find a solution to:<br />

Find x such that F(x) = 0, where a ≤ x ≤ b.<br />

Using a SPICE formulation:<br />

.OPTIMIZE METHOD=SEARCH<br />

* Design variable specification<br />

.PARAMOPT X=(X0, A, B)<br />

* Goal value<br />

.OBJECTIVE LABEL=F_R GOAL=R<br />

Note<br />

Specifying a weight number with WEIGHT=μ r is allowed, however, it is not considered. A<br />

warning message is generated.<br />

F(x) = f r (x) − r defines the difference between the actual measure f r and the goal value r.<br />

The search method enables you to specify an initial guess point to locate an interval for a<br />

solution if one has not been specified:<br />

• When the interval [a, b] is not known, a guess point x0 must be specified with the<br />

.PARAMOPT command: .PARAMOPT x=(x0,*,*). The method initially invokes a<br />

search phase to find an interval for locating a solution.<br />

• When the interval [a, b] is specified, the guess point is not used and the method directly<br />

starts the search for a solution.<br />

The FIND_ZERO algorithm uses a combination of dichotomy, secant, and inverse quadratic<br />

interpolation methods. It defines a zero as a point where the function crosses the x-axis. Points<br />

where the function touches but does not cross (see Figure 13-5) the x-axis are not valid zeros.<br />

For example, F(x) = x 2 is a parabola that touches the x-axis at (0, 0). Since the function never<br />

crosses the x-axis, no zero is found. For functions with no valid zeros, FIND_ZERO executes<br />

until an undefined value is detected.<br />

Figure 13-5. Non-Valid and Valid Zeros<br />

Eldo® User's Manual, 15.3 627


Optimization<br />

Eldo Optimizer/Search Algorithm<br />

The algorithm FIND_MINIMUM attempts to return a value of x that is a local minimizer of F(x)<br />

in the interval a ≤ x ≤ b:<br />

Minimize F(x) = 0, where a ≤ x ≤ b.<br />

The algorithm is based on the golden section search and parabolic interpolation techniques.<br />

Related Topics<br />

Eldo Optimizer SQP Algorithm<br />

628<br />

Eldo® User's Manual, 15.3


Conducting an Eldo Optimization<br />

Optimization<br />

Conducting an Eldo Optimization<br />

This section discusses specific types of optimization problem and explains the options available<br />

to influence the behavior of the optimizer in each of these cases. It covers:<br />

Global and Local Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629<br />

Continuous and Discrete Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630<br />

Smooth and Non-Smooth Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631<br />

Multiple-Run Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632<br />

Optimization of Sweep Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633<br />

Global and Local Optimization<br />

The fastest optimization algorithms only search for a local solution at a point at which the<br />

objective function is smaller than all other feasible points in its vicinity. They do not always<br />

find the best of all such minima, that is the global solution. Practical methods for finding global<br />

optima are currently too expensive in all but the most specialized cases.<br />

Figure 13-6 shows local and global solutions.<br />

Figure 13-6. Different Types of Minima<br />

General non-linear problems may possess local solutions that are not global solutions. Global<br />

solutions are highly desirable, however, they are usually difficult to identify and even more<br />

difficult to locate. Unless very strong assumptions are made about the functions that define the<br />

optimization problem in question, characterizations of global minima are almost impossible.<br />

Note<br />

The Eldo Optimizer SQP Algorithm is based on Newton iterations. It is not able to combine<br />

local and global searches, and only finds local solutions.<br />

Related Topics<br />

Design Variables<br />

Design Objectives<br />

Eldo® User's Manual, 15.3 629


Optimization<br />

Continuous and Discrete Optimization<br />

Optimization Methods<br />

Post-Analysis of Optimization Simulations<br />

Examples of Circuit Optimization<br />

Continuous and Discrete Optimization<br />

In some optimization problems, the variables can only take integer or discrete real values. The<br />

obvious strategy is to ignore the integrality requirement, solving the problem with real<br />

variables. However, rounding all the components to the nearest integer is not guaranteed to<br />

provide an optimal solution. Problems of this type should be handled using discrete<br />

optimization tools. The mathematical formulation is changed by adding the constraint “x i is an<br />

integer for all i in K, where K is a subset of {1, ..., N}”.<br />

Continuous optimization problems are easier to solve. The smoothness of the functions makes it<br />

possible to use function and constraint information at a particular point x to deduce a function’s<br />

behavior at all points close to x.<br />

The same statement cannot be made about discrete problems where nearby points may have<br />

markedly different function values. Moreover, the set of possible solutions is too large to make<br />

an exhaustive search for the best value in this finite set. Models that contain some variables<br />

which are allowed to vary continuously and others that can attain only integer values are<br />

referred to as mixed-integer programming problems (MIP).<br />

The Eldo optimizer can only handle non-linear problems (NLP) with continuous variables. The<br />

increment parameter in the .PARAMOPT command is used to define a grid of feasible integer<br />

points with uniform steps. A strategy is used which ignores the discretization requirement—it<br />

solves the problem with real variables and then rounds all the components to the nearest point<br />

onto the grid at the end of optimization. This strategy is based on the assumption that the<br />

increment value is sufficiently small. The problem solved by the optimizer is a continuous<br />

relaxation of the original MIP problem where the constraints of integrality on variables are<br />

simply relaxed.<br />

Related Topics<br />

Global and Local Optimization<br />

Smooth and Non-Smooth Problems<br />

Multiple-Run Compatibility<br />

Optimization of Sweep Simulations<br />

630<br />

Eldo® User's Manual, 15.3


Smooth and Non-Smooth Problems<br />

Optimization<br />

Smooth and Non-Smooth Problems<br />

When the functions corresponding to the design objectives do not have continuous derivatives<br />

or are not continuous at all, methods for smooth problems (such as the Eldo optimizer SQP<br />

algorithm) will encounter difficulties.<br />

Figure 13-7. Examples of Non-Smooth Problems<br />

It is assumed that the functions are continuous, with continuous derivatives on some domain (or<br />

sufficiently smooth). Figure 13-7 illustrates some of these difficulties:<br />

• Noisy function<br />

The overall trend is plotted with dashed lines. It is related to the effect of features such<br />

as adaptive algorithms and stopping tests in iterative methods inside the simulation. The<br />

noise is not stochastic in such situations.<br />

The Eldo optimizer SQP method will fail to make any progress because local descent<br />

directions may point uphill.<br />

• Non-smooth minimum (not differentiable)<br />

Functions such as ABS(.), MIN(.) or MAX(.) that are not differentiable in the common<br />

sense can represent minor difficulties when you only want to improve the current<br />

solution rather than optimization at full-blown optimality.<br />

• Discontinuous<br />

This leads to serious difficulties. It usually involves functions that are not numerical in<br />

nature, or the discontinuities may be the result of features such as table look-ups and<br />

switches.<br />

• Undefined<br />

Eldo® User's Manual, 15.3 631


Optimization<br />

Multiple-Run Compatibility<br />

This leads to serious difficulties. It may be the result of unexpected failures of the<br />

simulation or undefined extracted measures.<br />

Related Topics<br />

Global and Local Optimization<br />

Continuous and Discrete Optimization<br />

Multiple-Run Compatibility<br />

Optimization of Sweep Simulations<br />

Multiple-Run Compatibility<br />

The .OPTIMIZE command is compatible with the multiple-run features (.MPRUN). If<br />

.OPTIMIZE is specified together with option OPSELDO_ALTER, Eldo emulates a .MPRUN<br />

command using all the default values. If the netlist contains a .MPRUN command, then Eldo<br />

uses the parameter values specified in the netlist.<br />

Related Topics<br />

Global and Local Optimization<br />

Continuous and Discrete Optimization<br />

Smooth and Non-Smooth Problems<br />

Optimization of Sweep Simulations<br />

632<br />

Eldo® User's Manual, 15.3


Optimization of Sweep Simulations<br />

Optimization<br />

Optimization of Sweep Simulations<br />

The following topics explain how the optimizer behaves during a sweep analysis, and the<br />

options available to influence that behavior. They introduce the notion of sweep parameters and<br />

their role in the optimization process.<br />

The circuit parameters that are to be adjusted (such as width and length for MOS) should be<br />

considered separately from those associated with DC multi-point, transient, small-signal,<br />

frequency, or parametric analysis. The former are known as design variables and the latter<br />

design parameters.<br />

During a sweep analysis, the design parameters are a real-valued set Ω of <strong>user</strong>-defined<br />

discretizations. These are known as sweep parameters and are denoted by the Greek letter ω.<br />

Sweep parameters ω vary only within the simulator. They are not affected by the optimization<br />

algorithm. The parameter set Ω can be discretized using .TEMP, .DATA, and .STEP<br />

commands. For example, the Voltage-Temperature parameters temperature-voltage (TEMP,<br />

PVDD):<br />

.STEP TEMP -25 150 5<br />

.STEP PARAM PVDD 2.7 3.3 0.1<br />

define a cartesian product or a box Ω = [-25, 150] × [2.7, 3.3] in the 2-dimensional space R 2 .<br />

An example of a 2-dimensional domain Ω is shown in Figure 13-8. It is obtained from the<br />

multi-step specification:<br />

* Sweep parameters<br />

.STEP PARAM OMEGA_1 omega1_start omega1_end omega1_step<br />

.STEP PARAM OMEGA_2 omega2_start omega2_end omega2_step<br />

Figure 13-8. Discretization of Design Parameters<br />

Eldo® User's Manual, 15.3 633


Optimization<br />

Optimization of Sweep Simulations<br />

The extracted measure F is a bidimensional object of size defined by the range of the .STEP<br />

statements. Given the values of the variables x (fixed during each simulation), the simulator<br />

returns a value f = f(x; ω (1) , ω (2) ) for each discretized point (ω (1) , ω (2) ) of the domain Ω.<br />

See also:<br />

• “Global and Local Optimization” on page 629<br />

• “Continuous and Discrete Optimization” on page 630<br />

• “Smooth and Non-Smooth Problems” on page 631<br />

• “Multiple-Run Compatibility” on page 632<br />

Inner and Outer Sweep Parameters<br />

Consider the following minimization problem with respect to the x variable, where the design<br />

parameter ω belongs to the interval Ω = [ω start , ω end ].<br />

A formal circuit formulation example is:<br />

.PARAMOPT X=(XINIT, XL, XU)<br />

.STEP PARAM OMEGA OMEGA_START OMEGA_END OMEGA_INCR<br />

.OBJECTIVE<br />

+ EXTRACT_INFO LABEL=f<br />

+ {$MACRO|FUNCTION}<br />

+ GOAL=MINIMIZE<br />

.OPTIMIZE<br />

The strings XINIT, XL, and XU represent: the initial value of the design variable x, its lower<br />

bound, and its upper bound. Refer to “Specifying Design Variables” on page 596 for more<br />

information.<br />

The example optimization statements can be understood in two different ways:<br />

• The optimizer seeks the smallest value of the function:<br />

such that the value of x is within the interval [x l , x u ]. This case is represented in the right<br />

branch of Figure 13-9. Here the design parameter ω is handled as an inner sweep<br />

parameter.<br />

634<br />

Eldo® User's Manual, 15.3


Optimization<br />

Optimization of Sweep Simulations<br />

• The optimizer seeks the smallest value of f(x, ω i ) with respect to the fixed design<br />

variables x for each of the discretized values within the interval Ω = [ω start , ω end ]. This<br />

case is represented in the left branch of Figure 13-9. Here the design parameter ω is<br />

handled as an outer sweep parameter.<br />

Figure 13-9. Inner and Outer Sweep Parameters<br />

Related Topics<br />

Specifying Outer Design Parameters<br />

Hierarchy and Depth of Sweep Parameters<br />

Specifying Outer Design Parameters<br />

You can specify a design parameter as outer using the OUTER parameter in the .OPTIMIZE<br />

command or the OPSELDO_OUTER option. The former provides better control over the outer<br />

parameters.<br />

Eldo® User's Manual, 15.3 635


Optimization<br />

Optimization of Sweep Simulations<br />

Using the OUTER Parameter To Specify Outer Design Parameters<br />

By default, the parameters specified with a .PARAM command are inner design parameters.<br />

Use the OUTER parameter in the .OPTIMIZE command to specify one or more parameters as<br />

outer. The command syntax is:<br />

.OPTIMIZE<br />

+ [QUALIFIER=VALUE {, QUALIFIER=VALUE}]<br />

+ [PARAM=LIST_OF_VARIABLES|*]<br />

+ [RESULTS=LIST_OF_MEASURES|*]<br />

+ [OUTER=LIST_OF_PARAMETERS|*]<br />

There are some rules associated to the OUTER parameter:<br />

• The order of the design variables specified within the list of parameters<br />

LIST_OF_PARAMETERS has no precedence over the order specified in the netlist.<br />

• The OUTER parameter is not considered when the OPSELDO_OUTER is active and all<br />

the parameters are outer.<br />

• The OUTER parameter specification is not valid for .STEP commands using the library<br />

(corners) or temperature sweeps variants.<br />

For example:<br />

.OPTION OPSELDO_OUTER<br />

.STEP PARAM P1 <br />

.STEP PARAM P2 <br />

Both parameters are outer parameters:<br />

.STEP PARAM P1 <br />

.STEP PARAM P2 <br />

.OPTIMIZE OUTER=P2<br />

The parameter P2 is the only candidate for the outer loop.<br />

If the parameter of the .OPTIMIZE command is:<br />

.OPTIMIZE OUTER=P2,P1<br />

Then the parameter P1 would still be the outer-most within the outer loop as this is the order of<br />

the .STEP PARAM commands.<br />

A full optimization is performed for each outer design parameter.<br />

Using the OPSELDO_OUTER Option To Specify Outer Design Parameters<br />

It is also possible to reverse the behavior of optimization and sweep simulations using the<br />

OPSELDO_OUTER option. When specified, the sweep on all design parameters becomes outer<br />

with respect to the optimization process. An outer sweep is performed on the complete set of the<br />

636<br />

Eldo® User's Manual, 15.3


Optimization<br />

Optimization of Sweep Simulations<br />

parameters involved in the .STEP, .DATA and .TEMP commands, and a sequence of<br />

optimizations is launched, one for each of the discretized values in the sweep domain.<br />

Note<br />

When the OPSELDO_OUTER is active, the OUTER parameter in the .OPTIMIZE<br />

command is ignored.<br />

Related Topics<br />

Inner and Outer Sweep Parameters<br />

Hierarchy and Depth of Sweep Parameters<br />

Hierarchy and Depth of Sweep Parameters<br />

The hierarchy (or the default order of precedence) of the commands that define the variation of<br />

the parameters is given by the following:<br />

• Several .ALTER blocks with the label denoted by A 1 , A 2 , and so on.<br />

• A .TEMP command or a .STEP command on temperature:<br />

.TEMP T1 T2 ...<br />

.STEP TEMP T_START T_STOP T_INCR<br />

• A .STEP command using different variants of libraries (or corners K):<br />

.LIB mylib TYP<br />

.STEP LIB(mylib) K1 K2 ...<br />

• A .STEP command on circuit parameters:<br />

.STEP PARAM ALPHA ALPHA_START ALPHA_STOP ALPHA_INCR<br />

• Multiple sweeps or nested sweeps on parameters, and a parameter sweep in the analysis<br />

command. These parameters are denoted by a, b, and so on. The cases of DC, AC and<br />

transient analyses are represented by the command syntax:<br />

.{AC | TRAN} SWEEP DATA=DATA_SWEEP<br />

.DC SWEEP DATA=DATA_SWEEP<br />

where a two parameter sweep is defined with:<br />

Eldo® User's Manual, 15.3 637


Optimization<br />

Optimization of Sweep Simulations<br />

.DATA DATA_SWEEP ALPHA BETA<br />

+ ALPHA1 BETA1<br />

+ ALPHA2 BETA1<br />

*...<br />

+ ALPHAM BETA1<br />

+ ALPHA1 BETA2<br />

*...<br />

+ ALPHAM BETA2<br />

*...<br />

+ ALPHAM BETAP<br />

.ENDDATA<br />

• A DC data-driven analysis:<br />

.DC DATA=DATA_SWEEP<br />

• Transient and frequency analyses. The time and frequency parameters are denoted by<br />

the symbol ω.<br />

A design objective F can be represented as a family of real-valued functions of variables x. This<br />

family is parameterized with points that were denoted by A, T, K, α, β, ..., ω.<br />

The parameter ω is the inner-most parameter and the .ALTER label A is the outer-most<br />

parameter.<br />

This convention aims to fit with the order of the simulations. The simulator provides this<br />

hierarchy to the optimizer for specifying the depth of a design parameter. It is used in printing<br />

routines and in optimization algorithms.<br />

You can change the depth of a design parameter defined in a .STEP PARAM or .STEP TEMP<br />

command. Refer to “Inner and Outer Sweep Parameters” on page 634 for more information.<br />

When at the same hierarchical level, the order of precedence of the design parameters is defined<br />

by the simulator. For example, when the netlist contains the following statements, the parameter<br />

α will be the outer-most and β the inner-most:<br />

.STEP PARAM ALPHA <br />

.STEP PARAM BETA <br />

Related Topics<br />

Inner and Outer Sweep Parameters<br />

Specifying Outer Design Parameters<br />

638<br />

Eldo® User's Manual, 15.3


Optimization<br />

Post-Analysis of Optimization Simulations<br />

Post-Analysis of Optimization Simulations<br />

After the optimization has been conducted, the next step is to recognize whether it has<br />

succeeded in its task of finding a solution.<br />

The only way to check for success is to measure optimality and feasibility at the final solution.<br />

If the optimality measure is less than the specified tolerance, the current point is considered as<br />

optimal. For more information please refer to “Role of Tolerances in the Eldo Optimizer SQP<br />

Method” on page 624.<br />

This can be accomplished by analyzing the results of the optimization. There are two areas to be<br />

analyzed:<br />

• Whether the current set of variables are a solution to the problem. If the optimal<br />

conditions are not satisfied, these may provide some useful information on how the<br />

current estimate of the solution can be improved. Think of this as a global score of the<br />

optimization run.<br />

• The values of the extracted measures printed at the end of the process. This represents<br />

the post-optimization analysis.<br />

This section explains:<br />

Output from the Optimization Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639<br />

Explicitly Declaring Results For Graphical Viewing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641<br />

Viewing the ASCII Output File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642<br />

ASCII Optimization File Contents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643<br />

Monitoring Design Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653<br />

Final Diagnostic Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656<br />

Normal and Elastic Modes of Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659<br />

Output from the Optimization Process<br />

The results of an optimization are provided in two ways, ASCII and graphical outputs:<br />

• ASCII Output (.otm)<br />

The .otm optimization output file is useful for recognizing whether an optimization has<br />

succeeded in its task of finding a solution. It is a structured text file separated into<br />

sections and subsections. It uses a technique known as folding, enabling you to filter out<br />

one or more sections. You can get a better overview of the results text by folding lines of<br />

a section to omit them.<br />

By default, the output file is generated in the same directory from where <strong>eldo</strong> is run and<br />

is named .otm, where is the name of the simulation<br />

command file.<br />

Eldo® User's Manual, 15.3 639


Optimization<br />

Output from the Optimization Process<br />

For example, executing the following command:<br />

<strong>eldo</strong> lnaopt.cir<br />

generates an optimization output file named: lnaopt.otm<br />

Refer to “Viewing the ASCII Output File” on page 642.<br />

Note<br />

Section 2 - Status Of Variables and Section 3 - Status Of Objectives can also be<br />

found in a section called Results of Optimization that is towards the end of the<br />

standard Eldo simulation log file (.chi).<br />

• Graphical Output<br />

The optimizer also produces binary waveform files (.swd and .wdb). These contain<br />

extracted waves generated during the optimization process which can be viewed using<br />

the EZwave viewer. These implicitly declared waves have the same name as the extract<br />

label they refer to. They represent extract results versus the index of the run.<br />

Use the .PLOT command to explicitly declare results for graphical viewing.<br />

Related Topics<br />

Design Variables<br />

Design Objectives<br />

Optimization Methods<br />

Conducting an Eldo Optimization<br />

Examples of Circuit Optimization<br />

640<br />

Eldo® User's Manual, 15.3


Optimization<br />

Explicitly Declaring Results For Graphical Viewing<br />

Explicitly Declaring Results For Graphical Viewing<br />

Use the .PLOT command to explicitly declare results for graphical viewing.<br />

Syntax<br />

.PLOT OPT WOPT(label_name) [(LOW, HIGH)] [(VERSUS)]<br />

+ {OVN [(LOW, HIGH)]} [(SCATTERED)]<br />

Parameters<br />

• OPT<br />

Specifies an optimization analysis. The waves produced by this analysis can only be<br />

specified using the keyword WOPT.<br />

• WOPT<br />

Only available for extracting waves generated during an optimization process. These are<br />

implicitly declared waves which have the same name as the extract label they refer to. They<br />

represent extract results versus the index of the run.<br />

Examples<br />

.EXTRACT tran label=FOO yval(v(node),3n) !Define the extract<br />

.PLOT OPT WOPT(FOO)<br />

Related Topics<br />

Output from the Optimization Process<br />

Viewing the ASCII Output File<br />

ASCII Optimization File Contents<br />

Monitoring Design Objectives<br />

Final Diagnostic Conditions<br />

Normal and Elastic Modes of Termination<br />

Eldo® User's Manual, 15.3 641


Optimization<br />

Viewing the ASCII Output File<br />

Viewing the ASCII Output File<br />

The ASCII results from the optimizer output file (.otm) can be viewed by running the utility<br />

named viewotm. This utility can be invoked from the command line as follows:<br />

Syntax<br />

viewotm [-l d] -f file.otm<br />

Parameters<br />

• -l d<br />

Specifies the level of detail to view, from 1 to 5. Level 1 (default) gives the least detail while<br />

level 5 gives the most.<br />

-l 1<br />

A summary of the results of the optimization is displayed (merit function, values of<br />

the variables, and the objectives)<br />

-l 2<br />

Some additional information relating to the initialization phase is displayed.<br />

-l 3, 4, or 5<br />

The information displayed is progressively more detailed.<br />

When an outer loop has been performed, the amount of data can be very large. In this case<br />

level 1 only reports the simplified results in a table at the end of the .otm file. An example is<br />

given in “Solving Problems with Pseudodiscrete Variables” on page 668.<br />

• -f<br />

Name of the .otm file to be displayed.<br />

Related Topics<br />

Output from the Optimization Process<br />

Explicitly Declaring Results For Graphical Viewing<br />

ASCII Optimization File Contents<br />

Monitoring Design Objectives<br />

Final Diagnostic Conditions<br />

Normal and Elastic Modes of Termination<br />

642<br />

Eldo® User's Manual, 15.3


Optimization<br />

ASCII Optimization File Contents<br />

ASCII Optimization File Contents<br />

This section describes the content of the optimization file (.otm) in detail. The file is divided<br />

into main sections, each with their own subsections:<br />

• Initialization of Problem Data<br />

• Optimization Phase<br />

• Optimization Results<br />

• Optimization Results with Respect to the Outer Loop<br />

The level of the output is controlled by the parameter PRN_VAL (see “Specifying Design<br />

Objectives Using .OBJECTIVE” on page 608).<br />

Initialization of Problem Data<br />

The first section of the optimization file (.otm), related to the initialization of problem data, is<br />

divided into further subsections.<br />

Section 1 - Scaling Transformation For Design Objectives<br />

• Formula — Scaling formula, for example: Scaled Obj = DF * Simulated Obj.<br />

• Type — Type of objective.<br />

• Name — Label given to the objective.<br />

• DF Factor — Magnitude factor.<br />

• Weight — Weighting number.<br />

• Rel Wght — Relative weight.<br />

Eldo® User's Manual, 15.3 643


Optimization<br />

ASCII Optimization File Contents<br />

Figure 13-10. Scaling Transformation For Design Objectives Output<br />

Section 2 - Scaling Transformation For Variables<br />

• Formula — Scaling formula, for example: Scaled Var = D * Prob Var - C.<br />

• Name — Label given to the design variable.<br />

• Init Value — Initial value of the variable.<br />

• Increment — Uniform increment on the grid.<br />

• Scal Value — Scaled value.<br />

• D Factor — Amplitude factor.<br />

• C Parameter — Centering parameter.<br />

644<br />

Eldo® User's Manual, 15.3


Optimization<br />

ASCII Optimization File Contents<br />

Figure 13-11. Scaling Transformation for Variables Output<br />

Note<br />

The example in Figure 13-11 is cropped for readability.<br />

Related Topics<br />

Optimization Phase<br />

Optimization Results<br />

Optimization Results with Respect to the Outer Loop<br />

Optimization Phase<br />

The second section of the optimization file (.otm) is related to the optimization phase.<br />

• Algorithm — Optimization algorithm.<br />

• Control parameters — Control parameters for the optimization.<br />

• Number of connected simulators — Number of simulators that are in use.<br />

• Dimension of the aggregated problem<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

Number of variables — Number of design variables.<br />

Fixed variables — Number of variables which are fixed.<br />

Bounded variables — Number of design variables which are bounded.<br />

Number of goals — Number of objective goals.<br />

Equality constraints — Number of goals which are equality constraints.<br />

Inequality constraints — Number of goals which are inequality constraints.<br />

Eldo® User's Manual, 15.3 645


Optimization<br />

ASCII Optimization File Contents<br />

• Iter — Major iteration number.<br />

• Simul — Cumulative number of simulations performed at the current iteration.<br />

• LS Step — The step length α k taking the direction s k at the kth iteration. This step length<br />

is used to update the current iterate with the formula: x k+1 = x k + α k s k .<br />

• Merit Function — Value of the merit function.<br />

• Feas — Measure of feasibility. Will be small in the vicinity of a solution.<br />

• Optim — Measure of optimality. Will be small in the vicinity of a solution.<br />

• Slack — Norm of the slack variables added to the range constraints to prevent a<br />

potential inconsistency.<br />

Figure 13-12. Optimization Phase Output<br />

Related Topics<br />

Output from the Optimization Process<br />

Explicitly Declaring Results For Graphical Viewing<br />

Viewing the ASCII Output File<br />

Initialization of Problem Data<br />

646<br />

Eldo® User's Manual, 15.3


Optimization<br />

ASCII Optimization File Contents<br />

Optimization Results<br />

Optimization Results with Respect to the Outer Loop<br />

Optimization Results<br />

The third section of the optimization file (.otm), related to the optimization results, is divided<br />

into further subsections.<br />

Section 1 - Statistics and Diagnostics<br />

• Number Of Iterations — Total number of iterations of the optimization.<br />

• Number Of Simulations — Total number of simulations during the optimization.<br />

• Merit Function — Final value of the merit function.<br />

• Optimality — Final measure of optimality.<br />

• Feasibility — Final measure of feasibility.<br />

• Final Diagnostics — Finishing status code.<br />

• Final running mode — Indication of whether the optimization ran normally.<br />

• Global elapsed time — Time the optimization took to run.<br />

Figure 13-13. Statistics and Diagnostics Output<br />

Eldo® User's Manual, 15.3 647


Optimization<br />

ASCII Optimization File Contents<br />

Section 2 - Status Of Variables<br />

• Name — Name of the design variable.<br />

• Status — Status of the design variable from:<br />

o<br />

o<br />

o<br />

o<br />

o<br />

FR — Always free<br />

FX — Always fixed<br />

LWR — At lower bound<br />

UPR — At upper bound<br />

BND — Free and bounded<br />

• Init Value — Initial continuous value of the design variable.<br />

• Final Value — Best continuous value of the design variable found so far.<br />

• Lower Bound — Lower bound of the design variable.<br />

• Upper Bound — Upper bound of the design variable.<br />

• Discr Value — Discretized value of the design variable.<br />

Figure 13-14. Status of Variables Output<br />

Note<br />

The example in Figure 13-14 is cropped for readability.<br />

Section 3 - Status Of Objectives<br />

• Type — Type of objective.<br />

• Name — Name of the objective.<br />

• Init Value — Initial value of the objective.<br />

• Opt Value — Current value of the objective.<br />

• Rel Wght — Relative weight.<br />

• Rel Chg — Relative change from initial value (as a percentage).<br />

• Goal Objectives and Equality Constraints<br />

648<br />

Eldo® User's Manual, 15.3


o<br />

o<br />

Goal Value — Goal value of the objective.<br />

Abs Error — Absolute error of the objective from the goal value.<br />

• Inequality Constraints<br />

o<br />

o<br />

o<br />

Violation — Indication of a violation on the constraint.<br />

Lower Bnd — Lower bound on objective.<br />

Upper Bnd — Upper bound on objective.<br />

Optimization<br />

ASCII Optimization File Contents<br />

The inequality constraints (with LBOUND and UBOUND parameters) are printed with an<br />

additional status represented by a symbol “***” if the constraint violation is non zero. This<br />

symbol is printed to indicate that the initial or the final objectives are not satisfied.<br />

Figure 13-15. Status of Objectives Output<br />

Note<br />

The example in Figure 13-15 is cropped for readability.<br />

Section 4 - Analysis Of Last Simulation<br />

• Type — Type of design objective.<br />

• Name/Index — Label given to the d=objective.<br />

Eldo® User's Manual, 15.3 649


Optimization<br />

ASCII Optimization File Contents<br />

• Opt/Final Value — Final value of the objective.<br />

• Discr Value — Objective value after discretization.<br />

• Rel Diff — Relative difference between final and discretization value (as a percentage).<br />

• Goal Objectives and Equality Constraints<br />

o<br />

o<br />

Opt/Final Err — Error value of the goal.<br />

Discr Err — Error after discretization.<br />

• Inequality Constraints<br />

o<br />

o<br />

o<br />

o<br />

Opt/Final Viol — Indicates a violation on the constraint.<br />

Discr Viol — Indicates a violation after discretization.<br />

Lower Bnd — Lower bound on the objective.<br />

Upper Bnd — Upper bound on the objective.<br />

Figure 13-16. Analysis Of Last Simulation Output<br />

Note<br />

The example in Figure 13-16 is cropped for readability.<br />

650<br />

Eldo® User's Manual, 15.3


Optimization<br />

ASCII Optimization File Contents<br />

Related Topics<br />

Initialization of Problem Data<br />

Optimization Phase<br />

Optimization Results with Respect to the Outer Loop<br />

Optimization Results with Respect to the Outer Loop<br />

The fourth section of the optimization file (.otm) is related to the optimization results with<br />

respect to the outer loop.<br />

• Run — Run number.<br />

• Iter — Major iteration number.<br />

• Simul — Cumulative number of simulations performed at the current iteration.<br />

• Merit Function — Value of the merit function.<br />

• Feas — Measure of feasibility. Will be small in the vicinity of a solution.<br />

• Optim — Measure of optimality. Will be small in the vicinity of a solution.<br />

• Slack — Norm of the slack variables added to the range constraints to prevent a<br />

potential inconsistency.<br />

• Outer Parameters — Values of the outer parameters for this run. Displayed only when<br />

outer loops are performed.<br />

Figure 13-17. Optimization Results with Respect to the Outer Loop Output<br />

Note<br />

The example in Figure 13-17 is cropped for readability.<br />

Eldo® User's Manual, 15.3 651


Optimization<br />

ASCII Optimization File Contents<br />

Related Topics<br />

Initialization of Problem Data<br />

Optimization Phase<br />

Optimization Results<br />

652<br />

Eldo® User's Manual, 15.3


Optimization<br />

Monitoring Design Objectives<br />

Monitoring Design Objectives<br />

The information in the .otm file can be enriched. Additional columns labelled with the name of<br />

a design objective can be printed during the optimization process, enabling you to monitor the<br />

optimization process more closely.<br />

This is achieved through specifying the parameter MONIT_VAL=QUALIFIER within the<br />

.OBJECTIVE command. This parameter specifies how the current values of a design objective<br />

are printed during optimization. Multiple options are allowed and these should be separated by<br />

commas. The default value is MEAN.<br />

Note<br />

When a design objective is represented by a single value, this value is printed as a raw<br />

number.<br />

This section uses examples to examine:<br />

Monitoring Goal Value Objectives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653<br />

Monitoring Minimize and Maximize Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654<br />

Monitoring Bound Objectives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655<br />

Monitoring Goal Value Objectives<br />

Consider the GOAL objective statement for example:<br />

.OBJECTIVE DC LABEL=FIT_IDRAIN I(V101)<br />

+ GOAL=DATA_D25X25(IDS) TYPVAL=1E-4 MONIT_VAL=ERRMEAN<br />

The output would look like:<br />

The options that are available are:<br />

• MONIT_VAL=MEAN, the printed value will be the sum , which is the<br />

mean value of the functions f (k) r (x).<br />

Eldo® User's Manual, 15.3 653


Optimization<br />

Monitoring Design Objectives<br />

• MONIT_VAL=MAX or MONIT_VAL=MIN, the printed value will be the maximum<br />

Max{f r (k) (x)} or the minimum Min{f r (k) (x)}.<br />

• MONIT_VAL=ERRMEAN, the printed value will be the sum<br />

of the squared residuals.<br />

• MONIT_VAL=ERRMAX or MONIT_VAL=ERRMIN, the printed value will be the<br />

maximal error function Max{|f (k) r (x) − r (k) |} or the minimal error function Min{|f (k) r (x) −<br />

r (k) |}.<br />

Related Topics<br />

Design Objectives<br />

Output from the Optimization Process<br />

Explicitly Declaring Results For Graphical Viewing<br />

Viewing the ASCII Output File<br />

ASCII Optimization File Contents<br />

Final Diagnostic Conditions<br />

Normal and Elastic Modes of Termination<br />

Monitoring Minimize and Maximize Objectives<br />

When the design objectives are specified as MINIMIZE and MAXIMIZE there is no error<br />

function associated with the objectives.<br />

Consider the following netlist as a basic example:<br />

* Design parameter (temperature)<br />

.STEP TEMP -25 150 5<br />

* Design variable specification<br />

.PARAMOPT x = (x0,a,b)<br />

* Minimization<br />

.OBJECTIVE EXTRACT_INFO LABEL=f_m {$MACRO|FUNCTION}<br />

+ GOAL=MINIMIZE MONIT_VAL=ERRMEAN<br />

This will minimize the functions f m (x; T k ) with respect to design variable x which is subject to<br />

the constraints a ≤ x ≤ b, where T k represents a point of discretization in the temperature interval<br />

[-25, 150].<br />

You can monitor the mean value or the max/min values of these types of objectives:<br />

654<br />

Eldo® User's Manual, 15.3


Optimization<br />

Monitoring Design Objectives<br />

• MONIT_VAL=MEAN, the printed value will be the sum .<br />

• MONIT_VAL=MAX or MONIT_VAL=MIN, the printed value will be the maximum<br />

Max{f r (k) (x)} or the minimum Min{f r (k) (x)}.<br />

Related Topics<br />

Monitoring Goal Value Objectives<br />

Monitoring Bound Objectives<br />

Optimization Methods<br />

Monitoring Bound Objectives<br />

Consider the case of objectives bound by inequality constraints. The notion of error functions<br />

can be extended to this case. These functions are called the violation associated to a constraint.<br />

Consider a group of range constraints:<br />

l (k) ≤ f r (k) (x) ≤ u (k)<br />

the maximum violations v u and v l are defined as follows:<br />

v u (k) = max{0, f i (k) (x) − u (k) }<br />

and<br />

v l (k) = max{0, l (k) − f i (k) (x)}<br />

These numbers are always positive v l, u ≥ 0. This is summarized in the following list:<br />

• MONIT_VAL=MEAN, the printed value will be the sum:<br />

• MONIT_VAL=MAX or MONIT_VAL=MIN, the printed value will be:<br />

The maximum Max{f r (k) (x)} or the minimum Min{f r (k) (x)}.<br />

• MONIT_VAL=ERRMEAN, the printed value will be the mean value of the constraint<br />

violations:<br />

Eldo® User's Manual, 15.3 655


Optimization<br />

Final Diagnostic Conditions<br />

• MONIT_VAL=ERRMAX or MONIT_VAL=ERRMIN, the printed value will be:<br />

The maximal constraint violation Max k {v<br />

(k)<br />

l + v (k) u } or the minimal constraint violation<br />

Min k {v<br />

(k)<br />

l + v (k) u }.<br />

Related Topics<br />

Monitoring Goal Value Objectives<br />

Monitoring Minimize and Maximize Objectives<br />

Optimization Methods<br />

Final Diagnostic Conditions<br />

When the optimizer has finished, a status code is printed in the optimization results. It is<br />

essential to check the value of this code (and its associated message) and the effective results of<br />

optimization (design variables and objectives).<br />

The final diagnostics indicate the final status of the optimizer before it exits. These messages<br />

and their meaning are described in Table 13-3:<br />

Table 13-3. Optimization Result Status Code<br />

Code Message and meaning<br />

0 The optimization seems to be successful. The required accuracy has been achieved.<br />

The iterates have converged to a point that satisfies the optimality conditions to<br />

the accuracy requested by the optional parameters TOL_OPT or TOL_GRAD and<br />

TOL_FEAS (refer to “Optimization Methods” on page 622). The <strong>user</strong> should<br />

verify whether the following two conditions have been satisfied:<br />

• The final values of Optimality are significantly small.<br />

• The final values of Feasibility are significantly small. This is set to zero if there<br />

are no equality or inequality constraints.<br />

1 Optimization was not successful. The maximum number of simulation runs has<br />

been reached.<br />

The limiting number of iterations, determined by the optional parameter<br />

MAX_ITER has been reached.<br />

Check the iteration log contained in the .otm file. If the optimizer appears to be<br />

making progress, MAX_ITER may be too small. If so, increase its value and rerun<br />

the optimizer, possibly using the values of the design variables obtained so far (this<br />

can be considered as a warm start).<br />

656<br />

Eldo® User's Manual, 15.3


Code<br />

Table 13-3. Optimization Result Status Code (cont.)<br />

Message and meaning<br />

Optimization<br />

Final Diagnostic Conditions<br />

2 The current point cannot be improved. A sufficient decrease in the merit function<br />

could not be attained during the last line search. This may occur because the <strong>user</strong><br />

has requested an overly stringent accuracy.<br />

A sufficient decrease in the merit function could not be attained during the final<br />

line search. This sometimes occurs because an overly stringent accuracy has been<br />

requested, that is, TOL_OPT is too small. In this case verify the following to<br />

determine whether or not the final solution is acceptable:<br />

• The final values of Optimality are significantly small.<br />

• The final values of Feasibility are significantly small. This is set to zero if there<br />

are no equality or inequality constraints.<br />

An additional status code may be raised, of value: 0, 6, or 11.<br />

4 Optimization was not successful. The maximum number of simulation runs has<br />

been reached.<br />

The limiting number of simulations, determined by the optional parameter<br />

MAX_SIMUL has been reached.<br />

6 The current point is feasible and quite optimal, however, the required accuracy has<br />

not been achieved. The optimizer is within 1e-2 of satisfying the TOL_OPT (or<br />

TOL_GRAD) optimality tolerance.<br />

The optimizer is within 1x10 −2 of satisfying the TOL_OPT (or TOL_GRAD)<br />

optimality tolerance. For the next runs, check that TOL_OPT is not too small.<br />

7 The objective function may be unbounded on the feasible set. Alternatively, it may<br />

happen that the scaling of the problem is very poor.<br />

To avoid this situation, if the MINIMIZE or MAXIMIZE objectives are close to<br />

singularities, define bounds on some variables. Also use an appropriate scaling of<br />

the design objectives.<br />

8 The simulation process stopped the optimization. The optimization was<br />

abandoned.<br />

This message is raised only after an interrupt message (Ctrl+C).<br />

9 The current point cannot be improved. The problem is too hard to solve. Try with<br />

another starting point.<br />

This has to be considered as a failure of the optimizer regarding the treatment of<br />

constraint feasibilities. Please refer to “Normal and Elastic Modes of Termination”<br />

on page 659. Check that the final solution is not an acceptable point for the<br />

problem.<br />

10 The current point cannot be improved. The Hessian matrix has been reset too many<br />

times. It indicates that the line search failed to find a sufficiently better point for a<br />

large number of iterations.<br />

This message should appear very rarely. This is an algorithmic weakness of the<br />

method implemented in the Eldo optimizer SQP method. Try to start the<br />

optimization from a different point.<br />

Eldo® User's Manual, 15.3 657


Optimization<br />

Final Diagnostic Conditions<br />

Code<br />

Table 13-3. Optimization Result Status Code (cont.)<br />

Message and meaning<br />

11 The starting point cannot be improved. It may happen that the derivative are<br />

inaccurate or the starting point is already critical.<br />

Check that the objectives to optimize are well-defined at the starting point.<br />

12 The current point cannot be improved. The last QP step was too poor to allow a<br />

sufficient progress of the iterations.<br />

This may indicate that the extracted measures and their derivatives have a low<br />

precision at the current point.<br />

13 Optimization was not successful. Either the objective function or the constraints<br />

seem to be undefined at the starting point. The optimization was abandoned.<br />

The current version of the Eldo optimizer SQP method cannot handle problems<br />

where the objectives returned by Eldo (at the first iterate) have the UNDEF value.<br />

Try to eliminate such cases by using a two-stage approach.<br />

14 Please refer to code 2.<br />

15 Please refer to code 2.<br />

Related Topics<br />

Output from the Optimization Process<br />

Explicitly Declaring Results For Graphical Viewing<br />

Viewing the ASCII Output File<br />

ASCII Optimization File Contents<br />

Monitoring Design Objectives<br />

Normal and Elastic Modes of Termination<br />

658<br />

Eldo® User's Manual, 15.3


Optimization<br />

Normal and Elastic Modes of Termination<br />

Normal and Elastic Modes of Termination<br />

The SQP algorithm is able to make explicit allowance for infeasible constraints when<br />

computing the incremental steps obtained from a sequence of sub-problems. This phenomenon<br />

is referred to as local infeasibility.<br />

In constrained optimization, a situation where no feasible solution exists can occur. In this case<br />

the constraints are inconsistent and the problem is infeasible. If all the constraints are bounds on<br />

the variables x<br />

(i)<br />

l ≤ x (i) ≤ x<br />

(i)<br />

u it is simple to determine whether a feasible point exists, since the<br />

(i)<br />

ith is only inconsistent when x l > x (i) u . Such infeasibilities are automatically trapped when<br />

parsing the .PARAMOPT command.<br />

Conversely, with general constraints there are no simple characteristics that identify whether a<br />

feasible solution exists.<br />

This section describes how the algorithm performs a shift of bounds on objectives to make a<br />

locally infeasible problem feasible. It handles:<br />

Constraint Violations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659<br />

Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661<br />

Constraint Violations<br />

The following simple example illustrates one possible situation.<br />

Consider the optimization problem with two variables x 1 and x 2 :<br />

.PARAMOPT X1=(4, 0, *)<br />

.PARAMOPT X2=(7, 0, *)<br />

.OBJECTIVE DC LABEL=C (X1 + X2) UBOUND=-1<br />

These statements define two bound constraints on the variables x 1 ≥ 0 and x 2 ≥ 0, and the linear<br />

constraint on the measure x 1 + x 2 ≤ -1.<br />

By considering the graphical representation displayed in the left part of Figure 13-18, you can<br />

see that they define two disjoint sets of points. The optimization problem is thus infeasible.<br />

Eldo® User's Manual, 15.3 659


Optimization<br />

Normal and Elastic Modes of Termination<br />

Figure 13-18. Illustration of Constraint Violations<br />

To cope with this issue, the SQP optimizer can run in one of two different modes:<br />

• normal mode<br />

• elastic mode<br />

The algorithm automatically enters the ‘elastic’ mode when a situation of infeasibility is<br />

detected. This mode performs a shift of the bounds on constraints.<br />

In our example, add a positive number v ≥ 0 to the upper bound UBOUND such that x 1 + x 2 ≤ -<br />

1 + v then try to minimize the value of v, the constraint violation. This numerical modification is<br />

graphically displayed in the right part of Figure 13-18, where the green colored area represents<br />

the non empty feasible domain. It is clear that v = 1 is the smallest of the violation such that<br />

there exist a feasible point.<br />

If this simple problem is solved with the SQP optimizer, the .otm file gives the following results<br />

for the optimized variable:<br />

Section 2 - Status Of Variables<br />

-------------------------------<br />

Name Status Init Value Final Value Lower Bound<br />

X1 BND 4.0000e+00 0.0000e+00 0.0000e+00<br />

X2 BND 7.0000e+00 0.0000e+00 0.0000e+00<br />

The final value of the parameters is (0,0).<br />

The final status of the objective is given by:<br />

660<br />

Eldo® User's Manual, 15.3


Optimization<br />

Normal and Elastic Modes of Termination<br />

Section 3 - Status Of Objectives<br />

--------------------------------<br />

*** Inequality Constraints in simulator id(0)<br />

Type Name Init Value Opt Value Violation<br />

UPR CONSTR1 *** 1.1000e+01 1.0000e-06 *** 1.0000e+00<br />

The optimal value is 1.0×10 −6 and the violation (or equivalently the value of the additional<br />

variable v) is shown in the last column as being the strictly positive value 1.0.<br />

Note<br />

This approach has very interesting properties. For instance, the optimal solution often<br />

violates only a small number of the constraints and a point that satisfies many of the<br />

constraints is computed, that is, a large subset of constraints that are feasible have been<br />

identified. This is more informative than finding that the constraints are mutually feasible (this<br />

approach is closely related to the L1-norm regularization technique).<br />

Related Topics<br />

Slack<br />

Slack<br />

For this next example, consider the following problem with two variables. The aim is to<br />

minimize some function f(x 1 , x 2 ) subject to the constraints:<br />

• (x 1 + 1) 2 + x 2 2 ≥ 0.75 which defines a disk centered at (-1, 0) with radius √3/2.<br />

• (x 1 − 1) 2 + x 2 2 ≤ 0.75 which defines the symmetrical disk centered at (1, 0).<br />

Figure 13-19 illustrates this situation.<br />

Eldo® User's Manual, 15.3 661


Optimization<br />

Normal and Elastic Modes of Termination<br />

Figure 13-19. Illustration of Slack<br />

It is clear that there is no feasible solution. Running the Eldo optimizer on this example:<br />

.PARAMOPT X1=(-2, *, *)<br />

.PARAMOPT X2=(-2, *, *)<br />

.OBJECTIVE DC LABEL=CIRCLE1 ( (X1-1)**2 + X2**2 ) UBOUND=0.75<br />

.OBJECTIVE DC LABEL=CIRCLE2 ( (X1+1)**2 + X2**2 ) UBOUND=0.75<br />

gives the following output:<br />

==> Starting Optimization...<br />

Iteration 0: Feas = 1.2e+01, Optim = 6.0e+00<br />

Iter Simul LS Step Merit Function Feas Optim Slack<br />

1 10 1.0e+00 6.3505943e-01 1.2e+00 6.0e-04 0.0e+00<br />

2 16 3.3e-01 1.7787634e+00 3.9e-01 7.8e-01 0.0e+00<br />

3 22 1.9e-01 4.3108310e+00 2.9e-01 9.0e-01 0.0e+00<br />

4 28 3.4e-02 3.7393098e+01 2.5e-01 1.3e+00 0.0e+00<br />

5 34 3.7e-04 6.5283185e+03 2.5e-01 1.9e+00 0.0e+00<br />

6 40 1.0e-00 1.5304677e+04 2.5e-01 2.0e+00 3.5e+00<br />

7 46 2.2e-01 1.5238534e+04 5.1e-03 7.7e+03 3.6e-01<br />

8 53 1.3e-02 1.4929878e+04 5.1e-03 7.5e+03 3.5e-01<br />

9 61 9.9e-01 1.5000628e+04 1.1e-02 1.9e+03 3.5e-01<br />

Iter Simul LS Step Merit Function Feas Optim Slack<br />

10 65 1.0e+00 1.5000626e+04 4.1e-04 2.8e+01 3.5e-01<br />

11 69 1.0e+00 1.5000625e+04 1.2e-07 1.4e+01 3.5e-01<br />

==> End Of The Optimization Phase<br />

662<br />

Eldo® User's Manual, 15.3


Optimization<br />

Normal and Elastic Modes of Termination<br />

The column Slack is the value of the global constraint violation — the norm of the artificial<br />

variables (v 1 , v 2 ) added to the upper bound UBOUND for each constraint. The constraints<br />

become:<br />

• (x 1 + 1) 2 + x 2<br />

2<br />

≥ 0.75 + v 1 .<br />

• (x 1 − 1) 2 + x 2<br />

2<br />

≤ 0.75 + v 2 .<br />

The value of the slack becomes strictly positive after the 6th iteration. This phenomenon can be<br />

interpreted as follows:<br />

• After the 6th iteration the algorithm detected that the problem is locally infeasible.<br />

• Two artificial variables are then introduced such that the constraints become consistent.<br />

Graphically, this can be interpreted as increasing the radius of the two circles such that<br />

they do intersect.<br />

• The goal of the algorithm is then to find a solution point such that the constraint<br />

violation is minimized.<br />

The final solution is given in the following output:<br />

Section 2 - Status Of Variables<br />

-------------------------------<br />

Name Status Init Value Final Value<br />

X1 FR -2.0000e+00 -5.0009e-07<br />

X2 FR -2.0000e+00 1.6166e-05<br />

Section 3 - Status Of Objectives<br />

--------------------------------<br />

*** Inequality Constraints in simulator id(0)<br />

Type Name Init Value Opt Value Violation<br />

UPR CIRCLE1 *** 1.3000e+01 1.0000e+00 *** 2.5000e-01<br />

UPR CIRCLE2 *** 5.0000e+00 1.0000e-00 *** 2.5000e-01<br />

Constraint violations have been minimized. The actual value of the violation is v 1 = 0.25 for the<br />

first constraint and v 2 = 0.25 for the second. The solution point is approximately the origin (0,<br />

0). The algorithm automatically increased the radius of each circle such that the feasible domain<br />

becomes a non empty set. The feasible set reduces to the singleton (0, 0).<br />

Related Topics<br />

Constraint Violations<br />

Eldo® User's Manual, 15.3 663


Optimization<br />

Examples of Circuit Optimization<br />

Examples of Circuit Optimization<br />

A number of example files are provided to illustrate the Eldo Optimizer.<br />

See Table 13-4 for filenames and descriptions of the example files provided in your installed<br />

directory: $MGC_AMS_HOME/examples/optimizer/<br />

Table 13-4. Basic Examples of Circuit Optimization<br />

Example File name Description<br />

Designing a Low Noise Amplifier<br />

(LNA)<br />

lnaopt.cir<br />

Optimization using AC, Noise and<br />

SST analyses<br />

Fourband Filter Optimization fourband.cir Optimization of a filter response<br />

MOS Characterization nmos.cir Double DC sweep optimization and<br />

ALTER blocks<br />

Robust Optimization Using Corners aop_optim.cir Optimization of a 2-stage operational<br />

amplifier using ALTER blocks<br />

Setup Time Computation<br />

Optimization of the setup time<br />

computation of a flip-flop<br />

Designing a Low Noise Amplifier (LNA)<br />

Netlist file: lnaopt.cir<br />

The Low Noise Amplifier (LNA) architecture is a fully balanced dual-gain amplifier for<br />

achieving gain, linearity, and the noise specifications for a Zero-IF receiver architecture. Output<br />

power matching is not required since the output load is given by the integrated mixer.<br />

This example will show how the Eldo optimizer can be used for a LNA. The architecture of the<br />

LNA is based on the 2.45GHz Switched-Gain CMOS LNA [6]. The high-gain stage is a fully<br />

balanced cascade configuration with an integrated LC tank as the load. This design reduces the<br />

Miller effect and improves isolation (-S12). The low-gain stage consists of two NMOS devices<br />

used as switches to achieve the required linearity and insertion loss.<br />

The main characteristics are: Voltage Gain (AV), Input Power Matching (S11), Noise Figure<br />

(NF), and Input Third Order Intercept Point (IIP3). The circuit parameters are:<br />

• Input Network Model (CPIN1, CPIN2, LSIN, CSIN).<br />

• Source Inductor (associated with serial resistance).<br />

• NMOS Width (composed of 10mm length fingers).<br />

The input network consists of a serial capacitor (CSIN) used to isolate the LNA DC from the<br />

input. A p-network (consists of CPIN1, CPIN2, LSIN) enables simultaneous input power and<br />

noise matching. Changing the source inductor (LS) and the width of the NMOS through the<br />

664<br />

Eldo® User's Manual, 15.3


Optimization<br />

Designing a Low Noise Amplifier (LNA)<br />

number of fingers (N1) will improve noise matching, input power matching, and linearity<br />

characteristics such as IIP3 (the current and the load values are fixed to 6mA and 200Ω<br />

respectively).<br />

Analyses<br />

Using a single testbench, different analyses were simulated to extract the following key<br />

specifications:<br />

• An AC analysis to extract Return Loss and the Voltage Gain.<br />

• A NOISE analysis for extracting the Noise Figure.<br />

• A multi-tone SST analysis for the IIP3.<br />

* Parameters<br />

.PARAM VG=0.6 VD=1.8<br />

.PARAM FUND1=2.45G FUND2=2.46G PIN=-50<br />

.PARAM IS=6m ROUT=200 RS=LS/1N<br />

VIN IN 0 RPORT=50 IPORT=1 AC 1 FOUR FUND1 FUND2 PDBM (1,0) PIN -90<br />

+ (0,1) PIN -90<br />

VOUT OUT 0 RPORT=ROUT IPORT=2<br />

* Analyses<br />

.DC<br />

.AC LIN 11 2G 3G<br />

.SST FUND1=FUND1 NHARM1=5 FUND2=FUND2 NHARM2=5<br />

.NOISE V(OUT) VIN 10<br />

.SNF INPUT=(VIN) OUTPUT=(VOUT)<br />

* Plots<br />

.PLOT AC SDB(1,1)<br />

.PLOT NOISE DB(SNF) DB(NFMIN)<br />

.DEFWAVE AV_DB=VDB(OUT)-VDB(IN)<br />

.PLOT AC W(AV_DB)<br />

The .DEFWAVE command was used to define the voltage gain (dB).<br />

Design Variables<br />

For the optimization analysis, each parameter has an initial value, together with lower and upper<br />

bounds. For example, the capacitor CPIN1 has an initial value of 0.1p with lower and upper<br />

bounds of 0.10p and 10p respectively. Our problem has bound constraints on the variables.<br />

The variables LS and N1 are specified using the fourth parameter of the .PARAMOPT<br />

command. It means that these parameters are allowed to lie only on a discretized grid (the fourth<br />

parameter gives the step of this grid). Refer to “Eldo Optimization Methods” on page 592 for<br />

more information, and also the “Solving Problems with Pseudodiscrete Variables” on page 668.<br />

The design variables are specified as:<br />

Eldo® User's Manual, 15.3 665


Optimization<br />

Designing a Low Noise Amplifier (LNA)<br />

.PARAMOPT<br />

+ CPIN1=(0.1P,0.10P,10P)! 0.1x10-12 ≤ CPIN1 ≤ 10x10-12<br />

+ CPIN2=(0.1P,0.10P,10P)! 0.1x10-12 ≤ CPIN2 ≤ 10x10-12<br />

+ LSIN=(0.1N,0,30N)! 0 ≤ LSIN ≤ 30x10-9<br />

+ CSIN=(1P,0.10P,10P)! 0.1x10-12 ≤ CSIN ≤ 10x10-12<br />

+ LS=(0.25N,0,3N,0.25N)! 0 ≤ LS ≤ 3x10-9<br />

+ N1=(30,10,50,5)! 10 ≤ N1 ≤ 50<br />

The degenerative integrated inductor (LS) would typically come from a design kit library. In<br />

our context, it is useful to specify the unit step (0.25n) to obtain the optimal matching inductor.<br />

Design Objectives and Extracted Measures<br />

To specify design objectives, the keyword GOAL is used on the .EXTRACT command, this<br />

describes the ideal target that the <strong>user</strong> would like to reach for this specification with the<br />

optimization process.<br />

* AC Analysis<br />

.EXTRACT AC LABEL=AV_dB@2.4GHz YVAL(WR(AV_DB),2.4G) GOAL=20<br />

.EXTRACT AC LABEL=AV_dB@2.5GHz YVAL(WR(AV_DB),2.5G) GOAL=20<br />

.EXTRACT AC LABEL=S11_dB@2.4GHz YVAL(SDB(1,1),2.4G) GOAL=-15<br />

.EXTRACT AC LABEL=S11_dB@2.5GHz YVAL(SDB(1,1),2.5G) GOAL=-15<br />

* Noise Analysis<br />

.EXTRACT NOISE LABEL=NF_dB@2.4GHz YVAL(DB(SNF),2.4G) GOAL=MINIMIZE<br />

.EXTRACT NOISE LABEL=NF_dB@2.5GHz YVAL(DB(SNF),2.5G) GOAL=MINIMIZE<br />

.EXTRACT NOISE LABEL=NFMIN_dB@2.4GHz YVAL(DB(NFMIN),2.4G) GOAL=MINIMIZE<br />

.EXTRACT NOISE LABEL=NFMIN_dB@2.5GHz YVAL(DB(NFMIN),2.5G) GOAL=MINIMIZE<br />

The specified design objectives are for an optimization problem having four GOAL objectives<br />

and four MINIMIZE objectives.<br />

Optimization Process<br />

The optimization process stops when the accuracy on the design variables need not be improved<br />

further, or more precisely, when the current point satisfies the optimality condition. This<br />

optimality property can be checked in the Eldo optimizer output (.otm file):<br />

666<br />

Eldo® User's Manual, 15.3


Optimization<br />

Designing a Low Noise Amplifier (LNA)<br />

Optimization Results<br />

====================<br />

Section 1 - Statistics and Diagnostics<br />

--------------------------------------<br />

==> Number Of Iterations 84<br />

Number Of Simulations 850<br />

Merit Function<br />

Optimality<br />

Feasibility<br />

4.8781332e+00<br />

7.55e-03<br />

0.00e+00<br />

The term Optimality was denoted by OPTIM(x) in the definition of the TOL_GRAD parameter<br />

of the .OPTIMIZE command. A small value indicates that the optimality condition is satisfied.<br />

The term Merit Function is the value of the function minimized during the optimization process.<br />

This function can be considered as a global score associated to the final iterate, that is, it gives<br />

the distance of the final solution to the ideal solution (which may not exist). For the LNA<br />

problem, the ideal solution would have given a Merit Function value close to 4.0, since the four<br />

error functions coming from the objectives AV_DB@2.4GHZ, AV_DB@2.5GHZ,<br />

S11_DB@2.4GHZ and S11_DB@2.5GHZ would be exactly zero, and the four MINIMIZE<br />

objectives should be close to 1.0.<br />

Optimization Results<br />

The design variables found by the optimizer provide a voltage gain close to 20dB, a return loss<br />

of 12dB, and an IIP3 of 1.2dBm. Note that the value of the Noise Figure (NF) is not so similar<br />

to the value of the Minimum Noise Figure (NFMIN). Thus the noise matching can be improved,<br />

however, this maybe at the expense of S11 matching by using different weighting numbers for<br />

each of the objectives.<br />

Table 13-5 gives the results of optimization for the GOAL objectives:<br />

Table 13-5. Results of Optimization for GOAL Objectives<br />

Name<br />

Initial Value Current Value Goal Value<br />

AV_DB@2.4GHZ 11.9 20.1 20.0<br />

AV_DB@2.5GHZ 11.7 19.6 20.0<br />

S11_DB@2.4GHZ -0.82 -15.1 -15.0<br />

S11_DB@2.5GHZ -0.88 -15.1 -15.0<br />

The results reported in the previous table have been obtained with the default values (1.0) of the<br />

WEIGHT parameters.<br />

The results for MINIMIZE objectives are shown in Table 13-6:<br />

Eldo® User's Manual, 15.3 667


Optimization<br />

Designing a Low Noise Amplifier (LNA)<br />

Table 13-6. Results of Optimization for MINIMIZE Objectives<br />

Name Initial Value Current Value<br />

NF_DB@2.4GHZ 3.03 1.41<br />

NF_DB@2.5GHZ 3.06 1.41<br />

NFMIN_DB@2.4GHZ 1.01 0.97<br />

NFMIN_DB@2.5GHZ 1.06 1.03<br />

Solving Problems with Pseudodiscrete Variables<br />

As with many problems in circuit design, some of the variables are restricted to being members<br />

of a finite set of values. These variables were LS, the NMOS source inductor, and N1, the<br />

number of fingers in the NMOS. The LNA problem illustrates the distinction between the two<br />

types of discrete variables that may be encountered in practical problems. Some of the<br />

techniques in this topic are freely adapted from the book of Gill, Murray and Wright [4].<br />

First consider the LNA problem with respect to the variable LS (assuming N1 is fixed at its<br />

initial value of 30 for now). The problem is a mixed continuous-discrete problem since the LS<br />

inductor comes from a design kit library which restricts the values to specific sizes. Such<br />

variables are termed pseudodiscrete, since the solution to the continuous problem (in which the<br />

variables are not subject to discrete restrictions) is well defined.<br />

The other category of discrete variables is represented by the variable N1 where there is no<br />

physical meaning of a non-integer value.<br />

In our case, the definition of the NMOS model parameters used in the design kit library makes<br />

the LNA problem a problem with continuous variables. For example, the parameter WR, which<br />

represents the width offset for the channel resistance (RDS) calculation, is redefined as follows:<br />

.PARAM WR=’(C1 + C2*Lm - C3*N1)’<br />

The symbols C1, C2 and C3 refer to some constant factors which are not specified here. The<br />

parameter Lm is simply the length of the transistor. This definition of the WR parameter does<br />

not use the discrete nature of the N1 parameter. During the evaluation of this expression, the<br />

value of N1 is considered to be a floating number. The problem is implicitly reformulated as<br />

continuous.<br />

The situation is more difficult to handle when the integer part of N1 is used explicitly in the<br />

previous expression:<br />

WR=’(C1 + C2*Lm - C3*TRUNC(N1))’<br />

Such situations should be avoided wherever possible.<br />

668<br />

Eldo® User's Manual, 15.3


Optimization<br />

Designing a Low Noise Amplifier (LNA)<br />

Our problem with pseudodiscrete variables can be solved by utilizing the solution of the<br />

continuous problem. The results of the optimization are summarized in the .otm file, and the<br />

information shown in Table 13-7 can be extracted:<br />

Table 13-7. Extracted Information from .otm File<br />

Name Initial Value Final Value Discretized value Increment<br />

LS 2.5x10 −10 1.5352x10 −9 3.0x10 −9 1.5x10 −9<br />

CPIN1 1.0x10 −13 0.0 0.0 0.0<br />

CPIN2 1.0x10 −13 8.7506x10 −14 2.234x10 −13 0.0<br />

CSIN 1.0x10 −12 1.0x10 −12 1.0x10 −12 0.0<br />

LSIN 1.0x10 −10 1.3651x10 −8 1.3651x10 −8 0.0<br />

N1 30 18.453 20 5<br />

The optimal N1 value when handled as a continuous variable is 18.453, and the optimal discrete<br />

value is unlikely to be very different. This will be confirmed by the next two experiments. The<br />

first experiment represents a general approach for handling optimization problems with<br />

pseudodiscrete variables, while the second illustrates a “well-defined” problem.<br />

N1 was defined as the variable that must assume one of the integer values {10, 15, 20, ..., 50}.<br />

Let N1 C denote the value of N1 at the solution of the continuous problem, which is supposed to<br />

be unique. Suppose that N1 C satisfies: ns < N1 C < ns+1<br />

The value of the merit function Fmerit at the continuous solution is a lower bound on the value<br />

of Fmerit at any solution to the discrete problem. If the variable N1 is a value other than N1 C ,<br />

the merit function will be larger than Fmerit at the continuous solution, irrespective of the other<br />

variables (LS, CPIN1, CPIN2, ...).<br />

The next stage is to fix the pseudodiscrete variables at either n s or n s+1 by combining the values<br />

in Table 13-8:<br />

Table 13-8. Combinations of N1 and LS Values<br />

Name s s+1<br />

N1 15 20<br />

LS 1.5x10 −9 1.75x10 −9<br />

The problem is then solved again, minimizing with respect to the remaining continuous<br />

variables, and using the old optimal values as the initial estimate of the new solution.<br />

Eldo® User's Manual, 15.3 669


Optimization<br />

Designing a Low Noise Amplifier (LNA)<br />

Solving the restricted problem should require only a fraction of the effort needed to solve the<br />

continuous problem, as shown in Table 13-9, because the number of variables is smaller and the<br />

solution should be close to the solution of the continuous problem.<br />

Table 13-9. Results of Restricted Problem<br />

Run Fmerit Nb Iter Nb Simul<br />

N1=20, LS=1.5x10 -9 4.9403493 16 130<br />

N1=20, LS=1.75x10 -9 5.4893925 16 131<br />

N1=15, LS=1.5x10 -9 5.4792729 57 467<br />

N1=15, LS=1.75x10 -9 5.0082957 40 329<br />

The value of the merit function Fmerit at the continuous solution is a lower bound on the<br />

restricted solutions. This value was given above and is 4.8781332. The solution obtained for the<br />

run with N1 = 20 and LS =1.5x10 −9 will be a satisfactory solution. The extra computation cost<br />

in solving the additional restricted problems associated with the discrete variables is likely to be<br />

a fraction of the cost to solve the original full continuous problem. If not, this implies that the<br />

discrete solution differs substantially from the continuous solution.<br />

Example of Solving a Pseudodiscrete Variable Problem<br />

The following experiment can be considered a complete enumeration procedure where all the<br />

possible combinations of the discrete values of N1 and LS were tested.<br />

Note<br />

This kind of process is very costly and inefficient and given only for illustrative purposes.<br />

The following statements were used:<br />

.PARAM LS=0.25n<br />

.PARAM N1=30<br />

.STEP PARAM LS 0 3n 0.25n<br />

.STEP PARAM N1 10 50 5<br />

.OPTIMIZE OUTER=LS,N1<br />

This outer loop results shown at the end of the .otm file (some columns were removed to<br />

simplify the results) were:<br />

670<br />

Eldo® User's Manual, 15.3


Optimization<br />

Fourband Filter Optimization<br />

Optimization Results With Respect To The Outer Loop<br />

===================================================<br />

Run Iter Simul Merit Function Optim Outer Parameters<br />

...<br />

1 22 177 5.0741859e+01 6.4e-04 LS: 0.0000e+00 N1: 1.0000e+01<br />

2 11 97 6.7559608e+01 1.5e-03 LS: 0.0000e+00 N1: 1.5000e+01<br />

3 26 205 6.2095585e+01 2.3e-04 LS: 0.0000e+00 N1: 2.0000e+01<br />

4 33 274 5.2472654e+01 1.1e-01 LS: 0.0000e+00 N1: 2.5000e+01<br />

5 31 242 4.1993472e+01 9.3e-02 LS: 0.0000e+00 N1: 3.0000e+01<br />

The plot shown in Figure 13-20 extracts the optimal value of the merit function F merit after<br />

solving each problem associated to a restricted problem with fixed values N1 and LS. It shows<br />

that there is a narrow area along the line N1 = 20 where this function takes its minimal values.<br />

This means that the assumption of a well-defined problem having continuous and<br />

pseudodiscrete variables is reasonable.<br />

Figure 13-20. Plotted Values of the Merit Function<br />

Related Topics<br />

Minimization and Maximization Objectives<br />

Goal Values Objectives<br />

Inner and Outer Sweep Parameters<br />

Fourband Filter Optimization<br />

Netlist file: fourband.cir<br />

Eldo® User's Manual, 15.3 671


Optimization<br />

Fourband Filter Optimization<br />

This example illustrates the fitting of a filter response. It illustrates the influence of the initial<br />

point in circuit optimization and the relative robustness of the optimizer.<br />

Figure 13-21. Filter Response<br />

A set of eighteen circuit parameters is to be optimized such that the voltage at node 12 follows<br />

the curve response given in Figure 13-21. This plot also shows the initial response.<br />

Analyses<br />

A single AC analysis is performed, driven by .DATA command.<br />

.AC DATA=DATA_FOURBAND<br />

.DATA DATA_FOURBAND<br />

+ FREQ VDB12<br />

+ 1.122E+02 -8.326E+00<br />

+ 1.166E+02 -7.435E+00<br />

+ 1.212E+02 -6.566E+00<br />

*...<br />

+ 8.913E+04 -4.212E-01<br />

+ 9.261E+04 -4.213E-01<br />

+ 9.624E+04 -4.215E-01<br />

.ENDDATA<br />

Design Variables<br />

The design variables are resistor and capacitor values of the circuit. The initial (or nominal)<br />

values are given below.<br />

The capacitors CT, CLC and CPASS have been specified separately to illustrate the effect of the<br />

initial conditions on the optimizer (refer to “Global and Local Optimization” on page 629 for<br />

more information).<br />

672<br />

Eldo® User's Manual, 15.3


Optimization<br />

Fourband Filter Optimization<br />

.PARAM<br />

+ R2=10K CL=0.01U R2B=8K<br />

+ CTB=0.01U CLB=0.01U R2C=12K CTC=0.002U<br />

+ R2D=12K CTD=800P CLD=150P<br />

+ CACT1=0.02U CACT2=0.02U<br />

+ RPASS=4K RACT1=50K RACT2=180K<br />

.PARAM CT=0.02U CLC=0.001U CPASS=0.3U<br />

with the associated .PARAMOPT statements:<br />

.PARAMOPT<br />

+ R2 = ( 5K, 20K)<br />

+ CT = (0.001U, 0.05U)<br />

+ CL = (0.001U, 0.05U)<br />

+ R2B = ( 3K, 10K)<br />

+ CTB = (0.001U, 0.05U)<br />

+ CLB = (0.001U, 0.05U)<br />

+ R2C = ( 5K, 20K)<br />

+ CTC = (0.001U, 0.01U)<br />

+ CLC = (0.001U, 0.005U)<br />

+ R2D = ( 5K, 20K)<br />

+ CTD = ( 100P, 1000P)<br />

+ CLD = ( 10P, 500P)<br />

+ CPASS = ( 0.1U, 1.0U)<br />

+ CACT1 = (0.001U, 0.05U)<br />

+ CACT2 = (0.001U, 0.05U)<br />

+ RPASS = ( 1K, 5K)<br />

+ RACT1 = ( 20K, 100K)<br />

.OPTION PARAMOPT_NOINITIAL<br />

The option PARAMOPT_NOINITIAL specifies that the parameter INITIAL_VALUE is<br />

omitted from the .PARAMOPT command and should be taken from the netlist instead.<br />

Design Objectives<br />

The optimization will be performed on a single design objective which aims to improve the<br />

match of the constructed model (or the target curve) with the actual measurements. The<br />

differences between the model and the measured values are combined in a global error function<br />

(using the least squares approach).<br />

The objective statement is:<br />

.OBJECTIVE AC LABEL=RESPVDB12<br />

+ VDB(12) GOAL=DATA_FOURBAND(VDB12)<br />

Former releases of the Eldo optimizer used the equivalent (but less explicit) FITTING<br />

construct:<br />

.EXTRACT AC LABEL=RESPVDB12 FITTING<br />

+ DATA_FOURBAND(VDB12) VDB(12)<br />

Eldo® User's Manual, 15.3 673


Optimization<br />

Fourband Filter Optimization<br />

Optimization Results<br />

The optimization was performed on a 32-bit Linux machine and the results generated during the<br />

optimization process are shown in Table 13-10:<br />

The minimum and maximum errors give the range of the residuals (difference between the<br />

target and the measured values) after optimization. The global error represents the error<br />

function minimized by the optimizer (this value may differ with the merit function of the<br />

optimizer).<br />

In Figure 13-21 the optimized response was not plotted since the target and the output responses<br />

were the same.<br />

Modified Initial Values<br />

Table 13-10. Values Extracted from fourband.otm File<br />

Minimum Error Global Error Maximum Error<br />

Test 1 1.7×10 −6 1.6×10 −6 7.3×10 −3<br />

Test 2 1.4×10 −4 1.2×10 −2 4.3×10 −1<br />

Now consider the following modified initial values of the capacitors CT, CLC and CPASS:<br />

.PARAM CT=0.002U CLC=0.0001U CPASS=1.0U<br />

The corresponding response is plotted in Figure 13-22.<br />

Figure 13-22. Optimized Response<br />

The minimum and maximum errors are stored in Table 13-10.<br />

674<br />

Eldo® User's Manual, 15.3


Optimization<br />

MOS Characterization<br />

Related Topics<br />

Optimization Options<br />

Specifying Design Variables<br />

Vector Design Objectives<br />

Goal Values Objectives<br />

MOS Characterization<br />

Netlist file: nmos.cir<br />

This example illustrates the combination of a double DC sweep and ALTER blocks for the<br />

optimization of I-V data for a Level 3 MOS model. The data consists of drain characteristics<br />

(IDS versus VDS and VGS) with two different choices of the length parameter L.<br />

The data is stored in two separate .DATA statements (d25x25.dat and d25x2p5.dat files). The<br />

I-V curves are shown in Figure 13-23 at the initial point of optimization.<br />

Figure 13-23. Illustration of I-V characteristics<br />

Circuit Statements<br />

The circuit and the model statement are given below. The circuit is a simple single transistor<br />

circuit. The parameters VDS, VGS and VBS are the names of the sweep parameters used in the<br />

parametric DC analyses.<br />

Eldo® User's Manual, 15.3 675


Optimization<br />

MOS Characterization<br />

* CIRCUIT STATEMENTS<br />

VDS 104 0 VDS<br />

VGS 102 0 VGS<br />

VBS 103 0 VBS<br />

M25X25D1 101 102 0 103 NMOS W=25U L=25U NRS=0.12 NRD=0.12<br />

V101 104 101 0<br />

* THE MODEL<br />

.MODEL NMOS NMOS(LEVEL=3 TOX=2.0E-8 NSUB=1E16<br />

+ LD=LD VTO=VTO GAMMA=GAMMA UO=UO VMAX=VMAX<br />

+ THETA=THETA ETA=ETA KAPPA=KAPPA)<br />

Design Variables<br />

This example performs optimization of the level 3 parameters: LD, VTO, GAMMA, UO,<br />

VMAX, THETA, ETA, and KAPPA. The corresponding statements are:<br />

.PARAM<br />

+ LD=1E-7 VTO=1.0 GAMMA=0.6 UO=600 VMAX=1E5<br />

+ THETA=0.1 ETA=0.01 KAPPA=1<br />

.OPTION PARAMOPT_NOINITIAL<br />

.PARAMOPT<br />

+ LD = ( 1E-9, 5E-7)<br />

+ VTO = ( 0, 2)<br />

+ GAMMA = ( 0.1, 2)<br />

+ UO = ( 300, 900)<br />

+ VMAX = ( 1E4, 1E7)<br />

+ THETA = ( 1E-6, 2)<br />

+ ETA = ( 1E-4, 2)<br />

+ KAPPA = ( 1E-6, 1E3)<br />

ALTER Blocks and Design Objectives<br />

In our example the netlist consists of two blocks, the second is defined with a .ALTER<br />

command.<br />

The first .OBJECTIVE command has a local scope. This means that the expression I(V101) is<br />

computed in a specific simulation context. This context is related to a ALTER block (the first<br />

block may be considered as the root block or nominal case).<br />

676<br />

Eldo® User's Manual, 15.3


Optimization<br />

Robust Optimization Using Corners<br />

* DRAIN CHARAC W=25U L=25U AT VBS=0.0<br />

.INCLUDE d25x25.dat<br />

.DC DATA=DATA_D25X25 ! DATA DRIVEN ANALYSIS<br />

.OBJECTIVE DC LABEL=FIT_IDRAIN I(V101) ! DOUBLE DC SWEEP OPTIMIZATION<br />

+ GOAL=DATA_D25X25(IDS) TYPVAL=1E-4<br />

* DRAIN CHARAC W=25U L=2.5U AT VBS=0.0<br />

.ALTER DRAIN 25X2P5 AT VBS=0<br />

M25X25D1 101 102 0 103 NMOS W=25U L=2.5U NRS=0.12 NRD=0.12<br />

.INCLUDE d25x2p5.dat<br />

.DC DATA=DATA_D25X2P5<br />

.OBJECTIVE DC LABEL=FIT_IDRAIN I(V101)<br />

+ GOAL=DATA_D25X2P5(IDS) TYPVAL=1E-3<br />

The parameter TYPAL has been used to globally rescale the objectives (the extracted measures<br />

and the associated target values), such that the low current data is not dominated by others data.<br />

Optimization Results<br />

The optimization was performed on a 32-bit Linux machine and the results generated during the<br />

optimization process are shown in Table 13-11:<br />

Table 13-11. Nmos Example Results<br />

Minimum Error Global Error Maximum Error<br />

Length L=25U 0.0 1.1×10 −18 3.5×10 −9<br />

Length L=2.5U 0.0 6.4×10 −17 3.0×10 −8<br />

These values are the result of a synthetic problem. The circuit parameters were fixed, the data<br />

was then generated, and the circuit was optimized after performing a perturbation of the initial<br />

point. This is why the global error is so small. The residuals are almost zero. This is not the case<br />

with realistic data where the physical measurements involve some variability in the current<br />

curves.<br />

Related Topics<br />

Optimization Options<br />

Inner and Outer Sweep Parameters<br />

Robust Optimization Using Corners<br />

Netlist file: aop_optim.cir<br />

Eldo® User's Manual, 15.3 677


Optimization<br />

Robust Optimization Using Corners<br />

This example illustrates the combination of optimization and .ALTER commands. For this<br />

purpose a new architecture based on the concepts of multi-context of simulation and multinetlist<br />

optimization has been developed.<br />

Nominal optimization focuses on finding the best design variable values for one nominal<br />

operating condition of the circuit. Typically the power supply, the ambient temperature, and the<br />

process technology are given their nominal value, and the best value of design variables is<br />

found by the optimizer.<br />

However, if the circuit has to operate under a variety of operating conditions, nothing<br />

guarantees that these will always be optimal design variable values if they are simply set to<br />

these optimal nominal values. Maybe if the power supply level is slightly changed, the circuit<br />

will fail.<br />

Robust optimization focuses on finding the set of design variable values that fulfill the<br />

specifications across a certain range of operating conditions. For example, robust optimization<br />

would be performed on a circuit that must operate between 1.7 and 1.9V, a temperature range of<br />

-25C to 100C, and accommodate variations in the process (defined by the corner device model<br />

libraries). The optimization targets might have upper or lower bounds on certain characteristics<br />

(for example the DC consumption has to be lower than 50μA, in all operating conditions). They<br />

might be set as targets for the average value of a given specification.<br />

Operating conditions are defined with .ALTER commands in Eldo. In each .ALTER command<br />

the operating conditions (typically the power supply level and the temperature) and the corner<br />

device model library, are defined. The optimization commands (design variables definition,<br />

design objective definitions, and the optimize command) from the main netlist are then<br />

interpreted to span the main netlist conditions and the various combinations defined through the<br />

.ALTER sections.<br />

Note<br />

These types of optimizations are usually more costly than simple nominal optimizations.<br />

Eldo can distribute the simulations on multi-processor machines to accelerate the process.<br />

Circuit Statements<br />

The following netlist is available in the directory $MGC_AMS_HOME/examples/optimizer<br />

678<br />

Eldo® User's Manual, 15.3


Optimization<br />

Robust Optimization Using Corners<br />

* 2-STAGES OPAMP - TYPICAL MODEL FOR 3.3V<br />

M16 VDD BIAS M17D VDD PCH_33 W=’WS*4.8U’ L=0.8U<br />

M17 M17D M17D VSS VSS NCH_33 W=’WS*3.2U’ L=0.8U<br />

M15 M15D M17D VSS VSS NCH_33 W=’WS*3.2U’ L=0.8U<br />

M13 M13D M17D VSS VSS NCH_33 W=’WS*3.2U’ L=0.8U<br />

M14 VDD M15D M15D VDD PCH_33 W=’WS*1U’ L=0.8U<br />

M12 VDD M13D M13D VDD PCH_33 W=’WS*4.8U’ L=0.8U<br />

M3 VDD M13D M1D VDD PCH_33 W=’WS*4.8U’ L=0.8U<br />

M4 VDD M13D M2D VDD PCH_33 W=’WS*4.8U’ L=0.8U<br />

M11 VDD M13D OUT VDD PCH_33 W=’WS*16U’ L=0.8U<br />

M1 M1D INP COM COM NCH_33 W=’WS*0.8U’ L=0.6U<br />

M2 M2D INN COM COM NCH_33 W=’WS*0.8U’ L=0.6U<br />

M9 COM M17D VSS VSS NCH_33 W=’WS*3.2U’ L=0.8U<br />

M5 M2D M15D M7D VDD PCH_33 W=’WS*2.4U’ L=0.8U<br />

M6 M1D M15D M8D VDD PCH_33 W=’WS*2.4U’ L=0.8U<br />

M7 M7D M7D VSS VSS NCH_33 W=’WS*1.6U’ L=0.8U<br />

M8 M8D M7D VSS VSS NCH_33 W=’WS*1.6U’ L=0.8U<br />

CX M8D OUT C_COMP ! LOUSY COMPENSATION CAP.<br />

CL OUT 0 1P ! LOAD CAP.<br />

M10 OUT M8D VSS VSS NCH_33 W=’WS*13U’ L=0.8U<br />

.CONNECT OUT INN ! FOLLOWER CONNECTION<br />

.OP<br />

.TRAN 1N 400N<br />

.PLOT TRAN V(INP) V(OUT)<br />

.OPTION TUNING=VHIGH NOASCII NOMOD<br />

VDD VDD 0 1.65V<br />

VSS VSS 0 -1.65V<br />

VINP INP 0 PULSE -0.9 0.9 10N 1N 1N 200N 400N AC 1 0<br />

VB BIAS 0 0.55V<br />

* TYPICAL MODEL FOR 3.3V DEVICES<br />

.LIB ./cln90g_lk.<strong>eldo</strong> TT_33<br />

.ALTER Sections<br />

The following corners are used:<br />

Eldo® User's Manual, 15.3 679


Optimization<br />

Robust Optimization Using Corners<br />

* SS_33 : Slow NMOS Slow PMOS model for 3.3V devices<br />

.ALTER SS_33 : SLOW NMOS SLOW PMOS MODEL<br />

.LIB ./cln90g_lk.<strong>eldo</strong> SS_33<br />

* FF_33 : Fast NMOS Fast PMOS model for 3.3V devices<br />

.ALTER FF_33 : FAST NMOS FAST PMOS MODEL<br />

.lib ./cln90g_lk.<strong>eldo</strong> FF_33<br />

* SF_33 : Slow NMOS Fast PMOS model for 3.3V devices<br />

.ALTER FS_33 : FAST NMOS SLOW PMOS MODEL<br />

.LIB ./cln90g_lk.<strong>eldo</strong> FS_33<br />

* FS_33 : Fast NMOS Slow PMOS model for 3.3V devices<br />

.ALTER FS_33 : SLOW NMOS FAST PMOS MODEL<br />

.LIB ./cln90g_lk.<strong>eldo</strong> SF_33<br />

Analyses and Design Objectives<br />

Two analyses were specified to define the following design objectives:<br />

• A transient analysis to extract the output voltage.<br />

.EXTRACT TRAN LABEL=RSLOPE SLOPE(V(OUT),0,0,140N)<br />

+ GOAL=80.0E6 WEIGHT=1000.0<br />

• A DC analysis for extracting the IDS current.<br />

.PARAM SCAL_I=1E4 ! INVERSE OF TYPICAL VALUE<br />

.EXTRACT DC LABEL=SCAL_IBIAS SCAL_I*ID(M16)<br />

+ GOAL=MINIMIZE WEIGHT=1.0<br />

The constant parameter SCAL_I was used to rescale the extracted measure IBIAS. The values<br />

taken by RSLOPE and SCAL_IBIAS have the same order of magnitude. The specified weight<br />

for the measure RSLOPE was introduced to find a solution that minimize the rise time at the<br />

expense of larger IBIAS values. Users can experiment with different choices of weights.<br />

Design Variables and the Optimization<br />

A shrink parameter WS is used for the width of each MOS instantiated in the netlist. The<br />

capacitor is also optimized:<br />

.PARAMOPT<br />

+ WS=(2,0.5,4)<br />

+ C_COMP=(1p,0.01p,100p)<br />

This example must be run with the following commands:<br />

.OPTIMIZE TOL_OPT=1E-2<br />

.OPTION OPSELDO_ALTER<br />

where the option OPSELDO_ALTER informs Eldo that optimization must be performed on all<br />

.ALTER sections. The results of the optimization are placed in the optimization file with the<br />

extension .otm.<br />

680<br />

Eldo® User's Manual, 15.3


Optimization<br />

Setup Time Computation<br />

Related Topics<br />

Optimization Options<br />

Specifying Design Variables<br />

Scaling Design Objectives<br />

Setup Time Computation<br />

The goal here is to use Eldo to compute the setup time of a flip-flop. The definition of setup<br />

time is: time between input and the clock (TIC) so that propagation time between clock and<br />

output (TCO) is 10% above nominal value (computed when there is a large time between input<br />

and the clock).<br />

If the nominal value of TCO is already known, this gives:<br />

TCO_TARGET= 1.1 * TCO_NOMINAL<br />

A very general method, available even with older versions of Eldo, would be to sweep TIC,<br />

measure TCO, adjusting the value of TIC so that TCO=TCO_TARGET.<br />

.PARAM TIC=200n<br />

.STEP PARAM TIC 205N 195N 0.1N<br />

.EXTRACT LABEL=TCO<br />

+ (XUP(V(Q),0.48,200n,300n,1) - XUP(V(CP),0.48,200n,300n,1))<br />

.EXTRACT SWEEP xycond(XAXIS, meas(TCO)=1.1*TCO_NOMINAL)<br />

Simulation time can be improved with the use of .OPTION AUTOSTOP=2. Accuracy is<br />

proportional to the parameter sweep increment, and simulation time is proportional to the<br />

number of steps in the swept interval.<br />

The PASSFAIL optimization method is useful for this example. It computes the maximum<br />

value for which an extract can be measured. This is not exactly the definition of set-up,<br />

however, it can be used as a first step, this would give:<br />

.OPTIMIZE METHOD=PASSFAIL RESULTS=TCO<br />

.PARAMOPT TIC=(201N,199N,205N)<br />

The DICHOTOMY method is also useful. It finds the value of an optimization variable so that<br />

one extract yields a target value, provided that the extracted values for the Min and Max values<br />

of the optimization variable bracket the target.<br />

In this example, the Min value of the optimization parameter TIC has been computed with the<br />

PASSFAIL method, this will give:<br />

.EXTRACT TRAN LABEL=DCP<br />

+ (XUP(V(Q),0.48,200N,300N,1) - XUP(V(CP),0.48,200N,300N,1))<br />

+ GOAL={1.1*TCO_NOMINAL}<br />

.PARAMOPT TIC=(201N,200.07N,205N) !MIN provided by PASSFAIL<br />

Eldo® User's Manual, 15.3 681


Optimization<br />

References<br />

You can combine both PASSFAIL and DICHOTOMY methods in one step with the following<br />

syntax:<br />

.OPTIMIZE METHOD=DICHOTOMY<br />

.EXTRACT tran LABEL=DCP<br />

+ (XUP(V(Q),0.48,200N,300N,1) - XUP(V(CP),0.48,200N,300N,1))<br />

+ GOAL={1.1*TCO_NOMINAL}<br />

.PARAMOPT TIC=(201N,195N,205N)<br />

The secant method search algorithm is more advanced than the dichotomy method. Many<br />

problems suitable for dichotomy (one design parameter, one target) are actually relatively<br />

linear, that is, the target value is almost proportional to the design variable. In these conditions,<br />

using the dichotomy method is clearly suboptimal in terms of the number of iterations required.<br />

Using the secant method will greatly diminish the number of iterations. This feature is useful if<br />

you want to accelerate your setup/hold simulations.<br />

Related Topics<br />

Eldo Optimization Methods<br />

Specifying Design Variables<br />

Specifying Design Objectives Using .EXTRACT<br />

References<br />

Articles referenced in this chapter:<br />

1. J.F. Bonnans, J. Ch. Gilbert, C. Lemarechal, C. Sagastizabal. Numerical Optimization<br />

-Theoretical and Practical Aspects. Springer Verlag, Berlin, 2003.<br />

2. R. Fletcher. A general quadratic programming algorithm. Journal of the Institute of<br />

Mathematics and its Application, 7, 76-91, 1971.<br />

3. R. Fletcher. Practical Methods of Optimization (second edition). John Wiley & Sons,<br />

Chichester, 1987.<br />

4. P. E. Gill, W. Murray, and M. H. Wright. Practical Optimization. Academic Press, New<br />

York, 1981.<br />

5. J. Nocedal and S. W. Wright. Numerical Optimization. Springer Series in operations<br />

Research, Springer, New York, 1999.<br />

6. R. Point, M. Mendes and W. Foley. A differential 2.4GHz Switched-Gain CMOS LNA<br />

for 802.11b and Bluetooth. 2002 IEEE Radio and Wireless Conference.<br />

682<br />

Eldo® User's Manual, 15.3


Chapter 14<br />

Working with S, Y, Z Parameters<br />

A set of commands in Eldo enables you to extract large signal S parameters (Scattering),<br />

Y parameters (Admittance) or Z parameters (Impedance) in the frequency domain for a<br />

specified circuit. The circuit can have any number of ports.<br />

Eldo enables the simulation of circuits including any number of N-port blocks described by a<br />

frequency tabulation of their S, Y, or Z parameters. It does so by reading the S, Y, Z,<br />

G (Hybrid-G), H (Hybrid-H), T (Transfer scattering), or A (chain or ABCD) parameter data<br />

from a Touchstone® or CITIfile format file.<br />

Simulation Setup for S, Y, Z Parameter Extraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684<br />

S, Y, Z Parameter Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685<br />

Matrix (G, H, T, A) Parameter Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687<br />

Output File Specification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688<br />

Simulating a Block Defined by S Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691<br />

Transient Simulation of Circuits Characterized in the Frequency Domain . . . . . . . . . . . . 691<br />

Technical Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692<br />

Implementation Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695<br />

Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696<br />

Basic Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697<br />

Detailed Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697<br />

Instantiating a Block Defined by S, Y, Z Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699<br />

Touchstone Data File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705<br />

CITIfile Data File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708<br />

Instantiating a Block Defined by X-Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710<br />

Eldo® User's Manual, 15.3 683


Working with S, Y, Z Parameters<br />

Simulation Setup for S, Y, Z Parameter Extraction<br />

Simulation Setup for S, Y, Z Parameter<br />

Extraction<br />

Special sources must be added at each port of the circuit to be analyzed. The number of the port<br />

and the reference impedance for S parameters must be specified in the Eldo control file as a<br />

source as follows:<br />

Tip<br />

See also “Independent Voltage Source” and “Independent Current Source” in the Eldo<br />

Reference Manual.<br />

Syntax<br />

Voltage Source<br />

Vyy NP NN IPORT=VAL [RPORT=VAL] [CPORT=VAL] [LPORT=VAL] [MODE=KEYWORD]<br />

Vyy NP NN IPORT=VAL ZPORT_FILE=filename [CPORT=VAL] [LPORT=VAL]<br />

+ [MODE=KEYWORD]<br />

Current Source<br />

Iyy NP NN IPORT=VAL [RPORT=VAL] [CPORT=VAL] [LPORT=VAL] [MODE=KEYWORD]<br />

Iyy NP NN IPORT=VAL ZPORT_FILE=filename [CPORT=VAL] [LPORT=VAL]<br />

+ [MODE=KEYWORD]<br />

Parameters<br />

• yy<br />

Required. Name of the port.<br />

• NP<br />

Required. Name of the positive node.<br />

• NN<br />

Required. Name of the negative node.<br />

• IPORT<br />

Required. This is a strictly positive number that is unique and is used as the port number:<br />

this number is used for naming the outputs (for instance, .PLOT AC S(1,2)). An error<br />

message will be issued if two port instances have the same value for IPORT, or if an IPORT<br />

is missing (for example maximum IPORT number found in the netlist is 4, and there is no<br />

instance with IPORT 3).<br />

• RPORT<br />

Value of the reference impedance in Ohms. Default value is 50Ω.<br />

• CPORT<br />

Capacitor placed in series (for V source) or parallel (for I source) with RPORT. Defaults to<br />

0, in which case it behaves like a zero voltage source (that is, CPORT would have no effect).<br />

684<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

S, Y, Z Parameter Extraction<br />

• LPORT<br />

Inductor placed in series (for V source) or parallel (for I source) with RPORT. Defaults to 0.<br />

• ZPORT_FILE=filename<br />

Specifies the Touchstone file containing the complex port impedances from which the<br />

S parameters are extracted.<br />

The port impedance file should be 1-port. The Z-parameters represent a passive load and<br />

does not contain the source. For example:<br />

# Hz Z RI R 50<br />

!Freq.[Hz] R[ohm] I[ohm]<br />

1800000000 50 0<br />

1801000000 50 0<br />

3600000000 50 0<br />

3602000000 50 0<br />

5400000000 50 0<br />

5403000000 50 0<br />

6000000000 50 0<br />

• MODE=SINGLE|COMMON|DIFFERENTIAL<br />

Mixed-mode S parameter selection.<br />

SINGLE specifies the port as single ended, it is dedicated to S parameter extraction.<br />

Default.<br />

COMMON and DIFFERENTIAL specify that the port is not single ended. Such ports are<br />

split into two linked sources that are either common (same amplitude and same phase) or<br />

differential (same amplitude but opposite phases). During S parameter extraction a “nonsingle<br />

ended” port is equally common and differential depending on which display is<br />

required. During simulation (DC, AC or TRAN) this port is either common or differential<br />

depending on the specified mode keyword.<br />

Note<br />

Port numbers in Vyy instances should range from 1 to the total number of ports without<br />

discontinuity. The simulation parameters FMIN, FMAX, and Number of frequency points<br />

for the analysis are specified with a .AC command.<br />

S, Y, Z Parameter Extraction<br />

Once the simulation has been setup, S, Y, Z parameters can be extracted during simulation by<br />

use of the .PRINT and .PLOT commands as described in the following subsections.<br />

Tip<br />

See “Simulation Setup for S, Y, Z Parameter Extraction” on page 684.<br />

Eldo® User's Manual, 15.3 685


Working with S, Y, Z Parameters<br />

S, Y, Z Parameter Extraction<br />

S Parameter Extraction<br />

.PLOT AC SR(i, j)<br />

.PRINT AC SI(i, j)<br />

.PRINT AC SM(i, j)<br />

.PLOT AC SDB(i, j)<br />

.PRINT AC SP(i, j)<br />

.PRINT AC SGD(i, j)<br />

Mixed-Mode S Parameter Extraction<br />

Mixed-mode S parameters can be extracted using the following syntax:<br />

S[mn]TYPE(i,j)<br />

TYPE can be one of the following:<br />

R Real partM MagnitudeI Imaginary partDB Magnitude (dB)P PhaseGD Group Delay<br />

mn specifies the mode of ports i and j respectively, can be one of the following:<br />

cc common-commondd differential-differentialdc differential-commoncd commondifferentialsc<br />

single-commonsd single-differentialcs common-singleds different-singless<br />

single-single. Default.<br />

The default mixed-mode for S parameter extraction is single-single. If no mixed extension is<br />

specified on the output the default will change depending on how ports 1 and 2 are setup. The<br />

default rule is shown in Table 14-1.<br />

Table 14-1. Mixed-Mode S Parameter Extraction Default Rule<br />

Port 1 Port 2 Default Available quantities<br />

Single Single SS S[ss](1,1)<br />

S[ss](1,2)<br />

S[ss](2,1)<br />

S[ss](2,2)<br />

Single Balanced SD Sss(1,1)<br />

Ssd(1,2) Ssc(1,2)<br />

Sds(2,1) Scs(2,1)<br />

Sdd(2,2) Sdc(2,2) Scd(2,2) Scc(2,2)<br />

Balanced Balanced DD Sdd(1,1) Sdc(1,1) Scd(1,1) Scc(1,1)<br />

Sdd(1,2) Sdc(1,2) Scd(1,2) Scc(1,2)<br />

Sdd(2,1) Sdc(2,1) Scd(2,1) Scc(2,1)<br />

Sdd(2,2) Sdc(2,2) Scd(2,2) Scc(2,2)<br />

686<br />

Eldo® User's Manual, 15.3


The default mixed-mode can be set using the .LIN command, with syntax:<br />

.LIN mixedmode2port=dd|dc|ds|cd|cc|cs|sd|sc|ss<br />

Example<br />

V1 in1 in2 iport=1 MODE=single<br />

V2 in4 in5 iport=2 MODE=differential<br />

.PLOT AC Sdb(1,1) Sscm(1,2) Ssdp(1,2) Sddr(2,2) Scdi(2,2)<br />

Y Parameter Extraction<br />

.PLOT AC YR(i, j)<br />

.PRINT AC YI(i, j)<br />

.PRINT AC YM(i, j)<br />

.PLOT AC YDB(i, j)<br />

.PRINT AC YP(i, j)<br />

.PRINT AC YGD(i, j)<br />

Z Parameter Extraction<br />

.PLOT AC ZR(i, j)<br />

.PRINT AC ZI(i, j)<br />

.PLOT AC ZM(i, j)<br />

.PLOT AC ZDB(i, j)<br />

.PRINT AC ZP(i, j)<br />

.PRINT AC ZGD(i, j)<br />

Where Sxx(i, j), (Yxx(i, j), Zxx(i, j)) give the influence of port j on port i.<br />

Working with S, Y, Z Parameters<br />

Matrix (G, H, T, A) Parameter Extraction<br />

Table 14-1. Mixed-Mode S Parameter Extraction Default Rule (cont.)<br />

Port 1 Port 2 Default Available quantities<br />

Balanced Single DS Sdd(1,1) Sdc(1,1) Scd(1,1) Scc(1,1)<br />

Sds(1,2) Scs(1,2)<br />

Ssd(2,1) Ssc(2,1)<br />

Sss(2,2)<br />

Matrix (G, H, T, A) Parameter Extraction<br />

Once the simulation has been setup, then G, H, T, A parameters can be extracted during an AC<br />

or FSST simulation by use of the .PRINT and .PLOT commands as described in the following<br />

subsections.<br />

Tip<br />

See “Simulation Setup for S, Y, Z Parameter Extraction” on page 684.<br />

Eldo® User's Manual, 15.3 687


Working with S, Y, Z Parameters<br />

Output File Specification<br />

G Parameter Extraction<br />

.PLOT AC GR(i, j)<br />

.PRINT AC GI(i, j)<br />

.PRINT AC GM(i, j)<br />

.PLOT AC GDB(i ,j)<br />

.PRINT AC GP(i, j)<br />

.PRINT AC GGD(i, j)<br />

H Parameter Extraction<br />

.PLOT AC HR(i, j)<br />

.PRINT AC HI(i, j)<br />

.PRINT AC HM(i, j)<br />

.PLOT AC HDB(i ,j)<br />

.PRINT AC HP(i, j)<br />

.PRINT AC HGD(i, j)<br />

T Parameter Extraction<br />

.PLOT AC TR(i, j)<br />

.PRINT AC TI(i, j)<br />

.PRINT AC TM(i, j)<br />

.PLOT AC TDB(i ,j)<br />

.PRINT AC TP(i, j)<br />

.PRINT AC TGD(i, j)<br />

A Parameter Extraction<br />

.PLOT AC AR(i, j)<br />

.PRINT AC AI(i, j)<br />

.PRINT AC AM(i, j)<br />

.PLOT AC ADB(i ,j)<br />

.PRINT AC AP(i, j)<br />

.PRINT AC AGD(i, j)<br />

Where Sxx(i, j), (Yxx(i, j), Zxx(i, j)) give the influence of Port j on Port i.<br />

Output File Specification<br />

For S, Y, Z parameter output file specification use the .FFILE command.<br />

Note<br />

See the .FFILE command in the Eldo Reference Manual.<br />

Two-port noise parameters NFMIN_MAG, GAMMA_OPT_MAG, PHI_OPT and RNEQ are<br />

automatically written to the specified output file when a .NOISE command is specified in the<br />

netlist and the circuit to be analyzed is a two-port circuit.<br />

688<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Output File Specification<br />

Examples<br />

r1 1 2 100k<br />

c1 2 0 10pf<br />

V1 1 0 iport=1 rport=100<br />

V2 2 0 iport=2 rport=20<br />

.ac dec 10 1 100meg<br />

.plot ac sdb(2,1)<br />

.Ffile S sb1.par khz ri<br />

In this example, the S parameters of an RC circuit are extracted between 1Hz and 100MHz with<br />

10 points per decade. The reference impedance is 100 for port1 and 20 for port2. The magnitude<br />

of S21 is plotted in dB, and the extracted S parameters are stored in the file sb1.par with the<br />

frequency in kHz. The data is stored in the form of the Real and Imaginary parts.<br />

V1 1 0 iport=1 rport=50<br />

R1 1 n1 1k<br />

C1 n1 0 100p<br />

R2 n1 2 1k<br />

Rc1 n1 0 100k<br />

V2 2 0 iport=2 rport=50<br />

.ac lin 21 1meg 21meg<br />

.noise v(n1) V1 3<br />

.plot noise rneq gopt bopt nfmin_mag<br />

.ffile Z Z.par kHz ma<br />

In this example the Z parameters are being extracted between 1MHz and 21MHz with 21<br />

analysis points. The extracted Z parameters are stored in the file Z.par with the frequency in<br />

kHz. The data is stored in the form of the Magnitude Angle. As the circuit is a two-port circuit<br />

and there is a .NOISE command specified in the netlist then the two-port noise parameters are<br />

also stored in the output file. The output file is shown below:<br />

! Data from test<br />

# KHZ Z DB R 5.000000E+01<br />

!<br />

1.0000000000000000E+03 6.5542511585029786E+01 -5.7202544106307606E+01<br />

6.4035302689753806E+01 -8.9088186330215692E+01 6.4035302689753806E+01<br />

-8.9088186330215706E+01 6.5542511585029786E+01 -5.7202544106307606E+01<br />

...<br />

2.1000000000000000E+04 6.0025369785355387E+01 -4.3338006361865595E+00<br />

3.7592014242230192E+01 -8.9956576643609139E+01 3.7592014242230199E+01<br />

-8.9956576643609139E+01 6.0025369785355402E+01 -4.3338006361865711E+00<br />

! Noise Data: Nfmin(dB) GammaOpt PhiOpt Rneq/R0<br />

1.0000000000000000E+03 5.2661113010469025E+00 9.6890047604421903E-01<br />

1.7851510536508835E+02 4.8497683522933400E+01<br />

...<br />

2.1000000000000000E+04 2.8441528902447214E+01 9.0554147314402922E-01<br />

1.7956971588917614E+02 3.5225984336136335E+03<br />

Eldo® User's Manual, 15.3 689


Working with S, Y, Z Parameters<br />

Output File Specification<br />

In the following example the S parameters of the block TWO_PORT_SUBCKT are being<br />

extracted between 10kHz and 10MHz with 10 analysis points per decade. The Touchstone file<br />

Z1.par defines the complex impedance of the source at port 1. The extracted S parameters are<br />

stored in the file subckt.par with the frequency in kHz. The data is stored in the form of the<br />

Magnitude Angle.<br />

Vin 1 0 iport=1 zport_file="Z1.par"<br />

Xsub1 1 0 2 0 TWO_PORT_SUBCKT<br />

Vout 3 0 iport=2 rport=50<br />

.ac dec 10 10000 10meg<br />

.plot sdb(1,2) sdb(1,1) sdb(2,2) sdb(2,1)<br />

.ffile S subckt.par KHZ MA<br />

690<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Simulating a Block Defined by S Parameters<br />

Simulating a Block Defined by S Parameters<br />

The large signal S parameters model a component’s behavior in the frequency domain. Eldo<br />

simulates the circuit using the included S-parameter data for any number of N-port blocks.<br />

Transient Simulation of Circuits Characterized in the Frequency Domain . . . . . . . . . 691<br />

Technical Background. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692<br />

Implementation Issues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695<br />

Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696<br />

Basic Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697<br />

Detailed Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697<br />

Instantiating a Block Defined by S, Y, Z Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . 699<br />

Touchstone Data File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705<br />

CITIfile Data File Format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708<br />

Instantiating a Block Defined by X-Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710<br />

Transient Simulation of Circuits Characterized in<br />

the Frequency Domain<br />

Traditionally, high frequency circuits are characterized and simulated in the frequency domain.<br />

This is because of the difficulty of handling extremely short rise times of the order of picoseconds<br />

and the simplicity of frequency measurement.<br />

Today with the technological advent in high frequency circuits, there is a vital need to simulate<br />

circuits in the time domain using electrical simulators. This is needed to simulate, for example,<br />

a linear (lossy and maybe coupled) interconnection having a non-linear termination. Such<br />

problems may be solved in the frequency domain using harmonic balance. If we are interested<br />

in using pulse stimuli, the circuit must be analyzed in the time domain. Another example is the<br />

microwave simulation of passive elements, either discrete or integrated. A <strong>user</strong> defined passive<br />

element may be simulated by extracting its scattering (S) parameters using a standard Electro-<br />

Magnetic (EM) solver and then using this file as an input to an S-Model. This procedure enables<br />

the <strong>user</strong> to simulate this passive element in Eldo either with or without other linear or non-linear<br />

elements.<br />

The main object of the S-model GenLib library is to enable the transient analysis of precharacterized<br />

(in the frequency domain) linear high frequency circuits with any other non-linear<br />

components. The circuit is usually characterized by its scattering parameters. S-model also<br />

enables the simulation of circuits characterized using their admittance (Y) or impedance (Z)<br />

parameters. The pre-characterized circuit may have any number of ports. The following<br />

paragraph gives a brief technical presentation of matrix representation of linear circuits.<br />

Eldo® User's Manual, 15.3 691


Working with S, Y, Z Parameters<br />

Technical Background<br />

Technical Background<br />

A two port network is completely presented by its Z, Y, h or S matrix.<br />

As an example, consider the impedance Z matrix:<br />

It is clear that this matrix relates the currents and voltages at the terminals of a given block:<br />

An equivalent presentation is:<br />

In this case, we use the S matrix or scattering parameters. a 1 and b 1 present the normalized<br />

incident and reflected waves at port 1. a 2 and b 2 present the corresponding waves at port 2.<br />

There are direct relationships between a 1 , b 1 , a 2 , b 2 and the corresponding I 1 , V 1 , I 2 , V 2 .<br />

In the case of a two port network, the I and V as a function of a and b is given by the following:<br />

For the same case, a and b as a function of I and V is given by the following:<br />

692<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Technical Background<br />

where R 1 and R 2 are the reference impedances of ports 1 and 2 respectively.<br />

The S parameters are widely used to characterize high frequency circuits, mainly because they<br />

present no difficulty in measurements while the other parameters are difficult to measure. The<br />

scattering parameters are not unique; they are defined for a given reference impedance for each<br />

port. The reference impedance R 0 is usually 50Ω for all ports to facilitate measurement<br />

(standard coaxial cable has 50Ω characteristic impedance).<br />

In general, an n-port circuit has an n × n scattering matrix of the following form:<br />

Mixed-Mode S Parameters<br />

Bockelman and Eidenstadt 1 developed a theory for combined differential and common<br />

normalized power waves (in terms of even and odd mode). Then it is now possible to<br />

characterize multiport networks at high frequencies, especially such device which are simulated<br />

by common-mode or differential-mode source, by using the extended S parameter definition.<br />

This adaptation, called “mixed-mode S parameter”, addresses differential and common-mode<br />

operation, as well as the conversion between the two modes operation.<br />

According with this new definition, we can see that a two port S parameters form a 4x4 matrix<br />

containing the mixed-mode S parameters (differential-mode, common mode and cross-mode<br />

S parameters). Consider the following differential circuit, each port can support the propagation<br />

of differential-mode and common-mode waves:<br />

1.David E. Bockelman William R. Eisenstadt, “Combined Differential and Common-Mode Scattering<br />

Parameters: Theory and Simulation” July 1995.<br />

Eldo® User's Manual, 15.3 693


Working with S, Y, Z Parameters<br />

Technical Background<br />

Figure 14-1. Mixed-Mode S Parameters<br />

The response of this differential circuits to a stimulus can be expressed with the mixed-mode<br />

S parameter matrix:<br />

where the partition labeled are the differential-mode S parameters, are the commonmode<br />

S parameter, and and the cross-mode S parameters. The and are the<br />

normalized differential-mode stimulus and response waves; and are the normalized<br />

common mode stimulus and response waves. The definition of these normalized waves are:<br />

694<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Implementation Issues<br />

In general, an n-port has a 2n x 2n mixed-mode S parameter matrix of the following form:<br />

Implementation Issues<br />

Eldo uses three methods to simulate an S-model given by S, Y, or Z parameters. These methods<br />

are briefly described below:<br />

• Complex Pole Fitting (CPF) technique is a method based on complex-pole fitting of the<br />

original dependence. During an initial “fitting” stage, the model’s given dependence is<br />

represented as a sum of simple first-order components, each one defined by its complex<br />

pole and residue. The result of fitting is re-usable; once generated, the list of poles and<br />

residues is stored in a *.pls file and can be used repeatedly for simulations without the<br />

need to re-fit. This file has the same name and location as the original data (Touchstone)<br />

file.<br />

The representation of frequency dependence created by fitting enables fast and accurate<br />

transient simulation of the S-model. Simulation progresses linearly in time, using an<br />

effective, recursive, convolution-based algorithm. Although poles/residues can be used<br />

to build an equivalent circuit, this is not needed or recommended, for performance<br />

Eldo® User's Manual, 15.3 695


Working with S, Y, Z Parameters<br />

Applications<br />

reasons: the model-evaluation time in CPF is less by a factor of 5-7 than that for the<br />

equivalent circuit built from the same poles.<br />

Due to the very nature of fitting, the CPF method always results in a causal solution. It<br />

also has a delay-extraction capability useful when simulating transmission lines or<br />

connectors.<br />

• Digital Signal Processing (DSP) technique is an alternative approach that transforms the<br />

frequency-domain data into time domain parameters via inverse FFT, Hilbert transform<br />

and convolution. Important modifications were made to these basic algorithms to enable<br />

both periodic and non-periodic dependencies, to ensure the causality of the system, to<br />

account for singularities in matrix representation and to ensure high-speed convolution.<br />

If the circuit frequency response is naturally periodic (as for delay-containing operators)<br />

and is given only in a fraction of a single period, the DSP method is recommended to<br />

ensure accurate simulation. In this case, the last point given in the input data file should<br />

correspond to the half-period of the dependence.<br />

• System identification (SI) technique is a third method that represents S parameters in the<br />

form of a rational function in ‘s’ (Laplace variable). These functions are then converted<br />

into systems of linear differential equations so that Eldo can solve them during the<br />

transient analysis.<br />

With the above three methods, Eldo can efficiently solve a wide variety of problems. Frequency<br />

dependencies can be either quite smooth or with a large number of sharp resonant peaks (up to<br />

many hundred). The <strong>user</strong> may specify input data either with equidistant frequency points,<br />

starting from zero or not; or give them in any other way, (for example, logarithmically spaced)<br />

relevant to the method of data acquisition.<br />

Of course, one can expect accurate simulations only if the original data is complete and<br />

accurate. The frequency dependence given should completely encompass the range of interest,<br />

from the lowest to the highest operation frequency. For example, high accuracy at DC is<br />

unlikely if the data starts from non-zero frequency. Similarly, accurate simulation of short<br />

transitions, lasting for hundred ps, is impossible if the highest point is far below tens of GHz.<br />

Also, the data points should be given with good resolution, sufficient to reproduce the shape of<br />

the dependencies. For example, many more points are needed to describe a dependence with<br />

many sharp peaks than for a smooth one, even if they are both defined in the same frequency<br />

range. Finally, the input data should be causal, so that the real and imaginary parts of the<br />

frequency dependence satisfy the dispersion Kronig-Kramers relation. In reality, data becomes<br />

slightly non-causal due to unavoidable measurement/simulation errors, especially (typically) at<br />

higher frequencies. However, serious measurement errors (like taking the negated phase) cause<br />

catastrophic non-causality that will lead to improper simulation results.<br />

Applications<br />

S parameters can originate from the following:<br />

696<br />

Eldo® User's Manual, 15.3


• Simulation of passive networks using an electromagnetic solver.<br />

Working with S, Y, Z Parameters<br />

Basic Functionality<br />

• Measurements from a passive network (interconnects, transmission lines, passive filters,<br />

and so on).<br />

• Frequency-domain simulation of passive networks (AC analysis).<br />

• Data sheets of active or passive devices.<br />

The major applications of S-model are as follows:<br />

• Transient simulation of microwave linear circuits originally described by its response in<br />

frequency domain.<br />

• Transient simulation of interconnects together with non-linear drivers/loads, either for<br />

VLSI or GaAs integrated circuits, using either their calculated or measured scattering<br />

parameters.<br />

• Lossy transmission-line transient simulation in the presence of either linear or non-linear<br />

drivers/loads.<br />

• Transient simulation of arbitrary (or <strong>user</strong>-defined) passive microwave circuits after<br />

extracting their S parameters (using a standard electromagnetic solver).<br />

Basic Functionality<br />

The S-model implemented in Eldo is a building block that makes possible DC, AC, and<br />

transient simulation of circuits with any number of N-ports described by their S (Scattering), Y<br />

(Admittance), or Z (Impedance) parameters, in the form of tabulated data in the frequency<br />

domain.<br />

The tabulated data is contained in an ASCII data file in the Touchstone® format. This format is<br />

briefly described in “Touchstone Data File Format” on page 705. When giving the instance of<br />

the model in the Eldo netlist file, you can specify the data file either by setting an index<br />

associated with the file’s name, or by explicitly defining the name of the file. The optimal of the<br />

three algorithms discussed above, Complex Pole Fitting (CPF), Digital Signal Processing<br />

(DSP), and System Identification (SI), is selected by the internal Eldo monitor that enables great<br />

flexibility of simulation. You can also specify this method directly.<br />

Detailed Functionality<br />

Eldo supports S parameters as follows:<br />

• Simulation of N-ports with no restriction on N. N is determined automatically by the<br />

Eldo parser according to the number of pins.<br />

• Any number of instances of the same model, any number of different models.<br />

• All SST, PSS and MODSST simulation types are supported.<br />

Eldo® User's Manual, 15.3 697


Working with S, Y, Z Parameters<br />

Detailed Functionality<br />

• DC Simulation.<br />

• AC Simulation. When the CPF algorithm is chosen either by the monitor or the <strong>user</strong>, the<br />

frequency response of the system is computed based on the found poles/residues, to<br />

enable smooth and causal simulation results. In the case of the DSP method, AC<br />

simulation is performed by interpolation and extrapolation of the tabulated parameters,<br />

with the response made symmetrical around the maximal tabulated frequency point, and<br />

the obtained spectrum is made periodic. With the SI algorithm, AC simulation produces<br />

the frequency response of the transfer function that best fits the tabulated frequency<br />

points. If AC simulation is performed without transient simulation and without any<br />

method forced by the <strong>user</strong>, the response is obtained through interpolation of the given<br />

frequency-domain data points.<br />

• Transient Simulation. Transient simulation is obtained through the application of the<br />

most appropriate of the CPF, DSP, or SI algorithms.<br />

• Input data can be specified as S, Y, Z, G, H, T or A parameters.<br />

• Tabulated data may have linear, logarithmic, or irregular distribution in its frequency<br />

range. Frequency values may start from 0 Hz or any positive value. Any number of<br />

points is allowed.<br />

• The choice of the CPF, DSP, or SI algorithm can be forced through a parameter of the<br />

model. All algorithms allow any kind of spacing. However, since internally DSP<br />

requires linearly spaced K 2 +1 data points starting at zero frequency, it uses interpolation<br />

and extrapolation of the input data to satisfy this requirement.<br />

• Simulation is possible with the Eldo default options.<br />

• For an N-port block (N>1), port impedances can be identical, or different for each port.<br />

• Speed-optimized CFAS model.<br />

698<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

To instantiate S, Y, Z parameters use the Yname FBLOCK command.<br />

Syntax<br />

.MODEL FBLOCK MACRO LANG=C<br />

YNAME FBLOCK PARAM:<br />

+ [M=VAL]<br />

+ [IDX_M=VAL]<br />

+ [NO_DELAY=VAL]<br />

+ [GROUPFIT=VAL]<br />

+ [SYMMETRY=VAL]<br />

+ [FORCE_PASSIVITY=VAL]<br />

+ [FORCE_REFIT=VAL]<br />

+ [EXTRAP_TO_DC=VAL]<br />

+ [FORCE_TOUCH_DC=0|1]<br />

+ [POLE_REDUCTION=VAL]<br />

+ [HIGH_PRECISION=VAL]<br />

+ [MAXROW=VAL]<br />

+ [MAXCOL=VAL]<br />

+ [IDX_F=VAL]<br />

+ [SINGLE_REFERENCE_NODE=VAL]<br />

+ [STRING: FILENAME]<br />

+ PIN: IP1 IN1 ... IPN INN<br />

Parameters<br />

• .MODEL<br />

The first line (.MODEL) is the reference to the C-FAS model, where the entity is called<br />

FBLOCK. The other lines are the model parameters.<br />

Note<br />

The .MODEL line is optional. This declaration is not a requirement of Eldo when<br />

referencing embedded Eldo FBLOCK models.<br />

• PARAM:<br />

This keyword precedes the list of parameters, (those shown in brackets are optional). Most<br />

of the options, except for M, IDX_M and NO_DELAY, are specific to the CPF method.<br />

• M=val<br />

Device multiplier parameter, simulating the effect of multiple S-block elements in parallel.<br />

Default value is 1.<br />

• IDX_M=val<br />

Parameter that forces a specific algorithm to be used:<br />

IDX_M=0 specifies the CPF algorithm (default).<br />

IDX_M=1 specifies DSP.<br />

IDX_M=2 specifies SI.<br />

Eldo® User's Manual, 15.3 699


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

• NO_DELAY=val<br />

Used to enable or prevent delay extraction in the CPF or DSP methods. NO_DELAY=0<br />

enables delay extraction, NO_DELAY=1 disables it. The default value is 0.<br />

• GROUPFIT=val<br />

Used in CPF to force group fitting instead of individual for every matrix component. As a<br />

rule, with this option, fitting requires less effort but this might compromise accuracy. The<br />

default value is 0, corresponding to individual fitting.<br />

• SYMMETRY=val<br />

The default assumption (SYMMETRY=1) made in CPF on the fitting stage is that the<br />

original S (or Y or Z) matrix is symmetric. Matrix symmetry is a valid assumption as long as<br />

the S-model describes a reciprocal subcircuit. We cannot simply rely on symmetry of the<br />

matrices in the input data. Very often, the input matrices generated by field-solvers or<br />

measured from reciprocal systems, are not strictly symmetric, however they should be<br />

handled as symmetric. Set to 0 to disable the default assumption.<br />

• FORCE_PASSIVITY=val<br />

Enables or disables each of the two different types of passivity enforcement available in the<br />

CPF method. These types are (1) pre-fit passivity enforcement, in which the original<br />

sampled data is worked with to make it “passive,” and (2) post-fit enforcement, in which<br />

poles/residues are corrected in such a way as to make the approximation strictly passive.<br />

FORCE_PASSIVITY=0 means there is no passivity enforcement.<br />

FORCE_PASSIVITY=1 activates pre-fit passivity enforcement.<br />

FORCE_PASSIVITY=2 activates post-fit enforcement.<br />

FORCE_PASSIVITY=3 (default) activates them both.<br />

Pre-fit passivity enforcement is recommended for all passive devices. It removes occasional<br />

passivity violations from the input data (which may result from measurement errors).<br />

However, even for the passive data created by pre-fit passivity enforcement, fitting may still<br />

result in a non-passive model if this data is defined within a limited frequency range (typical<br />

case). With two different methods of passivity enforcement, you can determine the true<br />

reason for non-passivity: poor accuracy of the input data or fitting errors. The reason for<br />

both could be incomplete frequency range, non-causality, or insufficient resolution of the<br />

input data. For causal, accurate, and smooth input data, fitting accuracy is quite high.<br />

By default, Eldo performs a passivity check on the Touchstone file S parameter data. When<br />

non-passivity is detected, data passivity will be enforced and a corresponding information<br />

message will be issued. After the fitting of the S parameter data a new passivity check is<br />

performed on the fitting results. If passivity violation is detected then passivity of the fitting<br />

is enforced and a message is again issued.<br />

Warning message examples:<br />

o non-passive data found:<br />

700<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

"Warning 1824: OBJECT "YNPORT0": Input data non-passive:<br />

overshoot 1.018228e+00 at freq = 2.254981e+07"<br />

o<br />

pre-fit passivity enforcement:<br />

"Warning 1822: OBJECT "YNPORT0": Enforcing passivity of input<br />

data."<br />

o<br />

post-fit passivity enforcement:<br />

"Warning 1823: OBJECT "YNPORT0": Enforcing post-fit global<br />

passivity."<br />

If non-reciprocal linear active devices (such as amplifiers or filters) are to be simulated, both<br />

SYMMETRY and FORCE_PASSIVITY should be disabled.<br />

• FORCE_REFIT=val<br />

Set to 1 to force fitting in CPF regardless as to whether the corresponding .pls file is already<br />

present or not. This might be needed if you want to redo fitting with different options, such<br />

as FORCE_PASSIVITY. However, you should be careful in using such an option, it should<br />

be disabled after the desired fit is built. The default value is 0, disabled.<br />

• EXTRAP_TO_DC=val<br />

Set to 1 to restore a missing point at zero frequency (DC) by extrapolating the curve from<br />

low frequency points given in the Touchstone file. Compared to the default case<br />

(EXTRAP_TO_DC=0) it enables, as a rule, to achieve better accuracy in DC simulation<br />

when the point at zero frequency is not given. If the DC point is present in the input data,<br />

this option has no effect unless incorrect DC data has been detected in the S parameter .par<br />

or .snp file; in which case EXTRAP_TO_DC is automatically enabled and a warning<br />

generated; see the FORCE_TOUCH_DC description.<br />

• FORCE_TOUCH_DC=val<br />

Set to 1 to force DC data to be used from the S parameter .par or .snp file. The default value<br />

is 0, disabled. If incorrect DC data has been detected in the S parameter file a warning is<br />

generated:<br />

+ In , DC value seems to be incoherent.<br />

+ It is ignored and its value is extrapolated (EXTRAP_TO_DC set to<br />

1).<br />

+ To force its use, set the parameter FORCE_TOUCH_DC to 1 in the<br />

+ corresponding FBLOCK.<br />

The DC value is ignored and EXTRAP_TO_DC is automatically enabled for the<br />

corresponding FBLOCK. If, despite this recommendation, you choose to force the incorrect<br />

DC data to be used (FORCE_TOUCH_DC=1) this value can lead to incorrect results.<br />

• POLE_REDUCTION=val<br />

Default value is 1. Enables the mode of transient simulation in which some of the fitted<br />

poles (that are too fast, too slow or too small) are removed to speed-up the solution. This<br />

mode typically gives up to 30-50% reduction in solution time when the step of the transient<br />

Eldo® User's Manual, 15.3 701


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

solution is fixed. The decision about pole reduction is made from considering the solution<br />

step (pole is too “fast”), or the duration of the simulation interval (pole is too “slow”).<br />

Therefore, the set of actually used poles is defined “dynamically” from considering the<br />

parameters of the .TRAN command. The generated list of poles/residues (*.pls) file remains<br />

unaffected. Pole reduction does not considerably affect the solution accuracy. However, if<br />

the precise simulation is needed, the option can be disabled by setting<br />

POLE_REDUCTION=0.<br />

• HIGH_PRECISION=val<br />

Set to 1 to increase the fitting accuracy by enabling more poles than in regular mode (with<br />

default value 0). This option can be useful for verification purposes, for example if a<br />

“reference solution” is required. However, it is not recommended if the input data itself is<br />

not very accurate. Also, since high-precision fitting produces more poles, it makes<br />

simulation slower.<br />

• MAXROW=val<br />

Sets the limit (val/2) to the frequency points of the original dependence used in fitting. The<br />

default value is 40000, corresponding to 20,000 points.<br />

• MAXCOL=val<br />

Sets the limit (val/2) to the maximal order of complexity for fitting in CPF. The default<br />

value is 1500, corresponding to an order of complexity of 750. For very complicated (sharp,<br />

irregular) dependencies it is sometimes reasonable to reduce the order of complexity,<br />

especially if we have reasons not to entirely trust the input data at higher frequencies. As a<br />

rule, reducing the order of complexity is a better strategy than reducing the number of points<br />

to consider (MAXROW).<br />

• IDX_F=val<br />

Defines the index (integer number) VAL associated with the S parameter file (IDX_F=VAL<br />

implies that the input parameter file is named sbVAL.par). Alternative way of defining the<br />

input data file; see also the STRING: keyword.<br />

• SINGLE_REFERENCE_NODE=val<br />

Set to 1 to support a single reference node. When the number of pins of the FBLOCK model<br />

is even, Eldo considers that each port has two pins. When the number of pins is odd, Eldo<br />

considers the reference pin is the same for all ports (and it is the last pin). Specify<br />

SINGLE_REFERENCE_NODE=1 to enable the FBLOCK model to consider the last pin as<br />

the common reference pin for all ports if the number of ports is the number of pins−1.<br />

• STRING:<br />

Used to define the name of the touchstone file, CITIfile, or poles/residues file (.pls),<br />

containing the input data. Path definition is allowed. Another way of defining the data file is<br />

using the IDX_F parameter under the keyword PARAM: together with all the other<br />

parameters, not under the STRING: keyword. If not specified, sbVAL.par is used by<br />

default, where VAL is defined by IDX_F, or the number of ports otherwise.<br />

702<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

• PIN: IP1 IN1 ... IPN INN<br />

Required. The 2×N pins of the N-port model will be connected to nodes IP1 IN1 ... IPN<br />

INN. Any number of ports can be specified.<br />

Description<br />

Any model may be instantiated as many times as required with the same or different input data<br />

file.<br />

Any FBLOCK instance will contribute to the global noise results of .NOISE and .SSTNOISE. If<br />

the Touchstone format file contains noise parameters then they will be used to compute the<br />

noise contribution, otherwise the simulator will use the Twiss formula.<br />

Twiss Formula<br />

Where:<br />

C y = Noise Correlation Matrix<br />

k = Boltzmann Constant<br />

t = Temperature<br />

Y = Y Parameter Matrix<br />

H = Hermitian Matrix (complex conjugate transpose)<br />

The FBLOCK file parameter is searched with the same methodology as searching library files,<br />

see “Search Path Priorities” on page 133. This means that if the FBLOCK file is not found in the<br />

current directory, the library where the corresponding FBLOCK instance was found is searched<br />

first if FBLOCK was actually read from a library. If not found, the directories are searched in<br />

the order specified by the option SEARCH.<br />

Examples<br />

In this example, a block ytline is defined. By default, the CPF method runs. Delay extraction is<br />

allowed (if feasible), fit is set to individual, the model is assumed symmetric, passivity<br />

enforcement is set for pre-fit stage; refit, extrapolation to DC, and high precision flags are<br />

disabled, and the parameters MAXCOL, MAXROW are set to their default values, 1500 and<br />

40,000 respectively. The file name is given in conventional form, by using the keyword<br />

“string:”.<br />

Eldo® User's Manual, 15.3 703


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

.model dio D rs=4.68 bv=6.1 cjo=246p<br />

.model Fblock macro lang=c<br />

vin 1 0 dc 5 ac 1 pulse(0 5 1n 1n 1n 5n 10n)<br />

rin 1 2 50<br />

ytline Fblock param:<br />

+ force_passivity=1<br />

+ string: C:\s-parameterdata\lowpassfilter.s2p<br />

+ pin: 2 0 3 0<br />

dout 3 0 dio<br />

.ac dec 10 1 10meg<br />

.tran 10n 100n<br />

.plot ac vdb(2) vdb(3)<br />

.plot tran v(1) v(2) v(3)<br />

.end<br />

In this example, a block y2port refers to an S parameter file sb4.par (defined with idx_f=4).<br />

Here, the S-block is described as a subcircuit. The DSP method is chosen and delay extraction is<br />

prevented.<br />

.subckt sparam_2p p1 p2 grnd<br />

.model Fblock macro lang=c<br />

y2port FBLOCK param:<br />

+ idx_f=4<br />

+ idx_m=1<br />

+ no_delay=1<br />

+ pin: p1 grnd p2 grnd<br />

.ends sparam_2p<br />

Related Topics<br />

Touchstone Data File Format<br />

CITIfile Data File Format<br />

704<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Touchstone Data File Format<br />

Touchstone Data File Format<br />

Input or output for: Eldo and Eldo RF; output generated by the .FFILE command<br />

Eldo fully supports Touchstone® versions v1 and v2 formats for reading and writing. When<br />

reading, the format is automatically detected.<br />

Note<br />

See the .FFILE command in the Eldo Reference Manual.<br />

Format<br />

The Touchstone data format file is an ASCII text file in which data appears line by line: N lines<br />

for each data point of N ports. The data points are stored in increasing order of frequency.<br />

The first of the N lines consist of a frequency value and N pairs of values for S, Y, Z, G, H, T or<br />

A parameters. The (N-1) following lines contain N pairs of values. Values are separated by one<br />

or more spaces or tabulations.<br />

Tip<br />

Touchstone data format files follow general syntax rules. The standard is available from the<br />

EDA Industry Working Groups website:<br />

Touchstone version 1:<br />

http://www.eda.org/pub/ibis/connector/touchstone_spec11.pdf<br />

Touchstone version 2:<br />

http://www.eda.org/pub/ibis/touchstone_ver2.0/touchstone_ver2_0.pdf<br />

• Comment lines begin with an exclamation mark (!).<br />

• The first uncommented line in the Touchstone data file must be an option specification<br />

line that begins with the pound sign (#) followed by a space. The option line is formatted<br />

as follows:<br />

# [Hz|kHz|MHz|GHz] [S|Y|Z|G|H|T|A] [RI|MA|DB] [R Val|R1 Val1 ... Rn<br />

Valn]<br />

Parameters<br />

• [Hz|kHz|MHz|GHz]<br />

Frequency Unit (Hz, kHz, MHz, GHz). Default value is Hz.<br />

• [S|Y|Z|G|H|T|A]<br />

Parameter type (S, Y, Z, G, H, T, A). Default value is S.<br />

• [RI|MA|DB]<br />

Data format (MA, DB, RI). Default value is RI. MA means Magnitude-angle in Volts, and<br />

phase in degrees. DB means Magnitude in dB, and phase in degrees. RI means Real and<br />

Imaginary parts.<br />

Eldo® User's Manual, 15.3 705


Working with S, Y, Z Parameters<br />

Touchstone Data File Format<br />

• [R Val|R1 Val1 ... Rn Valn]<br />

Reference impedance of each port (when all the ports have the same reference impedance<br />

you can specify a single value). Default value is all ports with the same 50 W reference<br />

impedance.<br />

Note<br />

The two-port noise parameters (NFMIN, GAMMA_OPT_MAG, PHI_OPT, RNEQ) can be<br />

included in the Touchstone data file when you have specified a .NOISE command in the<br />

netlist and when the circuit to be analyzed is a two-port circuit. NFMIN is the minimal noise<br />

figure of the two-port. GAMA_OPT is the magnitude of the optimal reflection coefficient<br />

associated with the minimum noise figure. PHI_OPT is the angle of the optimal reflection<br />

coefficient associated with the minimum noise figure. RNEQ is the equivalent noise resistance.<br />

Examples<br />

Touchstone data file option line example:<br />

# khz s ri r 50<br />

Frequency values are in kHz, the data is S parameter data, they are stored in the format Real and<br />

Imaginary part, and the reference impedance is 50Ω for each port.<br />

Example S parameters for three ports:<br />

F<br />

SR11 SI11 SR12 SI12 SR13 SI13<br />

SR21 SI21 SR22 SI22 SR23 SI23<br />

SR31 SI31 SR32 SI32 SR33 SI33<br />

Two ports may be represented in matrix or single line format, but with a different parameter<br />

order (S12 and S21 are swapped). For example:<br />

Two ports in single line format:<br />

Freq S11 S21 S12 S22<br />

Two ports in matrix format:<br />

Freq S11 S12<br />

S21 S22<br />

Mixed-Mode S Parameter Extraction<br />

When extracting mixed-mode S parameters the contents of the Touchstone output data file<br />

changes. For example the file header for a 2-port network may be as follows:<br />

! Data from foo<br />

! S11 = SDD11<br />

! S12 = SDS12<br />

! S13 = SDC11<br />

# HZ S RI R1 1.000000E+01 R2 1.000000E+00<br />

706<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Touchstone Data File Format<br />

Related Topics<br />

CITIfile Data File Format<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

Instantiating a Block Defined by X-Parameters<br />

Eldo® User's Manual, 15.3 707


Working with S, Y, Z Parameters<br />

CITIfile Data File Format<br />

CITIfile Data File Format<br />

Input for: Eldo and Eldo RF<br />

CITIfile stands for Common Instrumentation Transfer and Interchange file format. Eldo<br />

partially supports CITIfile versions A.01.00 and A.01.01 formats for reading only. When<br />

reading, the format is automatically detected.<br />

Format<br />

The CITIfile data format file is an ASCII text file in which data appears line by line: N lines for<br />

each data point of N ports. The data points are stored in increasing order of frequency.<br />

Tip<br />

CITIfile data format files follow general syntax rules. The standard is available from the<br />

Agilent website:<br />

http://edadocs.software.keysight.com/display/ads2009U1/<br />

Working+with+Data+Files#WorkingwithDataFiles-CITIfileDataFormat<br />

• A typical CITIfile package is divided into two parts:<br />

o<br />

o<br />

The header is made up of keywords and setup information.<br />

The data usually consists of one or more arrays of data.<br />

• The length of a line within a CITIfile package should not exceed 80 characters. This<br />

allows instruments which may have limited RAM to define a reasonable input buffer<br />

length.<br />

• Keywords are always at the beginning of a new line. The end of a line is as defined by<br />

the file system or transfer mechanism being used.<br />

• Arrays of data start after the BEGIN keyword, and the END keyword follows the last<br />

data element in an array.<br />

Parameters<br />

Keyword<br />

CITIFILE<br />

NAME<br />

VAR<br />

CONSTANT<br />

Table 14-2. CITIfile Data Format Supported Keywords<br />

Limitations / Requirements<br />

Only A.01.00 and A.01.01 revisions are supported.<br />

Keywords after NAME are ignored.<br />

Only FREQ and MAG keywords supported.<br />

VAR FREQ MAG is mandatory.<br />

Supported:<br />

NBR_OF_PORTS (mandatory).<br />

NORMALIZATION (optional, only the value “1” is supported).<br />

708<br />

Eldo® User's Manual, 15.3


VAR_LIST_BEGIN /<br />

VAR_LIST_END<br />

SEG_LIST_BEGIN /<br />

SEG_LIST_END<br />

DATA<br />

BEGIN / END<br />

#KEYWORD<br />

(<strong>user</strong>-defined keyword)<br />

Related Topics<br />

Touchstone Data File Format<br />

Instantiating a Block Defined by S, Y, Z Parameters<br />

Instantiating a Block Defined by X-Parameters<br />

Only MAG format supported (revision A.01.00).<br />

List of FREQ associated values in ascending order.<br />

Working with S, Y, Z Parameters<br />

CITIfile Data File Format<br />

Table 14-2. CITIfile Data Format Supported Keywords (cont.)<br />

Keyword<br />

Limitations / Requirements<br />

Only one SEG in the block allowed (revision A.01.00).<br />

List of FREQ associated values.<br />

Supported:<br />

• S[i,j], Y[i,j], Z[i,j], G[i,j], H[i,j], T[i,j], A[i,j] (mandatory):<br />

• RI, MAGANGLE, DB supported.<br />

• Any order for [i,j] supported.<br />

• DATA S/Y/Z/G/T/A line number should correspond to the<br />

number of ports (#lines = nb_ports×nb_ports).<br />

• PORTZ[i] (<strong>user</strong>-defined keyword, optional, 50Ω by default):<br />

• RI supported (real format only: ", 0").<br />

• Any order for [i] supported.<br />

• All values in a BEGIN/END block should be identical (same<br />

value for all frequencies).<br />

• DATA PORTZ line number should match number of ports<br />

(#lines = nb_ports).<br />

Data should be complex (2 values per line).<br />

Number of lines should correspond to FREQ.<br />

Any line starting with # is ignored (considered as comment).<br />

Eldo® User's Manual, 15.3 709


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by X-Parameters<br />

Instantiating a Block Defined by X-Parameters<br />

X-parameters can be used in an XBLOCK, similar to the S parameters FBLOCK syntax. They<br />

can be used in Eldo RF SST analysis or Eldo Classic DC, AC, and noise analyses.<br />

Tip<br />

The X-parameters parser is based on the GMDIF version 2.0 file format:<br />

http://edocs.soco.agilent.com/display/ads2009U1/<br />

Working+with+Data+Files#WorkingwithDataFiles-XparameterGMDIFFormat<br />

Syntax<br />

.MODEL XBLOCK MACRO LANG=C<br />

XNAME XBLOCK PARAM:<br />

+ [M=VAL]<br />

+ [SINGLE_REFERENCE_NODE=VAL]<br />

+ STRING: FILENAME<br />

+ PIN: IP1 IN1 ... IPN INN<br />

Parameters<br />

• .MODEL<br />

The first line (.MODEL) is the reference to the model, where the entity is called XBLOCK.<br />

The other lines are the model parameters.<br />

Note<br />

This .MODEL line is optional. This declaration is not a requirement of Eldo when<br />

referencing embedded Eldo XBLOCK models.<br />

• PARAM:<br />

This keyword precedes the list of optional parameters.<br />

• M=val<br />

Device multiplier parameter, simulating the effect of multiple X-block elements in parallel.<br />

Default value is 1.<br />

• SINGLE_REFERENCE_NODE=val<br />

A single reference node is supported. When the number of pins of the XBLOCK model is<br />

even, Eldo considers that each port has two pins. When the number of pins is odd, Eldo<br />

considers the reference pin is the same for all ports (and it is the last pin). Specify<br />

SINGLE_REFERENCE_NODE=1 to enable the XBLOCK model to consider the last pin as<br />

the common reference pin for all ports if the number of ports is the number of pins−1.<br />

• STRING: filename<br />

Used to define the name of the touchstone file, or poles/residues file (.pls), containing the<br />

input data. Path definition is allowed.<br />

710<br />

Eldo® User's Manual, 15.3


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by X-Parameters<br />

• PIN: IP1 IN1 ... IPN INN<br />

The 2×N pins of the N-port model will be connected to nodes IP1 IN1 ... IPN INN.<br />

Description<br />

X-parameter files are identified with the .xnp extension (where n represents the number of<br />

ports). To compute accurate results, it is recommended to adapt output ports, that is, to match<br />

the port impedances with the port impedances used while generating X parameters.<br />

• Transient, SSTAC and SSTNOISE simulations are not supported.<br />

• Multi-tone extraction/simulation is not supported.<br />

• Memory effects are not supported.<br />

• X-parameter blocks do not generate noise.<br />

Eldo RF generates X-parameter data in the Generic MDIF (GMDIF) version 2.0 file format,<br />

with the .XFILE command similar to the S parameters .FFILE command. See Generating<br />

X-Parameters in the Eldo RF User’s Manual.<br />

Eldo® User's Manual, 15.3 711


Working with S, Y, Z Parameters<br />

Instantiating a Block Defined by X-Parameters<br />

712<br />

Eldo® User's Manual, 15.3


Chapter 15<br />

Aging and Reliability Simulation<br />

Reliability models are implemented in the Eldo UDRM (User Defined Reliability Model)<br />

interface.<br />

The objective of aging and reliability simulation is to be able to model the gradual damage,<br />

which occurs to the devices in a certain design causing degradation in the performance of that<br />

design. It is required to evaluate the amount of degradation occurring in a certain period of<br />

operation and examine the circuit performance after this period. The modeled damage could<br />

follow one or more of several damage mechanisms, which show gradual degradation in device<br />

performance.<br />

The reliability simulations follows the model defined by the <strong>user</strong> using the UDRM interface.<br />

Degradation effects supported are: Hot-Carrier degradation, and NBTI (Negative Bias<br />

Temperature Instability) degradation.<br />

Tip<br />

Refer to Eldo UDRM User’s Manual for more information.<br />

Running Reliability Simulation in Eldo<br />

Reliability simulation in Eldo can be used with any normal netlist provided that it contains a<br />

.TRAN or .SST analysis. This .TRAN or .SST analysis is the analysis used for all the fresh and<br />

aged simulations, and its outputs are also available for all the fresh and aged simulations.<br />

The reliability simulation is invoked and controlled through the Eldo reliability commands,<br />

summarized in Table 15-1. Clicking on a command link in the table will open the description<br />

inside the Eldo Reference Manual.<br />

Table 15-1. Eldo Reliability Commands<br />

Command<br />

Description<br />

.AGE<br />

Age analysis<br />

.AGE_LIB<br />

Define functions for reliability<br />

.AGE_SENSITIVITY Provide information about the stress sensitivity<br />

.AGEMODEL Reliability model parameter declaration<br />

.SETKEY<br />

Set reliability model key (password)<br />

Eldo® User's Manual, 15.3 713


Aging and Reliability Simulation<br />

Running Reliability Simulation in Eldo<br />

Command<br />

.USEKEY<br />

Table 15-1. Eldo Reliability Commands (cont.)<br />

Description<br />

Use reliability model key (password)<br />

Tip<br />

For further information on usage, and the implementation of reliability models, see the Eldo<br />

UDRM User’s Manual.<br />

714<br />

Eldo® User's Manual, 15.3


Chapter 16<br />

Electrothermal Simulation<br />

This chapter describes the electrothermal simulation available in Eldo.<br />

Electrothermal Simulation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715<br />

Specifying an Electrothermal Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716<br />

Verilog-A Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720<br />

Reporting and Sorting Thermal Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723<br />

Electrothermal Simulation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724<br />

Electrothermal Simulation Overview<br />

Eldo supports fully coupled electrothermal simulation. In high voltage/power applications, the<br />

control of the temperature and its propagation throughout the circuit and the system become<br />

critical. Using a global uniform temperature for the entire IC is no longer accurate enough.<br />

Devices consuming power tend to heat, and this heat propagates to the devices in the vicinity,<br />

through thermal coupling. The temperature at which a device operates (for example a simple<br />

resistor, a DMOS, or bipolar device) modifies its electrical characteristics. Some particular<br />

characteristics might have exponential dependencies with the temperature, such as leakage<br />

currents.<br />

As the electrical characteristics change, so does the dissipated power, and thus the heat, and so<br />

on. Everything (the electrical performance and the temperature) becomes tightly coupled and<br />

interacting, and cannot be calculated in isolation. The electrical and thermal equations must<br />

truly belong to the same system for accurate resolution.<br />

Eldo solves this problem by allowing the local temperature of devices or entire cells<br />

(subcircuits, in SPICE terminology) to be true variables of the system. Temperatures are solved<br />

simultaneously with the voltages and the currents through the devices. This is called true<br />

electrothermal simulation.<br />

This flow requires the inclusion of an estimated thermal network in the simulation netlist. This<br />

network is typically composed of thermal resistors and capacitors. The thermal network<br />

depends on the layout (the physical distance between the heating devices) and on the materials<br />

used in the process.<br />

Figure 16-1 shows the electrothermal simulation flow in Eldo.<br />

Eldo® User's Manual, 15.3 715


Electrothermal Simulation<br />

Specifying an Electrothermal Simulation<br />

Figure 16-1. Electrothermal Simulation Flow<br />

Related Topics<br />

Specifying an Electrothermal Simulation<br />

Electrothermal Simulation Example<br />

Specifying an Electrothermal Simulation<br />

The implementation of electrothermal simulation in Eldo is subcircuit-based.<br />

You specify the .TEMPNODE command inside the subcircuit for which the<br />

electrothermal effect is to be monitored. This is the internal definition syntax. The voltage value<br />

on the specified node represents the temperature increase of the corresponding subcircuit with<br />

respect to the global circuit temperature. Eldo computes the power dissipated by the active<br />

devices present in the subcircuit containing .TEMPNODE commands. This power, formally<br />

equivalent to a current source, is dissipated in the thermal network attached to the thermal net,<br />

resulting in a new temperature value of the subcircuit. Eldo continues iterations until<br />

convergence is achieved.<br />

Examples of Setting up Electrothermal Simulation<br />

For example, starting from a normal subcircuit:<br />

.subcircuit mybjt c b e<br />

.model bjt50 bjt level=…<br />

Q1 c b e bjt50<br />

.ends<br />

Enable electrothermal simulation with the following simple addition (th node on subcircuit and<br />

.TEMPNODE command):<br />

716<br />

Eldo® User's Manual, 15.3


Electrothermal Simulation<br />

Specifying an Electrothermal Simulation<br />

.subcircuit mybjt c b e th<br />

.model bjt50 bjt level=…<br />

Q1 c b e bjt50<br />

.tempnode th<br />

.end<br />

Anything connected on the thermal nodes is treated as a thermal device (not electrical) and part<br />

of the thermal network (not part of the electrical network).<br />

The thermal node does not have to be the last connection in the list. For example, you can<br />

alternatively specify:<br />

.subcircuit mybjt2 th c b e<br />

.model bjt50 bjt level=…<br />

Q1 c b e bjt50<br />

.tempnode th<br />

.end<br />

Blocks (subcircuit instances) are connected using the same convention as in regular SPICE. For<br />

example:<br />

X1 out1 inp em th1 mybjt<br />

X2 out2 inm em th2 mybjt<br />

Rth th1 th2 10<br />

The Rth thermal resistor creates a thermal coupling between transistors X1 and X2, connecting<br />

their respective thermal nodes th1 and th2 together. As th1 and th2 are connected to the thermal<br />

node (th) of the X1 and X2 blocks, they are no longer treated as regular electrical connections<br />

(by contrast, out1 and out2 are) carrying an electrical voltage. Instead, they carry at all times the<br />

temperature elevation of the X1 and X2 blocks. The temperature elevation is always measured<br />

with respect to the global temperature (27 °C by default in Eldo), and can be interpreted in<br />

degrees Kelvin or Celsius as it is a delta.<br />

You can use the subcircuit X instance parameter STATUS_TEMPNODE to control the<br />

temperature inheritance for that instance. For example:<br />

.subckto foo a b c<br />

.tempnode c<br />

R1 a b 1 tc1 = 0.1<br />

X1 a b foo2 status_tempnode=0<br />

.ends<br />

Because STATUS_TEMPNODE is set to 0, devices in X1 do not contribute to the power of<br />

instance foo. X1 does not inherit the temperature of instance foo, devices in X1 are supposed to<br />

be at the temperature of the circuit (.TEMP command). When STATUS_TEMPNODE is 1<br />

(default), X1 contributes to the power and inherits the temperature of the instance foo. Setting<br />

STATUS_TEMPNODE=2 provides an intermediate case: X1 inherits the temperature of the<br />

instance foo, but does not contribute to the power of X1.<br />

Eldo® User's Manual, 15.3 717


Electrothermal Simulation<br />

Specifying an Electrothermal Simulation<br />

Alternative Syntax for External Definition<br />

The thermal node can be defined external to the subcircuit definition. This means thermal<br />

analysis can be used without modifying the structure of your design kits (schematics, symbols,<br />

models). This is different to the internal definition where you can only define the thermal node<br />

of a subcircuit by adding the command inside its definition.<br />

You specify the .TEMPNODE SUBCKT=subckt THNODE=node external to the subcircuit<br />

definition, not internal. It creates a thermal node named node in the subcircuit. Because it is an<br />

internal node, the instantiations of the subcircuit do not need to change. Its hierarchical name<br />

must be used to connect it to a thermal network.<br />

Electrothermal Simulation Outputs<br />

Additional outputs are available when using electrothermal simulation. You can easily plot the<br />

dissipated power, the local time-varying temperature of the blocks, and the temperature<br />

elevations. For example:<br />

• Instantaneous power:<br />

.plot tran pow(X1) pow(X2)<br />

• Instantaneous temperature, in degrees Celsius:<br />

.plot tran temp(X1) temp(X2)<br />

• Temperature change (from the global temperature):<br />

.plot tran V(th1) V(th2)<br />

Electrothermal Simulation Modes<br />

To select the accuracy of the electrothermal simulation, specify option ETMODE=0|1|2.<br />

When ETMODE=1, default, Eldo makes the assumption that the temperature evolves at a<br />

slower rate than electrical quantities to perform a faster simulation. When this assumption is<br />

true (which is the case in real circuits), results are accurate. If this assumption is not true<br />

(generally for ideal circuits), select ETMODE=2 to obtain accurate results. Specifying<br />

ETMODE=0 deactivates electrothermal simulation.<br />

Notes<br />

• For internal definition syntax, there can be only one .TEMPNODE command per<br />

.SUBCKT: all devices in a subcircuit share the same temperature node, hence the same<br />

temperature.<br />

• For internal definition syntax, the node specified on the .TEMPNODE command is<br />

usually a node at the interface of the .SUBCKT definition, to connect a thermal network<br />

between subcircuits. This is not mandatory: thermal devices can be connected from<br />

outside using full-hierarchical names (for example R1 x1.x2.thn x1.x3.thn 1).<br />

718<br />

Eldo® User's Manual, 15.3


Electrothermal Simulation<br />

Specifying an Electrothermal Simulation<br />

• Subcircuit X instances inside a .SUBCKT inherit the .TEMPNODE of the parent, unless<br />

a new .TEMPNODE is specified on the .SUBCKT definition of the child, or the<br />

parameter STATUS_TEMPNODE= 0 is specified on the X instance (to disable the<br />

electrothermal effect for that instance).<br />

• You can use the subcircuit X instance parameter STATUS_TEMPNODE to disable (0)<br />

or enable (1—default) the temperature inheritance for that instance. Alternatively, you<br />

can select an intermediate case (2) where the subcircuit instance inherits the temperature<br />

as computed by the electrothermal simulation, but the instance does not contribute to the<br />

electrothermal power. This is useful in applications using LED models where the<br />

forward current is split into two components: one component contributes to dissipation<br />

(self-heating), the other current component is associated with light output without any<br />

contribution to heating; but both components depend on the local junction temperature.<br />

• Temperature-dependent parameters present inside a .SUBCKT with .TEMPNODE are<br />

re-evaluated at each iteration, and their values are propagated.<br />

• DTEMP specifications on devices inside an electrothermal subcircuit are ignored (Eldo<br />

computes the DTEMP value).<br />

• For external definition syntax, if there are multiple .TEMPNODE commands specified<br />

for the same subcircuit only the last one is used, the others are ignored.<br />

• For external definition syntax, if the thermal pin of a subcircuit instance is connected to<br />

nothing or to ground, then electrothermal simulation is disabled on this subcircuit<br />

instance.<br />

• For external definition syntax, the subcircuit name can contain wildcards. In this case, a<br />

thermal node is created for each subcircuit matching the regular expression.<br />

• For external definition syntax, when using wildcards, it is advised to carefully select<br />

subcircuits where the thermal node will be really connected to a thermal network. For<br />

example, it is not advised to specify:<br />

Limitations<br />

.TEMPNODE subckt=* thnode=th<br />

when only a few subcircuits will be connected to a thermal network. Adding a dangling<br />

thermal node on subcircuits where electrothermal simulation will not be activated has a<br />

negative impact on performance.<br />

• For Monte Carlo analysis: DEV is not allowed on parameters used on .SUBCKT with<br />

.TEMPNODE, however DEVX is allowed.<br />

• Electrothermal simulation is disabled when performing AC analysis: but DCOP done<br />

prior to AC does take into account electrothermal effects.<br />

• Electrothermal simulation is disabled when either IEM or RF analyses are found in the<br />

circuit.<br />

Eldo® User's Manual, 15.3 719


Electrothermal Simulation<br />

Verilog-A Support<br />

• Eldo Premier is not able to deactivate, on the resistors belonging to the thermal network,<br />

the automatic MINRVAL=1e-3 added by default with option PREMIER_MODE=2. If<br />

the thermal network has resistors with very small values (below 1e-3 Ohm), it is advised<br />

to explicitly set the MINRVAL option to avoid them being removed.<br />

Related Commands<br />

• .TEMPNODE command in the Eldo Reference Manual.<br />

• .REPORT_HEATING command in the Eldo Reference Manual.<br />

• .SUBCKT command in the Eldo Reference Manual.<br />

• Subcircuit Instance in the Eldo Reference Manual.<br />

Related Topics<br />

Reporting and Sorting Thermal Contributors<br />

Electrothermal Simulation Example<br />

Verilog-A Support<br />

Electrothermal simulation supports Verilog-A models. The power contribution of Y instances<br />

are taken into account. Eldo simulates Verilog-A models in an electrothermal simulation, in the<br />

same way as for SPICE devices.<br />

For Verilog-A devices, the analog kernel parameter system function $temperature, returns the<br />

local temperature in (Kelvin units) of the given subcircuit. Verilog-A devices that have<br />

temperature dependency are then impacted by any temperature variation inside the surrounding<br />

subcircuit. In a standard (non-electrothermal) simulation, the $temperature will always return<br />

the ambient temperature of the circuit.<br />

To simulate coupled electrothermal effects in Eldo, a thermal node for a given subcircuit is<br />

defined and connected to a thermal network in two ways using the .TEMPNODE command:<br />

internal definition inside the subcircuit and external definition outside the subcircuit. The<br />

electrical behavior of all instances inside such a subcircuit that are temperature dependent, are<br />

affected by the local temperature of this subcircuit. The total power dissipated by the<br />

instantiated devices, contributes to the heating in the connected thermal network.<br />

• Explicit .TEMPNODE specification:<br />

In the same as for Eldo devices, a Verilog-A model can be instantiated in a subcircuit<br />

that contains a .TEMPNODE command that describes the additional thermal port. The<br />

thermal port must be connected explicitly to the thermal network to enable<br />

electrothermal simulation.<br />

In the first example below, a SPICE resistor is replaced by a Verilog-A instance.<br />

• Implicit .TEMPNODE specification:<br />

720<br />

Eldo® User's Manual, 15.3


The .TEMPNODE statement can also be specified outside the subcircuit.<br />

Electrothermal Simulation<br />

Verilog-A Support<br />

In the second example below, a SPICE resistor is replaced by a Verilog-A instance.<br />

• Case of $temperature specified in @initial_step<br />

Examples<br />

To avoid multiple evaluations of some variables, the @initial_step of a Verilog-A model<br />

is commonly used. In a standard (non electrothermal) simulation, the temperature of the<br />

circuit is supposed to be constant during the entire simulation.<br />

For electrothermal simulation, Eldo allows the update of the local temperature without<br />

modifying the model. All variables that are dependent of the temperature and are present<br />

only in the initial step statement, are updated at each temperature variation inside the<br />

surrounding subcircuit.<br />

This reduces the evaluation cost of the resistor model with $temperature in the @initial<br />

step compared to the first model.<br />

In the third example below, resistor1 and resistor2 give the same electrothermal<br />

simulation results.<br />

Examples of .TEMPNODE specifications with Verilog-A models:<br />

• Explicit .TEMPNODE specification—a SPICE resistor is replaced by the Verilog-A<br />

instance xra:<br />

* Verilog-A Electrothermal simulation example<br />

* I(V1) = -2.5607996733E-02<br />

* TEMP(X1) = 4.6050301765E+01 Celsius<br />

.hdl resistor.va<br />

.SUBCKT test a b thn<br />

.tempnode thn<br />

xra a b resistor RS=1k tc1 = 0.1<br />

.ENDS<br />

.option numdgt = 10<br />

v1 a 0 100<br />

* instantiate the thermal subcircuit:<br />

* 3 pins to connect<br />

x1 a b thn test<br />

r2 b 0 1k<br />

* connect the explicit thermal node<br />

* to the thermal network<br />

rthn thn 0 10<br />

.op<br />

.extract dc i(v1)<br />

.extract dc TEMP(x1)<br />

.end<br />

Eldo® User's Manual, 15.3 721


Electrothermal Simulation<br />

Verilog-A Support<br />

• Implicit .TEMPNODE specification—a SPICE resistor is replaced by the Verilog-A<br />

instance xra:<br />

*Verilog-A Electrothermal simulation example<br />

* I(V1) = -2.5607996733E-02<br />

* TEMP(X1) = 4.6050301765E+01 Celsius<br />

.hdl resistor.va<br />

.SUBCKT test a b<br />

xra a b resistor RS=1k tc1 = 0.1<br />

.ENDS<br />

.tempnode subckt=test thnode=thn<br />

.option numdgt = 10<br />

v1 a 0 100<br />

* instantiate the thermal subcircuit:<br />

* 2 pins to connect<br />

x1 a b test<br />

r2 b 0 1k<br />

* connect the implicit thermal node<br />

* to the thermal network<br />

rthn x1.thn 0 10<br />

.op<br />

.extract dc i(v1)<br />

.extract dc TEMP(x1)<br />

.end<br />

• An example of the $temperature function usage is shown in the small resistor code<br />

below. In this model, the temperature is evaluated at each iteration and the value of the<br />

resistor updated accordingly. This may have a certain cost.<br />

`include "disciplines.h"<br />

module resistor1 (a,b);<br />

electrical a , b;<br />

inout a,b;<br />

parameter real RS = 0;<br />

parameter real TC1 = 0;<br />

real rtval;<br />

analog begin<br />

rtval = RS*(1.0 + TC1*($temperature - 300.15));<br />

I(a,b)


Electrothermal Simulation<br />

Reporting and Sorting Thermal Contributors<br />

`include "disciplines.h"<br />

module resistor2 (a,b);<br />

electrical a , b;<br />

inout a,b;<br />

parameter real RS = 0;<br />

parameter real TC1 = 0;<br />

real rtval;<br />

analog begin<br />

@(initial_step) begin<br />

rtval = RS*(1.0 + TC1*($temperature - 300.15));<br />

end<br />

I(a,b)


Electrothermal Simulation<br />

Electrothermal Simulation Example<br />

Related Commands<br />

• .REPORT_HEATING command in the Eldo Reference Manual.<br />

Related Topics<br />

Electrothermal Simulation Example<br />

Electrothermal Simulation Example<br />

This example verifies the electrothermal simulation.<br />

* Electrothermal simulation example<br />

.SUBCKT test a b thn<br />

.tempnode thn<br />

ra a b 1k tc1 = 0.1<br />

.ENDS<br />

.option numdgt = 10<br />

v1 a 0 100<br />

x1 a b thn test<br />

r2 b 0 1k<br />

rthn thn 0 10<br />

.op<br />

.extract dc i(v1)<br />

.extract dc TEMP(x1)<br />

.alter<br />

x1 a b 0 test<br />

.temp '27 + 1.9050301766E+01'<br />

.end<br />

The .TEMPNODE command specifies node thn as the thermal net on which power dissipation<br />

will be monitored. The thermal net here is a single resistor, rthn, it emulates how the power<br />

generated by devices attached to node thn is dissipated to the thermal ground 0. The syntax<br />

TEMP(x) is used to plot/extract the actual temperature value of an X instance or the temperature<br />

of a device.<br />

The .ALTER statement reruns Eldo with a modified netlist. The solution of the previous<br />

simulation gives 19.05, this value is used to define a .TEMP, and the thermal effect is disabled<br />

by connecting the thermal net to 0 (3rd pin of subcircuit test), and extract values I(V) obtained<br />

in the first run when electrothermal was active must be identical to the extract obtained in the<br />

ALTER run where the TEMP is explicitly defined and electrothermal disabled.<br />

An equivalent example, using the alternative syntax to define the thermal node external to the<br />

subcircuit definition is as follows.<br />

724<br />

Eldo® User's Manual, 15.3


Electrothermal Simulation<br />

Electrothermal Simulation Example<br />

* Electrothermal simulation example - syntax 2 (external definition)<br />

.SUBCKT test a b<br />

ra a b 1k tc1 = 0.1<br />

.ENDS<br />

.tempnode subckt=test thnode=thn<br />

.option numdgt = 10<br />

v1 a 0 100<br />

x1 a b test<br />

r2 b 0 1k<br />

rthn x1.thn 0 10<br />

.op<br />

.extract dc i(v1)<br />

.extract dc TEMP(x1)<br />

.end<br />

The .TEMPNODE command specifies a thermal node thn in the subcircuit test. Its hierarchical<br />

name x1.thn is used to connect it to a thermal network. The thermal net here is a single resistor,<br />

rthn, it emulates how the power generated by devices attached to node thn is dissipated to the<br />

thermal ground 0. The syntax TEMP(x) is used to plot/extract the actual temperature value of an<br />

X instance or the temperature of a device.<br />

Related Topics<br />

Electrothermal Simulation Overview<br />

Specifying an Electrothermal Simulation<br />

Eldo® User's Manual, 15.3 725


Electrothermal Simulation<br />

Electrothermal Simulation Example<br />

726<br />

Eldo® User's Manual, 15.3


Chapter 17<br />

IBIS Models Support in Eldo<br />

This chapter provides a brief introduction and background to IBIS, lists the current state of IBIS<br />

support in Eldo, and provides the syntax and its description for simulating either individual IBIS<br />

buffers or entire components. General notes and options related to the IBIS support in Eldo are<br />

also described, and some illustrative examples provided. Finally, the chapter ends with some<br />

examples. It is not intended to provide a detailed description of the IBIS standard in this chapter.<br />

Introduction to IBIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728<br />

IBIS Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728<br />

Using IBIS Models in Eldo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728<br />

IBIS Resources on the Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729<br />

IBIS File Types and Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729<br />

Checking IBIS Files with the Golden Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731<br />

IBIS Device Standards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732<br />

Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733<br />

Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744<br />

Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745<br />

Electrical Board Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748<br />

IBIS AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748<br />

IBIS Support in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749<br />

Backward Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749<br />

Analysis Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749<br />

Digital Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750<br />

IBIS Model Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751<br />

IBIS Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752<br />

IBIS Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765<br />

IBIS Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773<br />

IBIS Electrical Board Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777<br />

Supported Keywords and Sub-Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780<br />

IBIS Algorithmic Model Interface (AMI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787<br />

IBIS Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790<br />

Example 1—Single-Ended Tx-Rx System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790<br />

Example 2—Pseudo-Differential Tx-Rx System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792<br />

Example 3—Package Parasitics Cross Talk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794<br />

Example 4—Simultaneous Switching Output Noise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796<br />

Eldo® User's Manual, 15.3 727


IBIS Models Support in Eldo<br />

Introduction to IBIS<br />

Introduction to IBIS<br />

I/O Buffer Information Specification (IBIS) is an ANSI/EIA-656 standard that is developing a<br />

specified industry standard method to electronically transport input/output buffers modeling<br />

data between semiconductor vendors, EDA tool vendors and end customers.<br />

Eldo supports IBIS version 5.0.<br />

IBIS Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728<br />

Using IBIS Models in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728<br />

IBIS Resources on the Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729<br />

IBIS File Types and Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729<br />

Checking IBIS Files with the Golden Parser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731<br />

IBIS Background<br />

IBIS was originally developed by Intel ® Corporation in the early 1990s. With the participation<br />

of more companies and industry members, IBIS Open Forum was created to promote the IBIS<br />

development and to make sure that standard exists. In 1995 the IBIS Open Forum teamed with<br />

the EIA. Since then the EIA/IBIS Open Forum oversaw all technical developments of IBIS.<br />

The IBIS committee provides a new version every one or two years. Each version adds more<br />

features that the EDA tool vendors should support, and describes how the related input data is<br />

formatted. The latest IBIS standard is IBIS version 5.0 which was ratified by the EIA IBIS Open<br />

Forum on August 29, 2008. The previous standard, IBIS version 4.2, was ratified by the EIA<br />

IBIS Open Forum on June 2, 2006 and formally ratified as ANSI/EIA-656-B on September 1,<br />

2006.<br />

IBIS is a behavioral model that describes the electrical characteristics of the I/O buffers using<br />

V/I and V/T tables. It has the advantage of not showing any proprietary information. Moreover,<br />

the use of behavioral simulation, instead of transistor level simulation, helps in accelerating the<br />

signal integrity analysis and the overall design cycle. It is important to note that IBIS does not<br />

provide the models themselves but describes how the input data to the EDA tool is formatted.<br />

An IBIS file contains data not only about individual buffers but also about an entire component<br />

(IC) including pin-to-buffer mapping and package parasitics.<br />

Related Topics<br />

Using IBIS Models in Eldo<br />

Using IBIS Models in Eldo<br />

Using IBIS in Eldo is similar to using other SPICE elements, such as transistors. You specify a<br />

name for the buffer, the nodes to which the buffer is connected to the rest of the circuit, and<br />

728<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Resources on the Web<br />

parameters to refer to a model for the buffer and the IBIS file where the model is located. In<br />

Eldo you specify the name of the IBIS element with the prefix _IO_.<br />

Eldo can simulate IBIS devices either individually or in the overall component. Eldo supports<br />

external models/circuits written in SPICE or Verilog-A. External models/circuits written in<br />

VHDL-AMS and Verilog-AMS can be simulated using Questa ADMS. Eldo is compatible with<br />

HSPICE syntax, under option compat, except for multilingual model Support.<br />

Related Topics<br />

IBIS Device Standards<br />

IBIS Support in Eldo<br />

IBIS Examples<br />

IBIS Resources on the Web<br />

The best way to learn about IBIS is to review the IBIS specification, published papers and<br />

sample models. Extensive IBIS information is available on the web as follows:<br />

• Official IBIS Open Forum website:<br />

http://www.eda.org/ibis/<br />

• Mentor Graphics Visual IBIS Editor:<br />

http://www.mentor.com/pcb/downloads/visual_ibis_editor/<br />

Through these web sites you can: receive technical support; review articles, presentations and<br />

FAQs; find links to most public IBIS models from semiconductor and connector supplier<br />

sources; get free tools and documents that help create an IBIS model; and retrieve the IBIS<br />

specifications.<br />

Related Topics<br />

Introduction to IBIS<br />

IBIS File Types and Structures<br />

There are three supported file types within the IBIS modeling framework:<br />

• IBIS files, *.ibs<br />

The IBIS file is the main file that contains the basic information about the component(s)<br />

and their internal buffers. The .ibs file also contains information about the package<br />

electrical characteristics (package model).<br />

• Package files, *.pkg<br />

Eldo® User's Manual, 15.3 729


IBIS Models Support in Eldo<br />

IBIS File Types and Structures<br />

Advanced package models can be either placed inside the .ibs file itself or in a package<br />

file (.pkg).<br />

• Electrical board description files, *.ebd<br />

An electrical board description file (.ebd file) is defined to describe the connections of a<br />

board level component between the board pins and its components on the board.<br />

The IBIS files contain the same basic information and can be thought of as having three main<br />

sections:<br />

• Header section—contains information about the IBIS version, the file name, and the<br />

process or organization responsible for the information.<br />

• Component section—describes the component name, pinout, pin to buffer mapping, and<br />

package electrical characteristics.<br />

• Model section—describes the behavior of each unique buffer used in a component.<br />

An IBIS .ibs file consists of:<br />

• File Header Section<br />

• [Component]<br />

• [Model]<br />

• [Define Package Model]<br />

• [End]<br />

A package .pkg file consists of:<br />

• File Header Section<br />

• [Define Package Model]<br />

• [End]<br />

An electrical board description file .ebd file consists of:<br />

• File Header Section<br />

• [Begin Board Description]<br />

• [End]<br />

Related Topics<br />

IBIS Buffers<br />

IBIS Component<br />

IBIS Package<br />

730<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Checking IBIS Files with the Golden Parser<br />

IBIS Electrical Board Description<br />

Checking IBIS Files with the Golden Parser<br />

The golden parser is a syntax-checking program that aids the development and verification of<br />

IBIS data files.<br />

It is available in executable format, compiled for a variety of operating systems, free of charge<br />

through the IBIS website:<br />

http://www.eigroup.org/ibis/tools.htm<br />

The latest version of this parser, ibischk5 v5.0.7, is integrated inside Eldo. The golden parser<br />

produces warnings and errors which are displayed in the Eldo output by default when an IBIS<br />

file is incorporated in the simulation netlist.<br />

Related Topics<br />

IBIS Support in Eldo<br />

Eldo® User's Manual, 15.3 731


IBIS Models Support in Eldo<br />

IBIS Device Standards<br />

IBIS Device Standards<br />

The following sections describe the IBIS device standards:<br />

Buffers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733<br />

Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744<br />

Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745<br />

Electrical Board Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748<br />

IBIS AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748<br />

732<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Buffers<br />

Buffers<br />

IBIS is a modeling technique that provides a simple table-based buffer model for semiconductor<br />

devices. IBIS models can be used to characterize I/V output curves, rising/falling transition<br />

waveforms, and package parasitic information of the device. There are four types of buffer in<br />

IBIS:<br />

• “Single-Ended Buffers” on page 735<br />

• “Pseudo-Differential Buffers” on page 739<br />

• “True Differential Buffers” on page 741<br />

• “Series Buffers” on page 742<br />

IBIS also defines a global list of port names with fixed functionality that can be applied to all<br />

types of buffers. Eldo uses the same port naming and definition for the buffer equivalent<br />

subcircuit. Table 17-1 lists the port names and their descriptions. Port names starting with “A”<br />

are used to define analog ports while those starting with “D” are used to define digital ports.<br />

Table 17-1. List of Predefined Port Names and their Descriptions<br />

Port Name Description<br />

A_signal I/O signal port for a model unit<br />

A_signal_pos Non-inverting port of a differential model<br />

A_signal_neg Inverting port of a differential model<br />

A_pos<br />

Non-inverting port for series or series switch models<br />

A_neg<br />

Inverting port for series or series switch models<br />

A_puref Voltage reference port for pull-up structure<br />

A_pcref Voltage reference port for power clamp structure<br />

A_pdref Voltage reference port for pull-down structure<br />

A_gcref Voltage reference port for ground clamp structure<br />

A_gnd<br />

Global reference voltage port<br />

D_drive Digital input to a model unit<br />

D_enable Digital enable for a model unit<br />

D_receive Digital receive port of a model unit, based on data on A_signal (and/<br />

or A_signal_pos and A_signal_neg)<br />

D_switch Digital input for control of a series switch model<br />

Table 17-2 lists all the available buffer types, assigns a number for each type, lists nodes used<br />

by buffer type, and provides the min/max number needed for each buffer type. “[ ]” is used to<br />

Eldo® User's Manual, 15.3 733


IBIS Models Support in Eldo<br />

Buffers<br />

denote optional nodes. Pseudo-differential buffers are recognized as a separate buffer type by<br />

the IBIS standard and are constructed from two single-ended buffers. Therefore, pseudodifferential<br />

buffer nodes can be obtained from their single-ended version by replacing<br />

“a_signal” with “a_signal_pos” and “a_signal_neg”. PN is used to denote the power nodes,<br />

which are:<br />

• a_pcref - a_gcref for Input, Input_ECL, Terminator, and Input_diff buffers.<br />

• a_pcref - a_gcref - a_puref - a_pdref for other types.<br />

Table 17-2. Buffer Types and Port Names Used<br />

Type Number Nodes (in order) Min/Max<br />

Input 1 a_signal - [d_receive] - [PN] 1/4<br />

Output 2 a_signal - d_drive - [PN] 2/6<br />

I/O 3 a_signal - d_drive - d_enable - [d_receive] - [PN] 3/8<br />

3-state 4 a_signal - d_drive - d_enable - [PN] 3/7<br />

Open_drain 5 a_signal - d_drive - [PN] 2/6<br />

I/O_open_drain 8 a_signal - d_drive - d_enable - [d_receive] - [PN] 3/8<br />

Open_sink 7 a_signal - d_drive - [PN] 2/6<br />

I/O_open_sink 8 a_signal - d_drive - d_enable - [d_receive] - [PN] 3/8<br />

Open_source 9 a_signal - d_drive - [PN] 2/6<br />

I/O_open_source 10 a_signal - d_drive - d_enable - [d_receive] - [PN] 3/8<br />

Input_ECL 11 a_signal - [d_receive] - [PN] 1/4<br />

Output_ECL 12 a_signal - d_drive - [PN] 2/6<br />

I/O_ECL 13 a_signal - d_drive - d_enable - [d_receive] - [PN] 3/8<br />

3-state_ECL 14 a_signal - d_drive - d_enable - [PN] 3/7<br />

Series 15 a_pos - a_neg 2<br />

Series_switch 16 a_pos - a_neg - [d_switch] 2/3<br />

Terminator 17 a_signal - [PN] 1/3<br />

Input_diff 18 a_signal_pos - a_signal_neg - [d_receive] - [PN] 2/5<br />

Output_diff 19 a_signal_pos - a_signal_neg - d_drive - [PN] 3/7<br />

I/O_diff 20 a_signal_pos - a_signal_neg - d_drive - d_enable 4/9<br />

- [d_receive] [PN]<br />

3-state_diff 21 a_signal_pos - a_signal_neg - d_drive - d_enable<br />

- [PN]<br />

4/8<br />

734<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Buffers<br />

Single-Ended Buffers<br />

A number of single-ended buffer types are supported.<br />

Input and Input_ECL buffers<br />

Figure 17-1 shows the model of an Input buffer (receiver). It has two sets of I-V curves, a<br />

ground clamp and a power clamp, and the die capacitance C_comp. Two thresholds are defined,<br />

Vinl and Vinh, that determine the buffer’s digital output, d_receive.<br />

Figure 17-1. Input Buffer Model Building Blocks<br />

The following relation gives the digital output for the non-inverting buffers:<br />

Vd_receive =<br />

1.0 V if Va_signal > Vinh<br />

0.5 V if Vinl < Va_signal < Vinh<br />

0.0 V if Va_signal < Vinh<br />

Eldo® User's Manual, 15.3 735


IBIS Models Support in Eldo<br />

Buffers<br />

If Vinl and Vinh are not specified in the IBIS file, the default values of Vinl = 0.8 V and<br />

Vinh = 2.0 V are assumed for an Input buffer and Vinl = -1.475 V and Vinh = -1.165 V are<br />

assumed for an Input_ECL buffer.<br />

Terminator Buffers<br />

A Terminator is an input-only model that can have analog loading effects on the circuit being<br />

simulated, but has no digital output. The Terminator model is shown in Figure 17-2. It may<br />

contain termination elements like Rgnd, Rpower, Rac, and Cac in addition to the usual clamping<br />

diodes circuitry.<br />

Figure 17-2. Terminator Buffer Model Building Blocks<br />

Output and Output_ECL buffers<br />

Figure 17-3 shows the model of an Output buffer (driver). It has four sets of I-V curves, a<br />

ground clamp, a power clamp, a pull-up network and a pull-down network, and the die<br />

capacitance C_comp. In addition, the transient switching characteristics of the pull-up and pulldown<br />

networks are also defined.<br />

736<br />

Eldo® User's Manual, 15.3


Figure 17-3. Output Buffer Model Building Blocks<br />

IBIS Models Support in Eldo<br />

Buffers<br />

IBIS provides two ways for defining the switching characteristics:<br />

• If the output switching (V-T) waveform of a buffer can be approximated by a linear<br />

ramp then the V-T data may be reported as a rising and falling ramp rate (dV/dt) by<br />

using the [Ramp] keyword.<br />

• Using the [Rising Waveform] and [Falling Waveform] keywords if the output switching<br />

waveform of the buffer is significantly non-linear.<br />

In both cases the transient current is considered to be a factor from the DC (steady state) current<br />

and this factor is calculated from the provided switching data. There are two factors; k_pullup<br />

and k_pulldown. These factors range from 0, representing a switched off pull-up/pull-down<br />

network, to 1, representing a fully switched on network. The switching starts when d_drive<br />

crosses 0.5 V and according to the buffer polarity, inverting or non-inverting, the appropriate<br />

network is switched on or off.<br />

Output_ECL buffer differs from Output buffer in that the a_pdref is internally connected to the<br />

a_puref; that is, pull-up and pull-down share the same power reference. Output and<br />

Output_ECL buffers also differ in the conventions related to the [Pulldown], [Temperature<br />

Range], [Pin Mapping] keywords and the measuring conditions of the switching characteristics.<br />

Eldo® User's Manual, 15.3 737


IBIS Models Support in Eldo<br />

Buffers<br />

I/O and I/O_ECL Buffers<br />

Figure 17-4 shows the model of an I/O buffer. The d_enable signal determines if the buffer will<br />

operate as an Input or Output buffer. If the buffer is active low, then it will behave as an Output<br />

buffer if d_enable < 0.5 V and as an Input buffer otherwise. If the buffer is active high, then it<br />

will behave as an Output buffer if d_enable > 0.5 V and as an Input buffer otherwise.<br />

Figure 17-4. I/O Buffer Model Building Blocks<br />

When behaving as an Output buffer, I/O_ECL buffer differs mainly from I/O buffer in that the<br />

a_pdref is internally connected to the a_puref; that is, pull-up and pull-down share the same<br />

power reference. I/O and I/O_ECL buffers also differ in the conventions related to [Pulldown],<br />

[Temperature Range], [Pin Mapping] keywords and the measuring conditions of the switching<br />

characteristics. Otherwise, if behaving as an Input buffer, I/O and I/O_ECL buffers differ in the<br />

default values of Vinl and Vinh (see “Input and Input_ECL buffers” on page 735 for details).<br />

3_state and 3_state_ECL Buffers<br />

The model of a 3_state buffer is show in Figure 17-5. The 3_state buffer is very similar to the I/<br />

O buffer but does not have a digital output. It either works as an output buffer when enabled or<br />

high impedance when not enabled. The high impedance state is described by the Power Clamp,<br />

GND Clamp and die capacitance, C_comp.<br />

738<br />

Eldo® User's Manual, 15.3


Figure 17-5. 3_state Buffer Model Building Blocks<br />

IBIS Models Support in Eldo<br />

Buffers<br />

3_state_ECL buffer differs mainly from 3_state buffer in that the a_pdref is internally<br />

connected to the a_puref; that is, pull-up and pull-down share the same power reference. 3_state<br />

and 3_state_ECL buffers also differ in the conventions related to [Pulldown], [Temperature<br />

Range], [Pin Mapping] keywords and the measuring conditions of the switching characteristics.<br />

Buffers with Open Drain, Sink, or Source<br />

The open drain and open sink are buffers that do not include a pull-up network; that is, the<br />

output can sink current only. Earlier IBIS versions used the term “open drain”, however, this<br />

may be confusing for NMOS and PMOS networks, and so the term “open sink” is now used to<br />

describe a buffer that can sink current only. The “open drain” terminology is retained for<br />

backward compatibility.<br />

The open source buffer is a buffer that does not include a pull-down network; that is, the output<br />

can source current only.<br />

Pseudo-Differential Buffers<br />

The [Diff Pin] keyword in the IBIS file is used to create a pseudo-differential buffer from two<br />

already existing single-ended buffers.<br />

A pseudo-differential input buffer consists of two single-ended input buffers as shown in<br />

Figure 17-6. The digital outputs of these two single-ended buffers are tied together and labeled<br />

by d_receive. One single-ended buffer’s input is taken to be the non-inverting input<br />

Eldo® User's Manual, 15.3 739


IBIS Models Support in Eldo<br />

Buffers<br />

(a_signal_pos) while the second one is taken to be the inverting input (a_signal_neg). The<br />

differential input threshold is denoted by Vdiff and is provided under the [Diff Pin] keyword in<br />

the IBIS file.<br />

Figure 17-6. Pseudo-Differential Input Buffer Consisting of Two Single-Ended<br />

Input Buffers<br />

The digital output d_receive is given by:<br />

d_receive =<br />

• 1 V if a_signal_pos - a_signal_neg > V diff<br />

• 0 V if a_signal_pos - a_signal_neg < V diff<br />

The pseudo-differential output buffer consists of two single-ended output buffers as shown in<br />

Figure 17-7. One single-ended buffer’s output is taken to be the non-inverting output<br />

(a_signal_pos) while the second one is taken to be the inverting output (a_signal_neg). The<br />

differential delay between the two outputs is denoted by tdelay and provided under the [Diff<br />

Pin] keyword in the IBIS file.<br />

740<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Buffers<br />

Figure 17-7. Pseudo-Differential Output Buffer Consisting of Two Single-Ended<br />

Output Buffers<br />

The two inputs are tied together and the overall differential buffer has one input and two<br />

outputs. Positive differential delay means the non-inverting output is delayed with respect to the<br />

inverting output. Inverting differential delay means inverting output is delayed with respect to<br />

the non-inverting output.<br />

True Differential Buffers<br />

The native IBIS does not support true differential buffers, they are only supported using the<br />

external model format created using SPICE or Verilog-A.<br />

SPICE or Verilog-A formatted models are pure analog. Eldo is responsible for handling the A/D<br />

and D/A conversions as shown in Figure 17-8. Specification of these A/D and D/A blocks are<br />

defined in the IBIS file.<br />

Eldo® User's Manual, 15.3 741


IBIS Models Support in Eldo<br />

Buffers<br />

Figure 17-8. Example Analog-Only Model init Using an I/O Buffer<br />

Series Buffers<br />

Series and Series_switch buffers can be passive circuits containing various combinations of<br />

inductors, resistors and capacitors, as well as the steady state I-V characteristics of non-linear<br />

devices such as diodes and transistors.<br />

Series and Series_switch are identical in their elements, the only difference is that the latter one<br />

can be switched ON or OFF. The IBIS specifications do not define the transition characteristics<br />

of a Series_switch. Switches are assumed to either be ON or OFF during a simulation, and I-V<br />

characteristics could be defined for either or both states. Switching does not occur during<br />

simulation, but you must decide whether the element is ON or OFF before the simulation starts.<br />

The electrical models for the Series / Series_switch are:<br />

• R Series, L Series, Rl Series, C Series, Lc Series and Rc Series<br />

These enable IBIS to model simple passive models and/or parasitics. The model is<br />

shown in Figure 17-9.<br />

Figure 17-9. Simple Passive Modeling<br />

742<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Buffers<br />

• Series Current<br />

under which the data points define the I-V tables for voltages measured at Pin 1 with<br />

respect to Pin 2. The model is shown in Figure 17-10. Currents are considered positive if<br />

they flow into Pin 1.<br />

Figure 17-10. Series Current Modeling<br />

• Series MOSFET<br />

under which the data points define the I-V tables for voltages measured at Pin 2 for a<br />

given Vds setting. Currents are considered positive if they flow into Pin 1. The model is<br />

shown in Figure 17-11.<br />

Figure 17-11. Series MOSFET Modeling<br />

Related Topics<br />

IBIS Buffers<br />

Supported Keywords and Sub-Parameters<br />

Eldo® User's Manual, 15.3 743


IBIS Models Support in Eldo<br />

Package<br />

Package<br />

IBIS has many ways for package modeling, differing in their complexity and accuracy. The<br />

simplest, least accurate, way is to assume all the package pins are identical and uncoupled.<br />

The common package parasitics, R_pkg, L_pkg and C_pkg shown in Figure 17-12, are defined<br />

under the [Package] keyword in the IBIS file. Each pin is assumed to have parasitic resistance<br />

R_pkg, inductance L_pkg, and capacitance C_pkg. Unique parasitics R_pin, L_pin and C_pin<br />

can also be defined separately for each pin under the [Pin] keyword.<br />

Figure 17-12. Common Package Parasitics<br />

More advanced package modeling can be achieved using the [Package Model] keyword, where<br />

you can refer to a package model inside the .ibis file or in a .pkg file. You can model the<br />

package as coupled pins and give the resistance, inductance and capacitance matrices (RLC<br />

matrices) elements of the package pins network. These matrices assume the Maxwellian format.<br />

Another way of modeling is to divide the package into stub sections and define the electrical<br />

parameters for each section. The stub represents the physical connection between the package<br />

pin and the die pad. Each section is described in terms of its L/R/C per unit length and the Fork<br />

and Endfork subparameters allow any path to branch. For example, this can describe the<br />

parasitics of the wire bond between the die pad and the package pin. This stub can be treated as<br />

lumped or distributed elements depending on whether the section length is 0 or not.<br />

Related Topics<br />

IBIS Package<br />

Supported Keywords and Sub-Parameters<br />

744<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Component<br />

Component<br />

Eldo can simulate IBIS devices either individually or in the overall component. The component<br />

simulation means creating all the buffers inside the component, connecting these buffers to the<br />

appropriate nodes and power buses, creating the package parasitics and connecting buffer die<br />

pads to the package parasitics.<br />

Several keywords and sub-parameters in the IBIS file are used in a component simulation in<br />

addition to that used in the individual buffer simulation:<br />

• [Pin Mapping] is used to define the buffers sharing the same power/ground bus.<br />

See “Pin Mapping” on page 745.<br />

• [Series Pin Mapping] is used to join two die pads by a series buffer and [Series Switch<br />

Groups] is used to define switching combinations of series switches.<br />

See “Series Pin Mapping and Series Switch Groups” on page 746.<br />

• [Circuit Call] and [Node Declarations] create subcircuits from external circuit models<br />

written in SPICE or Verilog-A language, and make their interconnections.<br />

See “Node Declarations and Circuit Call” on page 747.<br />

• [Package Model] defines an advanced package model, taking coupling effects into<br />

account.<br />

Pin Mapping<br />

When the input of a buffer(s) changes from High to Low, the output driver current (Ldi/dt)<br />

creates a fluctuation between the core ground and power buses. This creates a pulse that can<br />

affect static buffer(s) output, causing the receiver(s) to switch inappropriately. A similar effect<br />

occurs when the input of a buffer(s) changes from Low to High. The difference between the<br />

core ground and power is referred to as “ground bounce.” The amount of ground bounce is<br />

dependent on the number of outputs changing state at the same time and thus the ground bounce<br />

may also be called “simultaneous switching output noise” (SSON).<br />

The [Pin Mapping] keyword, in the IBIS file, contains information on how power supplies are<br />

connected to individual buffers or groups of buffers that can be used for predicting SSON. The<br />

bus connections (from buffer nodes to supply or ground nodes) described by [Pin Mapping] are<br />

assumed as ideal shorts, and do not override parasitic information given for power and/or<br />

ground pins. Figure 17-13 indicates how the model is constructed, the [Pin Mapping] contains<br />

information about the bus connection from buffer nodes to supply/ ground nodes. For example,<br />

pins 8 and 12 are connected to the Power bus; pins 10 and 38 are connect to the Ground bus; and<br />

the models with signal terminals connected to pins 35 and 40 use these buses for their voltage<br />

supplies.<br />

Eldo® User's Manual, 15.3 745


IBIS Models Support in Eldo<br />

Component<br />

Figure 17-13. [Pin Mapping] Model Construction<br />

Series Pin Mapping and Series Switch Groups<br />

[Series Pin Mapping] enables modeling of elements in series with a signal path. They are<br />

particularly useful for modeling elements placed between the terminals of differential buffers.<br />

However, the [Series Pin Mapping] keyword can generally be used to connect series elements<br />

between the die pads of any buffers inside the component.<br />

Figure 17-14 indicates how the model is constructed.<br />

746<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Component<br />

Figure 17-14. Series Pin Mapping<br />

IBIS defines two categories of series elements; series and series switch. Series and series switch<br />

are identical in their elements. The only difference is that series switch can be switched ON or<br />

OFF. Series switches are divided into groups, and the group name to which the series switch<br />

belongs to, is defined in the function_table_group column in the IBIS file. The [Series Switch<br />

Groups] keyword is used to define switching combinations of series switch groups. You can<br />

specify the state of some groups to be ON and it is implicitly assumed that unspecified groups<br />

are OFF, or vice versa.<br />

Node Declarations and Circuit Call<br />

The [External Circuit] keyword enables you to define any block behavioral models, written in<br />

SPICE or Verilog-A, with any number of ports and with any functionality.<br />

The connectivity of these blocks to each other, to die nodes or die pads, must be defined using<br />

the [Node Declaration] and [Circuit Call] keywords. Only one [Node Declarations] keyword is<br />

permitted for each [Component] keyword. Multiple [Circuit Call] keywords may appear under a<br />

[Component] using the same [External Circuit] name if multiple instantiations of an [External<br />

Circuit] are needed.<br />

Related Topics<br />

IBIS Component<br />

Supported Keywords and Sub-Parameters<br />

Eldo® User's Manual, 15.3 747


IBIS Models Support in Eldo<br />

Electrical Board Description<br />

Electrical Board Description<br />

A “board level component” is a term describing a printed circuit board (PCB) or substrate which<br />

can contain components or even other boards, and which can connect to another board through a<br />

set of <strong>user</strong> visible pins. The electrical connectivity of such a board level component is referred<br />

to as an Electrical Board Description (EBD). An EBD file (.ebd) describes the connections of a<br />

board level component between the board pins and its components on the board. An .ebd file is<br />

intended to be a stand-alone file, not referenced by or included in any .ibs or .pkg files.<br />

The IBIS EBD describes the connection between the <strong>user</strong> accessible pins of a board level<br />

component and other pins of the board or pins of the ICs mounted on that board. Each pin-tonode<br />

connection is divided into one or more cascaded sections, where each section is described<br />

in terms of its L/R/C per unit length. The Fork and Endfork subparameters allow any path to<br />

branch to multiple nodes, or another pin. A path description is required for each pin whose<br />

signal name is not GND, POWER or NC.<br />

Related Topics<br />

IBIS Electrical Board Description<br />

Supported Keywords and Sub-Parameters<br />

IBIS AMI<br />

Eldo supports the IBIS Algorithmic Model Interface (AMI). IBIS AMI addresses the modeling<br />

of the advanced Serializer-Deserializer (SERDES) devices. For more details about AMI please<br />

refer to the IBIS v5.0 specifications document.<br />

Related Topics<br />

IBIS Algorithmic Model Interface (AMI)<br />

748<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Support in Eldo<br />

IBIS Support in Eldo<br />

Eldo uses the latest IBIS parser to support IBIS files up to and including IBIS version 5.0.<br />

Eldo can simulate IBIS devices either individually or in the overall component. See “Supported<br />

Keywords and Sub-Parameters” on page 780 for further information.<br />

Backward Compatibility<br />

Beginning the AMS2010.1 release, an improved algorithm is available for over-clocking<br />

switching and uses default values for IBIS instance keywords, c_fixture=yes and<br />

keep_monotonic=no, which provides results with better matching to transistor level results.<br />

For backward compatibility use the Eldo option or IBIS instance keyword IEVER, which may<br />

be used to switch back to older Eldo IBIS behavior as follows:<br />

• IEVER=1<br />

Switch back to the behavior prior to AMS2007.2. In this implementation most IBIS v2.1<br />

features are supported, but it uses different algorithms and components than the current<br />

implementation.<br />

• IEVER=2<br />

Switch back to the behavior prior to, and including, AMS2009.2. This implementation is<br />

the same as the current one, but an alternate algorithm is used for over-clocking<br />

switching, with default values c_fixture=no and keep_monotonic=yes.<br />

Note<br />

The backward compatibility option IEVER does not affect the parser version used. In all<br />

cases the latest parser version is used to parse IBIS files.<br />

Analysis Types<br />

IBIS specifications provide data about the large signal behavior of the I/O buffers and their<br />

switching characteristics. However, no data about the frequency domain behavior is provided.<br />

Therefore, IBIS simulation can be performed in either the DC or Transient domain.<br />

IBIS simulation is supported in Eldo using:<br />

• DC analysis<br />

• Transient analysis<br />

Eldo® User's Manual, 15.3 749


IBIS Models Support in Eldo<br />

Digital Levels<br />

Digital Levels<br />

IBIS defines both analog and digital ports.<br />

Table 17-3 and Table 17-4 show the different digital ports logic levels and the corresponding<br />

analog levels.<br />

Table 17-3. Digital Port Logic Levels<br />

Analog Input Digital Input: d_drive, d_enable and d_switch<br />

Vin > 0.5V Logic "1"<br />

Vin < 0.5V Logic "0"<br />

Table 17-4. Analog Levels<br />

Digital Output: d_receive Analog Output<br />

Logic "1”<br />

1.0 V<br />

Logic "0”<br />

0.0 V<br />

Logic "X”<br />

0.5 V<br />

Related Topics<br />

IBIS Device Standards<br />

IBIS Model Syntax<br />

750<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Model Syntax<br />

IBIS Model Syntax<br />

The following topics describe the IBIS model syntax in Eldo:<br />

IBIS Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752<br />

IBIS Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765<br />

IBIS Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773<br />

IBIS Electrical Board Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777<br />

Supported Keywords and Sub-Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780<br />

IBIS Algorithmic Model Interface (AMI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787<br />

Eldo® User's Manual, 15.3 751


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

IBIS Buffers<br />

You can reference an IBIS buffer by a model name, or a pin of component.<br />

Syntax<br />

Single-Ended Buffer<br />

_IO_xx ASG [DDR] [DEN] [DRX] [PCR GCR PUR PDR] file="path"<br />

+ model="model_name"|pin="pin_name" [component="component_name"]<br />

+ [device=type_name|type_number] [limit_k_factors=POWER|NO|YES]<br />

+ [corner=TYP|MIN|MAX|FAST|SLOW] [warn=ON|OFF] [nowarn] [power=ON|OFF]<br />

+ [c_comp_pu=value] [c_comp_pd=value]<br />

+ [c_comp_pc=value] [c_comp_gc=value]<br />

+ [use_fall_wvf=0|1|2] [use_rise_wvf=0|1|2]<br />

+ [k_pulldown=node] [k_pullup=node]<br />

+ [model_selector='msel_1=mdl_1 [,..., msel_n=mdl_n]'] [msel_mode=value]<br />

+ [package=0|1|2|3|OFF|CMPNT|PIN|PKGMOD] [pkg_model="pkg_model_name"]<br />

+ [rx_logic=0|1]<br />

+ [para_begin param1=value1 param2=value2 ... para_end]<br />

+ [<strong>eldo</strong>va=ON|OFF] [em_libname="logical_lib_name"]<br />

+ [table_tune=value]<br />

+ [logic_one=value] [logic_zero=value]<br />

+ [c_fixture=YES|NO]<br />

+ [keep_monotonic=YES|NO]<br />

+ [switch_isso=ON|OFF] [switch_composite_current=ON|OFF]<br />

+ [check_model_spec=ON|OFF] [ibischk_soft=NO|YES]<br />

Pseudo-Differential Buffer<br />

_IO_xx ASP ASN [DDR] [DEN] [DRX] [PCR GCR PUR PDR] file="path"<br />

+ component="component_name" pin="pin_name" inv_pin="inv_pin_name"<br />

+ [limit_k_factors=POWER|NO|YES] [corner=TYP|MIN|MAX|FAST|SLOW]<br />

+ [warn=ON|OFF] [nowarn] [power=ON|OFF]<br />

+ [c_comp_pu=value] [c_comp_pd=value]<br />

+ [c_comp_pc=value] [c_comp_gc=value]<br />

+ [use_fall_wvf=0|1|2] [use_rise_wvf=0|1|2]<br />

+ [model_selector='msel_1=mdl_1 [,..., msel_n=mdl_n]'] [msel_mode=value]<br />

+ [package=0|1|2|3|OFF|CMPNT|PIN|PKGMOD] [pkg_model="pkg_model_name"]<br />

+ [para_begin param1=value1 param2=value2 ... para_end]<br />

+ [<strong>eldo</strong>va=ON|OFF] [em_libname="logical_lib_name"]<br />

+ [table_tune=value]<br />

+ [logic_one=value] [logic_zero=value]<br />

+ [add_series_terminator=YES|NO|IFA]<br />

+ [c_fixture=YES|NO]<br />

+ [keep_monotonic=YES|NO]<br />

+ [switch_isso=ON|OFF] [switch_composite_current=ON|OFF]<br />

+ [check_model_spec=ON|OFF] [ibischk_soft=NO|YES]<br />

752<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

True Differential Buffer<br />

_IO_xx ASP ASN [DDR] [DEN] [DRX] [PCR GCR PUR PDR] file="path"<br />

+ model="model_name"|pin="pin_name" [inv_pin="inv_pin_name"]<br />

+ [component="component_name"]<br />

+ [device=type_name|type_number] [corner=TYP|MIN|MAX|FAST|SLOW]<br />

+ [warn=ON|OFF] [nowarn] [power=ON|OFF]<br />

+ [model_selector='msel_1=mdl_1 [,..., msel_n=mdl_n]'] [msel_mode=value]<br />

+ [package=0|1|2|3|OFF|CMPNT|PIN|PKGMOD] [pkg_model="pkg_model_name"]<br />

+ [para_begin param1=value1 param2=value2 ... para_end]<br />

+ [<strong>eldo</strong>va=ON|OFF] [em_libname="logical_lib_name"]<br />

+ [table_tune=value]<br />

+ [add_series_terminator=YES|NO|IFA] [ibischk_soft=NO|YES]<br />

Series Buffer<br />

_IO_xx APV ANV [DST] file="path"<br />

+ model="model_name"<br />

+ [device=type_name|type_number] [corner=TYP|MIN|MAX|FAST|SLOW]<br />

+ [warn=ON|OFF] [nowarn]<br />

+ [ss_state=ON|OFF] [all_sm=YES|NO]<br />

+ [keep_vds_monotonic=NO|YES] [keep_vgs_monotonic=NO|YES]<br />

+ [model_selector='msel_1=mdl_1 [,..., msel_n=mdl_n]'] [msel_mode=value]<br />

+ [para_begin param1=value1 param2=value2 ... para_end]<br />

+ [<strong>eldo</strong>va=ON|OFF] [em_libname="logical_lib_name"] [ibischk_soft=NO|YES]<br />

Parameters<br />

Some parameters are part of the IBIS standard, please refer to description in “IBIS Device<br />

Standards” on page 732.<br />

• _IO_xx<br />

IBIS instance name.<br />

• ASG<br />

Name of the a_signal node.<br />

• ASP<br />

Name of the a_signal_pos node.<br />

• ASN<br />

Name of the a_signal_neg node.<br />

• DDR<br />

Name of the d_drive node.<br />

• DEN<br />

Name of the d_enable node.<br />

• DRX<br />

Name of the d_receive node.<br />

Eldo® User's Manual, 15.3 753


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

• APC<br />

Name of the a_pcref node.<br />

• AGC<br />

Name of the a_gcref node.<br />

• APU<br />

Name of the a_puref node.<br />

• APD<br />

Name of the a_pdref node.<br />

• APV<br />

Name of the a_pos node.<br />

• ANG<br />

Name of the a_neg node.<br />

• DST<br />

Name of d_switch node, this node is used only for Series_Switch buffers that reference an<br />

external model.<br />

Note<br />

Buffer external nodes should be listed in order, depending on the type of the buffer<br />

model. A list of the buffer model types and corresponding ports are in Table 17-2.<br />

• file="path"<br />

Specifies the path to the file that contains an IBIS formatted model.<br />

This can be the full path (for example, /<strong>user</strong>/test/Models/model.ibs), a relative path, or just a<br />

file name. Both / and \ are acceptable as separators in the path name for the UNIX and<br />

Windows platforms. Avoid any spaces between the quotes and the file name/path. An Eldo<br />

option IBIS_SEARCH_PATH is available to specify the path to the directory to search for<br />

the IBIS files.<br />

• model="model_name"<br />

Specifies an IBIS model name within the specified IBIS file, it can be either a model name<br />

or a model selector name. Model name is case-sensitive.<br />

• pin="pin_name"<br />

Specifies a pin name within the specified component.<br />

Note<br />

The keywords pin and model are exclusive. It is an error to specify both these<br />

keywords in the same _IO_ card.<br />

754<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

• inv_pin="inverting_pin_name"<br />

Specifies a pin name within the specified component; this is to be used with the pseudo/true<br />

differential buffers. Pin name and inverting pin name must match a differential pins pair<br />

under [Diff Pin] IBIS keyword.<br />

• component="component_name"<br />

Specifies a component name within the specified IBIS file. The component name is casesensitive.<br />

Component name must be specified if pin name or inverting pin name is specified,<br />

while it is optional if you specify a model name.<br />

• device="type_name|type_number"<br />

Specifies the desired buffer type to be used; this is to check the buffer type assignment in the<br />

IBIS instance against the buffer type given in the IBIS file. A list with buffer types and<br />

numbers are given in Table 17-2.<br />

• limit_k_factors=POWER|NO|YES<br />

POWER<br />

Prevent current flow in the power terminals, a_puref and a_pdref, from being nonmonotonic.<br />

This is the default.<br />

NO<br />

Keep the scaling factors as calculated.<br />

YES<br />

Limit the switching scaling factors between 0 and 1.<br />

Switching scaling factors are extracted from the rising/falling waveforms, and used to<br />

modulate the output current of the buffer while switching.<br />

o<br />

o<br />

Scaling factor 0 indicates fully off for the working network.<br />

Scaling factor 1 indicates fully on.<br />

Sometimes these factor values exceed one or become negative, causing a negative slope,<br />

that may lead to some convergence problems.<br />

Note<br />

The POWER setting helps to avoid non-convergence issues whilst keeping the<br />

correct buffer behavior on the a_signal terminal.<br />

• corner=TYP|MIN|MAX|FAST|SLOW<br />

Specifies the IBIS corner to be used to extract the data from the IBIS file. The default is<br />

corner=TYP—if any data is missing under the Min or Max columns in the IBIS file then<br />

the Typ column value will be used instead. When corner=TYP, MIN, or MAX, simulation<br />

will extract the data under the corresponding Typ, Min, and Max columns in the IBIS file.<br />

When corner=FAST or SLOW, corner uses combinations from data under the Min and<br />

Max columns; FAST is the same as MAX, and SLOW is the same as MIN except for<br />

parameters listed in Table 17-5.<br />

Eldo® User's Manual, 15.3 755


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

Table 17-5. Exceptions to Fast=Max, Slow=Min Rule<br />

Parameter/Data Fast Slow<br />

C_comp Min Max<br />

[Cac] Min Max<br />

[Gnd Clamp Reference] Min Max<br />

[Pulldown Reference] Min Max<br />

[Package] Min Max<br />

• power=ON|OFF<br />

When power=ON (the default), the reference voltage sources are connected to the buffer<br />

reference ports a_pcref, a_gcref, a_puref, a_pdref internally. When power=OFF you are<br />

responsible for connecting the voltage sources externally, if you set power=OFF but do not<br />

specify the power nodes in the _IO_ card, then OFF will be ignored and internal references<br />

will be created.<br />

Power nodes can be specified when power=ON to enable you to print/plot the values of<br />

voltage sources connected to these nodes internally, in this case you must not connect<br />

external voltage sources to these nodes.<br />

• warn=ON|OFF<br />

Specifies if the warning message generated for this instance should be printed: ON, or<br />

suppressed: OFF. Setting warn=OFF is equivalent to using the keyword nowarn. The<br />

default setting is ON.<br />

• nowarn<br />

This is equivalent to warn=OFF.<br />

• c_comp_pu=value, c_comp_pd=value, c_comp_pc=value, c_comp_gc=value<br />

These four keywords are optional. If one of these keywords is specified with a non-zero<br />

value; the c_comp capacitor will be split up to four parts. Values are dimensionless numbers<br />

between 0 and 1, and the sum of them should be equal to 1. The default is zero for the<br />

unspecified values.<br />

• use_fall_wvf= 0|1|2, use_rise_wvf= 0|1|2<br />

0<br />

Use the ramp for the falling/rising transitions.<br />

1<br />

Use one waveform for the falling/rising transitions.<br />

2<br />

Use two waveforms for the falling/rising transitions.<br />

756<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

The default behavior is to use the first two waveforms if more than one waveform is<br />

specified in the IBIS model, use one waveform if only one is specified, and to use ramp if no<br />

waveforms are specified.<br />

• k_pulldown="node", k_pullup="node"<br />

The purpose of these keywords is to display the values of the pull-up and pull-down<br />

coefficients of the device as a function of time as the device goes through rising or falling<br />

transitions.<br />

• msel_mode=value<br />

The value indicates a model order under the [Model Selector] keyword in the IBIS file. If<br />

the value given is greater than the model selector list, then the first model will be selected.<br />

The default is 1.<br />

• model_selector='mod_sel1=mod_name1 [, mod_sel2=mod_name2 ,...]'<br />

Used to select models for some or all model selectors in the given IBIS file. model_selector<br />

has a higher precedence over msel_mode.<br />

• package=0|1|2|3|OFF|CMPNT|PIN|PKGMOD<br />

Specifies the package modeling type to be used for package parasitics.<br />

0 or OFF<br />

No package is added.<br />

1 or CMPNT<br />

RLC components defined under [Package] keyword are added, this is the default<br />

when specifying model name.<br />

2 or PIN<br />

RLC components defined under [Pin] are added, this is the default when specifying<br />

pin name.<br />

3 or PKGMOD<br />

A package model will be used. This is the default.<br />

Note<br />

For a single buffer and package=PKGMOD; if the package model is defined in<br />

matrix form Eldo issues a warning and sets package=PIN.<br />

If no data is available for the selected packaging type, then the data in the lower type<br />

will be used.<br />

• ss_state=ON|OFF<br />

For Series Switch buffers, if ss_state=ON, then Eldo will use the data under the [On]<br />

keyword: setting it to OFF, the data under [Off] keyword will be used. The default is ON.<br />

Eldo® User's Manual, 15.3 757


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

• all_sm=YES|NO<br />

For Series/Series_Switch buffers; setting all_sm to NO makes Eldo use only the first<br />

non-zero Vds table to generate the current of Series MOSFET elements in the Series buffer.<br />

The default is YES.<br />

• keep_vds_monotonic=NO|YES<br />

For Series/Series_Switch buffers; setting keep_vds_monotonic to YES will keep the Ids<br />

current monotonic versus Vds values for a given Vgs. Default is NO.<br />

• keep_vgs_monotonic=NO|YES<br />

For Series/Series_Switch buffers; setting keep_vgs_monotonic to YES will keep the Ids<br />

current monotonic versus Vgs values for a given Vds. Default is NO.<br />

• rx_logic=0|1<br />

For Input or IO buffers; if the input voltage on a_signal port is between Vinl and Vinh<br />

thresholds then rx_logic will control the output voltage on the d_receive port. When<br />

rx_logic=0 (default), the voltage on the d_receive port will be 0.5V (representing logic<br />

"X"). When rx_logic=1, the voltage on the d_receive port will have the same value (state) as<br />

the previous time step.<br />

Note<br />

If there are hysterises thresholds (Vinl+, Vinl-, Vinh+, and Vinh-) under the<br />

[Model Spec] keyword, then rx_logic has no effect.<br />

• para_begin param1=value1 param2=value2 ... para_end<br />

For IBIS buffers that reference an external model, the parameter names and values specified<br />

between keywords para_begin/para_end will be passed to the external model module.<br />

• <strong>eldo</strong>va=ON|OFF<br />

For IBIS models that reference an external model in Verilog-A, Eldo will use its Verilog-A<br />

compiler to handle these models if <strong>eldo</strong>va=ON. Setting <strong>eldo</strong>va=OFF enables these models<br />

to be simulated with Questa ADMS. The default is ON.<br />

• em_libname="logical_lib_name"<br />

For IBIS models that reference external models written in any AMS language, this keyword<br />

is optionally used. If no library is specified, the default work library will be used, specified<br />

with the vasetlib command or the -lib option of the vasim command. Otherwise, the<br />

specified logical_lib_name library is used.<br />

• table_tune=value<br />

Controls Eldo time step when the IBIS buffer is switching to obtain accurate output<br />

waveforms. Table_tune accepts non-negative values. Default value is 8.<br />

Setting a value of 1 forces Eldo to take into account all the switching waveform points, 2 to<br />

take one point into account and skip the next, 3 skips two points, but takes into account the<br />

third, and so on. Setting a value of 0 makes Eldo control the time step regardless of the<br />

switching waveform.<br />

758<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

Note<br />

The actual time step will be the minimum among the time step of the current IBIS<br />

buffer, time steps of other IBIS buffers, and the time step forced by Eldo.<br />

HMIN is always set as the lower limit for the time step.<br />

• logic_one=value|logic_zero=value<br />

Define the voltage level accepted by IBIS buffers for digital ports, logic_one default is 1.0,<br />

and logic_zero default is 0.0. logic_one must be greater than logic_zero by at least 200mV.<br />

The input voltage is considered ‘logic 1’ if it is greater than (logic_one + logic_zero)/2, and<br />

considered ‘logic 0’ if it is below this value.<br />

Note<br />

These levels are defined for native IBIS buffers and do not apply to external models.<br />

• add_series_terminator=YES|NO|IFA<br />

Used with the pseudo/true differential buffers to enable/disable creation of series models<br />

across the differential buffers die pads. Default is NO. IFA is the same as YES but does not<br />

produce warning messages if there is no series models defined under [Series Pin Mapping]<br />

for the differential buffers pins.<br />

• c_fixture=YES|NO<br />

Enable/disable using rising or falling waveforms that have a c_fixture sub-parameter with a<br />

non-zero value. Setting to NO makes Eldo discard these waveforms; YES (default) to use<br />

these waveforms.<br />

• keep_monotonic=YES|NO<br />

Used to control Eldo behavior with non-monotonic data. Setting to YES Eldo fixes the nonmonotonic<br />

data provided in the tables, setting to NO (default) Eldo keeps the nonmonotonic<br />

tables data as is. This keyword affects the data under [GND Clamp], [POWER<br />

Clamp], [Pullup] and [Pulldown] IBIS keywords.<br />

• switch_isso=ON|OFF<br />

Switch ON or OFF the effect of SSO (Simultaneous Switching Output) on the driver<br />

current. The SSO effect is modeled in the IBIS file under the [ISSO PD] and [ISSO PU]<br />

keywords. The default is ON.<br />

• switch_composite_current=ON|OFF<br />

Switch ON or OFF the effects of the power reference terminal current modeled by the<br />

[Composite Current] keyword. The default is ON.<br />

• check_model_spec=ON|OFF<br />

Switch ON or OFF checking of the buffer input/output signals according to subparameters<br />

given under the [Model Spec] keyword. The following subparameters are supported:<br />

D_overshoot_area_h, D_overshoot_area_l, D_overshoot_ampl_h, and<br />

D_overshoot_ampl_l. The default is ON.<br />

Eldo® User's Manual, 15.3 759


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

• ibischk_soft=NO|YES<br />

Used to control the golden parser (ibischk) reporting of IBIS version compatibility errors.<br />

Setting to NO means the IBIS version number is checked for compatibility. Only the first<br />

digit of the version number is checked, for example 4.x. Setting to YES releases ibischk<br />

constraints on the IBIS version number. Default is NO.<br />

760<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

Examples<br />

IBIS File Example<br />

[IBIS Ver] 3.2<br />

[Comment Char] |_char<br />

[File Name] dummy.ibs<br />

|<br />

.<br />

.<br />

.<br />

|<br />

[Component] Test_Component<br />

[Manufacturer] None<br />

[Package]<br />

| typ min max<br />

R_pkg 0.020 0.017 0.025<br />

L_pkg 0.998nH 0.881nH 1.069nH<br />

C_pkg 0.146pF 0.118pF 0.205pF<br />

|<br />

|**********************************************************<br />

|<br />

[Pin] signal_name model_name R_pin L_pin C_pin<br />

|<br />

1 NC NC 0.019 1.069n 0.162p<br />

2 in MS_In 0.018 0.881n 0.121p<br />

3 out+ MS_Out 0.017 1.031n 0.205p<br />

4 out- MS_Out 0.017 1.031n 0.205p<br />

|<br />

[Model Selector] MS_In<br />

Input_33<br />

Vcc = 3.3 V<br />

Input_50<br />

Vcc = 5.0 V<br />

|<br />

[Model Selector] MS_Out<br />

Output_33<br />

Vcc = 3.3 V<br />

Output_50<br />

Vcc = 5.0 V<br />

|<br />

[Diff Pin] inv_pin vdiff tdelay_typ tdelay_min tdelay_max<br />

|<br />

3 4 150mV -1ns 0ns -2ns<br />

|<br />

[Series Pin Mapping] pin_2 model_name<br />

|<br />

3 4 Series1<br />

|<br />

|**********************************************************<br />

| Model Input_33<br />

|**********************************************************<br />

|<br />

[Model] Input_33<br />

Model_type Input<br />

Vinl = 0.99<br />

Vinh = 2.31<br />

|<br />

| variable typ min max<br />

C_comp 1.27p 0.95p 1.59p<br />

|<br />

[Temperature Range] 25 85 -40<br />

Eldo® User's Manual, 15.3 761


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

[Voltage Range] 3.3 3.0 3.6<br />

|<br />

.<br />

.<br />

.<br />

|<br />

|**********************************************************<br />

| Model Input_50<br />

|**********************************************************<br />

|<br />

[Model] Input_50<br />

Model_type Input<br />

Vinl = 1.2<br />

Vinh = 3.5<br />

|<br />

| variable typ min max<br />

C_comp 1.27p 0.95p 1.59p<br />

|<br />

[Temperature Range] 25 85 -40<br />

[Voltage Range] 5.0 4.5 5.5<br />

|<br />

.<br />

.<br />

.<br />

|<br />

|**********************************************************<br />

| Model Output_33<br />

|**********************************************************<br />

|<br />

[Model] Output_33<br />

Model_type Output<br />

|<br />

| variable typ min max<br />

C_comp 1.27p 0.95p 1.59p<br />

|<br />

[Temperature Range] 25 85 -40<br />

[Voltage Range] 3.3 3.0 3.6<br />

|<br />

.<br />

.<br />

.<br />

|<br />

|**********************************************************<br />

| Model Output_50<br />

|**********************************************************<br />

|<br />

[Model] Output_50<br />

Model_type Output<br />

|<br />

| variable typ min max<br />

C_comp 1.27p 0.95p 1.59p<br />

|<br />

[Temperature Range] 25 85 -40<br />

[Voltage Range] 5.0 4.5 5.5<br />

|<br />

.<br />

.<br />

.<br />

762<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

|<br />

|**********************************************************<br />

| Model Series1<br />

|**********************************************************<br />

|<br />

[Model] Series1<br />

Model_type Series1<br />

|<br />

| variable R(typ) R(min) R(max)<br />

[R Series] 8ohm 6ohm 12ohm<br />

|<br />

| variable L(typ) L(min) L(max)<br />

[L Series] 5nH NA NA<br />

| variable R(typ) R(min) R(max)<br />

[Rl Series] 4ohm NA NA<br />

|<br />

.<br />

.<br />

.<br />

|<br />

[End]<br />

The preceding IBIS file example is referenced in the following netlist examples.<br />

Netlist 1<br />

_IO_input1_bymodel IN D_OUT1<br />

+ file="dummy.ibs" model="Input_33"<br />

+ device=input ! or device=1<br />

The above netlist calls the buffer by its model name. It instantiates an input buffer<br />

input1_bymodel and connects its analog input to node IN and its digital output to node<br />

D_OUT1. The buffer description is in the IBIS file dummy.ibs located in the same directory as<br />

the netlist. The buffer model, named Input_33, is picked up from the IBIS file.<br />

Note that the component name is not specified; therefore Eldo will not add any package<br />

parasitics to the buffer analog input pin. The corner is not specified, therefore the typical data<br />

will be used for this buffer by default. The power keyword is not specified, therefore Eldo<br />

connects the reference voltage sources to the buffer reference ports.<br />

Netlist 2<br />

_IO_input1_bypin IN D_OUT2 PC GC<br />

+ file="dummy.ibs"<br />

+ component="Test_Component" pin="2"<br />

+ model_selector='MS_In=Input_50' ! equal to msel_mode=2<br />

The above netlist calls the buffer by its pin name. It instantiates an input buffer input1_bypin<br />

and connects its analog input to node IN and its digital output to node D_OUT2. The buffer<br />

description is in the IBIS file dummy.ibs located in the same directory as the netlist. It belongs to<br />

the component Test_Component. The buffer model, named MS_In (the one associated with pin<br />

Eldo® User's Manual, 15.3 763


IBIS Models Support in Eldo<br />

IBIS Buffers<br />

2), is picked up from the IBIS file. The MS_In model has a model selector statement in the IBIS<br />

file. The netlist selects the Input_50 model for MS_In.<br />

The package keyword takes the default of 2 because the buffer is instantiated by pin name.<br />

Therefore Eldo will add the package parasitics associated with pin 2 under the [Pin] keyword,<br />

R=0.018 L=0.881n C=0.121p, to the buffer analog input pin. The corner is not specified,<br />

therefore the typical data will be used for this buffer by default. The power keyword is not<br />

specified, therefore Eldo connects the reference voltage sources to the buffer reference ports. In<br />

this case the nodes PC and GC only have the role of enabling you to plot/print the voltage<br />

reference values.<br />

Netlist 3<br />

* make pseudo-differential buffer for pin 3 and pin 4<br />

_IO_out_diff OUTp OUTn d_CTRL<br />

+ file="dummy.ibs" component="Test_Component"<br />

+ pin="3" inv_pin="4"<br />

The above netlist instantiates the pseudo-differential buffer associated with pins 3 and 4. The<br />

non-inverting pin of the buffer is connected to node OUTp, inverting pin to node OUTn, and the<br />

digital input to node d_CTRL. The buffer description is in the IBIS file dummy.ibs located in the<br />

same directory as the netlist. It belongs to the component Test_Component.<br />

The package keyword takes the default of 2 because the buffer is instantiated by pin name.<br />

Therefore Eldo will add the package parasitics associated with pin 3 and 4 under the [Pin]<br />

keyword, R=0.017 L=1.031n C=0.205p, to the buffer analog input pins. The corner is not<br />

specified, therefore the typical data will be used for this buffer by default. The power keyword<br />

is not specified, therefore Eldo connects the reference voltage sources to the buffer reference<br />

ports.<br />

Netlist 4<br />

*connect series buffer between 3 and 4<br />

_IO_ser OUTp OUTn<br />

+ file="dummy.ibs" model="Series1"<br />

The above netlist instantiates the series buffer associated with pins 3 and 4. It is connected to<br />

nodes OUTp and OUTn. The buffer description is in the IBIS file dummy.ibs located in the<br />

same directory of the netlist. The buffer model is Series1. The corner is not specified, therefore<br />

the typical data will be used for this buffer by default.<br />

Note that any series buffer has no package associated with it.<br />

Related Topics<br />

Buffers<br />

Supported Keywords and Sub-Parameters<br />

764<br />

Eldo® User's Manual, 15.3


IBIS Component<br />

Instantiates an IBIS component name within the specified IBIS file.<br />

Syntax<br />

IBIS Models Support in Eldo<br />

IBIS Component<br />

_IO_xx file="path" component="component_name"<br />

+ [limit_k_factors=POWER|NO|YES] [corner=TYP|MIN|MAX|FAST|SLOW]<br />

+ [warn=ON|OFF] [nowarn]<br />

+ [model_selector='msel_1=mdl_1 [,..., msel_n=mdl_n]'] [msel_mode=value]<br />

+ [package=0|1|2|3|4|OFF|CMPNT|PIN|PKGMOD|MIX]<br />

+ [pkg_model="pkg_model_name"]<br />

+ [ss_group='ON|OFF G1 [,..., Gn]'] [nopseudo]<br />

+ [use_fall_wvf=0|1|2] [use_rise_wvf=0|1|2]<br />

+ [c_comp_pu=value] [c_comp_pd=value] [c_comp_pc=value]<br />

+ [c_comp_gc=value] [all_sm=YES|NO]<br />

+ [keep_vds_monotonic=NO|YES] [keep_vgs_monotonic=NO|YES]<br />

+ [rx_logic=0|1]<br />

+ [<strong>eldo</strong>va=ON|OFF] [em_libname="logical_lib_name"]<br />

+ [table_tune=value]<br />

+ [logic_one=value] [logic_zero=value]<br />

+ [c_fixture=YES|NO]<br />

+ [keep_monotonic=YES|NO]<br />

+ [switch_isso=ON|OFF] [switch_composite_current=ON|OFF]<br />

+ [check_model_spec=ON|OFF] [ibischk_soft=NO|YES]<br />

Parameters<br />

Some parameters are part of the IBIS standard, please refer to description in “IBIS Device<br />

Standards” on page 732.<br />

• _IO_xx<br />

IBIS instance name.<br />

• file="path"<br />

Specifies the path to the file that contains an IBIS formatted model.<br />

This can be the full path (for example, /<strong>user</strong>/test/Models/model.ibs), a relative path, or just a<br />

file name. Both / and \ should be acceptable as separators in the path name (for the UNIX<br />

and NT versions). Avoid any spaces between the quotes and the file name/path. An Eldo<br />

option IBIS_SEARCH_PATH is available to specify the path to the directory to search for<br />

the IBIS files.<br />

• component="component_name"<br />

Specifies a component name within the specified IBIS file. The component name is casesensitive.<br />

• limit_k_factors=POWER|NO|YES<br />

POWER<br />

Prevent current flow in the power terminals, a_puref and a_pdref, from being nonmonotonic.<br />

This is the default.<br />

NO<br />

Eldo® User's Manual, 15.3 765


IBIS Models Support in Eldo<br />

IBIS Component<br />

Keep the scaling factors as calculated.<br />

YES<br />

Limit the switching scaling factors between 0 and 1.<br />

Switching scaling factors are extracted from the rising/falling waveforms, and used to<br />

modulate the output current of the buffer while switching.<br />

o<br />

o<br />

Scaling factor 0 indicates fully off for the working network.<br />

Scaling factor 1 indicates fully on.<br />

Sometimes these factor values exceed one or become negative, causing a negative slope,<br />

that may lead to some convergence problems.<br />

Note<br />

The POWER setting helps to avoid non-convergence issues whilst keeping the<br />

correct buffer behavior on the a_signal terminal.<br />

• corner=TYP|MIN|MAX|FAST|SLOW<br />

Specifies the IBIS corner to be used to extract the data from the IBIS file. The default is<br />

corner=TYP—if any data is missing under the Min or Max columns in the IBIS file then<br />

the Typ column value will be used instead. When corner=TYP, MIN, or MAX, simulation<br />

will extract the data under the corresponding Typ, Min, and Max columns in the IBIS file.<br />

When corner=FAST or SLOW, corner uses combinations from data under the Min and<br />

Max columns; FAST is the same as MAX, and SLOW is the same as MIN except for<br />

parameters listed in Table 17-5.<br />

• warn=ON|OFF<br />

Specifies if the warning message generated for this instance should be printed (ON), or<br />

suppressed (OFF). Setting warn=OFF is equivalent to using the keyword nowarn. The<br />

default setting is ON.<br />

• nowarn<br />

This is equivalent to warn=OFF.<br />

• msel_mode=value<br />

The value indicates a model order under the [Model Selector] keyword in the IBIS file. If<br />

the value specified is greater than the model selector list, then the first model will be<br />

selected. The default is 1.<br />

• model_selector='mod_sel1=mod_name1 [, mod_sel2=mod_name2 ,...]'<br />

This keyword can be repeated more than once. model_selector is used to select models for<br />

some or all model selectors in the given IBIS file. model_selector has a higher precedence<br />

over msel_mode.<br />

• package=0|1|2|3|4|OFF|CMPNT|PIN|PKGMOD|MIX<br />

This keyword specifies the package modeling type to be used for package parasitics.<br />

766<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Component<br />

0 or OFF<br />

No package is added.<br />

1 or CMPNT<br />

RLC components defined under [Package] keyword are added.<br />

2 or PIN<br />

RLC components defined under [Pin] are added.<br />

3 or PKGMOD<br />

A package model will be used. This is the default.<br />

4 or MIX<br />

A package model will be used, and RLC parasitics are added as defined under [Pin]<br />

section for pins that are not defined in the package model.<br />

Note<br />

If no data is available for selected packaging type, then the data in the lower type<br />

will be used.<br />

• pkg_model="package_model_name"<br />

Specifies an IBIS package model name within the specified IBIS file. The package model<br />

name must match one defined for this component under [Package Model] or [Alternate<br />

Package Models] keywords. If pkg_model is not specified, the one under [Package Model]<br />

will be used. “package_model_name” is case-sensitive.<br />

• ss_group='ON|OFF G1 [,G2, ...]'<br />

Sets the On/Off state for the series switch buffers created according the info under [Series<br />

Pin Mapping] keyword.<br />

You can set the logical state of this set of groups by type ON|OFF in the beginning of the<br />

set, and then follow it by the groups’ names that will take this state. The specified set of<br />

groups must match one of these under [Series Switch Groups] keyword or its<br />

complementary. If ss_group is not specified Eldo will take the first set of groups under<br />

[Series Switch Groups] keyword to set the logical state for the series switch buffers.<br />

• nopseudo<br />

When specified Eldo does not generate pseudo-differential buffers for the pseudodifferential<br />

pins, and generates single-ended buffers instead.<br />

By default Eldo generates pseudo or true differential buffers as defined under [Diff Pin]<br />

keyword.<br />

Note<br />

The following keywords are used in the generated buffers if applicable.<br />

Eldo® User's Manual, 15.3 767


IBIS Models Support in Eldo<br />

IBIS Component<br />

• c_comp_pu=value, c_comp_pd=value, c_comp_pc=value, c_comp_gc=value<br />

These four keywords are optional. If one of these keywords is specified with a non-zero<br />

value; c_comp capacitor will be split up to four parts. Values are dimensionless numbers<br />

between 0 and 1, and sum of them should be equal to 1. The default is 0 for the unspecified<br />

values.<br />

• use_fall_wvf= 0|1|2, use_rise_wvf= 0|1|2<br />

0<br />

Use the ramp for the falling/rising transitions.<br />

1<br />

Use one waveform for the falling/rising transitions.<br />

2<br />

Use two waveforms for the falling/rising transitions.<br />

The default behavior is to use the first two waveforms if more than one waveform is<br />

specified in the IBIS model, use one waveform if only one is specified, and to use ramp if no<br />

waveforms are specified.<br />

• all_sm=YES|NO<br />

For Series/Series_Switch buffers. Setting all_sm to NO makes Eldo use only the first<br />

non-zero Vds table to generate the current of Series MOSFET elements in the Series buffer.<br />

The default is YES.<br />

• keep_vds_monotonic=NO|YES<br />

For Series/Series_Switch buffers. Setting keep_vds_monotonic to YES will keep the Ids<br />

current monotonic versus Vds values for a given Vgs. Default is NO.<br />

• keep_vgs_monotonic=NO|YES<br />

For Series/Series_Switch buffers. Setting keep_vgs_monotonic to YES will keep the Ids<br />

current monotonic versus Vgs values for a given Vds. Default is NO.<br />

• rx_logic=0|1<br />

For Input or IO buffers; if the input voltage on a_signal port is between Vinl and Vinh<br />

thresholds then rx_logic will control the output voltage on the d_receive port. When<br />

rx_logic=0 (default), the voltage on the d_receive port will be 0.5V (representing logic<br />

"X"). When rx_logic=1, the voltage on the d_receive port will have the same value (state) as<br />

the previous time step.<br />

Note<br />

If there are hysterises thresholds (Vinl+, Vinl-, Vinh+, and Vinh-) under the<br />

[Model Spec] keyword, then rx_logic has no effect.<br />

768<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Component<br />

• <strong>eldo</strong>va=ON|OFF<br />

For external models and external circuits written in Verilog-A. Eldo will use its Verilog-A<br />

compiler to handle these models if <strong>eldo</strong>va=ON. Setting <strong>eldo</strong>va=OFF enables these models<br />

to be simulated with Questa ADMS. The default is ON.<br />

• em_libname="logical_lib_name"<br />

Can be used for external models and external circuits written in any AMS language. The<br />

specified logical_lib_name library is used as the work library. If no library is specified, the<br />

default work library will be used, specified with the Questa ADMS vasetlib command or the<br />

vasim -lib command.<br />

• table_tune=value<br />

Controls Eldo time step when the IBIS buffer is switching to obtain accurate output<br />

waveforms. Table_tune accepts non-negative values. Default value is 8.<br />

Setting a value of 1 forces Eldo to take into account all the switching waveform points, 2 to<br />

take one point into account and skip the next, 3 skips two points, but takes into account the<br />

third, and so on. Setting a value of 0 makes Eldo control the time step regardless of the<br />

switching waveform.<br />

Note<br />

The actual time step will be the minimum among the time step of the current IBIS<br />

buffer, time steps of other IBIS buffers, and the time step forced by Eldo.<br />

HMIN is always set as the lower limit for the time step.<br />

• logic_one=value|logic_zero=value<br />

Define the voltage level accepted by IBIS buffers for digital ports, logic_one default is 1.0,<br />

and logic_zero default is 0.0. logic_one must be greater than logic_zero by at least 200mV.<br />

The input voltage is considered ‘logic 1’ if it is greater than (logic_one + logic_zero)/2, and<br />

considered ‘logic 0’ if it is below this value.<br />

Note<br />

These levels are defined for native IBIS buffers and do not apply to external models.<br />

• c_fixture=YES|NO<br />

Enable/disable using rising or falling waveforms that have a c_fixture sub-parameter with a<br />

non-zero value. Setting to NO makes Eldo discard these waveforms; YES (default) to use<br />

these waveforms.<br />

• keep_monotonic=YES|NO<br />

Used to control Eldo behavior with non-monotonic data. Setting to YES Eldo fixes the nonmonotonic<br />

data provided in the tables, setting to NO (default) Eldo keeps the nonmonotonic<br />

tables data as is. This keyword affects the data under [GND Clamp], [POWER<br />

Clamp], [Pullup] and [Pulldown] IBIS keywords.<br />

Eldo® User's Manual, 15.3 769


IBIS Models Support in Eldo<br />

IBIS Component<br />

• switch_isso=ON|OFF<br />

Switch ON or OFF the effect of SSO (Simultaneous Switching Output) on the driver<br />

current. The SSO effect is modeled in the IBIS file under the [ISSO PD] and [ISSO PU]<br />

keywords. The default is ON.<br />

• switch_composite_current=ON|OFF<br />

Switch ON or OFF the effects of the power reference terminal current modeled by the<br />

[Composite Current] keyword. The default is ON.<br />

• check_model_spec=ON|OFF<br />

Switch ON or OFF checking of the buffer input/output signals according to subparameters<br />

given under the [Model Spec] keyword. The following subparameters are supported:<br />

D_overshoot_area_h, D_overshoot_area_l, D_overshoot_ampl_h, and<br />

D_overshoot_ampl_l. The default is ON.<br />

• ibischk_soft=NO|YES<br />

Used to control the golden parser (ibischk) reporting of IBIS version compatibility errors.<br />

Setting to NO means the IBIS version number is checked for compatibility. Only the first<br />

digit of the version number is checked, for example 4.x. Setting to YES releases ibischk<br />

constraints on the IBIS version number. Default is NO.<br />

Description<br />

Equivalent subcircuit<br />

Eldo uses the data under the [Component] keyword to generate buffers, interconnections,<br />

package parasitics, and SPICE subcircuits or Verilog-A modules that represent external circuit<br />

calls. Each component pin that references a model name or model selector name will be<br />

associated with a buffer. The pins that are used as differential pairs under the [Diff Pin]<br />

keyword will be connected to differential buffers, the other pins will be connected to singleended<br />

buffers.<br />

Series/Series_Switch models will be created according to the data under the [Series Pin<br />

Mapping] keyword. Power interconnections are done according to the data under the [Pin<br />

Mapping] keyword if available; otherwise internal source references are created for each buffer.<br />

Package parasitics are added according to the package modeling type specified by the package<br />

keyword, and the data available about the package model.<br />

External nodes naming rules<br />

Component pins that reference anything other than “NC” reserved keywords as the model name<br />

will be added to the Eldo netlist as external nodes for the component equivalent subcircuit. If<br />

the pin references an “NC” reserved keyword, but is used by the package model or exists in the<br />

pin mapping of the series buffers, it will be added to the netlist also.<br />

Additional nodes are also added to make access for buffers input, output, and control signals.<br />

These additional nodes should be connected to ground if they will not be used.<br />

770<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Component<br />

The naming rules for the buffers and external nodes are:<br />

• Component pins:<br />

_<br />

• Control nodes:<br />

__<br />

Buffer names are as follows:<br />

• Single-Ended Buffer:<br />

<br />

• Differential Buffer:<br />

__diff<br />

• Series Buffer:<br />

Examples<br />

____sers<br />

This example uses the same IBIS file as that used in “IBIS Buffers” on page 752.<br />

Netlist<br />

_IO_comp1 file="dummy.ibs"<br />

+ component="Test_component"<br />

.connect _IO_comp1_2_d_receive _IO_comp1_3_4_diff_d_drive<br />

The above netlist instantiates the entire component Test_component located in the IBIS file<br />

dummy.ibs. The component instance is given the name _IO_comp1. It is composed of an input<br />

buffer, a pseudo-differential buffer, and a series buffer (as shown in Figure 17-15). The digital<br />

output of the input buffer _IO_comp1_2_d_receive and the digital input of the differential<br />

output buffer _IO_comp1_3_4_diff_d_drive are connected in the netlist using the .connect<br />

statement.<br />

Eldo® User's Manual, 15.3 771


IBIS Models Support in Eldo<br />

IBIS Component<br />

Figure 17-15. Test_component Example<br />

Figure 17-15 shows the Test_component of the dummy.ibs IBIS file in “IBIS Buffers” on<br />

page 752. The component is instantiated with the name _IO_comp1. The digital output of the<br />

input buffer and the digital input of the output buffer are connected in the netlist by the <strong>user</strong>.<br />

Related Topics<br />

Component<br />

Supported Keywords and Sub-Parameters<br />

772<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Package<br />

IBIS Package<br />

Instantiates an IBIS package model name within the specified IBIS file.<br />

Syntax<br />

_IO_xx file="path" pkg_model="package_model_name"<br />

+ [ibischk_soft=NO|YES]<br />

Parameters<br />

• _IO_xx<br />

IBIS instance name.<br />

• file="path"<br />

Specifies the path to the file that contains an IBIS formatted model.<br />

This can be the full path (for example, /<strong>user</strong>/test/Models/model.ibs), a relative path, or just a<br />

file name. Both / and \ should be acceptable as separators in the path name (for the UNIX<br />

and NT versions). Avoid any spaces between the quotes and the file name/path. An Eldo<br />

option IBIS_SEARCH_PATH is available to specify the path to the directory to search for<br />

the IBIS files.<br />

• pkg_model="package_model_name"<br />

Specifies an IBIS package model name within the specified IBIS file. package_model_name<br />

is case-sensitive.<br />

• ibischk_soft=NO|YES<br />

Used to control the golden parser (ibischk) reporting of IBIS version compatibility errors.<br />

Setting to NO means the IBIS version number is checked for compatibility. Only the first<br />

digit of the version number is checked, for example 4.x. Setting to YES releases ibischk<br />

constraints on the IBIS version number. Default is NO.<br />

Description<br />

Equivalent subcircuit<br />

For each IBIS instance that represents an IBIS package model, Eldo will create an equivalent<br />

subcircuit that contains sets of loss-less/lossy transmission lines and/or discrete RLC<br />

components.<br />

Naming rules<br />

External nodes of the equivalent subcircuit will be generated automatically by Eldo. Each pin in<br />

the package model will be represented by two external nodes; one at the die-pad side and the<br />

other one at the package-pin side. The naming of these pins follows the rules below:<br />

• Node at die side:<br />

Eldo® User's Manual, 15.3 773


IBIS Models Support in Eldo<br />

IBIS Package<br />

__DIEPAD<br />

• Node at package side:<br />

_<br />

774<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Package<br />

Examples<br />

Package File Example<br />

[IBIS Ver] 4.0<br />

[File Name] package_model_4pins.pkg<br />

[File Rev] 1.0<br />

[Define Package Model] pm1<br />

[Manufacturer] ST None<br />

[OEM] Unknown<br />

[Description] None<br />

[Number Of pins] 4<br />

[pin Numbers]<br />

pin1<br />

pin2<br />

pin3<br />

pin4<br />

[Model Data]<br />

[Inductance Matrix] Sparse_matrix<br />

|<br />

[Row] pin1<br />

pin1 418n<br />

pin2 125n<br />

|<br />

[Row] pin2<br />

pin2 418n<br />

pin3 125n<br />

|<br />

[Row] pin3<br />

pin3 418n<br />

|<br />

[Row] pin4<br />

pin4 418n<br />

|<br />

[Capacitance Matrix] Sparse_matrix<br />

|<br />

[Row] pin1<br />

pin1 94p<br />

pin2 -22p<br />

|<br />

[Row] pin2<br />

pin2 94p<br />

pin3 -22p<br />

|<br />

[Row] pin3<br />

pin3 94p<br />

|<br />

[Row] pin4<br />

pin4 94p<br />

|<br />

[Resistance Matrix] Sparse_matrix<br />

|<br />

[Row] pin1<br />

pin1 15<br />

|<br />

[Row] pin2<br />

pin2 15<br />

|<br />

Eldo® User's Manual, 15.3 775


IBIS Models Support in Eldo<br />

IBIS Package<br />

[Row] pin3<br />

pin3 15<br />

|<br />

[Row] pin4<br />

pin4 15<br />

|<br />

[End Model Data]<br />

[End Package Model]<br />

[End]<br />

The preceding package file example is referenced in the following netlist example.<br />

Netlist<br />

_IO_pkg1<br />

+ file="package_model_4pins.pkg"<br />

+ pkg_model="pm1"<br />

The above netlist instantiates the IBIS package located in the package_model_4pins.pkg IBIS<br />

file. The package model name is pm1. It is a four-pin package as shown in Figure 17-16. This<br />

package is described, in the package file, using the RLC matrix representation that accounts for<br />

the coupling between the pins. You can access the nodes that reside either inside or outside the<br />

package as shown.<br />

Figure 17-16. Package Model Example<br />

Figure 17-16 shows the package of the package_model_4pins.pkg IBIS file given in the above<br />

package file example. The package is instantiated with the name _IO_pkg1.<br />

Related Topics<br />

Package<br />

Supported Keywords and Sub-Parameters<br />

776<br />

Eldo® User's Manual, 15.3


IBIS Electrical Board Description<br />

IBIS Models Support in Eldo<br />

IBIS Electrical Board Description<br />

Instantiates an IBIS Electrical Board Description (EBD) model name within the specified IBIS<br />

file.<br />

Syntax<br />

_IO_xx file="path" ebd_model="ebd_model_name"<br />

+ [ref_des_map='ref_des_1=instance_1 [,..., ref_des_n=instance_n]']<br />

+ [ibischk_soft=NO|YES]<br />

Parameters<br />

• _IO_xx<br />

IBIS instance name.<br />

• file="path"<br />

Specifies the path to the file that contains an IBIS formatted model.<br />

This can be the full path (for example, /<strong>user</strong>/test/Models/model.ibs), a relative path, or just a<br />

file name. Both / and \ should be acceptable as separators in the path name (for the UNIX<br />

and NT versions). Avoid any spaces between the quotes and the file name/path. An Eldo<br />

option IBIS_SEARCH_PATH is available to specify the path to the directory to search for<br />

the IBIS files.<br />

• ebd_model="ebd_model_name"<br />

Specifies an IBIS Electrical Board Description (EBD) model name within the specified IBIS<br />

file. ebd_model_name is case-sensitive.<br />

• ref_des_map='ref_des_1=instance_1 [,…, ref_des_n=instance_n]'<br />

Maps an IBIS buffer component to a reference designator, where:<br />

o<br />

o<br />

instance_n is the name of the Eldo IBIS instance used to describe an IBIS<br />

component.<br />

ref_des_n is the reference designator visible in the Node sub-parameter of the [Path<br />

Description] keyword in the EBD file.<br />

Note<br />

Reference designator name and instance name are case insensitive.<br />

ref_des_map can be repeated more than once in the _IO_ card.<br />

If a reference designator is repeated in the ref_des_map, then the instance assigned to<br />

that reference designator will be that of the last one.<br />

• ibischk_soft=NO|YES<br />

Used to control the golden parser (ibischk) reporting of IBIS version compatibility errors.<br />

Setting to NO means the IBIS version number is checked for compatibility. Only the first<br />

Eldo® User's Manual, 15.3 777


IBIS Models Support in Eldo<br />

IBIS Electrical Board Description<br />

digit of the version number is checked, for example 4.x. Setting to YES releases ibischk<br />

constraints on the IBIS version number. Default is NO.<br />

Description<br />

Equivalent subcircuit<br />

For each IBIS instance that represents an IBIS EBD model, Eldo will create an equivalent<br />

subcircuit that contains sets of loss-less/lossy transmission lines and/or discrete RLC<br />

components.<br />

Naming rules<br />

External nodes of the equivalent subcircuit will be generated automatically by Eldo. Each pin in<br />

the EBD model, and each component pin, will be connected to the node in the netlist. The<br />

naming of these pins follows the rules below:<br />

• Board pins:<br />

_<br />

• Component nodes:<br />

_<br />

Note<br />

If a reference designator name is used within the IBIS file, but not mapped in the<br />

IBIS instance then the name used in the EBD file will be used without mapping.<br />

778<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Electrical Board Description<br />

Examples<br />

Example EBD File<br />

|<br />

[Ibis Ver] 3.2<br />

[File Name] ebd.ebd<br />

[File Rev] 0<br />

[Source] None<br />

|<br />

[Begin Board Description] EBD1<br />

[Manufacturer] None<br />

[Number Of Pins] 5<br />

[Pin List] signal_name<br />

1 S1<br />

2 NC<br />

3 POWER<br />

4 GND<br />

5 S2<br />

[Path Description] 1 | S1<br />

Pin 1<br />

Len = 0.66 L = 1.33333e-08 C = 2.08333e-12 /<br />

Len = 2.00 L = 1e-08 C = 1.77778e-12 /<br />

Node u1.1<br />

Node u1.2<br />

Len = 0.50 L = 1e-08 C = 1.77778e-12 /<br />

Node u2.1<br />

[Path Description] 5 | S2<br />

Pin 5<br />

Len = 0.70 L = 1.33333e-08 C = 2.08333e-12 /<br />

Len = 1.25 L = 1e-08 C = 1.77778e-12 /<br />

Node u2.2<br />

|<br />

[Reference Designator Map]<br />

u1 ebd.ibs component1<br />

u2 ebd.ibs component1<br />

[End Board Description]<br />

[End]<br />

The preceding EBD file example is referenced in the following netlist example.<br />

Eldo® User's Manual, 15.3 779


IBIS Models Support in Eldo<br />

Supported Keywords and Sub-Parameters<br />

Netlist<br />

_IO_cmpnt1<br />

+ file="ebd.ibs"<br />

+ component="component1"<br />

.connect _io_cmpnt1_1_d_drive vdd ! ignored<br />

.connect _io_cmpnt1_1_d_enable vss ! input buffer<br />

.connect _io_cmpnt1_1_d_receive _io_cmpnt1_2_d_drive<br />

.connect _io_cmpnt1_2_d_enable vdd ! output buffer<br />

_IO_cmpnt2<br />

+ file="ebd.ibs"<br />

+ component="component1"<br />

.connect _io_cmpnt2_1_d_drive vdd ! ignored<br />

.connect _io_cmpnt2_1_d_enable vss ! input buffer<br />

.connect _io_cmpnt2_1_d_receive _io_cmpnt2_2_d_drive<br />

.connect _io_cmpnt2_2_d_enable vdd ! output buffer<br />

_IO_ebd1 file="ebd.ebd"<br />

+ ebd_model="EBD1"<br />

+ ref_des_map='u1=_IO_cmpnt1'<br />

+ ref_des_map='u2=_IO_cmpnt2'<br />

The netlist above instantiates two components and an EBD model. The components are located<br />

in the IBIS file ebd.ibs, and the EBD model is located in an EBD file ebd.ebd. The EBD model<br />

used is EBD1, specified within the [Begin Board Description] and [End Board Description]<br />

keywords. The ref_des_map statements inform Eldo that _IO_cmpnt1 in the netlist corresponds<br />

to u1 in the EBD file, and that _IO_cmpnt2 corresponds to u2.<br />

The example files are provided in the installed AMS tree: $MGC_AMS_HOME/examples/ibis/<br />

ebd.cir<br />

Figure 17-17 shows the connections between the IBIS components as described in the EBD file<br />

and the netlist.<br />

Figure 17-17. Electrical Board Description Example Connections<br />

Related Topics<br />

Electrical Board Description<br />

Supported Keywords and Sub-Parameters<br />

Supported Keywords and Sub-Parameters<br />

Eldo can simulate IBIS devices either individually or in the overall component.<br />

780<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Supported Keywords and Sub-Parameters<br />

Table 17-6 lists the supported keywords and sub-parameters in the current Eldo release. The<br />

IBISver column refers to the IBIS version in which the keyword/sub-parameter was introduced<br />

or modified.<br />

Table 17-6. Supported Keywords and Sub-Parameters<br />

Keyword Sub-parameter IBISver<br />

[Package] R_pkg, L_pkg & C_pkg 1.0<br />

[Pin]<br />

model_name 1.0<br />

R_pin, L_pin, C_pin 1.0<br />

[Diff Pin]<br />

inv_pin 2.1<br />

vdiff 3.1<br />

tdelay_typ 2.1<br />

tdelay_max 2.1<br />

tdelay_min 2.1<br />

[Voltage Range] 1.0<br />

[Pullup Reference] 2.1<br />

[Pulldown Reference] 2.1<br />

[POWER Clamp Reference] 2.1<br />

[GND Clamp Reference] 2.1<br />

[Pulldown] 1.0<br />

[Pullup] 1.0<br />

[POWER Clamp] 1.0<br />

[GND Clamp] 1.0<br />

[ISSO PD] 5.0<br />

[ISSO PU] 5.0<br />

[Ramp]<br />

dV/dt_r 1.0<br />

dV/dt_f 1.0<br />

R_load 2.1<br />

[Rising Waveform] 1 1000 Pts 4.0<br />

Eldo® User's Manual, 15.3 781


IBIS Models Support in Eldo<br />

Supported Keywords and Sub-Parameters<br />

Table 17-6. Supported Keywords and Sub-Parameters (cont.)<br />

Keyword Sub-parameter IBISver<br />

[Falling Waveform] 1 1000 Pts 4.0<br />

C_fixture 2 2.0<br />

R_fixture 2.0<br />

V_fixture 2.0<br />

V_fixture_min 2.1<br />

V_fixture_max 2.1<br />

[Composite Current] 5.0<br />

[Model]<br />

Model_type 4.1<br />

Polarity 1.0<br />

Enable 1.0<br />

Vinl 2.0<br />

Vinh 2.0<br />

C_comp 1 1.0<br />

[Model Spec]<br />

C_comp_pullup 3 4.0<br />

C_comp_pulldown 3 4.0<br />

C_comp_power_clamp 3 4.0<br />

C_comp_gnd_clamp 3 4.0<br />

Vinh 3.2<br />

Vinl 3.2<br />

Vinh+ 3.2<br />

Vinh- 3.2<br />

Vinl+ 3.2<br />

Vinl- 3.2<br />

D_overshoot_area_h 5.0<br />

D_overshoot_area_l 5.0<br />

D_overshoot_ampl_h 5.0<br />

782<br />

Eldo® User's Manual, 15.3


D_overshoot_ampl_l 5.0<br />

[Rgnd] 2.1<br />

[Rpower] 2.1<br />

[Rac] 2.1<br />

[Cac] 2.1<br />

[R Series] 3.2<br />

[L Series] 3.2<br />

[C Series] 3.2<br />

[Lc Series] 3.2<br />

[Rc Series] 3.2<br />

[Series Current] 3.2<br />

[Series MOSFET] 3.2<br />

Vds 3.2<br />

[On] 3.2<br />

[Off] 3.2<br />

[Series Switch Groups] On, Off 3.2<br />

[Series Pin Mapping]<br />

pin_2 3.2<br />

model_name 3.2<br />

function_table_group 3.3<br />

[Model Selector] 3.2<br />

[Submodel]<br />

Submodel_type 3.2<br />

Dynamic_clamp 3.2<br />

Bus_hold 3.2<br />

[Submodel Spec] 3.2<br />

V_trigger_r 3.2<br />

V_trigger_f 3.2<br />

Off_delay 3.2<br />

[GND Pulse Table] 3.2<br />

IBIS Models Support in Eldo<br />

Supported Keywords and Sub-Parameters<br />

Table 17-6. Supported Keywords and Sub-Parameters (cont.)<br />

Keyword Sub-parameter IBISver<br />

Eldo® User's Manual, 15.3 783


IBIS Models Support in Eldo<br />

Supported Keywords and Sub-Parameters<br />

Table 17-6. Supported Keywords and Sub-Parameters (cont.)<br />

Keyword Sub-parameter IBISver<br />

[POWER Pulse Table] 3.2<br />

V_trigger_r 3.2<br />

V_trigger_f 3.2<br />

[Pin Mapping]<br />

pulldown_ref 2.1<br />

pullup_ref 2.1<br />

gnd_clamp_ref 2.1<br />

power_clamp_ref 2.1<br />

[Driver Schedule]<br />

Model_name 3.2<br />

Rise_on_dly 3.2<br />

Rise_off_dly 3.2<br />

Fall_on_dly 3.2<br />

Fall_off_dly 3.2<br />

[External Model] [End ...] 4.1<br />

Language 4.1<br />

SPICE 4.1<br />

Verilog-A 4.2<br />

Ports 4.1<br />

d_control 4.1<br />

d_drive 4.1<br />

d_enable 4.1<br />

d_receive 4.1<br />

a_puref 4.1<br />

a_pdref 4.1<br />

a_pcref 4.1<br />

a_gcref 4.1<br />

a_signal 4.1<br />

d_switch 4.1<br />

a_gnd 4.1<br />

784<br />

Eldo® User's Manual, 15.3


a_pos 4.1<br />

a_neg 4.1<br />

a_signal_pos 4.1<br />

a_signal_neg 4.1<br />

D_to_A 4.1<br />

A_to_D 4.1<br />

[External Circuit] [End ...] 4.1<br />

[Node Declarations] [End ...] 4.1<br />

[Circuit Call] [End ...] 4.1<br />

Signal_pin 4.1<br />

Diff_signal_pins 4.1<br />

Series_pins 4.1<br />

Port_map 4.1<br />

CIRCUITCALL (reserved word) 4.1<br />

[Package Model] 2.1<br />

[Define Package Model] 2.1<br />

[Manufacturer] 2.1<br />

[OEM] 2.1<br />

[Description] 2.1<br />

[Number Of Sections] 3.0<br />

[Number Of Pins] 2.1<br />

[Pin Numbers] 2.1<br />

Len 3.0<br />

R 3.0<br />

L 3.0<br />

C 3.0<br />

Fork 3.0<br />

EndFork 3.0<br />

[Model Data] [End ...] 2.1<br />

[Resistance Matrix] 2.1<br />

IBIS Models Support in Eldo<br />

Supported Keywords and Sub-Parameters<br />

Table 17-6. Supported Keywords and Sub-Parameters (cont.)<br />

Keyword Sub-parameter IBISver<br />

Eldo® User's Manual, 15.3 785


IBIS Models Support in Eldo<br />

Supported Keywords and Sub-Parameters<br />

Table 17-6. Supported Keywords and Sub-Parameters (cont.)<br />

Keyword Sub-parameter IBISver<br />

[Inductance Matrix] 2.1<br />

[Capacitance Matrix] 2.1<br />

[Bandwidth] 2.1<br />

[Row] 2.1<br />

Banded_matrix 2.1<br />

Sparse_matrix 2.1<br />

Full_matrix 2.1<br />

[Begin Board Description] 3.0<br />

[Manufacturer] 3.0<br />

[Number Of Pins] 3.0<br />

[Pin List] 3.0<br />

signal_name 3.0<br />

[Path Description] 3.0<br />

Len 3.0<br />

R 3.0<br />

L 3.0<br />

C 3.0<br />

Fork 3.0<br />

EndFork 3.0<br />

Node 3.0<br />

Pin 3.0<br />

[Reference Designator Map] 3.0<br />

Related Topics<br />

IBIS Device Standards<br />

IBIS Model Syntax<br />

1.Eldo ignores waveforms that have L_fixture sub-parameter with non-zero values.<br />

2.Eldo ignores waveforms that have C_fixture sub-parameter with non-zero values;<br />

to enable using these waveforms set IBIS instance keyword C_fixture=yes.<br />

3.Partially supported. If the value of C_comp is zero with any of these keywords<br />

specified, then all four values are summed up and used as the C_comp value.<br />

786<br />

Eldo® User's Manual, 15.3


IBIS Algorithmic Model Interface (AMI)<br />

IBIS AMI models can be used in Eldo using the following syntax:<br />

Syntax<br />

_IO_xx mode=AMI<br />

+ tx_file="tx_file_name.ibs"<br />

+ [rx_file="rx_file_name.ibs"]<br />

+ tx_model="tx_model_name"<br />

+ [rx_model="rx_model_name"]<br />

+ impulse_matrix="impulse_matrix_file"<br />

+ [row_size=value]<br />

+ [aggressors=value]<br />

+ sample_interval=value<br />

+ bit_time=value<br />

+ input_waveform="input_wave_file"<br />

Parameters<br />

IBIS Models Support in Eldo<br />

IBIS Algorithmic Model Interface (AMI)<br />

• _IO_xx<br />

IBIS instance name.<br />

• mode=AMI<br />

Specifies IBIS AMI mode.<br />

• tx_file="tx_file_name.ibs"<br />

IBIS filename that contains the TX IBIS model.<br />

• rx_file="rx_file_name.ibs"<br />

IBIS filename that contains the RX IBIS model.<br />

• tx_model="tx_model_name"<br />

IBIS model name that references the algorithmic model for the TX. The model name should<br />

match one of the models in tx_file.<br />

• rx_model="rx_model_name"<br />

IBIS model name that references the algorithmic model for the RX. The model name should<br />

match one of the models in rx_file.<br />

• impulse_matrix="impulse_matrix_file"<br />

References a file that contains the channel impulse response matrix. As defined in the IBIS<br />

specifications, the impulse values are in Volts and are uniformly spaced in time. The sample<br />

spacing is given by the parameter sample_interval.<br />

The impulse matrix is stored in a single dimensional array of floating point numbers which<br />

is formed by concatenating the columns of the impulse response matrix, starting with the<br />

first column and ending with the last column. The matrix elements can be identified using:<br />

impulse_matrix[idx] = element (row, col)<br />

idx = col × number_of_rows + row<br />

Eldo® User's Manual, 15.3 787


IBIS Models Support in Eldo<br />

IBIS Algorithmic Model Interface (AMI)<br />

row = row index , ranges from 0 to row_size−1<br />

col = column index, ranges from 0 to aggressors<br />

The first column of the impulse matrix is the impulse response for the primary channel. The<br />

rest are the impulse responses from aggressor drivers to the victim receiver.<br />

Values in the files are in the following form, and comments are not allowed in this file:<br />

1.0e0<br />

1.0005<br />

.<br />

.<br />

.<br />

2.5e-1<br />

• row_size=value<br />

The number of rows in impulse_matrix. It is a non-zero integer value. Default value is 1.<br />

• aggressors=value<br />

The number of aggressors in the impulse_matrix. It is a non-negative integer number.<br />

Default value is 0. If both row_size and aggressors are provided their product should match<br />

the number of values given in the impulse_matrix file.<br />

• sample_interval=value<br />

This is the sampling interval of the impulse_matrix and the input_waveform.<br />

• bit_time=value<br />

The bit time in the input_waveform.<br />

• input_waveform="input_wave_file"<br />

References a file that contains the test waveform. The waveform values are in Volts and are<br />

uniformly spaced in time. The sample spacing is given by the parameter sample_interval.<br />

Values in the files are in the following form, and comments are not allowed in the file:<br />

1.0e0<br />

1.00<br />

.<br />

.<br />

.<br />

0.00<br />

0.00<br />

0.00001<br />

0.75<br />

.<br />

.<br />

.<br />

1.00<br />

Description<br />

When instantiating an IBIS instance in the AMI mode, Eldo loads the AMI shared library, calls<br />

the AMI API functions and passes to them the impulse matrix and the other required<br />

788<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

IBIS Algorithmic Model Interface (AMI)<br />

parameters. According to the values of the AMI reserved parameters Use_Init_Output and<br />

GetWave_Exists, Eldo convolves the input waveform with the channel impulse matrix and<br />

passes the output to the AMI_GetWave API function.<br />

Eldo adds a .TRAN command and plots the final output waveform. The output waveform is<br />

provided in both differential and single-ended form. The name of the differential wave is<br />

_ami_out. The single ended wave names are _ami_out_diff<br />

and _ami_out_inv.<br />

The IBIS receiver buffer may be added to obtain the output after the digital level.<br />

For more details about the AMI API functions and the reserved parameters, please refer to the<br />

IBIS v5.0 specification document.<br />

Examples<br />

Example netlist:<br />

* AMI Netlist<br />

_IO_ami MODE=ami<br />

+ tx_file="tx.ibs" tx_model="TX"<br />

+ rx_file="rx_ibs" rx_model="RX"<br />

+ impulse_matrix="impulse.txt"<br />

+ sample_interval=1e-9 bit_time=64e-9<br />

+ input_waveform="wave.txt"<br />

* differential RX buffer<br />

_IO_RX _IO_ami_ami_out_diff _IO_ami_ami_out_inv out<br />

+ file="rx.ibs" model="RX"<br />

.plot tran "out"<br />

.end<br />

Related Topics<br />

IBIS AMI<br />

Eldo® User's Manual, 15.3 789


IBIS Models Support in Eldo<br />

IBIS Examples<br />

IBIS Examples<br />

A number of example files are provided to illustrate using IBIS in Eldo. The example files are<br />

available in your installed directory: $MGC_AMS_HOME/examples/ibis/<br />

Example 1—Single-Ended Tx-Rx System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790<br />

Example 2—Pseudo-Differential Tx-Rx System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792<br />

Example 3—Package Parasitics Cross Talk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794<br />

Example 4—Simultaneous Switching Output Noise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796<br />

Example 1—Single-Ended Tx-Rx System<br />

Netlist file: single_tx_rx.cir<br />

IBIS file: tx_rx.ibs<br />

This example deals with a simple arrangement of a single-ended output buffer (Tx),<br />

transmission line, and a single-ended input buffer (Rx). This arrangement can be used for<br />

transmission line analysis mismatch as well as to assure that the Rx correctly recognizes the<br />

logic associated with the received signal levels.<br />

Figure 17-18. Single-Ended Tx-Rx System<br />

The transmission line has characteristics: impedance Z0=50Ω and signal delay TD=0.2ns.<br />

Netlist Explanation<br />

_IO_Tx out d_drive<br />

+ file="tx_rx.ibs"<br />

+ component="transceiver"<br />

+ model="OUT"<br />

The above lines instantiate an IBIS output buffer Tx with output connected to out and digital<br />

input connected to d_drive. The output buffer is located in the tx_rx.ibs IBIS file within the<br />

transceiver component.<br />

TL out 0 in 0 Z0=50 TD=0.3ns<br />

Instantiates an ideal transmission line connected between the nodes out and in with ground<br />

reference. The transmission line has 50 Ω characteristics impedance and 0.3ns time delay.<br />

790<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Example 1—Single-Ended Tx-Rx System<br />

_IO_Rx in d_receive<br />

+ file="tx_rx.ibs"<br />

+ component="transceiver"<br />

+ model="IN"<br />

Instantiates an IBIS input buffer Rx with input connected to in and its digital output connected<br />

to d_receive. The input buffer is located in the tx_rx.ibs IBIS file within the transceiver<br />

component.<br />

Rterm d_receive 0 1e6<br />

Connects a 1MΩ resistor between the digital output d_receive of the input buffer and ground.<br />

This has no impact on the results but avoids having a node with less than two connections.<br />

.param VHI=1.0<br />

.param VLO =0.0<br />

.param TDELAY=0<br />

.param TRISE=10p<br />

.param TFALL=Trise<br />

.param TSAMPLE=5n<br />

vstim d_drive 0 pattern 1 0 0 10p 10p 5n 0 1 R<br />

Instantiates the stimulus vstim for the system. The source is connected between the nodes<br />

d_drive and ground. It is defined using the pattern function with high voltage level of 1V, low<br />

voltage level of 0V, 0 starting delay time, 10ps rise and fall times, 5ns sample time, and finally<br />

it periodically alternates between 0 and 1.<br />

The next part of the netlist specifies the simulation control directives indicating what type of<br />

simulation Eldo should perform on the circuit.<br />

.tran 10p 20n<br />

Specifies a transient analysis be performed lasting 20ns with a plotting increment of 10ps.<br />

.option step=10p<br />

Imposes a time step of 10ps.<br />

.plot tran v(d_drive) v(out) v(in) v(d_receive)<br />

Specifies voltage/time plots of the voltages at nodes out, d_drive, in and d_receive.<br />

Eldo® User's Manual, 15.3 791


IBIS Models Support in Eldo<br />

Example 2—Pseudo-Differential Tx-Rx System<br />

Simulation Results<br />

Figure 17-19. Single-Ended Tx-Rx System Simulation Results<br />

Ringing is clearly observed in the waveform at the receiver side. This is due to the mismatch<br />

between the TL Z0 and the Rx input impedance (ringing also means a mismatch exists between<br />

the Tx output impedance and the TL Z0). However, the Rx recognizes the signal logic levels<br />

and the digital output (d_receive) is given correctly without any undesired transitions due to the<br />

received signal ringing.<br />

Related Topics<br />

Example 2—Pseudo-Differential Tx-Rx System<br />

IBIS Examples<br />

Example 2—Pseudo-Differential Tx-Rx System<br />

Netlist file: diff_tx_rx.cir<br />

IBIS file: diffsource.ibs<br />

This example deals with a simple arrangement of a pseudo-differential output buffer (Tx),<br />

transmission line and a pseudo-differential input buffer (Rx). Same as example#1, this<br />

arrangement can be used for transmission line analysis mismatch as well as to assure that the<br />

differential Rx correctly recognizes the logic associated with the received differential signal<br />

levels.<br />

792<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Example 2—Pseudo-Differential Tx-Rx System<br />

Netlist Explanation<br />

_IO_DIFFOUT OUTp OUTn D_drive<br />

+ file="diffsource.ibs"<br />

+ component="diffsource"<br />

+ pin="1" inv_pin="2"<br />

The above lines instantiate an IBIS differential output buffer diffout with non-inverting output<br />

connected to outp, inverting output connected to outn and digital input connected to d_drive.<br />

The output buffer is located in the diffsource.ibs IBIS file within the diffsource component. The<br />

differential buffer is recognized from the pin and inv_pin keywords. Pin names given using<br />

these keywords must match those in the diffsource.ibs IBIS file under the [Diff_pin] keyword.<br />

TLp outp 0 inp 0 Z0=50 TD=0.3ns<br />

TLn outn 0 inn 0 Z0=50 TD=0.3ns<br />

Instantiates a pair of ideal transmission lines, one of them connected between the nodes outp<br />

and inp with ground reference, and the second one connected between the nodes outn and inn<br />

with ground reference. Both transmission lines have 50Ω characteristics impedance and 0.2ns<br />

time delay.<br />

_IO_DIFFIN INp INn D_receive<br />

+ file="diffload.ibs"<br />

+ component="diffload"<br />

+ pin="1" inv_pin="2"<br />

Instantiates an IBIS differential input buffer diffin with non-inverting input connected to inp,<br />

inverting input connected to inn and digital output connected to d_receive. The input buffer is<br />

located in the diffload.ibs IBIS file within the diffload component. The differential buffer is<br />

recognized from the pin and inv_pin keywords. Pin names given using these keywords must<br />

match those in the diffload.ibs IBIS file under the [Diff_pin] keyword.<br />

Rterm D_receive 0 1e6<br />

Connects a 1MΩ resistor between the digital output d_receive of the input buffer and ground.<br />

This has no impact on the results avoids having a node with less than two connections.<br />

.param VHI=1.0<br />

.param VLO =0.0<br />

.param TDELAYL=0<br />

.param TRISE=300p<br />

.param TFALL=Trise<br />

.param TSAMPLE=3000p<br />

vin d_drive 0 pattern VHI VLO TDELAYL TRISE TFALL TSAMPLE 1011010001 R<br />

Instantiates the stimulus vin for the system. The source is connected between the nodes d_drive<br />

and ground. It is defined using the pattern function with high voltage level of 1V, low voltage<br />

level of 0V, 0 starting delay time, 300ps rise and fall times, 3ns sample time, and having the<br />

pattern 1011010001.<br />

Eldo® User's Manual, 15.3 793


IBIS Models Support in Eldo<br />

Example 3—Package Parasitics Cross Talk<br />

The next part of the netlist specifies the simulation control directives indicating what type of<br />

simulation Eldo should perform on the circuit.<br />

.tran 10p 40n<br />

Specifies a transient analysis be performed lasting 40 ns with a plotting increment of 10 ps.<br />

.plot tran v(d_drive) v(outp) v(outn) v(inp) V(inn) v(d_receive)<br />

Specifies voltage/time plots of the voltages at nodes d_drive, outp, outn, inp, inn and d_receive.<br />

Simulation Results<br />

Figure 17-20. Pseudo-Differential Tx-Rx System Simulation Results<br />

Related Topics<br />

Example 3—Package Parasitics Cross Talk<br />

IBIS Examples<br />

Example 3—Package Parasitics Cross Talk<br />

Netlist file: pkg_cross_talk.cir<br />

IBIS file: tx_rx.ibs<br />

This example deals with the simulation of an entire component and observation of the effect of<br />

cross talk between the pins of the package. This is one of the important issues in signal integrity<br />

analysis.<br />

794<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Example 3—Package Parasitics Cross Talk<br />

Netlist Explanation<br />

_IO_Trx<br />

+ file="tx_rx.ibs"<br />

+ component="transceiver"<br />

+ package=3<br />

The above lines instantiate an IBIS component. Component instantiation means all the buffers<br />

inside the component as well as coupling between pins can be simulated. The component is<br />

named transceiver and located in the tx_rx.ibs IBIS file. The package parameter in the _IO<br />

element specifies the package modeling type to be used. In our case, package=3 means that the<br />

advanced package model, located in the tx_rx.ibs IBIS file under [Define package model] will<br />

be used.<br />

vp _IO_Trx_5 0 pwl (0 0 1n 0 1.6n 3.3 8n 3.3 8.6n 0)<br />

Instantiates the stimulus vp which is a pulse waveform connected between pin 5 of the IBIS<br />

component and ground. It is important to note that all other component pins exist in the<br />

simulation but left unconnected here. A warning will appear about these unconnected pins.<br />

vcc _IO_TRX_4 0 3.3<br />

.connect _IO_TRX_1_d_drive 0<br />

.connect _IO_TRX_2_d_drive 0<br />

.connect _IO_TRX_3_d_drive 0<br />

.connect _IO_TRX_8 0<br />

Rterm1 _IO_TRX_5_d_receive 0 1e6<br />

Rterm2 _IO_TRX_6_d_receive 0 1e6<br />

Rterm3 _IO_TRX_7_d_receive 0 1e6<br />

The above lines have no impact on the simulation results. They are used to avoid warnings<br />

about nodes that have less than two connections. A voltage source vcc is connected between the<br />

node _IO_TRX_4 and ground. The digital inputs of the output buffers (_IO_TRX_1_d_drive,<br />

_IO_TRX_2_d_drive and _IO_TRX_3_d_drive) are tied to ground using the .connect<br />

statement. Also the node _IO_TRX_8 is connected to ground. Then 1MΩ resistors are<br />

connected between the digital outputs of the input buffers (_IO_TRX_5_d_receive,<br />

_IO_TRX_6_d_receive and _IO_TRX_7_d_receive) and ground.<br />

The next part of the netlist specifies the simulation control directives indicating what type of<br />

simulation Eldo should perform on the circuit.<br />

.tran 1p 14n<br />

Specifies a transient analysis be performed lasting 14ns with a plotting increment of 1ps.<br />

.option step=1p<br />

Imposes a time step of 1ps. This small time step is imposed to capture the ringing that will occur<br />

on pin 6 due to both capacitive and inductive coupling with pin 5.<br />

.plot tran v(_IO_TRX_5) v(_IO_TRX_6)<br />

Eldo® User's Manual, 15.3 795


IBIS Models Support in Eldo<br />

Example 4—Simultaneous Switching Output Noise<br />

Specifies voltage/time plots of the voltages at both pin 5 and 6 of the IBIS component.<br />

Simulation Results<br />

Figure 17-21. Package Parasitics Cross Talk<br />

There is both capacitive and inductive coupling between pins 5 and 6. This coupling results in a<br />

ringing effect on pin 6.<br />

Related Topics<br />

Example 4—Simultaneous Switching Output Noise<br />

IBIS Examples<br />

Example 4—Simultaneous Switching Output Noise<br />

Netlist file: sson.cir<br />

IBIS file: tx_rx_pm.ibs<br />

This example deals with the simulation simultaneous switching output noise (SSON). The [Pin<br />

Mapping] keyword in the IBIS file contains information on how power supplies are connected<br />

to individual buffers or groups of buffers; it can be used for predicting SSON.<br />

796<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Example 4—Simultaneous Switching Output Noise<br />

Figure 17-22. Component Internal Connection<br />

Netlist Explanation<br />

_IO_comp<br />

+ file="tx_rx_pm.ibs"<br />

+ component="transceiver_pm"<br />

+ package=1<br />

The above lines instantiate an IBIS component. The component is named transceiver_pm and<br />

located in the tx_rx_pm.ibs IBIS file. Package=1 means that package parasitics provided in the<br />

IBIS file under [Package] keyword, where package pins are assumed uncoupled, will be used.<br />

vcc _IO_comp_4 0 3.3<br />

.connect _IO_comp_8 0<br />

Connects the power supply of the component. Note, the power supply should be connected<br />

manually when the component has a [Pin Mapping] keyword. A DC voltage source of 3.3V is<br />

connected to pin 4 of the component and pin 8 is connected to ground.<br />

vin1 _IO_comp_5 0 0<br />

vin2 _IO_comp_6 0 3.3<br />

.param VHI=3.3<br />

.param VLO =0.0<br />

.param TDELAYL=1n<br />

.param TRISE=0.1n<br />

.param TFALL=Trise<br />

.param TSAMPLE=5n<br />

vin3 _IO_comp_7 0 pattern VHI VLO TDELAYL TRISE TFALL TSAMPLE 0 1 1 0 R<br />

Defines the inputs of the component input buffers. Pin 5 is connected to 0 voltage, pin 6 is<br />

connected to a DC voltage of 3.3 V and pin 7 is connected to the stimulus of the system vin3. It<br />

Eldo® User's Manual, 15.3 797


IBIS Models Support in Eldo<br />

Example 4—Simultaneous Switching Output Noise<br />

is defined using the pattern function with high voltage level of 3.3V, low voltage level of 0V,<br />

1ns starting delay time, 0.1ns rise and fall times, 5ns sample time and have the pattern 0110.<br />

.connect _IO_comp_5_d_receive _IO_comp_1_d_drive<br />

.connect _IO_comp_6_d_receive _IO_comp_2_d_drive<br />

.connect _IO_comp_7_d_receive _IO_comp_3_d_drive<br />

Connects the input buffers digital output to the output buffers digital input.<br />

The next part of the netlist specifies the simulation control directives indicating what type of<br />

simulation Eldo should perform on the circuit.<br />

.tran 10p 50n<br />

Specifies a transient analysis be performed lasting 50ns with a plotting increment of 10ps.<br />

.option step=10p<br />

Imposes a time step of 10 ps.<br />

.plot tran v(_IO_comp_1) v(_IO_comp_2) v(_IO_comp_3)<br />

Specifies voltage/time plots of the voltages at pins 1, 2, and 3 of the IBIS component.<br />

Simulation Results<br />

Figure 17-23. Simultaneous Switching Output Noise (SSON) Simulation Results<br />

A difference is observed in the results from the case when package=1 was set (compare yellow<br />

and blue waveforms). The time varying signal at OUT1 and OUT2 is not only due to IR and<br />

LdI/dt voltage drops on the supply pin, but in addition has the capacitive and inductive coupling<br />

between the package pins.<br />

798<br />

Eldo® User's Manual, 15.3


IBIS Models Support in Eldo<br />

Example 4—Simultaneous Switching Output Noise<br />

Related Topics<br />

IBIS Examples<br />

Eldo® User's Manual, 15.3 799


IBIS Models Support in Eldo<br />

Example 4—Simultaneous Switching Output Noise<br />

800<br />

Eldo® User's Manual, 15.3


Chapter 18<br />

Eldo Control Language<br />

This chapter details the Eldo Control Language—the set of syntax and design approaches that<br />

enable both an explicit control flow for complex, multiple-netlist simulations, and to extract<br />

simulation results into a <strong>user</strong>-defined output format.<br />

Overview of the Eldo Control Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802<br />

Eldo Control Language Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803<br />

Eldo Control Language Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806<br />

Testbenches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809<br />

Testbench Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809<br />

Testbench Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811<br />

Rules for Testbench Location Resolution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813<br />

Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814<br />

Task Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814<br />

Task Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817<br />

Statement Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820<br />

Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839<br />

Defining and Running Simulations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841<br />

Library of Functions for Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854<br />

Simulation Dynamic Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014<br />

Extended Simulation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024<br />

Parallel Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039<br />

Statistical Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058<br />

Advanced Simulation Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114<br />

Examples Using ECL as an Alternative to Standard Eldo Commands . . . . . . . . . . . . . 1123<br />

.STEP Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123<br />

.EXTRACT Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125<br />

.PRINTFILE Alternative #1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127<br />

.PRINTFILE Alternative #2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129<br />

.OPTIMIZE Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131<br />

.MPRUN with Monte Carlo Analysis Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133<br />

Eldo® User's Manual, 15.3 801


Eldo Control Language<br />

Overview of the Eldo Control Language<br />

Overview of the Eldo Control Language<br />

The Eldo Control Language extends the raw capabilities of Eldo by adding support for<br />

sequential operations, results-based decision taking, and the arbitrary formatting of simulation<br />

results.<br />

In its classical mode of operation, Eldo reads in a netlist that contains both the circuit element<br />

description and a number of commands. The commands usually start with a “.”; for example<br />

.TRAN, .STEP, .EXTRACT, and so on. The relative position of the commands is unimportant;<br />

Eldo uses its own hard-coded internal logic to decide the sequence in which to execute the<br />

commands, between which there is virtually no communication. Eldo also decides how to<br />

format the results of the various commands it executes.<br />

In many cases, the Eldo default logic is sufficient for a designer to achieve the required<br />

simulation results. For situations where more custom control is required, the Eldo Control<br />

Language enables a designer to bypass the hard-coded execution logic and formatting, and<br />

implement whatever sequence of simulation commands is required, from very simple ones to<br />

full algorithms. In addition, the formatting of the results can be freely defined.<br />

The Eldo Control Language is based on two fundamental structures: testbenches and tasks.<br />

• A testbench is a reusable parameterized block of simulator commands that can be<br />

instantiated in the netlist to simulate. It is comparable to the notion of a macro from a<br />

classical programming language, such as C, or comparable to #define in Eldo, when<br />

using the -E/-EE command-line argument, see “Directives Interpreted using the C Pre-<br />

Processor (-E/-EE Arguments)” on page 126.<br />

• A task is a sequence of instructions that specifies which netlists are to be simulated and<br />

what to do with their results. The netlists simulated by the tasks are typically created by<br />

instantiating testbenches with different parameter values. Inside a task, conditions can<br />

be tested, multiple simulations can be launched through for and while loops, their results<br />

(typically the .EXTRACT/.MEAS and the waveforms) easily retrieved and tested for,<br />

and output files printed in arbitrary formats. Any simulation plan exceeding the hardcoded<br />

capabilities of Eldo can be implemented.<br />

The power of the Eldo Control Language is that it is implemented directly within Eldo. This<br />

means that the Eldo Control Language “knows” the syntax and semantics of analog simulation;<br />

it knows what a simulation netlist is, and what .EXTRACT/.MEAS or waveforms are, and thus<br />

can interface directly with these objects.<br />

See also:<br />

• “Testbenches” on page 809<br />

• “Tasks” on page 814<br />

Eldo Control Language Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803<br />

Eldo Control Language Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806<br />

802<br />

Eldo® User's Manual, 15.3


Eldo Control Language Examples<br />

Eldo Control Language<br />

Eldo Control Language Examples<br />

A number of example files are provided to illustrate the Eldo Control Language.<br />

See Table 18-1 for directory names and descriptions of the example files provided in your<br />

installed directory: $MGC_AMS_HOME/examples/ecl/<br />

Table 18-1. Eldo Control Language Example Files<br />

Example Dir Description<br />

01-open_loop_gain Typical example of what can be done with the Control Language:<br />

- the netlist first contains the circuit of an operational amplifier;<br />

- then, some parametrized testbenches have been defined;<br />

- and last, the task specifies which simulations to perform with which<br />

testbenches to instantiate.<br />

02-hello_world Most basic example: a task printing “Hello world.”<br />

03-facto<br />

Basic example of a recursive task to compute factorial(10) to show how to<br />

use task input and output parameters.<br />

04-complex<br />

Example of a task using complex numbers. First, the task runs an AC<br />

simulation and then processes a complex result (gain and phase at 1Hz) of<br />

this simulation to display its value.<br />

05-max_gain Example of a task processing waveforms. First, the task runs an AC<br />

simulation and gets a waveform (gain of amplifier) result from this<br />

simulation and then iterates through this waveform to find its maximum<br />

value.<br />

06-max_overshoot Example of a task processing waveforms using some pre-defined<br />

functions. First the task runs a transient simulation and gets a waveform<br />

(output of the amplifier) result from this simulation and then calls the max<br />

function to find its maximum value to compute the overshoot.<br />

07-write_hello_world Basic example of a task writing “Hello world” in a file.<br />

08-rc<br />

Short example to show how to get simulation results from a task. First the<br />

task runs the simulation of a RC circuit, and then some results (parameter<br />

values, extract values, waveforms) are retrieved back in the task so that<br />

they can be processed and so that some specific values can be printed on<br />

the standard output.<br />

09-rc_pulse<br />

Short example to show how to get vector simulation results from a task.<br />

First the task runs the simulation of a RC circuit with a pulse input, and<br />

then some vector results are retrieved back in the task so that they can be<br />

processed and printed on the standard output.<br />

10-rc_step<br />

Another short example to show how to get vector simulation results from a<br />

task. First the task runs the simulation of a RC circuit for different values<br />

of the resistance, and then some vector results are retrieved back in the<br />

task so that they can be processed and printed on the standard output.<br />

Eldo® User's Manual, 15.3 803


Eldo Control Language<br />

Eldo Control Language Examples<br />

Example Dir<br />

11-rc_alter<br />

12-rc_compounds<br />

13-dichotomy<br />

14-setup<br />

15-rf_vco<br />

16-jitter<br />

17-calibration<br />

18-measure_tprop<br />

19-overshoot<br />

20-osc_freq_callback<br />

21-printfile_csv<br />

Table 18-1. Eldo Control Language Example Files (cont.)<br />

Description<br />

Example of how to process simulation results when the netlist contains<br />

some .ALTER commands. First the task runs the simulation of a RC<br />

circuit where the value of the resistance is modified using .ALTER<br />

commands, and then some vector results are retrieved back in the task so<br />

that they can be processed and printed on the standard output.<br />

Example of how to process compound waveform simulation results in a<br />

task. Two task are defined. The first shows a complicated way to process<br />

compound waveforms by calling pre-defined functions directly on the<br />

compound waveform (it is more complicated because the task has to<br />

process vector results). The second task first calls the compoundcontent<br />

function to have a direct access to each wave composing the compound<br />

waveform; then it is easier to use the pre-defined functions on each single<br />

waveform.<br />

Example of a task implementing a dichotomy to find out which value of<br />

VD yields a requested IDS current. Many simulations are run<br />

successively.<br />

Example of a task running many simulations to compute the setup time for<br />

different values of temperature and VDD. Sequential and parallel versions<br />

are provided.<br />

Example of a task running steady-state and Monte Carlo analyses. The<br />

first simulation computes for which value of the VCONTROL source<br />

voltage the steady-state regime corresponds to a given fundamental<br />

oscillation frequency. The second simulation runs a Monte-Carlo analysis<br />

to find out the standard deviation of the fundamental frequency for the<br />

previously calculated value of the VCONTROL source voltage.<br />

Example of a jitter estimation for different corners. Output is written into<br />

the file jitter.results.<br />

Example of a task searching the required eps value to reach x% accuracy<br />

compared to a golden result.<br />

Short example of a netlist defining and instantiating testbenches. This<br />

example shows how testbenches can be used without tasks to create<br />

reusable blocks of element descriptions or simulator commands.<br />

Short example of a netlist defining and instantiating testbenches.<br />

Example of using a callback function to detect the time when an oscillator<br />

has reached its expected frequency.<br />

Example of generating a .csv file. The DC offset of an operational<br />

amplifier is computed for different values of vdd and is printed into a .csv<br />

file that can be loaded later in EZwave for example.<br />

804<br />

Eldo® User's Manual, 15.3


Example Dir<br />

22-plot_mos_<br />

operating_regions<br />

23-plot_mos_ids_<br />

sat_versus_w_l<br />

24-plot_bandwidth<br />

25-step_alternative<br />

26-extract_alternative<br />

27-printfile_<br />

alternative<br />

28-optimize_<br />

alternative<br />

29-<br />

list_mc_stat_params<br />

Eldo Control Language<br />

Eldo Control Language Examples<br />

Table 18-1. Eldo Control Language Example Files (cont.)<br />

Description<br />

Example describing how to create a waveform to plot the content of a<br />

vector versus another one. In this example, the goal is to plot the<br />

saturation drain current versus the drain-to-source voltage and the limit<br />

between linear and saturation regions depending on the gate-to-source and<br />

the drain-to-source voltages. The creation of the waveforms is done in the<br />

last statements of the task. All the processing before it is done to compute<br />

the values to plot. First, the threshold gate-to-source voltage is computed;<br />

then, the gate-to-source voltage is increased logarithmically from this<br />

threshold voltage and for each value, the saturation current and the<br />

saturation drain-to-source voltages are computed.<br />

Example showing how to create a new data type (size) to be able to plot a<br />

waveform with an x-axis scaled in μm. The purpose of this example is to<br />

plot the saturation drain current versus the MOS gate width and the MOS<br />

gate length.<br />

Example showing how to create a new data type having enumerated<br />

values to display graphically the bandwidth of a RLC circuit.<br />

Example showing how the step loops available inside ECL can be used as<br />

an alternative to the regular .STEP command in Eldo. See “.STEP<br />

Alternative” on page 1123. Sequential and parallel versions are provided.<br />

Example showing how the ECL can be used as an alternative to the regular<br />

.EXTRACT commands in Eldo to print results in a custom format. See<br />

“.EXTRACT Alternative” on page 1125.<br />

Example showing how the ECL can be used as an alternative to the regular<br />

.PRINTFILE command in Eldo to print results inside a file. Also look at<br />

example 21-printfile_csv for another example of a .PRINTFILE command<br />

alternative. See “.PRINTFILE Alternative #1” on page 1127.<br />

Example showing how the ECL can be used as an alternative to the regular<br />

.OPTIMIZE command in Eldo to automatically resimulate a design, with<br />

optimized parameter values, without having to re-invoke Eldo. See<br />

“.OPTIMIZE Alternative” on page 1131.<br />

Example showing how to list all the statistical parameters specified in the<br />

netlist. This list is displayed on the standard output. Functions used in this<br />

example: _simu_set_mc_flow, _simu_get_nb_stat_params,<br />

_simu_get_stat_param_name, _simu_get_stat_param_distrib,<br />

_simu_get_stat_param_nom, _simu_get_stat_param_dev and<br />

_simu_get_stat_param_nb_draw.<br />

Eldo® User's Manual, 15.3 805


Eldo Control Language<br />

Eldo Control Language Limitations<br />

Example Dir<br />

30-modify_mc_distrib<br />

31-mcconv_mcsens<br />

32-<br />

find_important_stat_p<br />

arams<br />

33-<br />

para_find_important_s<br />

tat_params<br />

Table 18-1. Eldo Control Language Example Files (cont.)<br />

Description<br />

Example showing how the distribution of a statistical parameter can be<br />

modified. This example uses _simu_lock_stat_param to keep only one<br />

statistical parameter (found using _simu_get_stat_param_netlist_dev) to<br />

see the impact on the results of the modification of its distribution. The<br />

distribution is modified so that each sampled value is greater than twice<br />

the half-range of the distribution (_simu_get_random is called until<br />

getting such a value and the value is set using<br />

_simu_set_stat_param_sampling_val).<br />

After running, the impact on the result can be seen in<br />

modify_mc_distrib.wdb. The first waveform is the default result<br />

(simulation using the initial gaussian distribution) and the second result is<br />

the result of the simulation using the modified distribution.<br />

Example showing how to monitor the evolution of the average, deviation,<br />

and sensitivities of an extract. This data is displayed on the standard<br />

output. This example uses avg, std, _simu_get_mcsens to compute the<br />

statistical data, and mcconv to stop the simulation once the extract has<br />

converged.<br />

Example showing how to run an ECL Monte Carlo simulation of a 1-bit<br />

adder netlist to find the most important parameters acting on the<br />

propagation delay. Then the width of the corresponding MOS is increased<br />

to see how it impacts this delay. These results are displayed on the<br />

standard output. This example uses _simu_run(mode="nom") to run the<br />

nominal simulation to get the default delay, _simu_run(mode="mc 20") to<br />

run multiple times 20 Monte Carlo simulations until mcconv returns that<br />

the interesting extract has converged, and _simu_get_mcsens to get the<br />

important parameters.<br />

Same example as before but using parallel runs.<br />

Related Topics<br />

Examples Using ECL as an Alternative to Standard Eldo Commands<br />

Eldo Control Language Limitations<br />

The Eldo Control Language has some limitations to consider.<br />

• Netlists containing .MPRUN commands (multiple run of simulations) are fully<br />

supported by Eldo Control Language, including with LSF (Load Sharing Facility) and<br />

OGE (Oracle Grid Engine) dispatchers. If a netlist containing a .MPRUN command is<br />

simulated in a Control Language task, then the Eldo process simulating this netlist will<br />

effectively run multiple simulations on multiple processors or on many machines.<br />

806<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Eldo Control Language Limitations<br />

The .MPRUN command is not supported at the task level but at the testbench level. ECL<br />

sequential loop statements are not supported; the .MPRUN command has no effect on<br />

the ECL statements: for, step, and while. For example, it is not possible to distribute<br />

each simulation executed inside a sequential “for” loop. For a given simulation (run<br />

from an ECL task), if the netlist to simulate contains a .MPRUN command and a .MC<br />

command for example, then the Monte Carlo runs of this simulation will be distributed<br />

as usual. See the “.MPRUN with Monte Carlo Analysis Example” on page 1133.<br />

Simulations executed inside ECL parallel loop statements can be distributed using the<br />

.ELDO_CL_MPRUN command.<br />

• The .AGE and .DEX commands are supported inside testbenches even if they are<br />

directly instantiated in the netlist.<br />

• The Eldo Control Language is supported by Eldo Premier, with limitations. The<br />

functionality described in “Simulation Dynamic Control” on page 1014 is not supported.<br />

• Eldo Interactive mode is not compatible with the Eldo Control Language: it does not<br />

support netlists containing tasks. Netlists containing only testbench instantiations,<br />

without any tasks can however be run using the Eldo Interactive mode.<br />

• Eldo Control Language may sometimes generate large .wdb files; especially when a task<br />

runs a simulation creating many waveforms and if all these waveform results are saved<br />

into task local variables, the main .wdb file can be much larger than the temporary .wdb<br />

file generated during the simulation. One of the following options can be used to solve<br />

this possible issue:<br />

o<br />

o<br />

.option KEEP_ELDO_CL_TEMP_WAVES=0<br />

For more details on this option, see the “wdb File” section in “Simulation” on<br />

page 1114. This is the preferred solution, but the disadvantage is that waveforms that<br />

need to be saved to be visualized have to be saved explicitly using the “Functions<br />

Operating on wdb Files” described in “Library of Functions for Tasks” on page 854.<br />

.option USE_ELDO_CL_SAFE_WAVE_CP=0<br />

This option deactivation has two major disadvantages:<br />

• Possible impact on the execution speed of Eldo Control Language tasks: the<br />

execution of a task running many simulations generating waveforms will be<br />

longer (if these waveform results are saved into task local variables for each<br />

simulation).<br />

• In some cases the Eldo Control Language won’t be able to generate a compound<br />

waveform simulation result (FAILED TO GET WAVE error). This will happen,<br />

for example, with AC simulations when trying to generate a vdb or vp<br />

waveform, for example:<br />

.plot ac w_db=vdb(out) w_p=vp(out)<br />

Workaround: replace the .PLOT command with a v complex waveform plot:<br />

Eldo® User's Manual, 15.3 807


Eldo Control Language<br />

Eldo Control Language Limitations<br />

.plot ac w=v(out)<br />

The gain and phase waveforms should be computed from the complex waveform<br />

inside the task (if post-processing is needed). Nevertheless it can be worth<br />

deactivating this option in case a simulation command fails because of an<br />

unexpected error related to a waveform result.<br />

• Eldo Control Language is not supported on Windows.<br />

Related Topics<br />

Overview of the Eldo Control Language<br />

808<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Testbenches<br />

Testbenches<br />

A testbench is a sequence of parameterized simulator commands or circuit element descriptions,<br />

which can be viewed as the encapsulation of a set of commands or element descriptions that are<br />

necessary within a specific context. For example, to perform a slew-rate characterization, it may<br />

be necessary to instantiate the loading capacitor with a certain capacitance value, to define the<br />

slope of a PWL input signal as a specific value, and to run a transient simulation of a certain<br />

duration. These sets of commands can be reused in multiple simulations, and each time the<br />

parameterized parts can receive different values. A complete simulation is defined by<br />

assembling one or more testbenches, typically with the base netlist. This assembly process is<br />

explicit.<br />

This section contains:<br />

Testbench Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809<br />

Testbench Instantiation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811<br />

Rules for Testbench Location Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813<br />

Testbench Definition<br />

A testbench definition starts with the .define_testbench keyword, and finishes with a<br />

.end_define_testbench command. A testbench accepts input arguments. The number of<br />

arguments is not limited; a testbench may have no arguments at all.<br />

Tip<br />

See “.DEFINE_TESTBENCH” in the Eldo Reference Manual.<br />

A testbench is a set of simulator commands or circuit element descriptions that can be<br />

parametrized using the arguments of the testbench.<br />

A testbench can be considered as a <strong>user</strong>-defined macro. When instantiated, the testbench call is<br />

simply replaced with its content, where all occurrences to testbench arguments are replaced<br />

with their instantiation value.<br />

A testbench may be instantiated in either of the following ways:<br />

• In the netlist (or in another testbench) using a . command,<br />

which then appears as an additional Eldo command in a regular Eldo netlist.<br />

• From the simulation function used in a task (in which case the calling syntax uses<br />

parenthesis and comma-separated arguments—similar to classical programming) to<br />

request to instantiate the testbench into the netlist that will be simulated (see “Defining<br />

and Running Simulations” on page 841).<br />

A testbench may call another testbench defined in the same netlist/file as itself, or in another<br />

netlist/file (as long as it is included in the main netlist with a .INCLUDE or a .LIB command).<br />

Eldo® User's Manual, 15.3 809


Eldo Control Language<br />

Testbench Definition<br />

Note<br />

The Eldo Control Language is case-sensitive.<br />

Examples<br />

Here is an example of a simple testbench:<br />

.define_testbench tran_options<br />

.option eps=1e-8 hmax=10p reltol=1e-7 gear<br />

.end_define_testbench<br />

This testbench definition creates a <strong>user</strong>-defined simulator command named .tran_options that<br />

can be used (instantiated) in the base netlist. This testbench has no parameters; instantiating it in<br />

the base netlist or in a simulation run from a task would be equivalent to using the following in<br />

the netlist:<br />

.option eps=1e-8 hmax=10p reltol=1e-7 gear<br />

Note<br />

It is forbidden to use the names of existing simulator commands (such as .ALTER, .STEP,<br />

and so on) as testbench names. Note also that a testbench definition can be added anywhere<br />

in the base netlist, or in files included by the base netlist.<br />

Here is another example of a testbench:<br />

.define_testbench measure_tprop<br />

+ (cload_val=1p, trise=10n, signal="out")<br />

.tran 0 10n<br />

cload signal gnd cload_val<br />

VD D gnd PULSE 0V 1.8V 0n trise trise 50n 100n<br />

.extract tran label=tp xup(V(signal),1.8/2)-xup(V(D),1.8/2)<br />

.extract tran label=avgivdd average(i(vdd))<br />

.end_define_testbench<br />

This example shows a (partially) parameterized testbench. The load capacitance on the<br />

specified node and the rise time of the input signal are parameterized, and may be defined at<br />

instantiation time. The measured propagation time (tp) and the average current consumption<br />

(avgivdd) are .EXTRACT results; their computed values can be returned to the calling task (in<br />

the case that this testbench was instantiated in a simulation run from a task; see “Defining and<br />

Running Simulations” on page 841).<br />

Note<br />

All parameters have a default value, which is mandatory.<br />

810<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Testbench Instantiation<br />

This measure_tprop example testbench is only partially parameterized. To be usable, the node<br />

gnd must exist, and the circuit must have a D input and a VDD power supply. Otherwise all of<br />

these elements would be dangling, or creating an error at simulation time. It is up to the designer<br />

to parameterize any piece of the testbench that may potentially vary; nothing is imposed.<br />

Here is another example, which is self-explanatory:<br />

.define_testbench transient (vpulse=1)<br />

.connect out inn ! follower connection<br />

vinp inp 0 DC 0 PULSE 0 vpulse 0n 1n 1n 10n 20n<br />

.tran 1n 50n<br />

.extract tran label=overshoot max(V(out))-vpulse<br />

.end_define_testbench<br />

Related Topics<br />

Testbench Instantiation<br />

Rules for Testbench Location Resolution<br />

Testbench Instantiation<br />

A testbench definition will have no impact on the simulation of the netlist if the testbench is not<br />

instantiated. It only creates a <strong>user</strong>-defined macro that can be reused elsewhere.<br />

The testbench name must be prefixed with a “.” if it is instantiated directly in the netlist (but not<br />

if it is used for a simulation inside a task). Testbench parameters may be given specific values<br />

during instantiation; if not, their default value will be used.<br />

Examples of instantiations of the testbenches defined above:<br />

.tran_options<br />

.measure_tprop trise=1n cload_val=2p<br />

.transient<br />

Note<br />

The Eldo Control Language is case-sensitive; in the example above, trying to instantiate<br />

.measure_tprop Trise=1n Cload_Val=2p will generate an error.<br />

Give special consideration when choosing the names of testbench parameters. The substitution<br />

of the occurrences of a testbench parameter name with its instantiation value is really text<br />

replacement, everywhere a token matches the parameter name in the testbench definition. For<br />

example, in the measure_tprop example above, it would have been wrong to call the cload_val<br />

parameter cload because the name of the capacitor on the second line is also cload. If cload_val<br />

had been called cload, instantiating the testbench would have included the line 1p out gnd 1p<br />

but not cload out gnd 1p.<br />

Eldo® User's Manual, 15.3 811


Eldo Control Language<br />

Testbench Instantiation<br />

Testbenches may be nested, or more precisely, it is possible to instantiate a testbench inside<br />

another testbench. It is not permitted for a testbench to instantiate itself.<br />

Limitation: SPICE parameters can be used to set values to testbench parameters when<br />

instantiating a testbench in the netlist if they are declared before the testbench instantiation. For<br />

example:<br />

.param p1 = 1<br />

Example<br />

.tb_1(param1=p1)<br />

.define_testbench tran_setup (duration=1n)<br />

.option eps=1e-8 hmax=10p reltol=1e-7 gear<br />

.tran 0 duration<br />

.end_define_testbench<br />

.define_testbench measure_tprop<br />

+ (cload_val=1p, trise=10n, signal="out")<br />

.tran_setup duration=100n<br />

cload signal gnd cload_val<br />

VD D gnd PULSE 0V 1.8V 0n trise trise 50n 100n<br />

.extract tran label=tp xup(V(signal),1.8/2)-xup(V(D),1.8/2)<br />

.extract tran label=avgivdd average(i(vdd))<br />

.end_define_testbench<br />

In the example above, the tran_setup testbench is instantiated inside the measure_tprop<br />

testbench.<br />

Note<br />

It is not permitted to define a “local” testbench inside another testbench.<br />

A special testbench is automatically defined during elaboration. It consists of the part of the<br />

netlist that contains no task definition or testbench, and it is included by default in any<br />

simulation run from a task.<br />

Related Topics<br />

Defining and Running Simulations<br />

Rules for Testbench Location Resolution<br />

812<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Rules for Testbench Location Resolution<br />

Rules for Testbench Location Resolution<br />

When a testbench is instantiated in a netlist or in a task simulation command, the location of its<br />

definition must be resolved; in other words, Eldo must be able to locate the definition of the<br />

testbenches. The standard Eldo .LIB or .INCLUDE commands can be used so that the testbench<br />

definition can be indirectly found if it was not directly added in the base netlist.<br />

Example<br />

• File util_dev.cir<br />

This file contains a testbench defining a voltage amplifier:<br />

.define_testbench amp (in=1, out=0, vdd=10)<br />

* .MODEL definition<br />

.model q2n2222 npn is=1.9e-14 bf=150 vaf=100 ikf=.175<br />

+ ise=5e-11 ne=2.5 br=7.5 var=6.38 ikr=.012 isc=1.9e-13<br />

+ nc=1.2 rc=.4 cje=26p tf=.5e-9 cjc=11p tr=30e-9 xtb=1.5<br />

+ kf=3.2e-16 af=1.0<br />

* Circuit definition<br />

c30 in 31 47u<br />

r30 31 33 390<br />

r31 vdd 33 50k<br />

r32 33 0 15k<br />

q30 out 33 0 q2n2222<br />

r33 vdd out 750<br />

.end_define_testbench<br />

• File netlist.cir<br />

The main netlist: a low-pass filter incorporating a voltage amplifier:<br />

.include util_dev.cir<br />

r1 1 2 10<br />

l1 2 3 1.3m<br />

c1 3 0 100n<br />

r2 4 0 50k<br />

* Testbench instantiation<br />

.amp in=3 out=4 vdd=9<br />

vb 9 0 5<br />

v1 1 0 ac 1<br />

* Commands<br />

.ac dec 10 1 1g<br />

.plot ac vdb(3) vdb(4) (-250,50)<br />

.plot ac vp(3) vp(4) (-200,200)<br />

.end<br />

Related Topics<br />

Defining and Running Simulations<br />

Eldo® User's Manual, 15.3 813


Eldo Control Language<br />

Tasks<br />

Tasks<br />

This section details the scripting constructs available within the Eldo Control Language.<br />

In this section:<br />

Task Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814<br />

Task Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817<br />

Statement Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820<br />

Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839<br />

Defining and Running Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841<br />

Library of Functions for Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854<br />

Simulation Dynamic Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014<br />

Extended Simulation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024<br />

Parallel Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039<br />

Statistical Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058<br />

Advanced Simulation Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114<br />

Task Definition<br />

Tasks are defined as a sequence of statements, and are similar to functions in C. As opposed to<br />

simulator commands in a regular Eldo netlist (for example, .TRAN, .AC, .OPTION, and so on)<br />

which are executed more-or-less in parallel, statements inside a task are executed sequentially,<br />

much like in most sequential programming languages.<br />

A task may return nothing, in which case it is similar to a “void” C function. A task that returns<br />

a value is a function.<br />

A task definition starts with the .define_task keyword, and finishes with a .end_define_task<br />

command. A task can accept input and output arguments (except when called from the netlist, in<br />

which case the concept of an output argument is meaningless). The number of arguments is not<br />

limited; a task may have no arguments at all. The names of output arguments must be prefixed<br />

with a “@”. See Example Two.<br />

Tip<br />

See “.DEFINE_TASK” in the Eldo Reference Manual.<br />

The statements inside a task are executed sequentially whenever the task is called, using the<br />

. command. A task can be considered a <strong>user</strong>-defined (sequential)<br />

simulation command.<br />

814<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Task Definition<br />

A task (in other words, the sequence of statements inside the task) is never executed until it is<br />

called. There is no such thing as a predefined automatically-executed “main” task as in C.<br />

A task may be called in either of the following ways:<br />

• From within another task (in which case the calling syntax uses parenthesis and commaseparated<br />

arguments – similar to classical programming).<br />

• From the netlist using a . command, which then appears as an<br />

additional Eldo command in a regular Eldo netlist (a sequence of .<br />

calls from the .cir netlist is supported).<br />

A task may call another task defined in the same netlist/file as itself, or in another netlist/file (as<br />

long as it is included in the main netlist with a .INCLUDE or a .LIB command).<br />

Note<br />

The Eldo Control Language is case-sensitive.<br />

Examples<br />

Example One<br />

• Definition of a task printing “Hello world.” on the standard output:<br />

.define_task hello_world<br />

fprint (stdout, "Hello world.\n")<br />

.end_define_task<br />

See the fprint function for more information.<br />

Example Two<br />

• Definition of a task running some simulations:<br />

Eldo® User's Manual, 15.3 815


Eldo Control Language<br />

Task Definition<br />

.define_task opamp (n=10)<br />

set vdd[]=1.65 open_lg[]=60<br />

set vx=0 i=0 max_olg=60 i_max_olg=1 vdd_max=1.5 ovs=0<br />

// for each value of VDD from 1.5V to 1.8V, find out the DC<br />

// offset, then inject it into a .AC simulation that computes the<br />

// open loop gain, and store this gain in open_lg[] vector<br />

for (type=step, param=i, start=1, stop=n, step=1)<br />

vdd[i] = 1.5 + (i-1) * (1.8-1.5) / (n-1)<br />

simulation(<br />

+ powersupply(pvdd = vdd[i]),<br />

+ follower(),<br />

+ vx = @vout_follower)<br />

simulation(<br />

+ powersupply(pvdd = vdd[i]),<br />

+ ac_open_loop(vout_follower = vx),<br />

+ open_lg[i] = @open_loop_gain)<br />

endstep<br />

// find out for which value of VDD the open loop gain is maximal<br />

i_max_olg = open_lg.imin<br />

max_olg = open_lg[i_max_olg]<br />

for (i=open_lg.imin + 1; i max_olg)<br />

i_max_olg = i<br />

max_olg = open_lg[i]<br />

endif<br />

endfor<br />

vdd_max = vdd[i_max_olg]<br />

// finally run a single transient simulation for this value of<br />

// VDD which maximizes the open loop gain and extract the<br />

// overshoot :<br />

simulation(<br />

+ powersupply(pvdd = vdd_max),<br />

+ transient(),<br />

+ ovs=@overshoot)<br />

fprint (stdout, \<br />

"Max. open loop gain : %.5g for VDD = %.5g. Corresponding<br />

overshoot is : %.5g\n",\<br />

max_olg, vdd_max, ovs)<br />

.end_define_task<br />

See “Variables” on page 821, “Flow Control Statements” on page 835, “Defining and<br />

Running Simulations” on page 841, and the fprint function for more information on the<br />

concepts used in the example.<br />

816<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Task Instantiation<br />

Related Topics<br />

Task Instantiation<br />

Statement Overview<br />

Defining and Running Simulations<br />

Task Instantiation<br />

A task has to be instantiated to be executed. Tasks may be instantiated directly inside the netlist,<br />

or also inside other tasks (in which case they will be executed only if the calling task is<br />

instantiated in the netlist). Tasks can even be recursive.<br />

For an example of this, see Example Three.<br />

To instantiate a task in the netlist file, its name must be prefixed with a '.' and no parenthesis nor<br />

comma must be specified to separate the input arguments, as if it was a <strong>user</strong>-defined command.<br />

Contrary to testbenches or usual commands, tasks have precedence over everything else. As<br />

soon as some tasks are instantiated in the netlist file, only instantiated tasks will be executed. If<br />

the file also contains a circuit description and usual simulation commands, they will be ignored<br />

(except if an instantiated task performs a simulation with the simulation command; see<br />

“Defining and Running Simulations” on page 841 for more information).<br />

Task Input Parameters<br />

Task input parameters may be given specific values during instantiation. If not, their default<br />

values will be used. See “Examples” on page 818.<br />

Task Output Parameters<br />

If output parameters were defined for a task, their result values (that is to say the values they<br />

have at the end of the execution of the task) can be used by the calling task: they are usually<br />

directly saved inside some local variables of the calling task. Task output parameters are not<br />

passed by reference, but by value: when the task having output parameters is executed, its<br />

output parameters are not references to local variables of the calling task; on the contrary, they<br />

really have a value of their own, which can be accessed at the end of the execution of the task by<br />

the calling task, using the '@' operator.<br />

For example, if the definition of a task is:<br />

.define_task task_name(input_param1=default_value1, ...<br />

+ @output_param1=default_value2, ...)<br />

...<br />

output_param1 = final_value1<br />

.end_define_task<br />

then its instantiation inside another task is:<br />

Eldo® User's Manual, 15.3 817


Eldo Control Language<br />

Task Instantiation<br />

set local_variable1 = 0<br />

...<br />

task_name(input_param1=input_param_value1, ...<br />

+ local_variable1 = @output_param1, ...)<br />

It is even possible to specify more complex expressions using these output parameters:<br />

task_name(input_param1=input_param_value, ...<br />

+ local_variable1 = 1 + @output_param1,<br />

+ local_variable2 = @output_param1 - @output_param2, ...)<br />

Note<br />

The values of output parameters can only be used when a task is instantiated inside another<br />

task; it is not possible when a task is instantiated directly in the netlist.<br />

Examples<br />

Example One<br />

• Example of instantiation in the netlist of the tasks defined in “Task Definition” on<br />

page 814:<br />

.hello_world<br />

.opamp n=10<br />

Example Two<br />

• Example of instantiations in another task of the tasks defined in “Task Definition” on<br />

page 814:<br />

.define_task my_example<br />

hello_world()<br />

opamp (n=10)<br />

.end_define_task<br />

Example Three<br />

• Example of a recursive task with output argument:<br />

818<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Task Instantiation<br />

.define_task facto (n = 1, @res = 0)<br />

set loc_res = 0<br />

if (n


Eldo Control Language<br />

Statement Overview<br />

Statement Overview<br />

This section details the fundamental building blocks of ECL statements:<br />

Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820<br />

Line Breaks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820<br />

Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821<br />

Flow Control Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835<br />

Comments<br />

Single line comments inside tasks are introduced with a double slash or an asterisk:<br />

// this is a single line comment<br />

* this is also a single line comment<br />

End-of-line comments inside tasks are introduced with a double slash:<br />

set a = 3 // this is an end-of-line comment<br />

Multi-line comments can use the /* */ construct:<br />

/*<br />

this is a multiple<br />

line comment<br />

*/<br />

Line Breaks<br />

Generally, a statement must be written on a single line. However it is possible to break a line<br />

explicitly using either of the following:<br />

• A backslash “\” at the very end of the first part of the broken line.<br />

• A “+” sign at the beginning of the second part of the broken line.<br />

Note<br />

Either a “\” or a “+” must be used, not both. Note also that no character must be<br />

present after the “\”, especially not a space.'<br />

For an example of line-breaking, see Example Two in “Task Definition” on page 814.<br />

Related Topics<br />

Task Definition<br />

Task Instantiation<br />

820<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statement Overview<br />

Variables<br />

Several simple variable types are available. The simplest types are the number and string types,<br />

which are used to hold a single value, either a number (always a double-precision floating-point<br />

number) or a string. Vectors of scalar numbers and vectors of strings are also available, together<br />

with a set of functions operating directly on vectors. The waveform type is used to represent<br />

waveforms and communicate with Eldo. Finally, a file type is available for ASCII file<br />

manipulations.<br />

All variables have an identifier starting with a letter, or an “_” character, followed by a sequence<br />

of letters, digits, “_” and/or “#”. All variables, without exception, must be given an explicit<br />

initial value. There is no such thing as an uninitialized variable by construction.<br />

All types of variables can be passed as arguments (either input or output) to testbenches and<br />

tasks.<br />

All variables are local to the task in which they are declared.<br />

In this topic:<br />

Variable Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821<br />

Variable Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822<br />

Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823<br />

Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823<br />

Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824<br />

Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825<br />

Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831<br />

Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833<br />

Predefined Constants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834<br />

Variable Declaration<br />

Variables are defined at the beginning of a task, before any other statement. It is not permitted to<br />

declare variables inside a for or while loop, or anywhere but at the very beginning of a task<br />

(except if .option restrict_<strong>eldo</strong>_cl_declarations=0 is specified in the netlist).<br />

Scalar variables containing numbers are similar to (local) .PARAM in regular simulation<br />

syntax.<br />

A scalar variable can hold either a numeric value, a string of characters, a vector of such<br />

numbers or strings, or a file (logical) name. An initial value is mandatory. For example:<br />

set a=1.3 b=2<br />

set s="hello"<br />

Eldo® User's Manual, 15.3 821


Eldo Control Language<br />

Statement Overview<br />

Variables a and b are scalar numbers. Variable s is a character string.<br />

The type of a variable is determined by the value assigned to it.<br />

Tip<br />

See “.OPTION RESTRICT_ELDO_CL_DECLARATIONS” in the Eldo Reference<br />

Manual.<br />

Note About Numbers<br />

Variables declared with an integer value are stored and handled as integer values to save<br />

memory space. For example the b variable in the example above is an integer variable.<br />

However, the type is automatically changed to floating point representation (always in double<br />

precision) when required. For example:<br />

set a=5 b=2 c=0<br />

c = a/b<br />

Expression a/b evaluates to 2.5 (not 2) and assigns 2.5 to c (although c was initially an integer).<br />

Also, floating point expressions are changed to integer when used as vector indices.<br />

Related Topics<br />

Variables<br />

Variable Assignment<br />

Variables take an initial value using the set command. The type of the variable is inherited from<br />

this initial assignment. Variables are changed through assignments using the = operator; they<br />

may also change value when they are passed as task output arguments. Variables can change<br />

type if they are assigned a value of a type different to their current type.<br />

Examples<br />

set a = 2<br />

set b = 3<br />

set s = "hello"<br />

set c = sin(2*3.14159*1e6*100e-9)<br />

set i = a + 1<br />

Several initial assignments can occur within a single set command, so:<br />

set a = 2<br />

set b = 3<br />

is equivalent to:<br />

set a = 2 b = 3<br />

822<br />

Eldo® User's Manual, 15.3


Once assigned an initial value, variables can be reassigned with the = operator:<br />

set a = 2.0<br />

set b = 3.0<br />

a = a + b/2<br />

Eldo Control Language<br />

Statement Overview<br />

Note<br />

+=, -=, *=, /=, … operators are also available (a = a + b/2 is equivalent to writing a += b/2).<br />

Related Topics<br />

Variables<br />

Numbers<br />

Generally, numerical variables are double-precision floating point numbers. If a number is used<br />

as an index to address a vector, it is automatically truncated to a signed 32-bit integer.<br />

Scalar variables holding numbers are similar to (local) .PARAM in regular simulation syntax.<br />

The usual mathematical operators (+, -, *, /, %, **, ++, --, ==, !=, =, &&, ||, !) are<br />

available to form expressions using numbers. A library of mathematical functions is also<br />

available (sin(), cos(), abs(), and so on).<br />

The sensitive functions such as sqrt(), exp(), or log() are protected against floating-point<br />

overflows and so on. If for some reason it is still necessary to use the native exp() function, then<br />

the set of such native functions is available, prefixed with “unsafe_”. For example<br />

“unsafe_exp(1e300)” will blow up.<br />

exp() is calculated accurately until exp(80), beyond which, the function is extrapolated linearly.<br />

Related Topics<br />

Variables<br />

Library of Functions for Tasks<br />

Complex Numbers<br />

Complex numbers are also supported. Operators that work on complex numbers are: “+”, “-”,<br />

“*”, “/”, “++”, “--”, “==”, “!=”.<br />

Complex numbers can be created using the functions ritocomplex or mptocomplex or can be<br />

complex results of a simulation.<br />

Eldo® User's Manual, 15.3 823


Eldo Control Language<br />

Statement Overview<br />

Example<br />

.define_testbench tb_top<br />

v1 1 0 ac 1<br />

r1 1 2 10k<br />

c1 2 0 100u ic=0<br />

*Extract gain and phase at 1Hz as a complex number.<br />

.extract ac label=gp_1 yval(v(2,0),1)<br />

.ac dec 19 1e-9 1e9<br />

.end_define_testbench<br />

.define_task t_simu<br />

set gp = 0<br />

/* Run simulation and get the complex result gp_1. */<br />

if (simulation(tb_top(), gp=@gp_1).simu_status == 0)<br />

fprint(stdout, "Simulation succeeded\n")<br />

fprint(stdout, "1Hz: gain = %.2f dB phase = %.2f rad\n", db(gp),\<br />

phase(gp))<br />

else<br />

fprint(stdout, "Simulation failed\n")<br />

endif<br />

.end_define_task<br />

.t_simu<br />

See “Variables” on page 821, “Flow Control Statements” on page 835, “Defining and Running<br />

Simulations” on page 841, and the fprint function for more information on the concepts used in<br />

the example.<br />

Related Topics<br />

Variables<br />

Library of Functions for Tasks<br />

Strings<br />

Case-sensitivity of strings (for comparison operators) is set through a global option (.option<br />

set_<strong>eldo</strong>_cl_string_comparison_case_sensitive=1). Strings are case-insensitive by default, and<br />

it is recommended that this is left unchanged to ensure compatibility.<br />

Tip<br />

See “.OPTION SET_ELDO_CL_STRING_COMPARISON_CASE_SENSITIVE” in the<br />

Eldo Reference Manual.<br />

String variables are manipulated with simple operators. The == and != operators can be used to<br />

test equality or inequality of two strings. The < and > operators are used to test the lexical<br />

ordering of two strings, based on the alphabetical order. For example:<br />

set s_ok = "success" s_fail = "failed" s_code1 = "" s_code2 = "whatever"<br />

824<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statement Overview<br />

if ((s_code1 == s_failed) || (s_code2 != s_ok))<br />

endif<br />

fprint (stdout, "Cannot complete task.\n")<br />

Note<br />

To have string comparison working accordingly to the intuitive alphanumerical order, you<br />

must ensure that numerical parts inside the strings to compare have the same number of<br />

digits (for example “string12” < “string3” but “string12” > “string03”).<br />

Strings can be concatenated using the + operator. For example:<br />

set s_ok = "success" s_fail = "failed" s_code1 = "" s_code2 = "whatever"<br />

set s_task_name = "task_sim1"<br />

s_result = s_task_name + " : " + s_fail<br />

fprint (stdout, s_result)<br />

See Library of Functions for Tasks for the complete list of functions operating on strings.<br />

Related Topics<br />

Variables<br />

Library of Functions for Tasks<br />

Vectors<br />

All vectors are dynamic; their dimensions are handled dynamically, as they are addressed<br />

(except if the .option set_<strong>eldo</strong>_cl_array_auto_expand is set to 0, in which case their sizes must<br />

be explicitly managed using the resize function).<br />

Tip<br />

See “.OPTION SET_ELDO_CL_ARRAY_AUTO_EXPAND” in the Eldo Reference<br />

Manual.<br />

One-dimensional and two-dimensional vectors are available for numbers and strings. A onedimensional<br />

vector is a contiguous array of numbers indexed with an integer number. The size<br />

of vectors is dynamic, and there is an automatic reallocation mechanism. The indexes are<br />

always signed 32-bit integer numbers; in other words, the maximum range is from −2×10 31 to<br />

2×10 31 −1.<br />

The declaration of a vector defines what it contains (numbers or strings) and, optionally, its<br />

initial dimension. The initial fill value is mandatory. The [] indicates that this variable is a<br />

vector, not a scalar.<br />

Eldo® User's Manual, 15.3 825


Eldo Control Language<br />

Statement Overview<br />

A vector element can be addressed using the usual notation a[i], where a is the vector name and<br />

i is the index. i must have an integer value, otherwise it is rounded to a signed 32-bit integer<br />

number. Any attempt to address a vector outside of its allocated index range is trapped and<br />

causes an error (in the case that the .option set_<strong>eldo</strong>_cl_array_auto_expand is set to 0).<br />

One-dimensional Vectors<br />

Example:<br />

set a[] = 2001<br />

This command simply declares the vector a, and explicitly sets the initial value of any of its<br />

elements to 2001. This initialization is mandatory. The actual range will be assigned<br />

dynamically with further references and/or assignations.<br />

set b[0,99]=0<br />

This command declares the vector b, and explicitly sets the initial value of any of its element<br />

to 0. In this example, reading the vector from index 0 to index 99 will return 0. Reading outside<br />

of this range will extend the vector to the necessary size to make the reference “legal”, fill all<br />

uninitialized cells with the default value, and return the initial value. For example:<br />

set b[0, 99] = 0.1234 a = 1<br />

a = b[150]<br />

The reference to b[150] causes the b[] vector to be automatically extended. All cells from index<br />

100 to 150 are filled with the value 0.1234, and the a variable is assigned the value of b[150]:<br />

0.1234.<br />

Assigning an element whose index is outside the current range of the vector automatically<br />

extends its range. For example:<br />

set a[0,99]=3.14<br />

a[500]=17<br />

In this example, the first statement creates a vector a[] of 100 elements, from a[0] to a[99]. All<br />

elements are initialized to 3.14. The second assignment extends the range of a[] from 99 to 500,<br />

and fills a[500] with the value 17. The elements a[100] to a[499] are filled with the initial value<br />

of the vector, which is 3.14.<br />

If a vector has no explicit initial range, as in:<br />

set a[]=0<br />

then a subsequent assignment of an element with index will create the element i. For<br />

example:<br />

826<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statement Overview<br />

set b[]=0.1<br />

b[10]=1.0e-6<br />

In this example, the first statement creates an empty vector, b. The second assignment extends<br />

the range of b to [10,10]. The elements b[10] is set to 1.0×10 −6 .<br />

Filling Vector Sub-range<br />

It is possible to fill a sub-range of a vector with a value using the assignment operator. For<br />

example:<br />

set b[-5,5]=1.414<br />

set i = 0<br />

step (param=i, start=0, stop=5, step=1)<br />

b[i] = 1.732<br />

endstep<br />

is a very complicated way to accomplish the same as:<br />

set b[-5,5]=1.414<br />

b[0,5] = 1.732<br />

Filling can simultaneously extend the range if needed:<br />

set b[-5,5]=1.414<br />

b[-10,10] = 1.732<br />

It is possible to use negative indexes such as in:<br />

set a[-50,50] = 10<br />

which would declare a vector containing 101 values, addressable from a[-50] to a[50]. The<br />

entire vector is initially filled with the value 10.0. Explicitly specifying an initial fill-in value is<br />

mandatory.<br />

Although negative indices are allowed, the addressing is always in ascending order; in other<br />

words, imax must be greater than or equal to imin.<br />

To explicitly define a one-dimensional array with different values specify them inside {}. If<br />

used inside a declaration, the default value of the array is the first of the set; if not specified, the<br />

first index of the array is 1. The ranges, when explicitly specified, must correspond otherwise an<br />

error will occur at run-time. Examples:<br />

Eldo® User's Manual, 15.3 827


Eldo Control Language<br />

Statement Overview<br />

set a[] = {1, 2, 4}<br />

set b[-3,3] = {-1, 0, 0, 1, 0, 0, -1}<br />

a[5] = 8 /* a[4] will be 1 because it is the default value. */<br />

b[1, 2] = {0.5, -0.5}<br />

The memory corresponding to a vector is automatically freed upon exit of the task in which it<br />

was allocated.<br />

Multi-dimensional Vectors<br />

Multi-dimensional vectors are created using the ; separator (or alternatively separate brackets)<br />

for the dimensions. The example below creates a 10×10 matrix:<br />

set a[0,9;0,9] = 0<br />

Elements of multi-dimensional vectors are referred to using the notation a[i;j] or a[i][j].<br />

Both notations are equivalent, and a matrix is implemented in ECL as a vector of vectors. mat[i]<br />

yields line i of the matrix (a vector). mat[i][j] yields the matrix element on line i and column j.<br />

A matrix can be declared and initialized using the following equivalent syntaxes:<br />

set a[0,9;0,9] = 0<br />

set b[0,9][0,9] = 0<br />

To declare an empty matrix:<br />

set c[][] = 0<br />

Matrix Attributes<br />

The number of lines of a matrix is the number of elements of vector (of vectors):<br />

mat.size<br />

The number of columns of a matrix is the number of elements of any line, for example the first<br />

line, which is vector mat[mat.imin]:<br />

mat[mat.imin].size<br />

Refer to the example $MGC_AMS_HOME/examples/ecl/12-rc_compounds/rc_compounds.cir<br />

that shows how to loop on all the matrix elements.<br />

Beware, there is no mechanism that forces the lines of the matrix to remain the same size, that<br />

is, line vectors grow independently using the auto-expanding mechanism of ECL. For example,<br />

the following code:<br />

828<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statement Overview<br />

* Looping on all element of a matrix<br />

.define_task all_elements_of_a_matrix<br />

set mat[0,2][0,2]=0 l=0 c=0<br />

mat[0][0] = 1.0<br />

mat[3][7] = 2.0<br />

mat[7][5] = 3.0<br />

fprint(stdout, " ")<br />

for(c=mat[0].imin; c


Eldo Control Language<br />

Statement Overview<br />

To explicitly free (almost) the entirety of the memory used by a vector that is no longer needed,<br />

in the case that it is needed to do so before the task or function terminates, use:<br />

free (b)<br />

The free command frees the entire vector, whatever the number of dimensions.<br />

Vector Attributes<br />

A set of useful attributes is available on vectors:<br />

• imin to get the minimum index of the vector<br />

• imax to get the maximum index of the vector<br />

• size to get the size of the vector<br />

Example:<br />

set a[0,10] = 1<br />

fprint(stdout, "a.imin = %d\n", a.imin)<br />

fprint(stdout, "a.imax = %d\n", a.imax)<br />

fprint(stdout, "a.size = %d\n", a.size)<br />

Passing Vectors as Task Arguments<br />

Example using a vector as an input argument:<br />

.define_task my_vector_average (a[]=0, @avg=0)<br />

set tmp=0 i=0<br />

step (type=linear, param=i, start=a.imin, stop=a.imax, step=1)<br />

tmp = tmp + a[i]<br />

endstep<br />

avg = tmp / a.size<br />

.end_define_task<br />

The corresponding call from another task would be:<br />

set tprop[0,99]=0 tprop_avg=0<br />

my_vector_average (a=tprop, tprop_avg=@avg)<br />

Example using a vector as an output argument:<br />

830<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statement Overview<br />

.define_task my_vector_sum (a[]=0, b[]=0, @sum[]=0)<br />

set tmp=0 i=0<br />

if ((a.imin != b.imin)) || (a.imax != b.imax))<br />

printf (stdout, "error")<br />

return<br />

endif<br />

step (type=linear, param=i, start=a.imin, stop=a.imax, step=1)<br />

sum[i] = a[i] + b[i]<br />

endstep<br />

.end_define_task<br />

The corresponding call from another task would be:<br />

set tprop1[0,99]=0.1 tprop2[0,99]=10.7 total[0,99]=0<br />

my_vector_sum (a=tprop1, b=tprop2, total=@sum)<br />

Related Topics<br />

Variables<br />

Library of Functions for Tasks<br />

Waveforms<br />

Waveforms are represented using a specific type of variable. They enable easy communication<br />

with the simulator, which creates this type of object through .PLOT commands for example.<br />

The normal usage of waveforms is to retrieve a waveform from a simulation, and possibly use it<br />

within some calculations as part of a task.<br />

Tip<br />

See “.PLOT” in the Eldo Reference Manual.<br />

The waveform object is created and filled by the simulator, under normal usage. A library of<br />

functions operating directly on waveforms is available. It is possible to read the size of the<br />

waveforms (its number of points, its full name, and so on, from within a task or function.<br />

Complex and compound waveforms are also supported.<br />

The following operators are supported on waveforms: +, -, *, /, %, ==, !=, >=, ?, >,


Eldo Control Language<br />

Statement Overview<br />

set w1 = 0<br />

set w2 = 0<br />

set w3 = 0<br />

set w4 = 0<br />

simulation(tb(), w1=@wave1, w2=@wave2)<br />

w3 = w1 + 1<br />

w4 = w1 + w2<br />

Examples<br />

Example One<br />

.define_testbench follower<br />

.connect inn out<br />

.ac dec 10 1 1g<br />

* need to give a name to the waveform like this to be able to get it back<br />

from the simulation command:<br />

.plot ac voutdb_wave=vdb(out)<br />

.end_define_testbench<br />

.define_task opamp_gain_max_from_wave<br />

/* This example shows how to retrieve a simple AC waveform,<br />

and use it to extract its maximum value (a very complicated way).<br />

*/<br />

set vout=0<br />

set i=0 max_gain=-1000 imax=0 x=0.0 y=0.0 iter=0<br />

simulation(<br />

+ powersupply(pvdd = 2.0),<br />

+ follower(),<br />

+ vout = @voutdb_wave)<br />

iter = beginval(vout, x, y)<br />

while (iter != 0)<br />

if (y > max_gain)<br />

max_gain = y<br />

imax = x<br />

endif<br />

iter = nextval(vout, x, y)<br />

endwhile<br />

fprint (stdout, "Maximum gain : %.5g at frequency = %.5g.\n",\<br />

max_gain, vout.x[imax])<br />

.end_define_task<br />

.opamp_gain_max_from_wave()<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, “Defining and Running Simulations” on page 841, and the fprint,<br />

beginval, and nextval functions for more information on the concepts used in the example.<br />

832<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statement Overview<br />

Example Two<br />

.define_testbench overshoot (tmax=1000n)<br />

.connect inn out<br />

.tran 0 tmax<br />

Vinp inp 0 pulse ...<br />

.plot tran vout_wave=v(out)<br />

.end_define_testbench<br />

.define_task opamp_max_overshoot<br />

/*<br />

* This example shows how to retrieve a simple TRAN waveform,<br />

* and use it to extract its maximum value<br />

* (a simple way using the predefined waveform function library).<br />

*/<br />

set vout=0<br />

set max_v=-1000 fmax=0<br />

simulation(<br />

+ powersupply(pvdd = 2.0),<br />

+ overshoot(tmax=100e-9),<br />

+ vout = @vout_wave)<br />

max_v = max(vout)<br />

t_max = xval(vout, max_v)[1]<br />

fprint (stdout, "Maximum overshoot : %.5g at time = %.5g.\n", max_v,<br />

t_max)<br />

.end_define_task<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, “Defining and Running Simulations” on page 841, and the fprint<br />

function for more information on the concepts used in the example.<br />

See Library of Functions for Tasks for the complete list of functions operating on waveforms.<br />

Related Topics<br />

Variables<br />

Defining and Running Simulations<br />

Library of Functions for Tasks<br />

Files<br />

File type variables are used to hold the logical names of files.<br />

For example:<br />

Eldo® User's Manual, 15.3 833


Eldo Control Language<br />

Statement Overview<br />

.define_task hello_world_2<br />

set myfile = NULL<br />

myfile = fopen ("./hello.txt", "w", \<br />

"cannot open hello.txt for writing")<br />

fprint (myfile, "Hello world.\n")<br />

fclose (myfile)<br />

.end_define_task<br />

See “Task Definition” on page 814 and “Variables” on page 821 for more information on the<br />

concepts used in the example.<br />

File type variables are used by the fopen, fprint and fclose commands. The fopen command in<br />

the example above attempts to open the file hello.txt for writing. If this is successful, the logical<br />

name myfile can be used in further commands to reference the file. If for some reason this is not<br />

possible (for example the disk full, access is denied, and so on) the die optional message is<br />

printed to the standard output, and the program aborts. If the file can be opened, then the myfile<br />

name becomes non-NULL, and it can be used in subsequent fprint commands to designate this<br />

particular file. To close the file, the fclose command must be used. The myfile variable is then<br />

automatically set to NULL, and any further attempt to use it in an fprint command will result in<br />

an error.<br />

The stdout logical name can be used to write to the standard output of the calling process<br />

(usually the console). Standard error (stderr) is not supported.<br />

See Library of Functions for Tasks for the complete list of functions operating on file type<br />

variables.<br />

Related Topics<br />

Variables<br />

Library of Functions for Tasks<br />

Predefined Constants<br />

A number of physical constants are available. This is a list of reserved symbols, such as pi,<br />

boltz, and so on. Using these symbols for any purpose (a variable or task for example) is<br />

forbidden.<br />

• epso = 8.854214871×10 −12<br />

• boltz = 1.3806226×10 −23<br />

• charge = 1.6021918×10 −19<br />

• pi = 3.141592654<br />

• twopi = 6.283185308<br />

834<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statement Overview<br />

Flow Control Statements<br />

One of the main objectives of the Eldo Control Language is to offer a level of flow control<br />

within the simulation plan, instead of letting the simulator do everything automatically.<br />

To achieve this goal some simple constructs are available:<br />

• if/else/endif Construct<br />

• Step Loops<br />

• While Loops<br />

• For Loops<br />

These constructs are similar to those available in any language for flow control (except for<br />

SPICE, if SPICE can be considered a language). However, the step loop proposed here has<br />

some specificities originating from its similarity with the .STEP command in a simulation<br />

context (see .STEP in the Eldo Reference Manual). The linear, logarithmic, and list-driven<br />

loops are heavily used in existing netlists, and the step loop enables the implementation of these<br />

special kinds of loops easily, in addition to classical for i=1 to n loops.<br />

if/else/endif Construct<br />

The if construct enables the testing of a boolean condition, the triggering a sequence of<br />

statements if the condition is true and, optionally, another sequence if the condition is false.<br />

For example:<br />

if (passfail != 1)<br />

endif<br />

fprint (stdout, "Cannot complete measure_tprop() task for\<br />

cload=%.5g\n", cload[i])<br />

The binary logical operator to test equality or inequality inside a condition are the ones used in<br />

C: == and !=.<br />

The else clause enables the specification of an alternate command sequence:<br />

if (passfail != 1)<br />

fprint (stdout, "Cannot complete measure_tprop() task for\<br />

cload=%.5g\n", cload[i])<br />

else<br />

fprint (stdout, "measure_tprop() task successfully completed.\n")<br />

endif<br />

Eldo® User's Manual, 15.3 835


Eldo Control Language<br />

Statement Overview<br />

Related Topics<br />

Flow Control Statements<br />

Step Loops<br />

The step loop implements a loop with different stepping mechanisms, specified with the type<br />

argument. The step loop syntax is taken from the Eldo/SPICE .STEP command syntax.<br />

Note<br />

The type argument is optional, as the type of step loop to execute is actually defined by<br />

another parameter, but it may be used to increase readability.<br />

There are a number of variant forms of this loop:<br />

• Incremental Loop<br />

• Linear Type Loop<br />

• Log Type Loop<br />

• List Type Loop<br />

Incremental Loop<br />

The simplest variant is the incremental loop:<br />

set i = 0<br />

set tmp = 0<br />

step (type=step, param=i, start=i1, stop=i2, step=1)<br />

tmp = tmp + a[i]<br />

endstep<br />

The parameter being swept is specified with param. The start, stop, and step (or the equivalent<br />

incr or decr) define the loop structure. With this type of loop, the step is explicitly stated. The<br />

loop ends with the endstep command.<br />

Linear Type Loop<br />

This variant on the incremental loop uses the lin or linear type. In this case, the progression is<br />

still linear, but the total number of iterations is provided as an integer. The step is computed<br />

from the start, stop, and n parameters. If the n number is negative or null, or if stop is lower than<br />

or equal to start, no iteration is performed, and execution resumes after the endstep command.<br />

836<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statement Overview<br />

set cload = 0<br />

step (type=linear, param=cload, start=1.56p, stop=7.28p, n=100)<br />

simulation<br />

// ...<br />

endstep<br />

Log Type Loop<br />

This variant on the incremental loop uses the log type. In this case, the progression is<br />

logarithmic, and the number of iterations per decade of the swept parameter is provided as a<br />

strictly positive integer. The step is computed from the start, stop, and dec parameters.<br />

set fmin = 0<br />

step (type=log, param=fmin, start=1e3, stop=2e7, dec=5)<br />

simulation<br />

// ...<br />

endstep<br />

List Type Loop<br />

This variant uses the list type, which enables looping on sets of parameters. The lengths of the<br />

lists must match.<br />

set cload = 0 ptemp = 0 pvdd = 0<br />

step (type=list, param=(cload,ptemp,pvdd), list=((1p,27,1.8),\<br />

(2p,27,1.9), (3p,55,1.9)))<br />

simulation<br />

// ...<br />

endstep<br />

For one-dimensional list-type loops, no parentheses are required. In other words, the following<br />

syntax may be used:<br />

set pvdd = 0<br />

step (type=list, param=pvdd, list=(1.8,1.85,1.9))<br />

simulation<br />

// ...<br />

endstep<br />

These step/endstep loops are very similar to the .STEP command available in most SPICE<br />

simulators. However, they differ in that they allow the implementation of a specific sequence of<br />

actions/simulations/evaluations, and so on, whereas a .STEP in a netlist always has a global<br />

scope—in other words, it will re-run basically every analysis in the netlist. In many cases, rerunning<br />

everything is neither efficient nor required.<br />

Eldo® User's Manual, 15.3 837


Eldo Control Language<br />

Statement Overview<br />

Tip<br />

See “.STEP” in the Eldo Reference Manual.<br />

Related Topics<br />

Flow Control Statements<br />

While Loops<br />

The while construct is very simple; the sequence of statements between while and endwhile is<br />

repeatedly executed as long as the condition specified on the while command is true. If the<br />

condition is false from the beginning (when the while command is first encountered) no<br />

iteration is performed at all.<br />

The break and continue keywords can be used inside these loops.<br />

set i = 0<br />

set wstr = ""<br />

while (i != n && passfail == 1)<br />

endif<br />

cload[i] = cloadstart + i*(cloadstop-cloadstart)/(n-1)<br />

simulation(\<br />

tran_options( ),\<br />

measure_trop(cload=cload[i], trise=1n,\<br />

signal="v(out)"), tprop[i]=@tp , passfail = @passfail)<br />

if (passfail != 1)<br />

sprint (wstr, "Cannot complete measure_tprop() task for\<br />

cload=%.5g\n",\cload[i])<br />

fprint (stdout, wstr)<br />

i = i + 1<br />

endwhile<br />

See “Variables” on page 821, “Flow Control Statements” on page 835, “Defining and Running<br />

Simulations” on page 841, and the fprint and sprint functions for more information on the<br />

concepts used in the example.<br />

Related Topics<br />

Flow Control Statements<br />

838<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Functions<br />

For Loops<br />

This construct is comparable to the C for loop:<br />

set i = 0<br />

set wstr = ""<br />

for (; i != n; i++)<br />

endif<br />

endfor<br />

cload[i] = cloadstart + i*(cloadstop-cloadstart)/(n-1)<br />

simulation(\<br />

tran_options( ),\<br />

measure_trop(cload=cload[i], trise=1n,\<br />

signal="v(out)"), tprop[i]=@tp , passfail = @passfail)<br />

if (passfail != 1)<br />

sprint (wstr, "Cannot complete measure_tprop() task for\<br />

cload=%.5g\n",\cload[i])<br />

fprint (stdout, wstr)<br />

See “Variables” on page 821, “Flow Control Statements” on page 835, “Defining and Running<br />

Simulations” on page 841, and the fprint and sprint functions for more information on the<br />

concepts used in the example.<br />

Related Topics<br />

Flow Control Statements<br />

Functions<br />

A function is similar to a task, except that it returns a value. The return type can be a number, a<br />

string, or a vector. The keywords .define_function and .end_define_function tell the compiler<br />

that an object must be returned.<br />

The following example rewrites the second example in the topic “Passing Vectors as Task<br />

Arguments” on page 830 using a function rather than a task:<br />

Eldo® User's Manual, 15.3 839


Eldo Control Language<br />

Functions<br />

.define_function f_avg (a[]=0, i1=1, i2=1)<br />

set tmp=0 i=0<br />

step (type=linear, param=i, start=i1, stop=i2, step=1)<br />

tmp = tmp + a[i]<br />

endstep<br />

tmp = tmp / (i2 - i1 + 1)<br />

return tmp<br />

.end_define_function<br />

Once a function is defined, it can be used wherever its return type can be used. For example:<br />

set tprop[0,99]=0 n=100 avg=0<br />

avg = f_avg(a=tprop, i1=0, i2=n-1)<br />

840<br />

Eldo® User's Manual, 15.3


Defining and Running Simulations<br />

Eldo Control Language<br />

Defining and Running Simulations<br />

The simulation command is used to launch a simulation. It is used to assemble the different<br />

pieces of netlist and testbench necessary to create the desired simulation, and to run it. Upon<br />

completion of the simulation, any .EXTRACT, .MEAS, or waveform results having a label are<br />

available for further processing, except if the simulation failed (they can be assigned to task<br />

variables as if they were output arguments of the simulation command).<br />

There are essentially two use models.<br />

• Create a simulation from the local netlist (the netlist from where the task is launched)<br />

and parameterized testbenches.<br />

• Create a simulation from external files and parameterized testbenches.<br />

Each testbench used in the simulation optionally receives parameters, which override the<br />

default values. All parameters are optional; if a parameter is not passed to a testbench, it takes<br />

its default value. If a testbench has no parameter, the action of listing the testbench in the<br />

simulation is similar to including the content of the testbench, as-is, in the assembled netlist.<br />

Simulations launched in this way can only be “child” simulations—in other words, they cannot<br />

include task executions. They must be plain, simple, classical simulations. Specifically, any task<br />

execution statements present in the submitted assembled netlist are ignored.<br />

The simulation command takes three different types of optional argument:<br />

• Arguments related to the launch of the simulation; name and log to specify the name of<br />

the generated netlist and of the log file of the simulation (it may be beneficial to specify<br />

the name of a directory so that all generated temporary files can be easily removed) and<br />

args to set specific Eldo command-line options. To change the default behavior of<br />

passing arguments, see the option in the Arguments section in “Simulation” on<br />

page 1114.<br />

• Testbench instantiations (testbench names but not prefixed with a “.” here).<br />

• Expressions to get return simulation results.<br />

Below shows an example of a simulation command:<br />

Eldo® User's Manual, 15.3 841


Eldo Control Language<br />

Defining and Running Simulations<br />

set tprop=0 powercons=0 res=0<br />

res = simulation<br />

+ (name="sim_dir/tprop.cir", log="sim_dir/tprop.log", args="-silent -<br />

nowdb",<br />

+ tran_options(),<br />

+ measure_trop(cload_val=1.5p, signal="dff_out"),<br />

+ tprop=@tp, powercons=@avgivdd))<br />

if (res.simu_status == 0)<br />

fprint(stdout, "tprop: %.5g power_cons: %.5g\n", tprop, powercons)<br />

else<br />

fprint(stdout, "Simulation failed\n")<br />

endif<br />

In the example above, the simulation is built by instantiating two testbenches, namely<br />

tran_options and measure_tprop, which were previously shown as examples (see “Testbenches”<br />

on page 809). The tran_options testbench has no parameters. The measure_tprop testbench is<br />

passed several arguments, which override the default values provided in its definition. The<br />

cload_val parameter takes the value 0.5p (0.5×10 −12 ), and the signal parameter is set to dff_out.<br />

The trise parameter is not passed, thus it will take its default value, 10n.<br />

The tprop and powercons scalar variables (explained in “Variables” on page 821) are used to<br />

store the values of the tp and avgivdd quantities computed as results of the simulation (they are<br />

labels of the extract commands contained in the measure_tprop testbench).<br />

Normally, the order of appearance of commands or element descriptions in the final netlist is<br />

not important. Note, however, that the testbenches defined within the simulation command are<br />

appended in the same order as they appear in the simulation command.<br />

Based on the example above, the fprint function generates the resulting netlist, tprop.cir, as<br />

follows:<br />

<br />

*tran_options testbench :<br />

.option eps=1e-8 hmax=10p reltol=1e-7 gear<br />

*measure_tprop testbench :<br />

.tran 0 10n<br />

cload dff_out gnd 1.5p<br />

VD D gnd PULSE 0V 1.8V 0n 10n 10n 50n 100n<br />

.extract tran label=tp xup(V(dff_out))-xup(V(D))<br />

.extract tran label=avgivdd avg(i(vdd))<br />

And the process would be launched as follows:<br />

<strong>eldo</strong> -silent -nowdb -i sim_dir/tprop.cir > sim_dir/tprop.log &<br />

This previous example illustrates the first use model: indeed, the local netlist must not be empty<br />

for the simulation to succeed; it must contain dff_out and gnd nodes, a D input, and a VDD<br />

power supply.<br />

842<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Defining and Running Simulations<br />

In this topic:<br />

Result Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843<br />

Generated Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844<br />

Collecting Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846<br />

Vector Simulation Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848<br />

Result Structure<br />

The result returned by the call to the simulation command is a structure with many fields:<br />

Example 1:<br />

set res = simulation(tb())<br />

set err_code = res.simu_status<br />

if (err_code == 0)<br />

fprint(stdout, "Simulation succeeded.\n")<br />

else<br />

fprint(stdout, "Simulation failed!\n")<br />

endif<br />

Example 2:<br />

Table 18-2. ECL Result Structure Fields<br />

Field<br />

Description<br />

avg_newton Average number of Newton iterations<br />

newton_iter Number of Newton iterations<br />

tot_elements Total number of elements<br />

simu_status Return code of the simulation (0 is OK)<br />

simu_time Simulation elapsed time, in seconds<br />

nb_steps Number of accepted time steps<br />

nb_rej_steps Number of rejected time steps<br />

nb_lte_rej_steps Number of rejected time steps due to LTE<br />

nb_nodes Number of nodes<br />

nb_proc_used Number of processors used<br />

set res = simulation(tb())<br />

set elapsed = res.simu_time<br />

fprint(stdout, "Elapsed time: %.1f s.\n", elapsed)<br />

See “Variables” on page 821, “Flow Control Statements” on page 835, and the fprint function<br />

for more information on the concepts used in these examples.<br />

Eldo® User's Manual, 15.3 843


Eldo Control Language<br />

Defining and Running Simulations<br />

Related Topics<br />

Defining and Running Simulations<br />

Generated Files<br />

When simulations are run, a number of files have to be generated on disk. By default, when the<br />

name and log parameters of the simulation command are not set, these files are generated in a<br />

temporary directory located in the Eldo outpath directory, named <strong>eldo</strong>_cl_simu_, with an<br />

automatically generated number appended, for example: <strong>eldo</strong>_cl_simu_12345.<br />

In this directory, you can find the generated netlist named by default, <strong>eldo</strong>_cl_simu.cir, and the<br />

simulation output log file named <strong>eldo</strong>_cl_simu.log. If the simulation failed, it is necessary to<br />

view this log file to understand why an error occurred. Any error listed in this log file will refer<br />

to the generated netlist <strong>eldo</strong>_cl_simu.cir.<br />

The generated netlist will be overwritten if many simulations are run successively (default<br />

behavior) which is contrary to the simulation output log file which is not overwritten<br />

(simulation log files of each simulation are appended). Therefore, backup files of the generated<br />

netlists are created in case it is necessary to find out which netlist was simulated. The first<br />

backup file is named <strong>eldo</strong>_cl_simu__1.cir, the second <strong>eldo</strong>_cl_simu__2.cir, and so on.<br />

For example, if a task defined in the file netlist.cir runs many simulations:<br />

.define_task many_simu<br />

set n = 0<br />

for (n=1; n


Eldo Control Language<br />

Defining and Running Simulations<br />

***** Running simulation ...<br />

***** Generated simulation file:<br />

/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.cir<br />

***** (backup file:<br />

/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu__1.cir)<br />

***** Log file: /home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.log<br />

***** Simulation succeeded<br />

***** Running simulation ...<br />

***** Generated simulation file:<br />

/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.cir<br />

***** (backup file:<br />

/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu__2.cir)<br />

***** Log file: /home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.log<br />

***** Simulation succeeded<br />

***** Running simulation ...<br />

***** Generated simulation file:<br />

/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.cir<br />

***** (backup file:<br />

/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu__3.cir)<br />

***** Log file: /home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.log<br />

Warning 1803: In file "/home/jdoe/<strong>eldo</strong>/netlist.cir" line 5:<br />

+ Control Language warning: failed to complete the simulation (please<br />

check '/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.log' for more<br />

details).<br />

***** Running simulation ...<br />

***** Generated simulation file:<br />

/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.cir<br />

***** (backup file:<br />

/home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu__4.cir)<br />

***** Log file: /home/jdoe/<strong>eldo</strong>/<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.log<br />

***** Simulation succeeded<br />

The warning 1803 indicates that the third simulation failed. It gives the line number where the<br />

simulation failed in the main netlist netlist.cir (line 5 corresponds to the statement<br />

simulation(add_c(node=n))) and this can provide a first indication to understand the error. Most<br />

of the time it is easier to look at the output log file of the simulation: <strong>eldo</strong>_cl_simu_20287/<br />

<strong>eldo</strong>_cl_simu.log. The error in this output log file references the netlist run by the third<br />

simulation. Because the file <strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu.cir was overwritten by the<br />

fourth simulation (at the end of the global simulation of netlist.cir, the file <strong>eldo</strong>_cl_simu_20287/<br />

<strong>eldo</strong>_cl_simu.cir is identical to the last backup file <strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu__4.cir),<br />

the line error has to be searched for in the backup file of the third simulation<br />

<strong>eldo</strong>_cl_simu_20287/<strong>eldo</strong>_cl_simu__3.cir.<br />

The default behavior can be changed. It is possible to generate different files for successive<br />

simulations. For example:<br />

.define_task many_simu<br />

set n = 0<br />

for (n=1; n


Eldo Control Language<br />

Defining and Running Simulations<br />

This task will generate the simulation files in different directories (simu1, simu2, simu3, and<br />

simu4).<br />

All these generated files are extremely useful to debug simulations. Once the debug phase has<br />

been completed and the simulations behave as expected, it is possible to force Eldo to<br />

automatically remove these generated files. Refer to the section “Temporary Files” in<br />

“Simulation” on page 1114 for more information.<br />

Related Topics<br />

Defining and Running Simulations<br />

Collecting Simulation Results<br />

Once a simulation has successfully completed, the following simulation data can be saved into<br />

task local variables, from where it will be available for post-processing:<br />

• Values of parameters.<br />

• .EXTRACT and .MEAS results if they have been given a label (for example:<br />

.EXTRACT tran label=thresh4 xthresh(v(2,0), 4)).<br />

• Waveforms if they have been given a name (for example: .PLOT tran u20_tran=v(2,0)).<br />

These data are managed as output arguments of the simulation command, and their values can<br />

be obtained by requesting them using their names or labels prefixed with a “@” character.<br />

Example<br />

The following testbench, tb_rc, instantiates an RC circuit, plots the voltage across the capacitor<br />

and also extracts the time value when this voltage reaches 4V. The task t_simu runs the<br />

simulation of this circuit and prints the time value when the voltage across the capacitor reaches<br />

4V, calculated using two different methods.<br />

846<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Defining and Running Simulations<br />

.define_testbench tb_rc(v_extract=4)<br />

.param param_v = 5<br />

.param param_r = 10k<br />

.param param_c = 1m<br />

v1 1 0 param_v<br />

r1 1 2 param_r<br />

c1 2 0 param_c ic=0<br />

.tran 1 20 uic<br />

* Give a name to the waveform to be able to retrieve it from the task.<br />

.plot tran uc=v(2,0)<br />

* Give a label to the extract to be able to retrieve it from the task.<br />

.extract tran label=x_extract xthres(v(2,0), v_extract)<br />

.end_define_testbench<br />

.define_task t_simu<br />

set pv = 0<br />

set pr = 0<br />

set pc = 0<br />

set ptemp = 0<br />

set extract_res = 0<br />

set xval_res_vect = 0<br />

set xval_res = 0<br />

set uc_wave = 0<br />

/* Run the simulation and get some results (parameter values,<br />

extract value and waveform) inside local variables.*/<br />

if (simulation( \<br />

name="simu_rc/simu_rc.cir", \<br />

tb_rc(), \<br />

pv=@param_v, \<br />

pr=@param_r, \<br />

pc=@param_c, \<br />

ptemp=@temp, /* temp is indeed an implicitly defined parameter. */ \<br />

extract_res=@x_extract, \<br />

uc_wave=@uc \<br />

).simu_status == 0)<br />

/* Call xval on the waveform to see if we get the same result as<br />

the extract result. */<br />

xval_res_vect = xval(uc_wave, 4)<br />

/* xval_res_vect is a vector because there could be many values.<br />

Take the first one here. */<br />

xval_res = xval_res_vect[xval_res_vect.imin]<br />

fprint(stdout, "Simulation succeeded:\n")<br />

fprint(stdout, "with v=%.4eV, r=%.4eOhm, c=%.4eF, temp=%.4fC\n", pv,<br />

pr, pc, ptemp)<br />

fprint(stdout, "uc reaches 4V at %.4fs (.extract)\n", extract_res)<br />

fprint(stdout, "uc reaches 4V at %.4fs (.plot + xval)\n", xval_res)<br />

else<br />

fprint(stdout, "Simulation failed\n")<br />

endif<br />

.end_define_task<br />

.t_simu<br />

Eldo® User's Manual, 15.3 847


Eldo Control Language<br />

Defining and Running Simulations<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, “Defining and Running Simulations” on page 841, and the fprint<br />

function for more information on the concepts used in the example.<br />

The output is:<br />

Simulation succeeded:<br />

With v=5.0000e+00V, r=1.0000e+04Ohm, c=1.0000e-03F, temp=27.0000C<br />

uc reaches 4V at 16.0921s (.extract)<br />

uc reaches 4V at 16.0921s (.plot + xval)<br />

Related Topics<br />

Defining and Running Simulations<br />

Vector Simulation Results<br />

Simulation data results can be returned as vectors; there are two primary cases when this can<br />

happen:<br />

• When the keywords vect or catvect have been specified on an .EXTRACT or a .MEAS<br />

command.<br />

• When the netlist to simulate contains an .ALTER command.<br />

The first case is obvious: when the result of an .EXTRACT or a .MEAS command is an array of<br />

values, and this result is assigned to a task local variable, then this variable is a vector.<br />

Examples<br />

Example 1 (.MEAS vect)<br />

This example is similar to the previous one except that the input voltage is a rectangular pulse<br />

and that the task prints all time values when the voltage across the capacitor reaches 4V,<br />

calculated using a .MEAS vect command.<br />

848<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Defining and Running Simulations<br />

.define_testbench tb_rc(v_extract=4)<br />

v1 1 0 pulse (0 5 0 10n 10n 5 10)<br />

r1 1 2 10k<br />

c1 2 0 100u ic=0<br />

.tran 1 20 uic<br />

.plot tran v(1,0)<br />

.plot tran v(2,0)<br />

.meas tran vect label=cross_meas trig at 0 targ v(2,0) val=v_extract<br />

.end_define_testbench<br />

.define_task t_simu<br />

set meas_res [] = 0<br />

set i = 0<br />

/* Run the simulation and get the vector result. */<br />

if (simulation( \<br />

name="simu_rc/simu_rc.cir", \<br />

tb_rc(), \<br />

meas_res=@cross_meas).simu_status == 0)<br />

fprint(stdout, "Simulation succeeded:\n")<br />

fprint(stdout, "uv crosses 4V at: [ ")<br />

for (i=meas_res.imin; i


Eldo Control Language<br />

Defining and Running Simulations<br />

.define_testbench tb_rc(v_extract=4)<br />

.param param_r = 10k<br />

.step param param_r 10k 50k 10k<br />

v1 1 0 5<br />

r1 1 2 param_r<br />

c1 2 0 100u ic=0<br />

.tran 1 20 uic<br />

.plot tran v(1,0)<br />

.plot tran v(2,0)<br />

.extract tran catvect label=x_extract xthres(v(2,0), v_extract)<br />

* Need to do this extract to be able to get all the values of param_v<br />

* otherwise only the last one would be available if getting the value<br />

* of param_r instead of r_vect in the task..<br />

.extract tran catvect label=r_vect param_r<br />

.end_define_testbench<br />

.define_task t_simu<br />

set extract_res [] = 0<br />

set r_res [] = 0<br />

set i = 0<br />

/* Run the simulation and get the vector results. */<br />

if (simulation( \<br />

name="simu_rc/simu_rc.cir", \<br />

tb_rc(), \<br />

extract_res=@x_extract, r_res=@r_vect).simu_status == 0)<br />

fprint(stdout, "Simulation succeeded:\n")<br />

fprint(stdout, "uv crosses 4V at:\n")<br />

for (i=extract_res.imin; i


Eldo Control Language<br />

Defining and Running Simulations<br />

result in the netlist being simulated again, the different results of the .EXTRACT or .MEAS<br />

commands have to be saved inside a vector to be able to retrieve all the results. So if the netlist<br />

has two .ALTER commands then the size of the result vectors will be 3. The first value will be<br />

the result corresponding to the simulation of the netlist without any .ALTER, and the two other<br />

values will be the results corresponding to the simulation of the netlist with the two .ALTER<br />

commands.<br />

Note<br />

.PLOT and .PLOT commands combined with .ALTER commands will produce compound<br />

waveforms, not arrays of waveforms. Note also that if the simulation has succeeded but the<br />

.EXTRACT or .MEAS command failed because no value could be calculated, then the UNDEF<br />

value is stored inside the vector.<br />

Example 3 (.ALTER)<br />

This example is similar to the previous one except that a .ALTER command is used to modify<br />

the value of the resistance.<br />

Eldo® User's Manual, 15.3 851


Eldo Control Language<br />

Defining and Running Simulations<br />

.define_testbench tb_rc(v_extract=4)<br />

.param param_r = 10k<br />

v1 1 0 5<br />

r1 1 2 param_r<br />

c1 2 0 100u ic=0<br />

.tran 1 20 uic<br />

.plot tran v(1,0)<br />

.plot tran v(2,0)<br />

* x_extract will be a vector because of the .alter commands at the end of<br />

the netlist.<br />

.extract tran label=x_extract xthres(v(2,0), v_extract)<br />

.end_define_testbench<br />

.define_task t_simu<br />

set extract_res [] = 0<br />

set r_res [] = 0<br />

set i = 0<br />

/* Run the simulation and get the vector results. */<br />

if (simulation( \<br />

name="simu_rc/simu_rc.cir", \<br />

tb_rc(), \<br />

extract_res=@x_extract, r_res=@param_r).simu_status == 0)<br />

fprint(stdout, "Simulation succeeded:\n")<br />

fprint(stdout, "uv crosses 4V at:\n")<br />

for (i=extract_res.imin; i


Eldo Control Language<br />

Defining and Running Simulations<br />

Simulation succeeded:<br />

uv crosses 4V at:<br />

1.6121s when r=1.0000e+04Ohm<br />

8.0378s when r=5.0000e+04Ohm<br />

16.0921s when r=1.0000e+05Ohm<br />

UNDEF when r=1.5000e+05Ohm<br />

Related Topics<br />

Defining and Running Simulations<br />

Eldo® User's Manual, 15.3 853


Eldo Control Language<br />

Library of Functions for Tasks<br />

Library of Functions for Tasks<br />

Describes functions to be used inside a task.<br />

Command<br />

abs<br />

acos<br />

acosh<br />

acot<br />

acoth<br />

append<br />

asin<br />

asinh<br />

atan<br />

atan2<br />

atanh<br />

atof<br />

atoi<br />

avg<br />

beginval<br />

Table 18-3. Library of Functions for Tasks<br />

Description<br />

Returns the absolute value.<br />

Arc cosine function.<br />

Inverse hyperbolic cosine function.<br />

Arc cotangent function.<br />

Inverse hyperbolic cotangent function.<br />

Appends the content of the array array2 at the end of array<br />

array1. This function does not return any value: the array1<br />

argument is modified.<br />

Arc sine function.<br />

Inverse hyperbolic sine function.<br />

Arc tangent function.<br />

Returns the principal value of the arctangent of y/x,<br />

expressed in radians. To compute the value, the function<br />

uses the signs of both arguments to determine the quadrant.<br />

Inverse hyperbolic tangent function.<br />

Converts the string value VAL into a real.<br />

Converts the string value VAL into an integer.<br />

Returns the average value.<br />

Returns the first point of a waveform. Returns 0 if the<br />

waveform is empty, otherwise x_res and y_res are set with<br />

the coordinates of the first point of the waveform. If wf is a<br />

complex waveform, then y_res must be a complex number.<br />

bitof Returns 1 if bit b of the integer value of parameter a is 1.<br />

Returns 0 if bit b of the integer value of parameter a is 0.<br />

cat<br />

ceil<br />

Concatenates the content of the arrays given as arguments<br />

and returns the resulting array. This function does not<br />

modify the array arguments, it allocates and returns a new<br />

array. When possible, use append instead of cat for better<br />

performance.<br />

Ceiling rounding function.<br />

854<br />

Eldo® User's Manual, 15.3


Command<br />

compoundcontent<br />

conj<br />

cos<br />

cosh<br />

cot<br />

coth<br />

db<br />

derive<br />

drv<br />

exp<br />

fclose<br />

fft<br />

fgetc<br />

fgets<br />

floor<br />

fopen<br />

fprint<br />

Table 18-3. Library of Functions for Tasks (cont.)<br />

Description<br />

Eldo Control Language<br />

Library of Functions for Tasks<br />

Returns an array containing the waveforms that are part of<br />

the compound waveform wf.<br />

Returns the complex conjugate of the input complex number<br />

c.<br />

Cosine function.<br />

Hyperbolic cosine function.<br />

Cotangent function.<br />

Hyperbolic cotangent function.<br />

Returns value in decibels.<br />

Returns the derivative of a waveform at a single point.<br />

Computes the derivative of the input waveform (the result is<br />

a waveform).<br />

Exponent function.<br />

Closes the file represented by the file variable FILE.<br />

The Discrete Fourier Transform (DFT) is used to determine<br />

the frequency content of analog signals encountered in<br />

circuit simulation, which deals with sequences of time<br />

values. The fft() function uses the Fast Fourier Transform<br />

(FFT) method for calculating the DFT.<br />

Returns the next character from the file represented by the<br />

file variable FILE, or EOF if the end of the file has been<br />

reached.<br />

Returns the next characters from the file represented by the<br />

file variable FILE, or EOF if the end of the file has been<br />

reached. It has the same behavior as the C fgets function: the<br />

function stops reading when NB_CHARS characters have<br />

been read or if a \n character is read (in which case, \n is the<br />

last character of the returned string).<br />

Floor rounding function.<br />

Returns a file variable if the file whose path is FILE_PATH<br />

has been successfully opened; otherwise, the program exits<br />

printing the optional message DIE_MESSAGE.<br />

Prints a formatted string in the file represented by the file<br />

variable FILE; this is the same behavior as the C fprintf<br />

function.<br />

Eldo® User's Manual, 15.3 855


Eldo Control Language<br />

Library of Functions for Tasks<br />

Command<br />

frexp<br />

fscan<br />

hypot<br />

ifft<br />

imag<br />

imax<br />

imin<br />

int<br />

integ<br />

integral<br />

intersect<br />

isarray<br />

iscompound<br />

kurt<br />

ldexp<br />

limit<br />

log<br />

Table 18-3. Library of Functions for Tasks (cont.)<br />

Description<br />

Breaks a floating-point number into a normalized fraction<br />

and an integral power of 2. Returns an array of 2 elements,<br />

the first element being the normalized fraction and the<br />

second element being the integral power of 2.<br />

Returns the number of elements that have been parsed. It has<br />

the same behavior as the C fscanf function.<br />

Computes the length of the hypotenuse of a right angle<br />

triangle.<br />

Calculates the inverse Fast Fourier Transform of the input<br />

waveform.<br />

Imaginary part function.<br />

Returns the index of the maximum value of the elements of<br />

the array array. If istart and istop are specified, this function<br />

applies to the part of array beginning at index istart and<br />

ending at index istop.<br />

Returns the index of the minimum value of the elements of<br />

the array array. If istart and istop are specified, this function<br />

applies to the part of array beginning at index istart and<br />

ending at index istop.<br />

Integer value of VAL.<br />

Returns the definite integral value with upper and lower<br />

limits of a waveform.<br />

Computes the indefinite integral (also known as antiderivative)<br />

of the input waveform (the result is a waveform).<br />

Returns a vector containing all of the intersection points of<br />

two waveforms. If the slopes are supplied, the result will be<br />

collected only when the waveforms have the specified<br />

slopes.<br />

Returns 1 if var is an array, 0 otherwise.<br />

Returns 1 if wf is a compound waveform, 0 otherwise.<br />

Returns the fourth standardized moment also known as<br />

sample kurtosis (unbiased value if bias is 0, biased value<br />

otherwise) of the elements of the array array.<br />

Returns the value x multiplied by 2 raised to the power y<br />

(computes the quantity: x × 2y).<br />

Returns b if a < b, returns c if a > c, returns a otherwise.<br />

Natural logarithm function.<br />

856<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

Command<br />

log10<br />

magnitude<br />

max<br />

mcconv<br />

mcnbench<br />

min<br />

mod<br />

modf<br />

mptpcomplex<br />

nextval<br />

ongrid<br />

phase<br />

pow<br />

pow_10<br />

pwr<br />

real<br />

Table 18-3. Library of Functions for Tasks (cont.)<br />

Description<br />

Decimal (base 10) logarithm function.<br />

Returns the absolute magnitude.<br />

Returns the maximum value.<br />

Returns 1 or 0 to indicate convergence of the Monte Carlo<br />

process for the elements of the array array.<br />

Returns the number of non-UNDEF values among the<br />

elements of the array array. If istart and istop are specified,<br />

this function applies to the part of array beginning at index<br />

istart and ending at index istop.<br />

Returns the minimum value.<br />

Modulo operator. Floating-point remainder value function<br />

of dividing x by y. Returns the value x − i×y, where i is the<br />

quotient of x/y, rounded towards zero to an integer. mod<br />

will exit properly if y is equal to 0.<br />

Breaks the argument x into integral and fractional parts,<br />

each of which has the same sign as the argument. Returns an<br />

array of two elements, the first element being the fractional<br />

part and the second element being the integral part.<br />

Constructs a complex number from its magnitude m and its<br />

phase in radians p.<br />

Returns the next point of a waveform. Returns 0 if there are<br />

no more points in the waveform, otherwise x_res and y_res<br />

are set with the coordinates of the next point of the<br />

waveform.<br />

Returns 1 if value=offset + (k×step) where k is an integer<br />

value. Otherwise it returns 0. The default value of offset is<br />

0.0.<br />

Returns the phase.<br />

Returns the value of VAL1 to the power of the integer part<br />

of VAL2. pow will exit properly if VAL1 is a equal to 0 and<br />

VAL2 is negative.<br />

Computes the value of 10 raised to the power of wf: 10wf<br />

(the result is a waveform).<br />

Returns the absolute value of VAL1, raised to the power of<br />

VAL2, with the sign of VAL1. pwr will exit properly if<br />

VAL1 is a equal to 0 and VAL2 is negative.<br />

Real part function.<br />

Eldo® User's Manual, 15.3 857


Eldo Control Language<br />

Library of Functions for Tasks<br />

Command<br />

relation<br />

ritocomplex<br />

rms<br />

rms_ac<br />

rms_noise<br />

rms_tran<br />

round<br />

sgn<br />

sign<br />

sin<br />

sinh<br />

size<br />

skew<br />

sprint<br />

sqr<br />

sqrt<br />

sscan<br />

std<br />

strtok<br />

sum<br />

Table 18-3. Library of Functions for Tasks (cont.)<br />

Description<br />

Generates a waveform from a point-by-point relational<br />

expression.<br />

Constructs a complex number from its real part r and its<br />

imaginary part i.<br />

Returns the root mean square value of a waveform.<br />

Returns the root mean square value of a waveform for AC<br />

analysis.<br />

Returns the root mean square value of a waveform for noise<br />

analysis.<br />

Returns the root mean square value of a waveform for<br />

transient analysis.<br />

Returns value of VAL rounded to the nearest integer.<br />

Returns the signum of VAL: +1 if VAL>0, 0 if VAL=0, -1 if<br />

VAL=0, -1 if<br />

VAL1


Command<br />

system<br />

tan<br />

tanh<br />

trunc<br />

var<br />

wadd_data_enum_value<br />

wadd_scale<br />

wclose<br />

wcreate_data_type<br />

wcreate_scale_table<br />

wcreate_wave<br />

wget<br />

wftoascii<br />

wftodata<br />

wmkfolder<br />

wopen<br />

Table 18-3. Library of Functions for Tasks (cont.)<br />

Description<br />

Eldo Control Language<br />

Library of Functions for Tasks<br />

Executes the STR_CMD shell command. If no other<br />

argument is passed, the result of the command is displayed<br />

on the standard output, otherwise the result is stored in the<br />

string STR_RES, which can be parsed to get the result.<br />

Tangent function.<br />

Hyperbolic tangent function.<br />

Truncated value of VAL (integer part of real value).<br />

Returns the variance (unbiased value) of the elements of the<br />

array array.<br />

This function must be used to define enumeration values for<br />

an enumerated data type created with wcreate_data_type.<br />

This function is used to add sub-units to a scale table created<br />

with wcreate_scale_table.<br />

Saves (if the .wdb file was opened in write mode) and closes<br />

the .wdb file whose identifier is wdbId.<br />

If the appropriate data type does not exist, it is possible to<br />

create it using this function.<br />

If the appropriate scale table does not exist, then it can be<br />

created with this function.<br />

Creates a new waveform inside the specified .wdb file, and<br />

returns a waveform variable to, for example, call postprocessing<br />

functions on it.<br />

Reads the waveform named wave1 located at the folder<br />

folder inside the .wdb file whose identifier is wdbId.<br />

Dumps a waveform in a text file.<br />

Returns the datapoints of a waveform in a matrix. Its first<br />

line is a vector containing the X values and its second line is<br />

a vector containing the Y values.<br />

This function creates a folder folder in the .wdb file whose<br />

identifier is wdbId.<br />

This function can be used to open .wdb files. The .wdb file<br />

must already exist to be opened in read mode. In write<br />

mode, it will be created if it does not exist, or overwritten if<br />

it already existed. This function returns a file identifier used<br />

in the next function to identify the .wdb file.<br />

Eldo® User's Manual, 15.3 859


Eldo Control Language<br />

Library of Functions for Tasks<br />

Command<br />

wsave<br />

wset_values<br />

xdown<br />

xmax<br />

xmin<br />

xofmax<br />

xofmin<br />

xup<br />

xval<br />

xwave<br />

yval<br />

Table 18-3. Library of Functions for Tasks (cont.)<br />

Description<br />

This function saves the waveform which the variable wave<br />

points to inside the folder folder in the .wdb file whose<br />

identifier is wdbId.<br />

This function can be used to set points to a waveform<br />

created with the wcreate_wave function if the x and y<br />

vectors were not given at that time. It can also be used to<br />

add new points to the waveform.<br />

Returns a vector containing all the X values where a<br />

waveform falls below the given Y level with a negative<br />

slope.<br />

Returns the maximum X value where a waveform is<br />

defined.<br />

Returns the minimum X value where a waveform is defined.<br />

Returns a vector containing all the X values at the maximum<br />

(or maxima) of a waveform.<br />

Returns a vector containing all of the X values at the<br />

minimum (or minima) of a waveform.<br />

Returns a vector containing all the X values where a<br />

waveform rises above the given Y level with a positive<br />

slope.<br />

Returns in a vector all the X values at the given Y level of<br />

the waveform wf. If the slope is supplied, the result will be<br />

collected only when the waveform has the specified slope.<br />

Interpolation is applied.<br />

Creates a new waveform with Y values identical to X values<br />

(the result is a waveform).<br />

Returns the Y value at a given X coordinate of a waveform.<br />

Interpolation is applied. If wf is a complex waveform, the<br />

result is a complex number.<br />

860<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

abs<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Returns the absolute value.<br />

Usage<br />

Mathematical Function<br />

abs(VAL)<br />

Waveform Function<br />

abs(wf)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

Return Values<br />

Mathematical Function<br />

Returns the absolute value of VAL.<br />

Waveform Function<br />

Returns the absolute value of the waveform input argument (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 861


Eldo Control Language<br />

Library of Functions for Tasks<br />

acos<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Arc cosine function.<br />

Usage<br />

Mathematical Function<br />

acos(VAL)<br />

unsafe_acos(VAL)<br />

Waveform Function<br />

acos(wf)<br />

acos(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Arc cosine of VAL. acos will exit properly if VAL is not included in [-1;1].<br />

Waveform Function<br />

Computes the principal value of the arc cosine of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

862<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

acosh<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Inverse hyperbolic cosine function.<br />

Usage<br />

Mathematical Function<br />

acosh(VAL)<br />

unsafe_acosh(VAL)<br />

Waveform Function<br />

acosh(wf)<br />

acosh(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Inverse hyperbolic cosine of VAL. acosh will exit properly if VAL is less than 1.<br />

Waveform Function<br />

Inverse hyperbolic cosine of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

Eldo® User's Manual, 15.3 863


Eldo Control Language<br />

Library of Functions for Tasks<br />

acot<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Arc cotangent function.<br />

Usage<br />

Mathematical Function<br />

acot(VAL)<br />

unsafe_acot(VAL)<br />

Waveform Function<br />

acot(wf)<br />

acot(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Arc cotangent of VAL.<br />

Waveform Function<br />

Arc cotangent of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

864<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

acoth<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Inverse hyperbolic cotangent function.<br />

Usage<br />

Mathematical Function<br />

acoth(VAL)<br />

unsafe_acoth(VAL)<br />

Waveform Function<br />

acoth(wf)<br />

acoth(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Inverse hyperbolic cotangent of VAL. acoth will exit properly if VAL is included in [-1;1].<br />

Waveform Function<br />

Inverse hyperbolic cotangent of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

Eldo® User's Manual, 15.3 865


Eldo Control Language<br />

Library of Functions for Tasks<br />

append<br />

Task function category: Functions Operating on Arrays<br />

Appends the content of the array array2 at the end of array array1. This function does not return<br />

any value: the array1 argument is modified.<br />

Usage<br />

append(array1 {, arrayn}*)<br />

Arguments<br />

• array1<br />

First array.<br />

• arrayn<br />

N th array.<br />

Examples<br />

set a[]={1,2}<br />

set b[]={3,4,5,6}<br />

set i=0<br />

append(a,b)<br />

for (i=a.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

asin<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Arc sine function.<br />

Usage<br />

Mathematical Function<br />

asin(VAL)<br />

unsafe_asin(VAL)<br />

Waveform Function<br />

asin(wf)<br />

asin(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Arc sine of VAL. asin will exit properly if VAL is not included in [-1;1].<br />

Waveform Function<br />

Computes the principal value of the arc sine of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

Eldo® User's Manual, 15.3 867


Eldo Control Language<br />

Library of Functions for Tasks<br />

asinh<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Inverse hyperbolic sine function.<br />

Usage<br />

Mathematical Function<br />

asinh(VAL)<br />

unsafe_asinh(VAL)<br />

Waveform Function<br />

asinh(wf)<br />

asinh(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Inverse hyperbolic sine of VAL.<br />

Waveform Function<br />

Inverse hyperbolic sine of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

868<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

atan<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Arc tangent function.<br />

Usage<br />

Mathematical Function<br />

atan(VAL)<br />

Waveform Function<br />

atan(wf)<br />

atan(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Arc tangent of VAL.<br />

Waveform Function<br />

The principal value of the arc tangent of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 869


Eldo Control Language<br />

Library of Functions for Tasks<br />

atan2<br />

Task function category: Mathematical Functions<br />

Returns the principal value of the arctangent of y/x, expressed in radians. To compute the value,<br />

the function uses the signs of both arguments to determine the quadrant.<br />

Usage<br />

atan2(y, x)<br />

Arguments<br />

• y<br />

y value.<br />

• x<br />

x value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

870<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

atanh<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Inverse hyperbolic tangent function.<br />

Usage<br />

Mathematical Function<br />

atanh(VAL)<br />

Waveform Function<br />

atanh(wf)<br />

atanh(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Inverse hyperbolic tangent of VAL. atanh will exit properly if VAL is not included in [-1;1].<br />

Waveform Function<br />

The inverse hyperbolic tangent of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 871


Eldo Control Language<br />

Library of Functions for Tasks<br />

atof<br />

Task function category: Functions Operating on Strings<br />

Converts the string value VAL into a real.<br />

Usage<br />

atof(VAL)<br />

Arguments<br />

• VAL<br />

String value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

atoi<br />

872<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

atoi<br />

Task function category: Functions Operating on Strings<br />

Converts the string value VAL into an integer.<br />

Usage<br />

atoi(VAL)<br />

Arguments<br />

• VAL<br />

String value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

atof<br />

Eldo® User's Manual, 15.3 873


Eldo Control Language<br />

Library of Functions for Tasks<br />

avg<br />

Task function category: Functions Operating on Arrays, Functions Operating on Waveforms<br />

Returns the average value.<br />

Usage<br />

Array Function<br />

avg(array [, istart, istop])<br />

Waveform Function<br />

avg(wf)<br />

avg(wf, x_start, x_end)<br />

Arguments<br />

Array Function<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Array Function<br />

Returns the average value of the elements of the array array. If istart and istop are specified, this<br />

function applies to the part of array beginning at index istart and ending at index istop.<br />

Waveform Function<br />

Returns the average value of a waveform which is computed as:<br />

874<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 875


Eldo Control Language<br />

Library of Functions for Tasks<br />

beginval<br />

Task function category: Functions Operating on Waveforms<br />

Returns the first point of a waveform. Returns 0 if the waveform is empty, otherwise x_res and<br />

y_res are set with the coordinates of the first point of the waveform. If wf is a complex<br />

waveform, then y_res must be a complex number.<br />

Usage<br />

beginval(wf, x_res, y_res)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_res<br />

Variable name for X coordinate of first point in waveform. Must be a double-precision<br />

floating-point variable otherwise an error is generated.<br />

• y_res<br />

Variable name for Y coordinate of first point in waveform. Must be a double-precision<br />

floating-point variable otherwise an error is generated.<br />

Related Topics<br />

Library of Functions for Tasks<br />

nextval<br />

876<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

bitof<br />

Task function category: Mathematical Functions<br />

Returns 1 if bit b of the integer value of parameter a is 1. Returns 0 if bit b of the integer value<br />

of parameter a is 0.<br />

Usage<br />

bitof(a, b)<br />

Arguments<br />

• a<br />

a value.<br />

• b<br />

b value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 877


Eldo Control Language<br />

Library of Functions for Tasks<br />

cat<br />

Task function category: Functions Operating on Arrays<br />

Concatenates the content of the arrays given as arguments and returns the resulting array. This<br />

function does not modify the array arguments, it allocates and returns a new array. When<br />

possible, use append instead of cat for better performance.<br />

Usage<br />

cat(array1 {, arrayn}*)<br />

Arguments<br />

• array1<br />

First array.<br />

• arrayn<br />

n τη array.<br />

Examples<br />

set a[]={1,2}<br />

set b[]={3,4,5,6}<br />

set c[]={7}<br />

set d = cat(a,b,c)<br />

set i = 0<br />

for (i=d.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

ceil<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Ceiling rounding function.<br />

Usage<br />

Mathematical Function<br />

ceil(VAL)<br />

Waveform Function<br />

ceil(wf)<br />

ceil(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Returns the smallest integer value not less than VAL. This is known as rounding up. For<br />

example ceil(1.25) returns 2.0 and ceil(-1.25) returns -1.0.<br />

Waveform Function<br />

Computes the smallest integral value not less than each data point of a waveform wf (the result<br />

is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

floor<br />

Eldo® User's Manual, 15.3 879


Eldo Control Language<br />

Library of Functions for Tasks<br />

compoundcontent<br />

Task function category: Functions Operating on Compound Waveforms<br />

Returns an array containing the waveforms that are part of the compound waveform wf.<br />

Usage<br />

compoundcontent(wf)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

Examples<br />

Example:<br />

set w_array[] = 0<br />

set w_compound = 0<br />

set i = 0<br />

set w = 0<br />

if (simulation(tb_step(),<br />

+ w_compound=@w_tran).simu_status == 0)<br />

w_array = compoundcontent(w_compound)<br />

for (i=w_array.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

.option set_<strong>eldo</strong>_cl_verbose=0<br />

.define_testbench tb_rc<br />

.param period=10<br />

.param pw=1<br />

.step param pw 1 period 1<br />

v1 1 0 pulse (0 5 0 10n 10n 'pw' 'period')<br />

r1 1 2 1k<br />

c1 2 0 1m ic=0<br />

.tran 1 20 uic<br />

.plot tran uc=v(2,0)<br />

.extract tran catvect label=pw_vect pw<br />

.end_define_testbench<br />

* First task using directly the waveform functions on the compound<br />

waveform (more complicated)<br />

.define_task t_simu_rc_compound_arg<br />

set compound_uc = 0<br />

set pw [] = 0<br />

set i = 0<br />

set j = 0<br />

set res_xup4 [] = 0<br />

if (simulation(name="simu_rc/simu_rc.cir", tb_rc(), \<br />

compound_uc=@uc, pw=@pw_vect).simu_status == 0)<br />

/* compound_uc is a compound waveform and pw is the array containing<br />

the different values of the 'pw' parameter. */<br />

res_xup4 = xup(compound_uc, 4)<br />

/* res_xup4 is indeed a matrix. res_xup4[i] is the array containing the<br />

time values where 'uc' rises above 4V when the 'pw' parameter has<br />

the value pw[i]. */<br />

fprint(stdout, "\nExample with compound argument\nuc rises above 4V<br />

at:\n")<br />

/* In the loops below, i is the index of the waveform in the compound<br />

and j iterates through the result values of xup applied to the<br />

waveform with index i of compound_uc. */<br />

for (i=res_xup4.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

if (simulation(name="simu_rc/simu_rc.cir", tb_rc(), \<br />

compound_uc=@uc, pw=@pw_vect).simu_status == 0)<br />

/* Get the waveforms contained in the compound: uc_arr will be an array<br />

of waveforms. */<br />

uc_arr = compoundcontent(compound_uc)<br />

fprint(stdout, "\nExample with compoundcontent\nuc rises above 4V<br />

at:\n")<br />

for (i=uc_arr.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

The only exceptions are the functions xmin and xmax. Indeed, in most of the cases, all<br />

waveforms composing a compound waveform are defined on the same time/frequency interval,<br />

so xmin and xmax will almost always return a single real value instead of an array of identical<br />

values (xmin and xmax will return an array only if the values are not the same).<br />

Example:<br />

Adding the following lines in the task t_simu_rc_compound_arg above:<br />

fprint(stdout, "xmin(compound_uc)=%.4f\n", xmin(compound_uc))<br />

fprint(stdout, "xmax(compound_uc)=%.4f\n", xmax(compound_uc))<br />

is valid and will produce the output:<br />

xmin(compound_uc)=0.0000<br />

xmax(compound_uc)=20.000<br />

Related Topics<br />

Library of Functions for Tasks<br />

iscompound<br />

Testbenches<br />

Tasks<br />

Variables<br />

Flow Control Statements<br />

Defining and Running Simulations<br />

fprint<br />

Eldo® User's Manual, 15.3 883


Eldo Control Language<br />

Library of Functions for Tasks<br />

conj<br />

Task function category: Mathematical Functions Operating on Complex Numbers<br />

Returns the complex conjugate of the input complex number c.<br />

Usage<br />

conj(c)<br />

Arguments<br />

• c<br />

Input complex number.<br />

Related Topics<br />

Library of Functions for Tasks<br />

884<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

cos<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Cosine function.<br />

Usage<br />

Mathematical Function<br />

cos(VAL)<br />

Waveform Function<br />

cos(wf)<br />

cos(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Cosine of VAL.<br />

Waveform Function<br />

Cosine of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 885


Eldo Control Language<br />

Library of Functions for Tasks<br />

cosh<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Hyperbolic cosine function.<br />

Usage<br />

Mathematical Function<br />

cosh(VAL)<br />

Waveform Function<br />

cosh(wf)<br />

cosh(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Hyperbolic cosine of VAL.<br />

Waveform Function<br />

The principal value of the arc cosine of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

886<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

cot<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Cotangent function.<br />

Usage<br />

Mathematical Function<br />

cot(VAL)<br />

unsafe_cot(VAL)<br />

Waveform Function<br />

cot(wf)<br />

cot(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Cotangent of VAL. cot will exit properly if VAL is a multiple of pi.<br />

Waveform Function<br />

Cotangent of wf (the result is a waveform). Cotangent is defined as the reciprocal of the tangent,<br />

that is:<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

Eldo® User's Manual, 15.3 887


Eldo Control Language<br />

Library of Functions for Tasks<br />

coth<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Hyperbolic cotangent function.<br />

Usage<br />

Mathematical Function<br />

coth(VAL)<br />

unsafe_coth(VAL)<br />

Waveform Function<br />

coth(wf)<br />

coth(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Hyperbolic cotangent of VAL. coth will exit properly if VAL is equal to 0.<br />

Waveform Function<br />

The hyperbolic cotangent of wf (the result is a waveform). Hyperbolic cotangent is defined as<br />

the reciprocal of the hyperbolic tangent, that is:<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

888<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

db<br />

Task function category: Mathematical Functions, Mathematical Functions Operating on<br />

Complex Numbers, Functions Operating on Waveforms<br />

Returns value in decibels.<br />

Usage<br />

Mathematical Function<br />

db(VAL)<br />

unsafe_db(VAL)<br />

Complex Number Function<br />

db(c)<br />

unsafe_db(c)<br />

Waveform Function<br />

db(wf)<br />

db(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Complex Number Function<br />

• c<br />

Input complex number.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Decibel of VAL (20×log10(VAL)). db will exit properly if VAL is negative or null.<br />

Converts the magnitude of the complex number c to decibels. db will exit properly if c is (0, 0).<br />

Eldo® User's Manual, 15.3 889


Eldo Control Language<br />

Library of Functions for Tasks<br />

Complex Number Function<br />

Converts the magnitude of the complex number c to decibels. db will exit properly if c is (0, 0).<br />

Waveform Function<br />

Converts the magnitude data of the input complex waveform wf to decibels (the result is a<br />

waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

890<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

derive<br />

Task function category: Functions Operating on Waveforms<br />

Returns the derivative of a waveform at a single point.<br />

Usage<br />

derive(wf, at_x)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• at_x<br />

X coordinate.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

integ<br />

drv<br />

integral<br />

Eldo® User's Manual, 15.3 891


Eldo Control Language<br />

Library of Functions for Tasks<br />

drv<br />

Task function category: Functions Operating on Waveforms<br />

Computes the derivative of the input waveform (the result is a waveform).<br />

Usage<br />

drv(wf)<br />

drv(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Related Topics<br />

Library of Functions for Tasks<br />

integral<br />

892<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

exp<br />

Task function category: Mathematical Functions, Mathematical Functions Operating on<br />

Complex Numbers, Functions Operating on Waveforms<br />

Exponent function.<br />

Usage<br />

Mathematical Function<br />

exp(VAL)<br />

unsafe_exp(VAL)<br />

Complex Number Function<br />

exp(c)<br />

unsafe_exp(c)<br />

Waveform Function<br />

exp(wf)<br />

exp(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Complex Number Function<br />

• c<br />

Input complex number.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Computes the value of e raised to the power of VAL: e VAL . exp will output a linear<br />

extrapolation of the result if VAL is more than 80.<br />

Eldo® User's Manual, 15.3 893


Eldo Control Language<br />

Library of Functions for Tasks<br />

Complex Number Function<br />

Computes the value of e raised to the power of complex number c: e c . exp will output a linear<br />

extrapolation of the result if real(c) is more than 80.<br />

Waveform Function<br />

Computes the value of e raised to the power of waveform wf: e wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

pow_10<br />

Numbers<br />

894<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

fclose<br />

Task function category: Functions Operating on Files<br />

Closes the file represented by the file variable FILE.<br />

Usage<br />

fclose(FILE)<br />

Arguments<br />

• FILE<br />

File variable.<br />

Related Topics<br />

Library of Functions for Tasks<br />

fopen<br />

Eldo® User's Manual, 15.3 895


Eldo Control Language<br />

Library of Functions for Tasks<br />

fft<br />

Task function category: Functions Operating on Waveforms<br />

The Discrete Fourier Transform (DFT) is used to determine the frequency content of analog<br />

signals encountered in circuit simulation, which deals with sequences of time values. The fft()<br />

function uses the Fast Fourier Transform (FFT) method for calculating the DFT.<br />

Usage<br />

fft(wf)<br />

fft(wf, time_start)<br />

fft(wf, time_start, time_stop)<br />

fft(wf, time_start, time_stop, sampling_frequency)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points,<br />

sampling)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points,<br />

sampling, padding)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points,<br />

sampling, padding, averaging)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points,<br />

sampling, padding, averaging, windowing)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points,<br />

sampling, padding, averaging, windowing, windowing_arg)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points,<br />

sampling, padding, averaging, windowing, windowing_arg,<br />

reference_frequency)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points,<br />

sampling, padding, averaging, windowing, windowing_arg,<br />

reference_frequency, minimum_frequency)<br />

fft(wf, time_start, time_stop, sampling_frequency, number_of_points,<br />

sampling, padding, averaging, windowing, windowing_arg,<br />

reference_frequency, minimum_frequency, maximum_frequency)<br />

Arguments<br />

• wf<br />

Specifies the input waveform name.<br />

• time_start<br />

Specifies the start time of the input waveform.<br />

• time_stop<br />

Specifies the stop time of the input waveform.<br />

• sampling_frequency<br />

Specifies the sampling frequency of the signal.<br />

• number_of_points<br />

Specifies the number of sampling points.<br />

896<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

• sampling<br />

Specifies the method of computing the sampled data. Valid values are “No Sampling” or<br />

“Interpolation”.<br />

• padding<br />

Activates data padding to pad the input data with zeros, before or after the input data set.<br />

Valid values are: “No Padding”, “Padding Right”, “Padding Left” or “Padding Left and<br />

Right”. The input parameter will be verified by the algorithm and changed if necessary.<br />

• averaging<br />

Specifies whether you want to take an average on the raw data to reduce noise and smooth<br />

the frequency domain waveform. Specify 1 to turn this on, or 0 to not modify the raw data<br />

from calculation.<br />

• windowing<br />

Applies a windowing function from a selection of windows. Valid values are:<br />

“Rectangular”, “Hamming”, “Hanning”, “Parzen”, “Welch”, “Blackman”, “Blackman-<br />

Harris”, “Bartlett”, “Kaiser”, “Klein” or “Dolph Chebyshev”.<br />

• windowing_arg<br />

Specifies the alpha or beta value that is required by “Hanning”, “Kaiser”, and “Dolph<br />

Chebyshev” windows.<br />

• reference_frequency<br />

Adjusts the results around the y-axis so that the point for the specified frequency is 0.0.<br />

• minimum_frequency<br />

Specifies the starting frequency used inside the Fast Fourier Transform result window.<br />

• maximum_frequency<br />

Specifies the last frequency used inside the Fast Fourier Transform result window.<br />

Description<br />

For symmetric windows, the parameters above satisfy the following equation:<br />

((number_of_points) / sampling_frequency) = time_stop - time_start.<br />

For periodic windows, the parameters above satisfy the following equation:<br />

((number_of_points-1) / sampling_frequency) = time_stop - time_start.<br />

For “Hanning”, symmetric window shapes are preferred when using a Hanning window in FIR<br />

filter design. Periodic window shapes are preferred when using a Hanning window in spectral<br />

analysis. This is because the Discrete Fourier Transform assumes periodic extension of the<br />

input vector. A periodic Hanning window is obtained by constructing a symmetric window and<br />

removing the last sample.<br />

Eldo® User's Manual, 15.3 897


Eldo Control Language<br />

Library of Functions for Tasks<br />

Related Topics<br />

Library of Functions for Tasks<br />

ifft<br />

898<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

fgetc<br />

Task function category: Functions Operating on Files<br />

Returns the next character from the file represented by the file variable FILE, or EOF if the end<br />

of the file has been reached.<br />

Usage<br />

fgetc(FILE)<br />

Arguments<br />

• FILE<br />

File variable.<br />

Related Topics<br />

Library of Functions for Tasks<br />

fgets<br />

Eldo® User's Manual, 15.3 899


Eldo Control Language<br />

Library of Functions for Tasks<br />

fgets<br />

Task function category: Functions Operating on Files<br />

Returns the next characters from the file represented by the file variable FILE, or EOF if the end<br />

of the file has been reached. It has the same behavior as the C fgets function: the function stops<br />

reading when NB_CHARS characters have been read or if a \n character is read (in which case,<br />

\n is the last character of the returned string).<br />

Usage<br />

fgets(FILE, NB_CHARS)<br />

Arguments<br />

• FILE<br />

File variable.<br />

• NB_CHARS<br />

Number of characters.<br />

Examples<br />

Example 1:<br />

.define_task read_file<br />

set myfile = NULL<br />

set s = ""<br />

myfile = fopen ("./hello.txt", "r")<br />

while(1)<br />

s = fgets(myfile, 200)<br />

if (s == EOF)<br />

break<br />

else<br />

printf(stdout, "%s", s)<br />

endif<br />

endwhile<br />

fclose (myfile)<br />

.end_define_task<br />

Example 2:<br />

900<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

.define_task parse_file<br />

/* This example shows how to parse a file 'corners.txt' formatted<br />

this way:<br />

vdd=1.0, temp=25, corner=tt<br />

vdd=1.1, temp=75, corner=ss<br />

vdd=1.2, temp=100, corner=ff<br />

*/<br />

set line = ""<br />

set tokens [] = ""<br />

set vdd = 0<br />

set temp = 0<br />

set corner = ""<br />

set myfile = fopen("./corners.txt", "r")<br />

while(1)<br />

line = fgets(myfile, 1000)<br />

if (line == EOF)<br />

break<br />

else<br />

/* Itemize the line into the "tokens[]" vector of strings. Don't<br />

forget to add '\n' into the list of separators; indeed fgets doesn't<br />

remove it from the line it returns. */<br />

tokens = strtok(line, "=, \t\n");<br />

vdd = atof(tokens[tokens.imin + 1])<br />

temp = atoi (tokens[tokens.imin + 3])<br />

corner = tokens[tokens.imin + 5]<br />

fprint(stdout, "Parsed line: vdd=%.4e, temp=%d, corner=%s\n", vdd,<br />

temp, corner)<br />

endif<br />

endwhile<br />

fclose(myfile)<br />

.end_define_task<br />

Related Topics<br />

Library of Functions for Tasks<br />

fgetc<br />

fprint<br />

fclose<br />

Tasks<br />

Variables<br />

Flow Control Statements<br />

Eldo® User's Manual, 15.3 901


Eldo Control Language<br />

Library of Functions for Tasks<br />

floor<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Floor rounding function.<br />

Usage<br />

Mathematical Function<br />

floor(VAL)<br />

Waveform Function<br />

floor(wf)<br />

floor(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Returns the largest integer value not greater than VAL. This is known as rounding down. For<br />

example floor(1.25) returns 1.0 and floor(-1.25) returns -2.0.<br />

Waveform Function<br />

Computes the largest integral value not greater than each data point of a waveform wf (the result<br />

is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

ceil<br />

902<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

fopen<br />

Task function category: Functions Operating on Files<br />

Returns a file variable if the file whose path is FILE_PATH has been successfully opened;<br />

otherwise, the program exits printing the optional message DIE_MESSAGE.<br />

Usage<br />

fopen(FILE_PATH, MODE [, DIE_MESSAGE])<br />

Arguments<br />

• FILE_PATH<br />

Path to file.<br />

• MODE<br />

MODE selects the open mode: "w" for write, "r" for read, or "a" for append (note that it is a<br />

string). The file must already exist to be opened in read mode. In write mode, it will be<br />

created if it does not exist, or overwritten if it already existed. In append mode, if the file<br />

already exists it will be appended to.<br />

• DIE_MESSAGE<br />

Optional. Function exit message text.<br />

Examples<br />

If you want to append the same file multiple times during the execution of many tasks, instead<br />

of using multiple fopen/fclose functions it is more efficient to keep the file always open and to<br />

pass the file variable as a task parameter. To do so, it is necessary to define a main task that will<br />

open the file and then call the subtasks with the file variable as a parameter, for example:<br />

Eldo® User's Manual, 15.3 903


Eldo Control Language<br />

Library of Functions for Tasks<br />

.define_task main_task<br />

set myfile = NULL<br />

// Open the "jitter.results" file here:<br />

myfile = fopen("jitter.results", "w", \<br />

"cannot open jitter.results.\n")<br />

period_jitter(corner="tt", myfile=myfile)<br />

period_jitter(corner="ss", myfile=myfile)<br />

period_jitter(corner="ff", myfile=myfile)<br />

// Close the "jitter.results" file :<br />

fclose(myfile)<br />

.end_define_task<br />

.define_task period_jitter(corner="tt", myfile=stdout)<br />

/* Instead of calling here fopen("jitter.results", "w") during the<br />

* first call to this task to overwrite the file and then<br />

* fopen("jitter.results", "a") to append it,<br />

* it is much more efficient to move the call to fopen into the<br />

* main task and to use here the file variable myfile to print<br />

* some data in this file. */<br />

...<br />

simulation(...)<br />

fprint(myfile, "...")<br />

..<br />

.end_define_task<br />

Related Topics<br />

Library of Functions for Tasks<br />

fclose<br />

904<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

fprint<br />

Task function category: Functions Operating on Files<br />

Prints a formatted string in the file represented by the file variable FILE; this is the same<br />

behavior as the C fprintf function.<br />

Usage<br />

fprint(FILE, FORMAT [,ARG]*)<br />

Arguments<br />

• FILE<br />

File variable.<br />

• FORMAT<br />

FORMAT is a string that contains the text to be formatted. This string can contain format<br />

tags. A format tag must follow this specification:<br />

%[flags][width][.precision]specifier<br />

where:<br />

specifier is:<br />

c for a character<br />

d or i or u for an integer number<br />

e or E for a double precision floating point number in scientific notation<br />

f for a double-precision floating-point number; the default precision is 6 digits<br />

g or G to use the shorter of %f or %e or %E<br />

s for a string<br />

x or X for an hexadecimal integer number<br />

% to print the % character<br />

flags is:<br />

- to force left justification within the given width<br />

+ to force the sign to be always written<br />

“ ” to insert a space before a number for which no sign is written<br />

# to specify if 0x or 0X must be written before a not null hexadecimal number or to<br />

specify if “.” must be always written for a double-precision floating-point number<br />

0 to insert zeroes instead of spaces before a number<br />

width is the minimum number of characters to be displayed (spaces are added if<br />

necessary)<br />

precision is the minimum number of digits to be written for integers (zeroes are added if<br />

necessary).<br />

Eldo® User's Manual, 15.3 905


Eldo Control Language<br />

Library of Functions for Tasks<br />

or is the minimum number of digits to be written after the “.” for e, E and f specifiers.<br />

or is the maximum number of significant digits for g or G specifiers.<br />

or is the maximum number of characters to be written for string.<br />

• ARG<br />

Optional. An argument of the corresponding type must be specified for each format tag<br />

present in the FORMAT argument.<br />

Related Topics<br />

Library of Functions for Tasks<br />

sprint<br />

906<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

frexp<br />

Task function category: Mathematical Functions<br />

Breaks a floating-point number into a normalized fraction and an integral power of 2. Returns<br />

an array of 2 elements, the first element being the normalized fraction and the second element<br />

being the integral power of 2.<br />

Usage<br />

frexp(x)<br />

Arguments<br />

• x<br />

Floating point number.<br />

Examples<br />

set res = frexp(2.5)<br />

set frac = res[res.imin]<br />

set int_pow = res[res.imin + 1]<br />

fprint(stdout, "frexp(2.5) = [%.4f, %.4f]\n", frac, int_pow)<br />

/* Display: frexp(2.5) = [0.6250, 2.0000] */<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 907


Eldo Control Language<br />

Library of Functions for Tasks<br />

fscan<br />

Task function category: Functions Operating on Files<br />

Returns the number of elements that have been parsed. It has the same behavior as the C fscanf<br />

function.<br />

Usage<br />

fscan(FILE, FORMAT, [,ARG]*)<br />

Arguments<br />

• FILE<br />

File variable.<br />

• FORMAT<br />

FORMAT is a string that contains:<br />

whitespace characters (space, newline and tab characters); they are read and ignored.<br />

non-whitespace characters: sscan will read one character from STR_TO_PARSE and if<br />

it does not match then sscan will return, otherwise the processing of the FORMAT<br />

string continues.<br />

format tags that must follow this specification:<br />

%[*][width]specifier<br />

where:<br />

specifier is:<br />

c for a character<br />

d or i or u for an integer number<br />

e, E, f, g, or G for a double-precision floating-point number<br />

s for a string<br />

x or X for an hexadecimal integer number<br />

% to read the % character<br />

* specifies that the corresponding data must be read but ignored; no argument must<br />

be added for it.<br />

width specifies the maximum number of characters to read.<br />

An argument of the corresponding type must be specified for each format tag present in the<br />

FORMAT argument (except for a format tag preceded with *).<br />

• ARG<br />

Optional. An argument of the corresponding type must be specified for each format tag<br />

present in the FORMAT argument.<br />

908<br />

Eldo® User's Manual, 15.3


Examples<br />

Eldo Control Language<br />

Library of Functions for Tasks<br />

.define_task parse_file<br />

/* Same example but using fscan instead of fgets and strtok. */<br />

set vdd = 0.0 /* Be careful to declare vdd as a floating point number<br />

(required for '%f'). */<br />

set temp = 0 /* Be careful to declare temp as an integer(required for<br />

'%d'). */<br />

set corner = "" /* Be careful to declare corner as a string(required for<br />

'%s'). */<br />

set myfile = fopen("./corners.txt", "r")<br />

while(fscan(myfile, "vdd=%f, temp=%d, corner=%s\n", vdd, temp, corner)<br />

== 3)<br />

fprint(stdout, "Parsed line: vdd=%.4e, temp=%d, corner=%s\n", vdd,<br />

temp, corner)<br />

endwhile<br />

fclose(myfile)<br />

.end_define_task<br />

Related Topics<br />

Library of Functions for Tasks<br />

sscan<br />

fprint<br />

fclose<br />

Tasks<br />

Variables<br />

Flow Control Statements<br />

Eldo® User's Manual, 15.3 909


Eldo Control Language<br />

Library of Functions for Tasks<br />

hypot<br />

Task function category: Mathematical Functions<br />

Computes the length of the hypotenuse of a right angle triangle.<br />

Usage<br />

hypot(x, y)<br />

Arguments<br />

• x<br />

Length of side.<br />

• y<br />

Length of side.<br />

Description<br />

Computes the length of the hypotenuse of a right triangle: .<br />

Related Topics<br />

Library of Functions for Tasks<br />

910<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

ifft<br />

Task function category: Functions Operating on Waveforms<br />

Calculates the inverse Fast Fourier Transform of the input waveform.<br />

Usage<br />

ifft(wf)<br />

ifft(wf, start_frequency)<br />

ifft(wf, start_frequency, stop_frequency)<br />

ifft(wf, start_frequency, stop_frequency, sampling_time)<br />

ifft(wf, start_frequency, stop_frequency, sampling_time,<br />

number_of_points)<br />

ifft(wf, start_frequency, stop_frequency, sampling_time,<br />

number_of_points, sampling)<br />

ifft(wf, start_frequency, stop_frequency, sampling_time,<br />

number_of_points, sampling, padding)<br />

ifft(wf, start_frequency, stop_frequency, sampling_time,<br />

number_of_points, sampling, padding, normalized)<br />

Arguments<br />

• wf<br />

Specifies the input waveform name.<br />

• start_frequency<br />

Specifies the start frequency of the signal.<br />

• stop_frequency<br />

Specifies the stop frequency of the signal.<br />

• sampling_time<br />

Specifies the sampling time of the signal.<br />

• number_of_points<br />

Specifies the number of sampling points.<br />

• sampling<br />

Specifies the method of computing the sampled data. Valid values are “No Sampling” or<br />

“Interpolation”.<br />

• padding<br />

Activates data padding to pad the input data with zeros, before or after the input data set.<br />

Valid values are: “No Padding”, “Padding Right”, “Padding Left”, and “Padding Left and<br />

Right”. The input parameter will be verified by the algorithm and changed if necessary.<br />

• normalized<br />

Specifies whether to normalize the data. Specify 0 to use the raw data from the calculation<br />

unmodified. Specify 1 to normalize the raw data.<br />

Eldo® User's Manual, 15.3 911


Eldo Control Language<br />

Library of Functions for Tasks<br />

Description<br />

For symmetric windows, the parameters above satisfy the following equation:<br />

((number_of_points) / sampling_frequency) = stop_frequency - start_frequency.<br />

For periodic windows, the parameters above satisfy the following equation:<br />

((number_of_points-1) / sampling_frequency) = stop_frequency - start_frequency.<br />

Related Topics<br />

Library of Functions for Tasks<br />

fft<br />

912<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

imag<br />

Task function category: Mathematical Functions Operating on Complex Numbers, Functions<br />

Operating on Waveforms<br />

Imaginary part function.<br />

Usage<br />

Complex Number Function<br />

imag(c)<br />

Waveform Function<br />

imag(wf)<br />

imag(wf, x_start, x_end)<br />

Arguments<br />

Complex Number Function<br />

• c<br />

Input complex number.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Complex Number Function<br />

Returns the imaginary part of the input complex number c.<br />

Waveform Function<br />

Returns the imaginary part of the input complex waveform wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

real<br />

Eldo® User's Manual, 15.3 913


Eldo Control Language<br />

Library of Functions for Tasks<br />

imax<br />

Task function category: Functions Operating on Arrays<br />

Returns the index of the maximum value of the elements of the array array. If istart and istop are<br />

specified, this function applies to the part of array beginning at index istart and ending at index<br />

istop.<br />

Usage<br />

imax(array [, istart, istop])<br />

Arguments<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

Related Topics<br />

Library of Functions for Tasks<br />

imin<br />

skew<br />

914<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

imin<br />

Task function category: Functions Operating on Arrays<br />

Returns the index of the minimum value of the elements of the array array. If istart and istop are<br />

specified, this function applies to the part of array beginning at index istart and ending at index<br />

istop.<br />

Usage<br />

imax(array [, istart, istop])<br />

Arguments<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

Related Topics<br />

Library of Functions for Tasks<br />

skew<br />

Eldo® User's Manual, 15.3 915


Eldo Control Language<br />

Library of Functions for Tasks<br />

int<br />

Task function category: Mathematical Functions<br />

Integer value of VAL.<br />

Usage<br />

int(VAL)<br />

Arguments<br />

• VAL<br />

Value.<br />

Description<br />

Equivalent to trunc.<br />

Related Topics<br />

Library of Functions for Tasks<br />

trunc<br />

916<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

integ<br />

Task function category: Functions Operating on Waveforms<br />

Returns the definite integral value with upper and lower limits of a waveform.<br />

Usage<br />

integ(wf)<br />

integ(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Related Topics<br />

Library of Functions for Tasks<br />

derive<br />

drv<br />

integral<br />

Eldo® User's Manual, 15.3 917


Eldo Control Language<br />

Library of Functions for Tasks<br />

integral<br />

Task function category: Functions Operating on Waveforms<br />

Computes the indefinite integral (also known as anti-derivative) of the input waveform (the<br />

result is a waveform).<br />

Usage<br />

integral(wf)<br />

integral(wf, y0)<br />

integral(wf, y0, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• y0<br />

Integration constant.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Related Topics<br />

Library of Functions for Tasks<br />

drv<br />

918<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

intersect<br />

Task function category: Functions Operating on Waveforms<br />

Returns a vector containing all of the intersection points of two waveforms. If the slopes are<br />

supplied, the result will be collected only when the waveforms have the specified slopes.<br />

Note<br />

Does not support complex waveforms (but it is possible to call it separately on the real part<br />

and the complex part or on the magnitude and phase of a complex waveform).<br />

Usage<br />

intersect(wf1, wf2)<br />

intersect(wf1, wf2, with_y)<br />

intersect(wf1, wf2, x_start, x_end)<br />

intersect(wf1, wf2, x_start, x_end, with_y)<br />

intersect(wf1, wf2, slope_wf1, slope_wf2)<br />

intersect(wf1, wf2, slope_wf1, slope_wf2x_start, x_end)<br />

intersect(wf1, wf2, slope_wf1, slope_wf2x_start, x_end, with_y)<br />

Arguments<br />

• wf1<br />

First waveform identifier.<br />

• wf2<br />

Second waveform identifier.<br />

• with_y<br />

Valid values for with_y are 0 and 1. If with_y==0 (default), then the function returns a<br />

vector. If with_y==1, then the function returns a matrix; its first line is a vector containing<br />

the X values of the intersection points and the second line is a vector containing the<br />

corresponding Y values.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

• slope_wf1, slope_wf2<br />

Valid values for slope_wf1 and slope_wf2 are: pos, neg, or either.<br />

• slope_wf2x_start<br />

Slope of second waveform at start point. Valid values are: pos, neg, or either.<br />

Eldo® User's Manual, 15.3 919


Eldo Control Language<br />

Library of Functions for Tasks<br />

Examples<br />

set v_intersect[]=0<br />

set mat_intersect[]=0<br />

set i = 0<br />

mat_intersect = intersect(wave1, wave2, 1)<br />

fprint(stdout, "Intersection points are:\n")<br />

for (i=mat_intersect[1].imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

isarray<br />

Task function category: Functions Operating on Arrays<br />

Returns 1 if var is an array, 0 otherwise.<br />

Usage<br />

isarray(var)<br />

Arguments<br />

• var<br />

Variable name.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 921


Eldo Control Language<br />

Library of Functions for Tasks<br />

iscompound<br />

Task function category: Functions Operating on Compound Waveforms<br />

Returns 1 if wf is a compound waveform, 0 otherwise.<br />

Usage<br />

iscompound(wf)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

Related Topics<br />

Library of Functions for Tasks<br />

compoundcontent<br />

922<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

kurt<br />

Task function category: Functions Operating on Arrays<br />

Returns the fourth standardized moment also known as sample kurtosis (unbiased value if bias<br />

is 0, biased value otherwise) of the elements of the array array.<br />

Usage<br />

kurt(array [, istart, istop], bias)<br />

Arguments<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

• bias<br />

Bias value. Set to 0 for unbiased value.<br />

Description<br />

If istart and istop are specified, this function applies to the part of array beginning at index istart<br />

and ending at index istop.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 923


Eldo Control Language<br />

Library of Functions for Tasks<br />

ldexp<br />

Task function category: Mathematical Functions<br />

Returns the value x multiplied by 2 raised to the power y (computes the quantity: x × 2y).<br />

Usage<br />

ldexp(x, y)<br />

Arguments<br />

• x<br />

x value.<br />

• y<br />

y value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

924<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

limit<br />

Task function category: Mathematical Functions<br />

Returns b if a < b, returns c if a > c, returns a otherwise.<br />

Usage<br />

limit(a, b, c)<br />

Arguments<br />

• a<br />

a value.<br />

• b<br />

b value.<br />

• c<br />

c value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 925


Eldo Control Language<br />

Library of Functions for Tasks<br />

log<br />

Task function category: Mathematical Functions, Mathematical Functions Operating on<br />

Complex Numbers, Functions Operating on Waveforms<br />

Natural logarithm function.<br />

Usage<br />

Mathematical Function<br />

log(VAL)<br />

unsafe_log(VAL)<br />

Complex Number Function<br />

log(c)<br />

unsafe_log(c)<br />

Waveform Function<br />

log(wf)<br />

log(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Complex Number Function<br />

• c<br />

Input complex number.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Natural logarithm of VAL. log will exit properly if VAL is negative or null.<br />

926<br />

Eldo® User's Manual, 15.3


Complex Number Function<br />

Natural logarithm of complex number c. log will exit properly if c is (0, 0).<br />

Waveform Function<br />

Natural logarithm of the input waveform (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

log10<br />

Eldo Control Language<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 927


Eldo Control Language<br />

Library of Functions for Tasks<br />

log10<br />

Task function category: Mathematical Functions, Mathematical Functions Operating on<br />

Complex Numbers, Functions Operating on Waveforms<br />

Decimal (base 10) logarithm function.<br />

Usage<br />

Mathematical Function<br />

log10(VAL)<br />

unsafe_log10(VAL)<br />

Complex Number Function<br />

log10(c)<br />

unsafe_log10(c)<br />

Waveform Function<br />

log10(wf)<br />

log10(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Complex Number Function<br />

• c<br />

Input complex number.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Decimal logarithm of VAL. log10 will exit properly if VAL is negative or null.<br />

928<br />

Eldo® User's Manual, 15.3


Complex Number Function<br />

Decimal logarithm of complex number c. log10 will exit properly if c is (0, 0).<br />

Waveform Function<br />

Decimal logarithm of the input waveform (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

log<br />

Eldo Control Language<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 929


Eldo Control Language<br />

Library of Functions for Tasks<br />

magnitude<br />

Task function category: Mathematical Functions Operating on Complex Numbers, Functions<br />

Operating on Waveforms<br />

Returns the absolute magnitude.<br />

Usage<br />

Complex Number Function<br />

magnitude(c)<br />

Waveform Function<br />

magnitude(wf)<br />

magnitude(wf, x_start, x_end)<br />

Arguments<br />

Complex Number Function<br />

• c<br />

Input complex number.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Complex Number Function<br />

Returns the absolute magnitude of the input complex number c.<br />

Waveform Function<br />

Returns the absolute magnitude of the input complex waveform wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

930<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

max<br />

Task function category: Mathematical Functions, Functions Operating on Arrays, Functions<br />

Operating on Waveforms<br />

Returns the maximum value.<br />

Usage<br />

Mathematical Function<br />

max(VAL1,..., VALn)<br />

dmax(VAL1,...,VALn)<br />

Array Function<br />

max(array [, istart, istop])<br />

Waveform Function<br />

max(wf)<br />

max(wf, x_start, x_end)<br />

max(wf, x_start, x_end, with_x_at_max)<br />

Arguments<br />

Mathematical Function<br />

• VAL1<br />

First value.<br />

• VALn<br />

n th value. There is no limit to the number of values that can be specified.<br />

Array Function<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

Eldo® User's Manual, 15.3 931


Eldo Control Language<br />

Library of Functions for Tasks<br />

• x_end<br />

Waveform end point.<br />

• with_x_at_max<br />

Valid values for with_x_at_max are 0 and 1. If with_x_at_max==0 (default), then the<br />

function returns a double-precision floating-point value. If with_x_at_min==1, then the<br />

function returns a vector of two elements. The first element is the X value at the maximum<br />

and the second element is the Y maximum value.<br />

Return Values<br />

Mathematical Function<br />

Returns the maximum of VAL1 to VALn.<br />

Array Function<br />

Returns the maximum value off the elements of the array array. If istart and istop are specified,<br />

this function applies to the part of array beginning at index istart and ending at index istop.<br />

Waveform Function<br />

Returns the maximum value of a waveform. If the input waveform is complex, it returns the<br />

largest magnitude of its elements.<br />

Examples<br />

Waveform function example:<br />

set fmax = 0<br />

set vxymax[] = 0<br />

fmax = max(wave1)<br />

fprint(stdout, "the maximum Y value is: %.4e\n", fmax)<br />

vxymax = max(wave1, 10, 40, 1)<br />

fprint(stdout, "the maximum Y value between 10 and 40 is: %.4e and is<br />

reached at %.4e\n",<br />

+ vxymax[2], vxymax[1])<br />

Related Topics<br />

imin<br />

min<br />

Library of Functions for Tasks<br />

skew<br />

932<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

mcconv<br />

Task function category: Functions Operating on Arrays<br />

Returns 1 or 0 to indicate convergence of the Monte Carlo process for the elements of the array<br />

array.<br />

Usage<br />

mcconv(array, "AVG"|"STD", "CONFIDENCE" [,nrun_pilot [, confidence_level<br />

[, abstol [, reltol]]]])<br />

Arguments<br />

• array<br />

Array.<br />

• AVG | STD<br />

The Monte Carlo analysis has converged when the confidence interval is small. This<br />

algorithm is defined for AVG and STD; not for SKEW, or KURT.<br />

• CONFIDENCE<br />

When the CONFIDENCE algorithm is specified, the default values are NRUN_PILOT=20,<br />

CONFIDENCE_LEVEL=0.95, ABSTOL=0.01, and RELTOL=0.01. For example, a 99%<br />

confidence interval will correspond to CONFIDENCE_LEVEL=0.99.<br />

Related Topics<br />

Library of Functions for Tasks<br />

_simu_get_mcsens<br />

Eldo® User's Manual, 15.3 933


Eldo Control Language<br />

Library of Functions for Tasks<br />

mcnbench<br />

Task function category: Functions Operating on Arrays<br />

Returns the number of non-UNDEF values among the elements of the array array. If istart and<br />

istop are specified, this function applies to the part of array beginning at index istart and ending<br />

at index istop.<br />

Usage<br />

mcnbench(array [, istart, istop])<br />

Arguments<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

Related Topics<br />

Library of Functions for Tasks<br />

934<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

min<br />

Task function category: Mathematical Functions, Functions Operating on Arrays, Functions<br />

Operating on Waveforms<br />

Returns the minimum value.<br />

Usage<br />

Mathematical Function<br />

min(VAL1,..., VALn)<br />

dmin(VAL1,...,VALn)<br />

Array Function<br />

min(array [, istart, istop])<br />

Waveform Function<br />

min(wf)<br />

min(wf, x_start, x_end)<br />

min(wf, x_start, x_end, with_x_at_min)<br />

Arguments<br />

Mathematical Function<br />

• VAL1<br />

First value.<br />

• VALn<br />

n τη value. There is no limit to the number of values that can be specified.<br />

Array Function<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

Eldo® User's Manual, 15.3 935


Eldo Control Language<br />

Library of Functions for Tasks<br />

• x_end<br />

Waveform end point.<br />

• with_x_at_min<br />

Valid values for with_x_at_min are 0 and 1. If with_x_at_min==0, then the function returns<br />

a double-precision floating-point value. If with_x_at_min==1, then the function returns a<br />

vector of two elements. The first element is the X value at the minimum and the second<br />

element is the Y minimum value.<br />

Return Values<br />

Mathematical Function<br />

Returns the minimum of VAL1 to VALn.<br />

Array Function<br />

Returns the minimum value off the elements of the array array. If istart and istop are specified,<br />

this function applies to the part of array beginning at index istart and ending at index istop.<br />

Waveform Function<br />

Returns the minimum value of a waveform. If the input waveform is complex, it returns the<br />

smallest magnitude of its elements.<br />

Related Topics<br />

Library of Functions for Tasks<br />

max<br />

936<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

mod<br />

Task function category: Mathematical Functions<br />

Modulo operator. Floating-point remainder value function of dividing x by y. Returns the value<br />

x − i×y, where i is the quotient of x/y, rounded towards zero to an integer. mod will exit properly<br />

if y is equal to 0.<br />

Usage<br />

mod(x, y)<br />

unsafe_mod(x, y)<br />

Arguments<br />

• x<br />

x value.<br />

• y<br />

y value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

Eldo® User's Manual, 15.3 937


Eldo Control Language<br />

Library of Functions for Tasks<br />

modf<br />

Task function category: Mathematical Functions<br />

Breaks the argument x into integral and fractional parts, each of which has the same sign as the<br />

argument. Returns an array of two elements, the first element being the fractional part and the<br />

second element being the integral part.<br />

Usage<br />

modf(x)<br />

Arguments<br />

• x<br />

x value.<br />

Examples<br />

set res = modf(2.5)<br />

set frac = res[res.imin]<br />

set int = res[res.imin + 1]<br />

fprint(stdout, "modf(2.5) = [%.4f, %.4f]\n", frac, int)<br />

/* Display: modf(2.5) = [0.5000, 2.0000] */<br />

Related Topics<br />

Library of Functions for Tasks<br />

938<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

mptpcomplex<br />

Task function category: Mathematical Functions Operating on Complex Numbers<br />

Constructs a complex number from its magnitude m and its phase in radians p.<br />

Usage<br />

mptocomplex(m, p)<br />

Arguments<br />

• m<br />

Magnitude.<br />

• p<br />

Phase in radians.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 939


Eldo Control Language<br />

Library of Functions for Tasks<br />

nextval<br />

Task function category: Functions Operating on Waveforms<br />

Returns the next point of a waveform. Returns 0 if there are no more points in the waveform,<br />

otherwise x_res and y_res are set with the coordinates of the next point of the waveform.<br />

Usage<br />

nextval(wf, x_res, y_res)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_res<br />

Variable name for X coordinate of next point in waveform. Must be a double-precision<br />

floating-point variable otherwise an error is generated.<br />

• y_res<br />

Variable name for Y coordinate of next point in waveform. Must be a double-precision<br />

floating-point variable otherwise an error is generated. If wf is a complex waveform, then<br />

y_res must be a complex number.<br />

Description<br />

Must be called after beginval.<br />

Examples<br />

Example 1:<br />

/* here, the float value 0.0 and not the integer 0 must be assigned to x<br />

and y otherwise there will be an error when calling beginval and nextval.<br />

*/<br />

set x = 0.0<br />

set y = 0.0<br />

set iter = 0<br />

iter = beginval(wave1, x, y)<br />

while (iter != 0)<br />

fprint(stdout, "(%12.4e;%12.4e)\n", x, y)<br />

iter = nextval(wave1, x, y)<br />

endwhile<br />

Example 2:<br />

940<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

set x = 0.0<br />

/* here, a complex value must be assigned to y otherwise there will be an<br />

error when calling beginval and nextval. */<br />

set y = ritocomplex(0.0, 0.0)<br />

set iter = 0<br />

iter = beginval(complex_wave1, x, y)<br />

while (iter != 0)<br />

fprint(stdout, "(%12.4e;(%12.4e, %12.4e))\n", x, real(y), imag(y))<br />

iter = nextval(wave1, x, y)<br />

endwhile<br />

Related Topics<br />

Library of Functions for Tasks<br />

beginval<br />

Variables<br />

Flow Control Statements<br />

fprint<br />

Eldo® User's Manual, 15.3 941


Eldo Control Language<br />

Library of Functions for Tasks<br />

ongrid<br />

Task function category: Mathematical Functions<br />

Returns 1 if value=offset + (k×step) where k is an integer value. Otherwise it returns 0. The<br />

default value of offset is 0.0.<br />

Usage<br />

ongrid([offset], step, value)<br />

Arguments<br />

• offset<br />

Optional. Offset value.<br />

• step<br />

Step value.<br />

• value<br />

Value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

942<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

phase<br />

Task function category: Mathematical Functions Operating on Complex Numbers, Functions<br />

Operating on Waveforms<br />

Returns the phase.<br />

Usage<br />

Complex Number Function<br />

phase(c)<br />

Waveform Function<br />

phase(wf)<br />

phase(wf, x_start, x_end)<br />

Arguments<br />

Complex Number Function<br />

• c<br />

Input complex number.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Complex Number Function<br />

Returns the phase (or argument) of the input complex number c in radians, limited to [-pi, pi].<br />

Waveform Function<br />

Returns the phase of the input complex waveform wf in radians, limited to [-pi, pi] (the result is<br />

a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 943


Eldo Control Language<br />

Library of Functions for Tasks<br />

pow<br />

Task function category: Mathematical Functions<br />

Returns the value of VAL1 to the power of the integer part of VAL2. pow will exit properly if<br />

VAL1 is a equal to 0 and VAL2 is negative.<br />

Usage<br />

pow(VAL1, VAL2)<br />

unsafe_pow(VAL1, VAL2)<br />

Arguments<br />

• VAL1<br />

Value 1.<br />

• VAL2<br />

Value 2.<br />

Related Topics<br />

Library of Functions for Tasks<br />

pow_10<br />

Numbers<br />

944<br />

Eldo® User's Manual, 15.3


pow_10<br />

Task function category: Functions Operating on Waveforms<br />

Eldo Control Language<br />

Library of Functions for Tasks<br />

Computes the value of 10 raised to the power of wf: 10 wf (the result is a waveform).<br />

Usage<br />

pow_10(wf)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

Related Topics<br />

Library of Functions for Tasks<br />

exp<br />

Eldo® User's Manual, 15.3 945


Eldo Control Language<br />

Library of Functions for Tasks<br />

pwr<br />

Task function category: Mathematical Functions<br />

Returns the absolute value of VAL1, raised to the power of VAL2, with the sign of VAL1. pwr<br />

will exit properly if VAL1 is a equal to 0 and VAL2 is negative.<br />

Usage<br />

pwr(VAL1, VAL2)<br />

unsafe_pwr(VAL1, VAL2)<br />

Arguments<br />

• VAL1<br />

Value 1.<br />

• VAL2<br />

Value 2.<br />

Related Topics<br />

Library of Functions for Tasks<br />

pow<br />

Numbers<br />

946<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

real<br />

Task function category: Mathematical Functions Operating on Complex Numbers, Functions<br />

Operating on Waveforms<br />

Real part function.<br />

Usage<br />

Complex Number Function<br />

real(c)<br />

Waveform Function<br />

real(wf)<br />

real(wf, x_start, x_end)<br />

Arguments<br />

Complex Number Function<br />

• c<br />

Input complex number.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Complex Number Function<br />

Returns the real part of the input complex number c.<br />

Waveform Function<br />

Returns the real part of the input complex waveform wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

imag<br />

Eldo® User's Manual, 15.3 947


Eldo Control Language<br />

Library of Functions for Tasks<br />

relation<br />

Task function category: Functions Operating on Waveforms<br />

Generates a waveform from a point-by-point relational expression.<br />

Usage<br />

relation(wf1, wf2, op)<br />

Arguments<br />

• wf1<br />

First waveform identifier.<br />

• wf2<br />

Second waveform identifier.<br />

• op<br />

Valid values for op are 1, 0, and -1 where 1 stands for “greater than”, 0 for “equals” and -1<br />

for “less than”.<br />

Return Values<br />

It returns 1 corresponding to the scalar value op:<br />

if op = 1 and wf1 > wf2,<br />

or if op = 0 and wf1 = wf2,<br />

or if op = -1 and wf1 < wf2;<br />

otherwise 0 is returned.<br />

Related Topics<br />

Library of Functions for Tasks<br />

948<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

ritocomplex<br />

Task function category: Mathematical Functions Operating on Complex Numbers<br />

Constructs a complex number from its real part r and its imaginary part i.<br />

Usage<br />

ritocomplex(r, i)<br />

Arguments<br />

• r<br />

Real part of complex number.<br />

• i<br />

Imaginary part of complex number.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 949


Eldo Control Language<br />

Library of Functions for Tasks<br />

rms<br />

Task function category: Functions Operating on Waveforms<br />

Returns the root mean square value of a waveform.<br />

Usage<br />

rms(wf)<br />

rms(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

The root mean square value of a waveform is computed as:<br />

if X domain is Frequency or<br />

otherwise.<br />

Related Topics<br />

Library of Functions for Tasks<br />

rms_ac<br />

rms_noise<br />

rms_tran<br />

950<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

rms_ac<br />

Task function category: Functions Operating on Waveforms<br />

Returns the root mean square value of a waveform for AC analysis.<br />

Usage<br />

rms_ac(wf)<br />

rms_ac(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

The root mean square value is computed as:<br />

Related Topics<br />

Library of Functions for Tasks<br />

rms<br />

rms_noise<br />

rms_tran<br />

Eldo® User's Manual, 15.3 951


Eldo Control Language<br />

Library of Functions for Tasks<br />

rms_noise<br />

Task function category: Functions Operating on Waveforms<br />

Returns the root mean square value of a waveform for noise analysis.<br />

Usage<br />

rms_noise(wf)<br />

rms_noise(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

The root mean square value is computed as:<br />

Related Topics<br />

Library of Functions for Tasks<br />

rms<br />

rms_ac<br />

rms_tran<br />

952<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

rms_tran<br />

Task function category: Functions Operating on Waveforms<br />

Returns the root mean square value of a waveform for transient analysis.<br />

Usage<br />

rms_ac(wf)<br />

rms_ac(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

The root mean square value of a waveform for transient analysis is computed as:<br />

Related Topics<br />

Library of Functions for Tasks<br />

rms<br />

rms_ac<br />

rms_noise<br />

Eldo® User's Manual, 15.3 953


Eldo Control Language<br />

Library of Functions for Tasks<br />

round<br />

Task function category: Mathematical Functions<br />

Returns value of VAL rounded to the nearest integer.<br />

Usage<br />

round(VAL)<br />

Arguments<br />

• VAL<br />

Value.<br />

Related Topics<br />

Library of Functions for Tasks<br />

954<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

sgn<br />

Task function category: Mathematical Functions<br />

Returns the signum of VAL: +1 if VAL>0, 0 if VAL=0, -1 if VAL


Eldo Control Language<br />

Library of Functions for Tasks<br />

sign<br />

Task function category: Mathematical Functions<br />

Returns the signum of VAL1: +1 if VAL1>=0, -1 if VAL1


Eldo Control Language<br />

Library of Functions for Tasks<br />

sin<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Sine function.<br />

Usage<br />

Mathematical Function<br />

sin(VAL)<br />

Waveform Function<br />

sin(wf)<br />

sin(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Sine of VAL.<br />

Waveform Function<br />

Sine of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 957


Eldo Control Language<br />

Library of Functions for Tasks<br />

sinh<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Hyperbolic sine function.<br />

Usage<br />

Mathematical Function<br />

sinh(VAL)<br />

Waveform Function<br />

sinh(wf)<br />

sinh(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Return Values<br />

Mathematical Function<br />

Hyperbolic sine of VAL.<br />

Waveform Function<br />

The hyperbolic sine of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

958<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

size<br />

Task function category: Functions Operating on Waveforms<br />

Returns the number of points of a waveform.<br />

Usage<br />

size(wf)<br />

size(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 959


Eldo Control Language<br />

Library of Functions for Tasks<br />

skew<br />

Task function category: Functions Operating on Arrays<br />

Returns the third standardized moment also known as sample skewness (unbiased value if bias<br />

is 0, biased value otherwise) of the elements of the array array.<br />

Usage<br />

skew(array [, istart, istop], bias)<br />

Arguments<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

• bias<br />

Bias value. Set to 0 for unbiased value.<br />

Description<br />

If istart and istop are specified, this function applies to the part of array beginning at index istart<br />

and ending at index istop.<br />

Related Topics<br />

Library of Functions for Tasks<br />

960<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

sprint<br />

Task function category: Functions Operating on Strings<br />

Returns a formatted string; same behavior as the C sprintf function.<br />

Usage<br />

sprint(FORMAT [,ARG]*)<br />

Arguments<br />

• FORMAT<br />

FORMAT is a string that contains the text to be formatted. This string can contain format<br />

tags. A format tag must follow this specification:<br />

%[flags][width][.precision]specifier<br />

where:<br />

specifier is:<br />

c for a character<br />

d or i or u for an integer number<br />

e or E for a double precision floating point number in scientific notation<br />

f for a double-precision floating-point number; the default precision is 6 digits<br />

g or G to use the shorter of %f or %e or %E<br />

s for a string<br />

x or X for an hexadecimal integer number<br />

% to print the % character<br />

flags is:<br />

- to force left justification within the given width<br />

+ to force the sign to be always written<br />

“ ” to insert a space before a number for which no sign is written<br />

# to specify if 0x or 0X must be written before a not null hexadecimal number or to<br />

specify if “.” must be always written for a double-precision floating-point number<br />

0 to insert zeroes instead of spaces before a number<br />

width is the minimum number of characters to be displayed (spaces are added if<br />

necessary)<br />

precision is the minimum number of digits to be written for integers (zeroes are added if<br />

necessary).<br />

or is the minimum number of digits to be written after the “.” for e, E and f specifiers.<br />

or is the maximum number of significant digits for g or G specifiers.<br />

or is the maximum number of characters to be written for string.<br />

Eldo® User's Manual, 15.3 961


Eldo Control Language<br />

Library of Functions for Tasks<br />

• ARG<br />

Optional. An argument of the corresponding type must be specified for each format tag<br />

present in the FORMAT argument.<br />

Examples<br />

Example:<br />

set t[] = 0<br />

set y[] = 0<br />

set s = ""<br />

set i = 0<br />

t[0] = -1<br />

y[0] = 0<br />

t[1] = 0<br />

y[1] = 1.578<br />

t[2] = 1<br />

y[2] = 15.71<br />

t[3] = 10<br />

y[3] = 203.8<br />

s = sprint("(% 3d;%12.4e)\n\<br />

(% 3d;%12.4e)\n\<br />

(% 3d;%12.4e)\n\<br />

(% 3d;%12.4e)\n",\<br />

t[0], y[0], t[1], y[1], t[2], y[2], t[3], y[3])<br />

fprint(stdout, "%s", s)<br />

The output of the previous example is:<br />

( -1; 0.000e+00)<br />

( 0; 1.578e+00)<br />

( 1; 1.571e+01)<br />

( 10; 2.038e+02)<br />

Ensure you provide adequate precision for the %f output format, or use the %e, %E, %g, or %G<br />

format. For example, if the variable to be printed is smaller than 1e-6, it cannot be represented<br />

with the %f format without changing the precision:<br />

set myvar=1n<br />

fprint(stdout, "Result %s: %f\n", "%f", myvar)<br />

fprint(stdout, "Result %s: %.9f\n", "%.9f", myvar)<br />

fprint(stdout, "Result %s: %e\n", "%e", myvar)<br />

will output:<br />

Result %f: 0.000000<br />

Result %.9f: 0.000000001<br />

Result %e: 1.000000e-09<br />

Related Topics<br />

Library of Functions for Tasks<br />

fprint<br />

962<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

sqr<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Square function.<br />

Usage<br />

Mathematical Function<br />

sqr(VAL)<br />

Waveform Function<br />

sqr(wf)<br />

sqr(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Mathematical Function<br />

Computes the square of VAL: val 2 .<br />

Waveform Function<br />

Computes the square of the input argument: wf 2 (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 963


Eldo Control Language<br />

Library of Functions for Tasks<br />

sqrt<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Square root function.<br />

Usage<br />

Mathematical Function<br />

sqrt(VAL)<br />

unsafe_sqrt(VAL)<br />

Waveform Function<br />

sqrt(wf)<br />

sqrt(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Mathematical Function<br />

Square root of VAL. sqrt will exit properly if VAL is negative.<br />

Waveform Function<br />

Square root of the input waveform (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

964<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

sscan<br />

Task function category: Functions Operating on Strings<br />

Returns the number of elements that have been parsed. Same behavior as the C sscanf function.<br />

Usage<br />

sscan(STR_TO_PARSE, FORMAT [,ARG]*)<br />

Arguments<br />

• STR_TO_PARSE<br />

String to be parsed.<br />

• FORMAT<br />

FORMAT is a string that contains:<br />

whitespace characters (space, newline and tab characters); they are read and ignored.<br />

non-whitespace characters: sscan will read one character from STR_TO_PARSE and if<br />

it does not match then sscan will return, otherwise the processing of the FORMAT<br />

string continues.<br />

format tags that must follow this specification:<br />

%[*][width]specifier<br />

where:<br />

specifier is:<br />

c for a character<br />

d or i or u for an integer number<br />

e, E, f, g, or G for a double-precision floating-point number<br />

s for a string<br />

x or X for an hexadecimal integer number<br />

% to read the % character<br />

* specifies that the corresponding data must be read but ignored; no argument must<br />

be added for it.<br />

width specifies the maximum number of characters to read.<br />

An argument of the corresponding type must be specified for each format tag present in the<br />

FORMAT argument (except for a format tag preceded with *).<br />

• ARG<br />

Optional. An argument of the corresponding type must be specified for each format tag<br />

present in the FORMAT argument.<br />

Eldo® User's Manual, 15.3 965


Eldo Control Language<br />

Library of Functions for Tasks<br />

Examples<br />

set s1 = "str1 12 25.3"<br />

set s2 = "1 2 3 4 5 6 7 8 9 10"<br />

set sRes = ""<br />

set iRes =0<br />

set vRes[] = 0<br />

set fRes = 0.0 /*f must be declared as a real otherwise error. */<br />

sscan(s1, "%s %d %f", sRes, iRes, fRes)<br />

sscan(s2, "%d %d %d %d %d %d %d %d %d %d",<br />

+vRes[1] , vRes[2] , vRes[3] , vRes[4] , vRes[5] ,<br />

+vRes[6] , vRes[7] , vRes[8] , vRes[9] , vRes[10])<br />

Related Topics<br />

Library of Functions for Tasks<br />

system<br />

966<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

std<br />

Task function category: Functions Operating on Arrays<br />

Returns the standard deviation (unbiased value) of the elements of the array array.<br />

Usage<br />

std(array [, istart, istop])<br />

Arguments<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

Description<br />

If istart and istop are specified, this function applies to the part of array beginning at index istart<br />

and ending at index istop.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 967


Eldo Control Language<br />

Library of Functions for Tasks<br />

strtok<br />

Task function category: Functions Operating on Strings<br />

Returns a vector containing the parsed tokens.<br />

Usage<br />

strtok(STR_TO_PARSE, STR_SEPARATORS)<br />

Arguments<br />

• STR_TO_PARSE<br />

String to parse.<br />

• STR_SEPARATORS<br />

Separators present in string.<br />

Examples<br />

set s = "tok1;tok2\ntok3;tok4"<br />

set v = strtok(s, ";\n")<br />

set i = 0<br />

for (i=v.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

sum<br />

Task function category: Functions Operating on Waveforms<br />

Returns the sum of all the Y values of a waveform. If the input waveform is complex, then the<br />

sum function is applied on its real part.<br />

Usage<br />

sum(wf)<br />

sum(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Related Topics<br />

Library of Functions for Tasks<br />

Eldo® User's Manual, 15.3 969


Eldo Control Language<br />

Library of Functions for Tasks<br />

system<br />

Task function category: Functions Operating on Files<br />

Executes the STR_CMD shell command. If no other argument is passed, the result of the<br />

command is displayed on the standard output, otherwise the result is stored in the string<br />

STR_RES, which can be parsed to get the result.<br />

Usage<br />

system(STR_CMD [,STR_RES])<br />

Arguments<br />

• STR_CMD<br />

Shell command.<br />

• STR_RES<br />

String containing the result.<br />

Examples<br />

.define_testbench tb_simu_file (file="")<br />

.include file<br />

.end_define_testbench<br />

.define_task simu_files<br />

set files = ""<br />

set i = 0<br />

set v [] = ""<br />

set res = system("cd ~/testcase;ls *.cir", files)<br />

v = strtok(files, "\n")<br />

for (i=v.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

tan<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Tangent function.<br />

Usage<br />

Mathematical Function<br />

tan(VAL)<br />

unsafe_tan(VAL)<br />

Waveform Function<br />

tan(wf)<br />

tan(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Mathematical Function<br />

Tangent of VAL. tan will exit properly if VAL is a multiple of pi/2.<br />

Waveform Function<br />

Tangent of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

Numbers<br />

Eldo® User's Manual, 15.3 971


Eldo Control Language<br />

Library of Functions for Tasks<br />

tanh<br />

Task function category: Mathematical Functions, Functions Operating on Waveforms<br />

Hyperbolic tangent function.<br />

Usage<br />

Mathematical Function<br />

tanh(VAL)<br />

Waveform Function<br />

tanh(wf)<br />

tanh(wf, x_start, x_end)<br />

Arguments<br />

Mathematical Function<br />

• VAL<br />

Value.<br />

Waveform Function<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Mathematical Function<br />

Hyperbolic tangent of VAL.<br />

Waveform Function<br />

Hyperbolic tangent of wf (the result is a waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

972<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

trunc<br />

Task function category: Mathematical Functions<br />

Truncated value of VAL (integer part of real value).<br />

Usage<br />

trunc(VAL)<br />

Arguments<br />

• VAL<br />

Value.<br />

Description<br />

Equivalent to int.<br />

Related Topics<br />

Library of Functions for Tasks<br />

int<br />

Eldo® User's Manual, 15.3 973


Eldo Control Language<br />

Library of Functions for Tasks<br />

var<br />

Task function category: Functions Operating on Arrays<br />

Returns the variance (unbiased value) of the elements of the array array.<br />

Usage<br />

std(array [, istart, istop])<br />

Arguments<br />

• array<br />

Array.<br />

• istart<br />

Optional. Array start index.<br />

• istop<br />

Optional. Array stop index.<br />

Description<br />

If istart and istop are specified, this function applies to the part of array beginning at index istart<br />

and ending at index istop.<br />

Related Topics<br />

Library of Functions for Tasks<br />

974<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

wadd_data_enum_value<br />

Task function category: Functions Creating New Waveforms<br />

This function must be used to define enumeration values for an enumerated data type created<br />

with wcreate_data_type.<br />

Usage<br />

wadd_data_enum_value("data_type", "label", value)<br />

Arguments<br />

• "data_type"<br />

Name of the data type. It must have been created with wcreate_data_type with a "-Enum"<br />

type.<br />

• "label"<br />

Label displayed for this value.<br />

• value<br />

Value to add. It must be a positive integer.<br />

Examples<br />

For an example, see “wadd_data_enum_value” on page 975.The following example shows how<br />

to display graphically the bandwidth of a RLC circuit.<br />

Eldo® User's Manual, 15.3 975


Eldo Control Language<br />

Library of Functions for Tasks<br />

* Parallel RLC circuit.<br />

vin 1 0 ac 10<br />

r2 1 2 50<br />

r3 2 3 50k<br />

r5 3 0 50<br />

l1 2 3 100u<br />

c4 2 3 10n<br />

.ac dec 10 1 1g<br />

.option eps = 1.0e-6<br />

.plot w2=v(2) w1=v(1)<br />

.define_task plot_bandwidth<br />

set w1 = 0<br />

set w2 = 0<br />

set w_db_gain = 0<br />

set w_bandwidth = 0<br />

set fcut[] = 0<br />

/* Run the simulation and calculate gain. */<br />

simulation(w1 = @w1, w2 = @w2)<br />

/* Compute the gain and save the waveform. */<br />

w_db_gain = db(w2 / w1)<br />

wsave(wstdout, w_db_gain, "results")<br />

/* Compute the -3dB bandwidth. */<br />

fcut = xval(w_db_gain, -3)<br />

if (fcut.size != 2)<br />

fprint(stdout, "Failed to compute the -3dB bandwidth.\n")<br />

return -1<br />

else<br />

fprint(stdout, "\n\t-3dB bandwidth = (%.2eHz, %.2eHz)\n",<br />

fcut[fcut.imin], fcut[fcut.imin + 1])<br />

endif<br />

/* Create enum data type: 0: cut, 1: pass. */<br />

wcreate_data_type("cut_pass", "-Enum")<br />

wadd_data_enum_value("cut_pass", "cut", 0)<br />

wadd_data_enum_value("cut_pass", "pass", 1)<br />

/* Create the waveform showing graphically the -3dB bandwidth. */<br />

w_bandwidth = wcreate_wave(wstdout, "bandwidth", "results",<br />

"double_frequency", "cut_pass", "-LOG_X")<br />

/* It is usually more efficient to create 2 vectors for x and y values<br />

and call wset_values only once. But here since there are few values, it is<br />

not a real problem to do this: */<br />

wset_values(w_bandwidth, 1, 0)<br />

wset_values(w_bandwidth, fcut[fcut.imin], 1)<br />

wset_values(w_bandwidth, fcut[fcut.imin + 1], 0)<br />

wset_values(w_bandwidth, 1G, 0)<br />

fprint(stdout, "\n\tPlot of bandwidth succeeded.\n")<br />

.end_define_task<br />

976<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

.plot_bandwidth<br />

.option set_<strong>eldo</strong>_cl_verbose=0<br />

.option remove_<strong>eldo</strong>_cl_temp_files=3<br />

.option keep_<strong>eldo</strong>_cl_temp_waves=0<br />

Related Topics<br />

Library of Functions for Tasks<br />

wadd_scale<br />

wcreate_data_type<br />

wcreate_scale_table<br />

wcreate_wave<br />

wset_values<br />

Testbenches<br />

Tasks<br />

Variables<br />

Flow Control Statements<br />

Defining and Running Simulations<br />

fprint<br />

Eldo® User's Manual, 15.3 977


Eldo Control Language<br />

Library of Functions for Tasks<br />

wadd_scale<br />

Task function category: Functions Creating New Waveforms<br />

This function is used to add sub-units to a scale table created with wcreate_scale_table.<br />

Usage<br />

wadd_scale("scale_table", "unit", unit_value)<br />

Arguments<br />

• "scale_table"<br />

Name of a scale table created with wcreate_scale_table (for example "size").<br />

• "unit"<br />

Name of the sub-unit (for example: "m").<br />

• unit_value<br />

Multiple of the smallest sub-unit of the scale table corresponding to the sub-unit to add to<br />

the scale table (for example: 1e15 for m if the smallest sub-unit of the scale table is fm).<br />

Examples<br />

For an example, see “wcreate_data_type” on page 980.<br />

Related Topics<br />

Library of Functions for Tasks<br />

wadd_data_enum_value<br />

wcreate_data_type<br />

wcreate_scale_table<br />

wcreate_wave<br />

wset_values<br />

978<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

wclose<br />

Task function category: Functions Operating on wdb Files<br />

Saves (if the .wdb file was opened in write mode) and closes the .wdb file whose identifier is<br />

wdbId.<br />

Usage<br />

wclose(wdbId)<br />

Arguments<br />

• wdbId<br />

.wdb file identifier.<br />

wstdout Variable<br />

The main .wdb file (if the netlist run by the main Eldo process, containing the Control Language<br />

task, is named netlist1.cir, then the main .wdb file will be by default netlist1.wdb) must not be<br />

opened or closed using the functions wopen and wclose (otherwise the behavior will be<br />

completely undefined). Instead, the predefined wstdout variable has to be used as the identifier<br />

for this .wdb file. It is especially useful if the netlist is run with the option .option<br />

keep_<strong>eldo</strong>_cl_temp_waves=0 to completely control how waveforms are saved in this file. See<br />

“wdb File” in “Simulation” on page 1114.<br />

Description<br />

wdbId cannot be used anymore in any of the wdb management functions after the .wdb file has<br />

been closed.<br />

Related Topics<br />

Library of Functions for Tasks<br />

wget<br />

wmkfolder<br />

wopen<br />

wsave<br />

Eldo® User's Manual, 15.3 979


Eldo Control Language<br />

Library of Functions for Tasks<br />

wcreate_data_type<br />

Task function category: Functions Creating New Waveforms<br />

If the appropriate data type does not exist, it is possible to create it using this function.<br />

Usage<br />

wcreate_data_type("name", "base_type")<br />

wcreate_data_type("name", "base_type", "scale_table")<br />

Arguments<br />

• "name"<br />

Name of the new data type (it must be different from existing data types).<br />

• "base_type"<br />

Basic type of the values that will be allowed for this data type. It can be one of the following<br />

strings:<br />

"-Double" for double precision floating point values.<br />

"-Long" for integer values.<br />

"-Complex" for complex values.<br />

"-Enum" to define an enumerated type (need to use wadd_data_enum_value then to<br />

define the allowed values).<br />

• "scale_table"<br />

Name of the associated scale table (where units for this data type are defined). It can be one<br />

of the following:<br />

"Current" for a current scale table (sub-units: fA, pA, nA, …, A, …).<br />

"Frequency" for a frequency scale table (sub-units: fHz, pHz, nHz, …, Hz, …).<br />

"Magnitude" for a magnitude scale table (unit: dB).<br />

"noise" for a noise scale table (unit: dBc).<br />

"Phase" for a phase scale table (unit: radians).<br />

"phased" for a phase scale table (unit: degrees).<br />

"phaseg" for a phase scale table (unit: gradians).<br />

"temperatureC" for a temperature scale table (unit: Celsius).<br />

"temperatureK" for a temperature scale table (unit: Kelvin).<br />

"Time" for a time scale table (sub-units: fs, ps, ns, …, s, …).<br />

"Voltage" for a voltage scale table (sub-units: fV, pV, nV, …, V, …).<br />

Any scale table created with wcreate_scale_table and wadd_scale.<br />

980<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

Examples<br />

The following example shows how to create a “Size” data type and how to use it to plot the<br />

evolution of the saturation drain current versus the gate width and the gate length.<br />

Eldo® User's Manual, 15.3 981


Eldo Control Language<br />

Library of Functions for Tasks<br />

.define_testbench mos (vgs_val=1, vds_val=1, w_val=1u, l_val=1u)<br />

m1 d g s s n w=w_val l=l_val<br />

vgs g s vgs_val<br />

vds d s vds_val<br />

.connect d 0<br />

.dc<br />

.extract dc label=m1_ids '-i(vds)'<br />

.extract dc label=m1_mode opmode(m1)<br />

.end_define_testbench<br />

.define_task plot_ids_sat_w_l<br />

set w_res [] = 0<br />

set l_res [] = 0<br />

set ids_sat_w_res [] = 0<br />

set ids_sat_l_res [] = 0<br />

set w_ids_sat_w = 0<br />

set w_ids_sat_l = 0<br />

set w = 0<br />

set l = 0<br />

set vds = 0<br />

set vds_min = 0<br />

set vds_max = 5<br />

set m1_ids = 0<br />

set m1_mode = ""<br />

set i = 0<br />

set iter = 0<br />

/**<br />

* Compute ids_sat by dichotomy for many values of w.<br />

*/<br />

step (type = lin, param = w, start = 1u, stop = 5u, n = 20)<br />

i++<br />

w_res[i] = w<br />

/* Check bounds. */<br />

vds_min = 0<br />

vds_max = 5<br />

simulation(mos(w_val = w, vds_val=vds_min), m1_mode = @m1_mode, m1_ids<br />

= @m1_ids)<br />

if (m1_mode != "linear")<br />

fprint(stdout, "Failed to find ids_sat for w=%em because with<br />

vds=%eV, opmode(m1)=%s\n", w, vds_min, m1_mode)<br />

return -1<br />

endif<br />

simulation(mos(w_val = w, vds_val=vds_max), m1_mode = @m1_mode, m1_ids<br />

= @m1_ids)<br />

if (m1_mode != "saturation")<br />

fprint(stdout, "Failed to find ids_sat for w=%em because with<br />

vds=%eV, opmode(m1)=%s\n", w, vds_max, m1_mode)<br />

return -1<br />

endif<br />

/* Dichotomy. */<br />

982<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

iter = 0<br />

while (abs(vds_max - vds_min) > 0.001 && iter < 50)<br />

iter++<br />

vds = vds_min + (abs(vds_max - vds_min) / 2)<br />

simulation(mos(w_val = w, vds_val=vds), m1_mode = @m1_mode, m1_ids =<br />

@m1_ids)<br />

if (m1_mode == "linear")<br />

vds_min = vds<br />

else<br />

vds_max = vds<br />

endif<br />

endwhile<br />

if (iter >= 50)<br />

fprint(stdout, "Failed to find ids_sat in less than 50 iterations for<br />

w=%em.\n", w)<br />

return -1<br />

else<br />

ids_sat_w_res[i] = m1_ids<br />

endif<br />

endstep<br />

/**<br />

* Compute ids_sat by dichotomy for many values of l.<br />

*/<br />

i = 0<br />

step (type = lin, param = l, start = 1u, stop = 5u, n = 20)<br />

i++<br />

l_res[i] = l<br />

/* Check bounds. */<br />

vds_min = 0<br />

vds_max = 5<br />

simulation(mos(l_val = l, vds_val=vds_min), m1_mode = @m1_mode, m1_ids<br />

= @m1_ids)<br />

if (m1_mode != "linear")<br />

fprint(stdout, "Failed to find ids_sat for l=%em because with<br />

vds=%eV, opmode(m1)=%s\n", l, vds_min, m1_mode)<br />

return -1<br />

endif<br />

simulation(mos(l_val = l, vds_val=vds_max), m1_mode = @m1_mode, m1_ids<br />

= @m1_ids)<br />

if (m1_mode != "saturation")<br />

fprint(stdout, "Failed to find ids_sat for l=%em because with<br />

vds=%eV, opmode(m1)=%s\n", l, vds_max, m1_mode)<br />

return -1<br />

endif<br />

/* Dichotomy. */<br />

iter = 0<br />

while (abs(vds_max - vds_min) > 0.001 && iter < 50)<br />

iter++<br />

vds = vds_min + (abs(vds_max - vds_min) / 2)<br />

simulation(mos(l_val = l, vds_val=vds), m1_mode = @m1_mode, m1_ids =<br />

@m1_ids)<br />

if (m1_mode == "linear")<br />

vds_min = vds<br />

else<br />

Eldo® User's Manual, 15.3 983


Eldo Control Language<br />

Library of Functions for Tasks<br />

vds_max = vds<br />

endif<br />

endwhile<br />

if (iter >= 50)<br />

fprint(stdout, "Failed to find ids_sat in less than 50 iterations for<br />

l=%em.\n", l)<br />

return -1<br />

else<br />

ids_sat_l_res[i] = m1_ids<br />

endif<br />

endstep<br />

/**<br />

* Plot the waveforms.<br />

*/<br />

/* Create the scale table. */<br />

wcreate_scale_table("Size", "Sizes", "fm", 1e-15)<br />

wadd_scale("Size", "pm", 1e3)<br />

wadd_scale("Size", "nm", 1e6)<br />

wadd_scale("Size", "um", 1e9)<br />

wadd_scale("Size", "mm", 1e12)<br />

wadd_scale("Size", "m", 1e15)<br />

wadd_scale("Size", "km", 1e18)<br />

/* Create the data type. */<br />

wcreate_data_type("double_size", "-Double", "Size")<br />

/* Create the waveforms. */<br />

w_ids_sat_w = wcreate_wave(wstdout, "ids_sat(w)", "results",<br />

w_res,ids_sat_w_res, "double_size", "double_current")<br />

w_ids_sat_l = wcreate_wave(wstdout, "ids_sat(l)", "results", l_res,<br />

ids_sat_l_res, "double_size", "double_current")<br />

fprint(stdout, "\n\tPlot ids_sat(w) and ids_sat(l) succeeded.\n")<br />

end_define_task<br />

.plot_ids_sat_w_l<br />

.option set_<strong>eldo</strong>_cl_verbose=0<br />

.option remove_<strong>eldo</strong>_cl_temp_files=3<br />

.model n nmos<br />

+ level = 53 U0 = 0.041<br />

+ Lmin = 5E-7 Lmax = 0.01<br />

+ Wmin = 6E-7 Wmax = 0.01<br />

*<br />

…<br />

Related Topics<br />

Library of Functions for Tasks<br />

wadd_data_enum_value<br />

wadd_scale<br />

wcreate_scale_table<br />

wcreate_wave<br />

984<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

wset_values<br />

Testbenches<br />

Tasks<br />

Variables<br />

Defining and Running Simulations<br />

fprint<br />

Eldo® User's Manual, 15.3 985


Eldo Control Language<br />

Library of Functions for Tasks<br />

wcreate_scale_table<br />

Task function category: Functions Creating New Waveforms<br />

If the appropriate scale table does not exist, then it can be created with this function.<br />

Usage<br />

wcreate_scale_table("singular_name", "plural_name", "smalles_ unit",<br />

smallest_unit_value)<br />

Arguments<br />

• "singular_name"<br />

Singular name of the scale table (for example: "size").<br />

• "pural_name"<br />

Plural name of the scale table (for example: "sizes").<br />

• "smallest_unit"<br />

Smallest sub-unit of the scale table (for example: "fm").<br />

• smallest_unit_value<br />

Corresponding value of the smallest sub-unit (for example: 1e-15 if the smallest sub-unit is<br />

fm).<br />

Description<br />

Then wadd_scale must be called to define all sub-units.<br />

Examples<br />

For an example, see “wcreate_data_type” on page 980.<br />

Related Topics<br />

Library of Functions for Tasks<br />

wadd_data_enum_value<br />

wadd_scale<br />

wcreate_data_type<br />

wcreate_wave<br />

wset_values<br />

986<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

wcreate_wave<br />

Task function category: Functions Creating New Waveforms<br />

Creates a new waveform inside the specified .wdb file, and returns a waveform variable to, for<br />

example, call post-processing functions on it.<br />

Usage<br />

wcreate_wave(wdbId, "wave_name", "folder", [[x_values], y_values])<br />

wcreate_wave(wdbId, "wave_name", "folder", [[x_values], y_values],<br />

"x_data_type")<br />

wcreate_wave(wdbId, "wave_name", "folder", [[x_values], y_values],<br />

"x_data_type", "y_data_type")<br />

wcreate_wave(wdbId, "wave_name", "folder", [[x_values], y_values],<br />

"x_data_type", "y_data_type", "options")<br />

wcreate_wave(wdbId, "wave_name", "folder", [[x_values], y_values],<br />

"x_data_type", "y_data_type", "options", x_scale)<br />

wcreate_wave(wdbId, "wave_name", "folder", [[x_values], y_values],<br />

"x_data_type", "y_data_type", "options", x_scale, y_scale)<br />

Arguments<br />

• wdbId<br />

Identifier of the .wdb file where to create the waveform. It can be wstdout to create the<br />

waveform inside the main .wdb file, or any identifier of a .wdb file created with wopen in<br />

write mode.<br />

• "wave_name"<br />

Name to assign to the new waveform (no waveform with the same name must already exist<br />

in the folder where the wave will be created).<br />

• "folder"<br />

Path to the folder where the waveform will be created. If it does not exist, it will be created.<br />

The path may be hierarchical.<br />

• x_values<br />

Vector containing the x-values of the points to plot. If this argument is omitted and y_values<br />

are specified, then the indexes of the y-values in the vector y_values are taken as x-values.<br />

The values of x_values have to be ordered.<br />

• y_values<br />

Vector containing the y-values of the points to plot. If this argument and x_values are<br />

omitted then the waveform will be created empty and its content can be specified later using<br />

the wset_values function.<br />

This vector can contain complex values if the data type of the y-axis is set to "complex".<br />

Eldo® User's Manual, 15.3 987


Eldo Control Language<br />

Library of Functions for Tasks<br />

• x_data_type<br />

Data type of the x-axis. By default, it is set to "double". Possible values are as follows:<br />

"double" for double precision floating point values with no specific unit.<br />

"double_current" for double precision floating point current values (in A).<br />

"double_frequency" for double precision floating point frequency values (in Hz).<br />

"double_mag_db" for double precision floating point magnitude values (in dB).<br />

"double_phase" for double precision floating point phase values (in radians).<br />

"double_phased" for double precision floating point phase values (in degrees)<br />

"double_phaseg" for double precision floating point phase values (in gradians).<br />

"double_temperatureC" for double precision floating point temperature values<br />

(in Celsius).<br />

"double_temperatureK" for double precision floating point temperature values<br />

(in Kelvin).<br />

"double_time" for double precision floating point time values (in s).<br />

"double_voltage" for double precision floating point voltage values (in V).<br />

"long" for integer values with no specific unit.<br />

"long_index" for integer values representing an index.<br />

"noise" for double precision floating point noise values (in dBc).<br />

Any data type created with wcreate_data_type with the restriction than its type has to be -<br />

Long or -Double.<br />

Note<br />

Creating a waveform with "double_phase" as x_data_type only means that the<br />

values passed in x_values (or in a further call to wset_values) are given in radians; it<br />

won’t modify your EZwave display preferences. When displaying the waveform in<br />

EZwave, the x-axis may still be scaled in degrees if it is your preferential unit for phase<br />

data.<br />

• y_data_type<br />

Data type of the y-axis. By default, it is set to "double". Possible values are as follows:<br />

"boolean" for Boolean values.<br />

"complex" for complex values with no specific unit.<br />

"complex_current" for complex current values.<br />

"complex_voltage" for complex voltage values.<br />

"double" for double precision floating point values with no specific unit.<br />

"double_current" for double precision floating point current values (in A).<br />

"double_frequency" for double precision floating point frequency values (in Hz).<br />

988<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

"double_mag_db" for double precision floating point magnitude values (in dB).<br />

"double_phase" for double precision floating point phase values (in radians).<br />

"double_phased" for double precision floating point phase values (in degrees)<br />

"double_phaseg" for double precision floating point phase values (in gradians).<br />

"double_temperatureC" for double precision floating point temperature values<br />

(in Celsius).<br />

"double_temperatureK" for double precision floating point temperature values<br />

(in Kelvin).<br />

"double_time" for double precision floating point time values (in s).<br />

"double_voltage" for double precision floating point voltage values (in V).<br />

"long" for integer values with no specific unit.<br />

"long_index" for integer values representing an index.<br />

"noise" for double precision floating point noise values (in dBc).<br />

"std_logic" for std_logic values with the following mapping: {0 "'U'"} {1 "'X'"} {2<br />

"'0'"} {3 "'1'"} {4 "'Z'"} {5 "'W'"} {6 "'L'"} {7 "'H'"} {8 "'-'"}).<br />

Any data type created with wcreate_data_type.<br />

Note<br />

Creating a waveform with "double_phase" as y_data_type only means that the<br />

values passed in y_values (or in a further call to wset_values) are given in radians; it<br />

won’t modify your EZwave display preferences. When displaying the waveform in<br />

EZwave, the y-axis may still be scaled in degrees if it is your preferential unit for phase<br />

data.<br />

• "options"<br />

Is a list of options (can be empty) among the following ones:<br />

"-Type analog" to specify a continuous drawing mode.<br />

"-Type step" to specify a sampled drawing mode.<br />

"-Type histogram" to specify a histogram drawing mode.<br />

"-Type scatter" to specify a scattered drawing mode.<br />

"-Type spectral" to specify a spectral drawing mode.<br />

"-Type railroad" to specify a one-dimension drawing mode.<br />

"-LINEAR_X" to specify a linear scale for the x-axis.<br />

"-LOG_X" to specify a logarithmic scale for the x-axis.<br />

"-LOG2_X" to specify a logarithmic scale (base 2) for the x-axis.<br />

"-LINEAR_Y" to specify a linear scale for the y-axis.<br />

"-LOG_Y" to specify a logarithmic scale for the y-axis.<br />

Eldo® User's Manual, 15.3 989


Eldo Control Language<br />

Library of Functions for Tasks<br />

"-LOG2_Y" to specify a logarithmic scale (base 2) for the y-axis.<br />

• x_scale<br />

Is the scale of the x-axis. Default value is 1. For example, if the x_data_type is<br />

"double_voltage" and the x_scale is 1e-6, then it means the values of x_values are given in<br />

mV.<br />

• y_scale<br />

Is the scale of the y-axis. Default value is 1. For example, if the y_data_type is<br />

"double_voltage" and the y_scale is 1e-6, then it means the values of y_values are given in<br />

mV.<br />

Description<br />

You can use EZwave to display graphically the evolution of one measurement versus another<br />

(which is not always directly possible using a .PLOT command in the netlist) when setting up a<br />

complex corner case simulation plan.<br />

Examples<br />

The following example shows how to create two waveforms displaying the evolution of the<br />

saturation drain current versus the drain-to-source voltage, and the limit between linear and<br />

saturation regions depending on gate-to-source and drain-to-source voltages.<br />

The creation of the waveforms is obtained through the two calls to wcreate_wave at the end of<br />

the task. Everything that is done before is to compute the values to plot: first, the threshold gateto-source<br />

voltage is computed; then, the gate-to-source voltage is increased logarithmically<br />

from this threshold voltage and for each value, the saturation current and the saturation drain-tosource<br />

voltages are computed.<br />

990<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

.define_testbench mos (vgs_val = 1, vds_val = 1)<br />

m1 d g s s n w=3.2u l=1.2u<br />

vgs g s vgs_val<br />

vds d s vds_val<br />

.connect d 0<br />

.dc<br />

.extract dc label=m1_ids '-i(vds)'<br />

.extract dc label=m1_mode opmode(m1)<br />

.end_define_testbench<br />

.define_task plot_ids_sat_and_lim_lin_sat<br />

set vgs_res [] = 0<br />

set vds_sat_res [] = 0<br />

set ids_sat_res [] = 0<br />

set w_ids_sat_vds = 0<br />

set w_lim_lin_sat = 0<br />

set vgs = 0<br />

set vth = 0<br />

set vth_min = 0<br />

set vth_max = 5<br />

set vds = 0<br />

set vds_min = 0<br />

set vds_max = 5<br />

set m1_ids = 0<br />

set m1_mode = ""<br />

set i = 0<br />

set iter = 0<br />

/**<br />

* Find vth by dichotomy.<br />

*/<br />

/* Check bounds. */<br />

simulation(mos(vgs_val = vth_min), m1_mode = @m1_mode)<br />

if (m1_mode != "subthreshold")<br />

fprint(stdout, "Failed to find vth because with vgs=%eV,<br />

opmode(m1)=%s\n",<br />

vth_min, m1_mode)<br />

return -1<br />

endif<br />

simulation(mos(vgs_val = vth_max), m1_mode = @m1_mode)<br />

if (m1_mode == "subthreshold")<br />

fprint(stdout, "Failed to find vth because with vgs=%eV,<br />

opmode(m1)=%s\n",<br />

vth_max, m1_mode)<br />

return -1<br />

endif<br />

/* Dichotomy. */<br />

while (abs(vth_max - vth_min) > 0.001 && iter < 50)<br />

iter++<br />

vth = vth_min + (abs(vth_max - vth_min) / 2)<br />

simulation(mos(vgs_val = vth), m1_mode = @m1_mode)<br />

if (m1_mode == "subthreshold")<br />

vth_min = vth<br />

else<br />

vth_max = vth<br />

Eldo® User's Manual, 15.3 991


Eldo Control Language<br />

Library of Functions for Tasks<br />

endif<br />

endwhile<br />

if (iter >= 50)<br />

fprint(stdout, "Failed to find vth in less than 50 iterations.\n")<br />

return -1<br />

else<br />

fprint(stdout, "\n\tvth=%.2eV\n", vth)<br />

endif<br />

/**<br />

* Compute ids_sat by dichotomy for many values of vgs > vth.<br />

*/<br />

step (type=log, param=vgs, start = vth + 0.01, stop=10, dec=20)<br />

i++<br />

vgs_res[i] = vgs<br />

/* Check bounds. */<br />

vds_min = 0<br />

vds_max = 5<br />

simulation(mos(vgs_val = vgs, vds_val = vds_min), m1_mode = @m1_mode,<br />

m1_ids =<br />

@m1_ids)<br />

if (m1_mode != "linear")<br />

fprint(stdout, "Failed to find ids_sat for vgs=%eV because with vds=%eV,<br />

opmode(m1)=%s\n", vgs, vds_min, m1_mode)<br />

return -1<br />

endif<br />

simulation(mos(vgs_val = vgs, vds_val = vds_max), m1_mode = @m1_mode,<br />

m1_ids =<br />

@m1_ids)<br />

if (m1_mode != "saturation")<br />

fprint(stdout, "Failed to find ids_sat for vgs=%eV because with vds=%eV,<br />

opmode(m1)=%s\n", vgs, vds_max, m1_mode)<br />

return -1<br />

endif<br />

/* Dichotomy. */<br />

iter = 0<br />

while (abs(vds_max - vds_min) > 0.001 && iter < 50)<br />

iter++<br />

vds = vds_min + (abs(vds_max - vds_min) / 2)<br />

simulation(mos(vgs_val = vgs, vds_val = vds), m1_mode = @m1_mode, m1_ids<br />

=<br />

@m1_ids)<br />

if (m1_mode == "linear")<br />

vds_min = vds<br />

else<br />

vds_max = vds<br />

endif<br />

endwhile<br />

if (iter >= 50)<br />

fprint(stdout, "Failed to find ids_sat in less than 50 iterations for<br />

vgs=%eV.\n", vgs)<br />

return -1<br />

else<br />

vds_sat_res[i] = vds<br />

ids_sat_res[i] = m1_ids<br />

992<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

endif<br />

endstep<br />

/**<br />

* Create the waveforms.<br />

*/<br />

w_ids_sat_vds = wcreate_wave(wstdout, "ids_sat(vds)", "results",<br />

vds_sat_res,<br />

ids_sat_res, "double_voltage", "double_current")<br />

w_lim_lin_sat = wcreate_wave(wstdout, "vds_sat(vgs)", "results", vgs_res,<br />

vds_sat_res, "double_voltage", "double_voltage")<br />

fprint(stdout, "\n\tPlot ids_sat(vds) and vds_sat(vgs) succeeded.\n")<br />

.end_define_task<br />

.plot_ids_sat_and_lim_lin_sat<br />

.option set_<strong>eldo</strong>_cl_verbose=0<br />

.option remove_<strong>eldo</strong>_cl_temp_files=3<br />

.model n nmos<br />

+ level = 53 U0 = 0.041<br />

+ Lmin = 5E-7 Lmax = 0.01<br />

+ Wmin = 6E-7 Wmax = 0.01<br />

*<br />

+ Tnom = 25.0 Tox = 1.923E-08<br />

+ Xj = 2.385E-07 Nch = 1.568E+17<br />

+ lln = 1 lwn = 1<br />

+ wln = 1 wwn = 1<br />

+ lint = 1.651E-08 ll = 0<br />

+ wint = 2.914E-08 ww = 0<br />

+ Mobmod = 1 binunit = 1<br />

+ Dwg = 0 Dwb = 8.378E-09<br />

*<br />

+ Vth0 = 0.3248 K1 = 0.9641 K2 = -0.03744<br />

+ K3 = 25.64 lK3 = 0<br />

+ Dvt0 = 6.014 Dvt1 = 0.5389 Dvt2 = -0.06328<br />

+ Dvt0w = 9.103E-07 Dvt1w = 2E+06 Dvt2w = -9.733E-06<br />

+ Nlx = 1.74E-07 W0 = 2.039E-06 lW0 = 0<br />

+ K3b = -6.173 lK3b = 0<br />

*<br />

+ Vsat = 1.115E+05 lVsat = -2.364E+03 wVsat = 0<br />

+ Ua = -8.629E-10 Ub = 3.009E-18 Uc = 4.655E-11<br />

+ Rdsw = 1406 Prwb = -4.441E-19 Prwg = -2.662E-02<br />

+ Wr = 1.004<br />

+ A0 = 0.3287 lA0 = -0.07189 wA0 = -0.07049<br />

+ Keta = -0.02931 lKeta = 0 wKeta = 0<br />

+ A1 = 0.00 A2 = 0.9900000<br />

+ Ags = 4.441E-15 lAgs = -0.1 wAgs = 0<br />

+ B0 = 2.868E-06 B1 = 6.971E-06<br />

*<br />

+ Voff = -0.2 NFactor = 0.8724 Cit = -5.284E-04<br />

+ Cdsc = -1E-05 Cdscb = 6.172E-06 Cdscd = -1E-04<br />

+ Eta0 = 0.02484 Etab = -0.06802 Dsub = 0.6624<br />

*<br />

+ Pclm = 2.683<br />

+ Pdiblc1= 0.1875 Pdiblc2 = 1E-05 Pdiblcb = -0.001<br />

+ Drout = 0.6357 Pscbe1 = 4.597E+08 Pscbe2 = 31.79E-06<br />

+ Pvag = 3.828 Delta = 0.01<br />

+ Alpha0 = 4.183E-06 Beta0 = 36.27<br />

Eldo® User's Manual, 15.3 993


Eldo Control Language<br />

Library of Functions for Tasks<br />

*<br />

+ Kt1 = -0.3454 Kt2 = -2.952E-02<br />

+ At = 1.833E+04 Ute = -0.7011274<br />

+ Ua1 = 7.804E-09 Ub1 = -1.227E-17 Uc1 = 2.121E-10<br />

+ Kt1l = 0.00 Prt = 645.5<br />

*<br />

+ Cj = 4.54E-4 Mj = 0.115 Pb = 1<br />

+ Cjsw = 2.70E-10 Mjsw = 0.05 Php = 1<br />

+ Cta = 0 Ctp = 0 Pta = 0<br />

+ Ptp = 0<br />

+ Dlc = 1.29E-7 Cgbo = 1.154E-10<br />

*+ Js = 1.22E-7 N = 1.054 Xti = 1.346<br />

+ JS = 0.0 IS = 0.0 JSW = 0.0<br />

+ Capmod = 1 NQSMOD = 0 Elm = 5<br />

+ Xpart = 1<br />

+ Cgsl = 0 Cgdl = 0 Ckappa = 0.6<br />

+ Cf = 0 Clc = 1E-7 Cle = 0.6<br />

.end<br />

Related Topics<br />

Library of Functions for Tasks<br />

wadd_data_enum_value<br />

wadd_scale<br />

wcreate_data_type<br />

wcreate_scale_table<br />

wset_values<br />

Testbenches<br />

Tasks<br />

Variables<br />

Flow Control Statements<br />

Defining and Running Simulations<br />

fprint<br />

994<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

wget<br />

Task function category: Functions Operating on wdb Files<br />

Reads the waveform named wave1 located at the folder folder inside the .wdb file whose<br />

identifier is wdbId.<br />

Usage<br />

wget(wdbId, "folder/wave1")<br />

Arguments<br />

• wdbId<br />

.wdb file identifier.<br />

• "folder/wave1"<br />

Waveform wave1 located in the folder folder in the .wdb file whose identifier is wdbId.<br />

Description<br />

The .wdb file must have been opened in read mode. The result of this function must be assigned<br />

to a task variable to be able to perform any post processing for example on this waveform.<br />

Related Topics<br />

Library of Functions for Tasks<br />

wclose<br />

wmkfolder<br />

wopen<br />

wsave<br />

Eldo® User's Manual, 15.3 995


Eldo Control Language<br />

Library of Functions for Tasks<br />

wftoascii<br />

Task function category: Functions Operating on Waveforms<br />

Dumps a waveform in a text file.<br />

Usage<br />

wftoascii(path, wf)<br />

wftoascii(path, wf, x_start, x_end)<br />

Arguments<br />

• path<br />

Path for text file.<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Related Topics<br />

Library of Functions for Tasks<br />

wftodata<br />

996<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

wftodata<br />

Task function category: Functions Operating on Waveforms<br />

Returns the datapoints of a waveform in a matrix. Its first line is a vector containing the X<br />

values and its second line is a vector containing the Y values.<br />

Note<br />

This function may be highly memory-intensive if the waveform has many points.<br />

Usage<br />

wftodata(wf)<br />

wftodata(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Examples<br />

set i = 0<br />

set mat_wf = wftodata(w1, 10, 40)<br />

for(i= mat_wf[1].imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

wmkfolder<br />

Task function category: Functions Operating on wdb Files<br />

This function creates a folder folder in the .wdb file whose identifier is wdbId.<br />

Usage<br />

wmkfolder(wdbId, "folder")<br />

Arguments<br />

• wdbId<br />

.wdb file identifier.<br />

• "folder"<br />

Folder in the .wdb file whose identifier is wdbId.<br />

Description<br />

The .wdb file must have been opened in write mode. To create hierarchical folders, for example<br />

a folder folder_sub inside a folder folder_top (located at the root of the .wdb file), then the<br />

second argument has just to be set to folder_top/folder_sub, or /folder_top/folder_sub.<br />

Related Topics<br />

Library of Functions for Tasks<br />

wclose<br />

wget<br />

wopen<br />

wsave<br />

998<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

wopen<br />

Task function category: Functions Operating on wdb Files<br />

This function can be used to open .wdb files. The .wdb file must already exist to be opened in<br />

read mode. In write mode, it will be created if it does not exist, or overwritten if it already<br />

existed. This function returns a file identifier used in the next function to identify the .wdb file.<br />

Usage<br />

wopen("path/wdb1.wdb", "r" | "w")<br />

Arguments<br />

• "path/wdb1.wdb"<br />

Path to the .wdb file.<br />

• "r" | "w"<br />

Open mode. r for read or w for write (note that it is a string).<br />

Description<br />

wstdout Variable<br />

The main .wdb file (if the netlist run by the main Eldo process, containing the Control Language<br />

task, is named netlist1.cir, then the main .wdb file will be by default netlist1.wdb) must not be<br />

opened or closed using the functions wopen and wclose (otherwise the behavior will be<br />

completely undefined). Instead, the predefined wstdout variable has to be used as the identifier<br />

for this .wdb file. It is especially useful if the netlist is run with the option .option<br />

keep_<strong>eldo</strong>_cl_temp_waves=0 to completely control how waveforms are saved in this file. See<br />

“wdb File” in “Simulation” on page 1114.<br />

Related Topics<br />

Library of Functions for Tasks<br />

wclose<br />

wget<br />

wmkfolder<br />

wsave<br />

Eldo® User's Manual, 15.3 999


Eldo Control Language<br />

Library of Functions for Tasks<br />

wsave<br />

Task function category: Functions Operating on wdb Files<br />

This function saves the waveform which the variable wave points to inside the folder folder in<br />

the .wdb file whose identifier is wdbId.<br />

Usage<br />

wsave(wdbId, wave, "folder")<br />

Arguments<br />

• wdbId<br />

.wdb file identifier.<br />

• wave<br />

Variable pointing to the waveform.<br />

• "folder"<br />

Folder in the .wdb file whose identifier is wdbId.<br />

Description<br />

The .wdb file must have been opened in write mode. If the folder does not exist, it is<br />

automatically created. The folder can be hierarchical.<br />

Examples<br />

The following example shows how to save two waveforms of the first simulation in the file<br />

wdb1.wdb and two waveforms of the second simulation in the main .wdb file using the wstdout<br />

variable. It demonstrates also how to open the first .wdb file (wdb1.wdb) to read the waveforms<br />

saved in it and make some post-processing operations on them.<br />

1000<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

.option keep_<strong>eldo</strong>_cl_temp_waves=0<br />

.option remove_<strong>eldo</strong>_cl_temp_files=3<br />

.define_task t_save1 (file="")<br />

set w1 = 0<br />

set w2 = 0<br />

/* Create a wdb file to save the waveforms. */<br />

set wdb1 = wopen(file, "w")<br />

set res = simulation(w1=@w1, w2=@w2)<br />

if (res.simu_status == 0)<br />

/* Copy the waveforms. */<br />

wsave(wdb1, w1, "simu1")<br />

wsave(wdb1, w2, "simu1")<br />

fprint(stdout, "\nSimulation 1 succeeded.\n")<br />

else fprint(stdout, "\nSimulation 1 failed.\n")<br />

endif<br />

/* Save and close. */<br />

wclose(wdb1)<br />

.end_define_task<br />

.define_task t_save2<br />

set w1 = 0<br />

set w2 = 0<br />

set res = simulation(w1=@w1, w2=@w2)<br />

if (res.simu_status == 0)<br />

/* Copy the waveforms in the main wdb file. */<br />

wsave(wstdout, w1, "simu2")<br />

wsave(wstdout, w2, "simu2")<br />

fprint(stdout, "\nSimulation 2 succeeded.\n")<br />

else<br />

fprint(stdout, "\nSimulation 2 failed.\n")<br />

endif<br />

.end_define_task<br />

.define_task t_read (file="", folder="")<br />

set w1 = 0<br />

set w2 = 0<br />

set v = 0<br />

set wdbId = wstdout<br />

if (file != "")<br />

/* Open the file in read mode. */<br />

wdbId = wopen(file, "r")<br />

fprint(stdout, "\nUsing " + file + " file to read.\n")<br />

else<br />

fprint(stdout, "\nUsing main wdb file to read.\n")<br />

endif<br />

w1 = wget(wdbId, folder + "/w1")<br />

w2 = wget(wdbId, folder + "/w2")<br />

v = yval(w1, 1)<br />

fprint(stdout, "\tyval(w1, 1) = %.1f\n", v)<br />

v = yval(w2, 1)<br />

fprint(stdout, "\tyval(w2, 1) = %.1f\n", v)<br />

if (file != "")<br />

/* Close the file. */<br />

wclose(wdbId)<br />

endif<br />

Eldo® User's Manual, 15.3 1001


Eldo Control Language<br />

Library of Functions for Tasks<br />

.end_define_task<br />

* Call the tasks to save the waveforms in the specified file.t_save1<br />

file="wdb_save.wdb"<br />

.t_read file="wdb_save.wdb" folder="simu1"<br />

* Save the waveforms in the main wdb file<br />

.t_save2<br />

Related Topics<br />

Library of Functions for Tasks<br />

wclose<br />

wget<br />

wmkfolder<br />

wopen<br />

Testbenches<br />

Tasks<br />

Variables<br />

Flow Control Statements<br />

Defining and Running Simulations<br />

fprint<br />

1002<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

wset_values<br />

Task function category: Functions Creating New Waveforms<br />

This function can be used to set points to a waveform created with the wcreate_wave function if<br />

the x and y vectors were not given at that time. It can also be used to add new points to the<br />

waveform.<br />

Usage<br />

set_values(wave, y_values)<br />

wset_values(wave, x_values, y_values)<br />

Arguments<br />

• wave<br />

Waveform created with wcreate_wave.<br />

• x_values<br />

Vector containing the x-values of the points to plot. If this argument is omitted, then the<br />

indexes of the y-values in the vector y_values are taken as x-values. The values of x_values<br />

have to be ordered.<br />

• y_values<br />

Vector containing the y-values of the points to plot. This vector can contain complex values<br />

if the data type of the y-axis is set to "complex".<br />

Description<br />

The only restriction is that all the x-values must be ordered: it is not possible to add a point (x,y)<br />

to the waveform if its current last point (xl, yl) is such that xl > x. The function returns the<br />

number of values that have been successfully saved.<br />

Examples<br />

In the example given for wcreate_wave, it would have been possible to write the following in<br />

the task definition:<br />

Eldo® User's Manual, 15.3 1003


Eldo Control Language<br />

Library of Functions for Tasks<br />

…<br />

.define_task plot_ids_sat_and_lim_lin_sat<br />

set vgs_res [] = 0<br />

set vds_sat_res [] = 0<br />

set ids_sat_res [] = 0<br />

/**<br />

* Create empty waveforms.<br />

*/<br />

set w_ids_sat_vds = wcreate_wave(wstdout, "ids_sat(vds)", "results",<br />

"double_voltage", "double_current")<br />

set w_lim_lin_sat = wcreate_wave(wstdout, "vds_sat(vgs)", "results",<br />

"double_voltage", "double_voltage")<br />

…<br />

/**<br />

* Set the values of the waveforms.<br />

*/<br />

wset_values(w_ids_sat_vds, vds_sat_res, ids_sat_res)<br />

wset_values(w_lim_lin_sat, vgs_res, vds_sat_res)<br />

fprint(stdout, "\n\tPlot ids_sat(vds) and vds_sat(vgs) succeeded.\n")<br />

.end_define_task<br />

…<br />

Related Topics<br />

Library of Functions for Tasks<br />

wadd_data_enum_value<br />

wadd_scale<br />

wcreate_data_type<br />

wcreate_scale_table<br />

wcreate_wave<br />

1004<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

xdown<br />

Task function category: Functions Operating on Waveforms<br />

Returns a vector containing all the X values where a waveform falls below the given Y level<br />

with a negative slope.<br />

Usage<br />

xdown(wf, at_y)<br />

xdown(wf, at_y, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• at_y<br />

Y value.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

xup<br />

Eldo® User's Manual, 15.3 1005


Eldo Control Language<br />

Library of Functions for Tasks<br />

xmax<br />

Task function category: Functions Operating on Waveforms<br />

Returns the maximum X value where a waveform is defined.<br />

Usage<br />

xmax(wf)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

Related Topics<br />

Library of Functions for Tasks<br />

xmin<br />

1006<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

xmin<br />

Task function category: Functions Operating on Waveforms<br />

Returns the minimum X value where a waveform is defined.<br />

Usage<br />

xmin(wf)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

Related Topics<br />

Library of Functions for Tasks<br />

xmax<br />

Eldo® User's Manual, 15.3 1007


Eldo Control Language<br />

Library of Functions for Tasks<br />

xofmax<br />

Task function category: Functions Operating on Waveforms<br />

Returns a vector containing all the X values at the maximum (or maxima) of a waveform.<br />

Usage<br />

xofmin(wf)<br />

xofmin(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

Examples<br />

set i = 0<br />

set xres = xofmax(w1, 10, 40)<br />

fprint(stdout, "X values where w1 is maximum between 10 and 40 are:")<br />

for(i=xres.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

xofmin<br />

Task function category: Functions Operating on Waveforms<br />

Returns a vector containing all of the X values at the minimum (or minima) of a waveform.<br />

Usage<br />

xofmin(wf)<br />

xofmin(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

xofmax<br />

Eldo® User's Manual, 15.3 1009


Eldo Control Language<br />

Library of Functions for Tasks<br />

xup<br />

Task function category: Functions Operating on Waveforms<br />

Returns a vector containing all the X values where a waveform rises above the given Y level<br />

with a positive slope.<br />

Usage<br />

xup(wf, at_y)<br />

xup(wf, at_y, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• at_y<br />

Y value.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

Related Topics<br />

Library of Functions for Tasks<br />

xdown<br />

1010<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

xval<br />

Task function category: Functions Operating on Waveforms<br />

Returns in a vector all the X values at the given Y level of the waveform wf. If the slope is<br />

supplied, the result will be collected only when the waveform has the specified slope.<br />

Interpolation is applied.<br />

Usage<br />

xval(wf, at_y)<br />

xval(wf, at_y, slope)<br />

xval(wf, at_y, x_start, x_end)<br />

xval(wf, at_y, slope, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• at_y<br />

Y level in waveform.<br />

• slope<br />

Slope. Valid values are: pos, neg, or either.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Description<br />

Does not support complex waveforms (but it is possible to call it separately on the real part and<br />

the complex part or on the magnitude and phase of a complex waveform).<br />

Examples<br />

set i = 0<br />

set xres = xval(w1, 10.5)<br />

fprint(stdout, "X values where w1 is 10.5 are:")<br />

for(i=xres.imin; i


Eldo Control Language<br />

Library of Functions for Tasks<br />

xwave<br />

Task function category: Functions Operating on Waveforms<br />

Creates a new waveform with Y values identical to X values (the result is a waveform).<br />

Usage<br />

xwave(wf)<br />

xwave(wf, x_start, x_end)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• x_start<br />

Waveform start point.<br />

• x_end<br />

Waveform end point.<br />

Related Topics<br />

Library of Functions for Tasks<br />

1012<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Library of Functions for Tasks<br />

yval<br />

Task function category: Functions Operating on Waveforms<br />

Returns the Y value at a given X coordinate of a waveform. Interpolation is applied. If wf is a<br />

complex waveform, the result is a complex number.<br />

Usage<br />

yval(wf, at_x)<br />

Arguments<br />

• wf<br />

Waveform identifier.<br />

• at_x<br />

X coordinate in waveform.<br />

Examples<br />

set yres = yval(w1, 1.5)<br />

fprint(stdout, "The value of w1 at 1.5 is: %.4e", yres)<br />

Related Topics<br />

Library of Functions for Tasks<br />

xval<br />

Eldo® User's Manual, 15.3 1013


Eldo Control Language<br />

Simulation Dynamic Control<br />

Simulation Dynamic Control<br />

A callback mechanism is provided to temporarily stop the simulation at specific times to let the<br />

<strong>user</strong> execute some ECL commands to monitor the simulation. The way to get simulation results<br />

inside this callback is different to the simulation function method: you must explicitly use some<br />

predefined functions to obtain the results you want to access.<br />

Callback functions can use and modify variables of the calling task but the syntax may be quite<br />

heavy, especially if there are many variables to manage. This is why some simulation control<br />

functions are also provided to replace the simulation function and work directly in the main<br />

task.<br />

Limitations:<br />

• Dynamic control is only allowed over one simulation at a time.<br />

• Eldo Premier is not compatible with the functionality inside this Simulation Dynamic<br />

Control section. An error message will be output if callbacks or flow-control functions<br />

are used with Eldo Premier.<br />

• Callback functions are restricted to transient analyses.<br />

This section is divided into the following:<br />

• Callback Functions<br />

• Extended Simulation Functions<br />

Callback Functions<br />

A callback function can be defined and associated to a simulation function so that it is executed<br />

at predefined time intervals during a transient analysis.<br />

The callback function is an ECL <strong>user</strong>-defined function (or task). It can be assigned to a<br />

“simulation” function using the “callback” argument or the simulation function. When setting<br />

this argument, another argument is required which defines the condition when this callback will<br />

be called. This argument must be chosen from among the following five arguments:<br />

• progress_period<br />

Its value must be a number and stands for the percentage of simulation that has to be<br />

reached before calling the callback. For example, setting progress_period=20 means to<br />

execute the callback function when 20%, 40%, 60%, 80% and 100% of the simulation<br />

have been computed.<br />

• elapsed_s_period<br />

1014<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Simulation Dynamic Control<br />

Its value must be a number and stands for the time interval (in seconds) at which the<br />

callback will be executed. For example, setting elapsed_s_period=60 means to execute<br />

the callback function every 60 seconds of real time.<br />

• elapsed_m_period<br />

Same as elapsed_s_period but the number value stands for minutes.<br />

• elapsed_h_period<br />

Same as elapsed_s_period but the number value stands for hours.<br />

• condition<br />

Example:<br />

Contrary to the previous arguments, this argument does not define a periodic condition.<br />

Its value must be a string, standing for the condition that has to be met before executing<br />

the callback. Refer to the function _simu_set_cond to know which syntax is supported to<br />

specify this condition.<br />

Here is a simple example for displaying a simulation progress on the standard output every time<br />

10% of the simulation has been computed.<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, “Defining and Running Simulations” on page 841, and the fprint<br />

function for more information on the concepts used in the example.<br />

Eldo® User's Manual, 15.3 1015


Eldo Control Language<br />

Simulation Dynamic Control<br />

.define_task main_simu<br />

set ov = 0<br />

set max_g = 0<br />

set f_max_g = 0<br />

set res = simulation(<br />

/* netlist to simulate. */<br />

+ tb_filter(),<br />

/* The callback defined below will be called each time<br />

* 10% of the simulation has been computed.<br />

*/<br />

+ callback=f_callback(), progress_period=10,<br />

/* Results to get at the end. */<br />

+ ov=@overshoot, max_g=@max_gain, f_max_g=@f_max_gain)<br />

/* Output. */<br />

if (res.simu_status == 0)<br />

fprint(stdout, "\n\nSimulation succeeded.\n\n")<br />

fprint(stdout, "\tovershoot=%.1e V.\n", ov)<br />

fprint(stdout, "\tmax_gain=%.1e dB at %.1e Hz.\n", max_g, f_max_g)<br />

else<br />

fprint(stdout, "Simulation failed.\n")<br />

endif<br />

.end_define_task<br />

.define_function f_callback ()<br />

/* It is the callback function that will be called<br />

* regularly during the simulation.<br />

*/<br />

/* Use the functions '_simu_get' to access the current<br />

* simulation time and the progress.<br />

*/<br />

set curtime = _simu_get("time")<br />

set progress = _simu_get("progress")<br />

/* Output. */<br />

fprint(stdout, "Progress=%d%% (current simulation time=%.1e)\n",<br />

progress, curtime)<br />

/* Return 0: mandatory for the simulation to go on. */<br />

return 0<br />

.end_define_function<br />

* Call the task<br />

.main_simu<br />

* Remove temporary simulation files<br />

.option remove_<strong>eldo</strong>_cl_temp_files=3<br />

* Netlist<br />

.define_testbench tb_filter<br />

*4th Order Butterworth Filter<br />

1016<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Simulation Dynamic Control<br />

c1 4 0 1.5307n<br />

c2 3 0 1.0824n<br />

l1 3 4 1.5772u<br />

l2 2 3 .38268u<br />

r1 1 2 1<br />

v1 1 0 ac 1 pwl (0 0 1u 0 2u 1 20u 1 20.1u 0)<br />

.tran .2u 40u<br />

.plot tran v(4) (-1,1.5)<br />

.plot tran v(1) (0,1.5)<br />

.extract tran label=overshoot max(v(4)) - max(v(1))<br />

.ac dec 20 10000 100meg<br />

.option eps=1.0e-6 be<br />

.plot ac vdb(4) (-120,40)<br />

.plot ac vp(4) (-200,200)<br />

.extract ac label=max_gain max(vdb(4))<br />

.extract ac label=f_max_gain xmax(vdb(4))<br />

.end_define_testbench<br />

The output is:<br />

***** Running simulation ...<br />

***** Arguments:<br />

***** Simulation succeeded<br />

Progress=10% (current simulation time=4.0e-06)<br />

***** Simulation succeeded<br />

Progress=22% (current simulation time=8.8e-06)<br />

***** Simulation succeeded<br />

Progress=34% (current simulation time=1.4e-05)<br />

***** Simulation succeeded<br />

Progress=50% (current simulation time=2.0e-05)<br />

***** Simulation succeeded<br />

Progress=50% (current simulation time=2.0e-05)<br />

***** Simulation succeeded<br />

Progress=60% (current simulation time=2.4e-05)<br />

***** Simulation succeeded<br />

Progress=70% (current simulation time=2.8e-05)<br />

***** Simulation succeeded<br />

Progress=80% (current simulation time=3.2e-05)<br />

***** Simulation succeeded<br />

Progress=90% (current simulation time=3.6e-05)<br />

***** Simulation succeeded<br />

Progress=100% (current simulation time=4.0e-05)<br />

***** Simulation succeeded<br />

Simulation succeeded.<br />

overshoot=5.0e-02 V.<br />

max_gain=2.8e+01 dB at 2.8e+06 Hz.<br />

Eldo® User's Manual, 15.3 1017


Eldo Control Language<br />

Simulation Dynamic Control<br />

Return Value<br />

The result returned by the callback function indicates if the simulation can go on after the<br />

callback has been executed. It must be 0 to continue the simulation. Any other number will stop<br />

the simulation.<br />

Note<br />

Tasks can be used as callback functions. If a task does not explicitly end with a 'return'<br />

statement, then 0 is returned by default.<br />

Example:<br />

Here is an example of how to stop the simulation once a condition has been met (when the<br />

specific frequency of an oscillator has been reached).<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, “Defining and Running Simulations” on page 841, and the fprint<br />

function for more information on the concepts used in the example.<br />

1018<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Simulation Dynamic Control<br />

.define_task t_osc<br />

set w = 0<br />

set res = simulation(<br />

/* netlist to simulate. */<br />

+ tb_osc(),<br />

/* The callback defined below will be called when the<br />

* frequency is stabilized at 7 MHz.<br />

* 'period_osc' is a vector so need to specify '[LAST]'<br />

* to get the last calculated period.<br />

* Need to add a condition on time because the frequency<br />

* is erratic at the beginning before falling progressively<br />

* to 7 MHz.<br />

*/<br />

+ callback=f_callback_osc(),<br />

+ condition="(meas(period_osc[LAST]) > (1/7Meg)) && (time>1u)",<br />

/* To save the wave in the wdb file. */<br />

+ w=@w_osc)<br />

if (res.simu_status == 0)<br />

fprint(stdout, "Simulation succeeded.\n")<br />

else<br />

fprint(stdout, "Simulation failed.\n")<br />

endif<br />

.end_define_task<br />

.define_function f_callback_osc()<br />

/* It is the callback function that will be called<br />

* when the condition is met.<br />

*/<br />

set i = 0<br />

/* Get the time where the simulation was stopped. */<br />

set curtime = _simu_get("time")<br />

/* Get some extract values using '_simu_get_extract'. */<br />

set max_v = _simu_get_extract("max_v_osc")<br />

/* v_period i a vector. */<br />

set v_period = _simu_get_extract("period_osc")<br />

/* Get the last frequency. */<br />

set freq = 1 / v_period[v_period.imax]<br />

fprint(stdout, "Evolution of the frequency of the waveform from 0 s to<br />

%.2e s:\n", curtime) for (i = v_period.imin; i


Eldo Control Language<br />

Simulation Dynamic Control<br />

.t_osc<br />

* Remove temporary simulation files<br />

.option remove_<strong>eldo</strong>_cl_temp_files=3<br />

* Netlist<br />

.define_testbench tb_osc<br />

.model ts2 npn<br />

+ bf=10 br=1 xtb=3 is=10f eg=1.11 rb=100<br />

+ rc=10 vaf=50 tr=6n mjc=0.75 mje=0.33 vje=0.75<br />

*Colpitts Oscillator<br />

l1 1 3 5u<br />

c1 1 2 2n<br />

c2 2 3 100p<br />

r3 2 4 2200<br />

q1 3 0 2 ts2<br />

v1 1 0 5<br />

v2 4 0 -5<br />

i1 2 4 pulse(0 10u 0 5n 5n 25n 50n)<br />

.option eps=1.0e-6<br />

.tran 1u 12u<br />

.plot tran w_osc=v(1,3) (10,-10)<br />

.extract tran label=max_v_osc max(v(1,3))<br />

/* The extract to calculate the period of the waveform.<br />

* 'vect' must be specified so that all periods are<br />

* computed, and not only the first one.<br />

*/<br />

.extract tran vect label=period_osc tperiod(v(1,3), vth=0)<br />

.end_define_testbench<br />

The output is:<br />

Evolution of the frequency of the waveform from 0 s to 2.32e-06 s:<br />

frequency[ 1] = 6.964e+06 Hz<br />

frequency[ 2] = 7.563e+06 Hz<br />

frequency[ 3] = 7.677e+06 Hz<br />

frequency[ 4] = 7.676e+06 Hz<br />

frequency[ 5] = 7.689e+06 Hz<br />

frequency[ 6] = 7.702e+06 Hz<br />

frequency[ 7] = 7.687e+06 Hz<br />

frequency[ 8] = 7.624e+06 Hz<br />

1020<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Simulation Dynamic Control<br />

frequency[ 9] = 7.538e+06 Hz<br />

frequency[10] = 7.428e+06 Hz<br />

frequency[11] = 7.107e+06 Hz<br />

frequency[12] = 7.046e+06 Hz<br />

frequency[13] = 7.021e+06 Hz<br />

frequency[14] = 7.010e+06 Hz<br />

frequency[15] = 7.004e+06 Hz<br />

frequency[16] = 7.001e+06 Hz<br />

frequency[17] = 7.000e+06 Hz<br />

Frequency stabilized at 7.000e+06 Hz at t=2.32e-06 s.<br />

***** Simulation succeeded<br />

Callback Arguments<br />

The callback function can have input and output arguments. The way to set them is quite<br />

natural: the expression assigned to the “callback” argument of the simulation function is the<br />

expression evaluated when the callback function will be automatically executed.<br />

Example 1<br />

The values of some variables are passed from the main task to the callback:<br />

Eldo® User's Manual, 15.3 1021


Eldo Control Language<br />

Simulation Dynamic Control<br />

...<br />

.define_task t_rc<br />

set v = 10<br />

set r = 20<br />

set c = 0.1<br />

set res = simulation(tb_rc(p_v=v, p_r=r, p_c=c),<br />

/* Pass the testbench arguments to the callback. */<br />

+ callback=f_callback_rc(p_v=v, p_r=r, p_c=c),<br />

+ condition="v(2) > " + (0.632 * v))<br />

if (res.simu_status == 0)<br />

fprint(stdout, "Simulation succeeded.\n")<br />

else<br />

fprint(stdout, "Simulation failed.\n")<br />

endif<br />

.end_define_task<br />

.define_function f_callback_rc (p_v=1, p_c=1, p_r=1)<br />

fprint(stdout, "The simulation of 'tb_rc p_v=%.1f p_c=%.1f p_r=%.1f' has<br />

been stopped " +<br />

+ "at t = %.1f s " +<br />

+ "because the expected condition has been met.\n",<br />

+ _simu_get("time"),<br />

+ p_v, p_r, p_c)<br />

return 1<br />

.end_define_function<br />

.t_rc<br />

It is possible to do the same if the callback needs to have output arguments.<br />

If a periodic callback needs to save some values so that it can retrieve them the next time it is<br />

called, then it has to define one input and one output variable for each of them, to be able to<br />

store and get the result from a local variable defined in the main task.<br />

See “Tasks” on page 814, “Variables” on page 821, “Flow Control Statements” on page 835,<br />

“Defining and Running Simulations” on page 841, and the fprint function for more information<br />

on the concepts used in the example.<br />

Example 2<br />

This example shows how to sample a signal using a periodic callback and store the values in an<br />

array defined in the main task. The current index in the array also needs to be saved.<br />

1022<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Simulation Dynamic Control<br />

.define_function f_callback (in_sampling[] = 0, @out_sampling[] = 0,<br />

+ in_cur_index = 0, @out_cur_index = 0)<br />

/* Get the voltage value. */<br />

set v2 = _simu_get("v(2)")<br />

/* Save previous results into working variables<br />

* (that will be returned).<br />

*/<br />

out_sampling = in_sampling<br />

out_cur_index = in_cur_index<br />

/* Save voltage. */<br />

out_sampling[out_cur_index] = v2<br />

out_cur_index++<br />

return 0<br />

.end_define_function<br />

.define_task main_simu<br />

set arr_sampling[] = 0<br />

set cur_index = 0<br />

set i = 0<br />

set res = simulation(callback=f_callback(in_sampling = arr_sampling,<br />

+ in_cur_index = cur_index,<br />

+ arr_sampling = @out_sampling,<br />

+ cur_index = @out_cur_index),<br />

+ elapsed_s_period=1)<br />

if (res.simu_status == 0)<br />

fprint(stdout, "Simulation succeeded.\n\n")<br />

fprint(stdout, "Sampling values for v(2):\n")<br />

for (i=0; i


Eldo Control Language<br />

Extended Simulation Functions<br />

Extended Simulation Functions<br />

Simulation results can be monitored inside a callback function. But some specific functions<br />

have to be used depending on the type of the data to get. It is also possible to modify some<br />

netlist parameters during the simulation or also to use flow-control functions to avoid using<br />

callbacks which may sometimes be necessary. All these functions begin with the prefix<br />

“_simu”.<br />

Table 18-4. Extended Simulation Functions<br />

Command<br />

Description<br />

Netlist Monitoring These functions are used to monitor the simulation.<br />

Functions<br />

Simulation Flow-Control<br />

Functions<br />

Netlist Modification<br />

Functions<br />

_simu_end<br />

_simu_get<br />

_simu_get_extract<br />

_simu_load<br />

_simu_reload<br />

_simu_run<br />

Using callback functions is not the only mechanism to have<br />

a tight control over simulations. To have a more linear<br />

control over simulations, the simulation function has been<br />

split into some more specific functions.<br />

When using the simulation flow-control functions, it is<br />

possible to modify some netlist parameters between runs<br />

with the _simu_set function.<br />

Exits the current simulation and evaluates the output<br />

expressions.<br />

Returns the current value of the specified voltage or current<br />

at the current simulation time.<br />

Returns the value of the extract having the label label.<br />

This function has similar syntax to the current simulation<br />

function and its purpose is to setup the simulation<br />

environment. It will create the simulation file dir/file.cir and<br />

return a result structure (as the simulation command): as<br />

usual, its simu_status attribute is set to 0 if no syntax error<br />

was found during the netlist processing. This is the first<br />

command to be executed before any other advanced<br />

simulation function. No other flow-control function can be<br />

run if this function has not successfully executed.<br />

Reloads the file generated by the last call to _simu_load. If<br />

the netlist was modified using the simu_set function, then<br />

these changes are erased.<br />

Runs the current simulation once the simulation<br />

environment has been set. Its result is the same as the<br />

simulation function.<br />

1024<br />

Eldo® User's Manual, 15.3


Command<br />

_simu_set<br />

_simu_set_cond<br />

_simu_get_wave<br />

Table 18-4. Extended Simulation Functions (cont.)<br />

Description<br />

Eldo Control Language<br />

Extended Simulation Functions<br />

When using the simulation flow-control functions, it is<br />

possible to modify some netlist parameters between runs<br />

with the _simu_set function.<br />

Sets a stop condition.<br />

Returns the wave having the name wave to be able to make<br />

some post-processing on it.<br />

Netlist Monitoring Functions<br />

These functions are used to monitor the simulation.<br />

Refer to “Extended Simulation Functions” on page 1024.<br />

Simulation Flow-Control Functions<br />

Using callback functions is not the only mechanism to have a tight control over simulations. To<br />

have a more linear control over simulations, the simulation function has been split into some<br />

more specific functions.<br />

The three functions _simul_load, _simu_run, and_simu_end are equivalent to the usual<br />

simulation function:<br />

Refer to “Extended Simulation Functions” on page 1024.<br />

Netlist Modification Functions<br />

When using the simulation flow-control functions, it is possible to modify some netlist<br />

parameters between runs with the _simu_set function.<br />

Refer to “Extended Simulation Functions” on page 1024.<br />

Eldo® User's Manual, 15.3 1025


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_end<br />

Task function category: Simulation Flow-Control Functions<br />

Exits the current simulation and evaluates the output expressions.<br />

Usage<br />

_simu_end(loc_var1=@extract1, loc_var2=@wave2, ...)<br />

Arguments<br />

• loc_var1=@extract1<br />

Extract data.<br />

• loc_var2=@wave2<br />

Waveform data.<br />

Description<br />

All simulation data used in these output expressions must have been pre-declared in the<br />

_simu_load function (out_vars argument).<br />

Related Topics<br />

_simu_set_cond<br />

_simu_load<br />

_simu_reload<br />

_simu_run<br />

Extended Simulation Functions<br />

1026<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_get<br />

Task function category: Netlist Monitoring Functions<br />

Returns the current value of the specified voltage or current at the current simulation time.<br />

Usage<br />

_simu_get("voltage")<br />

_simu_get("current")<br />

_simu_get("expression")<br />

Arguments<br />

• "voltage"<br />

Return the voltage.<br />

• "current"<br />

Returns the current.<br />

• "expression"<br />

Evaluates an expression.<br />

Description<br />

Expressions of the general-purpose extraction language can also be evaluated if the necessary<br />

.PLOT commands have been specified in the netlist. The expression cannot be the label of an<br />

extract; the function _simu_get_extract may be used in this case.<br />

Examples<br />

_simu_get("v(2)")<br />

_simu_get("i(2)")<br />

_simu_get("max(v(2))") /* '.plot tran v(2)' is necessary in the<br />

netlist. */<br />

Related Topics<br />

_simu_get_extract<br />

_simu_get_wave<br />

Extended Simulation Functions<br />

Eldo® User's Manual, 15.3 1027


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_get_extract<br />

Task function category: Netlist Monitoring Functions<br />

Returns the value of the extract having the label label.<br />

Usage<br />

_simu_get_extract("label")<br />

Arguments<br />

• "label"<br />

Return the label.<br />

Description<br />

If this command is executed during the simulation, then only expressions of the transient<br />

extraction language can be used with this command. If the extract has not yet been computed at<br />

the time the simulation was stopped, then the function returns UNDEF.<br />

Extract expressions using the general-purpose language are only computed at the end of the<br />

simulation so are not available using this specific function (taking the label of the extract as<br />

argument) inside a callback for example.<br />

The _simu_get function may be used instead (but passing the entire expression as argument).<br />

Examples<br />

/* '.extract tran label=cross_v2 tcross(v(2), vth=1.5)' is necessary in<br />

the netlist. */<br />

_simu_get_extract("cross_v2")<br />

Related Topics<br />

_simu_get<br />

_simu_get_wave<br />

Extended Simulation Functions<br />

1028<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_load<br />

Task function category: Simulation Flow-Control Functions<br />

This function has similar syntax to the current simulation function and its purpose is to setup the<br />

simulation environment. It will create the simulation file dir/file.cir and return a result structure<br />

(as the simulation command): as usual, its simu_status attribute is set to 0 if no syntax error was<br />

found during the netlist processing. This is the first command to be executed before any other<br />

advanced simulation function. No other flow-control function can be run if this function has not<br />

successfully executed.<br />

Usage<br />

_simu_load([name="dir/file.cir"], [log="dir/file.log"],<br />

+ [args="-<strong>eldo</strong>_arg"], [testbench1(arg1=val1)], [testbench2(arg2=val2)],<br />

...<br />

+ [out_vars="@extract1 @wave2"])<br />

Arguments<br />

• name="dir/file.cir"<br />

Simulation file to be created.<br />

• log="dir/file.log"<br />

Log file.<br />

• args="-<strong>eldo</strong>_arg"<br />

List of Eldo arguments.<br />

• testbench1(arg1=val1)<br />

Testench 1<br />

• testbench2(arg2=val2)<br />

Testbench 2.<br />

• out_vars="@extract1 @wave2"<br />

Specifies which data will be requested at the end of the simulation (in _simu_end).<br />

Related Topics<br />

_simu_end<br />

_simu_set_cond<br />

_simu_reload<br />

_simu_run<br />

Extended Simulation Functions<br />

Eldo® User's Manual, 15.3 1029


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_reload<br />

Task function category: Simulation Flow-Control Functions<br />

Reloads the file generated by the last call to _simu_load. If the netlist was modified using the<br />

simu_set function, then these changes are erased.<br />

Usage<br />

_simu_reload()<br />

Arguments<br />

None.<br />

Related Topics<br />

_simu_end<br />

_simu_load<br />

_simu_run<br />

_simu_set_cond<br />

Extended Simulation Functions<br />

1030<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_run<br />

Task function category: Simulation Flow-Control Functions<br />

Runs the current simulation once the simulation environment has been set. Its result is the same<br />

as the simulation function.<br />

Usage<br />

_simu_run(mode="after va1")<br />

_simu_run(mode="until val1")<br />

_simu_run(mode="for val1")<br />

_simu_run(mode="next")<br />

_simu_run(mode="skip")<br />

Arguments<br />

• mode<br />

The mode argument may be set to partially run the simulation: its value is a string specifying<br />

a simulation period or a specific simulation time to reach.<br />

Description<br />

The simu_status field of the result will be set to 0 if no error occurred during the simulation.<br />

Without any parameter, a call to this command will run the simulation completely.<br />

Examples<br />

S/* Asks to go on simulating during 2ns (simulation time). */<br />

_simu_run(mode="for 2n")<br />

/* Asks to go on simulating until the simulation has been computed until<br />

exactly 10ns (simulation time). */<br />

_simu_run(mode="until 10n")<br />

/* Asks to go on simulating until the simulation has been computed until<br />

about 10ns (simulation time). */<br />

_simu_run(mode="after 10n")<br />

If the netlist contains a .STEP command, then one call to _simu_run(mode="next") will run<br />

only one simulation. If the simulation was stopped (for example if a stop condition is met, see<br />

_simu_set_cond), _simu_run(mode="skip") requests the simulator to stop the simulation. It is<br />

then possible to run it again from the beginning (after modifying some parameters for example,<br />

see _simu_set.<br />

Related Topics<br />

_simu_end<br />

_simu_load<br />

_simu_reload<br />

_simu_set_cond<br />

Extended Simulation Functions<br />

Eldo® User's Manual, 15.3 1031


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_set<br />

1032<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_set<br />

Task function category: Netlist Modification Functions<br />

When using the simulation flow-control functions, it is possible to modify some netlist<br />

parameters between runs with the _simu_set function.<br />

Usage<br />

_simu_set("e", "device", ["W/L/AD/AS/PD/PS/NRD/NRS/AREA",] va1)<br />

_simu_set("m", "model", "parameter", val1)<br />

_simu_set("p", "parameter", val1)<br />

Arguments<br />

• _simu_set("e", "device", ["W/L/AD/AS/PD/PS/NRD/NRS/AREA",] va1)<br />

This function can be used to modify the value of the device device. If necessary, the<br />

parameter name must be specified.<br />

• _simu_set("m", "model", "parameter", val1)<br />

This function can be used to change the value of the parameter parameter of the model<br />

model to val1.<br />

• _simu_set("p", "parameter", val1)<br />

This function can be used to change the value of the parameter parameter to the value val1.<br />

Description<br />

The value of its first argument must be either e, m, or p, and specifies the type of data to modify:<br />

device, model, or parameter. Compared to the simulation function, the advantage of this flow is<br />

that the simulator does not need to elaborate the netlist again, which would be costly if the<br />

netlist is large.<br />

Examples<br />

Example 1:<br />

w = _simu_set("e", "m16", "w", 4.8u)<br />

Example 2:<br />

Here is an example of finding the value of a parameter that will make the voltage of node 2<br />

reach 1.5V before 10ns.<br />

Eldo® User's Manual, 15.3 1033


Eldo Control Language<br />

Extended Simulation Functions<br />

set v2 = 0<br />

set param1 = 0<br />

set res_load = 0<br />

set res_run = 0<br />

set irun = 0<br />

set w = 0<br />

res_load = _simu_load(tb_netlist(), out_vars="@w2")<br />

if (res_load.simu_status == 0)<br />

param1 = _simu_get("pval(param1)")<br />

/* First run. */<br />

irun++<br />

res_run = _simu_run(mode="until 10n")<br />

if (res_run.simu_status == 0)<br />

/* Get voltage. */<br />

v2 = _simu_get("v(2)")<br />

while (v2 < 1.5)<br />

/* Skip end of simulation. */<br />

_simu_run(mode="skip")<br />

/* Set new value of 'param1'. */<br />

param1 += 0.1<br />

_simu_set("p", "param1", param1)<br />

/* Run again. */<br />

irun++<br />

res_run = _simu_run(mode="until 10n")<br />

if (res_run.simu_status != 0)<br />

fprint(stdout, "Simulation failed (run %d).\n", irun)<br />

break<br />

endif<br />

/* Get new voltage. */<br />

v2 = _simu_get("v(2)")<br />

endwhile<br />

fprint(stdout, "Param1 must be set to: %.4e.\n", param1)<br />

/* Complete the simulation. */<br />

_simu_run()<br />

else<br />

fprint(stdout, "Simulation failed (run %d).\n", irun)<br />

endif<br />

else<br />

fprint(stdout, "Simulation failed (load).\n")<br />

endif<br />

_simu_end(w=@w2) /* Save the wave in the wdb file. */<br />

Related Topics<br />

Simulation Dynamic Control<br />

Extended Simulation Functions<br />

Variables<br />

Flow Control Statements<br />

1034<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Extended Simulation Functions<br />

Defining and Running Simulations<br />

fprint<br />

Eldo® User's Manual, 15.3 1035


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_set_cond<br />

Task function category: Simulation Flow-Control Functions<br />

Sets a stop condition.<br />

Usage<br />

_simu_set_cond("condition")<br />

Arguments<br />

• "condition"<br />

Stop condition.<br />

Description<br />

The condition can refer to the simulation time value (time), the real time (elapsed_s, elapsed_n,<br />

elapsed_h), the simulation progress (progress), voltages or currents and labels of extracts using<br />

the transient extraction language (but the corresponding .PLOT commands must have been<br />

specified in the netlist and the extract label must be enclosed inside the meas function).<br />

Examples<br />

Notes:<br />

_simu_set_cond("v(2) > 1.5")<br />

_simu_set_cond("(time > 500n) || (elapsed_m >= 20)")<br />

/* If a '.extract tran label=cross1 tcross(v(2),vth=1)' is contained in<br />

the netlist:*/<br />

_simu_set_cond("meas(cross1) > 0")<br />

• Only one condition can be active at a time. A call to _simu_set_cond will delete the<br />

previous conditions. However, multiple conditions can be combined into one condition<br />

using the boolean operators || and &&.<br />

• If you want to use more complex expressions, it is advised to add parentheses around the<br />

different parts composing the expressions. Most of the time, it will help prevent syntax<br />

errors.<br />

The result structure returned by the _simu_run function has a field named simu_stop. It can be<br />

used to know if the simulation has stopped because the condition set with the _simu_set_cond<br />

function has been met or if it has stopped because the simulation has ended without reaching the<br />

condition. If the condition is met, then the _simu_stop attribute will be set to 1. If the simulation<br />

has ended, it is set to -1. If the simulation stopped because of the mode attribute of the<br />

_simu_run function (for example if mode="for 2n" and that the simulator completed the<br />

simulation of this time period), then it is set to 0.<br />

Example:<br />

1036<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Extended Simulation Functions<br />

set thresh = 2<br />

set max_time = 10<br />

set v2 = 0<br />

set res_load = 0<br />

set res_run = 0<br />

/* Init simu. */<br />

res_load = _simu_load()<br />

if (res_load.simu_status == 0)<br />

/* Set stop condition. */<br />

_simu_set_cond("(v(2) > " + thresh + ") || (time > " + max_time + ")")<br />

/* Run until condition is met. */<br />

res_run = _simu_run()<br />

if (res_run.simu_status == 0)<br />

if (res_run.simu_stop == 1)<br />

fprint(stdout, "The condition has been reached: v(2)=%.1f and<br />

time=%.1f.\n",<br />

+ _simu_get("v(2)"), _simu_get("time"))<br />

else<br />

fprint(stdout, "The condition has not been reached.\n")<br />

endif<br />

else<br />

fprint(stdout, "Simulation failed (run).\n")<br />

endif<br />

else<br />

fprint(stdout, "Simulation failed (load).\n")<br />

endif<br />

Related Topics<br />

_simu_end<br />

_simu_reload<br />

_simu_load<br />

_simu_run<br />

Extended Simulation Functions<br />

Variables<br />

Flow Control Statements<br />

Defining and Running Simulations<br />

fprint<br />

Eldo® User's Manual, 15.3 1037


Eldo Control Language<br />

Extended Simulation Functions<br />

_simu_get_wave<br />

Task function category: Netlist Monitoring Functions<br />

Returns the wave having the name wave to be able to make some post-processing on it.<br />

Note<br />

If executed during the simulation, this function may be very costly. Specifically, it will have<br />

to save the .wdb file of the simulation into an auxiliary file to be able to extract wave data.<br />

Usage<br />

_simu_get_wave("wave")<br />

Arguments<br />

• "wave"<br />

Wave name.<br />

Examples<br />

w = _simu_get_wave("w_c2") /* '.plot tran w_c2=v(2)' is necessary in the<br />

netlist. */<br />

Related Topics<br />

_simu_get<br />

_simu_get_extract<br />

Extended Simulation Functions<br />

1038<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Parallel Operation<br />

Parallel Operation<br />

This section is divided into the following:<br />

• General Settings for Parallelism in ECL<br />

• Parallel Construct<br />

• Parallel Loops<br />

• Extended Simulation Functions<br />

• Launching ECL Simulations on Different Machines<br />

General Settings for Parallelism in ECL<br />

Parallelism in ECL means that ECL code will be executed inside different execution threads at<br />

the same time. These threads belong to the main Eldo process, so they will always be run on the<br />

computer that executes the ECL netlist.<br />

The parallelizable ECL code specified by the <strong>user</strong> is split by ECL into jobs. The threads will<br />

execute these jobs in parallel. There can be more jobs than threads; in that case a thread will<br />

execute another job when it has finished its first job. When there is no parallelism, there is only<br />

one thread, the main thread, which executes all these jobs sequentially.<br />

It is usually interesting to run simulations inside these jobs so that they are executed in parallel.<br />

Simulations are launched by ECL on other Eldo processes (they can be even launched on<br />

different machines when using the .ELDO_CL_MPRUN command). It is important to<br />

understand that parallelism is done at the level of the threads executing ECL jobs, not at the<br />

level of the Eldo processes running simulations; the Eldo processes will be run in parallel only if<br />

the jobs executing the simulation commands are executed by different threads.<br />

The maximum number of threads used for parallelism can be set using the option<br />

set_<strong>eldo</strong>_cl_max_para=val. The default value corresponds to the number of processors of the<br />

computer. If threads are used to run simulations on the same computer, it is not advised to<br />

increase this number (having more threads than processors to execute heavy jobs is not<br />

efficient).<br />

Concurrency Issues<br />

ECL is very strict about what can be parallelized to avoid concurrency issues (variables having<br />

different values depending on the order of execution of the jobs) and will output errors if the<br />

code is not thread safe. The best way to write correct parallel code is to store any result inside<br />

arrays indexed by the index of the current job and to perform any post-processing inside<br />

sequential code.<br />

Eldo® User's Manual, 15.3 1039


Eldo Control Language<br />

Parallel Operation<br />

Difference Between Sequential and Parallel Execution<br />

The same task run with parallelism activated or deactivated should have exactly the same effect<br />

except for the following two points:<br />

• If outputs are printed by tasks run in parallel, then the order of the outputs is undefined.<br />

If the order is important then you must not use fprint inside tasks run in parallel but<br />

outside, for example in a loop run sequentially.<br />

• A break used inside a loop run in parallel may cause differences between sequential and<br />

parallel execution; see the section “Continue, Break and Return Parallel Behavior” on<br />

page 1050.<br />

Generated Netlists<br />

For simulations run in parallel, if you specify the same netlist name for each simulation, ECL<br />

changes it automatically to suffix it with the index of the job.<br />

Waveforms<br />

Inside the main wdb file, the names of waveforms generated by simulations run will be suffixed<br />

by a unique index to avoid concurrency issues.<br />

Debug Mode<br />

When in debug mode (setenv ELDO_CL_DEBUG) when jobs are executed in parallel, their<br />

debug outputs are mixed but they are prefixed with the index of the corresponding job to enable<br />

better understanding.<br />

Related Topics<br />

Parallel Construct<br />

Parallel Construct<br />

The first parallel construct enables you to define tasks or functions (jobs) to be run in parallel.<br />

The results of the tasks or functions are stored inside an array.<br />

Para Function to Parallelize Tasks<br />

See function “Identifying the Index of the Current Job” on page 1040.<br />

Identifying the Index of the Current Job<br />

For ease of use, it is possible to call the function ijob() to obtain the index of the current job.<br />

Example: basic use of ijob():<br />

1040<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Parallel Operation<br />

.define_task t_print_index(index=0)<br />

fprint(stdout, "Index: %d\n", index)<br />

.end_define_task<br />

.define_task t_main_para<br />

para(t_print_index(index=ijob()) /* ijob() returns 1. */,<br />

+ t_print_index(index=ijob()) /* ijob() returns 2. */)<br />

.end_define_task<br />

.t_main_para<br />

The output of the execution of the previous example can be:<br />

Index: 1<br />

Index: 2or:Index: 2<br />

Index: 1<br />

Example: storing results inside arrays:<br />

Eldo® User's Manual, 15.3 1041


Eldo Control Language<br />

Parallel Operation<br />

.define_testbench tb_netlist(pr_value=100k, pc_value=10u)<br />

.param pr=pr_value<br />

.param pc=pc_value<br />

v1 1 0 PWL 0 0 0.1 3<br />

r1 1 2 pr<br />

c1 2 0 pc<br />

.tran 1 10<br />

.extract label=t2 xthres(v(2), 2)<br />

.end_define_testbench<br />

.define_task t_main_para<br />

set i = 0<br />

set r_val[] = {10k, 20k, 30k, 40k, 50k}<br />

set t2[] = 0<br />

/* Run 5 different simulations in parallel for each value of r1<br />

* and get the extract results inside the array named t2.<br />

*/<br />

set res = para(simulation(tb_netlist(pr_value=r_val[ijob()]),<br />

+ t2[ijob()]=@t2),<br />

+ simulation(tb_netlist(pr_value=r_val[ijob()]),<br />

+ t2[ijob()]=@t2),<br />

+ simulation(tb_netlist(pr_value=r_val[ijob()]),<br />

+ t2[ijob()]=@t2),<br />

+ simulation(tb_netlist(pr_value=r_val[ijob()]),<br />

+ t2[ijob()]=@t2),<br />

+ simulation(tb_netlist(pr_value=r_val[ijob()]),<br />

+ t2[ijob()]=@t2))<br />

for (i=res.imin; i


Concurrency Issues<br />

Eldo Control Language<br />

Parallel Operation<br />

When using the function para(), concurrency issues can emerge if some output results are stored<br />

inside the same variable. If this happens, then ECL will generate an error. Therefore it is<br />

strongly recommended to store results inside arrays indexed by the index of the current job.<br />

Example: ECL issues an error because the variable res is accessed in write mode by two<br />

different jobs:<br />

.define_task t_assign_value (in=0, @out=0)<br />

out=in<br />

.end_define_task<br />

.define_task t_main_para<br />

set res = 0<br />

para(t_assign_value(in=1, res=@out),<br />

+ t_assign_value(in=2, res=@out))<br />

fprint(stdout, "res: %d\n", res)<br />

.end_define_task<br />

.t_main_para<br />

Example: fix the concurrency issue using an array.<br />

.define_task t_assign_value (in=0, @out=0)<br />

out=in.end_define_task<br />

.define_task t_main_para<br />

set res[] = 0<br />

set i = 0<br />

para(t_assign_value(in=1, res[ijob()]=@out),<br />

+ t_assign_value(in=2, res[ijob()]=@out))<br />

for (i=res.imin; i


Eldo Control Language<br />

Parallel Operation<br />

.define_testbench tb_netlist(pr_value=100k, pc_value=10u)<br />

.param pr=pr_value<br />

.param pc=pc_value<br />

v1 1 0 PWL 0 0 0.1 3<br />

r1 1 2 pr<br />

c1 2 0 pc<br />

.tran 1 10<br />

.extract label=t2 xthres(v(2), 2)<br />

.end_define_testbench<br />

.define_task t_main_para<br />

para(t_inner_para(r_val=50k),<br />

+ t_inner_para(r_val=100k))<br />

.end_define_task<br />

.define_task t_inner_para(r_val=100k)<br />

set t2[] = 0<br />

set res[] = 0<br />

set c_val[] = {5u, 10u}<br />

set i = 0<br />

res = para(simulation(tb_netlist(pr_value=r_val,<br />

+ pc_value=c_val[ijob()]),<br />

+ t2[ijob()]=@t2),<br />

+ simulation(tb_netlist(pr_value=r_val,<br />

+ pc_value=c_val[ijob()]),<br />

+ t2[ijob()]=@t2))<br />

for (i=res.imin; i


Eldo Control Language<br />

Parallel Operation<br />

para<br />

Task function category: Parallelize Functions<br />

The function para() is used to run in parallel the tasks and functions specified as parameters.<br />

The first parallel construct enables you to define tasks or functions (jobs) to be run in parallel.<br />

The results of the tasks or functions are stored inside an array.<br />

Usage<br />

para()<br />

para(task1(), task2())<br />

Arguments<br />

• task 1<br />

First task to be run in parallel.<br />

• task 2<br />

Second task to be run in parallel.<br />

Examples<br />

Example: task1 and task2 run in parallel:<br />

para(task1(), task2())<br />

The result returned by the function para() is an array containing the results of the execution of<br />

the arguments.<br />

Example: obtaining the results of two simulations:<br />

set i =0<br />

set res[] = 0<br />

res = para(simulation(tb1()),<br />

+ simulation(tb2()))<br />

for (i=res.imin; i


Eldo Control Language<br />

Parallel Operation<br />

Parallel Loops<br />

step and for loops can be parallelized by using the keywords para_step and para_for. The body<br />

of the loop defines jobs that can be executed in parallel (one job for each run of the loop).<br />

Note<br />

It is not possible to parallelize while loops because the loop variable is managed inside the<br />

body of the loop itself and therefore it cannot be parallelized.<br />

para_for/para_step to Parallelize Loops<br />

Adding para_ in front of a loop requests ECL to parallelize the loop if the content of the loop<br />

does not contain concurrency errors. When the loop is executed, it creates a job for each<br />

iteration. Then these jobs are executed in parallel.<br />

Example: ten iterations of the loop are parallelized:<br />

.define_task t_for_para<br />

set i = 0<br />

para_for (i = 10k;<br />

+ i


Eldo Control Language<br />

Parallel Operation<br />

Example: use of ijob() inside a step parallel loop:<br />

.define_task t_step_para<br />

set i = 0<br />

para_step (type=step,<br />

+ param=i,<br />

+ start=100k,<br />

+ stop=10k,<br />

+ step=-10k)<br />

fprint(stdout,<br />

+ "Beginning run %d with i=%.2g.\n",<br />

+ ijob(),<br />

+ i)<br />

end_para_step<br />

.end_define_task<br />

.t_step_para<br />

The output of this example may be:<br />

Beginning run 1 with i=1e+05.<br />

Beginning run 3 with i=8e+04.<br />

Beginning run 2 with i=9e+04.<br />

Beginning run 4 with i=7e+04.<br />

Beginning run 6 with i=5e+04.<br />

Beginning run 5 with i=6e+04.<br />

Beginning run 7 with i=4e+04.<br />

Beginning run 9 with i=2e+04.<br />

Beginning run 8 with i=3e+04.<br />

Beginning run 10 with i=1e+04.<br />

Concurrency Issues<br />

To prevent concurrency issues from occurring, ECL is very strict about code that is allowed to<br />

be parallelized inside loops. By default, no scalar variable can be assigned inside a parallel loop<br />

(otherwise a syntax error is generated). It is only possible to store values inside arrays. During<br />

execution, ECL checks that no value of an array is accessed by more than one job in write mode.<br />

If more than one job accesses the same value (inside an array) in write mode, then an error<br />

occurs at run time. It is strongly recommended to store results inside arrays indexed by the<br />

index of the current job.<br />

Example: a step parallel loop running simulations:<br />

Eldo® User's Manual, 15.3 1047


Eldo Control Language<br />

Parallel Operation<br />

.define_testbench tb_netlist(pr_value=100k, pc_value=10u)<br />

.param pr=pr_value<br />

.param pc=pc_value<br />

v1 1 0 PWL 0 0 0.1 3<br />

r1 1 2 pr<br />

c1 2 0 pc<br />

.tran 1 10<br />

.extract label=t2 xthres(v(2), 2)<br />

.end_define_testbench<br />

.define_task t_step_para<br />

set i = 0<br />

set cumul = 0<br />

set nb_errors = 0<br />

/* Use arrays to prevent concurrency errors. */<br />

set r_val[] = 0<br />

set res[] = 0<br />

set t2[] = 0<br />

/* Parallel loop for simulations. */<br />

para_step (type=step,<br />

+ param=i,<br />

+ start=10k,<br />

+ stop=100k,<br />

+ step=10k)<br />

r_val[ijob()] = i<br />

res[ijob()] = simulation(tb_netlist(pr_value=r_val[ijob()]),<br />

+ t2[ijob()]=@t2)<br />

/* Forbidden to compute cumul here (concurrency issue). */<br />

/* cumul += t2[ijob()] */<br />

end_para_step<br />

/* Sequential loop to analyze results;<br />

* cumul can be computed only here.<br />

*/<br />

for (i = res.imin;<br />

+ i


Eldo Control Language<br />

Parallel Operation<br />

+ cumul / (res.size - nb_errors))<br />

endif<br />

.end_define_task<br />

.t_step_para<br />

Local Declarations for Temporary Results<br />

To avoid using arrays for temporary results, you can declare some local variables inside a<br />

parallel loop even if .option restrict_<strong>eldo</strong>_cl_declarations=1. In this case, each run of the loop<br />

has its own internal copy of the variable and then it is allowed to modify its value inside the<br />

loop body. When .option restrict_<strong>eldo</strong>_cl_declarations=1, it is not allowed to define local<br />

variables having the same name as other task variables.<br />

Tip<br />

See “.OPTION RESTRICT_ELDO_CL_DECLARATIONS” in the Eldo Reference<br />

Manual.<br />

Example: alternative to the previous example; if not computing the average and if the order of<br />

the outputs does not matter, it is possible to avoid using arrays by using private variables:<br />

Eldo® User's Manual, 15.3 1049


Eldo Control Language<br />

Parallel Operation<br />

.define_testbench tb_netlist(pr_value=100k, pc_value=10u)<br />

.param pr=pr_value<br />

.param pc=pc_value<br />

v1 1 0 PWL 0 0 0.1 3<br />

r1 1 2 pr<br />

c1 2 0 pc<br />

.tran 1 10<br />

.extract label=t2 xthres(v(2), 2)<br />

.end_define_testbench<br />

.define_task t_step_para<br />

set i = 0<br />

/* Parallel loop for simulations. */<br />

para_step (type=step,<br />

+ param=i,<br />

+ start=10k,<br />

+ stop=100k,<br />

+ step=10k)<br />

/* Use local variables for local results inside the loop. */<br />

set res = 0<br />

set t2 = 0<br />

res = simulation(tb_netlist(pr_value=i),<br />

+ t2=@t2)<br />

if (res.simu_status == 0)<br />

fprint(stdout,<br />

+ "t2=%.2g for R=%.2g\n",<br />

+ t2, i)<br />

else<br />

fprint(stdout,<br />

+ "Run %d failed.\n",<br />

+ ijob())<br />

endif<br />

end_para_step<br />

.end_define_task<br />

.t_step_para<br />

Continue, Break and Return Parallel Behavior<br />

The continue keyword has the same meaning and the same effect inside a parallel loop as inside<br />

a sequential loop: the current run is stopped. The break and return keywords have a different<br />

semantic: break and return only prevent the execution of runs (jobs) that have not begun<br />

(because of .option set_<strong>eldo</strong>_cl_max_para); all runs that have begun won’t be stopped.<br />

Example: because of parallelism, using a break on the 5th run will not always prevent the 6th<br />

from being executed:<br />

1050<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Parallel Operation<br />

.define_task t_step_para<br />

set i = 0<br />

para_step (type=step,<br />

+ param=i,<br />

+ start=100k,<br />

+ stop=10k,<br />

+ step=-10k)<br />

set j = ijob()<br />

fprint(stdout,<br />

+ "Beginning run %d with i=%.2g.\n",<br />

+ j,<br />

+ i)<br />

system("sleep 10")<br />

if (j == 5)<br />

fprint(stdout, "Break on run 5!\n")<br />

break<br />

endif<br />

fprint(stdout,<br />

+ "End of run %d.\n",<br />

+ j)<br />

end_para_step<br />

.end_define_task<br />

.t_step_para<br />

The output of this example may be:<br />

Beginning run 1 with i=1e+05.<br />

Beginning run 3 with i=8e+04.<br />

Beginning run 2 with i=9e+04.<br />

Beginning run 4 with i=7e+04.<br />

End of run 2.<br />

End of run 1.<br />

Beginning run 6 with i=5e+04.<br />

Beginning run 5 with i=6e+04.<br />

End of run 3.<br />

End of run 4.<br />

Beginning run 7 with i=4e+04.<br />

Break on run 5!<br />

End of run 6.<br />

End of run 7.<br />

Multiple Levels of Parallelism<br />

It is possible to have nested loops executed in parallel.<br />

Example: use of a matrix to store extract results of nested loops:<br />

Eldo® User's Manual, 15.3 1051


Eldo Control Language<br />

Parallel Operation<br />

.define_testbench tb_netlist(pr_value=100k, pc_value=10u)<br />

.param pr=pr_value<br />

.param pc=pc_value<br />

v1 1 0 PWL 0 0 0.1 3<br />

r1 1 2 pr<br />

c1 2 0 pc<br />

.tran 1 10<br />

.extract label=t2 xthres(v(2), 2)<br />

.end_define_testbench<br />

.define_task t_step_para<br />

set j1 = 0<br />

set j2 = 0<br />

set r_val = 0<br />

set c_val = 0<br />

set r_values[] = 0<br />

set c_values[] = 0<br />

set mat[][] = 0<br />

para_step (type=step,<br />

+ param=r_val,<br />

+ start=10k,<br />

+ stop=100k,<br />

+ step=10k)<br />

set job1 = ijob()<br />

r_values[job1] = r_val<br />

para_step (type=step,<br />

+ param=c_val,<br />

+ start=1u,<br />

+ stop=10u,<br />

+ step=1u)<br />

set job2 = ijob()<br />

set t2 = 0<br />

set res = 0<br />

/* Store c_val only once otherwise error! */<br />

if (job1 == 1)<br />

c_values[job2] = c_val<br />

endif<br />

res = simulation(tb_netlist(pr_value=r_val, pc_value=c_val),<br />

+ t2=@t2)<br />

if (res.simu_status != 0)<br />

t2 = -1<br />

fprint(stdout,<br />

+ "Simulation#%d#%d failed!",<br />

+ job1, job2)<br />

endif<br />

mat[job1][job2] = t2<br />

end_para_step<br />

end_para_step<br />

for (j1=r_values.imin; j1


Eldo Control Language<br />

Parallel Operation<br />

fprint(stdout,<br />

+ "t2=%.2f for R=%.2g and C=%.2g\n",<br />

+ mat[j1][j2], r_values[j1], c_values[j2])<br />

endfor<br />

endfor<br />

.end_define_task<br />

.t_step_para<br />

Related Topics<br />

Extended Simulation Functions<br />

Extended Simulation Functions<br />

Simulations run inside different jobs are independent from each other. It is not possible to load<br />

the netlist with _simu_load inside one job and to execute _simu_run functions inside other jobs.<br />

The only way to use extended simulation functions in parallel is to do _simu_load and then<br />

_simu_run inside each job.<br />

Example: tasks containing extended simulation functions can be run in parallel:<br />

Eldo® User's Manual, 15.3 1053


Eldo Control Language<br />

Parallel Operation<br />

.define_testbench tb_netlist()<br />

.param pr=100k<br />

.param pc=10u<br />

v1 1 0 PWL 0 0 0.1 3<br />

r1 1 2 pr<br />

c1 2 0 pc<br />

.tran 1 10<br />

.extract label=t2 xthres(v(2), 2)<br />

.end_define_testbench<br />

.define_task t_run(pr_value=10k, index=0)<br />

set res = 0<br />

set t2 = 0<br />

/* Load the netlist. */<br />

res = _simu_load(tb_netlist())<br />

if (res.simu_status == 0)<br />

/* Modify the parameter. */<br />

_simu_set("p", "pr", pr_value)<br />

/* Run the simulation. */<br />

res = _simu_run()<br />

if (res.simu_status == 0)<br />

t2 = _simu_get_extract("t2")<br />

fprint(stdout,<br />

+ "t2=%.2g for R=%.2g\n",<br />

+ t2, pr_value)<br />

else<br />

fprint(stdout, "Running simulation %d failed!\n", index)<br />

endif<br />

else<br />

fprint(stdout, "Loading simulation %d failed!\n", index)<br />

endif<br />

_simu_end()<br />

.end_define_task<br />

.define_task t_main_para<br />

para(t_run(pr_value=10k, index=ijob()),<br />

+ t_run(pr_value=20k, index=ijob()),<br />

+ t_run(pr_value=30k, index=ijob()),<br />

+ t_run(pr_value=40k, index=ijob()),<br />

+ t_run(pr_value=50k, index=ijob()))<br />

.end_define_task<br />

.t_main_para<br />

Related Topics<br />

Launching ECL Simulations on Different Machines<br />

1054<br />

Eldo® User's Manual, 15.3


Launching ECL Simulations on Different Machines<br />

Eldo Control Language<br />

Parallel Operation<br />

The .ELDO_CL_MPRUN command is the equivalent of the .MPRUN command but at the ECL<br />

level. The .ELDO_CL_MPRUN command is used to dispatch the simulations executed from<br />

ECL tasks on one multi-processor machine, or on many machines.<br />

The .ELDO_CL_MPRUN command has the same syntax as the .MPRUN command except for<br />

some restrictions (see the .ELDO_CL_MPRUN command in the Eldo Reference Manual).<br />

Options set_<strong>eldo</strong>_cl_max_para and remove_<strong>eldo</strong>_cl_temp_files can be used to overcome some<br />

of these limitations. The two commands .ELDO_CL_MPRUN and .MPRUN can be combined<br />

since they operate at different levels.<br />

Example: how to dispatch parallel ECL simulations on many machines:<br />

Eldo® User's Manual, 15.3 1055


Eldo Control Language<br />

Parallel Operation<br />

.define_testbench tb_netlist(pr_value=100k)<br />

.param pr=pr_value<br />

v1 1 0 PWL 0 0 0.1 3<br />

r1 1 2 pr<br />

c1 2 0 10u<br />

.tran 1 10<br />

.extract label=t2 xthres(v(2), 2)<br />

.end_define_testbench<br />

.define_task t_step_para<br />

set i = 0<br />

set r_val_step = 0<br />

set t2[] = 0<br />

set r_val[] = 0<br />

para_step (type=step,<br />

+ param=r_val_step,<br />

+ start=10k,<br />

+ stop=100k,<br />

+ step=10k)<br />

set job = ijob()<br />

set res = 0<br />

r_val[job] = r_val_step<br />

res = simulation(name="simu_para/step_" +<br />

+ job +<br />

+ ".cir",<br />

+ tb_netlist(pr_value=r_val_step),<br />

+ t2[job]=@t2)<br />

if (res.simu_status == 0)<br />

fprint(stdout, "Simulation #" + job + " succeeded.\n")<br />

else<br />

fprint(stdout, "Simulation #" + job + " failed!\n")<br />

endif<br />

end_para_step<br />

for (i=r_val.imin; i


Eldo Control Language<br />

Parallel Operation<br />

.define_testbench tb_netlist(pr_value=100k)<br />

.param pr=pr_value<br />

v1 1 0 PWL 0 0 0.1 3<br />

r1 1 2 pr<br />

c1 2 0 10u<br />

.tran 1 10<br />

.extract label=t2 xthres(v(2), 2)<br />

.end_define_testbench<br />

.define_task t_sim<br />

set res = 0<br />

set t2_res = 0<br />

res = simulation(name="simu/simu.cir",<br />

+ tb_netlist(),<br />

+ t2_res=@t2)<br />

if (res.simu_status == 0)<br />

fprint(stdout, "t2=%.2f\n", t2_res)<br />

else<br />

fprint(stdout, "Simulation failed!\n")<br />

endif<br />

.end_define_task<br />

.t_sim<br />

.<strong>eldo</strong>_cl_mprun dispatcher=lsf<br />

+ dispatcher_options=(-q myqueue -m "host1 host2 host3")<br />

Related Topics<br />

Parallel Operation<br />

Eldo® User's Manual, 15.3 1057


Eldo Control Language<br />

Statistical Processing<br />

Statistical Processing<br />

Controlling a Monte Carlo simulation with ECL relies on the ECL extended simulation flow.<br />

The Monte Carlo flow is dedicated to advanced <strong>user</strong>s, with a strong knowledge of statistics.<br />

This is not supported by Eldo Premier.<br />

The flow to control a Monte Carlo simulation is as follows:<br />

• Activate the extended simulation flow<br />

The first function to call to activate the ECL Monte Carlo flow is the _simu_load<br />

function to load the netlist in the extended simulation flow.<br />

Tip<br />

See also Simulation Dynamic Control.<br />

• Activating the Monte Carlo Flow<br />

The ECL Monte Carlo flow is activated using the function:<br />

_simu_set_mc_flow([max_nb_runs])<br />

• Accessing Statistical Parameters<br />

After the netlist is loaded and the ECL Monte Carlo flow activated, you can access<br />

statistical parameters, managed internally by ECL and identified by an index.<br />

The first index is 1 and the number of statistical parameters is given by a call to the<br />

following function:<br />

_simu_get_nb_stat_params<br />

Use the following functions to access data related to statistical parameters:<br />

_simu_get_stat_param_name<br />

_simu_get_stat_param_distrib<br />

For uniform and normal distributions, you can call the following functions:<br />

_simu_get_stat_param_nom<br />

_simu_get_stat_param_ref_param<br />

_simu_is_stat_param_dev<br />

_simu_is_stat_param_locked<br />

_simu_get_stat_param_dev<br />

_simu_get_stat_param_nb_draw<br />

_simu_is_stat_param_devx<br />

Use the following functions to parse their names:<br />

1058<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_netlist_param<br />

_simu_get_stat_param_netlist_dev<br />

_simu_get_stat_param_netlist_dev_pa<br />

ram<br />

_simu_get_stat_param_netlist_mod<br />

_simu_get_stat_param_netlist_mod_p<br />

aram<br />

Use the following functions to modify statistical parameters:<br />

_simu_lock_stat_param<br />

_simu_set_mc_flow<br />

• Modifying the Sampling<br />

You can modify the sampling values of the statistical parameters with the following<br />

functions:<br />

_simu_get_stat_param_sampling_val<br />

_simu_get_raw_sampling<br />

_simu_erase_last_run<br />

_simu_get_sampling<br />

_simu_set_stat_param_sampling_val<br />

_simu_get_random<br />

Use the following functions to generate random values:<br />

_simu_get_random<br />

_simu_reset_random_generators<br />

• Running the Nominal Simulation<br />

After the netlist is loaded and the ECL Monte Carlo flow activated, you run the nominal<br />

simulation using the function:<br />

Running Monte Carlo Runs in Parallel(mode="nom")<br />

• Controlling the Monte Carlo Runs<br />

The _simu_run function also enables you to execute a specified number of Monte Carlo<br />

runs:<br />

Running Monte Carlo Runs in Parallel<br />

• Monitoring Monte Carlo Results<br />

After the requested number of Monte Carlo simulations has been executed, results are<br />

accessible through the use of post-processing functions.<br />

See functions operating on arrays in “Library of Functions for Tasks” on page 854.<br />

Eldo® User's Manual, 15.3 1059


Eldo Control Language<br />

Statistical Processing<br />

In addition, you can use the following function (requires a simulation to be loaded with<br />

_simu_load):<br />

_simu_get_mcsens.<br />

• Running Monte Carlo Runs in Parallel<br />

You can run ECL Monte Carlo simulations in parallel, the simulations will be performed<br />

by different simulators.<br />

See “Running Monte Carlo Runs in Parallel” on page 1105.<br />

The default sampling values generated by ECL when no parallel structures are used in the ECL<br />

tasks are the same as the sampling values generated by Eldo when dataflow=1 is specified on<br />

the .MC command. To compare results obtained with ECL Monte Carlo flow to Eldo Monte<br />

Carlo results, dataflow=1 must be specified on the .MC command when running the netlist with<br />

Eldo.<br />

When Monte Carlo simulations are run inside parallel loops by ECL, sampling values will be<br />

different because ECL will create one random number generator by job to ensure the<br />

reproducibility of the results.<br />

Table 18-5. Statistical Processing Functions<br />

Command<br />

Description<br />

_simu_erase_all_runs Erases all sampling data from all the previous Monte Carlo<br />

runs so that they are not taken into account if<br />

_simu_get_sampling() or _simu_get_raw_sampling() is<br />

called.<br />

_simu_erase_last_run Erases all sampling data from the previous Monte Carlo run<br />

so that it is not taken into account if _simu_get_sampling()<br />

or _simu_get_raw_sampling() is called.<br />

_simu_get_mcsens Returns the sensitivity list of the elements of the array array<br />

for a given sampling.<br />

_simu_get_nb_stat_param Returns the number of statistical parameters inside a netlist.<br />

s<br />

_simu_get_random Returns a random value corresponding to the requested<br />

distribution.<br />

_simu_get_raw_sampling Returns a matrix containing all the sampling values<br />

computed during the Monte Carlo simulation.<br />

_simu_get_sampling Returns a matrix containing all the sampling values<br />

computed during the Monte Carlo simulation.<br />

1060<br />

Eldo® User's Manual, 15.3


Command<br />

_simu_get_stat_param_de<br />

v<br />

_simu_get_stat_param_dis<br />

trib<br />

_simu_get_stat_param_na<br />

me<br />

_simu_get_stat_param_nb<br />

_draw<br />

_simu_get_stat_param_net<br />

list_dev<br />

_simu_get_stat_param_net<br />

list_dev_param<br />

_simu_get_stat_param_net<br />

list_mod<br />

_simu_get_stat_param_net<br />

list_mod_param<br />

_simu_get_stat_param_net<br />

list_param<br />

_simu_get_stat_param_no<br />

m<br />

_simu_get_stat_param_ref<br />

_param<br />

_simu_get_stat_param_sa<br />

mpling_val<br />

_simu_is_stat_param_dev<br />

_simu_is_stat_param_dev<br />

x<br />

_simu_is_stat_param_lock<br />

ed<br />

_simu_is_stat_param_lot<br />

Table 18-5. Statistical Processing Functions (cont.)<br />

Description<br />

Eldo Control Language<br />

Statistical Processing<br />

Returns the deviation (for Gaussian distributions) or halfrange<br />

(for uniform distributions) value of the parameter<br />

identified by the index stat_param_index.<br />

Returns the name of the distribution identified by the index<br />

stat_param_index.<br />

Returns the name of the parameter identified by the index<br />

stat_param_index.<br />

Returns a positive integer value that acts as a multiplier to<br />

set how many times the value of the parameter identified by<br />

the index stat_param_index is to be calculated (only the<br />

random value having the greatest deviation is selected).<br />

Returns the name of the corresponding device in the netlist<br />

(device_name), or "" if not relevant.<br />

Returns the name of the corresponding device parameter in<br />

the netlist (device_parameter_name), or "" if not relevant.<br />

Returns the name of the corresponding model in the netlist<br />

(model_name), or "" if not relevant.<br />

Returns the name of the corresponding model parameter in<br />

the netlist (model_parameter_name), or "" if not relevant.<br />

Returns the name of the corresponding parameter in the<br />

netlist (parameter_name).<br />

Returns the nominal (mean) value of the parameter<br />

identified by the index stat_param_index.<br />

Returns the index of the parameter on which the parameter<br />

stat_param_index depends (0 if none).<br />

Returns the current sampling value of the parameter<br />

identified by the index stat_param. It is the value used for<br />

the next Monte Carlo run.<br />

Returns 1 if the statistical parameter comes from a DEV<br />

variation.<br />

Returns 1 if the statistical parameter comes from a DEVX<br />

variation.<br />

Returns 1 if the parameter identified by the index<br />

stat_param_index has been locked, that is to say it will not<br />

vary and remain to its nominal value.<br />

Returns 1 if the statistical parameter comes from a LOT<br />

variation.<br />

Eldo® User's Manual, 15.3 1061


Eldo Control Language<br />

Statistical Processing<br />

Command<br />

_simu_lock_stat_param<br />

_simu_reset_random_gene<br />

rators<br />

_simu_run<br />

_simu_set_mc_flow<br />

_simu_set_stat_param_sa<br />

mpling_val<br />

_simu_unlock_stat_param<br />

Running Monte Carlo<br />

Runs in Parallel<br />

Table 18-5. Statistical Processing Functions (cont.)<br />

Description<br />

Specifies that the value of the parameter identified by the<br />

index stat_param_index must not vary during the Monte<br />

Carlo simulation and remain equal to its nominal value.<br />

Resets the random number generators. This can be useful to<br />

reset the random number generators between two Monte<br />

Carlo simulations if you want them to use the same random<br />

numbers.<br />

_simu_run(mode="nom") runs the nominal Monte Carlo<br />

simulation and returns a result structure (as the simulation<br />

function).<br />

Activates the ECL Monte Carlo flow. The netlist may or<br />

may not contain a .MC command; it is entirely ignored if the<br />

ECL Monte Carlo flow is activated.<br />

Sets the current sampling value of the parameter identified<br />

by the index stat_param to the value val. It will be the value<br />

used for the next Monte Carlo run.<br />

Specifies that the value of the parameter identified by the<br />

index stat_param_index must vary during the Monte Carlo<br />

simulation according to its distribution.<br />

Running ECL Monte Carlo simulations in parallel requires<br />

to call _simu_load, _simu_set_mc_flow, simu_run and<br />

_simu_end inside the para_for loop. This means the Monte<br />

Carlo simulations will be performed by different simulators.<br />

1062<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_erase_all_runs<br />

Task function category: Statistical Processing Functions<br />

Erases all sampling data from all the previous Monte Carlo runs so that they are not taken into<br />

account if _simu_get_sampling() or _simu_get_raw_sampling() is called.<br />

Note<br />

This function can only be called in ECL Monte Carlo flow.<br />

Usage<br />

_simu_erase_all_runs()<br />

Arguments<br />

None.<br />

Related Topics<br />

Statistical Processing<br />

_simu_erase_last_run<br />

_simu_get_sampling<br />

_simu_get_raw_sampling<br />

Eldo® User's Manual, 15.3 1063


Eldo Control Language<br />

Statistical Processing<br />

_simu_erase_last_run<br />

Task function category: Statistical Processing Functions<br />

Erases all sampling data from the previous Monte Carlo run so that it is not taken into account if<br />

_simu_get_sampling() or _simu_get_raw_sampling() is called.<br />

Note<br />

This function can only be called in ECL Monte Carlo flow.<br />

Usage<br />

_simu_erase_last_run()<br />

Arguments<br />

None.<br />

Related Topics<br />

Statistical Processing<br />

_simu_get_random<br />

_simu_get_sampling<br />

_simu_get_raw_sampling<br />

1064<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_mcsens<br />

Task function category: Statistical Processing Functions<br />

Returns the sensitivity list of the elements of the array array for a given sampling.<br />

Usage<br />

_simu_get_mcsens(array, "GLOB"|"GLOB_ACCURATE"|"LSS" [,<br />

matrix_raw_sampling])<br />

Arguments<br />

• array<br />

The array of values (typically the values of a given extract for each run) to compute the<br />

sensitivity.<br />

• "GLOB" | "GLOB_ACCURATE" | "LSS"<br />

Specifies the sensitivity methodology:<br />

"GLOB"<br />

Eldo computes global sensitivities extracted from the results of the random sampling.<br />

This is faster than "GLOB_ACCURATE" but results may be less accurate.<br />

"GLOB_ACCURATE"<br />

Eldo computes global sensitivities extracted from the results of the random sampling.<br />

This is more accurate than "GLOB" and can have a large CPU cost depending on the<br />

circuit. The CPU cost is related to the number of sensitivities, number of Monte Carlo<br />

runs, number of parameters with Monte Carlo variation, and number of extracts.<br />

"LSS"<br />

Specifies the large scale screening algorithm to identify the principal parameters<br />

during a Monte Carlo analysis. This is useful when the number of variables is much<br />

larger than the number of runs allowed. A class of Least Squares solvers based on the<br />

principle of homotopy methods is used.<br />

• matrix_raw_sampling<br />

The matrix storing all the raw sampling values computed during the Monte Carlo<br />

simulation. If n runs were performed and there are p statistical parameters, then<br />

matrix_raw_sampling[i;j] must be the raw sampling value of the j-th parameter for the i-th<br />

run. The <strong>user</strong> can call _simu_get_raw_sampling() to easily get this matrix (this is what is<br />

done by default). Be careful not to use _simu_get_sampling() otherwise sensitivities may be<br />

wrong.<br />

Description<br />

The result is a matrix: the first line contains the index of the important parameters (the first<br />

being the most important parameter). The second line contains their importance percentage (1.0<br />

for 100%). Will return an empty array if not enough Monte Carlo simulations have been run.<br />

Eldo® User's Manual, 15.3 1065


Eldo Control Language<br />

Statistical Processing<br />

Examples<br />

Example: how to monitor the evolution of the average, deviation and sensitivities of an extract:<br />

1066<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

.define_testbench tb_mc()<br />

.model modres res lot=10% dev=5%<br />

v1 1 0 pwl 0 0 1n 0 2n 3<br />

r1 1 2 modres 1k<br />

c1 2 0 1p<br />

.tran 0 10u<br />

.mc 100<br />

.extract catvect label=rise_time xthres(v(2), 1.5)<br />

.end_define_testbench<br />

.define_task t()<br />

set extract_name = "rise_time"<br />

set extract_res[] = 0<br />

set nbmc = 0<br />

set res = 0<br />

set conv = 0<br />

/* Load the netlist. */<br />

res = _simu_load(name = "tmp/tmp.cir", tb_mc())<br />

if (res.simu_status == 0)<br />

_simu_set_mc_flow()<br />

/* Run nominal. */<br />

res = _simu_run(mode="nom")<br />

if (res.simu_status == 0)<br />

/* Begin Monte-Carlo simulation. */<br />

res = _simu_run(mode="mc 5")<br />

nbmc += 5<br />

while (res.simu_status == 0)<br />

/* Get the results. */<br />

extract_res = _simu_get_extract(extract_name);<br />

/* Display results (+1 to exclude nominal extract). */<br />

print_res(p_nbmc=nbmc,<br />

+ p_extract_res=extract_res[extract_res.imin + 1,<br />

+ extract_res.imax])<br />

/* Stop when it has converged. */<br />

if (mcconv(extract_res,<br />

+ "AVG",<br />

+ "CONFIDENCE") == 1)<br />

break;<br />

endif<br />

/* Prevent infinite loop. */<br />

if (nbmc > 10000)<br />

fprint(stdout, "Failed to converge!\n")<br />

break;<br />

endif<br />

/* Continue Monte-Carlo simulation. */<br />

res = _simu_run(mode="mc 5")<br />

nbmc += 5<br />

endwhile<br />

endif<br />

endif<br />

.end_define_task<br />

.define_task print_res(p_nbmc=10, p_extract_res[] = 0)<br />

set avg_val = avg(p_extract_res)<br />

set std_val = std(p_extract_res)<br />

Eldo® User's Manual, 15.3 1067


Eldo Control Language<br />

Statistical Processing<br />

set sens_list = _simu_get_mcsens(p_extract_res, "GLOB")<br />

fprint(stdout, "\nRise time after " + p_nbmc + " runs:\n")<br />

fprint(stdout, "Average: %.2e\n", avg_val)<br />

fprint(stdout, "Standard deviation: %.2e\n", std_val)<br />

fprint(stdout, "Most important parameter:\n")<br />

if (sens_list[1].imin


Eldo Control Language<br />

Statistical Processing<br />

.define_task t_main()<br />

set important_params[]=""<br />

set i = 0<br />

set width[] = 0<br />

set device[] = ""<br />

set res = 0<br />

/* Load the netlist. */<br />

res = _simu_load(name = "mc/mc.cir")<br />

if (res.simu_status == 0)<br />

_simu_set_mc_flow()<br />

/* Run nominal. */<br />

if (run_nominal() != 0)<br />

/* Run Monte-Carlo to find important parameters. */<br />

if (find_important_params(p_extract_name = "OPFREQ",<br />

+ important_params=@p_important_params)<br />

!= 0)<br />

for (i = important_params.imin;<br />

+ i


Eldo Control Language<br />

Statistical Processing<br />

.define_function run_nominal()<br />

set res = 0<br />

set delay1 = 0<br />

set delay2 = 0<br />

fprint(stdout, "Running nominal...\n")<br />

res = _simu_run(mode="nom")<br />

if (res.simu_status == 0)<br />

delay1 = _simu_get_extract("DELAY1")<br />

delay2 = _simu_get_extract("DELAY2")<br />

fprint(stdout, "DELAY1 = %.3g Sec\nDELAY2 = %.3g Sec\n", delay1,<br />

delay2)<br />

else<br />

fprint(stdout, "Nominal failed!\n")<br />

return 0<br />

endif<br />

return 1<br />

.end_define_function<br />

.define_function find_important_params(p_extract_name = "",<br />

+ @p_important_params[] = 0)<br />

set res = 0<br />

set conv = 0<br />

set sens_list[] = 0<br />

set i = 0<br />

set nb_important_params = 0<br />

set extract_res[] = 0<br />

set nbmc = 0<br />

while (conv == 0)<br />

/* Execute 20 more Monte-Carlo runs. */<br />

fprint(stdout, "Running 20 Monte-Carlo...\n")<br />

res = _simu_run(mode="mc 20")<br />

nbmc += 20<br />

if (res.simu_status != 0)<br />

fprint(stdout, "Simulation failed!\n")<br />

return 0;<br />

endif<br />

/* Get the result. */<br />

extract_res = _simu_get_extract(p_extract_name);<br />

/* See if it has converged. */<br />

conv = mcconv(extract_res,<br />

+ "AVG",<br />

+ "CONFIDENCE",<br />

+ 50,<br />

+ 0.99,<br />

+ 0.00,<br />

+ 5.0e-3)<br />

/* Prevent infinite loop. */<br />

if (nbmc > 10000)<br />

fprint(stdout, "Failed to converge!\n")<br />

return 0;<br />

endif<br />

endwhile<br />

1070<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

/* Get sensitivities; need to remove the extract value<br />

computed for the nominal. */<br />

sens_list = _simu_get_mcsens(extract_res[extract_res.imin + 1,<br />

+ extract_res.imax],<br />

+ "LSS")<br />

/* Extract parameters having importance >= 10%. */<br />

if (sens_list.size > 0)<br />

for (i = sens_list[1].imin;<br />

+ i = 0.1)<br />

nb_important_params++<br />

/* Get its index. */<br />

p_important_params[nb_important_params] = sens_list[1][i]<br />

endif<br />

endfor<br />

endif<br />

return 1<br />

.end_define_function<br />

.t_main<br />

.option set_<strong>eldo</strong>_cl_verbose=0<br />

* Netlist for CMOS RIPPLE CARRY ADDER<br />

* This example centers around an 1-bit CMOS ripple carry adder<br />

.PARAM WIN_GLOB =40U<br />

.PARAM WOUT_GLOB=40U<br />

* INCLUDE NMOS AND PMOS MODELS<br />

.SUBCKT ONEBITADDER VDD VSS A B C SUM CO PARAM: WIN=40U WOUT=40U<br />

XMP1 VDD A 1 VDD P W={2*WIN} L=1U AD=400P AS=400P<br />

XMP2 VDD B 1 VDD P W={2*WIN} L=1U AD=400P AS=400P<br />

XMP3 VDD A 2 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP4 VDD A 3 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP5 VDD B 3 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP6 VDD C 3 VDD P W=20U L=1U AD=400P AS=400P<br />

MP7 1 C NC VDD P W={2*WIN} L=1U AD=400P AS=400P<br />

XMP8 2 B NC VDD P W=20U L=1U AD=400P AS=400P<br />

XMP9 3 NC NS VDD P W=20U L=1U AD=400P AS=400P<br />

XMP10 VDD A 7 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP11 7 B 8 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP12 8 C NS VDD P W=20U L=1U AD=400P AS=400P<br />

XMN13 NC C 4 VSS N W=WIN L=1U AD=400P AS=400P<br />

XMN14 NC B 5 VSS N W=20U L=1U AD=400P AS=400P<br />

XMN15 NS NC 6 VSS N W=20U L=1U AD=400P AS=400P<br />

XMN16 4 A VSS VSS N W=WIN L=1U AD=400P AS=400P<br />

Eldo® User's Manual, 15.3 1071


Eldo Control Language<br />

Statistical Processing<br />

XMN17 4 B VSS VSS N W=WIN L=1U AD=400P AS=400P<br />

XMN18 5 A VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMN19 6 A VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMN20 6 B VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMN21 6 C VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMN22 NS C 9 VSS N W=20U L=1U AD=400P AS=400P<br />

XMN23 9 B 10 VSS N W=20U L=1U AD=400P AS=400P<br />

XMN24 10 A VSS VSS N W=20U L=1U AD=400P AS=400P<br />

* SUM AND CARRY OUTPUT BUFFERS<br />

XMP25 VDD NS SUM VDD P W=20U L=1U AD=400P AS=400P<br />

XMN26 SUM NS VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMP27 VDD NC CO VDD P W={2*WOUT} L=1U AD=400P AS=400P<br />

XMN28 CO NC VSS VSS N W=WOUT L=1U AD=400P AS=400P<br />

* LAYOUT CAPACITANCES<br />

C1 1 VSS 0.05P<br />

C2 2 VSS 0.05P<br />

C3 3 VSS 0.05P<br />

C4 4 VSS 0.05P<br />

C5 5 VSS 0.05P<br />

C6 6 VSS 0.05P<br />

CA A VSS 0.1P<br />

CB B VSS 0.1P<br />

CC C VSS 0.1P<br />

CSM SUM VSS 0.15P<br />

CCO CO VSS 0.15P<br />

.ENDS ONEBITADDER<br />

VDD VDD 0 5<br />

X0 VDD 0 A0 B0 0 SUM0 CO0 ONEBITADDER WIN=WIN_GLOB WOUT=WOUT_GLOB<br />

VA0 A0 0 5<br />

VB0 B0 0 PULSE 0 5 .2N .2N .2N 9.8N 20N<br />

* TRANSIENT ANALYSIS<br />

.TRAN 0.1N 6N<br />

.PLOT TRAN V(SUM0) V(B0)<br />

* EXTRACT SECTION<br />

.EXTRACT TRAN LABEL=DELAY1 TPD(V(B0),V(SUM0),VTHIN=2.5,VTHOUT=0.5)<br />

.EXTRACT TRAN LABEL=DELAY2 TPD(V(B0),V(CO0),VTHIN=2.5,VTHOUT=4.5)<br />

.EXTRACT TRAN LABEL=OPFREQ CATVECT (1/MAX(EXTRACT(DELAY1),<br />

EXTRACT(DELAY2)))<br />

+ LBOUND=280Meg<br />

* MONTE CARLO ANALYSIS<br />

.OPTION AEX DUMP_MCINFO<br />

.MC 100<br />

1072<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

+ DATAFLOW=1<br />

.EXTRACT MC LABEL=MINFREQ MCMIN(OPFREQ)<br />

.EXTRACT MC LABEL=MAXFREQ MCMAX(OPFREQ)<br />

* A global factor that artificially scales the sigma of all variables:<br />

.param g_mm_factor=10<br />

* The sigtail option is used to allow wider spread (up to +/- 4 sigmas) for<br />

the input variables:<br />

.option sigtail=4<br />

* The device models (some of the .model parameters have statistical<br />

variations):<br />

.subckt n d g s b param: w=1u l=1u ad=400p as=400p<br />

m1 d g s b modn w=w l=l ad=ad as=as<br />

.param Tox=19E-09 a_mm_Tox=0.4543u b_mm_Tox=0.1435 dev_mm_Tox<br />

='a_mm_Tox/sqrt(w*l)+b_mm_Tox'<br />

.param Vth0=.3322 a_mm_Vth0=0.40654u b_mm_Vth0=0.11654 dev_mm_Vth0<br />

='a_mm_Vth0/sqrt(w*l)+b_mm_Vth0'<br />

.param U0=388.3203 a_mm_U0=0.565745u b_mm_U0=0.264563 dev_mm_U0<br />

='a_mm_U0/sqrt(w*l)+b_mm_U0'<br />

.model modn NMOS<br />

+Level=53<br />

+Tox =Tox dev/gauss={g_mm_factor*dev_mm_Tox}%<br />

+Vth0 =Vth0 dev/gauss={g_mm_factor*dev_mm_Vth0}%<br />

+U0 =U0 dev/gauss={g_mm_factor*dev_mm_U0}%<br />

+kf=1e-27 af=2<br />

+Tnom=27.0<br />

+Nch= 2.498E+17 Xj=1.00000E-07+Lint=9.36e-8 Wint=1.47e-7<br />

+K1= .756 K2= -3.83e-2 K3= -2.612+Dvt0= 2.812 Dvt1= 0.462 Dvt2=-9.17e-<br />

2<br />

+Nlx= 3.52291E-08 W0= 1.163e-6+K3b= 2.233<br />

+Vsat= 86301.58 Ua= 6.47e-9 Ub= 4.23e-18 Uc=-4.706281E-11<br />

+Rdsw= 650 wr=1<br />

+A0= .3496967 Ags=.1 B0=0.546 B1= 1<br />

+ Dwg = -6.0E-09 Dwb = -3.56E-09 Prwb = -.213<br />

+Keta=-3.605872E-02 A1= 2.778747E-02 A2= .9<br />

+Voff=-6.735529E-02 NFactor= 1.139926 Cit= 1.622527E-04<br />

+Cdsc=-2.147181E-05<br />

+Cdscb= 0 Dvt0w = 0 Dvt1w = 0 Dvt2w = 0<br />

+ Cdscd = 0 Prwg = 0<br />

+Eta0= 1.0281729E-02 Etab=-5.042203E-03<br />

+Dsub= .31871233<br />

+Pclm= 1.114846 Pdiblc1= 2.45357E-03 Pdiblc2= 6.406289E-03<br />

+Drout= .31871233 Pscbe1= 5000000 Pscbe2= 5E-09 Pdiblcb = -.234<br />

+Pvag= 0 delta=0.01<br />

+ Wl = 0 Ww = -1.420242E-09 Wwl = 0<br />

+ Wln = 0 Wwn = .2613948 Ll = 1.300902E-10<br />

+ Lw = 0 Lwl = 0 Lln = .316394<br />

Eldo® User's Manual, 15.3 1073


Eldo Control Language<br />

Statistical Processing<br />

+ Lwn = 0<br />

+kt1=-.3 kt2=-.051<br />

+At= 22400<br />

+Ute=-1.48<br />

+Ua1= 3.31E-10 Ub1= 2.61E-19 Uc1= -3.42e-10<br />

+Kt1l=0 Prt=764.3<br />

.ends<br />

.subckt p d g s b param: w=1u l=1u ad=400p as=400p<br />

m1 d g s b modp w=w l=l ad=ad as=as<br />

.param Tox=19E-09 a_mm_Tox=0.365543u b_mm_Tox=0.001435 dev_mm_Tox<br />

='a_mm_Tox/sqrt(w*l)+b_mm_Tox'<br />

.param Vth0=-.3732829 a_mm_Vth0=0.30654u b_mm_Vth0=0.1452<br />

dev_mm_Vth0 ='a_mm_Vth0/sqrt(w*l)+b_mm_Vth0'<br />

.param U0=138.7609 a_mm_U0=0.565745u b_mm_U0=0.366454 dev_mm_U0<br />

='a_mm_U0/sqrt(w*l)+b_mm_U0'<br />

.model modp PMOS<br />

+Level=53<br />

+Tox =Tox dev/gauss={g_mm_factor*dev_mm_tox}%<br />

+Vth0 =Vth0 dev/gauss={abs(g_mm_factor*dev_mm_Vth0)}%‘<br />

+U0 =U0 dev/gauss={g_mm_factor*dev_mm_U0}%<br />

+kf=1e-27 af=2<br />

+Tnom=27.0<br />

+Nch= 3.533024E+17 Xj=1.00000E-07<br />

+Lint=6.23e-8 Wint=1.22e-7<br />

+ K1= .8362093 K2=-8.606622E-02 K3= 1.82<br />

+Dvt0= 1.903801 Dvt1= .5333922 Dvt2=-.1862677<br />

+Nlx= 1.28e-8 W0= 2.1e-6<br />

+K3b= -0.24 Prwg=-0.001 Prwb=-0.323<br />

+Vsat= 103503.2 Ua= 1.39995E-09 Ub= 1.e-19 Uc=-2.73e-11<br />

+ Rdsw= 460<br />

+A0= .4716551 Ags=0.12<br />

+Keta=-1.871516E-03 A1= .3417965 A2= 0.83<br />

+Voff=-.074182 NFactor= 1.54389 Cit=-1.015667E-03<br />

+Cdsc= 8.937517E-04<br />

+Cdscb= 1.45e-4 Cdscd=1.04e-4<br />

+ Dvt0w=0.232 Dvt1w=4.5e6 Dvt2w=-0.0023<br />

+Eta0= 6.024776E-02 Etab=-4.64593E-03<br />

+Dsub= .23222404<br />

+Pclm= .989 Pdiblc1= 2.07418E-02 Pdiblc2= 1.33813E-3<br />

+Drout= .3222404 Pscbe1= 118000 Pscbe2= 1E-09<br />

+Pvag= 0<br />

+kt1= -0.25 kt2= -0.032 prt=64.5<br />

+At= 33000<br />

+Ute= -1.5<br />

+Ua1= 4.312e-9 Ub1= 6.65e-19 Uc1= 0<br />

+Kt1l=0<br />

.ends<br />

The output of the previous example will be:<br />

1074<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

Running nominal...<br />

DELAY1 = 4.67e-09 Sec<br />

DELAY2 = 2.41e-09 Sec<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Increase width of X0.XMN14.M1 to 4e-05<br />

Increase width of X0.XMN18.M1 to 4e-05<br />

Increase width of X0.XMP9.M1 to 4e-05<br />

Running nominal...<br />

DELAY1 = 2.93e-09 Sec<br />

DELAY2 = 1.39e-09 Sec<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1075


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_nb_stat_params<br />

Task function category: Statistical Processing Functions<br />

Returns the number of statistical parameters inside a netlist.<br />

Usage<br />

_simu_get_nb_stat_params()<br />

Arguments<br />

None.<br />

Related Topics<br />

Statistical Processing<br />

1076<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_random<br />

Task function category: Statistical Processing Functions<br />

Returns a random value corresponding to the requested distribution.<br />

Usage<br />

_simu_get_random("UNIFORM" | "GAUSS", nom, dev [, sigtail])<br />

Arguments<br />

• "UNIFORM" | "GAUSS"<br />

Distribution type.<br />

• nom<br />

Nominal value<br />

• dev<br />

Deviation.<br />

• sigtail<br />

Optional. The sigtail argument is only valid for Gaussian distributions. Its default value is 4.<br />

Related Topics<br />

Statistical Processing<br />

_simu_reset_random_generators<br />

Eldo® User's Manual, 15.3 1077


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_raw_sampling<br />

Task function category: Statistical Processing Functions<br />

Returns a matrix containing all the sampling values computed during the Monte Carlo<br />

simulation.<br />

Usage<br />

_simu_get_raw_sampling()<br />

Arguments<br />

None.<br />

Description<br />

If n runs were performed and there are p statistical parameters, then the element [i;j] of the<br />

result matrix is the sampling value of the j-th parameter for the i-th run.<br />

The difference between _simu_get_sampling() and _simu_get_raw_sampling() is related to<br />

parameters dependent on other parameters (for them _simu_get_stat_param_ref_param()<br />

returns a non-null value). _simu_get_raw_sampling() returns a matrix containing the raw values<br />

given by the random number generator whereas _simu_get_sampling() returns a matrix<br />

containing the values that will be applied to the statistical parameters, that is to say after the<br />

dependencies between parameters have been taken into account.<br />

Related Topics<br />

Statistical Processing<br />

_simu_get_sampling<br />

1078<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_sampling<br />

Task function category: Statistical Processing Functions<br />

Returns a matrix containing all the sampling values computed during the Monte Carlo<br />

simulation.<br />

Usage<br />

_simu_get_sampling()<br />

Arguments<br />

None.<br />

Description<br />

If n runs were performed and there are p statistical parameters, then the element [i;j] of the<br />

result matrix is the sampling value of the j-th parameter for the i-th run.<br />

The difference between _simu_get_sampling() and _simu_get_raw_sampling() is related to<br />

parameters dependent on other parameters (for them _simu_get_stat_param_ref_param()<br />

returns a non-null value). _simu_get_raw_sampling() returns a matrix containing the raw values<br />

given by the random number generator whereas _simu_get_sampling() returns a matrix<br />

containing the values that will be applied to the statistical parameters, that is to say after the<br />

dependencies between parameters have been taken into account.<br />

Related Topics<br />

Statistical Processing<br />

_simu_get_raw_sampling<br />

Eldo® User's Manual, 15.3 1079


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_dev<br />

Task function category: Statistical Processing Functions<br />

Returns the deviation (for Gaussian distributions) or half-range (for uniform distributions) value<br />

of the parameter identified by the index stat_param_index.<br />

Usage<br />

_simu_get_stat_param_dev(stat_param_index, is_relative)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

• is_relative<br />

If is_relative is set to 1, then the result is a percentage value (1.0 for 100%) relatively to the<br />

nominal value, otherwise it is an absolute value.<br />

Description<br />

The result may be -1 if it cannot be computed when is_relative is 1 (especially in the case of a<br />

parameter defined in the netlist with .PARAM p=0 LOT=0.1: it would require to divide by 0 to<br />

get the percentage result). If is_relative is 0, then the result can always be computed.<br />

Related Topics<br />

Statistical Processing<br />

1080<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_distrib<br />

Task function category: Statistical Processing Functions<br />

Returns the name of the distribution identified by the index stat_param_index.<br />

Usage<br />

simu_get_stat_param_name(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Return Values<br />

Returns the name of the distribution of the parameter identified by the index stat_param_index.<br />

Possible results are:<br />

"UNIFORM" for uniform distribution.<br />

"GAUSS" for normal distribution.<br />

"UNSUPPORTED" for "LIMIT" distributions, <strong>user</strong>-defined distributions or distributions<br />

defined with Accusim syntax (lot/dev=(dtype, -3sig, +3sig [, bi, -dz, +dz [, off, sv] [,<br />

scale]])).<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1081


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_name<br />

Task function category: Statistical Processing Functions<br />

Returns the name of the parameter identified by the index stat_param_index.<br />

Usage<br />

simu_get_stat_param_name(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

1082<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_nb_draw<br />

Task function category: Statistical Processing Functions<br />

Returns a positive integer value that acts as a multiplier to set how many times the value of the<br />

parameter identified by the index stat_param_index is to be calculated (only the random value<br />

having the greatest deviation is selected).<br />

Usage<br />

_simu_get_stat_param_nb_draw(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1083


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_netlist_dev<br />

Task function category: Statistical Processing Functions<br />

Returns the name of the corresponding device in the netlist (device_name), or "" if not relevant.<br />

Usage<br />

_simu_get_stat_param_netlist_dev(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

1084<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_netlist_dev_param<br />

Task function category: Statistical Processing Functions<br />

Returns the name of the corresponding device parameter in the netlist<br />

(device_parameter_name), or "" if not relevant.<br />

Usage<br />

_simu_get_stat_param_netlist_dev_param(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1085


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_netlist_mod<br />

Task function category: Statistical Processing Functions<br />

Returns the name of the corresponding model in the netlist (model_name), or "" if not relevant.<br />

Usage<br />

_simu_get_stat_param_netlist_mod(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

1086<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_netlist_mod_param<br />

Task function category: Statistical Processing Functions<br />

Returns the name of the corresponding model parameter in the netlist<br />

(model_parameter_name), or "" if not relevant.<br />

Usage<br />

_simu_get_stat_param_netlist_mod_param(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1087


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_netlist_param<br />

Task function category: Statistical Processing Functions<br />

Returns the name of the corresponding parameter in the netlist (parameter_name).<br />

Note<br />

For ease of use, if there is no corresponding parameter but a corresponding model<br />

parameter, then the model parameter is returned (model_parameter_name).<br />

Usage<br />

_simu_get_stat_param_netlist_param(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

1088<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_nom<br />

Task function category: Statistical Processing Functions<br />

Returns the nominal (mean) value of the parameter identified by the index stat_param_index.<br />

Usage<br />

simu_get_stat_param_name(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1089


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_ref_param<br />

Task function category: Statistical Processing Functions<br />

Returns the index of the parameter on which the parameter stat_param_index depends (0 if<br />

none).<br />

Note<br />

In the case of a parameter having LOT and DEV variations, the DEV parameters will<br />

depend on the LOT parameter.<br />

Usage<br />

_simu_get_stat_param_ref_param(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

1090<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_get_stat_param_sampling_val<br />

Task function category: Statistical Processing Functions<br />

Returns the current sampling value of the parameter identified by the index stat_param. It is the<br />

value used for the next Monte Carlo run.<br />

Usage<br />

_simu_get_stat_param_sampling_val(stat_param)<br />

Arguments<br />

• stat_param<br />

Statistical parameter index.<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1091


Eldo Control Language<br />

Statistical Processing<br />

_simu_is_stat_param_dev<br />

Task function category: Statistical Processing Functions<br />

Returns 1 if the statistical parameter comes from a DEV variation.<br />

Usage<br />

_simu_is_stat_param_dev(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

1092<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_is_stat_param_devx<br />

Task function category: Statistical Processing Functions<br />

Returns 1 if the statistical parameter comes from a DEVX variation.<br />

Usage<br />

_simu_is_stat_param_devx(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1093


Eldo Control Language<br />

Statistical Processing<br />

_simu_is_stat_param_locked<br />

Task function category: Statistical Processing Functions<br />

Returns 1 if the parameter identified by the index stat_param_index has been locked, that is to<br />

say it will not vary and remain to its nominal value.<br />

Note<br />

By default, parameters are all unlocked.<br />

Usage<br />

_simu_is_stat_param_devx(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Examples<br />

Example: how to access statistical parameters:<br />

1094<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

.define_testbench tb_mc()<br />

.param pv=2 lot/uni=2.5%<br />

.subckt s<br />

.model resistor r level=3 w=3u l=3u rsh=100 dw=0u lot=0.05u dlr=0u<br />

dev=0.05u<br />

.param pr=agauss(1000, 20, 1, 2)<br />

v1 1 0 pv<br />

r1 1 2 resistor<br />

r2 2 0 pr<br />

.ends<br />

x1 s<br />

x2 s<br />

.dc<br />

.extract v(x1.2) v(x2.2)<br />

.mc 100<br />

.end_define_testbench<br />

.define_task t_display_stat_params()<br />

set iparam = 0<br />

set nbparams = 0<br />

set res = 0<br />

res = _simu_load(name = "tmp/tmp.cir", tb_mc())<br />

if (res.simu_status == 0)<br />

_simu_set_mc_flow()<br />

nbparams = _simu_get_nb_stat_params()<br />

fprint(stdout, "List of statistical parameters:\n")<br />

fprint(stdout, "Name Distribution Nominal Deviation Nb<br />

draw\n")<br />

for (iparam = 1; iparam


Eldo Control Language<br />

Statistical Processing<br />

• PE(parameter_name, device_name, instance_parameter_name)<br />

• PP(parameter1_name, parameter2_name)<br />

• PM(parameter_name, model_name, model_parameter_name)<br />

• P(parameter_name)<br />

• PEM(parameter_name, device_name, instance_parameter_name)<br />

• M(model_name, model_parameter_name)<br />

• EM(device_name, model_parameter_name)<br />

Related Topics<br />

Statistical Processing<br />

1096<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_is_stat_param_lot<br />

Task function category: Statistical Processing Functions<br />

Returns 1 if the statistical parameter comes from a LOT variation.<br />

Usage<br />

_simu_is_stat_param_lot(stat_param_index)<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1097


Eldo Control Language<br />

Statistical Processing<br />

_simu_lock_stat_param<br />

Task function category: Statistical Processing Functions<br />

Specifies that the value of the parameter identified by the index stat_param_index must not vary<br />

during the Monte Carlo simulation and remain equal to its nominal value.<br />

Note<br />

Except in the case the parameter is dependent on another one, then the value of the<br />

parameter is equal to the value of the parameter it depends on (so _simu_lock_stat_param<br />

only removes the own variation of a parameter).<br />

Usage<br />

_simu_lock_stat_param(stat_param_index)<br />

_simu_lock_stat_param("LOT" | "DEV")<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

• "LOT" | "DEV"<br />

Calls _simu_lock_stat_param on all parameters having LOT or DEV and DEVX variation.<br />

Related Topics<br />

Statistical Processing<br />

1098<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_reset_random_generators<br />

Task function category: Statistical Processing Functions<br />

Resets the random number generators. This can be useful to reset the random number generators<br />

between two Monte Carlo simulations if you want them to use the same random numbers.<br />

Usage<br />

_simu_reset_random_generators()<br />

Arguments<br />

None.<br />

Examples<br />

Example: how to modify the distribution of a parameter to simulate only extreme values:<br />

Eldo® User's Manual, 15.3 1099


Eldo Control Language<br />

Statistical Processing<br />

.define_testbench tb_mc()<br />

.param pv=2 lot/uni=2.5%<br />

.subckt s<br />

.model resistor r level=3 w=3u l=3u rsh=100 dw=0u lot=0.05u dlr=0u<br />

dev=0.05u<br />

.param pr=agauss(1000, 20, 1)<br />

v1 1 0 pv<br />

r1 1 2 resistor<br />

r2 2 0 pr<br />

.ends<br />

x1 s<br />

x2 s<br />

.dc<br />

.plot w1=v(x1.2)<br />

.mc 100 all<br />

* To enlarge the Gaussian distributions.<br />

.option sigtail=8<br />

.end_define_testbench<br />

.define_task t_simu(extreme=1)<br />

set iparam = 0<br />

set iparam_x1_r2 = 0<br />

set nbparams = 0<br />

set nbruns = 0<br />

set res = 0<br />

set w = 0<br />

res = _simu_load(name = "tmp/tmp.cir", tb_mc())<br />

if (res.simu_status == 0)<br />

_simu_set_mc_flow()<br />

nbparams = _simu_get_nb_stat_params()<br />

/* Find the parameter we want to modify the distribution of.<br />

*/<br />

for (iparam = 1; iparam


Eldo Control Language<br />

Statistical Processing<br />

break<br />

endif<br />

endif<br />

/* Execute 1 run. */<br />

res = _simu_run()<br />

if (res.simu_status != 0)<br />

fprint(stdout, "Simulation #" + nbruns + " failed!\n")<br />

break<br />

endif<br />

endwhile<br />

w = _simu_get_wave("w1")<br />

else<br />

fprint(stdout, "Failed to find the parameter!\n")<br />

endif<br />

endif<br />

.end_define_task<br />

.define_function modify_distrib(index=0)<br />

set distrib = _simu_get_stat_param_distrib(index)<br />

set nom = _simu_get_stat_param_nom(index)<br />

set dev = _simu_get_stat_param_dev(index, 0)<br />

set val = _simu_get_stat_param_sampling_val(index)<br />

if (distrib != "GAUSS")<br />

fprint(stdout, "Error: distribution must be GAUSS!\n")<br />

return 1<br />

endif<br />

while (abs(val - nom) < 2 * dev)<br />

/* Get a more extreme value. */<br />

val = _simu_get_random(distrib, nom, dev, 8)<br />

endwhile<br />

/* Force the value. */<br />

_simu_set_stat_param_sampling_val(index, val)<br />

return 0<br />

.end_define_function<br />

.t_simu extreme=0<br />

.t_simu extreme=1<br />

Related Topics<br />

Statistical Processing<br />

_simu_get_random<br />

Eldo® User's Manual, 15.3 1101


Eldo Control Language<br />

Statistical Processing<br />

_simu_run<br />

Task function category: Statistical Processing Functions<br />

_simu_run(mode="nom") runs the nominal Monte Carlo simulation and returns a result<br />

structure (as the simulation function).<br />

Usage<br />

_simu_run(mode="nom")<br />

_simu_run(mode="mc n")<br />

Arguments<br />

• mode="nom"<br />

Normal mode.<br />

• mode="mc n"<br />

Runs n Monte Carlo simulations.<br />

Description<br />

The _simu_run function also enables you to execute a specified number of Monte Carlo runs.<br />

_simu_run(mode="mc n") runs n Monte Carlo simulations and returns a result structure (as the<br />

simulation function).<br />

• .MPRUN is not supported.<br />

• Calling _simu_run() is equivalent to calling _simu_run(mode="mc 1") in ECL Monte<br />

Carlo flow.<br />

• Other modes than mode="nom" or mode="mc n" are not supported in ECL Monte Carlo<br />

flow (error). Inversely, an error occurs if these modes are used outside the ECL Monte<br />

Carlo flow.<br />

• _simu_set_cond() is not supported in ECL Monte Carlo flow.<br />

Related Topics<br />

Statistical Processing<br />

1102<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_set_mc_flow<br />

Task function category: Statistical Processing Functions<br />

Activates the ECL Monte Carlo flow. The netlist may or may not contain a .MC command; it is<br />

entirely ignored if the ECL Monte Carlo flow is activated.<br />

Usage<br />

_simu_set_mc_flow([max_nb_runs])<br />

Arguments<br />

• max_nb_runs<br />

The maximum number of runs for the Monte Carlo simulation. Default value is 100000.<br />

Description<br />

The netlist needs to be reloaded to deactivate the ECL Monte Carlo flow.<br />

The function will generate a warning if statistical parameters with unsupported distributions<br />

(see after) are in the netlist<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1103


Eldo Control Language<br />

Statistical Processing<br />

_simu_set_stat_param_sampling_val<br />

Task function category: Statistical Processing Functions<br />

Sets the current sampling value of the parameter identified by the index stat_param to the value<br />

val. It will be the value used for the next Monte Carlo run.<br />

Usage<br />

_simu_set_stat_param_sampling_val(stat_param, val)<br />

Arguments<br />

• stat_param<br />

Index of statistical parameter.<br />

Related Topics<br />

Statistical Processing<br />

1104<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

_simu_unlock_stat_param<br />

Task function category: Statistical Processing Functions<br />

Specifies that the value of the parameter identified by the index stat_param_index must vary<br />

during the Monte Carlo simulation according to its distribution.<br />

Usage<br />

_simu_unlock_stat_param(stat_param_index)<br />

_simu_unlock_stat_param("LOT" | "DEV")<br />

Arguments<br />

• stat_param_index<br />

Index of statistical parameter.<br />

• "LOT" | "DEV"<br />

Calls _simu_unlock_stat_param on all parameters having LOT or DEV and DEVX<br />

variation.<br />

Related Topics<br />

Statistical Processing<br />

Running Monte Carlo Runs in Parallel<br />

Running ECL Monte Carlo simulations in parallel requires to call _simu_load,<br />

_simu_set_mc_flow, simu_run and _simu_end inside the para_for loop. This means the Monte<br />

Carlo simulations will be performed by different simulators.<br />

To ensure reproducibility of results, only one-level of para_for loops is allowed (nested parallel<br />

loops are not allowed to run simulations using the ECL Monte Carlo flow) and each job uses a<br />

different random number generator (they are initialized with different seeds); the reproducibility<br />

of results is ensured between different runs of the same ECL netlist, but not if the para_loop is<br />

changed into a sequential for loop (because simulations run inside a sequential for loop use the<br />

same random number generator).<br />

Monte Carlo results from each job must be saved and aggregated to be able to call Monte Carlo<br />

post-processing functions. If sensibilities have to be computed, then each sampling must also be<br />

saved since _simu_get_mcsens needs it.<br />

Example: (same example as before but using parallelism) first a parallel Monte Carlo simulation<br />

is run to find the most important parameters acting on the propagation delay; then from the<br />

name of these parameters, the width of the corresponding MOS is increased to see how it<br />

impacts the delay.<br />

Eldo® User's Manual, 15.3 1105


Eldo Control Language<br />

Statistical Processing<br />

.define_task t_main()<br />

set important_params[]=""<br />

set i = 0<br />

set width[] = 0<br />

set device[] = ""<br />

set res = 0<br />

/* Load the netlist. */<br />

res = _simu_load(name = "mc/mc.cir")<br />

if (res.simu_status == 0)<br />

_simu_set_mc_flow()<br />

/* Run nominal. */<br />

run_nominal()<br />

/* Call _simu_end now because when running the parallel loop<br />

* in the function find_important_params, each job will have<br />

* to do _simu_load, _simu_set_mc_flow, _simu_run and _simu_end.<br />

_simu_end()<br />

else<br />

fprint(stdout, "Parsing failed!\n")<br />

endif<br />

/* Run parallel Monte-Carlo to find important parameters. */<br />

if (find_important_params(p_extract_name = "OPFREQ",<br />

+ important_params=@p_important_params) != 0)<br />

/* Reload the netlist to be able to find the names and the widths of<br />

* the important parameters.<br />

*/<br />

res = _simu_load(name = "mc_get_res/mc_get_res.cir")<br />

if (res.simu_status == 0)<br />

_simu_set_mc_flow()<br />

for (i = important_params.imin;<br />

+ i


Eldo Control Language<br />

Statistical Processing<br />

/* Increase its width to reduce the delay<br />

* (this must be done before _simu_set_mc_flow).<br />

*/<br />

fprint(stdout,<br />

+ "Increase width of %s to %.2g\n",<br />

+ device[i],<br />

+ width[i]*2)<br />

_simu_set("E", device[i], "W", width[i]*2)<br />

endfor<br />

_simu_set_mc_flow()<br />

/* Re-run nominal. */<br />

run_nominal()<br />

endif<br />

_simu_end()<br />

endif<br />

.end_define_task<br />

.define_function run_nominal()<br />

set res = 0<br />

set delay1 = 0<br />

set delay2 = 0<br />

fprint(stdout, "Running nominal...\n")<br />

res = _simu_run(mode="nom")<br />

if (res.simu_status == 0)<br />

delay1 = _simu_get_extract("DELAY1")<br />

delay2 = _simu_get_extract("DELAY2")<br />

fprint(stdout, "DELAY1 = %.3g Sec\nDELAY2 = %.3g Sec\n",<br />

delay1, delay2)<br />

else<br />

fprint(stdout, "Nominal failed!\n")<br />

return 0<br />

endif<br />

return 1<br />

.end_define_function<br />

.define_function find_important_params(p_extract_name = "",<br />

+ @p_important_params[] = 0)<br />

set res = 0<br />

set conv = 0<br />

set sens_list[] = 0<br />

set i = 0<br />

set nb_para_runs = 20<br />

set nb_important_params = 0<br />

set extract_res[] = 0<br />

set nbmc = 0<br />

set sampling_saved[] = 0<br />

set global_sampling[] = 0<br />

while (conv == 0)<br />

/* Execute in parallel 20 more Monte-Carlo runs. */<br />

fprint(stdout, "Running 20 Monte-Carlo...\n")<br />

para_for(i = 1; i


Eldo Control Language<br />

Statistical Processing<br />

if (local_res.simu_status != 0)<br />

fprint(stdout, "Simulation %d failed!\n", nbmc + i)<br />

return 0;<br />

endif<br />

/* Get the result; use 'nbmc + i' to build the array<br />

containing<br />

* all results.<br />

*/<br />

extract_res[nbmc + i] = _simu_get_extract(p_extract_name)<br />

/* Save the sampling (necessary to call _simu_get_mcsens); use<br />

* 'i' because the samplings saved during this 20 new runs will<br />

* be appended to the global sampling outside this loop.<br />

*/<br />

sampling_saved[i] = _simu_get_raw_sampling()<br />

_simu_end()<br />

end_para_for<br />

/* sampling_saved is an array containing many samplings. To<br />

* build the global sampling, we must append each sampling<br />

* to each other.<br />

*/<br />

for (i = 1; i 10000)<br />

fprint(stdout, "Failed to converge!\n")<br />

return 0;<br />

endif<br />

endwhile<br />

/* Get sensitivities. */<br />

sens_list = _simu_get_mcsens(extract_res,<br />

+ "LSS",<br />

+ global_sampling)<br />

/* Extract parameters having importance >= 10%. */<br />

if (sens_list.size > 0)<br />

for (i = sens_list[1].imin;<br />

+ i = 0.1)<br />

nb_important_params++<br />

/* Get its index. */<br />

p_important_params[nb_important_params] =<br />

sens_list[1][i]<br />

endif<br />

endfor<br />

endif<br />

1108<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

return 1<br />

.end_define_function<br />

.t_main<br />

.option set_<strong>eldo</strong>_cl_verbose=0<br />

* Netlist for CMOS RIPPLE CARRY ADDER<br />

* This example centers around an 1-bit CMOS ripple carry adder<br />

.PARAM WIN_GLOB =40U<br />

.PARAM WOUT_GLOB=40U<br />

* INCLUDE NMOS AND PMOS MODELS<br />

.SUBCKT ONEBITADDER VDD VSS A B C SUM CO PARAM: WIN=40U WOUT=40U<br />

XMP1 VDD A 1 VDD P W={2*WIN} L=1U AD=400P AS=400P<br />

XMP2 VDD B 1 VDD P W={2*WIN} L=1U AD=400P AS=400P<br />

XMP3 VDD A 2 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP4 VDD A 3 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP5 VDD B 3 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP6 VDD C 3 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP7 1 C NC VDD P W={2*WIN} L=1U AD=400P AS=400P<br />

XMP8 2 B NC VDD P W=20U L=1U AD=400P AS=400P<br />

XMP9 3 NC NS VDD P W=20U L=1U AD=400P AS=400P<br />

XMP10 VDD A 7 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP11 7 B 8 VDD P W=20U L=1U AD=400P AS=400P<br />

XMP12 8 C NS VDD P W=20U L=1U AD=400P AS=400P<br />

XMN13 NC C 4 VSS N W=WIN L=1U AD=400P AS=400P<br />

XMN14 NC B 5 VSS N W=20U L=1U AD=400P AS=400P<br />

XMN15 NS NC 6 VSS N W=20U L=1U AD=400P AS=400P<br />

XMN16 4 A VSS VSS N W=WIN L=1U AD=400P AS=400P<br />

XMN17 4 B VSS VSS N W=WIN L=1U AD=400P AS=400P<br />

XMN18 5 A VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMN19 6 A VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMN20 6 B VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMN21 6 C VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMN22 NS C 9 VSS N W=20U L=1U AD=400P AS=400P<br />

XMN23 9 B 10 VSS N W=20U L=1U AD=400P AS=400P<br />

XMN24 10 A VSS VSS N W=20U L=1U AD=400P AS=400P<br />

* SUM AND CARRY OUTPUT BUFFERS<br />

XMP25 VDD NS SUM VDD P W=20U L=1U AD=400P AS=400P<br />

XMN26 SUM NS VSS VSS N W=20U L=1U AD=400P AS=400P<br />

XMP27 VDD NC CO VDD P W={2*WOUT} L=1U AD=400P AS=400P<br />

XMN28 CO NC VSS VSS N W=WOUT L=1U AD=400P AS=400P<br />

* LAYOUT CAPACITANCES<br />

C1 1 VSS 0.05P<br />

C2 2 VSS 0.05P<br />

C3 3 VSS 0.05P<br />

C4 4 VSS 0.05P<br />

C5 5 VSS 0.05P<br />

C6 6 VSS 0.05P<br />

CA A VSS 0.1P<br />

CB B VSS 0.1P<br />

CC C VSS 0.1P<br />

CSM SUM VSS 0.15P<br />

Eldo® User's Manual, 15.3 1109


Eldo Control Language<br />

Statistical Processing<br />

CCO CO VSS 0.15P<br />

.ENDS ONEBITADDER<br />

VDD VDD 0 5<br />

X0 VDD 0 A0 B0 0 SUM0 CO0 ONEBITADDER WIN=WIN_GLOB WOUT=WOUT_GLOB<br />

VA0 A0 0 5<br />

VB0 B0 0 PULSE 0 5 .2N .2N .2N 9.8N 20N<br />

* TRANSIENT ANALYSIS<br />

.TRAN 0.1N 6N<br />

.PLOT TRAN V(SUM0) V(B0)<br />

* EXTRACT SECTION<br />

.EXTRACT TRAN LABEL=DELAY1<br />

TPD(V(B0),V(SUM0),VTHIN=2.5,VTHOUT=0.5)<br />

.EXTRACT TRAN LABEL=DELAY2<br />

TPD(V(B0),V(CO0),VTHIN=2.5,VTHOUT=4.5)<br />

.EXTRACT TRAN LABEL=OPFREQ (1/MAX(EXTRACT(DELAY1),<br />

EXTRACT(DELAY2)))<br />

+ LBOUND=280Meg<br />

* MONTE CARLO ANALYSIS<br />

.OPTION AEX DUMP_MCINFO<br />

.MC 100<br />

+ DATAFLOW=1<br />

.EXTRACT MC LABEL=MINFREQ MCMIN(OPFREQ)<br />

.EXTRACT MC LABEL=MAXFREQ MCMAX(OPFREQ)<br />

* A global factor that artificially scales the sigma of all<br />

variables:<br />

.param g_mm_factor=10<br />

* The sigtail option is used to allow wider spread (up to +/- 4<br />

sigmas) for the input variables:<br />

.option sigtail=4<br />

* The device models (some of the .model parameters have<br />

statistical variations):<br />

.subckt n d g s b param: w=1u l=1u ad=400p as=400p<br />

m1 d g s b modn w=w l=l ad=ad as=as<br />

.param Tox=19E-09 a_mm_Tox=0.4543u b_mm_Tox=0.1435 dev_mm_Tox<br />

='a_mm_Tox/sqrt(w*l)+b_mm_Tox'<br />

.param Vth0=.3322 a_mm_Vth0=0.40654u b_mm_Vth0=0.11654<br />

dev_mm_Vth0<br />

='a_mm_Vth0/sqrt(w*l)+b_mm_Vth0'<br />

.param U0=388.3203 a_mm_U0=0.565745u b_mm_U0=0.264563 dev_mm_U0<br />

1110<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

='a_mm_U0/sqrt(w*l)+b_mm_U0'<br />

.model modn NMOS<br />

+Level=53<br />

+Tox =Tox dev/gauss={g_mm_factor*dev_mm_Tox}%<br />

+Vth0 =Vth0 dev/gauss={g_mm_factor*dev_mm_Vth0}%<br />

+U0 =U0 dev/gauss={g_mm_factor*dev_mm_U0}%<br />

+kf=1e-27 af=2<br />

+Tnom=27.0<br />

+Nch= 2.498E+17 Xj=1.00000E-07<br />

+Lint=9.36e-8 Wint=1.47e-7<br />

+K1= .756 K2= -3.83e-2 K3= -2.612<br />

+Dvt0= 2.812 Dvt1= 0.462 Dvt2=-9.17e-2<br />

+Nlx= 3.52291E-08 W0= 1.163e-6<br />

+K3b= 2.233<br />

+Vsat= 86301.58 Ua= 6.47e-9 Ub= 4.23e-18 Uc=-4.706281E-11<br />

+Rdsw= 650 wr=1<br />

+A0= .3496967 Ags=.1 B0=0.546 B1= 1<br />

+ Dwg = -6.0E-09 Dwb = -3.56E-09 Prwb = -.213<br />

+Keta=-3.605872E-02 A1= 2.778747E-02 A2= .9<br />

+Voff=-6.735529E-02 NFactor= 1.139926 Cit= 1.622527E-04<br />

+Cdsc=-2.147181E-05<br />

+Cdscb= 0 Dvt0w = 0 Dvt1w = 0 Dvt2w = 0<br />

+ Cdscd = 0 Prwg = 0<br />

+Eta0= 1.0281729E-02 Etab=-5.042203E-03<br />

+Dsub= .31871233<br />

+Pclm= 1.114846 Pdiblc1= 2.45357E-03 Pdiblc2= 6.406289E-03<br />

+Drout= .31871233 Pscbe1= 5000000 Pscbe2= 5E-09 Pdiblcb = -.234<br />

+Pvag= 0 delta=0.01<br />

+ Wl = 0 Ww = -1.420242E-09 Wwl = 0<br />

+ Wln = 0 Wwn = .2613948 Ll = 1.300902E-10<br />

+ Lw = 0 Lwl = 0 Lln = .316394<br />

+ Lwn = 0<br />

+kt1=-.3 kt2=-.051<br />

+At= 22400<br />

+Ute=-1.48<br />

+Ua1= 3.31E-10 Ub1= 2.61E-19 Uc1= -3.42e-10<br />

+Kt1l=0 Prt=764.3<br />

.ends<br />

.subckt p d g s b param: w=1u l=1u ad=400p as=400p<br />

m1 d g s b modp w=w l=l ad=ad as=as<br />

.param Tox=19E-09 a_mm_Tox=0.365543u b_mm_Tox=0.001435<br />

dev_mm_Tox<br />

='a_mm_Tox/sqrt(w*l)+b_mm_Tox'<br />

.param Vth0=-.3732829 a_mm_Vth0=0.30654u b_mm_Vth0=0.1452<br />

dev_mm_Vth0<br />

='a_mm_Vth0/sqrt(w*l)+b_mm_Vth0'<br />

.param U0=138.7609 a_mm_U0=0.565745u b_mm_U0=0.366454 dev_mm_U0<br />

='a_mm_U0/sqrt(w*l)+b_mm_U0'<br />

.model modp PMOS<br />

+Level=53<br />

Eldo® User's Manual, 15.3 1111


Eldo Control Language<br />

Statistical Processing<br />

+Tox =Tox dev/gauss={g_mm_factor*dev_mm_tox}%<br />

+Vth0 =Vth0 dev/gauss={abs(g_mm_factor*dev_mm_Vth0)}%<br />

+U0 =U0 dev/gauss={g_mm_factor*dev_mm_U0}%<br />

+kf=1e-27 af=2<br />

+Tnom=27.0<br />

+Nch= 3.533024E+17 Xj=1.00000E-07<br />

+Lint=6.23e-8 Wint=1.22e-7<br />

+ K1= .8362093 K2=-8.606622E-02 K3= 1.82<br />

+Dvt0= 1.903801 Dvt1= .5333922 Dvt2=-.1862677<br />

+Nlx= 1.28e-8 W0= 2.1e-6<br />

+K3b= -0.24 Prwg=-0.001 Prwb=-0.323<br />

+Vsat= 103503.2 Ua= 1.39995E-09 Ub= 1.e-19 Uc=-2.73e-11<br />

+ Rdsw= 460<br />

+A0= .4716551 Ags=0.12<br />

+Keta=-1.871516E-03 A1= .3417965 A2= 0.83<br />

+Voff=-.074182 NFactor= 1.54389 Cit=-1.015667E-03<br />

+Cdsc= 8.937517E-04<br />

+Cdscb= 1.45e-4 Cdscd=1.04e-4<br />

+ Dvt0w=0.232 Dvt1w=4.5e6 Dvt2w=-0.0023<br />

+Eta0= 6.024776E-02 Etab=-4.64593E-03<br />

+Dsub= .23222404<br />

+Pclm= .989 Pdiblc1= 2.07418E-02 Pdiblc2= 1.33813E-3<br />

+Drout= .3222404 Pscbe1= 118000 Pscbe2= 1E-09<br />

+Pvag= 0<br />

+kt1= -0.25 kt2= -0.032 prt=64.5<br />

+At= 33000<br />

+Ute= -1.5<br />

+Ua1= 4.312e-9 Ub1= 6.65e-19 Uc1= 0<br />

+Kt1l=0<br />

.ends<br />

The output of the previous example will be:<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Increase width of X0.XMN14.M1 to 4e-05<br />

Increase width of X0.XMN18.M1 to 4e-05<br />

Increase width of X0.XMP9.M1 to 4e-05<br />

Running nominal...<br />

DELAY1 = 2.93e-09 Sec<br />

DELAY2 = 1.39e-09 Sec<br />

Running nominal...<br />

DELAY1 = 4.67e-09 Sec<br />

DELAY2 = 2.41e-09 Sec<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

Running 20 Monte-Carlo...<br />

1112<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Statistical Processing<br />

Related Topics<br />

Statistical Processing<br />

Eldo® User's Manual, 15.3 1113


Eldo Control Language<br />

Advanced Simulation Options<br />

Advanced Simulation Options<br />

This section describes advanced simulation options, how to activate the debug mode, and the<br />

complete grammar of the Eldo Control Language:<br />

• Simulation<br />

• Debug Mode<br />

• ECL Grammar Description<br />

Simulation<br />

This section describes advanced simulation options.<br />

Verbosity<br />

By default, when a simulation is run, information is displayed on the standard output:<br />

***** Running simulation...<br />

*****Generated simulation file: simu_1.cir<br />

***** (backup file: simu_1__1.cir)<br />

*****Log file: simu_1.log<br />

***** Simulation succeeded<br />

This information display can be disabled by setting:<br />

.option set_<strong>eldo</strong>_cl_verbose=0<br />

warn2err<br />

If a simulation command fails for any reason, then the warning 1803 will be generated on the<br />

standard output. To generate an error instead, add the following command to the netlist:<br />

Log File<br />

.option warn2err=1803<br />

The name of the log file can be specified through the log parameter of the simulation command.<br />

By default, if many simulations are performed and they use the same log file, each log file will<br />

be appended. To change this behavior, set the following option:<br />

.option set_<strong>eldo</strong>_cl_sim_log_append=0<br />

Then, if many simulations use the same log file, at the end of the simulation the log file is the<br />

log file of the last simulation.<br />

1114<br />

Eldo® User's Manual, 15.3


Temporary Files<br />

Eldo Control Language<br />

Advanced Simulation Options<br />

To perform simulations, a number of temporary files have to be generated on-disk. By default,<br />

when the name and log parameters of the simulation command are not set, these files are<br />

generated in a temporary directory located in the Eldo outpath directory, named<br />

“<strong>eldo</strong>_cl_simu_” with an automatically generated number appended, for example:<br />

<strong>eldo</strong>_cl_simu_12345.<br />

To ensure that these files are automatically removed after the simulation has ended, specify one<br />

of the following options:<br />

• .option remove_<strong>eldo</strong>_cl_temp_files=3<br />

All temporary files are removed (even if the child simulation has failed, so this option<br />

should only be used when confidence that the simulation will complete successfully is<br />

high, otherwise it may be difficult to debug).<br />

• .option remove_<strong>eldo</strong>_cl_temp_files=2<br />

All temporary files are removed except for the log file (in this case, the log file is<br />

generated outside the temporary directory and has the same name as the temporary<br />

directory: <strong>eldo</strong>_cl_simu_xxxxx.log) and also backup files of the generated simulation<br />

file.<br />

• .option remove_<strong>eldo</strong>_cl_temp_files=1<br />

This is the default; only files that are not useful for debugging are removed (typically the<br />

ecl_cmd script file used to launch the child simulation).<br />

• .option remove_<strong>eldo</strong>_cl_temp_files=0<br />

No temporary files are removed.<br />

These options have an effect only if the name and log parameters of the simulation command<br />

are not set; otherwise:<br />

chi File<br />

• If the name parameter is set and the value of the remove_<strong>eldo</strong>_cl_temp_files option is<br />

more than 2, it is automatically set to 1.<br />

• If the log parameter is set and the value of the remove_<strong>eldo</strong>_cl_temp_files option is<br />

equal to 3, it is automatically set to 2.<br />

The name of the netlist file can be specified through the name parameter of the simulation<br />

function. By default, if many simulations are performed (in the same task) and they use the<br />

same netlist file, each .chi file will be appended to the previous one. To change this behavior, set<br />

the following option:<br />

.option set_<strong>eldo</strong>_cl_sim_chi_append=0<br />

Eldo® User's Manual, 15.3 1115


Eldo Control Language<br />

Advanced Simulation Options<br />

Then, if many simulations use the same netlist file, at the end of the simulation the .chi file is the<br />

.chi file of the last simulation.<br />

Backup cir File<br />

By default, the Control Language makes a copy of the netlist simulated inside tasks to provide a<br />

trace in case debug is needed. To change this behavior, set the following option:<br />

wdb File<br />

.option backup_<strong>eldo</strong>_cl_netlists=0<br />

By default, when waveform results are assigned to task local variables to be able to perform<br />

some post-processing after a simulation, the waveforms are copied from the .wdb file generated<br />

during the simulation to the main .wdb file. If many simulations are run and many waveform<br />

results are used, the main .wdb can become very large and slow further simulations. To avoid<br />

this problem, set the following option:<br />

.option keep_<strong>eldo</strong>_cl_temp_waves=0<br />

Then, waveforms results will be automatically deleted from the main .wdb file when they are<br />

not used anymore (the waveform is deleted when all variables depending on this waveform<br />

become out of scope). See functions operating on wdb files in “Library of Functions for Tasks”<br />

on page 854 to know how to explicitly save waveforms in a .wdb file in this case.<br />

Arguments<br />

By default, arguments passed to Eldo on the command line will also be passed to Eldo processes<br />

performing the Control Language simulations. If arguments are set with the args argument of<br />

the simulation function, these new arguments will be appended to those passed to the main Eldo<br />

process. For example, if you run Eldo with the arguments -compat or -premier, Eldo processes<br />

performing the simulation will also be run using these arguments. To deactivate this behavior,<br />

set the following option:<br />

.option propagate_<strong>eldo</strong>_cl_main_args=0<br />

Then, arguments set to the args parameter of the simulation function will be the only ones<br />

passed to the Eldo processes performing the simulations.<br />

Related Topics<br />

Defining and Running Simulations<br />

Generated Files<br />

Tasks<br />

1116<br />

Eldo® User's Manual, 15.3


Debug Mode<br />

Eldo Control Language<br />

Advanced Simulation Options<br />

A specific mode is available to provide a trace of what happened during the execution of a<br />

sequence of Control Language code. Using this mode is much more efficient than inserting<br />

multiple fprint commands into your code.<br />

The trace can either be written to a file or to the standard output:<br />

• To write the trace to a file, set the environment variable ELDO_CL_DEBUG to the path<br />

to the target file:<br />

setenv ELDO_CL_DEBUG /path/file.txt<br />

• To send the trace to the standard output, set the environment variable to stdout:<br />

setenv ELDO_CL_DEBUG stdout<br />

Example of generated trace:<br />

*** In file '/home/jdoe/<strong>eldo</strong>/testcase/debug.cir'<br />

25 ** call to t_simu:<br />

16 u12


Eldo Control Language<br />

Advanced Simulation Options<br />

** end of call to simulation<br />

17 simu_res


Eldo Control Language<br />

Advanced Simulation Options<br />

/* Lexemes. */<br />

ID ::= ID_FRAG;<br />

OUT_ID ::= '@' ID_FRAG;<br />

ENV_ID ::= '$' ID_FRAG;<br />

SIM_CMD_ID ::= '.' ID_FRAG;<br />

ID_FRAG ::= LETTER_FRAG (DIGIT_FRAG | LETTER_FRAG | '#')*;<br />

LETTER_FRAG := 'a'..'z' | 'A'..'Z' | '_';<br />

NUM ::= (DIGIT_FRAG+ ('.' DIGIT_FRAG*)? NUM_EXP_FRAG? UNIT_FRAG?)|<br />

('.' DIGIT_FRAG+ NUM_EXP_FRAG? UNIT_FRAG?)|<br />

('0' ('x' |'X') HEX_DIGIT_FRAG+);<br />

DIGIT_FRAG ::= '0'..'9';<br />

NUM_EXP_FRAG ::= ('E' | 'e') ('+' | '-')? DIGIT_FRAG+;<br />

HEX_DIGIT_FRAG ::= '0'..'9' | 'a'..'f' | 'A'..'F';<br />

UNIT_FRAG ::= ('A'|'a') |<br />

('F'|'f') |<br />

('P'|'p') |<br />

('N'|'n') |<br />

('U'|'u') |<br />

('M'|'m') |<br />

('K'|'k') |<br />

('MEG'|'meg') |<br />

('G'|'g') |<br />

('T'|'t');<br />

STRING_LITERAL ::= '"' (ESCAPE_SEQUENCE_FRAG | ~( '\\' | '"'))* '"';<br />

ESCAPE_SEQUENCE_FRAG::= '\\' ('b'|<br />

't'|<br />

'n'|<br />

'f'|<br />

'r'|<br />

'\"'|<br />

'\\'|<br />

'\n');<br />

WS ::= WS_FRAG;<br />

WS_FRAG ::= ' ' | '\t';<br />

NEWLINE ::= NEWLINE_FRAG;<br />

NEWLINE_FRAG ::= '\r'? '\n';<br />

CUTLINE_OR_COMMENT ::=<br />

(NEWLINE_FRAG<br />

(NEWLINE_FRAG | WS_FRAG | COMMENT_FRAG)*<br />

('+' | '*' (~('\n'))*)) |<br />

('\\' NEWLINE_FRAG) |<br />

COMMENT_FRAG;<br />

COMMENT_FRAG ::= '//' (~('\n'))* |<br />

'/*' .* '*/';<br />

/* Testbench grammar rules. */<br />

testbench ::=<br />

'.define_testbench' ID (argument_def)? NEWLINE+<br />

testbench_block?<br />

'.end_define_testbench'<br />

testbench_block ::=<br />

Eldo® User's Manual, 15.3 1119


Eldo Control Language<br />

Advanced Simulation Options<br />

(simulation_command NEWLINE+)+;<br />

simulation_command ::= ? SPICE simulation command ?<br />

/* Task and function grammar rules. */<br />

task ::=<br />

NEWLINE*<br />

'.define_task'<br />

ID (argument_def)? NEWLINE+<br />

block?<br />

'.end_define_task' NEWLINE*<br />

function ::=<br />

'.define_function' ID (argument_def)? NEWLINE+<br />

block?<br />

'.end_define_function'<br />

block ::=<br />

(declaration_or_statement ';'? NEWLINE+)+;<br />

declaration_or_statement ::= declaration | statement;<br />

declaration ::= 'set' ( (left_value | ID '[' ']') '=' expression)+;<br />

statement::= assignment |<br />

return_statement |<br />

if_statement |<br />

while_statement |<br />

step_statement |<br />

for_statement |<br />

function_call |<br />

'break' |<br />

'continue';<br />

return_statement ::= 'return' expression;<br />

if_statement ::= 'if' '(' expression ')' NEWLINE+<br />

block?<br />

('else' NEWLINE+<br />

block?)?<br />

'endif';<br />

while_statement ::= 'while' '(' expression ')' NEWLINE+<br />

block?<br />

'endwhile';<br />

step_statement ::=<br />

'step' '('<br />

('type' '=' ('step' | 'incr' | 'decr' |<br />

'lin' | 'linear' | 'log' |<br />

'list') ',')?<br />

'param' '=' id_list ','<br />

(('list' '=' expression_list_list) |<br />

('start' '=' expression ','<br />

'stop' '=' expression ','<br />

('step' | 'incr' | 'decr' | 'n' | 'dec') '=' expression))<br />

')' NEWLINE+<br />

block?<br />

'endstep';<br />

for_statement ::= 'for' '(' assignment? ';'<br />

expression? ';'<br />

1120<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Advanced Simulation Options<br />

assignment? ')' NEWLINE+<br />

block?<br />

'endfor';<br />

id_list ::= (ID | '(' ID (',' ID)* ')');<br />

expression_list_list ::=<br />

expression_list |<br />

('(' expression_list (',' expression_list)* ')');<br />

expression_list ::= expression |<br />

'(' expression (',' expression)* ')';<br />

/* Common grammar rules. */<br />

argument_def ::= '(' argument_list? ')';<br />

argument_list ::= argument (',' argument)*;<br />

multi_index_range ::= index_range (';' index_range )*;<br />

index_range ::= expression (',' expression)? ;<br />

left_value ::= ID | array_access;<br />

assignment ::= left_value<br />

(('++' | '--') |<br />

('=' | '+=' | '-=' | '*=' | '/=' | '%=' |<br />

'&=' | '|=' | '^=' | '=') expression);<br />

argument ::= expression | assignment<br />

expression ::= conditional_expression;<br />

conditional_expression ::= logical_or_expression<br />

('?' expression<br />

':' expression)?;<br />

logical_or_expression ::= logical_and_expression<br />

('||' logical_and_expression)*;<br />

logical_and_expression ::= inclusive_or_expression<br />

('&&' inclusive_or_expression)*;<br />

inclusive_or_expression ::= exclusive_or_expression<br />

('|' exclusive_or_expression)*;<br />

exclusive_or_expression ::= and_expression<br />

('^' and_expression)*;<br />

and_expression ::= equality_expression<br />

('&' equality_expression)*;<br />

equality_expression ::= relational_expression<br />

(('==' | '!=') relational_expression)*;<br />

relational_expression ::= shift_expression<br />

(('' | '=') shift_expression)*;<br />

shift_expression ::= additive_expression<br />

(('') additive_expression)*;<br />

additive_expression ::= multiplicative_expression<br />

(('+' | '-') multiplicative_expression)*;<br />

multiplicative_expression ::= power_expression<br />

(('*' | '/' | '%') power_expression)*;<br />

power_expression ::= unary_expression<br />

('**' power_expression)?;<br />

unary_expression ::= postfix_expression |<br />

unary_operator unary_expression;<br />

postfix_expression ::= primary_expression |<br />

function_call |<br />

Eldo® User's Manual, 15.3 1121


Eldo Control Language<br />

Advanced Simulation Options<br />

array_access attribute? |<br />

id_expression attribute;<br />

attribute ::= array_attribute | sim_res_attribute;<br />

array_attribute ::= '.imin' | '.imax' | '.size';<br />

sim_res_attribute ::= '.simu_status' |<br />

'.simu_time' |<br />

'.nb_tot_elements' |<br />

'.nb_nodes' |<br />

'.avg_newton' |<br />

'.nb_newton_iter' |<br />

'.nb_steps' |<br />

'.nb_rej_steps' |<br />

'.nb_newt_rej_steps' |<br />

'.nb_lte_rej_steps' |<br />

'.nb_proc_used';<br />

function_call ::= ID '(' argument_list? ')';<br />

array_access ::= id_expression ('[' multi_index_range ']')+;<br />

unary_operator ::= '+' | '-' | '~' | '!';<br />

primary_expression ::= id_expression |<br />

ENV_ID |<br />

constant |<br />

'(' expression ')';<br />

id_expression ::= ID | OUT_ID;<br />

constant ::= NUM | STRING_LITERAL;<br />

/* Testbench instantiation or task/function call from the SPICE netlist.<br />

*/<br />

command_call ::= SIM_CMD_ID spice_argument_list?;<br />

spice_argument_list ::= assignement+;<br />

Related Topics<br />

Advanced Simulation Options<br />

Tasks<br />

1122<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

Examples Using ECL as an Alternative to Standard Eldo Commands<br />

Examples Using ECL as an Alternative to<br />

Standard Eldo Commands<br />

The Eldo Control Language can be used as a powerful custom alternative to standard Eldo<br />

commands. The examples here show the steps required to create ECL alternatives.<br />

• .STEP Alternative<br />

• .EXTRACT Alternative<br />

• .PRINTFILE Alternative #1<br />

• .PRINTFILE Alternative #2<br />

• .OPTIMIZE Alternative<br />

.STEP Alternative<br />

Netlist directory: 25-step_alternative<br />

The following example shows how the step loops available inside ECL can be used as an<br />

alternative to the regular .STEP command in Eldo.<br />

It uses an ECL step loop inside a testbench instead of a .STEP param statement. The testbench<br />

instantiates an RC circuit and steps the resistor value from 1 to 10 with increments of 1. This is<br />

only a simple example, highlighting the mechanism used, and can be extended to more complex<br />

simulation sequences possible only with ECL.<br />

Original Netlist<br />

* ECL .STEP alternative<br />

v1 1 0 3<br />

r1 1 2 p<br />

c1 2 0 1u ic=0<br />

* name needed for ECL<br />

.plot tran res_wave = v(2)<br />

.tran 0.1 1 uic<br />

.param p = 1<br />

.step param p 1k 200k 1k<br />

.end<br />

Steps to Create an ECL Alternative<br />

Follow the steps below to replace the regular .STEP by an ECL step loop:<br />

1. Parametrize the netlist by creating a testbench:<br />

Eldo® User's Manual, 15.3 1123


Eldo Control Language<br />

.STEP Alternative<br />

.define_testbench tb_netlist (param_tb_value = 1 )<br />

2. Modify the original netlist to exclude the .STEP and modify the .PARAM command to<br />

use the testbench argument:<br />

.param p = param_tb_value<br />

.end_define_testbench<br />

3. Define an ECL task with a step loop to run the simulations. This is an incremental loop;<br />

the parameter being swept, loop_param, is specified with param. The start, stop, and<br />

step define the loop structure. The loop ends with the endstep command.<br />

.define_task t1<br />

/* parameter for the step loop. */<br />

set loop_param = 1<br />

set wave_res[] = 0<br />

/* step loop similar to the .step command. */<br />

step (type=step, param=loop_param, start=1k, stop=200k, step=1k)<br />

/* run the simulation. */<br />

simulation(tb_netlist(param_tb_value=loop_param),<br />

+ name="res/simu" + loop_param + ".cir",<br />

+ wave_res[loop_param/1k]=@res_wave)<br />

endstep<br />

.end_define_task<br />

.t1<br />

The full example is located in $MGC_AMS_HOME/examples/ecl/25-step_alternative.<br />

The simulation command runs the simulation of the testbench and obtains results. The<br />

simulation files and waveforms for each step will be generated in different files in the output<br />

directory res. The name of each file is made up of the simu prefix followed by the step index<br />

(simu1, simu2, simu3, and so on). These generated files can be useful to debug simulations. A<br />

directory has been specified so that all generated temporary files can be easily removed. The<br />

testbench is instantiated with the .t1 statement.<br />

An important difference to note compared with a regular .STEP is:<br />

With the original netlist, compound waveforms are generated; but with ECL, since there are 200<br />

simulations, by default 200 wdb files will be generated; if the same wdb is used, it will be<br />

overwritten. To avoid this, there are two solutions:<br />

• Specify a specific name for each wdb file (using the “name” argument).<br />

Avoid this solution, because you will have 200 wdb files generated.<br />

1124<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

.EXTRACT Alternative<br />

• (Used in the example.) Specify explicitly the waveforms you want in the main wdb file<br />

(by using the “@out” argument). Do this by giving a name to waveforms (res_wave<br />

above) and then acquire them for each simulation.<br />

As a result, inside the main wdb file, there will be 200 waveforms.<br />

Parallel Version<br />

The step loop in the previous example is sequential: simulations are performed one after the<br />

other. It is possible to run these simulations in parallel when using the parallel version of the<br />

step loop by replacing the keywords “step” and “endstep” with “para_step” and<br />

“end_para_step” accordingly. The parallel loops are also more restrictive than the sequential<br />

loops (ECL will output errors to make sure the parallel code does not cause any concurrency<br />

issues). It is advised to only run simulations in parallel and store their results inside arrays, and<br />

to perform any post-processing computation outside the parallel loop, in a sequential loop.<br />

The full example is located in $MGC_AMS_HOME/examples/ecl/25-step_alternative/<br />

step_alternative_para.cir.<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, and “Defining and Running Simulations” on page 841 for more<br />

information on the concepts used in the example.<br />

Tip<br />

See “.STEP” in the Eldo Reference Manual.<br />

Related Topics<br />

.EXTRACT Alternative<br />

Examples Using ECL as an Alternative to Standard Eldo Commands<br />

.EXTRACT Alternative<br />

Netlist directory: 26-extract_alternative<br />

The following example shows how the ECL can be used as an alternative to the regular<br />

.EXTRACT commands in Eldo to print results in a custom format.<br />

This example uses the same original netlist as used in the .STEP Alternative. Add a .EXTRACT<br />

command to the previous netlist (inside the testbench) as follows:<br />

* name needed for ECL<br />

.extract tran label=res_extract xthres(v(2), 1.5)<br />

The default display without any additional ECL custom formatting is:<br />

Eldo® User's Manual, 15.3 1125


Eldo Control Language<br />

.EXTRACT Alternative<br />

RES_EXTRACT[1] = 6.9296E-01<br />

RES_EXTRACT[2] = 1.3859E+00<br />

RES_EXTRACT[3] = 2.0937E+00<br />

RES_EXTRACT[4] = 2.7718E+00<br />

RES_EXTRACT[5] = 3.4785E+00<br />

RES_EXTRACT[6] = 4.1633E+00<br />

RES_EXTRACT[7] = 4.8633E+00<br />

RES_EXTRACT[8] = 5.5480E+00<br />

RES_EXTRACT[9] = 6.2396E+00<br />

RES_EXTRACT[10] = 6.9389E+00<br />

Update the netlist with the following ECL task to add ECL custom formatting (see section<br />

below the “display results in a custom way” comment):<br />

.define_task t1<br />

/* parameter for the step loop. */<br />

set loop_param = 1<br />

set param_value[] = 0<br />

set extract_res[] = 0<br />

/* step loop similar to the .step command. */<br />

step (type=step, param=loop_param, start=1, stop=10, step=1)<br />

/* run the simulation. */<br />

param_value[loop_param] = loop_param<br />

simulation(tb_netlist(param_tb_value=loop_param),<br />

+ name="res/simu" + loop_param + ".cir",<br />

+ extract_res[loop_param]=@res_extract)<br />

endstep<br />

/* display results in a custom way. */<br />

fprint(stdout, "Parameter value | Extract result\n")<br />

for (loop_param = extract_res.imin; loop_param


Eldo Control Language<br />

.PRINTFILE Alternative #1<br />

The full example is located in $MGC_AMS_HOME/examples/ecl/26-extract_alternative.<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, “Defining and Running Simulations” on page 841, and the fprint<br />

function for more information on the concepts used in the example.<br />

Tip<br />

See “.EXTRACT” in the Eldo Reference Manual.<br />

Related Topics<br />

.PRINTFILE Alternative #1<br />

Examples Using ECL as an Alternative to Standard Eldo Commands<br />

.PRINTFILE Alternative #1<br />

Netlist directory: 27-printfile_alternative<br />

The following example shows how the ECL can be used as an alternative to the regular<br />

.PRINTFILE command in Eldo to print results inside a file.<br />

This example expands on the example used in the .EXTRACT Alternative. In addition, it uses<br />

the ECL fopen and fprint functions to print results inside a <strong>user</strong>-defined file, results.txt.<br />

Eldo® User's Manual, 15.3 1127


Eldo Control Language<br />

.PRINTFILE Alternative #1<br />

* ECL .PRINTFILE alternative<br />

.define_testbench tb_netlist (param_tb_value = 1 )<br />

v1 1 0 3<br />

r1 1 2 p<br />

c1 2 0 1 ic=0<br />

.plot tran res_wave = v(2)<br />

.tran 1 10 uic<br />

.param p = param_tb_value<br />

* name needed for ECL<br />

.extract tran label=res_extract xthres(v(2), 1.5)<br />

.end_define_testbench<br />

.define_task t1<br />

/* parameter for the step loop. */<br />

set loop_param = 1<br />

set param_value[] = 0<br />

set extract_res[] = 0<br />

set file1 = fopen("results.txt", "w")<br />

/* step loop similar to the .step command. */<br />

step (type=step, param=loop_param, start=1, stop=10, step=1)<br />

/* run the simulation. */<br />

param_value[loop_param] = loop_param<br />

simulation(tb_netlist(param_tb_value=loop_param),<br />

+ name="res/simu" + loop_param + ".cir",<br />

+ extract_res[loop_param]=@res_extract)<br />

endstep<br />

/* display results in a custom way. */<br />

fprint(file1, "Parameter value | Extract result\n")<br />

for (loop_param = extract_res.imin; loop_param


Eldo Control Language<br />

.PRINTFILE Alternative #2<br />

Related Topics<br />

.PRINTFILE Alternative #2<br />

Examples Using ECL as an Alternative to Standard Eldo Commands<br />

.PRINTFILE Alternative #2<br />

The following example shows how the ECL can be used as an alternative to the regular<br />

.PRINTFILE command in Eldo to print CSV results inside a file.<br />

In this example, the DC offset of an operational amplifier is computed for different values of<br />

vdd and then printed into a .csv file (that can be loaded in EZwave for example).<br />

Eldo® User's Manual, 15.3 1129


Eldo Control Language<br />

.PRINTFILE Alternative #2<br />

* Generate a .csv file.<br />

.define_testbench netlist (pvdd=1.5)<br />

* op amp<br />

m16 vdd bias m17d vdd p w=4.8u l=1.2u<br />

m17 m17d m17d vss vss n w=3.2u l=1.2u<br />

m15 m15d m17d vss vss n w=3.2u l=1.2u<br />

m13 m13d m17d vss vss n w=3.2u l=1.2u<br />

m14 vdd m15d m15d vdd p w=1u l=1.2u<br />

m12 vdd m13d m13d vdd p w=4.8u l=1.2u<br />

m3 vdd m13d m1d vdd p w=4.8u l=1.2u<br />

m4 vdd m13d m2d vdd p w=4.8u l=1.2u<br />

m11 vdd m13d out vdd p w=16u l=1.2u<br />

m1 m1d inp com com n w=0.8u l=0.6u<br />

m2 m2d inn com com n w=0.8u l=0.6u<br />

m9 com m17d vss vss n w=3.2u l=1.2u<br />

m5 m2d m15d m7d vdd p w=2.4u l=1.2u<br />

m6 m1d m15d m8d vdd p w=2.4u l=1.2u<br />

m7 m7d m7d vss vss n w=1.6u l=1.2u<br />

m8 m8d m7d vss vss n w=1.6u l=1.2u<br />

cx m8d out 0.2p ! lousy compensation cap.<br />

cl out 0 1p ! load cap.<br />

m10 out m8d vss vss n w=13u l=1.2u<br />

vb bias 0 0.95V<br />

**************************<br />

.option tuning=vhigh<br />

**************************<br />

* powersupply<br />

vdd vdd 0 pvdd<br />

vss vss 0 -pvdd<br />

.connect out inn ! follower connection<br />

vinp inp 0 DC 0<br />

.dc<br />

.extract dc label=vout_follower V(out)<br />

.extract dc label=dc_offset V(inp)-V(out)<br />

.end_define_testbench<br />

*========================================================================<br />

.define_task print_dc_offset (n=40)<br />

set loop_param=0<br />

set vdd[]=1.65<br />

set dc_offset[]=0<br />

// create the .csv file<br />

set csv_file = fopen("results.csv", "w")<br />

// for each value of VDD from 1.5V to 1.8V, find out the DC offset<br />

step (type=step, param=loop_param, start=1, stop=n, step=1)<br />

vdd[loop_param] = 1.5 + (loop_param-1) * (1.8-1.5) / (n-1)<br />

simulation(<br />

+ name = "simu_dc_offset/simu.cir",<br />

+ netlist(pvdd = vdd[loop_param]),<br />

+ dc_offset[loop_param] = @vout_follower)<br />

1130<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

.OPTIMIZE Alternative<br />

endstep<br />

// print a header<br />

fprint(csv_file, ".HEADER\n")<br />

fprint(csv_file, "..NAMES\n")<br />

fprint(csv_file, "Vdd,DC Offset\n")<br />

fprint(csv_file, "..UNITS\n")<br />

fprint(csv_file, "Voltage,Voltage\n")<br />

fprint(csv_file, ".DATA\n")<br />

// print values<br />

for (loop_param = vdd.imin; loop_param


Eldo Control Language<br />

.OPTIMIZE Alternative<br />

* ECL .OPTIMIZE alternative<br />

.define_testbench optimize_this()<br />

.paramopt res_value=(5,1,10)<br />

v1 1 0 dc 2<br />

r1 1 0 res_value<br />

.dc<br />

.plot dc v(1) i(v1) i2(v1)<br />

.option aex<br />

.extract dc label=v1_current i2(v1) goal=0.35<br />

.optimize<br />

.option ops<strong>eldo</strong>_netlist<br />

.end_define_testbench<br />

.define_testbench final_run(res_value=0)<br />

v1 1 0 dc 2<br />

r1 1 0 res_value<br />

.dc<br />

.plot dc v(1) i(v1) i2(v1)<br />

.option aex<br />

.extract dc label=v1_current i2(v1)<br />

.end_define_testbench<br />

.define_task run()<br />

set current=0<br />

set return_value=0<br />

set final_resistance=0<br />

return_value = simulation(name="optimization_file",<br />

+ log="optimization_run.log", optimize_this(),<br />

+ final_resistance=@res_value)<br />

if (return_value.simu_status == 0)<br />

fprint(stdout, "\nfinal_resistance = %g\n", final_resistance)<br />

else<br />

fprint(stdout, "\nBad optimization run. return status = %g.\n",<br />

+ return_value.simu_status)<br />

endif<br />

return_value = simulation(name="final_results_file",<br />

+ log="final_rerun.log", final_run(res_value=final_resistance))<br />

if (return_value.simu_status == 0)<br />

fprint(stdout, "\nFinal run made from file %s\n",<br />

+ "final_results_file.cir")<br />

else<br />

fprint(stdout, "\nBad final run. return status = %g\n",<br />

+ return_value.simu_status)<br />

endif<br />

.end_define_task<br />

.run<br />

.end<br />

The full example is located in $MGC_AMS_HOME/examples/ecl/28-optimize_alternative.<br />

1132<br />

Eldo® User's Manual, 15.3


Eldo Control Language<br />

.MPRUN with Monte Carlo Analysis Example<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, “Defining and Running Simulations” on page 841, and the fprint<br />

function for more information on the concepts used in the example.<br />

Tip<br />

See “.OPTIMIZE” in the Eldo Reference Manual.<br />

Related Topics<br />

Examples Using ECL as an Alternative to Standard Eldo Commands<br />

.MPRUN with Monte Carlo Analysis Example<br />

This example shows how the .MPRUN command works at the testbench level. For a given<br />

simulation (run from an ECL task), if the netlist to simulate contains a .MPRUN command and<br />

a .MC command for example, then the Monte Carlo runs of this simulation will be distributed as<br />

usual.<br />

.define_testbench tb_netlist (param_tb_value = 1 )<br />

[netlist]<br />

* parameter for the ECL step loop<br />

.param p = param_tb_value<br />

* parameter for the .mc<br />

.param pv=3 lot=0.01<br />

.mc 100<br />

.mprun host=myhost1, myhost2, myhost3<br />

.end_define_testbench<br />

.define_task t1<br />

set loop_param = 1<br />

set wave_res[] = 0<br />

set res = 0<br />

/* step loop similar to the .step command. */<br />

step (type=step, param=loop_param, start=1, stop=10, step=1)<br />

/* run the simulation. */<br />

res = simulation(tb_netlist(param_tb_value=loop_param),<br />

+ name="res/simu" + loop_param + ".cir",<br />

+ wave_res[loop_param]=@res_wave)<br />

if (res.simu_status != 0)<br />

fprint(stdout, "Error: simulation failed!\n")<br />

return -1<br />

endif<br />

endstep<br />

.end_define_task<br />

.t1<br />

Eldo® User's Manual, 15.3 1133


Eldo Control Language<br />

.MPRUN with Monte Carlo Analysis Example<br />

The ten ECL simulations are run sequentially (even if the .MPRUN command is written out of<br />

the testbench). For each of these ten simulations, the 100 Monte Carlo runs are distributed on<br />

the specified hosts.<br />

See “Testbenches” on page 809, “Tasks” on page 814, “Variables” on page 821, “Flow Control<br />

Statements” on page 835, “Defining and Running Simulations” on page 841, and the fprint<br />

function for more information on the concepts used in the example.<br />

Tip<br />

See “.MPRUN” in the Eldo Reference Manual.<br />

Related Topics<br />

Examples Using ECL as an Alternative to Standard Eldo Commands<br />

1134<br />

Eldo® User's Manual, 15.3


Chapter 19<br />

Post-Processing Library<br />

The Post-Processing Library (PPL) is a tool that enables interfacing between Eldo and a set of<br />

predefined, <strong>user</strong> defined DSP or mathematical functions. User Defined Functions (UDF) are<br />

written using the scripting language Tcl. For Post-Processing capability you can use Eldo<br />

commands to call a PPL function and the Tcl language extensions.<br />

Post-Processing Library Example Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137<br />

General Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139<br />

Registering User Defined Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139<br />

Making Specific Calls to User Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139<br />

Waveform Definition With User Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140<br />

Macro-Like Usage of User Defined Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141<br />

Keyword Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142<br />

Working with Waveforms Inside User Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . 1142<br />

evalExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144<br />

defineVec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146<br />

EZwave Waveform Calculator Functions Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149<br />

Built-In Waveform Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150<br />

ABS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151<br />

ACOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152<br />

ACOSH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153<br />

ACOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154<br />

ACOTH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155<br />

ASIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156<br />

ASINH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157<br />

ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158<br />

ATANH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159<br />

AVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1160<br />

COMPRESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161<br />

COS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162<br />

COSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163<br />

COT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164<br />

COTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1165<br />

DB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166<br />

DEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167<br />

DELAY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168<br />

DERIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169<br />

DRV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1170<br />

EXP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171<br />

FALLTIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172<br />

Eldo® User's Manual, 15.3 1135


Post-Processing Library<br />

GMARGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173<br />

HISTOGRAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174<br />

IMAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175<br />

INTEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176<br />

INTEGRAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177<br />

INTERSECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178<br />

INVDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179<br />

LOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180<br />

LOG10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181<br />

MAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182<br />

MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183<br />

MIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184<br />

PHASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185<br />

PHMARGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186<br />

RAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187<br />

REAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188<br />

RELATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1189<br />

RISETIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190<br />

RMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191<br />

SAMPLE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192<br />

SETTLINGTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193<br />

SIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194<br />

SINH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195<br />

SQR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196<br />

SQRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197<br />

SUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198<br />

TAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199<br />

TANH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200<br />

TPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201<br />

TPDDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202<br />

TPDDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203<br />

TPDUD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204<br />

TPDUU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205<br />

VMAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206<br />

VMIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1207<br />

WINDOW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208<br />

XCOMPRESS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209<br />

XVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210<br />

XWAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211<br />

YVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212<br />

IIPX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213<br />

OIPX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214<br />

Built-In DSP Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215<br />

AUTOCOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216<br />

CONV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217<br />

1136<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

Post-Processing Library Example Files<br />

CORRELO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218<br />

CT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220<br />

FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222<br />

HARMONICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224<br />

HDIST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225<br />

IFFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226<br />

PERIODO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227<br />

PSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229<br />

SAMPLER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1230<br />

SNR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232<br />

Accessing Waves Inside an External Database Functions . . . . . . . . . . . . . . . . . . . . . . . . 1233<br />

LOAD_FILE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234<br />

DISP_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235<br />

UNLOAD_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236<br />

Additional PPL Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237<br />

DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238<br />

GETSIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239<br />

GETPOINT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240<br />

SETPOINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241<br />

CREATEVECTOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242<br />

Post-Processing Library Example Files<br />

A number of example files are provided to illustrate different configurations. The example files<br />

are provided in your installed directory: $MGC_AMS_HOME/examples/ppl.<br />

Table 19-1 lists the example filenames and descriptions.<br />

asciigen.cir and<br />

asciigen.tcl<br />

expressions.cir and<br />

expressions.tcl<br />

realvalue.cir and<br />

realvalue.tcl<br />

samphold.cir and<br />

samphold.tcl<br />

tcl_wave.cir and<br />

expressions.tcl<br />

Table 19-1. PPL Example Files<br />

Demonstrates how to use several .CALL_TCL commands to dump<br />

waves in an ASCII output file.<br />

Demonstrates how to use .CALL_TCL commands and how to work<br />

with expressions inside the UDF. In this example the input and the<br />

output are a waveform (set return $ commands are used).<br />

Demonstrates how to use UDF in a macro-like way to define a resistor<br />

value.<br />

Demonstrates how to use UDF in a macro-like way to define<br />

defwaves, and namespace in Tcl.<br />

Demonstrates how to use the .TCL_WAVE command.<br />

Eldo® User's Manual, 15.3 1137


Post-Processing Library<br />

Post-Processing Library Example Files<br />

wave_info.cir and<br />

wave_info.tcl<br />

wave_meas.cir and<br />

wave_meas.tcl<br />

Table 19-1. PPL Example Files (cont.)<br />

Demonstrates how to use wave information commands and loops<br />

in Tcl.<br />

Demonstrates how to use measurement functions in UDF. In this<br />

example the input is a waveform and the output is a number (set/puts/<br />

display commands are used).<br />

Related Topics<br />

General Usage<br />

Built-In Waveform Functions<br />

Built-In DSP Functions<br />

Accessing Waves Inside an External Database Functions<br />

Additional PPL Functions<br />

1138<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

General Usage<br />

General Usage<br />

This section lists the general usage topics together with any associated command.<br />

Table 19-2. General Usage Topics<br />

Topic<br />

Registering User Defined Functions<br />

Making Specific Calls to User Defined Functions<br />

Waveform Definition With User Defined Functions<br />

Macro-Like Usage of User Defined Functions<br />

Keyword Parameters<br />

Working with Waveforms Inside User Defined Functions<br />

Associated Command<br />

.USE_TCL<br />

.CALL_TCL<br />

.TCL_WAVE<br />

Registering User Defined Functions<br />

The .USE_TCL command loads the Tcl file, filename, into the Eldo Tcl interpreter, enabling all<br />

declared functions to be recognized inside Eldo.<br />

.USE_TCL filename<br />

After loading the Tcl file, Eldo can use all the functions written inside this file as if they were<br />

macros. This means these functions can accept any argument, are defined for the whole netlist,<br />

and can return both numbers and/or waves.<br />

EZwave also supports Tcl scripting, enabling you to create batch files to execute Tcl commands<br />

from within EZwave. When .USE_TCL is used in EZwave mode, then the Tcl script must<br />

adhere to the EZwave Tcl command syntax rules.<br />

Tip<br />

See “.USE_TCL” in the Eldo Reference Manual and “Tcl Scripting Support” in the EZwave<br />

User’s and Reference Manual.<br />

Making Specific Calls to User Defined Functions<br />

The .CALL_TCL command is used to perform a single call to a Tcl function. The example files<br />

expressions.cir and expressions.tcl demonstrate how .CALL_TCL can be used in the netlist,<br />

creating waveforms for EZwave to plot using PPL Built-in functions.<br />

Tip<br />

See “.CALL_TCL” in the Eldo Reference Manual.<br />

Eldo® User's Manual, 15.3 1139


Post-Processing Library<br />

Waveform Definition With User Defined Functions<br />

Related Topics<br />

Post-Processing Library Example Files<br />

Keyword Parameters<br />

Waveform Definition With User Defined Functions<br />

The .TCL_WAVE command defines a new waveform using a Tcl function. The example files<br />

tcl_wave.cir and expressions.tcl demonstrate how .TCL_WAVE can be used in the netlist to<br />

create waveforms for EZwave to plot using PPL Built-in functions. The waveform expression<br />

must be a single Tcl function.<br />

This enables you to dynamically manage User Defined Functions (UDF) written in Tcl<br />

language. The functions of the post-processor library and other commands are available through<br />

the Tcl interface.<br />

Tip<br />

See “.TCL_WAVE” and “.DEFWAVE” in the Eldo Reference Manual.<br />

Notes<br />

• Built-in PPL functions that act on a waveform cannot be used in Tcl procs that are called<br />

from .DEFWAVE statements. This is because .DEFWAVE expressions represent a<br />

numerical value, and not a waveform.<br />

• The name of the Tcl function inside a .CALL_TCL command is case sensitive. It must<br />

exactly match the name in the .tcl file.<br />

• Tcl function names can be either lowercase or uppercase inside a netlist. However when<br />

they are used outside of a .CALL_TCL command, for example in a resistor expression,<br />

they are converted to uppercase. They must be uppercase inside the Tcl source file.<br />

• .USE_TCL commands must always be placed before the first call to a Tcl function.<br />

Otherwise, Eldo will not be able to parse the expressions using these functions.<br />

Related Topics<br />

Post-Processing Library Example Files<br />

Registering User Defined Functions<br />

Making Specific Calls to User Defined Functions<br />

1140<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

Macro-Like Usage of User Defined Functions<br />

Macro-Like Usage of User Defined Functions<br />

An example is provided to demonstrate how two resistors obtain their values directly from a<br />

UDF function or through a parameter (the files are realvalue.cir and realvalue.tcl). This<br />

example demonstrates the use of a simple Tcl function returning a real value.<br />

File realvalue.tcl listing:<br />

proc GETVALUE { rname rval } {<br />

# Use native Tcl syntax for expression calculation<br />

set newvalue [expr 2*$rval + log($rval)]<br />

}<br />

puts "The value of resistor $rname is $newvalue"<br />

return $newvalue<br />

Note<br />

The name of the function must be in uppercase in this example otherwise Eldo will not be<br />

able to identify it, because it is not called from a .CALL_TCL command.<br />

File realvalue.cir listing:<br />

* Simple Tcl function returning a real value<br />

.use_tcl realvalue.tcl<br />

.param p1={GETVALUE("R1",TEMPER)}<br />

.param p2=1<br />

v1 1 0 sin(0 2 1g)<br />

r1 1 2 p1<br />

r2 2 0 {GETVALUE("R2",p2)}<br />

.tran 1n 10n<br />

.plot tran i(r1)<br />

.end<br />

Except for the dump of the value, the Tcl function GETVALUE is equivalent to:<br />

.defmac GETVALUE(val) = 2*val+log(val)<br />

UDF parameters can be real values, strings, waves, macros, UDF or keywords (see “Keyword<br />

Parameters” on page 1142). It is important to note that for this kind of use, the UDF may be<br />

called for each timestep. Thus wave parameters are not passed to the UDF as objects but as real<br />

values.<br />

The example files samphold.cir and samphold.tcl contain another example of UDF. The<br />

function uses a Tcl namespace to keep the previous value of a wave, and is called inside a<br />

.DEFWAVE to create a sampled representation of the input wave.<br />

Eldo® User's Manual, 15.3 1141


Post-Processing Library<br />

Keyword Parameters<br />

Related Topics<br />

Post-Processing Library Example Files<br />

Registering User Defined Functions<br />

Making Specific Calls to User Defined Functions<br />

Keyword Parameters<br />

Keyword parameters can be used in any calls to UDF.<br />

These are:<br />

XAXIS / TIME / FREQ - specifies the current timestamp or frequency<br />

TEMPER - specifies the current temperature<br />

The following keywords can only be used in .CALL_TCL commands:<br />

ICARLO - specifies the current index of Monte-Carlo run<br />

IRUN - specifies the current step index<br />

IALTER - specifies the current alter index<br />

NBCARLO - specifies the number of Monte-Carlo run<br />

NBRUN - specifies the number of steps<br />

NBALTER - specifies the number of .ALTER statements<br />

Related Topics<br />

Making Specific Calls to User Defined Functions<br />

Working with Waveforms Inside User Defined<br />

Functions<br />

You can work with waveforms in arguments and expressions.<br />

Waveforms in Arguments<br />

In the context of .CALL_TCL commands, waves are not real values but vectors, or, in a more<br />

general way, objects are generated by Eldo and given to the PPL. The argument that UDF<br />

receives is only a reference to an object. Thus it is impossible to directly use these references in<br />

mathematical expressions such as:<br />

1142<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

Working with Waveforms Inside User Defined Functions<br />

proc WAVE_PLUS { wv_in } {set wv_out [expr $wv_in + $wv_in]<br />

+ return $wv_out}<br />

Waveforms in Expressions<br />

To enable operations on waveforms, a set of commands has been registered inside the PPL<br />

environment. Table 19-3 lists common operators’ syntax and the equivalent syntax used inside<br />

the PPL.<br />

These commands accept real, complex and/or wave arguments. For example, it is possible to<br />

add two waveforms, a waveform and a real, or two reals.<br />

Two commands are available to simplify the syntax: evalExpr and defineVec.<br />

Looking more closely at the Tcl syntax, complex expressions can be very difficult to read. For<br />

example, in common language:<br />

a = ((b+c)*(d+e))/(f+g)<br />

becomes, in Tcl:<br />

set a [div [mult [add $b $c] [add $d $e]] [add $f $g]]<br />

The example files, expressions.cir and expressions.tcl, show the usage of the evalExpr and<br />

defineVec commands with the two different syntaxes.<br />

Related Topics<br />

Table 19-3. C and PPL Syntax<br />

C Syntax C Example PPL Syntax PPL Example<br />

+ a = b + c add set a [add $b $c]<br />

- a = b - c sub set a [sub $b $c]<br />

* a = b * c mult set a [mult $b $c]<br />

/ a = b / c div set a [div $b $c]<br />

^ a = b ^ c pow set a [pow $b $c]<br />

fmod a = fmod(b,c) mod set a [mod $b $c]<br />

Post-Processing Library Example Files<br />

evalExpr<br />

defineVec<br />

Making Specific Calls to User Defined Functions<br />

Eldo® User's Manual, 15.3 1143


Post-Processing Library<br />

evalExpr<br />

evalExpr<br />

Evaluates an expression in C-like syntax. The evalExpr command enables evaluation of an<br />

expression written using C-like syntax. It can contain both numbers and/or waves. Quotes are<br />

mandatory. If the expression is purely numerical a single value is returned. Otherwise the result<br />

is a vector and is printed using the display command format (display command and output will<br />

be described later). The PPL is able to handle complex arguments, and display them correctly.<br />

Tip<br />

This command is more likely to be used with numerical expressions whereas the defineVec<br />

command is for wave calculations.<br />

Syntax<br />

evalExpr expression<br />

Arguments<br />

• expression<br />

Expression to be evaluated.<br />

Examples<br />

This example demonstrates the evalExpr command. If the .tcl file contains:<br />

proc EVAL_EXPR { wv_in } {<br />

# evalExpr using numbers<br />

set a 3<br />

set numerical [evalExpr "2*$a + 4"]<br />

puts "numerical = $numerical"<br />

# evalExpr using waves<br />

set vector [evalExpr "2*$wv_in + 4"]<br />

puts "vector = $vector"<br />

}<br />

The following simple call to this function from the Eldo command in the .cir file:<br />

.call_tcl tran when=END_OF_RUN EVAL_EXPR(v(1))<br />

produces the following output:<br />

numerical = 10.00000000000000<br />

vector = { 0 0.00000000000000 4.00000000000000 + 0.00000000000000j }<br />

{ 1 0.00000000002000 4.50133293425722 }<br />

{ 2 0.00000000003900 4.97030313987119 }<br />

{ 3 0.00000000007699 5.86034757905359 }<br />

{ 4 0.00000000015297 7.27942102760290 }<br />

{ 5 0.00000000022966 7.96738275669581 }<br />

{ 6 0.00000000025000 8.00000000000000 }<br />

{ 7 0.00000000029068 7.87006296906364 }<br />

{ 8 0.00000000035325 7.18743864881722 }<br />

1144<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

evalExpr<br />

Related Topics<br />

defineVec<br />

Making Specific Calls to User Defined Functions<br />

Eldo® User's Manual, 15.3 1145


Post-Processing Library<br />

defineVec<br />

defineVec<br />

Defines a PPL object using C-like syntax. Similar to the evalExpr command, defineVec enables<br />

evaluation of an expression written using C-like syntax but the result is stored in a PPL object<br />

named output_object rather than displayed. An error occurs if an object using the same name<br />

already exists in the PPL.<br />

Tip<br />

This command is more likely to be used with wave calculations, whereas the evalExpr<br />

command is for numerical expressions.<br />

Syntax<br />

defineVec expression<br />

Arguments<br />

• output_object<br />

Name of the object which contains the result of the expression.<br />

• expression<br />

Expression to be evaluated.<br />

Examples<br />

Example 1<br />

This function demonstrates the defineVec command. It produces the same results as the<br />

evalExpr function example and returns to Eldo a reference to the PPL object “vector” to plot it.<br />

proc DEFINE_VEC { wv_in } {<br />

# evalExpr using numbers<br />

set a 3<br />

defineVec numerical "2*$a+4"<br />

puts "numerical = [display numerical]"<br />

# evalExpr using waves (use display command to print vector values)<br />

defineVec vector "$wv_in+4"<br />

puts "vector = [display vector]"<br />

return vector<br />

}<br />

A call to this function from the Eldo command:<br />

.call_tcl tran when=END_OF_RUN PLOT=YES LABEL=Absv1 DEFINE_VEC(v(1))<br />

produces the same output as evalExpr but the object vector can be reused in any expression or<br />

returned to Eldo to be dumped in the output file.<br />

1146<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

defineVec<br />

Note<br />

The return value of this function is not a Tcl variable but directly a vector.<br />

Example 2<br />

This function demonstrates the difference between Tcl variables and PPL references. It uses<br />

Mathematical functions with both C-like and Tcl syntaxes and returns to Eldo a reference to the<br />

PPL object “wv_final” to plot it.<br />

proc WAVE_REFERENCE { wv_in } {<br />

# Define a PPL object named wv_out<br />

defineVec wv_out "2*abs($wv_in)"<br />

# Store a PPL refence inside a Tcl variable wv_out<br />

set wv_out [exp $wv_in]<br />

# Define a PPL object named wv_final using both PPL object<br />

# wv_out and the value of Tcl variable wv_out<br />

defineVec wv_final "wv_out + $wv_out"<br />

# Return the final object to Eldo<br />

return wv_final<br />

}<br />

A call to this function from the Eldo command:<br />

.call_tcl tran when=END_OF_RUN PLOT=YES LABEL=Refv1 WAVE_REFERENCE(v(1))<br />

produces a waveform named Refv1 in the .wdb output file; this waveform being the return of<br />

the Tcl function.<br />

Example 3<br />

The following examples show the name of the Tcl function inside a .CALL_TCL command is<br />

case sensitive. It must exactly match the name in the .tcl file.<br />

If the my_func.tcl file contains:<br />

Eldo® User's Manual, 15.3 1147


Post-Processing Library<br />

defineVec<br />

proc MY_EXPRESSION { wv_in } {<br />

# puts "hello 1"<br />

defineVec vector "2*$wv_in"<br />

# puts "hello 2"<br />

return vector<br />

}<br />

proc my_xwave { wv_in } {<br />

# puts "hello 3"<br />

defineVec vector [xwave $wv_in]<br />

# puts "hello 4"<br />

return vector<br />

}<br />

proc MY_INTEG { wv_in } {<br />

puts "hello 5"<br />

defineVec vector [integ $wv_in]<br />

puts "hello 6"<br />

return vector<br />

}<br />

proc my_exp { wv_in } {<br />

puts "hello 7"<br />

defineVec vector [exp $wv_in]<br />

puts "hello 8"<br />

return vector<br />

}<br />

Then calls to these from an Eldo netlist must match in case, as shown below:<br />

v1 1 0 sin(1 2 1e9)<br />

r1 1 2 1k<br />

r2 2 0 1k<br />

.tran 1p 1n<br />

.option eps=1e-8<br />

.use_tcl my_func.tcl mode=ppl<br />

.call_tcl tran where=end_of_run plot=yes label=f1 MY_INTEG(v(1))<br />

.call_tcl tran where=end_of_run plot=yes label=f2 MY_EXPRESSION(v(1))<br />

.call_tcl tran where=end_of_run plot=yes label=f3 my_xwave(v(1))<br />

.call_tcl tran where=end_of_run plot=yes label=f4 my_exp(v(1))<br />

.probe tran v(1) v(2)<br />

.end<br />

Related Topics<br />

evalExpr<br />

Making Specific Calls to User Defined Functions<br />

1148<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

EZwave Waveform Calculator Functions Usage<br />

EZwave Waveform Calculator Functions Usage<br />

The EZwave Waveform Calculator library can be used from Eldo through Tcl scripts. The wfc<br />

function enables full access to all the calculation operations of the EZwave Waveform<br />

Calculator.<br />

Tip<br />

See “Waveform Calculator” and the “wfc command” in the EZwave User’s and Reference<br />

Manual.<br />

Syntax<br />

wfc expression<br />

Arguments<br />

• expression<br />

Waveform Calculator expression.<br />

Examples<br />

This example shows how to pass parameters from the Eldo Tcl procedure to an EZwave wfc<br />

expression.<br />

* Passing Tcl proc parameters to a wfc expression<br />

r1 net50 0 1<br />

v1 net50 0 am(1 1 100meg 1G)<br />

.tran 20n 20n<br />

.option eps=1e-8<br />

.probe tran all<br />

.extract tran label=initial_rise tcross(v(net50), vth=1.25, occur=1)<br />

.use_tcl <strong>eldo</strong>_syntax_ko.tcl mode=ezwave<br />

.call_tcl tran where=end_of_run<br />

+ ezwave_p2p_ex(v(net50), meas(initial_rise))<br />

.end<br />

proc ezwave_p2p_ex {wave xstart} {<br />

set pk_to_pk \<br />

[wfc "peaktopeak($wave, x_start=$xstart, x_end=\"20e-9\")"]<br />

puts "The proc computed value is... $pk_to_pk"<br />

}<br />

The expression passed to wfc needs to be enclosed in double quotes if it contains Tcl variables,<br />

otherwise parentheses { } can be used. If arguments of wfc functions are strings, they need to be<br />

enclosed in single quotes (‘) or escaped double quotes (\”).<br />

Related Topics<br />

General Usage<br />

Eldo® User's Manual, 15.3 1149


Post-Processing Library<br />

Built-In Waveform Functions<br />

Built-In Waveform Functions<br />

Lists the built-in waveform functions.<br />

Table 19-4. Built-In Waveform Functions<br />

Eldo Functions<br />

ABS ACOS ACOSH ACOT ACOTH<br />

ASIN ASINH ATAN ATANH AVG<br />

COMPRESS COS COSH COT COTH<br />

DB DEG DELAY DERIVE DRV<br />

EXP FALLTIME GMARGIN HISTOGRAM IMAG<br />

INTEG INTEGRAL INTERSECT INVDB LOG<br />

LOG10 MAG MAX MIN PHASE<br />

PHMARGIN RAD REAL RELATION RISETIME<br />

RMS SAMPLE SETTLINGTIM SIN<br />

SINH<br />

E<br />

SQR SQRT SUM TAN TANH<br />

TPD TPDDD TPDDU TPDUD TPDUU<br />

VMAX VMIN WINDOW XCOMPRESS XVAL<br />

XWAVE YVAL<br />

Eldo RF Functions<br />

IIPX<br />

OIPX<br />

See also:<br />

• Built-In DSP Functions<br />

1150<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

ABS<br />

ABS<br />

Eldo built-in waveform function<br />

Absolute wave.<br />

Usage<br />

set wv_out [abs $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1151


Post-Processing Library<br />

ACOS<br />

ACOS<br />

Eldo built-in waveform function<br />

Inverse trigonometric wave function.<br />

Usage<br />

set wv_out [acos $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1152<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

ACOSH<br />

ACOSH<br />

Eldo built-in waveform function<br />

Inverse hyperbolic wave function.<br />

Usage<br />

set wv_out [acosh $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1153


Post-Processing Library<br />

ACOT<br />

ACOT<br />

Eldo built-in waveform function<br />

Inverse trigonometric wave function.<br />

Usage<br />

set wv_out [acot $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1154<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

ACOTH<br />

ACOTH<br />

Eldo built-in waveform function<br />

Inverse hyperbolic wave function.<br />

Usage<br />

set wv_out [acoth $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1155


Post-Processing Library<br />

ASIN<br />

ASIN<br />

Eldo built-in waveform function<br />

Inverse trigonometric wave function.<br />

Usage<br />

set wv_out [asin $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1156<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

ASINH<br />

ASINH<br />

Eldo built-in waveform function<br />

Inverse hyperbolic wave function.<br />

Usage<br />

set wv_out [asinh $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1157


Post-Processing Library<br />

ATAN<br />

ATAN<br />

Eldo built-in waveform function<br />

Inverse trigonometric wave function.<br />

Usage<br />

set wv_out [atan $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1158<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

ATANH<br />

ATANH<br />

Eldo built-in waveform function<br />

Inverse hyperbolic wave function.<br />

Usage<br />

set wv_out [atanh $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1159


Post-Processing Library<br />

AVG<br />

AVG<br />

Eldo built-in waveform function<br />

Average value of a wave.<br />

Usage<br />

set out_value [avg $wv_in]<br />

set out_value [avg $wv_in $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

out_value is the resulting average value of the wave.<br />

1160<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

COMPRESS<br />

COMPRESS<br />

Eldo built-in waveform function<br />

Extracts the Y-axis value of the wave at the point where the difference between the actual value<br />

of the wave and the linear extrapolation of the wave based on the computed slope value<br />

becomes greater than val. The slope is computed using the first two points of the waveform.<br />

Usage<br />

set out_value [compress $wv_in $val]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• val<br />

The threshold value.<br />

Return Values<br />

out_value is the resulting Y-axis value.<br />

Eldo® User's Manual, 15.3 1161


Post-Processing Library<br />

COS<br />

COS<br />

Eldo built-in waveform function<br />

Trigonometric wave function.<br />

Usage<br />

set wv_out [cos $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1162<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

COSH<br />

COSH<br />

Eldo built-in waveform function<br />

Hyperbolic wave function.<br />

Usage<br />

set wv_out [cosh $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1163


Post-Processing Library<br />

COT<br />

COT<br />

Eldo built-in waveform function<br />

Trigonometric wave function.<br />

Usage<br />

set wv_out [cot $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1164<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

COTH<br />

COTH<br />

Eldo built-in waveform function<br />

Hyperbolic wave function.<br />

Usage<br />

set wv_out [coth $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1165


Post-Processing Library<br />

DB<br />

DB<br />

Eldo built-in waveform function<br />

Conversion dB magnitude. Works only for real waveforms representing magnitude.<br />

Usage<br />

set wv_out [db $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Related Topics<br />

INVDB<br />

1166<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

DEG<br />

DEG<br />

Eldo built-in waveform function<br />

Conversion degrees.<br />

Usage<br />

set wv_out [deg $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Related Topics<br />

RAD<br />

Eldo® User's Manual, 15.3 1167


Post-Processing Library<br />

DELAY<br />

DELAY<br />

Eldo built-in waveform function<br />

Creates a delayed wave.<br />

Usage<br />

set wv_out [delay $wv_in $delay_value]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• delay_value<br />

The required delay value.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1168<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

DERIVE<br />

DERIVE<br />

Eldo built-in waveform function<br />

Derivative of a wave at an x value.<br />

Usage<br />

set out_value [derive $wv_in $xvalue]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• xvalue<br />

The required x value.<br />

Return Values<br />

out_value is the resulting value for the derivative of a wave at an x value.<br />

Eldo® User's Manual, 15.3 1169


Post-Processing Library<br />

DRV<br />

DRV<br />

Eldo built-in waveform function<br />

Derivative of a wave with respect to the x (or scale) variable.<br />

Usage<br />

set wv_out [drv $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1170<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

EXP<br />

EXP<br />

Eldo built-in waveform function<br />

Wave exponential.<br />

Usage<br />

set wv_out [exp $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1171


Post-Processing Library<br />

FALLTIME<br />

FALLTIME<br />

Eldo built-in waveform function<br />

Fall time of a wave, the result is of unit {x_unit}.<br />

Usage<br />

set out_value [falltime $wv_in $lower_thr $upper_thr]<br />

set out_value [falltime $wv_in $lower_thr $upper_thr $after]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_thr<br />

Lower threshold.<br />

• upper_thr<br />

Upper threshold.<br />

• after<br />

First transition between lower and upper thresholds is treated after this x value.<br />

Return Values<br />

out_value is the fall time of a wave.<br />

1172<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

GMARGIN<br />

GMARGIN<br />

Eldo built-in waveform function<br />

Gain margin is the linear gain distance to 1.0.<br />

Tip<br />

See gain margin extraction example.<br />

Usage<br />

set out_value [gmargin $wv_in1 $wv_in2]<br />

Arguments<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

Return Values<br />

out_value is the gain margin.<br />

Eldo® User's Manual, 15.3 1173


Post-Processing Library<br />

HISTOGRAM<br />

HISTOGRAM<br />

Eldo built-in waveform function<br />

Generates a histogram of the input wave showing the waves magnitude probability density<br />

distribution. The input wave is first sampled to equidistant points if the optional argument<br />

$sample is set.<br />

Usage<br />

set wv_out [histogram $wv_in $intervals]<br />

set wv_out [histogram $wv_in $intervals $sample]<br />

set wv_out [histogram $wv_in $intervals $lower_bound $upper_bound]<br />

set wv_out [histogram $wv_in $intervals $lower_bound $upper_bound $sample]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• intervals<br />

The number of histogram intervals.<br />

• sample<br />

If 0 or not specified: don’t sample.<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1174<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

IMAG<br />

IMAG<br />

Eldo built-in waveform function<br />

Imaginary part of a complex number/wave.<br />

Usage<br />

set wv_out [imag $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Related Topics<br />

REAL<br />

Eldo® User's Manual, 15.3 1175


Post-Processing Library<br />

INTEG<br />

INTEG<br />

Eldo built-in waveform function<br />

Definite integral of the input wave with respect to the x (or scale) variable, global integral or<br />

interval integral the result has the unit {wave_unit}*{x_unit}.<br />

Usage<br />

set out_value [integ $wv_in]<br />

set out_value [integ $wv_in $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

out_value is the definite integral of the input wave.<br />

1176<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

INTEGRAL<br />

INTEGRAL<br />

Eldo built-in waveform function<br />

Indefinite integral of the input wave with respect to the x-axis variable. The result is a<br />

waveform.<br />

Usage<br />

set wv_out [integral $wv_in $first_y_value]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• first_y_value<br />

Integration constant.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1177


Post-Processing Library<br />

INTERSECT<br />

INTERSECT<br />

Eldo built-in waveform function<br />

Get the intersection point (s) of two waves.<br />

Usage<br />

set out_vector [intersect $wv_in1 $wv_in2]<br />

set out_vector [intersect $wv_in1 $wv_in2 $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

• lower_bound<br />

x value after which measurement starts<br />

• upper_bound<br />

x value after which measurement stops<br />

Return Values<br />

out_vector is the intersection of two waves.<br />

1178<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

INVDB<br />

INVDB<br />

Eldo built-in waveform function<br />

Conversion linear magnitude. Works only for real waveforms representing magnitude.<br />

Usage<br />

set wv_out [invdb $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Related Topics<br />

DB<br />

Eldo® User's Manual, 15.3 1179


Post-Processing Library<br />

LOG<br />

LOG<br />

Eldo built-in waveform function<br />

Wave logarithm.<br />

Usage<br />

set wv_out [log $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1180<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

LOG10<br />

LOG10<br />

Eldo built-in waveform function<br />

Wave logarithm.<br />

Usage<br />

set wv_out [log10 $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1181


Post-Processing Library<br />

MAG<br />

MAG<br />

Eldo built-in waveform function<br />

Linear magnitude from real and imaginary part.<br />

Usage<br />

set wv_out [mag $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1182<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

MAX<br />

MAX<br />

Eldo built-in waveform function<br />

Maximum wave of two waves (max is evaluated point-by-point).<br />

Usage<br />

set wv_out [max $wv_in1 $wv_in2]<br />

Arguments<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1183


Post-Processing Library<br />

MIN<br />

MIN<br />

Eldo built-in waveform function<br />

Minimum wave of two waves (min is evaluated point-by-point).<br />

Usage<br />

set wv_out [min $wv_in1 $wv_in2]<br />

Arguments<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1184<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

PHASE<br />

PHASE<br />

Eldo built-in waveform function<br />

Phase (in degrees) from real and imaginary part.<br />

Usage<br />

set wv_out [phase $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1185


Post-Processing Library<br />

PHMARGIN<br />

PHMARGIN<br />

Eldo built-in waveform function<br />

Phase margin is the phase distance to -180 degrees.<br />

Tip<br />

See phase margin extraction example.<br />

Usage<br />

set out_value [phmargin $wv_in1 $wv_in2]<br />

Arguments<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

Return Values<br />

out_value is the phase margin.<br />

1186<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

RAD<br />

RAD<br />

Eldo built-in waveform function<br />

Conversion radians.<br />

Usage<br />

set wv_out [rad $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Related Topics<br />

DEG<br />

Eldo® User's Manual, 15.3 1187


Post-Processing Library<br />

REAL<br />

REAL<br />

Eldo built-in waveform function<br />

Real part of a complex number/wave.<br />

Usage<br />

set wv_out [real $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Related Topics<br />

IMAG<br />

1188<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

RELATION<br />

RELATION<br />

Eldo built-in waveform function<br />

Generates a wave from the point-by-point comparison of two waves.<br />

Usage<br />

set wv_out [relation $wv_in1 $wv_in2 $operator]<br />

Arguments<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

• operator<br />

The operator affects how the return values are calculated (allowed values 1, 0, or -1).<br />

Return Values<br />

Function returns 1 whenever operator is 1 and wv_in1 > wv_in2, or operator is 0 and wv_in1 ==<br />

wv_in2, or operator is -1 and wv_in1 < wv_in2. Otherwise it returns 0.<br />

Eldo® User's Manual, 15.3 1189


Post-Processing Library<br />

RISETIME<br />

RISETIME<br />

Eldo built-in waveform function<br />

Rise time of a wave, the result is of unit {x_unit}.<br />

Usage<br />

set out_value [risetime $wv_in $lower_thr $upper_thr]<br />

set out_value [risetime $wv_in $lower_thr $upper_thr $after]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_thr<br />

Lower threshold.<br />

• upper_thr<br />

Upper threshold.<br />

• after<br />

First transition between lower and upper thresholds is treated after this x value.<br />

Return Values<br />

out_value is the rise time of a wave.<br />

1190<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

RMS<br />

RMS<br />

Eldo built-in waveform function<br />

Root mean square value of a wave.<br />

Usage<br />

rms=sqrt ((1/ (x_max-x_min))*integ(wave^2)).<br />

set out_value [rms $wv_in]<br />

set out_value [rms $wv_in $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

out_value is the rms value of a wave.<br />

Eldo® User's Manual, 15.3 1191


Post-Processing Library<br />

SAMPLE<br />

SAMPLE<br />

Eldo built-in waveform function<br />

Creates a sampled wave. Points are linearly interpolated.<br />

Usage<br />

set wv_out [sample $wv_in $sample_time]<br />

set wv_out [sample $wv_in $sample_time $lower_bound $upper_bound $sample]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• sample_time<br />

Sampling period.<br />

• lower_bound<br />

x value after which sampling starts.<br />

• upper_bound<br />

x value after which sampling stops.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1192<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

SETTLINGTIME<br />

SETTLINGTIME<br />

Eldo built-in waveform function<br />

Time required for the input wave to settle within a certain limit around the final value.<br />

Usage<br />

set out_value [settlingtime $wv_in $yvalue $eps]<br />

set out_value [settlingtime $wv_in $yvalue $eps $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• yvalue<br />

Value to reach.<br />

• eps<br />

Tolerance value (yvalue +/- eps/2).<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

out_value is the time required for the input wave to settle within a certain limit around the final<br />

value.<br />

Eldo® User's Manual, 15.3 1193


Post-Processing Library<br />

SIN<br />

SIN<br />

Eldo built-in waveform function<br />

Trigonometric wave function.<br />

Usage<br />

set wv_out [sin $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1194<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

SINH<br />

SINH<br />

Eldo built-in waveform function<br />

Hyperbolic wave function.<br />

Usage<br />

set wv_out [sinh $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1195


Post-Processing Library<br />

SQR<br />

SQR<br />

Eldo built-in waveform function<br />

Wave square function.<br />

Usage<br />

set wv_out [sqr $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1196<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

SQRT<br />

SQRT<br />

Eldo built-in waveform function<br />

Wave square root function.<br />

Usage<br />

set wv_out [sqrt $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1197


Post-Processing Library<br />

SUM<br />

SUM<br />

Eldo built-in waveform function<br />

Sums up the real part of a vector.<br />

Usage<br />

set out_value [sum $wv_in]<br />

set out_value [sum $wv_in $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

out_value is the sum of the real part of a vector.<br />

1198<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

TAN<br />

TAN<br />

Eldo built-in waveform function<br />

Trigonometric wave function.<br />

Usage<br />

set wv_out [tan $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1199


Post-Processing Library<br />

TANH<br />

TANH<br />

Eldo built-in waveform function<br />

Hyperbolic wave function.<br />

Usage<br />

set wv_out [tanh $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1200<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

TPD<br />

TPD<br />

Eldo built-in waveform function<br />

Returns the propagation delay between wv_in1 and wv_in2.<br />

Usage<br />

set out_value [tpd $wv_in1 $wv_in2]<br />

set out_value [tpd $wv_in1 $wv_in2 $vth]<br />

set out_value [tpd $wv_in1 $wv_in2 $vthin $vthout]<br />

set out_value [tpd $wv_in1 $wv_in2 $vthin $vthout $before $after]<br />

set out_value [tpd $wv_in1 $wv_in2 $vthin $vthout $before $after $occur]<br />

Arguments<br />

Note<br />

For a complete description of TPD and its parameters, see the .EXTRACT command in the<br />

Eldo Reference Manual.<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

• vth<br />

Voltage defining a threshold or starting point.<br />

• vthin<br />

Voltage defining a threshold or starting point.<br />

• vthout<br />

Voltage defining a threshold or starting point.<br />

• before<br />

Causes the function to be performed only if TIME < val.<br />

• after<br />

Causes the function to be performed only if TIME < val.<br />

• occur<br />

Computes the function for the VALth occurrence of the event.<br />

Return Values<br />

out_value is the propagation delay.<br />

Eldo® User's Manual, 15.3 1201


Post-Processing Library<br />

TPDDD<br />

TPDDD<br />

Eldo built-in waveform function<br />

Returns the propagation delay with wv_in1 and wv_in2 both falling.<br />

Usage<br />

set out_value [tpddd $wv_in1 $wv_in2]<br />

set out_value [tpddd $wv_in1 $wv_in2 $vth]<br />

set out_value [tpddd $wv_in1 $wv_in2 $vthin $vthout]<br />

set out_value [tpddd $wv_in1 $wv_in2 $vthin $vthout $before $after]<br />

set out_value [tpddd $wv_in1 $wv_in2 $vthin $vthout $before $after $occur]<br />

Arguments<br />

Note<br />

For a complete description of TPDDD and its parameters, see the .EXTRACT command in<br />

the Eldo Reference Manual.<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

• vth<br />

Voltage defining a threshold or starting point.<br />

• vthin<br />

Voltage defining a threshold or starting point.<br />

• vthout<br />

Voltage defining a threshold or starting point.<br />

• before<br />

Causes the function to be performed only if TIME < val.<br />

• after<br />

Causes the function to be performed only if TIME < val.<br />

• occur<br />

Computes the function for the VALth occurrence of the event.<br />

Return Values<br />

out_value is the propagation delay.<br />

1202<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

TPDDU<br />

TPDDU<br />

Eldo built-in waveform function<br />

Returns the propagation delay with wv_in1 falling, wv_in2 rising.<br />

Usage<br />

set out_value [tpddu $wv_in1 $wv_in2]<br />

set out_value [tpddu $wv_in1 $wv_in2 $vth]<br />

set out_value [tpddu $wv_in1 $wv_in2 $vthin $vthout]<br />

set out_value [tpddu $wv_in1 $wv_in2 $vthin $vthout $before $after]<br />

set out_value [tpddu $wv_in1 $wv_in2 $vthin $vthout $before $after $occur]<br />

Arguments<br />

Note<br />

For a complete description of TPDDU and its parameters, see the .EXTRACT command in<br />

the Eldo Reference Manual.<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

• vth<br />

Voltage defining a threshold or starting point.<br />

• vthin<br />

Voltage defining a threshold or starting point.<br />

• vthout<br />

Voltage defining a threshold or starting point.<br />

• before<br />

Causes the function to be performed only if TIME < val.<br />

• after<br />

Causes the function to be performed only if TIME < val.<br />

• occur<br />

Computes the function for the VALth occurrence of the event.<br />

Return Values<br />

out_value is the propagation delay.<br />

Eldo® User's Manual, 15.3 1203


Post-Processing Library<br />

TPDUD<br />

TPDUD<br />

Eldo built-in waveform function<br />

Returns the propagation delay with wv_in1 rising, wv_in2 falling.<br />

Usage<br />

set out_value [tpdud $wv_in1 $wv_in2]<br />

set out_value [tpdud $wv_in1 $wv_in2 $vth]<br />

set out_value [tpdud $wv_in1 $wv_in2 $vthin $vthout]<br />

set out_value [tpdud $wv_in1 $wv_in2 $vthin $vthout $before $after]<br />

set out_value [tpdud $wv_in1 $wv_in2 $vthin $vthout $before $after $occur]<br />

Arguments<br />

Note<br />

For a complete description of TPDUD and its parameters, see the .EXTRACT command in<br />

the Eldo Reference Manual.<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

• vth<br />

Voltage defining a threshold or starting point.<br />

• vthin<br />

Voltage defining a threshold or starting point.<br />

• vthout<br />

Voltage defining a threshold or starting point.<br />

• before<br />

Causes the function to be performed only if TIME < val.<br />

• after<br />

Causes the function to be performed only if TIME < val.<br />

• occur<br />

Computes the function for the VALth occurrence of the event.<br />

Return Values<br />

out_value is the propagation delay.<br />

1204<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

TPDUU<br />

TPDUU<br />

Eldo built-in waveform function<br />

Returns the propagation delay with wv_in1 and wv_in2 both rising.<br />

Usage<br />

set out_value [tpduu $wv_in1 $wv_in2]<br />

set out_value [tpduu $wv_in1 $wv_in2 $vth]<br />

set out_value [tpduu $wv_in1 $wv_in2 $vthin $vthout]<br />

set out_value [tpduu $wv_in1 $wv_in2 $vthin $vthout $before $after]<br />

set out_value [tpduu $wv_in1 $wv_in2 $vthin $vthout $before $after $occur]<br />

Arguments<br />

Note<br />

For a complete description of TPDUU and its parameters, see the .EXTRACT command in<br />

the Eldo Reference Manual.<br />

• wv_in1<br />

The first input waveform the function is acting upon.<br />

• wv_in2<br />

The second input waveform the function is acting upon.<br />

• vth<br />

Voltage defining a threshold or starting point.<br />

• vthin<br />

Voltage defining a threshold or starting point.<br />

• vthout<br />

Voltage defining a threshold or starting point.<br />

• before<br />

Causes the function to be performed only if TIME < val.<br />

• after<br />

Causes the function to be performed only if TIME < val.<br />

• occur<br />

Computes the function for the VALth occurrence of the event.<br />

Return Values<br />

out_value is the propagation delay.<br />

Eldo® User's Manual, 15.3 1205


Post-Processing Library<br />

VMAX<br />

VMAX<br />

Eldo built-in waveform function<br />

Maximum value of a wave.<br />

Usage<br />

set out_value [vmax $wv_in]<br />

set out_value [vamx $wv_in $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

out_value is the maximum value of a wave.<br />

1206<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

VMIN<br />

VMIN<br />

Eldo built-in waveform function<br />

Minimum value of a wave.<br />

Usage<br />

set out_value [vmin $wv_in]<br />

set out_value [vmin $wv_in $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

out_value is the minimum value of a wave.<br />

Eldo® User's Manual, 15.3 1207


Post-Processing Library<br />

WINDOW<br />

WINDOW<br />

Eldo built-in waveform function<br />

Selects a window (a, b) out of a wave, the points at the interval bounds are interpolated.<br />

Usage<br />

set wv_out [window $wv_in $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• lower_bound<br />

Start of the wave window to select.<br />

• upper_bound<br />

End of the wave window to select.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1208<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

XCOMPRESS<br />

XCOMPRESS<br />

Eldo built-in waveform function<br />

Extracts the x-axis value of the wave at the point where the difference between the actual value<br />

of the wave and the linear extrapolation of the wave based on the computed slope value<br />

becomes greater than val.<br />

Usage<br />

set out_value [xcompress $wv_in $val]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• val<br />

Threshold value.<br />

Return Values<br />

out_value is the x-axis value.<br />

Eldo® User's Manual, 15.3 1209


Post-Processing Library<br />

XVAL<br />

XVAL<br />

Eldo built-in waveform function<br />

All x (or scale) values for one wave (or y) value.<br />

Usage<br />

set out_vector [xval $wv_in $yvalue]<br />

set out_vector [xval $wv_in $yvalue $slope]<br />

set out_vector [xval $wv_in $yvalue $slope $lower_bound $upper_bound]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• slope<br />

Find only x values, where wave crosses y with slope:<br />

slope > 0 Positive slope<br />

slope < 0 Negative slope<br />

slope = 0 Positive and negative slope.<br />

• lower_bound<br />

x value after which measurement starts.<br />

• upper_bound<br />

x value after which measurement stops.<br />

Return Values<br />

out_vector is all x (or scale) values for one wave (or y) value.<br />

1210<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

XWAVE<br />

XWAVE<br />

Eldo built-in waveform function<br />

Creates a wave with y = x values.<br />

Usage<br />

set wv_out [xwave $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1211


Post-Processing Library<br />

YVAL<br />

YVAL<br />

Eldo built-in waveform function<br />

Wave value at x (or scale) value (linear interpolation to get the exact value).<br />

Usage<br />

set out_value [yval $wv_in $xvalue]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• xvalue<br />

The x value.<br />

Return Values<br />

out_value is the wave value at x (or scale) value.<br />

1212<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

IIPX<br />

IIPX<br />

Eldo RF built-in waveform function<br />

Returns the input referred intercept point of order x from the value of the circuit input and<br />

output, wv_in and wave_out respectively. wv_in and wave_out must be in dB or dBm. The<br />

intercept order is directly calculated from the intermodulation of freq1 and freq2.<br />

Usage<br />

set out_value [iipx $wv_in $wave_out $freq1 $freq2]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• wave_out<br />

The output waveform the function is acting upon.<br />

• freq1<br />

First intermodulation frequency.<br />

• freq2<br />

Second intermodulation frequency.<br />

Return Values<br />

out_value is the input referred intercept point.<br />

Eldo® User's Manual, 15.3 1213


Post-Processing Library<br />

OIPX<br />

OIPX<br />

Eldo RF built-in waveform function<br />

Returns the output referred intercept point of order x from the value of the circuit output wave,<br />

this must be in dB or dBm. The intercept order is directly calculated from the intermodulation of<br />

freq1 and freq2.<br />

Usage<br />

set out_value [oipx $wv_in $freq1 $freq2]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• freq1<br />

First intermodulation frequency.<br />

• freq2<br />

Second intermodulation frequency.<br />

Return Values<br />

out_value is the output referred intercept point.<br />

1214<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

Built-In DSP Functions<br />

Built-In DSP Functions<br />

Lists the built-in DSP functions.<br />

Table 19-5. Built-In DSP Functions<br />

AUTOCOR CONV CORRELO CT FFT<br />

HARMONICS HDIST IFFT PERIODO PSD<br />

SAMPLER SNR<br />

See also:<br />

• Built-In Waveform Functions<br />

Eldo® User's Manual, 15.3 1215


Post-Processing Library<br />

AUTOCOR<br />

AUTOCOR<br />

Eldo built-in DSP function<br />

Calculates the Auto Correlation Function (AF) of a waveform. The AF of a signal waveform is<br />

an average measure of its time domain properties and therefore especially relevant when the<br />

signal is random.<br />

Tip<br />

There are two methods available for calculating the auto correlation, namely the<br />

Correlogram and Periodogram methods. For more explanation refer to the Autocorrelation<br />

function description in the EZwave User’s and Reference Manual.<br />

Usage<br />

set wv_out [autocor $wv_in $method]<br />

set wv_out [autocor $wv_in $method $nbpts]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• method<br />

Select the AF calculation method.<br />

0 for correlogram (default)<br />

1 for periodogram<br />

• nbpts<br />

Number of points for the AF result.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1216<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

CONV<br />

CONV<br />

Eldo built-in DSP function<br />

Calculates the convolution of two signals.<br />

Tip<br />

For more explanation refer to the Convolution function description EZwave User’s and<br />

Reference Manual.<br />

Usage<br />

set wv_out [conv $wv_in1 $wv_in2 $nptsa $nptsb $fs]<br />

Arguments<br />

• wv_in1<br />

First input waveform the function is acting upon.<br />

• wv_in2<br />

Second input waveform the function is acting upon.<br />

• nptsa<br />

Number of points for wave1.<br />

• nptsb<br />

Number of points for wave2.<br />

• fs<br />

Sampling Frequency.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1217


Post-Processing Library<br />

CORRELO<br />

CORRELO<br />

Eldo built-in DSP function<br />

Calculates the Power Spectral Density using correlogram method.<br />

Tip<br />

For more explanation refer to the Autocorrelation Function and Power Spectral Density<br />

section in the EZwave User’s and Reference Manual.<br />

Usage<br />

set wv_out [correlo $wv_in $tstart $tstop $fs $nbpts $padding<br />

+ $sample $fmin $fmax $normalized $ncor $nauto $npsd]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• tstart<br />

Start time for the signal.<br />

• tstop<br />

Stop time for the signal.<br />

• fs<br />

Sampling frequency.<br />

• nbpts<br />

Number of sampling points.<br />

• padding<br />

Selects the padding zeros type:<br />

0 No Padding<br />

1 Padding at the end<br />

2 Padding at the start<br />

3 Center wave<br />

• sample<br />

Selects the sampling type:<br />

0 No sampling<br />

1 Interpolation<br />

2 Sample and Hold<br />

1218<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

CORRELO<br />

• fmin<br />

Starting frequency used inside the FFT result window.<br />

• fmax<br />

Last frequency used inside the FFT result window.<br />

• normalized<br />

0 No normalization<br />

1 All real and imaginary parts of the result are divided by Nbpts/2 except for the first<br />

point, which is divided by Nbpts.<br />

• ncor<br />

Number of auto correlation points used for the PSD computation. Default value is Nauto.<br />

• nauto<br />

Number of points for the auto correlation result. Default value is Nbpts. Necessary condition<br />

is Nauto 2 >= 2<br />

• npsd<br />

Number of points for the PSD result. Default value is Ncorr/2 + 1. Necessary condition is<br />

npsd >= Ncorr/2 + 1.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1219


Post-Processing Library<br />

CT<br />

CT<br />

Eldo built-in DSP function<br />

Calculates the Chirp Transformed (CT) wave.<br />

Tip<br />

For more explanation refer to the Chirp transform sections in the EZwave User’s and<br />

Reference Manual.<br />

Usage<br />

set wv_out [ct $wv_in $tstart $tstop $fs $nbpts $padding $sample $fmin<br />

$fmax $normalized $nzoom]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• tstart<br />

Start time for the signal.<br />

• tstop<br />

Stop time for the signal.<br />

• fs<br />

Sampling frequency.<br />

• nbpts<br />

Number of sampling points.<br />

• padding<br />

Selects the padding zeros type:<br />

0 No Padding<br />

1 Padding at the end<br />

2 Padding at the start<br />

3 Center wave<br />

• sample<br />

Selects the sampling type:<br />

0 No sampling<br />

1 Interpolation<br />

2 Sample and Hold<br />

1220<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

CT<br />

• fmin<br />

Starting frequency used inside the FFT result window.<br />

• fmax<br />

Last frequency used inside the FFT result window.<br />

• normalized<br />

0 No normalization<br />

1 All real and imaginary parts of the result are divided by Nbpts/2 except for the first<br />

point, which is divided by Nbpts.<br />

• nzoom<br />

Number of points for the zooming.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1221


Post-Processing Library<br />

FFT<br />

FFT<br />

Eldo built-in DSP function<br />

Calculates the Fast Fourier Transform (FFT) of a wave. FFT is the fastest and most efficient<br />

available algorithm for computing the DFT.<br />

Usage<br />

set wv_out [fft $wv_in $tstart $tstop $fs $nbpts $padding $sample $fmin<br />

$fmax $normalized]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• tstart<br />

Start time for the signal.<br />

• tstop<br />

Stop time for the signal.<br />

• fs<br />

Sampling frequency.<br />

• nbpts<br />

Number of sampling points.<br />

• padding<br />

Selects the padding zeros type:<br />

0 No Padding<br />

1 Padding at the end<br />

2 Padding at the start<br />

3 Center wave<br />

• sample<br />

Selects the sampling type:<br />

0 No sampling<br />

1 Interpolation<br />

2 Sample and Hold<br />

• fmin<br />

Starting frequency used inside the FFT result window.<br />

• fmax<br />

Last frequency used inside the FFT result window.<br />

1222<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

FFT<br />

• normalized<br />

0 No normalization<br />

1 All real and imaginary parts of the result are divided by Nbpts/2 except for the first<br />

point, which is divided by Nbpts.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1223


Post-Processing Library<br />

HARMONICS<br />

HARMONICS<br />

Eldo built-in DSP function<br />

Calculates harmonics inside the interval [fmin, fmax] then generates the harmonics wave.<br />

Usage<br />

set wv_out [harmonics $wv_in $fundf]<br />

set wv_out [harmonics $wv_in $fundf $fmin $fmax]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• fundf<br />

Fundamental Frequency.<br />

• fmin, fmax<br />

frequency band that should be taken for the computation.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1224<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

HDIST<br />

HDIST<br />

Eldo built-in DSP function<br />

Calculates the Total Harmonic Distortion (THD) of a signal.<br />

Usage<br />

set out_value [hdist $wv_in $fundf]<br />

set out_value [hdist $wv_in $fundf $fmin $fmax]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• fundf<br />

Fundamental frequency.<br />

• fmin, fmax<br />

Frequency band that should be taken for the computation.<br />

Return Values<br />

out_value is the THD.<br />

Eldo® User's Manual, 15.3 1225


Post-Processing Library<br />

IFFT<br />

IFFT<br />

Eldo built-in DSP function<br />

Calculates the Inverse Fast Fourier Transform.<br />

Usage<br />

set wv_out [ifft $wv_in]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1226<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

PERIODO<br />

PERIODO<br />

Eldo built-in DSP function<br />

Calculates the Power Spectral Density using periodogram method.<br />

Tip<br />

For more explanation refer to the Autocorrelation Function and Power Spectral Density<br />

section in the EZwave User’s and Reference Manual.<br />

Usage<br />

set wv_out [periodo $wv_in $tstart $tstop $fs $nbpts $padding<br />

+ $sample $fmin $fmax $normalized $ncor $nauto $npsd]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• tstart<br />

Start time for the signal.<br />

• tstop<br />

Stop time for the signal.<br />

• fs<br />

Sampling frequency.<br />

• nbpts<br />

Number of sampling points.<br />

• padding<br />

Selects the padding zeros type:<br />

0 No Padding<br />

1 Padding at the end<br />

2 Padding at the start<br />

3 Center wave<br />

• sample<br />

Selects the sampling type:<br />

0 No sampling<br />

1 Interpolation<br />

2 Sample and Hold<br />

Eldo® User's Manual, 15.3 1227


Post-Processing Library<br />

PERIODO<br />

• fmin<br />

Starting frequency used inside the FFT result window.<br />

• fmax<br />

Last frequency used inside the FFT result window.<br />

• normalized<br />

0 No normalization<br />

1 All real and imaginary parts of the result are divided by Nbpts/2 except for the first<br />

point, which is divided by Nbpts.<br />

• ncor<br />

Number of auto correlation points used for the PSD computation. Default value is Nauto.<br />

• nauto<br />

Number of points for the auto correlation result. Default value is Nbpts. Necessary condition<br />

is Nauto 2 >= 2<br />

• npsd<br />

Number of points for the PSD result. Default value is Ncorr/2 + 1. Necessary condition is<br />

npsd >= Ncorr/2 + 1.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

1228<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

PSD<br />

PSD<br />

Eldo built-in DSP function<br />

Calculates the Power Spectral Density (PSD) of a waveform. The PSD of a signal waveform is<br />

an average measure of its time domain properties and therefore especially relevant when the<br />

signal is random.<br />

Tip<br />

There are two methods available for calculating the PSD, namely the Correlogram and<br />

Periodogram methods. For more explanation refer to the Autocorrelation Function and<br />

Power Spectral Density section in the EZwave User’s and Reference Manual.<br />

Usage<br />

set wv_out [psd $wv_in $method]<br />

set wv_out [psd $wv_in $method $nbpts]<br />

Arguments<br />

• wv_in<br />

The input waveform the function is acting upon.<br />

• method<br />

Select the PSD calculation method.<br />

0 for correlogram (default)<br />

1 for periodogram<br />

• nbpts<br />

Number of points for the PSD result.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1229


Post-Processing Library<br />

SAMPLER<br />

SAMPLER<br />

Eldo built-in DSP function<br />

Generates a sampled wave using some types of windowing.<br />

Usage<br />

set wv_out [sampler $tstart $tstop $fs $nbpts $padding $wtype $wparam]<br />

Arguments<br />

• tstart<br />

Start time for the signal.<br />

• tstop<br />

Last time for the signal.<br />

• fs<br />

Sampling frequency.<br />

• Nbpts<br />

Number of sampling points.<br />

• padding<br />

Selects the padding zeros type:<br />

0 No Padding<br />

1 Padding at the end<br />

2 Padding at the start<br />

3 Center wave<br />

• wtype<br />

Window type:<br />

0 Rectangular (no wparam)<br />

1 Hamming (no wparam)<br />

2 Hanning (Alpha= w_param, default is 0.5)<br />

3 Parzen (no wparam)<br />

4 Welch (no wparam)<br />

5 Blackman (no wparam)<br />

6 Blackman7 (no wparam)<br />

7 Bartlett (no wparam)<br />

8 Kaiser (Beta= wparam, default is 10.056)<br />

9 Klein (no wparam)<br />

1230<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

SAMPLER<br />

10 Tukey (no wparam)<br />

11 Dolph Chebyshev (Alpha=w_param, default: 3.0)<br />

• wparam<br />

Window optional parameter.<br />

Return Values<br />

wv_out is the resulting output waveform.<br />

Eldo® User's Manual, 15.3 1231


Post-Processing Library<br />

SNR<br />

SNR<br />

Eldo built-in DSP function<br />

Calculates the Signal to Noise Ratio of a noisy wave by using a specific frequency list.<br />

Usage<br />

set out_value [snr $wv_in $fmin $fmax $freq_list]<br />

Arguments<br />

• wv_in<br />

Input waveform the function is acting upon. If wv_in is neither a complex waveform nor a<br />

magnitude then an error is generated. If wv_in is a complex waveform, it is automatically<br />

transformed into magnitude.<br />

• fmin, fmax<br />

Frequency band that should be taken for the computation.<br />

• freq_list<br />

List of frequencies which should be used in the computation.<br />

Return Values<br />

out_value is the signal to noise ratio, in dB.<br />

1232<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

Accessing Waves Inside an External Database Functions<br />

Accessing Waves Inside an External Database<br />

Functions<br />

Lists the functions for accessing waves inside an external database.<br />

Table 19-6. Functions to Access Waves Inside an External Database<br />

LOAD_FILE DISP_FILE UNLOAD_FILE<br />

Eldo® User's Manual, 15.3 1233


Post-Processing Library<br />

LOAD_FILE<br />

LOAD_FILE<br />

Eldo PPL function to access waves inside an external database<br />

Loads a .wdb, .cou, .tr0, .fsdb, or .csv file in memory. The extension of the file is used to<br />

identify which format to use.<br />

Usage<br />

load_file $filename<br />

Arguments<br />

• filename<br />

The name of the file.<br />

Return Values<br />

Returns a list of run identifiers. These identifiers are labelled RunX where X is an absolute<br />

counter starting from 0.<br />

Examples<br />

If a file test.wdb contains one run:<br />

puts "[load_file test.wdb]"<br />

Implies “Run0” will be used as the run identifier label.<br />

If a file test2.wdb contains three runs:<br />

puts "[load_file test2.wdb]"<br />

Implies “Run0 Run1 Run2” will be used as the run identifier labels.<br />

If both commands are called in the same UDF:<br />

puts "[load_file test.wdb]"<br />

Implies “Run0” will be used as the run identifier label.<br />

puts "[load_file test2.wdb]"<br />

Implies “Run1 Run2 Run3” will be used as the run identifier labels.<br />

These identifiers are used to identify waves. For example if file test.wdb contains waves v(1)<br />

and i(r1), their internal names inside the PPL will be Run0::v(1) and Run0::i(r1). These names<br />

can be used in all expressions.<br />

1234<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

DISP_FILE<br />

DISP_FILE<br />

Eldo PPL function to access waves inside an external database<br />

Displays the list of runs inside the PPL or the list of waves inside a given run.<br />

Usage<br />

disp_file<br />

disp_file $identifier<br />

Arguments<br />

• identifier<br />

The identifier label.<br />

Examples<br />

Considering that test.wdb contains one run and test2.wdb contains three runs,<br />

puts "[load_file test.wdb]"<br />

Implies “Run0” will be used as the run identifier label.<br />

puts "[load_file test2.wdb]"<br />

Implies “Run1 Run2 Run3” will be used as the identifier labels.<br />

puts "[disp_file]"<br />

Implies “Run0 Run1 Run2 Run3” will be used as the identifier labels.<br />

puts "[disp_file Run0]"<br />

Implies “V(1) I(R1)” will be used as the identifier labels.<br />

Eldo® User's Manual, 15.3 1235


Post-Processing Library<br />

UNLOAD_FILE<br />

UNLOAD_FILE<br />

Eldo PPL function to access waves inside an external database<br />

Removes all or a single run from memory.<br />

Usage<br />

unload_file all<br />

unload_file $identifier<br />

Arguments<br />

• identifier<br />

A valid run identifier or keyword “all” to remove all runs.<br />

Related Topics<br />

General Usage<br />

1236<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

Additional PPL Functions<br />

Additional PPL Functions<br />

Lists additional PPL functions.<br />

Table 19-7. Additional PPL Functions<br />

DISPLAY GETSIZE GETPOINT<br />

SETPOINT<br />

CREATEVECTOR<br />

See also:<br />

• General Usage<br />

Eldo® User's Manual, 15.3 1237


Post-Processing Library<br />

DISPLAY<br />

DISPLAY<br />

Eldo PPL function<br />

Writes the content of PPL objects to the standard output.<br />

Usage<br />

display ppl_object<br />

Arguments<br />

• ppl_object<br />

A reference to a PPL object. Usually, references for waves start with WV and references for<br />

numbers start with DB (DouBle).<br />

1238<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

GETSIZE<br />

GETSIZE<br />

Eldo PPL function<br />

Returns the number of points in a wave.<br />

Usage<br />

getsize $wv_in<br />

Arguments<br />

• wv_in<br />

Input waveform the function is acting upon.<br />

Eldo® User's Manual, 15.3 1239


Post-Processing Library<br />

GETPOINT<br />

GETPOINT<br />

Eldo PPL function<br />

Returns the x value, real and imaginary parts of a wave point.<br />

Usage<br />

getpoint $wv_in $ptindex<br />

Arguments<br />

• wv_in<br />

Input waveform the function is acting upon.<br />

• ptindex<br />

Index of a point (between [0; size[).<br />

1240<br />

Eldo® User's Manual, 15.3


Post-Processing Library<br />

SETPOINT<br />

SETPOINT<br />

Eldo PPL command<br />

Modifies a wave point value.<br />

Usage<br />

setpoint $wv_in $ptindex $xvalue $yvalue $yimgvalue<br />

Arguments<br />

• wv_in<br />

Input waveform the function is acting upon.<br />

• ptindex<br />

Index of a point (between [0; size]).<br />

• xvalue<br />

New x-axis value.<br />

• yvalue<br />

New real part value.<br />

• yimgvalue<br />

New imaginary part value.<br />

Eldo® User's Manual, 15.3 1241


Post-Processing Library<br />

CREATEVECTOR<br />

CREATEVECTOR<br />

Eldo PPL command<br />

Creates a vector from a list of (x,y) values.<br />

Usage<br />

createVector vectorName $xlist $ylist<br />

Arguments<br />

• vectorName<br />

The name of the PPL object which will represent the vector in the library.<br />

• xlist<br />

A list of ordered x values.<br />

• ylist<br />

A list of values (same length as xlist).<br />

Examples<br />

createVector test "0 1e-9 2e-9 3e-9 4e-9" "1.1 2.2 3.3 4.4 5.5"<br />

1242<br />

Eldo® User's Manual, 15.3


Chapter 20<br />

Speed and Accuracy<br />

Eldo provides different algorithms and control options, which are used to balance speed with<br />

accuracy. Most of the information in this chapter relates to transient analysis, as it is the most<br />

time-consuming analysis, and also the most frequently used analysis.<br />

Introduction to Speed and Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243<br />

Speed and Accuracy in Eldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245<br />

Integration Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246<br />

Time Step Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248<br />

Newton Iterations Accuracy Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252<br />

Global Tuning of the Accuracy—EPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1253<br />

Global Tuning of the Accuracy—TUNING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255<br />

Simulation of Large Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256<br />

Tips for Improving Simulation Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259<br />

Integral Equation Method (IEM) Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1260<br />

IEM Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261<br />

IEM—Supported Circuit Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1262<br />

IEM Tolerance Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263<br />

Efficient Usage of IEM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264<br />

One Step Relaxation (OSR) Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265<br />

Introduction to Speed and Accuracy<br />

The trade-off between speed and accuracy is the primary concern of <strong>user</strong>s designing<br />

simulations. Circuit-level transient simulation is the numerical resolution of an algebraic<br />

differential system of equations; as such, it is not an exact procedure (unlike the linear AC or<br />

NOISE analyses), and many switches can be used to control the accuracy of the results.<br />

Typically, improved accuracy comes with an increased CPU time.<br />

Eldo includes three different algorithms: NR (Newton-Raphson), OSR (One Step Relaxation),<br />

and IEM (Integral Equation Method). The majority of information in this chapter is dedicated to<br />

speed and accuracy with the default Newton-Raphson algorithm.<br />

Caution<br />

OSR and IEM are legacy algorithms, there are no active developments, enhancements, nor<br />

bug fixing. To simulate with a higher performance than Eldo Classic, consider Eldo<br />

Premier.<br />

Eldo® User's Manual, 15.3 1243


Speed and Accuracy<br />

Introduction to Speed and Accuracy<br />

NR is the most general and robust algorithm, and it is always used by default. It is very accurate,<br />

and applicable to all kinds of circuits without restriction. NR is used by the vast majority of<br />

commercial SPICE simulators because of its generality.<br />

Unless explicitly triggered by the <strong>user</strong> with commands and/or by switches in the netlist, neither<br />

OSR nor IEM are used by Eldo. By default only NR is used for the whole circuit.<br />

Eldo can partition a circuit into different parts that are simulated with different algorithms. For<br />

example, some partitions can be simulated with classical NR, whereas others are simulated with<br />

OSR or IEM. Each partition can use its own accuracy control parameters.<br />

Related Topics<br />

Speed and Accuracy in Eldo<br />

Integration Methods<br />

Simulation of Large Circuits<br />

Tips for Improving Simulation Performance<br />

1244<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

Speed and Accuracy in Eldo<br />

Speed and Accuracy in Eldo<br />

The system of equations that represent the behavior of a circuit cannot be solved analytically,<br />

apart from trivial cases. Thus a simulator has to use numerical algorithms to find an<br />

approximate solution.<br />

In the case of transient analysis, the problem to solve is to find the solution of a DAE<br />

(Differential Algebraic Equations) system. To simplify, and deliberately using loose notations,<br />

the ‘solution’ that the simulator tries to find is a set of N voltage waveforms vn(t), where n<br />

ranges from 1 to N—N being the number of nodes in the circuit—and t represents the time<br />

variable. These voltages are the solution of f(v(t), q’(v(t)), t)=0, where f() and q() are non-linear<br />

functions. Equation f()=0 is nothing but the expression of the Kirchoff law, that is, the sum of<br />

all currents entering a node is null, at any time. Function q() models the dynamic part of the<br />

circuit, that is, the generally bias-dependent charges in the circuit.<br />

This system is differential and non-linear. To solve it numerically, time is discretized, and the<br />

equations are solved at discrete time points. The time-derivatives are approximated using a socalled<br />

integration scheme or method, using current and previous values of the solution v(ti),<br />

v(ti-1),…, v(ti-m). The number m of previous time points used to approximate the timederivatives<br />

depends on the ‘order’ of the integration method. In all cases, an approximation<br />

error is introduced in this process.<br />

Once the time-derivatives have been eliminated, the system to solve is ‘simply’ non-linear.<br />

Many numerical methods exist to solve this numerically; they typically requiring a certain<br />

number of iterations, starting from an initial guess v0, and each iteration providing, hopefully, a<br />

better estimate vj of the solution vexact. This iterative process will normally converge, although<br />

some criterion are needed to decide when to stop the iterative process and accept the last<br />

estimate as the ‘solution’ at the current time point. Again, an approximation error is introduced<br />

here. One of the commonly used methods to solve non-linear systems of equations is the socalled<br />

Newton-Raphson method. It is commonly used mainly because of its generality and also<br />

for its relative robustness.<br />

In summary, primarily two types of error are involved in the resolution of the system:<br />

• Errors due to the numerical integration process.<br />

• Errors due to the numerical resolution of non-linear equations.<br />

Integration Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246<br />

Time Step Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248<br />

Newton Iterations Accuracy Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252<br />

Global Tuning of the Accuracy—EPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1253<br />

Global Tuning of the Accuracy—TUNING. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255<br />

Eldo® User's Manual, 15.3 1245


Speed and Accuracy<br />

Integration Methods<br />

Integration Methods<br />

The process of ‘eliminating’ the time-derivatives in the original circuit equations is a source of<br />

error.<br />

Tip<br />

See “Speed and Accuracy in Eldo” on page 1245.<br />

These time-derivatives are replaced with finite differences, which only approximate the true<br />

time-derivatives. One of the most basic approximation schemes is the Backward-Euler method,<br />

which approximates v’(ti) using the finite difference (v(ti)-v(ti-1)) / (ti-ti-1). Intuitively, it is<br />

easy to understand that the smaller the time step (h=ti-ti-1) the smaller the error. More<br />

sophisticated schemes exist, which provide less error with the same time step, such as the socalled<br />

trapezoidal and Gear methods.<br />

The numerical resolution of differential equations is a vast subject. Dozens of methods have<br />

been proposed and studied in depth, some of them having very attractive properties, particularly<br />

allowing the use of very large time steps without encountering stability issues. However, in the<br />

context of circuit simulation, many of these methods are not practically applicable. The<br />

differential equations that model an electrical network (either IC or PCB) dynamics<br />

unfortunately have undesirable characteristics. For example, they are implicit (in most if not all<br />

formulations used in commercial simulators) and very often ‘stiff’ (which means that the<br />

individual time constants involved in the system can routinely exhibit orders of magnitude<br />

differences). The cost of evaluation of the non-linear functions is also very high. This<br />

unfortunate situation leaves very few good practical candidates as integration methods.<br />

Eldo implements three integration methods, namely the simple Backward-Euler (BE) method,<br />

the trapezoidal method (TRAP), and the Gear method (GEAR). The trapezoidal method is the<br />

default in Eldo; it provides a very good speed/accuracy compromise. TRAP and GEAR are both<br />

second-order methods, whereas BE is a first-order method. The accuracy of BE is theoretically<br />

one order of magnitude worse than TRAP or GEAR, so it is usually reserved for cases where<br />

speed is the most important criterion, and accuracy, to a certain extent, can be sacrificed. In<br />

many cases, the speed increase obtained with BE is not considerable, although the loss in<br />

accuracy can be significant. This is because the GEAR and TRAP methods are still relatively<br />

simple methods (the derivative approximations are not too complicated). Thus the accuracy<br />

improvement with TRAP or GEAR over BE is generally worth the increased CPU time.<br />

Although TRAP and GEAR have similar theoretical accuracy, they still have their own<br />

characteristics. TRAP has the very undesirable tendency to generate numerical ‘ringing’,<br />

particularly on the current variables. Ringing shows up as obviously non-physical oscillations<br />

of small (or large!) amplitude riding on top of a correct and accurate average value. The<br />

oscillations have the rhythm of the time steps (they don’t belong to the circuit intrinsic time<br />

constant(s)) and they usually dampen over time if the simulator properly controls the time step.<br />

This does not happen systematically with all test cases, but it is a well-known artifact of the<br />

TRAP method. All simulators, including Eldo, implement some code that tries to eliminate or<br />

reduce these oscillations, but sometimes it may be very difficult to eliminate them entirely.<br />

1246<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

Integration Methods<br />

From the <strong>user</strong> perspective, there are not many options. Clamping the maximum allowed time<br />

step is usually the most radical solution, however this may slow down the whole simulation<br />

significantly. Increasing the accuracy may also help.<br />

If these oscillations occur, and they are a problem (for example because the testbench attempts<br />

to measure currents with high accuracy), the solution is to switch to the GEAR method. Much<br />

cleaner current waveforms will be produced by GEAR, however GEAR has its own undesirable<br />

property to artificially damp natural oscillations of the circuit. Thus, for the analysis of pure<br />

oscillators, or when trying to identify local or global instability problems in a design, GEAR is<br />

not recommended, because it will tend to artificially stabilize any circuit. BE is even worse in<br />

this respect.<br />

If you want to gauge how these methods behave with respect to the damping of natural<br />

oscillations, try the following: create a pure parallel LC network between a node you will<br />

initialize at 1Volt (using a .IC statement) and the ground (0). Pick L and C and the transient<br />

analysis duration, T, so that you can see about one hundred periods of the waveform<br />

(T=100.sqrt(L.C).2.pi). Try it with TRAP, then with GEAR, and then with BE.<br />

Related Topics<br />

Time Step Control<br />

Newton Iterations Accuracy Control<br />

Global Tuning of the Accuracy—EPS<br />

Global Tuning of the Accuracy—TUNING<br />

Simulation of Large Circuits<br />

Tips for Improving Simulation Performance<br />

Eldo® User's Manual, 15.3 1247


Speed and Accuracy<br />

Time Step Control<br />

Time Step Control<br />

The resolution of the system of equations uses discrete time steps, and errors are unavoidable in<br />

all realistic cases.<br />

Tip<br />

See “Speed and Accuracy in Eldo” on page 1245.<br />

Time step control designates the set of methods used by the simulator to select these time steps,<br />

so that the accuracy of the solution is maintained within predefined tolerances.<br />

Overview of Time Step Control Algorithms<br />

To simplify, the time step can be controlled in three different ways.<br />

Eldo can use either:<br />

• Local Truncation Error control (LTE)<br />

• Rate-of-change control (DVDT)<br />

• Iteration Count control (IC)<br />

Some variants on these schemes are also available and detailed below, but these are the main<br />

three strategies. To select one of these time step control methods, use .OPTION LVLTIM.<br />

Tip<br />

See “.OPTION LVLTIM” in the Eldo Reference Manual.<br />

By default, Eldo controls the local truncation error (LTE) and determines the time steps it can<br />

take based on estimations of this error. When a solution at time t has been accepted, to progress<br />

in time, Eldo will compute the value h of the largest time step it can take while still maintaining<br />

an acceptable LTE. Note that this is just a guess. The solution at time point t+h is predicted<br />

using the previous solutions at the previous time points. This serves as the initial guess. Next,<br />

Eldo tries to achieve convergence at the new point t+h. If convergence cannot be achieved, the<br />

time step is reduced using a smaller time step h’ (h’


Speed and Accuracy<br />

Time Step Control<br />

To monitor this, by default .OPTION NEWACCT is set (see “.OPTION NEWACCT” in the<br />

Eldo Reference Manual). Eldo reports interesting (and readable) statistics about the iteration<br />

counts, average number of iterations per time step, number of time step rejections, and so on.<br />

This can be used to double-check whether the simulator runs ‘normally’ or not. These statistics<br />

are reported at the very end of the output .chi file. Eldo also reports some statistics in the<br />

original SPICE style, but the newacct reporting is much more readable and useful.<br />

Convergence failure in the Newton iterations has several possible reasons. The initial guess may<br />

be simply too distant from the solution. This might happen if the chosen time step is ‘overoptimistic’<br />

or if a sharp change in the circuit’s state occurs within the time step. Note that the<br />

simulator anticipates sharp changes in the stimuli, and all ‘break’ points such as the edges in<br />

PWL or PULSE signals force coinciding time points. Another reason for convergence failure<br />

can be discontinuities in the model equations, or simply strong non-linearities.<br />

Controlling the local truncation error (the error incurred while approximating the time<br />

derivatives with finite differences) is the most conservative and rigorous way to control the time<br />

steps. It usually provides more reliable and accurate results. This is the method Eldo selects by<br />

default.<br />

The rate-of-change control method uses the rate of change of the voltages to control the time<br />

steps. The premise behind this method is to control the time steps used so that the voltages do<br />

not change ‘too fast’. It is simpler than the LTE method, but also less accurate, and there is no<br />

direct general relationship between the rate of change of the voltage and the actual truncation<br />

error, at least not under all conditions. The method can, however, provide accurate results if the<br />

rate of change is forced to remain small enough.<br />

The iteration count method attempts to control the time step by monitoring only the rate of<br />

convergence of the Newton iterations. The idea being that if convergence is obtained rapidly,<br />

with just a few iterations, it probably means that the initial predicted guess was ‘good’ and,<br />

conversely, if many iterations are required, it probably means that the guess was incorrect.<br />

There is no attempt to estimate the truncation error. The control is entirely indirect, through the<br />

monitoring of the iteration count. This method is the least reliable of all and not necessarily any<br />

faster.<br />

When selecting the time points, Eldo may also use internal heuristic rules and, for example,<br />

adjust the time steps depending on the types of devices, the way they are connected, the scale of<br />

the simulation time, and so on, to obtain optimal results given the requested tolerances.<br />

As a consequence there is no guarantee that from one release to another, the exact time point<br />

locations, or the time point density (local or global) will be the same. If the time points that Eldo<br />

selects naturally are not convenient for one reason or another, <strong>user</strong>s must add explicit control<br />

options to alter this density. This can be done using options such as HMAX, INTERP,<br />

OUT_STEP, OUT_RESOL, and so on. See also .PLOT in the Eldo Reference Manual.<br />

Related Topics<br />

Control of the Local Truncation Error (LTE)<br />

Eldo® User's Manual, 15.3 1249


Speed and Accuracy<br />

Time Step Control<br />

More About Time Step Control<br />

Usage of a Fixed Time Step<br />

Control of the Local Truncation Error (LTE)<br />

When LVLTIM equals 2 or 3, LTE estimates are used to monitor the time step selection.<br />

Truncation error is the part of the solution error that originates from the approximation of the<br />

time-derivative terms (for example, in the case of a simple capacitor, the dv/dt term in the<br />

I=C.dv/dt equation) with finite-differences expressions. LTE can be estimated and monitored<br />

using the dv/dt terms or the v term itself.<br />

Tip<br />

See “.OPTION LVLTIM” in the Eldo Reference Manual.<br />

When using LTE control to determine the acceptable time steps, Eldo may use the voltage<br />

quantities and/or the charge/flux quantities.<br />

By default Eldo uses voltage quantities for LTE estimates. There are, however, situations where<br />

LTE on charge/flux is used:<br />

• If .OPTION QTRUNC is specified, LTE will be computed on charges/flux, not on<br />

voltages. This corresponds to the way SPICE operates. This is sometimes more efficient<br />

and/or accurate for PCB applications, but often seems indirect to IC designers.<br />

• If Eldo detects ‘PCB-like’ devices such as those shown in the list below, then LTE will<br />

be computed on charges/flux:<br />

o<br />

o<br />

o<br />

o<br />

o<br />

Current sources above 1A<br />

Voltage sources above 500V<br />

Negative capacitors or capacitors above 900pF<br />

Inductors above 0.1μH<br />

Magnetic core devices<br />

If option QTRUNC is set, LTE is computed using charges and flux quantities. In this case<br />

parameters NGTOL, CHGTOL, and FLUXTOL designate the absolute tolerances on voltages,<br />

charges and fluxes respectively, and RELTRUNC is the associated relative tolerance.<br />

Tip<br />

See “.OPTION QTRUNC” in the Eldo Reference Manual.<br />

Related Topics<br />

More About Time Step Control<br />

1250<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

Time Step Control<br />

Usage of a Fixed Time Step<br />

More About Time Step Control<br />

Eldo can also ‘clamp’ the time step to both a minimum value and a maximum value.<br />

To clamp the maximum time step you want to allow, use the HMAX option. Eldo will perform<br />

all of its normal time step control as explained in “Overview of Time Step Control Algorithms”<br />

on page 1248, but still not take any step larger than HMAX. Use this option carefully, as setting<br />

HMAX to a smaller value than required may force long simulation times. Unless very clear<br />

suspicion exists that the result is corrupted due to the selected time steps being too large, this<br />

option should not be used.<br />

To clamp the time step to a minimum value, use the HMIN or ABSOLUTE_HMIN options.<br />

These are potentially dangerous options: if HMIN/ABSOLUTE_HMIN is set to too large<br />

values, it prevents Eldo from using the time step it should use to maintain the accuracy within<br />

the specified tolerances. Unexpected results or failures are possible if using an inappropriate<br />

HMIN/ABSOLUTE_HMIN value. The default value for HMIN/ABSOLUTE_HMIN is 1ps.<br />

Unless speed improvements are a necessity, it is best not to increase HMIN/<br />

ABSOLUTE_HMIN. Setting HMIN/ABSOLUTE_HMIN to lower values can be useful for<br />

designs with very fast transitions.<br />

To control the ‘acceleration’ of the time step when convergence is easily obtained, use the<br />

HACC option. The overall goal of Eldo is to take the largest time step possible, while still<br />

providing results that are within the requested tolerances (typically specified with EPS,<br />

RELTOL, etc.). Every time a time point has been computed and accepted, Eldo will perform<br />

some analysis and computations to determine what the next optimal time step should be for the<br />

next time point. If convergence is easily obtained (that is, with very few iterations) and if the<br />

LTE constraints are verified with a large margin, Eldo will attempt to take a larger time step for<br />

the next time point by multiplying the current time step by a certain acceleration factor, as<br />

specified by HACC. The default value for HACC is 2, which means that Eldo will attempt to<br />

multiply the current time step by 2 at most.<br />

Specifying a value with option HACC overrides the default value of 2. This time step<br />

acceleration strategy is a compromise; choosing a conservative value (1.1x for example) would<br />

provide very little speedup, but the next time point would most likely easily converge.<br />

Alternatively, choosing a large factor (10x for example) when convergence is easily obtained is<br />

tempting, and would in theory provide a significant speedup. However, chances are high that<br />

the time point computed with the new (too) large time step will either not converge because of<br />

non-linearity, or will have to be rejected because the LTE constraints will be violated. In these<br />

cases, Eldo would then step back and recompute a new time point with a smaller time step (see<br />

the option FT). Therefore, an aggressive value might be a worse choice than a conservative one.<br />

The default value, 2, reflects this compromise and is a robust choice providing, on average, the<br />

best results. Unless you have very good reasons to do so, you are advised against changing the<br />

value of HACC.<br />

Eldo® User's Manual, 15.3 1251


Speed and Accuracy<br />

Newton Iterations Accuracy Control<br />

Related Options<br />

• .OPTION FT in the Eldo Reference Manual<br />

• .OPTION HACC in the Eldo Reference Manual<br />

• .OPTION HMAX, .OPTION HMIN and .OPTION ABSOLUTE_HMIN in the Eldo<br />

Reference Manual<br />

Related Topics<br />

Overview of Time Step Control Algorithms<br />

Usage of a Fixed Time Step<br />

Usage of a Fixed Time Step<br />

A fixed internal time step can be specified by the STEP parameter; this may be useful when<br />

simulating certain classes of circuit (for example switched-capacitor circuits), however, care<br />

must be taken. Overall, it is not safe, and may cause excessively long simulation times.<br />

If the requested STEP value is unreasonably small, it may appear to the simulator that some<br />

nodes are not changing, and as a result it will set them into ‘latency’. A badly chosen fixed time<br />

step can thus sometimes have unwelcome results.<br />

A STEP value that is too large may similarly cause problems. Consider a bipolar circuit when a<br />

large transition of an input signal occurs between two steps. This will be nearly impossible to<br />

handle for the simulator.<br />

Overall, using this option in the case of regular IC circuit analysis is highly discouraged.<br />

Related Topics<br />

Overview of Time Step Control Algorithms<br />

More About Time Step Control<br />

Newton Iterations Accuracy Control<br />

The main parameters controlling the accuracy of the Newton iterations are RELTOL, VNTOL,<br />

ABSTOL, and CHGTOL.<br />

Whenever Newton iterations are used to solve the non-linear system of equations, the following<br />

convergence criteria for voltages, currents and charges are used:<br />

• For node voltages:<br />

|V(i) − V(i − 1)| < RELTOL × |max(|V(i)|, |V(i − 1)|)| + VNTOL<br />

1252<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

Global Tuning of the Accuracy—EPS<br />

where V(i) is the voltage value at the current iteration i and V(i-1) is the value at the<br />

previous iteration.<br />

• For branch currents:<br />

|I(i) − I(i − 1)| < RELTOL × |max(|I(i)|, |I(i − 1)|)| + ABSTOL<br />

where I(i) is the current value at the current iteration i and I(i-1) is the value at the<br />

previous iteration.<br />

• For charges:<br />

|Q(i) - Q(i-1)| < RELTOL*|max(|Q(i)|, |Q(i-1)| + CHGTOL<br />

where Q(i) is the value at current iteration i and Q(i-1) the value of the previous<br />

iteration.<br />

The same RELTOL parameter controls the relative tolerance for voltages, currents, and charges.<br />

However, when voltages, currents, or charges become ‘small’ in absolute value, a relative<br />

tolerance becomes useless, thus absolute tolerances are required. Of course the typical orders of<br />

magnitude of voltages, currents, and charges are quite different, thus the necessity to have<br />

specific absolute tolerances (VNTOL, ABSTOL, CHGTOL).<br />

As a rule, if using the default settings, a simulation that goes well should use at most three or<br />

four Newton iterations per time step. This can be less if the circuit is almost linear, or if the<br />

settings such as the RELTOL value are relaxed. If many more iterations are needed, it means<br />

that either the time step control options have been relaxed a lot (and potentially the truncation<br />

error is large), or there are strongly non-linear characteristics in the circuit, which are difficult to<br />

solve. The number of Newton iteration will also increase if the RELTOL value is reduced to<br />

obtain more accuracy.<br />

Related Topics<br />

Speed and Accuracy in Eldo<br />

Tips for Improving Simulation Performance<br />

Global Tuning of the Accuracy—EPS<br />

A global parameter, EPS, is used as a general controller to set the required accuracy of a<br />

simulation. When this parameter is changed, a collection of lower-level parameters are adjusted<br />

accordingly, affecting both the Newton convergence tolerances and the time step control<br />

tolerances.<br />

Is is always possible to set these low-level parameters individually. However using EPS<br />

guarantees that the adjustments to the low-level parameters are consistent, which is not always<br />

easy to achieve.<br />

Eldo® User's Manual, 15.3 1253


Speed and Accuracy<br />

Global Tuning of the Accuracy—EPS<br />

The parameter adjustments induced by EPS are shown in Table 20-1 (the global TUNING<br />

parameter which appears in the first line of the table is explained in “Global Tuning of the<br />

Accuracy—TUNING” on page 1255).<br />

Table 20-1. Global Tuning of Accuracy<br />

TUNING STANDARD ACCURATE VHIGH<br />

EPS 1 1e−1 1e−2 1e-3 1e−4 1e−5 1e-6 1e−7 1e-8 1e−9<br />

RELTOL 5e−2 5e−3 1e-3 5e−4 2.5e−4 1e-4 5e−5 1e-5 1e−6<br />

VNTOL 1e−6 1e−6 1e-6 1e−6 1e−6 1e-6 1e−7 1e-8 1e−9<br />

CHGTOL 1e−9 1e−9 1e-14 1e−14 1e−14 1e-15 1e−16 1e-18 1e−18<br />

FLUXTOL 1e−11 1e−11 1e-11 1e−11 1e−11 1e-11 1e−11 1e-11 1e−11<br />

ITOL 1e−6 1e−6 1e-6 1e−6 1e−6 1e-6 1e−6 1e-6 1e−6<br />

ABSTOL 1e−12 1e−12 1e-12 1e−12 1e−12 1e-12 1e−13 1e-14 1e−15<br />

RELTRUNC 2<br />

CHGTRUNC 3<br />

5e−2 5e−3 1e-3 5e−4 2.5e−4 1e-4 5e−5 1e-5 1e−6<br />

1e−9 1e−9 1e-14 1e−14 1e−14 1e-15 1e−16 1e-18 1e−18<br />

1.See .OPTION EPS for<br />

furtherinformation.<br />

2.When set indirectly thoughEPS, RELTRUNC always gets the same value as RELTOL.<br />

RELTRUNC isonly used if LTE is controlled<br />

on charges/flux, that is when optionQTRUNC<br />

is set.<br />

3.When set indirectly thoughEPS, CHGTRUNC always gets the same value as CHGTOL.<br />

CHGTRUNC isonly used if LTE is controlled<br />

on charges/flux, that is when optionQTRUNC<br />

is set.<br />

Setting EPS automatically changes the low-level parameters shown in the table above. However<br />

it is still possible to override some of them. For example, if specifying:<br />

.option eps=1e-3 reltol=1e-8<br />

RELTOL will be set to 1e-8 instead of 1e-3. VNTOL will be set to 1e-6, indirectly through EPS.<br />

Although this may be considered inconsistent, it is allowed.<br />

It is important to note that RELTOL, which is one of the main parameters defining the global<br />

accuracy, does NOT scale linearly with EPS.<br />

Transient noise (.NOISETRAN) analysis requires more accuracy so the accuracy values<br />

Table 20-1 are not valid and are overridden by default, see “Transient Noise Analysis” on<br />

page 241.<br />

1254<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

Global Tuning of the Accuracy—TUNING<br />

Related Topics<br />

Speed and Accuracy in Eldo<br />

Global Tuning of the Accuracy—TUNING<br />

Global Tuning of the Accuracy—TUNING<br />

Another global parameter, TUNING, may be used as a general controller to define the accuracy<br />

of a given simulation. With TUNING, the <strong>user</strong> does not provide numerical values for the<br />

accuracy control switches. Instead, a qualitative flag is specified for the desired accuracy, and<br />

similarly to the effect of EPS, a number of adjustments are activated. Actually, ‘accuracy’ in<br />

this context should be understood as ‘speed/accuracy compromise’.<br />

The TUNING parameter can take four values: FAST, STANDARD, ACCURATE, and<br />

VHIGH.<br />

FAST can be used when the primary concern is to accelerate a simulation, and you are ready to<br />

sacrifice a degree of accuracy to achieve this. The FAST setting is equivalent to EPS=1e-3,<br />

overridden with VNTOL=10e-6, ABSTOL=100e-12, RELTOL=1.25e-3 and CHGTOL=1e-12.<br />

Thus FAST is not entirely equivalent to any given value of EPS. It is an adequate setting if you<br />

are not too worried about picoAmps and nanoVolts accuracy, and your primary requirement is a<br />

short runtime.<br />

STANDARD, ACCURATE, and VHIGH are equivalent to specific values of EPS (see<br />

Table 20-1 on page 1254).<br />

STANDARD corresponds to the Eldo default settings, in other words it is equivalent to setting<br />

EPS=1e-3. If you do not set any option in the netlist file, this is what Eldo will use. Thousands<br />

of test cases covering all possible IC technologies have shown that this is the best compromise<br />

for what Eldo tries to achieve by default—in other words reliable and accurate results in the<br />

shortest CPU time.<br />

Finally ACCURATE and VHIGH (which stands for Very HIGH accuracy) alter the tolerance<br />

switches to achieve higher degrees of accuracy, usually at the expense of longer simulation<br />

times. ACCURATE is equivalent to setting EPS=1e-6, and VHIGH is equivalent to EPS=1e-8.<br />

The VHIGH setting must be used carefully, as it can lead to excessively long simulation times.<br />

It is, however, sometimes necessary, particularly for the cases of the startup phase of sensitive<br />

oscillators.<br />

Note<br />

Using EPS settings smaller than 1e-9/1e-10 is not recommended.<br />

Setting the TUNING flag simply uses the .option mechanism. For example:<br />

.option TUNING=ACCURATE<br />

Eldo® User's Manual, 15.3 1255


Speed and Accuracy<br />

Simulation of Large Circuits<br />

Related Topics<br />

Speed and Accuracy in Eldo<br />

Global Tuning of the Accuracy—EPS<br />

Simulation of Large Circuits<br />

The Eldo circuit simulator is capable of handling very large circuits. To handle such circuits,<br />

containing several hundreds of thousands of components, memory usage becomes an important<br />

consideration.<br />

Tip<br />

For more information on memory requirements and dimensioning, please refer to the AMS<br />

Installation Guide.<br />

For the simulation of large circuits, the following suggestions may help:<br />

• Explore the manual.<br />

There are many options and features that can significantly improve speed, and help with<br />

the simulation of large circuits. Some of them are extremely specific and relevant only<br />

in the presence of specific elements. A good place to start is the Simulator and Control<br />

Options chapter in the Eldo Reference Manual, which lists all available .OPTION<br />

statements. Of particular importance are those listed in the Simulation Speed, Accuracy,<br />

and Efficiency Options table.<br />

• Use a workstation with sufficient RAM and SWAP.<br />

As with any software, an attempt to run a simulation with real memory far lower than<br />

that required to contain the circuit can result in a phenomena known as “thrashing.”<br />

When this occurs, CPU time is almost totally taken up in swapping data in and out of<br />

main memory, with little or no useful computation being made. Any tool that monitors<br />

process activity will report CPU usage, real memory usage, and swap usage. When<br />

running large simulations, it is highly recommended to use of these tools to monitor the<br />

simulation processes.<br />

• Use the 64-bit version of Eldo.<br />

If more than 2 GB of real memory is needed, consider using the 64-bit version of Eldo.<br />

See “Running Eldo in 32-bit and 64-bit Modes” on page 42.<br />

• Specify node number via MAXNODES and MAXTRAN options.<br />

If you have an idea of the number of nodes and components (grounded capacitors not<br />

included) your circuit has, it is wise to specify these options:<br />

.OPTION MAXNODES=VALUE MAXTRAN=VALUE<br />

1256<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

Simulation of Large Circuits<br />

In this case, Eldo directly allocates the correct amount of memory, reducing the<br />

requirement of using the expensive C function realloc().<br />

See .OPTION MAXNODES and .OPTION MAXTRAN in the Eldo Reference Manual.<br />

• Collapse the intrinsic MOS transistor nodes.<br />

When simulating large circuits containing mostly MOS transistors, the number of nodes<br />

grows very quickly with the number of MOSs. By default, Eldo creates explicit internal<br />

nodes for the drain and source parasitic access resistors. Thus each MOS transistor with<br />

non-zero access resistors adds two internal nodes to the system. Although these nodes<br />

do not connect to anything else, and the sparse techniques used to solve the matrices<br />

greatly reduce the impact of these additional nodes upon the CPU time, they still<br />

contribute to create a much larger system. For example if 50,000 MOSs are instantiated,<br />

the typical size of the circuit could be 30,000 or 50,000 ‘true’ nodes, but grows to<br />

130,000 or 150,000 with two internal nodes per MOS transistor. Even for Eldo, this is<br />

quite a change in problem size.<br />

An option exists to collapse these resistors into the drain current calculation, thus<br />

avoiding explicit creation of these intrinsic nodes. This option is NONWRMOS. With<br />

this option, the effect of the parasitic resistors upon the drain current is still taken into<br />

account, although not as accurately as when the nodes are explicitly created.<br />

Particularly, some of the overlap capacitances in the MOS model become connected to<br />

the external drain/source, whereas they really are connected to the internal nodes. This<br />

may change results slightly.<br />

However, experience has shown that the accuracy degradation is barely measurable,<br />

particularly when these resistors remain small. When having to simulate huge circuits,<br />

this is worth considering. It is, however, recommended to calibrate the accuracy<br />

degradation caused by the option with a reasonably small circuit first, and then to decide<br />

whether this degradation is acceptable or not for the larger circuit.<br />

This option, as its name indicates, only affects MOS transistors. It has no effect upon the<br />

handling of the internal base, collector, and emitter nodes of bipolar transistors, nor<br />

upon diodes.<br />

When this option is active, there might be situations where DC cannot be found. If this<br />

happens, remove the option. Even when DC is found, if the netlist contains some MOS<br />

devices with forward-biased bulk-source and bulk-drain junctions, Eldo will detect such<br />

situations during DC convergence, and will re-simulate with the option disabled.<br />

See .OPTION NONWRMOS in the Eldo Reference Manual.<br />

• Optimize the density of time points.<br />

Is not always possible to directly alter the density of time points that the simulator must<br />

compute to maintain a given accuracy. However, it is highly recommended to<br />

familiarize yourself with some of the options that affect the number of time points; the<br />

OUT_STEP, INTERP, FREQSMP, and OUT_RESOL options might have very<br />

Eldo® User's Manual, 15.3 1257


Speed and Accuracy<br />

Simulation of Large Circuits<br />

significant impacts. Detailed discussion of these options can be found in “Limiting the<br />

Size of Transient Output Files” on page 353.<br />

See .OPTION OUT_STEP, .OPTION INTERP, .OPTION FREQSMP and .OPTION<br />

OUT_RESOL in the Eldo Reference Manual.<br />

• Use the Periodic Circuit Speedup(PCS) option.<br />

Used to increase the simulation speed for circuits with periodic or nearly periodic<br />

nature. PLLs in near-lock state belong to this category. The amount of speedup depends<br />

on the design nature; the speedup will be more significant with relatively large circuits.<br />

With circuits showing no periodicity at all, the option will not usually provide any<br />

speedup. Periodic Circuit Speedup is invoked by setting PCS=1|2 for BSIM3v3 models<br />

only (PCS=1|2 represent two possible speed optimization methods, PCS=1 is<br />

recommended) or PCS=3 for BSIM4 and BSIM3v3 models (with same speed<br />

optimization as PCS=1). The default is 0. This option only supports the BSIM3v3 and<br />

BSIM4 models.<br />

BSIM4, unlike BSIM3, has many parasitic configurations: gate resistors, body resistors<br />

network, bias dependent access resistors, and so on. These parasitic configurations are<br />

controlled by a set of instance and model parameters (Rdsmod, Rbodymod, and<br />

Rgatemod). As the complexity of the parasitic configuration around the core model<br />

increases, the gain expected by the PCS decreases.<br />

This option should not affect the accuracy of the results.<br />

See .OPTION PCS in the Eldo Reference Manual.<br />

• Try suppressing DC analysis for large digital circuits.<br />

This is achieved by setting the UIC option of the .TRAN command. Very large circuits<br />

are often digital circuits for which an accurate and time-consuming DC analysis may not<br />

be necessary. The logical initialization performed by Eldo prior to any analysis should<br />

ensure that the transient analysis that follows will start with nodes correctly preset.<br />

Initial voltage conditions are specified using the .IC command.<br />

• Decrease the accuracy for MOS digital circuits.<br />

For MOS digital circuits, accuracy can often be decreased to 10mV instead of the<br />

default value of 5mV. This can significantly reduce CPU time.<br />

• Employ the .USE command.<br />

It may be useful to split the circuit into a number of blocks, find DC solutions for each<br />

block, and then find the DC solution of the circuit as a whole using the separate<br />

solutions as a starting point.<br />

Related Topics<br />

Tips for Improving Simulation Performance<br />

1258<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

Tips for Improving Simulation Performance<br />

Tips for Improving Simulation Performance<br />

For saving and restarting DC and transient simulations, refer to the following topics:<br />

• “.SAVE DC in Combination with .RESTART” in “Saving and Restarting DC<br />

Simulations” on page 215<br />

• “.SAVE DC in Combination with .USE” in “Saving and Restarting DC Simulations” on<br />

page 215<br />

• “.SAVE END in Combination with .RESTART” in “Saving and Restarting Transient<br />

Simulations” on page 219<br />

• “More Sophisticated .SAVE and .RESTART Procedures” in “Saving and Restarting<br />

Transient Simulations” on page 219<br />

• “Aborting Simulation and Saving Current State” in “Saving and Restarting Transient<br />

Simulations” on page 219<br />

Related Topics<br />

Speed and Accuracy in Eldo<br />

Simulation of Large Circuits<br />

Eldo® User's Manual, 15.3 1259


Speed and Accuracy<br />

Integral Equation Method (IEM) Algorithm<br />

Integral Equation Method (IEM) Algorithm<br />

IEM is a unique algorithm to Eldo. It is useful when very high accuracy is desired and/or when<br />

NR shows stability issues. Some components cannot be formulated in a way that is compatible<br />

with IEM, thus it is also less general than NR.<br />

Caution<br />

The IEM algorithm only works well using simple models. Models are now quite<br />

complicated due to latest process technology nodes. They require a more flexible interface,<br />

GUDM, where you can specify any number of nodes as required. They are not supported by<br />

IEM. This applies to almost all the newer families of models, including: BSIM4, BSIM5,<br />

MM11, PSP, TFT, HISIM, HICUM, VBIC and MEXTRAM. Eldo built-in analog macromodels<br />

and Verilog-A <strong>user</strong>-defined models are also not supported by IEM.<br />

With IEM, the differential system is first transformed into a system of integral equations, which<br />

is then transformed into an algebraic system by series expansion. The truncation error results<br />

from the finite number of terms in the series. In all cases, truncation error is also a function of<br />

the time step size.<br />

Once the non-linear algebraic system is obtained, it is solved by an iteration loop. IEM targets<br />

improvements of the accuracy of the solution (compared to Newton); it does not specifically<br />

target large circuits, so it is mostly used for cell or macro-block simulations where accuracy is<br />

critical.<br />

IEM is of interest for cases where high accuracy is required and/or when the default Newton<br />

method runs into numerical stability issues due to the integration methods (trapezoidal ringing<br />

for example). IEM however does not support all devices, macro-models, and so on, that Newton<br />

supports. Some devices cannot be efficiently formulated in a way that is compatible with the<br />

IEM algorithm. Thus the applicability of IEM is somewhat limited, and it is mostly used for cell<br />

characterization applications.<br />

• Integration Method<br />

When using IEM, the notion of integration method, such as BE, TRAP, or GEAR, is<br />

irrelevant. The equations are cast to an integral form prior to the resolution. Thus there<br />

are no choices about a numerical integration method to use.<br />

• Time Step Control<br />

When using IEM, the time step control algorithm uses local truncation error (LTE)<br />

control. Only the LVLTIM=2 and LVLTIM=3 methods are selectable together with<br />

IEM. The other methods are not reliable enough when used together with IEM, and they<br />

will be refused by Eldo.<br />

• Accuracy Control<br />

1260<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

IEM Overview<br />

When using IEM, the same accuracy control parameters as those used for the default<br />

Newton method are available. Thus the RELTOL and ABSTOL parameters will<br />

primarily control the accuracy of the resolution.<br />

The IEM method is described in more detail, including its limitations, in the following sections:<br />

• “IEM Overview” on page 1261<br />

• “IEM—Supported Circuit Elements” on page 1262<br />

• “IEM Tolerance Parameters” on page 1263<br />

• “Efficient Usage of IEM” on page 1264<br />

IEM Overview<br />

The Integral Equation Method (IEM) is a simulation algorithm developed for transient analog<br />

circuit simulation. With some circuits, IEM provides better performance than classic algorithms<br />

based on the Newton-Raphson method combined with a multi-step discretization scheme (for<br />

example Backward-Euler, Trapezoidal, Gear, and so on).<br />

In some cases, IEM may perform better than Newton methods in terms of stability and<br />

accuracy, which has a favorable incidence on speed. The improvements appear particularly for<br />

circuits requiring high precision or those which exhibit tight coupling or stability problems.<br />

IEM’s performance enhancement derives from the use of a semi-analytic approach combined<br />

with efficient numerical techniques.<br />

Application Domains<br />

IEM is invoked for TRANSIENT analysis of ANALOG circuits only. DC and AC analyses can<br />

only be performed using Newton-Raphson methods.<br />

In a case where Eldo works together with another simulation kernel—digital or analog—then<br />

IEM is not supported.<br />

Related Topics<br />

Integral Equation Method (IEM) Algorithm<br />

IEM—Supported Circuit Elements<br />

IEM Tolerance Parameters<br />

Efficient Usage of IEM<br />

Eldo® User's Manual, 15.3 1261


Speed and Accuracy<br />

IEM—Supported Circuit Elements<br />

IEM—Supported Circuit Elements<br />

Most simple circuit elements accepted by Eldo are supported by IEM, except objects described<br />

by FAS or GUDM. The following list explicitly states those elements supported by IEM.<br />

• MOS models:<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

MERCK2, MERCK3, and MERCK4<br />

BERK1, BERK2, and BERK3<br />

BSIM1 and BSIM2<br />

STMOS1 and STMOS3<br />

EKV<br />

MISNAN<br />

BSIM3<br />

CSEM<br />

BSIM3V3<br />

MOTOROLA<br />

MOSP9<br />

• BJT models:<br />

o<br />

o<br />

BERKBIP<br />

STBIP<br />

• Diodes:<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

o<br />

BERKDIO<br />

ELDIO2<br />

TUNNELD<br />

STDIO<br />

STFOWL<br />

STMIS<br />

JUNCAP<br />

• All other electrical device models, except:<br />

o<br />

o<br />

R, L, and C defined by the VALUE statement.<br />

S and Z domain filters.<br />

1262<br />

Eldo® User's Manual, 15.3


Speed and Accuracy<br />

IEM Tolerance Parameters<br />

• All independent or controlled sources, except:<br />

o<br />

Controlled sources defined by either the VALUE or TABLE statements (note: linear<br />

and polynomial controlled sources are supported).<br />

• All digital and mixed-signal macromodels.<br />

• Only comparator and delay elements are supported among analog macromodels.<br />

• Only the switch element is supported among switched capacitor macromodels.<br />

• Accusim magnetic models are supported, but not those of Eldo.<br />

In case a circuit or block contains an element not supported by IEM, this circuit or block is<br />

simulated using Newton-Raphson and a warning message is issued.<br />

Related Topics<br />

Integral Equation Method (IEM) Algorithm<br />

IEM Overview<br />

IEM Tolerance Parameters<br />

The following simulation algorithms may be used on a circuit depending on the setting of the<br />

.OPTION line in the netlist and/or on the use of the (ANALOG) attribute on subcircuits:<br />

• .OPTION NEWTON<br />

In this case, the whole circuit is simulated in a single block using the Newton method.<br />

This is the default algorithm.<br />

• .OPTION IEM<br />

In this case, the whole circuit is simulated in a single block using IEM.<br />

• .OPTION BLOCKS=NEWTON<br />

In this case, the circuit is partitioned (whenever possible) into one or more blocks.<br />

Simulation inside each block is performed using the Newton method and relaxation is<br />

undertaken between blocks using OSR. OSR is also used to simulate the non-Newton<br />

part of the circuit.<br />

• .OPTION BLOCKS=IEM<br />

In this case, the circuit is partitioned (whenever possible) into one or more blocks.<br />

Simulation inside each block is performed using IEM and relaxation is undertaken<br />

between blocks using OSR. OSR is also used to simulate the non-IEM part of the circuit.<br />

If a block contains either a GUDM, HDL-A, or FAS model, then simulation inside that<br />

particular block will be performed using the Newton method. If no IEM blocks are created<br />

Eldo® User's Manual, 15.3 1263


Speed and Accuracy<br />

Efficient Usage of IEM<br />

(because all blocks contain unsupported objects or the circuit is loosely coupled and can be<br />

simulated with OSR) then the IEM option is removed, and a warning message is issued.<br />

RELTOL and VNTOL parameters can be used in the same way as for SPICE-like simulators.<br />

These control both convergence of iteration loops and step size.<br />

Note<br />

For Newton-Raphson, RELTOL does not control the step size.<br />

If RELTOL or VNTOL are not explicitly specified in the netlist, then EPS can be used to<br />

control their values, as follows:<br />

• RELTOL = (1.0×10 −9 × EPS) 1/4<br />

RELTOL is then limited in the range 1.0×10 −2 to 1.0×10 −5<br />

• VNTOL = (1.0×10 −7 × EPS) 1/2<br />

VNTOL is then limited in the range 1.0×10 −3 to 1.0×10 −9<br />

For IEM, the option LVLTIM is set to 2 by default, in other words, truncation error is used to<br />

control the time step. It is possible to set LVLTIM=3 in the netlist, which will also enable the<br />

truncation error to control the time step. Additionally, it will impose calculated points at<br />

TPRINT values in the .TRAN command. Other settings of LVLTIM are not allowed since they<br />

produce less accurate results that would be meaningless with IEM.<br />

All other SPICE-compatible options (for example ABSTOL, ITOL, and so on) behave in the<br />

same way as for Newton-Raphson. This of course does not include integration scheme options<br />

(BE, TRAP, GEAR, ...) which do not apply to IEM.<br />

To maintain compatibility with previous Eldo versions and Newton usage, EPS may still be<br />

used in the Eldo sense—that is, as a means to control all precision parameters.<br />

Related Topics<br />

Integral Equation Method (IEM) Algorithm<br />

One Step Relaxation (OSR) Algorithm<br />

Efficient Usage of IEM<br />

Efficient Usage of IEM<br />

This section describes approaches to achieve the best accuracy and performance results with<br />

IEM, used alone or in combination with OSR.<br />

1264<br />

Eldo® User's Manual, 15.3


IEM Alone (.OPTION IEM)<br />

Speed and Accuracy<br />

One Step Relaxation (OSR) Algorithm<br />

As discussed in “IEM Tolerance Parameters” on page 1263, this setup enables IEM to simulate<br />

the whole circuit in a single block. This is required for all-analog designs, or at least when the<br />

analog part of the circuit is much larger than the logic circuitry (in other words, approximately<br />

75% of devices or more). This option is particularly recommended for circuits requiring high<br />

precision and/or those manifesting stability problems. IEM intrinsically gives very good<br />

accuracy and doesn’t require tightening of accuracy parameters. Hence, the default EPS value is<br />

usually enough to achieve high quality simulation results. Lowering EPS will give even higher<br />

precision, but at the expense of CPU time.<br />

IEM + OSR (.OPTION BLOCKS=IEM)<br />

This setup enables Eldo to partition the circuit, assigning tightly coupled blocks to IEM, the<br />

remaining part being simulated with OSR. By default, MOS and grounded capacitors are<br />

assigned to OSR, hence it is recommended to use this setup in conjunction with a correct<br />

imposition of the attribute (ANALOG) for relevant circuits. This way, BJTs, resistors, and all<br />

MOS analog subcircuits will be simulated by IEM while other MOS blocks will be considered<br />

as logic ones and efficiently simulated by OSR (whenever possible).<br />

As usual, it is possible to increase accuracy by reducing EPS, however, as in all-IEM simulation<br />

this is not particularly recommended.<br />

Note<br />

The combination of IEM (a highly precise algorithm) with OSR (a fast but less precise<br />

algorithm) may not be justified in some cases.<br />

Related Topics<br />

Integral Equation Method (IEM) Algorithm<br />

One Step Relaxation (OSR) Algorithm<br />

IEM Tolerance Parameters<br />

One Step Relaxation (OSR) Algorithm<br />

The OSR algorithm of Eldo is dedicated to the simulation of large MOS circuits showing weak<br />

local couplings (large-scale feedback loops are not a problem). It is a unique algorithm to Eldo.<br />

Its primary usage is the fast transistor-level simulation of large digital CMOS circuits, for which<br />

the weak local coupling assumption is generally valid.<br />

Caution<br />

OSR is applicable to legacy processes only, typically 0.5μm or larger, and does not perform<br />

efficiently with state-of-the-art processes. This is because OSR is based on fundamental<br />

assumptions about the signal flow and weak electrical couplings between gates, drains, and<br />

sources in MOS devices. These assumptions are no longer true with short-channel processes,<br />

Eldo® User's Manual, 15.3 1265


Speed and Accuracy<br />

One Step Relaxation (OSR) Algorithm<br />

and thus OSR cannot perform equally well. Specifically, gate-drain and gate-source leakage<br />

currents can easily prevent the algorithm from working efficiently. For these reasons OSR is<br />

considered a legacy feature, and there are no active developments, enhancements, nor bug<br />

fixing. To perform large-scale digital (CMOS) simulation with a higher performance than Eldo<br />

Classic, consider the ADiT and Eldo Premier solutions.<br />

When the conditions for its applicability are met, the speed and accuracy of OSR are excellent.<br />

In many cases, it is just as accurate as the Newton method, but much faster, and also the growth<br />

of the CPU time with the circuit size is almost linear, which enables the simulation of larger<br />

circuits. Although its capacity is still less than that of fast-SPICE timing simulators such as<br />

ADiT, it provides an interesting point in the speed/accuracy plane.<br />

OSR is not particularly efficient with tightly coupled analog circuits. Better results will be<br />

obtained using the default Newton-Raphson method.<br />

OSR can be activated explicitly or indirectly. The most straightforward way to activate OSR is<br />

to use .option OSR. If this option is set, Eldo attempts to simulate the whole circuit with OSR.<br />

However, if the circuit contains elements that prevent OSR from being effective, or if its<br />

connectivity is such that OSR will fail, Eldo reverts back to the default Newton algorithm, for<br />

part or all of the circuit and will issue a warning.<br />

Note<br />

Eldo is able to simulate a circuit with certain parts handled by OSR, and other parts handled<br />

by Newton. See “Combined OSR/Newton Simulation” below for more information.<br />

OSR and the Notion of Latency<br />

When OSR is used, Eldo places the nodes for which the surrounding nodes do not show any<br />

voltage variation greater than EPS volts into ‘latency’. Thereafter, Eldo effectively bypasses the<br />

calculation of such nodes. This enables significant CPU time savings, especially for large digital<br />

circuits where, often, only a fraction of the nodes are changing over one time step.<br />

Due to the formulation of OSR, latency exploitation is very natural and effective. Latency is<br />

much more complicated to control in a reliable way in the context of the regular Newton<br />

method.<br />

Even with OSR, latency, and above all ‘wake-up from latency’, is always tricky. When slowly<br />

varying signals are applied to a circuit with high capacitances, Eldo may not detect any voltage<br />

variation within one time step, resulting in nodes being placed in latency. Depending on the<br />

tolerances (EPS) this may cause incorrect simulation results. In case latency is potentially the<br />

source of problems, the .OPTION NOLAT command may be used to suppress the use of<br />

latency. If this option is set, Eldo will not attempt to use latency, and will solve all nodes,<br />

whatever their activity.<br />

1266<br />

Eldo® User's Manual, 15.3


Integration Method<br />

Speed and Accuracy<br />

One Step Relaxation (OSR) Algorithm<br />

When using OSR, the same integration methods as for the case of Newton (namely BE, TRAP,<br />

and GEAR) can be used (using .OPTION METHOD=).<br />

Time Step Control<br />

When using OSR, the default time step control algorithm is the same as in the case of Newton<br />

(LVLTIM=2), and thus it uses local truncation error (LTE) control. Only the LVLTIM=1,<br />

LVLTIM=2 and LVLTIM=3 methods are selectable together with OSR. The other method<br />

(LVLTIM=0 is meaningless in the context of OSR (there are no Newton iterations when using<br />

OSR).<br />

Accuracy Control<br />

The accuracy control when using OSR is much simpler than with Newton. The global parameter<br />

EPS is used to control everything. Furthermore, the actual value of EPS (in Volts) is directly<br />

used for the convergence control.<br />

Accuracy of the relaxation loop and the inner loop is directly controlled by EPS.<br />

• Relaxation loop is stopped when:<br />

|V(irelax) - V(irelax-1)| < EPS for all nodes<br />

• Inner loop:<br />

|V(iter) - V(iter-1)| < EPS/50 on the current node<br />

Combined OSR/Newton Simulation<br />

Eldo can partition a circuit so that some blocks are simulated using OSR and other blocks are<br />

simulated using the standard Newton algorithm. Typical candidate examples would include<br />

circuits with large digital CMOS blocks driving and/or driven by analog blocks such as voltage<br />

regulators, bandgap references, high-gain operational amplifiers, and so on.<br />

In these cases, the speed and capacity of OSR is used to handle the large weakly-coupled<br />

sections of the circuits, and Newton, with its accuracy and ability to handle tightly coupled<br />

devices, is used for the analog blocks.<br />

The partitioning can be left entirely to the discretion of Eldo, or the <strong>user</strong> can try to help and<br />

indicate which blocks (subcircuits) must be simulated with OSR or Newton. In the latter case,<br />

the partitioning is always indicative only, and Eldo may choose to alter the boundaries of the<br />

partitions to accommodate the requirements of the OSR algorithm.<br />

There are several ways to trigger these mixed OSR/Newton simulations:<br />

• .OPTION BLOCKS=NEWTON<br />

Eldo® User's Manual, 15.3 1267


Speed and Accuracy<br />

One Step Relaxation (OSR) Algorithm<br />

This first partitioning method is automatic, based on the degree of coupling between<br />

devices. A global option is set (.OPTION BLOCKS=NEWTON). Eldo will identify the<br />

blocks consisting of tightly coupled devices and place them in partitions that will be<br />

solved using the Newton method. The loosely coupled nodes are placed in the OSR<br />

partition. The global circuit is solved using a relaxation loop. Simply, the relaxation loop<br />

operates with individual nodes and also groups of tightly coupled nodes (the Newton<br />

partitions). Note that the identification of tightly coupled devices is not based on the<br />

netlist hierarchy (.SUBCKT, and so on).<br />

• Flag (ANALOG) given on SUBCKT definition<br />

This partitioning methods ‘tags’ the subcircuit definitions. The subcircuit definitions<br />

tagged with (ANALOG) will be solved using the Newton method. This is useful when<br />

the netlist hierarchy reflects the nature and coupling level of the blocks. All nodes that<br />

are not inside a <strong>user</strong>-defined (ANALOG) SUBCKT, and which are connected only to<br />

MOSFET, grounded capacitances, or low-value floating capacitances (the threshold<br />

value for floating capacitance is set with .OPTION CAPANW= ) will be solved by OSR,<br />

with all other nodes being solved by Newton. See the subcircuit definition syntax in the<br />

.SUBCKT command in the Eldo Reference Manual.<br />

• .NWBLOCK [RELTOL=val] [VNTOL=val] <br />

This method is the most ‘manual’ one. Each Newton block is defined explicitly, with a<br />

list of nodes. Hierarchical names and wildcards in such names are allowed. Optionally<br />

the required Newton accuracy can be redefined for each block, using the RELTOL and<br />

VNTOL parameters.<br />

With any of the partitioning methods described above, OSR is implicitly activated. OSR<br />

becomes the default method, and Eldo (or the <strong>user</strong>) defines what still has to be simulated with<br />

Newton.<br />

Whenever OSR and Newton are activated simultaneously, the OSR and Newton rules for<br />

accuracy control apply to the OSR and Newton partitions respectively. For example the<br />

RELTOL and VNTOL parameters still define the accuracy of the nodes inside the Newton<br />

partitions, whereas EPS defines the accuracy of the OSR nodes.<br />

Related Topics<br />

Integral Equation Method (IEM) Algorithm<br />

Tips for Improving Simulation Performance<br />

1268<br />

Eldo® User's Manual, 15.3


Chapter 21<br />

Examples<br />

The most productive way of learning a simulation tool such as Eldo is to get ‘hands-on’<br />

experience by sitting at a terminal and working through, stage by stage, a number of practical<br />

circuit simulation examples.<br />

The examples cover a wide range of simple but concise circuit applications. They should be of<br />

interest not only to the novice <strong>user</strong>, but also to the experienced <strong>user</strong> wishing to learn more about<br />

specific simulation techniques within Eldo. Upon completion, a wide range of techniques<br />

needed to perform efficient and productive analysis using Eldo should have been learnt.<br />

A summary of the circuits used in this chapter, together with a brief description of the Eldo<br />

subject areas dealt with are listed in Table 21-1. Listings for these examples may be found in the<br />

following subdirectories included with your software:<br />

$MGC_AMS_HOME/examples/<strong>eldo</strong><br />

where $MGC_AMS_HOME is the directory where the software resides.<br />

Table 21-1. Eldo Examples<br />

Example Circuit Name Eldo Description<br />

Example 1—AC Analysis of a<br />

Parallel LCR Circuit<br />

Example 2—Transient and AC<br />

Analysis of a 4th Order Butterworth<br />

Filter<br />

Example 3—AC and Noise<br />

Analysis of a Band Pass Filter<br />

Example 4—AC Analysis of a Low<br />

Pass Filter<br />

Example 5—Transient Analysis of a<br />

Colpitts Oscillator<br />

Example 6—Transient Analysis of a<br />

High Voltage Cascade<br />

Example 7—Monte Carlo Analysis<br />

Basic<br />

Example 8—DC Sensitivity of a<br />

Bipolar Amplifier<br />

ac_basic.cir<br />

ac_tran_filter.cir<br />

ac_noise_filter.cir<br />

ac_lowpass.cir<br />

tran_oscillator.cir<br />

tran_high_voltage.cir<br />

monte_carlo_basic.cir<br />

dc_sensitivity.cir<br />

General introduction to AC<br />

analysis.<br />

Transient and AC analysis.<br />

AC, noise analysis, and<br />

model description.<br />

AC analysis and subcircuit<br />

definition.<br />

Transient analysis and<br />

model description.<br />

Transient analysis and<br />

model description.<br />

AC, Monte Carlo analysis,<br />

and model description.<br />

DC sensitivity analysis.<br />

Eldo® User's Manual, 15.3 1269


Examples<br />

Table 21-1. Eldo Examples (cont.)<br />

Example Circuit Name Eldo Description<br />

Example 9—Transient and AC<br />

Analysis of a Switched Capacitor<br />

Low Pass Filter<br />

Example 10—Transient Analysis of<br />

a Switched Capacitor Schmitt<br />

Trigger<br />

Example 11—Loop Stability of an<br />

Opamp<br />

Example 12—Overshoot Extraction<br />

of an Opamp<br />

Example 13—Transient Analysis of<br />

a 5th Order Elliptic SC Low Pass<br />

Filter<br />

Example 14—Charge Conservation<br />

in MOS Models<br />

Example 15—AC Analysis of an<br />

Active RC Band Pass Filter<br />

Example 16—Transient Analysis of<br />

an Integrator<br />

Example 17—Monte Carlo<br />

Sensitivity of a Two-Stage<br />

Operational Amplifier<br />

Example 18—Numerical<br />

Integration: TRAP versus GEAR<br />

Example 19—DC Mismatch<br />

Comparison with Monte Carlo<br />

Analysis<br />

tran_ac_switched.cir<br />

tran_sc_trigger.cir<br />

loop_stability_opamp.cir<br />

extract_overshoot_opamp.cir<br />

tran_switched_filter.cir<br />

mos_charge_conservation.cir<br />

ac_pcb_ua741.cir<br />

tran_integrator.cir<br />

monte_carlo_sensitivity.cir<br />

trap_vs_gear.cir<br />

dcmismatch_contributors.cir<br />

Transient and small signal<br />

AC analyses using<br />

Z-domain switched<br />

capacitor models.<br />

Transient analysis of a<br />

switched capacitor Schmitt<br />

trigger circuit, using an<br />

operational amplifier and<br />

switch macromodels.<br />

Loop Stability analysis.<br />

Plot and extract the<br />

overshoot of an opamp<br />

connected.<br />

Transient analysis of a 5th<br />

order elliptic low pass filter<br />

using opamp and switched<br />

capacitor macromodels.<br />

Charge conservation<br />

comparison between old and<br />

new device models.<br />

AC analysis of an active RC<br />

band pass filter circuit<br />

containing a standard<br />

discrete UA741 operational<br />

amplifier.<br />

Transient analysis of a<br />

second order delta sigma<br />

modulator circuit using<br />

analog macromodels.<br />

Monte Carlo sensitivity<br />

value computation.<br />

Comparison of the TRAP<br />

and GEAR numerical<br />

integration methods.<br />

Comparison of<br />

DCMISMATCH analysis<br />

and Monte Carlo analysis.<br />

1270<br />

Eldo® User's Manual, 15.3


Examples<br />

Table 21-1. Eldo Examples (cont.)<br />

Example Circuit Name Eldo Description<br />

Example 20—DC Mismatch<br />

Comparison with Monte Carlo<br />

Analysis using ECL<br />

Example 21—Post-Layout<br />

Simulation using DSPF<br />

Example 22—Extract Gain and<br />

Phase Margin of a 2-Stage Opamp<br />

Example 23—Parametric<br />

Sensitivity Analysis<br />

Example 24—Cell<br />

Characterization: Setup Time<br />

Extraction<br />

Example 25—Setting up and<br />

Handling Analog Busses<br />

Example 26—Spectre<br />

Compatibility Example<br />

Example 27—Monte Carlo<br />

Analysis Autostop<br />

Tutorial—Using Power Analysis for<br />

Static Leakage Analysis of a PLL<br />

Circuit<br />

Tutorial—High Impedance Fault<br />

Detection of a PLL Circuit<br />

Transient Noise Analysis Example<br />

1—High-Rate Particle Detector<br />

Transient Noise Analysis Example<br />

2—Switched Capacitor Filter<br />

dcmismatch_vs_mcsens.cir<br />

dspf_backannotation.cir<br />

gain_phase_margins.cir<br />

sensitivity_parametric.cir<br />

extract_setup_time_passfail.c<br />

ir<br />

sigbus_plotbus.cir<br />

spectre_compatibility.scs<br />

monte_carlo_autostop.cir<br />

../power_analysis/<br />

Power_Analysis_PLL.cir<br />

../hiz/HiZ_PLL.cir<br />

transient_noise_detector.cir<br />

transient_noise_filter.cir<br />

Eldo Control Language<br />

comparison of<br />

DCMISMATCH analysis<br />

and Monte Carlo analysis.<br />

Shows how to import a .dspf<br />

file containing layout<br />

parasitics.<br />

Extract the gain and phase<br />

margin of an opamp.<br />

Parametric sensitivity<br />

analysis (.SENSPARAM).<br />

Extract the setup time of a<br />

D-type flip-flop, using the<br />

pass-fail method of the Eldo<br />

optimizer.<br />

Setting up and handling<br />

analog busses .SIGBUS,<br />

.SETBUS, .CHECKBUS.<br />

Eldo support of Spectre<br />

format netlist.<br />

Monte Carlo analysis with<br />

autostop.<br />

Power Analysis tutorial.<br />

High Impedance fault<br />

detection tutorial.<br />

Legacy transient noise<br />

analysis example.<br />

Legacy transient noise<br />

analysis example.<br />

Each example starts with a brief description of the circuit in question together with a circuit<br />

diagram. A short summary of the Eldo commands used within the example follows this, to aid<br />

<strong>user</strong>s wishing to learn about a specific topic or the use of certain commands within Eldo. A<br />

breakdown and explanation of each section of the netlist is then shown. Actual output results<br />

from the circuit conclude each example using EZwave, the Eldo waveform viewer.<br />

Additional examples are documented throughout the manual as listed in Table 21-2:<br />

Eldo® User's Manual, 15.3 1271


Examples<br />

Example 1—AC Analysis of a Parallel LCR Circuit<br />

Table 21-2. Additional Eldo Examples<br />

Type Examples Directory Description and Link<br />

Using IBIS in Eldo ibis IBIS Examples<br />

Monte Carlo Analysis<br />

Further Monte Carlo Analysis<br />

Examples<br />

Statistical Experimental dex<br />

DEX Example Files<br />

Design and Analysis<br />

Optimization optimizer Examples of Circuit<br />

Optimization<br />

Eldo Control Language ecl Eldo Control Language<br />

Examples<br />

Post-Processing Library ppl Post-Processing Library<br />

Example Files<br />

Example 1—AC Analysis of a Parallel LCR<br />

Circuit<br />

Netlist file: ac_basic.cir<br />

This simple circuit simulation gives a general introduction to the syntax of Eldo by performing<br />

an AC analysis on a parallel LCR circuit.<br />

Figure 21-1. Parallel LCR Circuit<br />

Summary of Eldo commands used in this example:<br />

• .AC—AC analysis.<br />

• .PLOT—Plot simulator results.<br />

Tip<br />

See the “.AC” and “.PLOT” commands in the Eldo Reference Manual.<br />

1272<br />

Eldo® User's Manual, 15.3


Netlist Explanation<br />

Examples<br />

Example 1—AC Analysis of a Parallel LCR Circuit<br />

The first line is the circuit title. It must always be the first line of a simulation.<br />

LCR Parallel Network<br />

The first part of the Eldo netlist is a description of the circuit components.<br />

The line below defines an AC voltage source vin connected between the nodes 1 and 0 of value<br />

1V and 0º phase.<br />

vin 1 0 ac 1 0<br />

The lines below define the devices present in the circuit to be simulated. Each device<br />

instantiation gives the component name, the nodes to which the component is connected and the<br />

value of the component.<br />

r2 1 2 50<br />

r3 2 3 50k<br />

r5 3 0 50<br />

l1 2 3 100u<br />

c4 2 3 10n<br />

The next part of the netlist specifies the simulation control directives indicating the type of<br />

simulation Eldo will perform on the circuit.<br />

The line below indicates that Eldo will perform an AC analysis on the circuit within the<br />

frequency range 100Hz to 1 GHz with 1000 steps per decade.<br />

.ac dec 1000 100 1g<br />

The line below specifies a dB/frequency plot of the nodes 2 and 3 on the same graph.<br />

.plot ac vdb(2) vdb(3)<br />

The netlist is terminated with the command below. This is not mandatory, but recommended.<br />

.end<br />

Simulation Results<br />

The results are stored in the ac_basic.wdb file and can be displayed using the EZwave graphical<br />

results post-processor. Figure 21-2 shows the results using the EZwave waveform viewer.<br />

Eldo® User's Manual, 15.3 1273


Examples<br />

Example 2—Transient and AC Analysis of a 4th Order Butterworth Filter<br />

Figure 21-2. Example 1—Simulation Results<br />

Example 2—Transient and AC Analysis of a<br />

4th Order Butterworth Filter<br />

Netlist file: ac_tran_filter.cir<br />

This example simulates a 4th order Butterworth filter with a transient and an AC analysis being<br />

performed on the circuit.<br />

Figure 21-3. 4th Order Butterworth Filter<br />

1274<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 2—Transient and AC Analysis of a 4th Order Butterworth Filter<br />

Summary of Eldo commands used in this example:<br />

• .AC—AC analysis.<br />

• .TRAN—Transient analysis.<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

The first group of lines define the devices in the circuit to be simulated. Each device<br />

instantiation specifies the component name, the nodes to which the component is connected and<br />

the value of the component.<br />

4th Order Butterworth Filter<br />

c1 4 0 1.5307n<br />

c2 3 0 1.0824n<br />

l1 3 4 1.5772u<br />

l2 2 3 .38268u<br />

r1 1 2 1<br />

This line defines an AC source of 1V and a time dependent Piece Wise Linear function between<br />

the nodes 1 and 0. The pwl parameters describe a signal that stays at 0V until 1μs where it rises<br />

to 1V in 1μs. The signal stays at 1V until 20μs where it drops back to 0V in 0.1μs.<br />

v1 1 0 ac 1 pwl (0 0 1u 0 2u 1 20u 1 20.1u 0)<br />

Tip<br />

Refer to the output results for a pictorial representation of this signal.<br />

The line below specifies that Eldo will perform a transient analysis on the circuit lasting 40μs<br />

with a plotting increment for the line printer of 0.2μs.<br />

.tran 0.2u 40u<br />

The lines below specify that voltage/time plots will be generated on separate graphs of the<br />

voltage at node 4 and the voltage at node 1.<br />

.plot tran v(4)<br />

.plot tran v(1)<br />

The line below indicates that Eldo performs an AC analysis on the circuit within the frequency<br />

range 10000Hz to 100MHz with 20 steps per decade. This AC analysis statement specifies that<br />

an AC analysis is performed in addition to the transient analysis. Eldo first performs the AC<br />

analysis, followed by the transient analysis.<br />

.ac dec 20 10000 100meg<br />

The line below sets the simulator accuracy.<br />

Eldo® User's Manual, 15.3 1275


Examples<br />

Example 2—Transient and AC Analysis of a 4th Order Butterworth Filter<br />

.option eps=1.0e-6<br />

The lines below specify that dB/frequency and phase/frequency plots will be generated of the<br />

voltage at node 4. These commands are added to the first simulation run netlist.<br />

.plot ac vdb(4)<br />

.plot ac vp(4)<br />

Simulation Results<br />

The results are also added to the file ac_tran_filter.wdb and can be displayed as a second<br />

simulation page using the EZwave graphical post-processor.<br />

Figure 21-4. Example 2—Simulation Results—AC<br />

1276<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 3—AC and Noise Analysis of a Band Pass Filter<br />

Figure 21-5. Example 2—Simulation Results—Transient<br />

Example 3—AC and Noise Analysis of a Band<br />

Pass Filter<br />

Netlist file: ac_noise_filter.cir<br />

This example deals with a typical PCB example of a simple opamp band pass active filter using<br />

opamp macromodels. The simulation performs an AC analysis of the circuit, together with a<br />

noise analysis, of the output stage of the filter to obtain the small-signal frequency and noise<br />

responses respectively.<br />

Eldo® User's Manual, 15.3 1277


Examples<br />

Example 3—AC and Noise Analysis of a Band Pass Filter<br />

Figure 21-6. Band Pass Filter<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .AC—AC analysis.<br />

• .NOISE—Noise analysis.<br />

Netlist Explanation<br />

Band-Pass filter<br />

.model ampop modfas gain=10000.0 p1=5e3<br />

The above line describes the electrical parameters of the <strong>user</strong> defined model ampop based on the<br />

opamp2 macromodel. The gain (gain) and dominant pole frequency (p1) of the model are set to<br />

10000 and 5×10 3 Hz.<br />

Tip<br />

For more details on the opamp2 macromodel and its parameters, refer to “Analog<br />

Macromodels” in the Eldo Reference Manual.<br />

1278<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 3—AC and Noise Analysis of a Band Pass Filter<br />

yopa1 opamp2 pin: 5 6 4 0 model: ampop<br />

yopa2 opamp2 pin: 9 11 10 0 model: ampop<br />

The above lines instantiate two operational amplifiers yopa1 and yopa2 of macromodel type<br />

opamp2 (linear 2-pole) connected between the nodes 5, 6, 4 and 0 and between the nodes 9, 11,<br />

10 and 0 respectively. The electrical parameters of the macromodel are defined in the model<br />

ampop.<br />

.ac dec 80 100 10k<br />

.plot ac vdb(10)<br />

The above lines indicate that an AC analysis should be performed on the circuit within the<br />

frequency range 100Hz to 10kHz with 80 steps per decade. A dB/frequency plot of the voltage<br />

at node 10, the output stage of the filter, is requested.<br />

.noise v(10) v1 80<br />

.plot noise db(inoise)<br />

.plot noise db(onoise)<br />

The above lines indicate that a noise analysis should be performed of the voltage at node 10<br />

with the voltage source v1 as input noise voltage. The analysis should be averaged over 80<br />

frequency points. A dB/frequency plot is requested on the input and output noise.<br />

Eldo® User's Manual, 15.3 1279


Examples<br />

Example 4—AC Analysis of a Low Pass Filter<br />

Simulation Results<br />

Figure 21-7. Example 3—Simulation Results<br />

Related Topics<br />

AC Analysis<br />

Noise Analysis<br />

Example 4—AC Analysis of a Low Pass Filter<br />

Netlist file: ac_lowpass.cir<br />

This example deals with a typical PCB example of the AC analysis of a low pass filter using<br />

bipolar standard parts. The low pass filter incorporates a voltage amplifier, illustrating the use of<br />

the subcircuit capabilities of Eldo, as the voltage amplifier part of the circuit itself is defined in<br />

this manner.<br />

1280<br />

Eldo® User's Manual, 15.3


Figure 21-8. Low Pass Filter<br />

Examples<br />

Example 4—AC Analysis of a Low Pass Filter<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .SUBCKT—Subcircuit definition.<br />

• .AC—AC analysis.<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

Low Pass Filter incorporating a Voltage Amplifier<br />

.model q2n2222 npn is=1.9e-14 bf=150 vaf=100 ikf=.175<br />

+ ise=5e-11 ne=2.5 br=7.5 var=6.38 ikr=.012 isc=1.9e-13<br />

+ nc=1.2 rc=.4 cje=26p tf=.5e-9 cjc=11p tr=30e-9 xtb=1.5<br />

+ kf=3.2e-16 af=1.0<br />

The above lines describe the electrical parameters of the npn bipolar transistor model q2n2222.<br />

.subckt amp in out vdd<br />

The above line indicates the start of the voltage amplifier subcircuit definition. The subcircuit is<br />

called amp and is connected between the nodes in, out and vdd.<br />

c30 in 31 47u<br />

r30 31 33 390<br />

r31 vdd 33 50k<br />

r32 33 0 15k<br />

q30 out 33 0 q2n2222<br />

r33 vdd out 750<br />

.ends amp<br />

The above line indicates the end of the definition of the subcircuit amp.<br />

Eldo® User's Manual, 15.3 1281


Examples<br />

Example 4—AC Analysis of a Low Pass Filter<br />

Note<br />

All nodes used within the subcircuit are local nodes, in that they are only referenced within<br />

the subcircuit itself and that they do not have to correspond with the names of the nodes<br />

outside the subcircuit.<br />

r1 1 2 10<br />

l1 2 3 1.3m<br />

c1 3 0 100n<br />

r2 4 0 50k<br />

x1 3 4 9 amp<br />

The above line instantiates the subcircuit x1 of type amp connected between the nodes 3, 4, and<br />

9. As explained earlier, these nodes correspond to the nodes in, out and vdd within the<br />

subcircuit.<br />

vb 9 0 5<br />

v1 1 0 ac 1<br />

The above lines define the voltage sources in the circuit. A DC voltage source vb between the<br />

nodes 9 and 0 of value 5V, and an AC voltage source v1 connected between the nodes 1 and 0<br />

of value 1V.<br />

.ac dec 10 1 1g<br />

.plot ac vdb(3) vdb(4)<br />

.plot ac vp(3) vp(4)<br />

.end<br />

The above lines indicate that an AC analysis should be performed on the circuit within the<br />

frequency range 1Hz to 1GHz with 10 steps per decade. A dB/frequency plot of the voltage at<br />

nodes 3 and 4 is requested, together with a phase/frequency plot at the same nodes.<br />

1282<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 5—Transient Analysis of a Colpitts Oscillator<br />

Simulation Results<br />

Figure 21-9. Example 4—Simulation Results<br />

Example 5—Transient Analysis of a Colpitts<br />

Oscillator<br />

Netlist file: tran_oscillator.cir<br />

This example deals with the transient analysis of a simple oscillator circuit. This example is a<br />

Colpitts oscillator, a very classical circuit example.<br />

Eldo® User's Manual, 15.3 1283


Examples<br />

Example 5—Transient Analysis of a Colpitts Oscillator<br />

Figure 21-10. Colpitts Oscillator<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .OPTION—Simulator configuration.<br />

• .TRAN—Transient analysis.<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

.model ts2 npn<br />

+ bf=10 br=1 xtb=3 is=10f eg=1.11 rb=100<br />

+ rc=10 vaf=50 tr=6n mjc=0.75 mje=0.33 vje=0.75<br />

The above lines describe the electrical parameters of the npn bipolar transistor model ts2.<br />

Tip<br />

For a detailed description of each of these parameters, refer to the “BJT Model Syntax” in<br />

the Eldo Reference Manual.<br />

L1 1 3 5u<br />

C1 1 2 2n<br />

C2 2 3 100p<br />

R3 2 4 2200<br />

Q1 3 0 2 ts2<br />

The above line defines a transistor q1 between nodes 3, 0 and 2 with electrical parameters<br />

defined by the model ts2.<br />

V1 1 0 5<br />

V2 4 0 -5<br />

1284<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 5—Transient Analysis of a Colpitts Oscillator<br />

The above lines define the voltage sources in the circuit. A DC voltage source v1 connected<br />

between the nodes 1 and 0 of value 5V and also a DC voltage source between the nodes 4 and 0<br />

of value −5V.<br />

i1 2 4 pulse(0 10u 0 5n 5n 25n 50n)<br />

This line defines a time dependent pulse function between nodes 2 and 4 describing the<br />

following signal:<br />

0 A at 0s (delay time is 0s)<br />

0 A to 10μA in a rise time of 5ns<br />

10μA from 5 to 30ns (pulse width is 25ns)<br />

10μA to 0A in a fall time of 5ns<br />

0 A at 35ns<br />

Cycle repeats starting from 50ns.<br />

.option eps=1.0e-6<br />

The above line sets the simulator accuracy.<br />

.TRAN 1u 12u<br />

The above specifies a transient analysis is to be performed lasting 12μs with a plotting<br />

increment of 1μs.<br />

.plot tran v(1,3) (10,-10)<br />

The above line specifies a voltage/time plot to be performed of the voltage difference between<br />

the nodes 1 and 3 between the limits ±10V.<br />

Eldo® User's Manual, 15.3 1285


Examples<br />

Example 6—Transient Analysis of a High Voltage Cascade<br />

Simulation Results<br />

Figure 21-11. Example 5—Simulation Results<br />

Example 6—Transient Analysis of a High<br />

Voltage Cascade<br />

Netlist file: tran_high_voltage.cir<br />

This example deals with the transient analysis of a high voltage cascade circuit.<br />

1286<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 6—Transient Analysis of a High Voltage Cascade<br />

Figure 21-12. High Voltage Cascade<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .PARAM—Global parameter setting.<br />

• .OPTION—Simulator configuration.<br />

• .TRAN—Transient analysis.<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

high voltage cascade<br />

.model dl1001 d rs=10 vj=0.8<br />

The above line describes the electrical parameters of the diode model dl1001.<br />

Tip<br />

For a detailed description of each of these parameters, refer to the “Diode Model Syntax” in<br />

the Eldo Reference Manual.<br />

d1 1 2 dl1001<br />

d2 2 3 dl1001<br />

d3 3 4 dl1001<br />

d4 4 5 dl1001<br />

d5 5 6 dl1001<br />

c1 2 0 cap1<br />

c2 1 3 cap1<br />

c3 2 4 cap1<br />

c4 3 5 cap1<br />

c5 4 6 cap1<br />

c6 5 0 cap2<br />

vin 0 1 sin(0 2500 50k 0 0)<br />

The above line defines a sinusoidal function between the nodes 1 and 0, with a starting<br />

amplitude of 2500V and a frequency of 50kHz.<br />

.param cap1=1n cap2=10n<br />

Eldo® User's Manual, 15.3 1287


Examples<br />

Example 6—Transient Analysis of a High Voltage Cascade<br />

The above line defines the global parameters cap1 and cap2 that are used in the capacitor and<br />

diode definitions to be 1nF and 10nF respectively.<br />

.option reltol=0.01 vmax=100000 vmin=-100000<br />

The above line sets the relative accuracy to a value of 0.01 and output voltage limits between<br />

100,000 and -100,000V due to the high voltage levels present in this circuit.<br />

.tran 0.5m 5m<br />

The above line specifies that a transient analysis should be performed on the circuit lasting 5ms<br />

with a plotting increment for the line printer of 0.5ms.<br />

.plot tran v(5)<br />

.plot tran v(1)<br />

The above lines specify voltage/time plots to be performed on separate graphs of the voltages at<br />

nodes 5 and 1.<br />

1288<br />

Eldo® User's Manual, 15.3


Simulation Results<br />

Examples<br />

Example 6—Transient Analysis of a High Voltage Cascade<br />

Figure 21-13. Example 6—Simulation Results 1<br />

The following shows a zoom of the results between zero and 600 μs.<br />

Eldo® User's Manual, 15.3 1289


Examples<br />

Example 7—Monte Carlo Analysis Basic<br />

Figure 21-14. Example 6—Simulation Results 2<br />

Example 7—Monte Carlo Analysis Basic<br />

Netlist file: monte_carlo_basic.cir<br />

This example deals with Monte Carlo analysis on a non-inverting amplifier circuit. A specified<br />

number of simulation runs are carried out to see the effect on the circuit of changing component<br />

values within a specified range during each simulation run. Upper and lower limits of the<br />

outputs are then displayed by Eldo at the end of the simulation.<br />

1290<br />

Eldo® User's Manual, 15.3


Figure 21-15. Non-inverting Amplifier<br />

Examples<br />

Example 7—Monte Carlo Analysis Basic<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .OPTION—Simulator configuration.<br />

• .AC—AC analysis.<br />

• .MC—Monte Carlo analysis.<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

.model modres res lot=50% dev=60%<br />

The above line specifies the Monte Carlo parameter limits for resistor model type modres. It<br />

indicates that for each Monte Carlo run the resistor values can change together by as much as<br />

50% (lot tolerance). Additionally, the resistor values are allowed to change independently of<br />

each other by as much as 60% (dev tolerance). As can be seen below, the interval of variations<br />

is more important on the resistor r2 than on r1.<br />

r1 5 3 modres 100k<br />

r2 5 0 modres 1k<br />

c1 3 0 1p<br />

The above lines give the information of the resistors and capacitors that are present in the circuit<br />

to be simulated. Listed is the component name, the nodes between which the component is<br />

connected and the value of the component.<br />

Note<br />

The resistors are also defined to be of model type modres. This is to specify Monte Carlo<br />

parameter limits for the resistors during the simulation runs.<br />

Eldo® User's Manual, 15.3 1291


Examples<br />

Example 7—Monte Carlo Analysis Basic<br />

yopa opamp2 pin: 2 5 3 0 param: p1=1e3 p2=5e8 gain=5000<br />

vin1 2 0 ac<br />

.ac dec 30 1.0 100meg<br />

.option eps=1.0e-6<br />

.mc 500<br />

The above lines indicate that an AC analysis should be performed on the circuit within the<br />

frequency range 1Hz to 100MHz with 30 steps per decade. 500 Monte Carlo simulation runs<br />

are carried out.<br />

.print ac vdb(3)<br />

.plot ac vdb(3)(-40,60)<br />

.plot ac vp(3) (0,-90)<br />

.end<br />

A dB/frequency plot of the voltage at node 3 is requested, together with a phase/frequency plot<br />

at the same node.<br />

The plotted output results on the voltage at node 3 contain nominal simulation results without<br />

any change in the circuit values, together with highest and lowest deviation results over the<br />

simulation runs.<br />

Tip<br />

For more information on Monte Carlo analysis, refer to “Monte Carlo Analysis” on<br />

page 265.<br />

1292<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 8—DC Sensitivity of a Bipolar Amplifier<br />

Simulation Results<br />

Figure 21-16. Example 7—Simulation Results<br />

Example 8—DC Sensitivity of a Bipolar<br />

Amplifier<br />

Netlist file: dc_sensitivity.cir<br />

This example deals with a DC sensitivity analysis on the output of a simple bipolar amplifier<br />

circuit. The results show us which DC components have the most effect on the output of the<br />

circuit if they were to be changed.<br />

Eldo® User's Manual, 15.3 1293


Examples<br />

Example 8—DC Sensitivity of a Bipolar Amplifier<br />

Figure 21-17. Bipolar Amplifier<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .SENS—DC sensitivity analysis.<br />

Tip<br />

See “.SENS” in the Eldo Reference Manual.<br />

Netlist Explanation<br />

.sens v(4)<br />

The above line indicates that a DC sensitivity analysis should be performed showing the relative<br />

sensitivities that the DC components have on the voltage on node 4, the output node of the<br />

amplifier. The results are listed in the dc_sensitivity.chi file.<br />

The results of the sensitivity analysis, found in the dc_sensitivity.chi file, are listed in<br />

Figure 21-18.<br />

1294<br />

Eldo® User's Manual, 15.3


Simulation Results<br />

Examples<br />

Example 9—Transient and AC Analysis of a Switched Capacitor Low Pass Filter<br />

Figure 21-18. Example 8—Simulation Results<br />

Referring to the above results, the element sensitivity is the change in the output of interest (in<br />

this case the voltage at node 4) due to a one unit change in the value of the element of interest<br />

(for example r1) and the normalized sensitivity is the change in the output of interest due to a<br />

one percent change in the value of the element of interest.<br />

Looking at the sensitivity output in normalized sensitivity (volts/percent), it can be seen that the<br />

output at node 4 is most sensitive to the voltage source v2 and also to the bf parameter in q1. As<br />

a result, variation in these values causes a significant effect on the output voltage.<br />

Example 9—Transient and AC Analysis of a<br />

Switched Capacitor Low Pass Filter<br />

Netlist file: tran_ac_switched.cir<br />

This example deals with the transient and small signal AC analysis of an SC low pass filter<br />

using the Z-domain switched capacitor macromodels. Notice the periodic AC response.<br />

Summary of Eldo commands used in this example:<br />

• .AC—AC analysis.<br />

• .TRAN—Transient analysis.<br />

Eldo® User's Manual, 15.3 1295


Examples<br />

Example 9—Transient and AC Analysis of a Switched Capacitor Low Pass Filter<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

.param ts = 1.000000e-05<br />

The above line specifies the sampling period used in the integrator instances.<br />

.subckt sc_int inp inm out<br />

y1 sc_ideal inp inm out<br />

y2 sc_u inm out param: c=c tp=tp<br />

.ends sc_int<br />

The above lines indicate the switched capacitor integrator subcircuit definition. The subcircuit<br />

is called sc_int and is connected between the nodes inp, inm and out.<br />

* INTEGRATOR 1<br />

xi01 0 501 1 SC_INT c=5.173415p tp=ts<br />

y002 sc_n pin: 2 0 501 0 param: c=1.347451p tp=ts<br />

y003 sc_n pin: INPUT 0 501 0 param: c=1.623277p tp=ts<br />

y004 sc_n pin: 1 0 501 0 param: c=1.000000p tp=ts<br />

* INTEGRATOR 2<br />

xi05 0 502 2 sc_int c=5.839726p tp=ts<br />

y006 sc_i pin: 1 0 502 0 param: c=1.232076p tp=ts ldi=2<br />

y007 sc_i pin: 3 0 502 0 param: c=1.000000p tp=ts ldi=2<br />

* INTEGRATOR 3<br />

xi08 0 503 3 sc_int c=4.117249p tp=ts<br />

y009 sc_n pin: 2 0 503 0 param: c=1.660161p tp=ts<br />

y010 sc_n pin: 3 0 503 0 param: c=1.000000p tp=ts<br />

.tran 1u 500u<br />

.ac dec 500 100 1meg<br />

The above lines specify that a transient analysis should be performed on the circuit lasting<br />

500μs with a plotting increment of 1μs; and an AC analysis within the frequency range 100Hz<br />

to 1MHz with 500 steps per decade.<br />

.plot tran v(input)<br />

.plot tran v(1)<br />

.plot tran v(2)<br />

.plot tran v(3)<br />

The above lines specify that voltage/time plots should be performed on separate graphs of the<br />

voltage at nodes input, 1, 2, and 3.<br />

.plot ac vdb(1)<br />

.plot ac vdb(2)<br />

.plot ac vdb(3)<br />

The above lines specify that dB/frequency plots of the nodes 1, 2 and 3 are requested on<br />

separate graphs.<br />

1296<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 9—Transient and AC Analysis of a Switched Capacitor Low Pass Filter<br />

The above lines specify that voltage/time plots should be performed on separate graphs of the<br />

voltage at node 4 and the voltage at node 1.<br />

vin input 0 dc 1.0 ac 1.0 pwl(0.0 0.0 10n 1.0)<br />

The above line defines an AC source of 1V and a time dependent Piece Wise Linear function<br />

between the nodes input and 0. The pwl parameters describe a signal that stays at 0V until 10ns<br />

where it rises to 1V.<br />

Simulation Results<br />

Figure 21-19. Example 9—Simulation Results—AC<br />

Eldo® User's Manual, 15.3 1297


Examples<br />

Example 10—Transient Analysis of a Switched Capacitor Schmitt Trigger<br />

Figure 21-20. Example 9—Simulation Results—Transient<br />

Example 10—Transient Analysis of a Switched<br />

Capacitor Schmitt Trigger<br />

Netlist file: tran_sc_trigger.cir<br />

This example deals with a transient analysis of an switched capacitor Schmitt trigger circuit,<br />

using an operational amplifier and switch macromodels.<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .TRAN—Transient analysis.<br />

1298<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 11—Loop Stability of an Opamp<br />

Simulation Results<br />

Figure 21-21. Example 10—Simulation Results<br />

Example 11—Loop Stability of an Opamp<br />

Netlist file: loop_stability_opamp.cir<br />

This example shows usage of the Loop Stability analysis (.LSTB).<br />

Summary of Eldo commands used in this example:<br />

• .LSTB—Loop Stability analysis.<br />

Netlist Explanation<br />

XM2 M2D OUTL COM COM N W=0.8U L=0.6U<br />

VSTB OUTL OUT<br />

The above lines specify that node OUT is split into nodes OUT and OUTL, and inserts the<br />

VSTB source.<br />

Eldo® User's Manual, 15.3 1299


Examples<br />

Example 11—Loop Stability of an Opamp<br />

.PARAM pCX=0.2P<br />

CX M8D OUT pCX ! COMPENSATION CAP.<br />

CL OUT 0 1p ! LOAD CAP.<br />

The above lines specify the circuit has a capacitive load, and a compensation capacitor is set so<br />

that phase margin is approx. 45°.<br />

.OPTION tuning=vhigh<br />

The above line sets the simulator accuracy to very high.<br />

VDD VDD 0 1.65V<br />

VSS VSS 0 -1.65V<br />

VB BIAS 0 0.95V<br />

VINP INP 0 AC 1 0<br />

The above lines specify the power supplies, bias, and input.<br />

.ac dec 10 1 1e8<br />

The above line indicates that an AC analysis is performed on the circuit within the frequency<br />

range 1Hz to 100MHz with 10 steps per decade.<br />

.LSTB VSTB<br />

The above line indicates that a loop stability analysis is performed on the circuit.<br />

.plot ac lstb_db<br />

.plot ac lstb_p<br />

The above lines request the loop stability output plots of loop gain and phase.<br />

1300<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 12—Overshoot Extraction of an Opamp<br />

Simulation Results<br />

Figure 21-22. Example 11—Simulation Results<br />

Example 12—Overshoot Extraction of an<br />

Opamp<br />

Netlist file: extract_overshoot_opamp.cir<br />

This example shows how to plot and extract the overshoot of an opamp connected in follower<br />

configuration. The various extracted metrics are printed to a tabular output file.<br />

Summary of Eldo commands used in this example:<br />

• .TRAN—Transient analysis.<br />

• .EXTRACT—Extract characteristics from the simulator results.<br />

• .PRINTFILE—Print simulator results in tabular format.<br />

Eldo® User's Manual, 15.3 1301


Examples<br />

Example 12—Overshoot Extraction of an Opamp<br />

Netlist Explanation<br />

.PARAM pCX=0.2P<br />

CX M8D OUT pCX ! COMPENSATION CAP.<br />

CL OUT 0 1p ! LOAD CAP.<br />

The above lines specifies the circuit has a capacitive load, and a compensation capacitor is set<br />

so that phase margin is approx. 45°.<br />

.CONNECT INN OUT<br />

The above line specifies the opamp is connected in follower configuration.<br />

.OPTION tuning=vhigh<br />

The above line sets the simulator accuracy to very high.<br />

.tran 1n 1000n<br />

The above line specifies that a transient analysis should be performed on the circuit lasting<br />

1000ns with a plotting increment of 1ns.<br />

VDD VDD 0 1.65V<br />

VSS VSS 0 -1.65V<br />

VB BIAS 0 0.95V<br />

VINP INP 0 PULSE -0.9 0.9 10n 1n 1n 500n 1000n<br />

The above lines specify the power supplies, bias, and transient input (a step function on the<br />

positive input).<br />

.PLOT TRAN V(INP) V(OUT)<br />

The above lines request voltage plots of the input and output signals.<br />

.EXTRACT TRAN LABEL=povershoot abs((MAX(V(OUT)) - 0.9)/0.9)*100<br />

.EXTRACT TRAN LABEL=novershoot abs((MIN(V(OUT)) + 0.9)/0.9)*100<br />

The above lines extract the overshoot in as a percentage.<br />

.OPTION numdgt=3<br />

.PRINTFILE TRAN extract(povershoot) extract(novershoot)<br />

+ file=opamp_overshoot.txt<br />

The .PRINTFILE statement is used to print results in tabular format to an ASCII file,<br />

opamp_overshoot.txt. The measurements from the .EXTRACT statements are printed to the<br />

file. The NUMDGT option is specified to limit the number of decimals used when printing<br />

numbers.<br />

1302<br />

Eldo® User's Manual, 15.3


Simulation Results<br />

Examples<br />

Example 13—Transient Analysis of a 5th Order Elliptic SC Low Pass Filter<br />

Figure 21-23. Example 12—Simulation Results<br />

The extracted metrics in the generated ASCII file are as follows:<br />

# TEMPERATURE = 2.700000e+01<br />

# X MEAS(POVERSHOOT) MEAS(NOVERSHOOT)<br />

0.000e+00 2.080e+01 3.962e+00<br />

Example 13—Transient Analysis of a 5th Order<br />

Elliptic SC Low Pass Filter<br />

Netlist file: tran_switched_filter.cir<br />

This example deals with a transient analysis on a 5th order elliptic low pass filter using opamp<br />

and switched capacitor macromodels. This type of circuit is used in those applications requiring<br />

the analysis of sampled data in analog circuits, being used in certain ADC/DAC and switched<br />

capacitor filter designs. This shows a typical simulation to illustrate time domain analysis of<br />

switched capacitor filters.<br />

Summary of Eldo commands used in this example:<br />

Eldo® User's Manual, 15.3 1303


Examples<br />

Example 14—Charge Conservation in MOS Models<br />

• .MODEL—Model definition.<br />

• .TRAN—Transient analysis.<br />

• .PLOT—Plot simulator results.<br />

Simulation Results<br />

Figure 21-24. Example 13—Simulation Results<br />

Example 14—Charge Conservation in<br />

MOS Models<br />

Netlist file: mos_charge_conservation.cir<br />

This example illustrates charge conservation issues that can occur with old device models such<br />

as a Berkeley level 3 MOS model, compared to a Berkeley BSIM3 MOS model. A transient<br />

analysis simulation is performed on the MOS circuit, illustrating the differences in model<br />

performance.<br />

1304<br />

Eldo® User's Manual, 15.3


Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .TRAN—Transient analysis.<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

.MODEL M3 NMOS LEVEL=3 VTO=0.25V TOX=2.5N UO=600<br />

Examples<br />

Example 14—Charge Conservation in MOS Models<br />

The above line describes the electrical parameters of the nmos model M3. This is an old level 3<br />

model that does not conserve charge properly.<br />

.MODEL M53 NMOS LEVEL=53 VTH0=0.25V TOX=2.5N U0=600<br />

The above line describes the electrical parameters of the nmos model M53. This is a BSIM3<br />

model, that conserves charge.<br />

Simulation Results<br />

In the simulation waveforms in Figure 21-25, V(3) is the result of the charge control model and<br />

V(1) is the result of the capacitive model. For V(1) the error on the charge is accumulated and<br />

error is increasing at each period. However, for V(3) there is no error on the charges.<br />

Eldo® User's Manual, 15.3 1305


Examples<br />

Example 15—AC Analysis of an Active RC Band Pass Filter<br />

Figure 21-25. Example 14—Simulation Results<br />

Example 15—AC Analysis of an Active RC<br />

Band Pass Filter<br />

Netlist file: ac_pcb_ua741.cir<br />

This example deals with the AC analysis of an active RC band pass filter circuit containing a<br />

standard discrete UA741 operational amplifier. This example is a typical PCB example.<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .SUBCKT—Subcircuit definition.<br />

• .AC—AC analysis.<br />

• .PLOT—Plot simulator results.<br />

1306<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 16—Transient Analysis of an Integrator<br />

Simulation Results<br />

Figure 21-26. Example 15—Simulation Results<br />

Example 16—Transient Analysis of an<br />

Integrator<br />

Netlist file: tran_integrator.cir<br />

This example deals with the transient analysis of a second order delta sigma modulator circuit.<br />

A simple integrator, using analog macromodels (ideal switches, comparator, nand gates, and so<br />

on). Eldo provides a rich library of analog, digital, and switched capacitor macromodels, which<br />

can be useful for system simulations. All these macromodels are described in the Eldo<br />

Reference Manual. Transient analysis is performed to obtain the time domain response.<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .TRAN—Transient analysis.<br />

Eldo® User's Manual, 15.3 1307


Examples<br />

Example 16—Transient Analysis of an Integrator<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

compdiff ism isp voutp voutn vhi = 2.5 vlo = -2.5 tcom = 0.0n tpd = 0.0n<br />

The above line specifies a comparator.<br />

sl1 phi voutn memn switch<br />

sl2 phi voutp memp switch<br />

nand1 memp qu qubar vhi = 2.5 vlo = -2.5 tpd = 0.0n vthi = 0.1 vtlo = -0.1<br />

nand2 memn qubar qu vhi = 2.5 vlo = -2.5 tpd = 0.0n vthi = 0.1 vtlo = -0.1<br />

The above lines specify a latch.<br />

delayn qubar compb 81.3802n<br />

delayp qu comp 81.3802n<br />

The above lines specify a delay.<br />

vin1 inp 0 sin(0 0.5 12.288k 0 0)<br />

vin2 inm 0 sin(0 -0.5 12.288k 0 0)<br />

vphib phib 0 PWL 0 -5 41.6901n -5 42.6901n 5 79.3802n 5 80.3802n -5<br />

81.3802n -5 R<br />

vphi phi 0 PWL 0 5 40.6901n 5 41.6901n -5 80.3802n -5 81.3802n 5<br />

The above lines specify the voltage source inputs.<br />

1308<br />

Eldo® User's Manual, 15.3


Simulation Results<br />

Examples<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier<br />

Figure 21-27. Example 16—Simulation Results<br />

Example 17—Monte Carlo Sensitivity of a Two-<br />

Stage Operational Amplifier<br />

Netlist file: monte_carlo_sensitivity.cir<br />

This example demonstrates the Monte Carlo sensitivity feature of Eldo. At the end of the Monte<br />

Carlo analysis (.MC command) Eldo computes sensitivity values. These quantities are sorted by<br />

decreasing order and help understanding which statistical variables have the most influence on<br />

the output metrics. See the tables at the very end of the output .chi file.<br />

Summary of Eldo commands used in this example:<br />

• .MODEL—Model definition.<br />

• .AC—AC analysis.<br />

Eldo® User's Manual, 15.3 1309


Examples<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier<br />

• .MC—Monte Carlo analysis.<br />

• .EXTRACT—Extract characteristics from the simulator results.<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

.EXTRACT AC LABEL=MAX MAX(VDB(OUT))<br />

.EXTRACT AC LABEL=BW 'CROSSING(VDB(OUT), -3) / 10E6'<br />

.PLOT AC VDB(OUT)<br />

.EXTRACT DC LABEL=IVDD I(VDD)<br />

The above lines specify the outputs. The output metrics are the maximum value of the closed<br />

loop response, the -3dB bandwidth, and the power consumption. The Monte Carlo sensitivity<br />

analysis enables understanding which statistical parameters are impacting these output<br />

quantities, and which ones are not. The different metrics are not necessarily affected by the<br />

same statistical variables, so Eldo provides one table per metric.<br />

.MC 1000<br />

The Monte Carlo analysis is run with NRUN=1000 to obtain very accurate estimations of the<br />

sensitivity indices Si. Results are extracted for the IVDD extract.<br />

1310<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier<br />

0**** EXTRACT DISTRIBUTION TEMPERATURE = 27.000 DEG C<br />

:<br />

:0*****************************************************************************************<br />

*<br />

:<br />

:<br />

:<br />

:<br />

:Distribution of MAX<br />

: Range [ 7.0368E-01 9.6618E-01]<br />

: Number of runs: 1000<br />

: Nominal value: 8.3817E-01<br />

: Average value: 8.3912E-01<br />

Standard Deviation: 4.1165E-02 ( 4.9%)<br />

Standard Deviation based on nominal run: 4.1176E-02 ( 4.9%)<br />

[ 700.00000M 727.50000M] NB = 2 FREQ = 0.2% |<br />

[ 727.50000M 755.00000M] NB = 20 FREQ = 2% |*<br />

[ 755.00000M 782.50000M] NB = 73 FREQ = 7.3% |***<br />

[ 782.50000M 810.00000M] NB = 136 FREQ = 13.6% |******<br />

[ 810.00000M 837.50000M] NB = 266 FREQ = 26.6% |*************<br />

[ 837.50000M 865.00000M] NB = 242 FREQ = 24.2% |************<br />

[ 865.00000M 892.50000M] NB = 161 FREQ = 16.1% |********<br />

[ 892.50000M 920.00000M] NB = 74 FREQ = 7.4% |***<br />

[ 920.00000M 947.50000M] NB = 23 FREQ = 2.3% |*<br />

[ 947.50000M 975.00000M] NB = 3 FREQ = 0.3% |<br />

Bootstrap Confidence Interval for MAX<br />

[--------- Average Value ---------] [------- Standard Deviation ------]<br />

Level LeftLimit Estimate RightLimit LeftLimit Estimate RightLimit<br />

95.0000% 8.3639E-01 8.3912E-01 8.4143E-01 3.9649E-02 4.1185E-02 4.2947E-02<br />

99.0000% 8.3603E-01 8.3912E-01 8.4261E-01 3.8779E-02 4.1185E-02 4.3632E-02<br />

99.9000% 8.3599E-01 8.3912E-01 8.4352E-01 3.8388E-02 4.1185E-02 4.3770E-02<br />

99.9900% 8.3599E-01 8.3912E-01 8.4352E-01 3.8388E-02 4.1185E-02 4.3770E-02<br />

99.9990% 8.3599E-01 8.3912E-01 8.4352E-01 3.8388E-02 4.1185E-02 4.3770E-02<br />

Distribution of BW<br />

Range [ 2.1341E+00 2.2592E+00]<br />

Number of runs: 1000<br />

Nominal value: 2.1966E+00<br />

Average value: 2.1962E+00<br />

Standard Deviation: 2.0633E-02 ( 0.9%)<br />

Standard Deviation based on nominal run: 2.0636E-02 ( 0.9%)<br />

[ 2.13400 2.14660 ] NB = 5 FREQ = 0.5% |<br />

[ 2.14660 2.15920 ] NB = 33 FREQ = 3.3% |*<br />

[ 2.15920 2.17180 ] NB = 78 FREQ = 7.8% |***<br />

[ 2.17180 2.18440 ] NB = 175 FREQ = 17.5% |********<br />

[ 2.18440 2.19700 ] NB = 232 FREQ = 23.2% |***********<br />

[ 2.19700 2.20960 ] NB = 205 FREQ = 20.5% |**********<br />

[ 2.20960 2.22220 ] NB = 167 FREQ = 16.7% |********<br />

[ 2.22220 2.23480 ] NB = 79 FREQ = 7.9% |***<br />

[ 2.23480 2.24740 ] NB = 19 FREQ = 1.9% |<br />

[ 2.24740 2.26000 ] NB = 7 FREQ = 0.7% |<br />

Bootstrap Confidence Interval for BW<br />

Eldo® User's Manual, 15.3 1311


Examples<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier<br />

[--------- Average Value ---------] [------- Standard Deviation ------]<br />

Level LeftLimit Estimate RightLimit LeftLimit Estimate RightLimit<br />

95.0000% 2.1946E+00 2.1962E+00 2.1975E+00 1.9857E-02 2.0643E-02 2.1572E-02<br />

99.0000% 2.1943E+00 2.1962E+00 2.1978E+00 1.9498E-02 2.0643E-02 2.1925E-02<br />

99.9000% 2.1943E+00 2.1962E+00 2.1978E+00 1.9470E-02 2.0643E-02 2.1995E-02<br />

99.9900% 2.1943E+00 2.1962E+00 2.1978E+00 1.9470E-02 2.0643E-02 2.1995E-02<br />

99.9990% 2.1943E+00 2.1962E+00 2.1978E+00 1.9470E-02 2.0643E-02 2.1995E-02<br />

Distribution of IVDD<br />

Range [-5.6906E-05 -5.1855E-05]<br />

Number of runs: 1000<br />

Nominal value: -5.4433E-05<br />

Average value: -5.4406E-05<br />

Standard Deviation: 8.0321E-07 ( 1.5%)<br />

Standard Deviation based on nominal run: 8.0368E-07 ( 1.5%)<br />

[ -56.92000U -56.41200U ] NB = 5 FREQ = 0.5% |<br />

[ -56.41200U -55.90400U ] NB = 23 FREQ = 2.3% |*<br />

[ -55.90400U -55.39600U ] NB = 90 FREQ = 9% |****<br />

[ -55.39600U -54.88800U ] NB = 148 FREQ = 14.8% |*******<br />

[ -54.88800U -54.38000U ] NB = 248 FREQ = 24.8% |************<br />

[ -54.38000U -53.87200U ] NB = 227 FREQ = 22.7% |***********<br />

[ -53.87200U -53.36400U ] NB = 166 FREQ = 16.6% |********<br />

[ -53.36400U -52.85600U ] NB = 67 FREQ = 6.7% |***<br />

[ -52.85600U -52.34800U ] NB = 20 FREQ = 2% |*<br />

[ -52.34800U -51.84000U ] NB = 6 FREQ = 0.6% |<br />

Bootstrap Confidence Interval for IVDD<br />

[--------- Average Value ---------] [------- Standard Deviation ------]<br />

Level LeftLimit Estimate RightLimit LeftLimit Estimate RightLimit<br />

95.0000% -5.4454E-05 -5.4406E-05 -5.4357E-05 7.7032E-07 8.0361E-07 8.4200E-07<br />

99.0000% -5.4483E-05 -5.4406E-05 -5.4322E-05 7.6075E-07 8.0361E-07 8.4942E-07<br />

99.9000% -5.4497E-05 -5.4406E-05 -5.4314E-05 7.6073E-07 8.0361E-07 8.5248E-07<br />

99.9900% -5.4497E-05 -5.4406E-05 -5.4314E-05 7.6073E-07 8.0361E-07 8.5248E-07<br />

99.9990% -5.4497E-05 -5.4406E-05 -5.4314E-05 7.6073E-07 8.0361E-07 8.5248E-07<br />

Estimation of Sensitivity Indices for Response Y : MAX<br />

Mode of Computation : fast<br />

Number of Runs : 1001<br />

Number of Random Variables : 51<br />

List of Important Parameters :<br />

Index(I) Histo S(I) (percent / cumulative) Variable<br />

Value<br />

Name<br />

11 |-------------------- 14.69% 14.69% EM(XM13.M1,VTH0)<br />

17 |-------------- 10.69% 25.37% EM(XM12.M1,VTH0)<br />

35 |------------- 9.95% 35.32% EM(XM9.M1,VTH0)<br />

12 |------------- 9.95% 45.27% EM(XM13.M1,U0)<br />

18 |------------ 8.90% 54.18% EM(XM12.M1,U0)<br />

30 |---------- 7.78% 61.95% EM(XM1.M1,U0)<br />

1312<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 17—Monte Carlo Sensitivity of a Two-Stage Operational Amplifier<br />

48 |-------- 6.36% 68.31% EM(XM8.M1,U0)<br />

36 |------- 5.81% 74.12% EM(XM9.M1,U0)<br />

45 |------- 5.33% 79.45% EM(XM7.M1,U0)<br />

28 |----- 4.11% 83.56% EM(XM1.M1,TOX)<br />

51 |---- 3.47% 87.03% EM(XM10.M1,U0)<br />

26 |---- 3.28% 90.32% EM(XM11.M1,VTH0)<br />

27 |---- 3.07% 93.39% EM(XM11.M1,U0)<br />

33 |---- 2.95% 96.34% EM(XM2.M1,U0)<br />

8 |--- 2.49% 98.83% EM(XM15.M1,VTH0)<br />

44 |--- 2.45% 101.28% EM(XM7.M1,VTH0)<br />

24 |--- 2.23% 103.51% EM(XM4.M1,U0)<br />

49 |-- 1.97% 105.48% EM(XM10.M1,TOX)<br />

Estimation of Sensitivity Indices for Response Y : BW<br />

Mode of Computation : fast<br />

Number of Runs : 1001<br />

Number of Random Variables : 51<br />

List of Important Parameters :<br />

Index(I) Histo S(I) (percent / cumulative) Variable<br />

Value<br />

Name<br />

45 |-------------------- 12.22% 12.22% EM(XM7.M1,U0)<br />

35 |------------------ 11.47% 23.69% EM(XM9.M1,VTH0)<br />

5 |------------------ 11.22% 34.91% EM(XM17.M1,VTH0)<br />

48 |----------------- 10.87% 45.78% EM(XM8.M1,U0)<br />

3 |--------------- 9.54% 55.33% EM(XM16.M1,U0)<br />

2 |--------------- 9.52% 64.85% EM(XM16.M1,VTH0)<br />

36 |--------- 5.57% 70.42% EM(XM9.M1,U0)<br />

30 |------- 4.82% 75.25% EM(XM1.M1,U0)<br />

44 |------- 4.53% 79.77% EM(XM7.M1,VTH0)<br />

33 |------ 4.05% 83.82% EM(XM2.M1,U0)<br />

6 |------ 3.95% 87.77% EM(XM17.M1,U0)<br />

47 |------ 3.75% 91.52% EM(XM8.M1,VTH0)<br />

31 |----- 3.35% 94.86% EM(XM2.M1,TOX)<br />

4 |---- 2.61% 97.48% EM(XM17.M1,TOX)<br />

46 |---- 2.50% 99.98% EM(XM8.M1,TOX)<br />

Estimation of Sensitivity Indices for Response Y : IVDD<br />

Mode of Computation : fast<br />

Number of Runs : 1001<br />

Number of Random Variables : 51<br />

List of Important Parameters :<br />

Index(I) Histo S(I) (percent / cumulative) Variable<br />

Value<br />

Name<br />

5 |-------------------- 20.30% 20.30% EM(XM17.M1,VTH0)<br />

2 |----------------- 17.60% 37.90% EM(XM16.M1,VTH0)<br />

3 |------------- 13.84% 51.74% EM(XM16.M1,U0)<br />

11 |------------- 13.59% 65.34% EM(XM13.M1,VTH0)<br />

12 |---------- 11.14% 76.48% EM(XM13.M1,U0)<br />

Eldo® User's Manual, 15.3 1313


Examples<br />

Example 18—Numerical Integration: TRAP versus GEAR<br />

18 |------- 8.11% 84.59% EM(XM12.M1,U0)<br />

6 |------- 7.21% 91.80% EM(XM17.M1,U0)<br />

17 |---- 4.52% 96.32% EM(XM12.M1,VTH0)<br />

27 |--- 3.92% 100.24% EM(XM11.M1,U0)<br />

4 |-- 2.43% 102.67% EM(XM17.M1,TOX)<br />

10 |-- 2.41% 105.08% EM(XM13.M1,TOX)<br />

15 |- 1.50% 106.58% EM(XM14.M1,U0)<br />

26 |- 1.46% 108.04% EM(XM11.M1,VTH0)<br />

1 |- 1.42% 109.46% EM(XM16.M1,TOX)<br />

Simulation Results<br />

Figure 21-28. Example 17—Simulation Results<br />

Example 18—Numerical Integration: TRAP<br />

versus GEAR<br />

Netlist file: trap_vs_gear.cir<br />

This example compares the TRAP method with the GEAR method. The default TRAP method<br />

sometimes causes “numerical ringing” (non-physical oscillations) centered on the correct<br />

1314<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 18—Numerical Integration: TRAP versus GEAR<br />

average value. Sometimes even high accuracy and limitation of the timestep cannot totally<br />

prevent these numerical oscillations. In these cases, switching to the GEAR method is a possible<br />

remedy.<br />

Summary of Eldo commands used in this example:<br />

• .ALTER—Simulation rerun.<br />

Netlist Explanation<br />

.alter<br />

.option gear<br />

The above lines rerun the same simulation using GEAR method instead of the default TRAP<br />

method.<br />

Simulation Results<br />

Figure 21-29. Example 18—Simulation Results<br />

Eldo® User's Manual, 15.3 1315


Examples<br />

Example 19—DC Mismatch Comparison with Monte Carlo Analysis<br />

Example 19—DC Mismatch Comparison with<br />

Monte Carlo Analysis<br />

Netlist file: dcmismatch_contributors.cir<br />

This example shows how to use the DCMISMATCH analysis, and compares its results to an<br />

equivalent Monte Carlo analysis. You can refer to the .chi output file and look for the<br />

DCMISMATCH and Monte Carlo results respectively.<br />

Particularly, from the DCMISMATCH results, devices M1 and M2 are primarily responsible<br />

for the output offset distribution, whereas M17 and M16 have the greatest impact on power<br />

consumption.<br />

These results are confirmed by the fully non-linear .MC sensitivity analysis. You can also refer<br />

to the example dcmismatch_vs_mcsens.cir which shows how to compare the results of the two<br />

analyses using some simple ECL (Eldo Control Language) code.<br />

Summary of Eldo commands used in this example:<br />

• .DCMISMATCH—DC mismatch analysis.<br />

• .MC—Monte Carlo analysis.<br />

• .ALTER—Simulation rerun.<br />

• .EXTRACT—Extract characteristics from the simulator results.<br />

Netlist Explanation<br />

.EXTRACT DC LABEL=offset v(out)<br />

The above line specifies to extract the output offset voltage.<br />

.EXTRACT DC LABEL=power -i(vdd)*v(vdd)<br />

The above line specifies to extract the DC power consumption.<br />

.alter<br />

.DCMISMATCH nsigma=1<br />

.extract dc label= dcm_offset dcm(offset)<br />

.extract dc label= dcm_power dcm(power)<br />

The above lines rerun the same simulation using a DC mismatch analysis.<br />

.alter<br />

.mc 10000<br />

.extract mc label=mc_offset mcstd(offset)<br />

.extract mc label=mc_power mcstd(power)<br />

The above lines rerun the same simulation using a Monte Carlo analysis. The Monte Carlo<br />

sensitivity is run automatically.<br />

1316<br />

Eldo® User's Manual, 15.3


Simulation Results<br />

Examples<br />

Example 19—DC Mismatch Comparison with Monte Carlo Analysis<br />

Figure 21-30. Example 19—Simulation Results<br />

Results Comparison<br />

The extracted information from the DCMISMATCH results are as follows:<br />

* OFFSET = -3.5800E-04 Volts<br />

* POWER = 8.7764E-05 Watt<br />

* DCM_OFFSET = 6.0338E-03 Volts<br />

* DCM_POWER = 1.2859E-06<br />

The extracted information from the Monte Carlo results are as follows:<br />

* MC_OFFSET = 6.0033E-03<br />

* MC_POWER = 1.2706E-06<br />

Comparing the results shows the DCMISMATCH analysis and equivalent Monte Carlo analysis<br />

generate similar offset and power results.<br />

DCMISMATCH Results<br />

The full DCMISMATCH results are as follows:<br />

Eldo® User's Manual, 15.3 1317


Examples<br />

Example 19—DC Mismatch Comparison with Monte Carlo Analysis<br />

#.DCMISMATCH OFFSET SORT_REL = 1.000000e-03 NSIGMA = 1.000000e+00<br />

:<br />

:Analysis results:<br />

:<br />

:Output DC value : -3.5800E-04 Volts<br />

:Total output deviation<br />

: +/- 6.0338E-03 Volts<br />

:Output deviation due to the<br />

:contributors in the report table : +/- 6.0338E-03 Volts<br />

:<br />

:<br />

:<br />

:Report table<br />

:----------------------------------------<br />

:<br />

: Output deviation Contributor Parameter<br />

: 2.9358E-03 XM1.M1<br />

: 1.4441E-03 EM(XM1.M1,U0)<br />

: 2.5196E-03 EM(XM1.M1,VTH0)<br />

: 4.2981E-04 EM(XM1.M1,TOX)<br />

: 2.9345E-03 XM2.M1<br />

: 1.4422E-03 EM(XM2.M1,U0)<br />

: 2.5191E-03 EM(XM2.M1,VTH0)<br />

: 4.3088E-04 EM(XM2.M1,TOX)<br />

2.4853E-03<br />

XM3.M1<br />

1.7981E-03<br />

EM(XM3.M1,U0)<br />

1.6560E-03<br />

EM(XM3.M1,VTH0)<br />

4.4819E-04<br />

EM(XM3.M1,TOX)<br />

2.4439E-03<br />

XM4.M1<br />

1.7683E-03<br />

EM(XM4.M1,U0)<br />

1.6284E-03<br />

EM(XM4.M1,VTH0)<br />

4.4077E-04<br />

EM(XM4.M1,TOX)<br />

1.8849E-03<br />

XM8.M1<br />

1.0858E-03<br />

EM(XM8.M1,U0)<br />

1.4633E-03<br />

EM(XM8.M1,VTH0)<br />

4.8214E-04<br />

EM(XM8.M1,TOX)<br />

1.8585E-03<br />

XM7.M1<br />

1.0708E-03<br />

EM(XM7.M1,U0)<br />

1.4429E-03<br />

EM(XM7.M1,VTH0)<br />

4.7476E-04<br />

EM(XM7.M1,TOX)<br />

...<br />

1318<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 19—DC Mismatch Comparison with Monte Carlo Analysis<br />

#.DCMISMATCH POWER SORT_REL = 1.000000e-03 NSIGMA = 1.000000e+00<br />

Analysis results:<br />

Output DC value : 8.7764E-05 Watt<br />

Total output deviation<br />

: +/- 1.2859E-06 Watt<br />

Output deviation due to the<br />

contributors in the report table : +/- 1.2859E-06 Watt<br />

Report table<br />

----------------------------------------<br />

Output deviation Contributor Parameter<br />

7.0194E-07<br />

XM17.M1<br />

3.9387E-07<br />

EM(XM17.M1,U0)<br />

5.5264E-07<br />

EM(XM17.M1,VTH0)<br />

1.7937E-07<br />

EM(XM17.M1,TOX)<br />

7.0148E-07<br />

XM16.M1<br />

4.9576E-07<br />

EM(XM16.M1,U0)<br />

4.8544E-07<br />

EM(XM16.M1,VTH0)<br />

1.0313E-07<br />

EM(XM16.M1,TOX)<br />

6.1591E-07<br />

XM13.M1<br />

3.5212E-07<br />

EM(XM13.M1,U0)<br />

4.8175E-07<br />

EM(XM13.M1,VTH0)<br />

1.5256E-07<br />

EM(XM13.M1,TOX)<br />

4.5102E-07<br />

XM12.M1<br />

3.2720E-07<br />

EM(XM12.M1,U0)<br />

3.0011E-07<br />

EM(XM12.M1,VTH0)<br />

7.9330E-08<br />

EM(XM12.M1,TOX)<br />

2.5028E-07<br />

XM11.M1<br />

1.8945E-07<br />

EM(XM11.M1,U0)<br />

1.6110E-07<br />

EM(XM11.M1,VTH0)<br />

2.8193E-08<br />

EM(XM11.M1,TOX)<br />

1.0420E-07<br />

XM15.M1<br />

5.9224E-08<br />

EM(XM15.M1,U0)<br />

8.1720E-08<br />

EM(XM15.M1,VTH0)<br />

2.5943E-08<br />

EM(XM15.M1,TOX)<br />

...<br />

Monte Carlo Results<br />

The full Monte Carlo results are as follows:<br />

Eldo® User's Manual, 15.3 1319


Examples<br />

Example 19—DC Mismatch Comparison with Monte Carlo Analysis<br />

Distribution of OFFSET<br />

Range [-2.6290E-02 2.2602E-02] Volts<br />

Number of runs: 10000<br />

Nominal value: -3.5800E-04 Volts<br />

Average value: -3.0223E-04 Volts<br />

Standard Deviation: 6.0033E-03 Volts (1986.4%)<br />

Standard Deviation based on nominal run: 6.0036E-03 Volts (1677.0%)<br />

[ -26.37500M -21.47500M ] NB = 1 FREQ = 0.01% |<br />

[ -21.47500M -16.57500M ] NB = 32 FREQ = 0.32% |<br />

[ -16.57500M -11.67500M ] NB = 250 FREQ = 2.5% |*<br />

[ -11.67500M -6.77500M ] NB = 1126 FREQ = 11.3% |*****<br />

[ -6.77500M -1.87500M ] NB = 2560 FREQ = 25.6% |************<br />

[ -1.87500M 3.02500M ] NB = 3084 FREQ = 30.8% |***************<br />

[ 3.02500M 7.92500M ] NB = 2115 FREQ = 21.1% |**********<br />

[ 7.92500M 12.82500M ] NB = 687 FREQ = 6.87% |***<br />

[ 12.82500M 17.72500M ] NB = 122 FREQ = 1.22% |<br />

[ 17.72500M 22.62500M ] NB = 23 FREQ = 0.23% |<br />

Bootstrap Confidence Interval for OFFSET<br />

[--------- Average Value -------] [------- Standard Deviation ----]<br />

Level LeftLimit Estimate RightLimit LeftLimit Estimate RightLimit<br />

95.0000% -4.1870E-04 -3.0223E-04 -1.9015E-04 5.9270E-03 6.0036E-03 6.1124E-03<br />

99.0000% -4.4216E-04 -3.0223E-04 -1.6089E-04 5.9184E-03 6.0036E-03 6.1277E-03<br />

99.9000% -4.5041E-04 -3.0223E-04 -1.6023E-04 5.9115E-03 6.0036E-03 6.1304E-03<br />

99.9900% -4.5041E-04 -3.0223E-04 -1.6023E-04 5.9115E-03 6.0036E-03 6.1304E-03<br />

99.9990% -4.5041E-04 -3.0223E-04 -1.6023E-04 5.9115E-03 6.0036E-03 6.1304E-03<br />

Distribution of POWER<br />

Range [ 8.2877E-05 9.2169E-05] Watt<br />

Number of runs: 10000<br />

Nominal value: 8.7764E-05 Watt<br />

Average value: 8.7786E-05 Watt<br />

Standard Deviation: 1.2706E-06 Watt ( 1.4%)<br />

Standard Deviation based on nominal run: 1.2708E-06 Watt ( 1.4%)<br />

[ 82.75000U 83.70000U ] NB = 6 FREQ = 0.06% |<br />

[ 83.70000U 84.65000U ] NB = 52 FREQ = 0.52% |<br />

[ 84.65000U 85.60000U ] NB = 356 FREQ = 3.56% |*<br />

[ 85.60000U 86.55000U ] NB = 1276 FREQ = 12.8% |******<br />

[ 86.55000U 87.50000U ] NB = 2359 FREQ = 23.6% |***********<br />

[ 87.50000U 88.45000U ] NB = 2977 FREQ = 29.8% |**************<br />

[ 88.45000U 89.40000U ] NB = 1952 FREQ = 19.5% |*********<br />

[ 89.40000U 90.35000U ] NB = 811 FREQ = 8.11% |****<br />

[ 90.35000U 91.30000U ] NB = 176 FREQ = 1.76% |<br />

[ 91.30000U 92.25000U ] NB = 35 FREQ = 0.35% |<br />

Bootstrap Confidence Interval for POWER<br />

[-------- Average Value --------] [------- Standard Deviation ------]<br />

Level LeftLimit Estimate RightLimit LeftLimit Estimate RightLimit<br />

95.0000% 8.7765E-05 8.7786E-05 8.7812E-05 1.2543E-06 1.2706E-06 1.2895E-06<br />

99.0000% 8.7753E-05 8.7786E-05 8.7820E-05 1.2500E-06 1.2706E-06 1.2947E-06<br />

99.9000% 8.7744E-05 8.7786E-05 8.7823E-05 1.2498E-06 1.2706E-06 1.2962E-06<br />

99.9900% 8.7744E-05 8.7786E-05 8.7823E-05 1.2498E-06 1.2706E-06 1.2962E-06<br />

1320<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 19—DC Mismatch Comparison with Monte Carlo Analysis<br />

99.9990% 8.7744E-05 8.7786E-05 8.7823E-05 1.2498E-06 1.2706E-06 1.2962E-06<br />

1***** 9-Nov-2012 ************* ELDO 12.2 alpha1 (v7.8_1.1) **************17:06:53*******<br />

02-STAGES OPAMP<br />

0**** EXTRACT INFORMATION<br />

0**** TEMPERATURE = 2.7000E+01 Celsius<br />

0**** ICARLO = 10000<br />

0**** ALTER index 2<br />

0******************************************************************************************<br />

* MC_OFFSET = 6.0033E-03<br />

* MC_POWER = 1.2706E-06<br />

Estimation of Sensitivity Indices for Response Y : OFFSET<br />

Mode of Computation : fast<br />

Number of Runs : 10001<br />

Number of Random Variables : 51<br />

List of Important Parameters :<br />

Index(I) Histo S(I) (percent / cumulative) Variable<br />

Value<br />

Name<br />

29 |-------------------- 17.62% 17.62% EM(XM1.M1,VTH0)<br />

32 |------------------- 16.86% 34.47% EM(XM2.M1,VTH0)<br />

24 |---------- 9.27% 43.75% EM(XM4.M1,U0)<br />

21 |---------- 8.89% 52.64% EM(XM3.M1,U0)<br />

23 |-------- 7.34% 59.98% EM(XM4.M1,VTH0)<br />

20 |------- 6.62% 66.60% EM(XM3.M1,VTH0)<br />

30 |------ 6.04% 72.64% EM(XM1.M1,U0)<br />

33 |------ 5.82% 78.46% EM(XM2.M1,U0)<br />

47 |------ 5.65% 84.11% EM(XM8.M1,VTH0)<br />

44 |------ 5.40% 89.51% EM(XM7.M1,VTH0)<br />

48 |--- 3.49% 93.00% EM(XM8.M1,U0)<br />

45 |--- 3.22% 96.22% EM(XM7.M1,U0)<br />

46 | 0.78% 97.00% EM(XM8.M1,TOX)<br />

31 | 0.71% 97.71% EM(XM2.M1,TOX)<br />

19 | 0.62% 98.33% EM(XM3.M1,TOX)<br />

43 | 0.61% 98.94% EM(XM7.M1,TOX)<br />

28 | 0.58% 99.52% EM(XM1.M1,TOX)<br />

22 | 0.51% 100.03% EM(XM4.M1,TOX)<br />

39 | 0.17% 100.20% EM(XM5.M1,U0)<br />

4 | 0.13% 100.32% EM(XM17.M1,TOX)<br />

13 | 0.12% 100.44% EM(XM14.M1,TOX)<br />

Estimation of Sensitivity Indices for Response Y : POWER<br />

Mode of Computation : fast<br />

Number of Runs : 10001<br />

Number of Random Variables : 51<br />

List of Important Parameters :<br />

Index(I) Histo S(I) ( percent / cumulative) Variable<br />

Value<br />

Name<br />

5 |-------------------- 18.92% 18.92% EM(XM17.M1,VTH0)<br />

3 |-------------- 14.16% 33.08% EM(XM16.M1,U0)<br />

2 |-------------- 13.94% 47.02% EM(XM16.M1,VTH0)<br />

11 |-------------- 13.89% 60.92% EM(XM13.M1,VTH0)<br />

Eldo® User's Manual, 15.3 1321


Examples<br />

Example 20—DC Mismatch Comparison with Monte Carlo Analysis using ECL<br />

6 |--------- 8.92% 69.84% EM(XM17.M1,U0)<br />

12 |-------- 8.07% 77.90% EM(XM13.M1,U0)<br />

18 |------- 6.66% 84.56% EM(XM12.M1,U0)<br />

17 |----- 5.57% 90.14% EM(XM12.M1,VTH0)<br />

4 |-- 2.16% 92.30% EM(XM17.M1,TOX)<br />

27 |-- 2.06% 94.36% EM(XM11.M1,U0)<br />

10 |- 1.45% 95.80% EM(XM13.M1,TOX)<br />

26 |- 1.36% 97.17% EM(XM11.M1,VTH0)<br />

1 | 0.57% 97.73% EM(XM16.M1,TOX)<br />

16 | 0.33% 98.06% EM(XM12.M1,TOX)<br />

8 | 0.19% 98.25% EM(XM15.M1,VTH0)<br />

24 | 0.18% 98.43% EM(XM4.M1,U0)<br />

20 | 0.15% 98.58% EM(XM3.M1,VTH0)<br />

21 | 0.14% 98.72% EM(XM3.M1,U0)<br />

25 | 0.13% 98.85% EM(XM11.M1,TOX)<br />

19 | 0.13% 98.98% EM(XM3.M1,TOX)<br />

Example 20—DC Mismatch Comparison with<br />

Monte Carlo Analysis using ECL<br />

Netlist file: dcmismatch_vs_mcsens.cir<br />

This example shows how to use the DCMISMATCH analysis, and compares its results to an<br />

equivalent Monte Carlo analysis. It uses some ECL code to present the results in a compact<br />

format (this is written to the standard output).<br />

Please refer to the Eldo Control Language chapter and the ../examples/ecl directory for more<br />

ECL examples.<br />

Summary of Eldo commands used in this example:<br />

• .DCMISMATCH—DC mismatch analysis.<br />

• .MC—Monte Carlo analysis.<br />

• .EXTRACT—Extract characteristics from the simulator results.<br />

• Eldo Control Language.<br />

Netlist Explanation<br />

The netlist is similar to the previous example, except that the Eldo Control Language is used to<br />

run the simulations and extract the results in a compact format.<br />

.define_testbench dcm()<br />

.DCMISMATCH nsigma=1<br />

.extract dc label= dcm_offset dcm(offset)<br />

.extract dc label= dcm_power dcm(power)<br />

.end_define_testbench<br />

The above lines define the testbench to be used for the DCMISMATCH analysis including the<br />

information to be extracted.<br />

1322<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 20—DC Mismatch Comparison with Monte Carlo Analysis using ECL<br />

.define_testbench _mc(nb_mc_run=10)<br />

.mc nb_mc_run<br />

.extract mc label=mc_offset mcstd(offset)<br />

.extract mc label=mc_power mcstd(power)<br />

.end_define_testbench<br />

The above lines define the testbench to be used for the Monte Carlo analysis including<br />

information to be extracted.<br />

.define_task run()<br />

set dcm_offset=0<br />

set dcm_power=0<br />

set mc_offset=0<br />

set mc_power=0<br />

simulation( dcm(), dcm_power=@dcm_power, dcm_offset= @dcm_offset )<br />

simulation( _mc(nb_mc_run=500), mc_power=@mc_power, mc_offset=<br />

@mc_offset )<br />

The above lines define the task to be used for the DCMISMATCH and Monte Carlo analyses.<br />

fprint(stdout, "\nThis is an ECL-controlled simulation, comparing the<br />

global results of DCMISMATCH and MONTECARLO.\n")<br />

fprint(stdout, "The values reported below are the 1-sigma estimates of<br />

the offset and power quantities, as estimated with both methods.\n\n")<br />

fprint(stdout, "DC mismatch : offset : %e\n", dcm_offset)<br />

fprint(stdout, "DC mismatch : power : %e\n", dcm_power)<br />

fprint(stdout, "Monte Carlo : offset : %e\n", mc_offset)<br />

fprint(stdout, "Monte Carlo : power : %e\n", mc_power)<br />

.end_define_task<br />

The above lines specify the printing of the extracted results in a custom format.<br />

.run<br />

The above line executes the previously defined task named run.<br />

Simulation Results<br />

This is an ECL-controlled simulation, comparing the global results of<br />

DCMISMATCH and MONTECARLO.<br />

The values reported below are the 1-sigma estimates of the offset and<br />

power quantities, as estimated with both methods.<br />

DC mismatch : offset : 6.033827e-03<br />

DC mismatch : power : 1.285868e-06<br />

Monte Carlo : offset : 6.071414e-03<br />

Monte Carlo : power : 1.278497e-06<br />

Eldo® User's Manual, 15.3 1323


Examples<br />

Example 21—Post-Layout Simulation using DSPF<br />

Example 21—Post-Layout Simulation using<br />

DSPF<br />

Netlist file: dspf_backannotation.cir<br />

Additional files: dspf_opamp_follower.dspf and ./dspf_opamp_follower.models/lib.<strong>eldo</strong>.<br />

This example shows how to import a .dspf file containing layout parasitics. Using .ALTER<br />

statements, several simulations with different degrees of backannotation can be overlapped and<br />

compared. The circuit is a 2-stage opamp, connected in follower mode.<br />

Summary of Eldo commands used in this example:<br />

• .LIB—Library file.<br />

• .DSPF_INCLUDE—DSPF file inclusion.<br />

• .ALTER—Simulation rerun.<br />

Netlist Explanation<br />

.LIB key=MOS<br />

.LIB key=MOS_33<br />

./dspf_opamp_follower.models/lib.<strong>eldo</strong> TT<br />

./dspf_opamp_follower.models/lib.<strong>eldo</strong> TT_33<br />

The above lines define the location of the model libraries to be included.<br />

Vin IP GROUND DC 0V PULSE -0.6 0.6 10n 1n 1n 250n 500n<br />

The above line specifies the opamp is connected with the positive input (IP) driven with a pulsetype<br />

signal.<br />

.tran 1n 500n<br />

The above specifies a transient analysis is to be performed lasting 500ns with a plotting<br />

increment of 1ns.<br />

.option eps=1e-8 hmax=1n<br />

The above line specifies a high accuracy is required to catch the details of the overshoot<br />

waveform.<br />

.PROBE I V<br />

The above line specifies all current and voltage signals to be probed.<br />

.plot tran v(ip) v(op)<br />

The above line specifies that voltage/time plots should be performed of the input and output<br />

voltages at nodes ip and op respectively.<br />

1324<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 21—Post-Layout Simulation using DSPF<br />

.alter<br />

.DSPF_INCLUDE FILE=./dspf_opamp_follower.dspf DEV=DSPF<br />

+ LEVEL=C<br />

The nominal run is the pre-layout reference. The first .alter statement above runs the same<br />

simulation, but this time using post-layout information from the dspf_opamp_follower.dspf<br />

DSPF file (extracted from the opamp GDSII layout with Mentor Calibre xRC). Specifying<br />

DEV=DSPF means that we also use the Instance section of the .dspf file. The instance section<br />

basically contains the intentional devices (the MOS devices in this case). As the LEVEL is set<br />

to C, only the grounded capacitors are taken into account (more precisely, the compound<br />

capacitors indicated with the *|NET statements in the .dspf file are included). In this example<br />

there are 9 such capacitors. The output waveform V(OP) is slightly degraded (slower and less<br />

stable) compared to the pre-layout reference.<br />

.alter<br />

.DSPF_INCLUDE FILE=./dspf_opamp_follower.dspf DEV=DSPF<br />

+ LEVEL=RCC<br />

+ RMINVAL=0.1 CCMINVAL=0.001f<br />

In the second .alter statement the command is specified with a different filtering. As the LEVEL<br />

is set to RCC, the full DPSF content is used (all resistors, coupling and grounded capacitors).<br />

However we apply some clamping to the values of the resistors and coupling capacitors. All<br />

resistors smaller than 0.1 Ohm are ignored (shorted), and all coupling capacitors smaller than<br />

0.001fF are ignored. The output waveform V(OP) is marginally different compared to the<br />

previous case.<br />

Notice the notes that are generated relating to the replacement of nodes in the original netlist by<br />

DSPF networks:<br />

Note 70: Node X_OPAMP1.DIFFP has been replaced by a DSPF network.<br />

Note 70: Node X_OPAMP1.DIFFN has been replaced by a DSPF network.<br />

Note 70: Node X_OPAMP1.CURMIR has been replaced by a DSPF network.<br />

Eldo® User's Manual, 15.3 1325


Examples<br />

Example 21—Post-Layout Simulation using DSPF<br />

Simulation Results<br />

Figure 21-31. Example 21—Simulation Results 1<br />

1326<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 22—Extract Gain and Phase Margin of a 2-Stage Opamp<br />

Figure 21-32. Example 21—Simulation Results Zoom<br />

Example 22—Extract Gain and Phase Margin<br />

of a 2-Stage Opamp<br />

Netlist file: gain_phase_margins.cir<br />

This example shows how to extract the gain and phase margin for an opamp. The opamp is<br />

configured in open loop. The gain and phase margins are extracted in two different ways, to<br />

illustrate the capabilities of the .EXTRACT statements and functions.<br />

• The bandwidth is plotted versus the phase margin. With EZwave, open the<br />

gain_phase_margins.swd file.<br />

• The various extracted metrics are printed to a tabular output file.<br />

The simulation is stepped using the compensation capacitor as the parameter. The gain and<br />

phase margin quantities are automatically plotted versus the compensation capacitor value.<br />

Summary of Eldo commands used in this example:<br />

Eldo® User's Manual, 15.3 1327


Examples<br />

Example 22—Extract Gain and Phase Margin of a 2-Stage Opamp<br />

• .EXTRACT—Extract characteristics from the simulator results.<br />

• .PARAM—Global parameter setting.<br />

• .STEP—Sweeping parameters.<br />

Netlist Explanation<br />

.param pCX=0.2p<br />

.step param pCX DEC 10 0.01p 1p<br />

The .STEP statement is used to observe the impact of the compensation capacitance upon<br />

stability. The .EXTRACT quantities (see below) such as phase and margins are automatically<br />

plotted versus the swept parameter, pCX.<br />

.option nobound_phase<br />

The nobound_phase option can be used if you prefer a continuous phase plot. By default the<br />

phase plots are displayed modulo 360.<br />

.AC DEC 1000 1 100E6<br />

The above specifies a .AC statement to sweep the frequency from 1Hz to 100MHz.<br />

.PLOT AC VDB(OUT)<br />

.PLOT AC VP(OUT)<br />

The above lines specify that the output response is plotted in Bode format.<br />

.EXTRACT AC LABEL=MAX MAX(VDB(OUT))<br />

The above line specifies to extract the open loop gain.<br />

.EXTRACT AC LABEL=bandwidth 'CROSSING(VDB(OUT), -3)'<br />

The above line specifies to extract the 3db bandwidth.<br />

.EXTRACT ac label=phase_margin_1 {180 + xycond(vp(OUT), vdb(OUT) == 0)}<br />

.EXTRACT ac label=gain_margin_1 -xycond(vdb(OUT), vp(OUT) < -180)<br />

The above lines show the first compact method to extract the Gain and Phase margins, using the<br />

XYCOND() function.<br />

.EXTRACT AC label=unit_gain_freq crossing(vdb(OUT), 0)<br />

.EXTRACT AC label=phase_margin_2 180 - yval(vp(OUT), 1) + yval( vp(OUT),<br />

unit_gain_freq )<br />

.EXTRACT AC label=opp_phase_freq crossing(vp(OUT), -180)<br />

.EXTRACT AC label=gain_margin_2 -yval(vdb(OUT), opp_phase_freq)<br />

The above lines show the second method to extract the Gain and Phase margins, using explicit<br />

extraction of the zero-crossing and -180°-crossing frequencies.<br />

1328<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 22—Extract Gain and Phase Margin of a 2-Stage Opamp<br />

.plot extract extract(bandwidth) (versus) extract(phase_margin_2)<br />

The above line specifies to plot “compromise” graphs. For example, as the compensation<br />

capacitance is swept, you can view the bandwidth versus the phase margin.<br />

.option numdgt=3<br />

.printfile AC meas(*) file=opamp_margins.txt<br />

The .PRINTFILE statement is used to print results in tabular format to an ASCII file,<br />

opamp_margins.txt. The measurements from all the .EXTRACT statements are printed to the<br />

file. The NUMDGT option is specified to limit the number of decimals used when printing<br />

numbers.<br />

Simulation Results<br />

Figure 21-33. Example 22—Simulation Results 1<br />

Eldo® User's Manual, 15.3 1329


Examples<br />

Example 22—Extract Gain and Phase Margin of a 2-Stage Opamp<br />

Figure 21-34. Example 22—Simulation Results 2<br />

The following is the tabular format output generated in the ASCII file, opamp_margins.txt:<br />

1330<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 23—Parametric Sensitivity Analysis<br />

# PARAM PCX = 1.000000e-14<br />

:# TEMPERATURE = 2.700000e+01<br />

:# X MEAS(MAX) MEAS(BANDWIDTH) MEAS(PHASE_MARGIN_1) MEAS(GAIN_MARGIN_1) MEAS(UNIT_GAIN_FREQ)<br />

MEAS(PHASE_MARGIN_2) MEAS(OPP_PHASE_FREQ) MEAS(GAIN_MARGIN_2)<br />

:1.000e-14 7.239e+01 5.542e+07 4.868e+00 3.995e+00 4.648e+07 4.869e+00 5.873e+07 3.995e+00<br />

:<br />

:<br />

:# PARAM PCX = 1.258925e-14<br />

:# TEMPERATURE = 2.700000e+01<br />

:# X MEAS(MAX) MEAS(BANDWIDTH) MEAS(PHASE_MARGIN_1) MEAS(GAIN_MARGIN_1) MEAS(UNIT_GAIN_FREQ)<br />

MEAS(PHASE_MARGIN_2) MEAS(OPP_PHASE_FREQ) MEAS(GAIN_MARGIN_2)<br />

:1.259e-14 7.239e+01 5.320e+07 6.736e+00 5.175e+00 4.456e+07 6.737e+00 6.042e+07 5.175e+00<br />

:<br />

:<br />

:# PARAM PCX = 1.584893e-14<br />

:# TEMPERATURE = 2.700000e+01<br />

:# X MEAS(MAX) MEAS(BANDWIDTH) MEAS(PHASE_MARGIN_1) MEAS(GAIN_MARGIN_1) MEAS(UNIT_GAIN_FREQ)<br />

MEAS(PHASE_MARGIN_2) MEAS(OPP_PHASE_FREQ) MEAS(GAIN_MARGIN_2)<br />

:1.585e-14 7.239e+01 5.071e+07 8.906e+00 6.381e+00 4.241e+07 8.907e+00 6.187e+07 6.381e+00<br />

:<br />

:<br />

:# PARAM PCX = 1.995262e-14<br />

:# TEMPERATURE = 2.700000e+01<br />

:# X MEAS(MAX) MEAS(BANDWIDTH) MEAS(PHASE_MARGIN_1) MEAS(GAIN_MARGIN_1) MEAS(UNIT_GAIN_FREQ)<br />

MEAS(PHASE_MARGIN_2) MEAS(OPP_PHASE_FREQ) MEAS(GAIN_MARGIN_2)<br />

:1.995e-14 7.239e+01 4.797e+07 1.140e+01 7.594e+00 4.003e+07 1.140e+01 6.297e+07 7.594e+00<br />

:<br />

:<br />

:# PARAM PCX = 2.511886e-14<br />

:# TEMPERATURE = 2.700000e+01<br />

:# X MEAS(MAX) MEAS(BANDWIDTH) MEAS(PHASE_MARGIN_1) MEAS(GAIN_MARGIN_1) MEAS(UNIT_GAIN_FREQ)<br />

MEAS(PHASE_MARGIN_2) MEAS(OPP_PHASE_FREQ) MEAS(GAIN_MARGIN_2)<br />

2.512e-14 7.239e+01 4.501e+07 1.423e+01 8.791e+00 3.746e+07 1.423e+01 6.360e+07 8.791e+00<br />

# PARAM PCX = 3.162278e-14<br />

# TEMPERATURE = 2.700000e+01<br />

# X MEAS(MAX) MEAS(BANDWIDTH) MEAS(PHASE_MARGIN_1) MEAS(GAIN_MARGIN_1) MEAS(UNIT_GAIN_FREQ)<br />

MEAS(PHASE_MARGIN_2) MEAS(OPP_PHASE_FREQ) MEAS(GAIN_MARGIN_2)<br />

3.162e-14 7.239e+01 4.187e+07 1.741e+01 9.952e+00 3.472e+07 1.742e+01 6.369e+07 9.952e+00<br />

...<br />

...<br />

Example 23—Parametric Sensitivity Analysis<br />

Netlist file: sensitivity_parametric.cir<br />

This example shows how to use the .SENSPARAM analysis. This parametric sensitivity<br />

analysis computes the sensitivity of the output metrics (all the .EXTRACT statements) to<br />

selected subcircuit parameters. The example is an opamp whose MOS geometries are<br />

parameterized. A transient analysis is setup to compute the relative overshoot of the output<br />

signal (the opamp is connected in voltage follower configuration, and driven with a pulse type<br />

Eldo® User's Manual, 15.3 1331


Examples<br />

Example 23—Parametric Sensitivity Analysis<br />

signal). The .SENSPARAM command computes the absolute and relative sensitivities of the<br />

overshoot to the MOS geometries (see .SENSPARAM statement in this netlist).<br />

Notice that .SENSPARAM is a “brute force” sensitivity analysis (it uses simple numerical<br />

differences) and thus is less efficient as the duration of the analysis and/or the number of<br />

parameters increase, but is applicable to any type of circuit and analyses.<br />

Note<br />

The circuit in this example is similar to that in Example 21—Post-Layout Simulation using<br />

DSPF.<br />

Summary of Eldo commands used in this example:<br />

• .LIB—Library file.<br />

• .SENSPARAM—Parametric sensitivity analysis.<br />

• .EXTRACT—Extract characteristics from the simulator results.<br />

Netlist Explanation<br />

.LIB key=MOS<br />

.LIB key=MOS_33<br />

./dspf_opamp_follower.models/lib.<strong>eldo</strong> TT<br />

./dspf_opamp_follower.models/lib.<strong>eldo</strong> TT_33<br />

The above lines define the location of the model libraries to be included.<br />

Vin IP GROUND DC 0V PULSE -0.6 0.6 10n 1n 1n 250n 500n<br />

The above line specifies the opamp is connected with the positive input (IP) driven with a pulsetype<br />

signal.<br />

.tran 1n 500n<br />

The above specifies a transient analysis is to be performed lasting 500ns with a plotting<br />

increment of 1ns.<br />

.option eps=1e-8 hmax=1n simudiv=0<br />

The above line specifies a high accuracy is required to catch the details of the overshoot<br />

waveform.<br />

.PROBE I V<br />

The above line specifies all current and voltage signals to be probed.<br />

.plot tran v(ip) v(op)<br />

The above line specifies that voltage/time plots should be performed of the input and output<br />

voltages at nodes ip and op respectively.<br />

1332<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 23—Parametric Sensitivity Analysis<br />

.extract tran label=overshoot (max(v(op)) - 0.6) / 0.6 * 100<br />

The above line specifies to extract the relative overshoot value.<br />

.sensparam subckt=opamp inst=x_opamp1 param=w1,w2,w4,w5,w7 sort=dec<br />

variation=1%<br />

The .SENSPARAM statement triggers computation of the sensitivities of the .EXTRACT<br />

quantities to parameters “w1,w2,w4,w5 and w7” of instance “x_opamp1.” The results are<br />

presented in decreasing order, and the increment used for sensitivity calculation is 1%. The<br />

results appear in the table at the end of the output .chi file.<br />

Simulation Results<br />

Figure 21-35. Example 23—Simulation Results<br />

The following are the parametric sensitivity analysis results, in decreasing order:<br />

Eldo® User's Manual, 15.3 1333


Examples<br />

Example 24—Cell Characterization: Setup Time Extraction<br />

* OVERSHOOT NOM: 6.9442E+00<br />

*| Absolute Relative Parameter Parameter Parameter<br />

*| Sensitivity Sensitivity (%/%) Nominal Value Variation Name<br />

*| 1.7559E+06 2.5286E+00 1.00000e-05 1.000e+00% X_OPAMP1.W4<br />

*| -9.2694E+05 -1.3348E+00 1.00000e-05 1.000e+00% X_OPAMP1.W5<br />

*| 9.0192E+04 2.5976E-01 2.00000e-05 1.000e+00% X_OPAMP1.W1<br />

*| -9.1152E+04 -1.5752E-01 1.20000e-05 1.000e+00% X_OPAMP1.W7<br />

*| 3.6566E+04 1.3164E-01 2.50000e-05 1.000e+00% X_OPAMP1.W2<br />

Example 24—Cell Characterization: Setup<br />

Time Extraction<br />

Netlist file: extract_setup_time_passfail.cir<br />

This example shows how to extract the setup time of a D-type flip-flop, using the pass-fail<br />

method of the built-in optimizer in Eldo. This example contains lots of comments to explain the<br />

simulation commands.<br />

Summary of Eldo commands used in this example:<br />

• .OPTIMIZE—Optimize circuit parameters.<br />

• .PARAMOPT—Specifies the optimizer design variables.<br />

• .EXTRACT—Extract characteristics from the simulator results.<br />

Netlist Explanation<br />

xdff out nout in ck nr vss vdd dspc_ff<br />

The above line defines the circuit, a simple flip-flop.<br />

.param tck=20n<br />

.param trf=0.1n<br />

vnr nr 0 pwl 0 ps 1n 0 2n 0 3n ps<br />

vin in 0 pwl 0 0 'tck-ts' 0 'tck-ts+trf' ps<br />

vck ck 0 pwl 0 ps 'tck' ps 'tck+trf' 0<br />

The above lines specify the parameterized input signals, specifically the IN input and the CK<br />

input.<br />

.tran 1n 100n<br />

The above specifies a transient analysis is to be performed lasting 100ns with a plotting<br />

increment of 1ns.<br />

.option eps=2e-8<br />

The above line specifies a tightened accuracy to measure delays in picoseconds. Note that this<br />

value for EPS triggers a (normal) warning 382, stating that the value is unusually small.<br />

1334<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 24—Cell Characterization: Setup Time Extraction<br />

.option mtfile<br />

The above line forces the creation of a .mt0 file, where the final values of all measurements<br />

(including ts) can be read (view extract_setup_time_passfail.mt0).<br />

.plot tran v(in) v(ck) v(out)<br />

The above line specifies that voltage/time plots should be performed of the inputs and output<br />

voltages at nodes in, ck and out respectively.<br />

.extract tran label=tp (xup(v(out), 'ps/2', 0n, 100n, 1) - xdown(v(ck),<br />

'ps/2', 0n, 100n, 1))<br />

The above line specifies to extract the tp variable, which is the delay between the clock edge<br />

and the output signal edge.<br />

.optimize method=passfail results=tp relin=0.001<br />

.paramopt ts=(1n, -5n, 5n)<br />

The above lines specify the .OPTIMIZE command is used with the passfail method. The goal is<br />

the tp variable, and the variable to optimize is ts (the setup time)<br />

The command is very compact and requires further explanation:<br />

The parameter to optimize is defined with the .PARAMOPT statement: it is the value of the<br />

setup time ts (see the VIN source definition). If the edge of the IN signal occurs early enough,<br />

the flip-flop will be able to sample the input data. If it is too late (too close to the clock edge),<br />

the flip-flop will not be able to sample the data and the output will not switch. The purpose of<br />

the setup time extraction is to find the exact transition between these two behaviors, using a<br />

dichotomy algorithm on the input optimization variable (tin in this example). A dichotomy<br />

algorithm find a solution by dividing in half the search interval at each iteration.<br />

As in any numerical root-finding algorithm, it is very important to feed the command with<br />

initial values that 'bracket' the solution. Eldo will start anyway by verifying that the lowest value<br />

corresponds to a 'pass', and the highest value corresponds to a 'fail' situation (you can easily see<br />

this if you look into the standard output of the simulation). In this example, we use the interval<br />

[-5n 5n] for the initial bracketing of 'ts'. If the edge happens at tck-5n, we are sure that the setup<br />

time will be respected, and it will thus be a 'pass'. If it only happens at tck+5n (well after the<br />

clock edge) we are sure that the setup time will be violated and thus the flip-flop will 'fail' (the<br />

output will not toggle).<br />

To minimize the number of iterations, it is of course desirable to use an initial bracketing<br />

interval that is as narrow as possible. This requires a priori knowledge of the circuit, and needs<br />

to be indicated by the <strong>user</strong>, Eldo cannot completely 'guess' it.<br />

The iterations will find the value of the parameter to 'optimize', that is 'ts', which corresponds to<br />

the transition from 'pass' to 'fail'. The 'ts' value that corresponds to this pass/fail transition is<br />

nothing but the desired setup time.<br />

Eldo® User's Manual, 15.3 1335


Examples<br />

Example 24—Cell Characterization: Setup Time Extraction<br />

The 'relin' optional parameter on the .optimize command specifies the required relative accuracy<br />

on the optimization variable (directly 'ts' in this example). The default value is 0.001 (0.1%).<br />

In this example, the dichotomy will converge in about 10 iterations, and yield a setup time of<br />

136ps.<br />

Be careful that using unreasonable accuracy may lead to numerous iterations. Also note that the<br />

simulation accuracy itself (as defined with the .option eps=) has to be consistent with the<br />

required optimization accuracy. There is no point asking for 0.01% accuracy on the setup time if<br />

the simulations are only 1-5% accurate because you use a very loose eps value.<br />

Simulation Results<br />

Figure 21-36. Example 24—Simulation Results<br />

1336<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 25—Setting up and Handling Analog Busses<br />

Figure 21-37. Example 24—Simulation Results Zoom<br />

The following are the final values of all measurements (including ts) generated in ASCII file<br />

extract_setup_time_passfail.mt0:<br />

$DATA1 SOURCE='ELDO' VERSION='ELDO 12.1 engr1'<br />

.TITLE 'setup time extraction'<br />

index ts tp temper alter#<br />

1.0000 -5.000e-09 failed 27.0000 1.0000<br />

1.0000 1.270e-10 2.167e-10 27.0000 1.0000<br />

Example 25—Setting up and Handling Analog<br />

Busses<br />

Netlist file: sigbus_plotbus.cir<br />

This example is a 4-bit CMOS adder. One of the inputs is generated with a .SIGBUS command.<br />

Eldo has some provisions to handle busses and thus simplify notation issues throughout the<br />

netlist. For example, you can easily define busses, plot them, use digital patterns to define their<br />

values if they are input signals, check them against their expected values, and so on.<br />

Eldo® User's Manual, 15.3 1337


Examples<br />

Example 25—Setting up and Handling Analog Busses<br />

Tip<br />

Refer to the .SIGBUS, .PLOTBUS, .SETBUS, and .CHECKBUS commands in the Eldo<br />

Reference Manual.<br />

Summary of Eldo commands used in this example:<br />

• .INCLUDE—Library file.<br />

• .SETBUS—Create a bus.<br />

• .SIGBUS—Set signals on a bus.<br />

• .PLOTBUS—Plot bits of a bus.<br />

• .CHECKBUS—Check bus values.<br />

Netlist Explanation<br />

.include bsim46.lib<br />

The above line includes the contents of the library file bsim46.lib in the netlist.<br />

.SETBUS A A<br />

The above line defines a bus A as the vector a.<br />

.SIGBUS A<br />

+ vhi=ps vlo=0<br />

+ base=dec signed=2comp<br />

+ trise=trf tfall=trf thold=per<br />

+ pattern 1 3 5 4 0 -2 -5 2 3 5 6 -1<br />

The A input bus is generated using a .SIGBUS command with the following:<br />

• The bits of the bus toggle between vlo and vhi.<br />

• The rise/fall times and period are defined with trise, tfall and thold.<br />

• The bus values will be given in decimal, and the coding will be in 2’s complement.<br />

• Finally the successive values of the bus are given with the pattern keyword.<br />

.SETBUS B B<br />

.SETBUS S S<br />

The above lines define busses B and S:<br />

.PLOTBUS A VTH=0.6 BASE=DEC RADIX=2COMP<br />

.PLOTBUS B VTH=0.6 BASE=DEC RADIX=2COMP<br />

.PLOTBUS S VTH=0.6 BASE=DEC RADIX=2COMP<br />

The above lines plot the busses, using half/vdd as the threshold, in decimal notation.<br />

1338<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 26—Spectre Compatibility Example<br />

.PLOT TRAN V(S)<br />

.PLOT TRAN V(S)<br />

.PLOT TRAN V(S)<br />

.PLOT TRAN V(S)<br />

The above lines plot the individual bits of output bus S.<br />

Simulation Results<br />

Figure 21-38. Example 25—Simulation Results<br />

Example 26—Spectre Compatibility Example<br />

Netlist file: spectre_compatibility.scs<br />

Additional file: ./spectre_compatibility.models.scs.lib<br />

This example is a Spectre formatted netlist. You need to use the -sp command-line flag to<br />

simulate this netlist with Eldo.<br />

<strong>eldo</strong> -sp spectre_compatibility.scs<br />

The .scs netlist and all included files are converted on-the-fly to Eldo native format and<br />

simulated. You can check the converted input to Eldo in the .spectre_compatibility_input<br />

directory.<br />

Eldo® User's Manual, 15.3 1339


Examples<br />

Example 27—Monte Carlo Analysis Autostop<br />

Eldo supports most Spectre netlist constructs, but not all analyses and commands. For further<br />

information refer to the topic “Spectre Compatibility” on page 179.<br />

Summary of Eldo commands used in this example:<br />

• Spectre compatibility.<br />

Simulation Results<br />

Figure 21-39. Example 26—Simulation Results<br />

Example 27—Monte Carlo Analysis Autostop<br />

Netlist file: monte_carlo_autostop.cir<br />

This circuit illustrates the autostop feature of Monte Carlo analysis. Eldo can automatically stop<br />

the MC simulation when a preset accuracy condition is met. This can be much more efficient<br />

than setting an arbitrarily fixed number of runs. In this case we setup the analysis so that a<br />

prescribed relative accuracy is reached for the standard deviation of the 3dB bandwidth of the<br />

circuit (a simple opamp in follower mode). In this example, the process should stop after<br />

approximately 800 samples.<br />

Summary of Eldo commands used in this example:<br />

1340<br />

Eldo® User's Manual, 15.3


Examples<br />

Example 27—Monte Carlo Analysis Autostop<br />

• .AC—AC analysis.<br />

• .MC—Monte Carlo analysis.<br />

• .EXTRACT—Extract characteristics from the simulator results.<br />

• .PLOT—Plot simulator results.<br />

Netlist Explanation<br />

.ac dec 1000 1e6 100e6<br />

The above lines indicate that an AC analysis should be performed on the circuit within the<br />

frequency range 1MHz to 100MHz with 1000 steps per decade.<br />

.mc 2000 all nbbins=50 autostop=std_max_conv<br />

The Monte Carlo command specifies 2000 runs as a hard stop. Eldo will add samples until the<br />

autostop condition std_max_conv is met or the 2000 samples limit is reached. Parameter<br />

nbbins=50 is used to obtain better histograms.<br />

.extract ac label=bandwidth 'crossing(vdb(out), -3) / 10e6'<br />

.extract ac label=max_gain max(vm(out))<br />

.extract dc label=ivdd i(vdd)<br />

The above lines extraction the metrics of interest: maximum gain (at overshoot) and 3dB<br />

bandwidth.<br />

.param stdev_confidence=0.95<br />

.param stdev_abs_accuracy=0.00<br />

.param stdev_rel_accuracy=0.05<br />

The above parameters are passed to the mcconv function. The requirement is 5% relative<br />

accuracy, with 95% confidence level.<br />

.extract MC label=std_max_conv<br />

+ mcconv(bandwidth, STD, CONFIDENCE, 50,<br />

+ stdev_confidence, stdev_abs_accuracy, stdev_rel_accuracy)<br />

+ visible=no<br />

This extract is referenced as the austop condition in the .MC command. We look for 5% relative<br />

accuracy on the standard deviation of bandwidth, with 95% confidence level. 50 pilot runs are<br />

used to feed the CONFIDENCE algorithm.<br />

.extract MC label=meanv_bandwidth_MEAN_VALUE<br />

.extract MC label=stdev_bandwidth_CI_95p_INF<br />

+ '(1-stdev_rel_accuracy) * mcstd(bandwidth)'<br />

.extract MC label=stdev_bandwidth_ESTIMATION<br />

.extract MC label=stdev_bandwidth_CI_95p_SUP<br />

+ '(1+stdev_rel_accuracy) * mcstd(bandwidth)'<br />

'mcavg(bandwidth)'<br />

'mcstd(bandwidth)'<br />

Eldo® User's Manual, 15.3 1341


Examples<br />

Example 27—Monte Carlo Analysis Autostop<br />

These additional extracts are simply used to display the standard deviation estimate, and the<br />

lower/upper limits of the obtained confidence interval.<br />

.plot ac vdb(out) vp(out)<br />

A dB/frequency plot and phase/frequency plot of the voltage at node out are requested.<br />

Tip<br />

For more information on Monte Carlo analysis, refer to “Monte Carlo Analysis” on<br />

page 265.<br />

Simulation Results<br />

Figure 21-40. Example 27—Simulation Results<br />

The extract results of the standard deviation estimate, and the lower/upper limits of the obtained<br />

confidence interval are as follows:<br />

* MEANV_BANDWIDTH_MEAN_VALUE = 2.196<br />

* STDEV_BANDWIDTH_CI_95P_INF = 19.500M<br />

* STDEV_BANDWIDTH_ESTIMATION = 20.527M<br />

* STDEV_BANDWIDTH_CI_95P_SUP = 21.553M<br />

1342<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

Tutorial—Using Power Analysis for Static<br />

Leakage Analysis of a PLL Circuit<br />

Netlist file: power_analysis/Power_Analysis_PLL.cir<br />

In this tutorial you will use the Eldo power analysis to visualize the power consumption of a<br />

PLL design and its components.<br />

The tutorial demonstrates how to visualize the static leakage of a PLL. To do this, the VDD<br />

supply is set to 1V with all other inputs set to 0V (see Figure 21-41), and then the power<br />

consumption is checked.<br />

Video<br />

To watch this tutorial, see the video Power Analysis.<br />

The following files are provided for this tutorial in the power_analysis directory:<br />

• Power_Analysis_PLL.cir — Main Eldo netlist file. (The PLL circuit is encrypted.)<br />

• PLL_UVM_SUBCKT.include.crypt — Encrypted subckt definitions.<br />

• bsim46.corners.lib.crypt — Encrypted BSIM4 model file.<br />

• dspc_cmos.lib.crypt — Encrypted subckt definitions.<br />

Figure 21-41. PLL Circuit for Power Analysis<br />

Eldo® User's Manual, 15.3 1343


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

Prerequisites<br />

• Copy the power_analysis example directory into your working directory by entering the<br />

following UNIX shell command:<br />

cp -r $MGC_AMS_HOME/examples/power_analysis .<br />

Procedure<br />

1. The Power_Analysis_PLL.cir main netlist file is delivered with the .power_analysis<br />

command already specified. Run Eldo on the netlist:<br />

<strong>eldo</strong> Power_Analysis_PLL.cir<br />

2. After the simulation is complete, launch EZwave and open the generated output file<br />

Power_Analysis_PLL.wdb:<br />

ezwave Power_Analysis_PLL.wdb<br />

In the Waveform List panel, expand the Power_Analysis_PLL root folder and you will<br />

see two folders called POWER_TRAN and TRAN.<br />

The POWER_TRAN folder contains all the necessary waveforms used by the Power<br />

Analysis tool. The TRAN folder contains all the usual waveforms related to voltages/<br />

currents.<br />

3. Start the Power Analysis to identify which PLL components consume power. Expand<br />

the POWER_TRAN/Power_Analysis_PLL folder, right-click the XPLL subfolder and<br />

choose Power Analysis from the popup menu:<br />

This opens the Power Analysis dialog box:<br />

1344<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

4. Click Analyze at the bottom of the dialog box. The Power Table field is populated with<br />

the power consumption results from the design:<br />

Eldo® User's Manual, 15.3 1345


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

This shows each component of the PLL and the average consumption of each.<br />

5. Click the Avg column header to re-order the power contributors from the largest<br />

consumer to the smallest:<br />

1346<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

The Power Table displays a total average power consumption of 741μW for the entire<br />

PLL design, with 173μW consumed by the XPD block, 166μW by the XTEST block,<br />

and 141μW by the XLD block.<br />

Click Close to close the Power Analysis dialog box.<br />

6. Next we will refine the analysis to the PLL block XPD. From the EZwave Waveform<br />

List panel, expand the XPLL folder, right-click on the XPD subfolder and choose Power<br />

Analysis from the popup menu:<br />

Eldo® User's Manual, 15.3 1347


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

A new Power Analysis dialog box opens. Click Analyze to obtain the Power Table<br />

results:<br />

1348<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

The color scaling range is set by default to the maximum average value for 100%<br />

(173μW) and the minimum Average value for 0% (486pW). In our example, there are<br />

multiple contributors around 10%, as indicated in the blue colors.<br />

7. Edit the fields Max. Avg value and Min. Avg value (highlighted in yellow above),<br />

changing them to 15u and 5u respectively, then press the Return key.<br />

The Power Table results are updated. This helps you read the power map while reducing<br />

the scaling range from 173μW to 10μW. The color map changes from all blue to<br />

orange-green-blue enabling you to refine your search more easily.<br />

Eldo® User's Manual, 15.3 1349


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

8. You will now identify which active devices are the largest consumers for the XPD<br />

block.<br />

Click the List tab, the Power Table results are updated displaying the full names in the<br />

Name column.<br />

Right-click on the Mode column, uncheck All and choose MOS.<br />

Click the Avg column to re-order the power contributors from the largest consumer to<br />

the smallest. The Power Table results are updated, where you can easily see that MOS<br />

transistor XPD.X12.M4 is the largest consumer with 11.71μW:<br />

1350<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

9. Select the XPD.X12.M4 MOS instance, right-click and select Plot from the popup<br />

menu.<br />

In EZwave, the waveform is plotted (you might need to move the Power Analysis<br />

window to one side to show the waveform window). You can see the evolution of the<br />

power consumed by the MOS transistor as a function of time.<br />

Eldo® User's Manual, 15.3 1351


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

You can observe the peak consumption occurs before 0.1μs, at around 50ns to be more<br />

precise. In the next step, the power analysis is refined to this time window.<br />

10. In the Power Analysis dialog box, edit the time window in the Analysis field by setting<br />

X Start = 53.5n and X Stop = 55n, then press the Return key.<br />

The Power Table automatically updates with the results shown (you might need to scroll<br />

down to see the color coded results of interest):<br />

1352<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

You can see there are many entries without a color code, because the color scaling set in<br />

step 7 does not match the results obtained now for the time window [53.5ns - 55ns].<br />

11. Adjust these settings to the new results by editing the Color Scaling values. Set the Max.<br />

Avg value field to 40μW and the Min. Avg value field to 1μW, then press the Return<br />

key.<br />

The Power Table results are updated, with more relevant color codes (compared to<br />

above):<br />

Eldo® User's Manual, 15.3 1353


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

12. Next you will interactively update the Power Table results based on the time window<br />

you adjusted from EZwave.<br />

As we will interact with EZwave and visualize the power results in the Power Analysis<br />

dialog box, it is recommended that you position both windows next to each other.<br />

You may have noticed the Power Analysis tool has automatically displayed a new wave,<br />

which represents the average power consumption for block XPD.<br />

In EZwave, zoom in on the power peaks in order to obtain the display shown:<br />

1354<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

13. In the bottom wave you can see two cursors, which indicate the Power Analysis range<br />

set in step 10 (with time range 53.5ns - 55ns). Select the cursor on the left and drag it to<br />

the right in order to reduce the Power Analysis time window. While doing so, you will<br />

notice that the Power Analysis table automatically recomputes the power. Move the two<br />

cursors in order to obtain a time range from 54.3ns to 55ns, then you will observe the<br />

following results:<br />

Eldo® User's Manual, 15.3 1355


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

14. In this last part of the tutorial you will reduce the slope of the power supply ramp and<br />

observe the impact of this change on the power consumption.<br />

Edit the main netlist Power_Analysis_PLL.cir in your preferred text editor, and change<br />

the value of the parameter trise (used by the VDD voltage source) from 1ps to 900ns, as<br />

shown below (comment and uncomment the lines in the netlist accordingly):<br />

*.param pvdd=1 trise=1p<br />

.param pvdd=1 trise=900n<br />

Because we want to primarily analyze the impact of this change on the XPD block,<br />

refine the power analysis by updating the Eldo command with the following change to<br />

filter on the name xpd (comment and uncomment the lines in the netlist accordingly):<br />

*.power_analysis<br />

.power_analysis filter(name)=xpd<br />

15. Re-run Eldo and open the file Power_Analysis_PLL.wdb in EZwave. Repeat the actions<br />

described in steps 3 and 4 to run a power analysis on the PLL design. You will obtain the<br />

following result:<br />

1356<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—Using Power Analysis for Static Leakage Analysis of a PLL Circuit<br />

As shown, the Power Analysis tool has been automatically configured to filter the Name<br />

column with the XPD block as specified in the SPICE netlist (.power_analysis<br />

filter(name)=xpd).<br />

The power consumption of block XPD has decreased from 173μW (see step 6) to<br />

217nW (here) by reducing the slope of the power supply ramp from 1ps to 900ns.<br />

Results<br />

This tutorial showed how to use the Eldo .POWER_ANALYSIS command to visualize the<br />

power consumption of a PLL design for the whole circuit and for the phase detector.<br />

Eldo® User's Manual, 15.3 1357


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

With the help of the EZwave Power Analysis tool, you have analyzed the power contribution<br />

for MOS devices and then refined those for a specific time window, while observing the<br />

instantaneous power at block level and device level.<br />

Tip<br />

See “.POWER_ANALYSIS” in the Eldo Reference Manual.<br />

See “Analyzing Power Consumption” in the EZwave User’s and Reference Manual.<br />

Tutorial—High Impedance Fault Detection of a<br />

PLL Circuit<br />

Netlist file: hiz/HiZ_PLL.cir<br />

In this tutorial you will use the Eldo .HiZ commands to detect high impedance faults on a PLL<br />

design and its components. You will gain familiarity with the HiZ configuration commands, the<br />

impedance plots, and you will also use the AMS Results Browser to refine HiZ results.<br />

The tutorial demonstrates how to detect “abnormal” high impedance values on the PLL input<br />

control (see Figure 21-42 PLL input TPROG1), causing a PLL failure. You will then fix this<br />

problem and use HiZ configurations to detect “expected” high impedance values on the Charge<br />

Pump output (see Figure 21-42 PLL internal net INVCO).<br />

Note<br />

The PLL circuit in this tutorial is encrypted.<br />

The following files are provided for this tutorial in the hiz directory:<br />

• HiZ_PLL.cir — Main Eldo netlist file.<br />

• PLL_UVM_SUBCKT.include.crypt — Encrypted subckt definitions.<br />

• bsim46.corners.lib.crypt — Encrypted BSIM4 model file.<br />

• dspc_cmos.lib.crypt — Encrypted subckt definitions.<br />

• dspf_pll_v01.dspf — Parasitic information in DSPF for backannotation.<br />

1358<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

Figure 21-42. PLL Circuit for HiZ Fault Detection<br />

Prerequisites<br />

• Copy the hiz example directory into your working directory by entering the following<br />

UNIX shell command:<br />

cp -r $MGC_AMS_HOME/examples/hiz .<br />

Procedure<br />

1. The HiZ_PLL.cir main netlist file contains a measurement of PLL output period labeled<br />

PERIOD_PLL. In the first part of the lab (steps 1 to 5) the PLL is not working and<br />

therefore its output (net OUT400M) is flat 0.<br />

Run Eldo on the netlist:<br />

<strong>eldo</strong> HiZ_PLL.cir<br />

After the simulation is complete, you will see the following message at the end of the<br />

simulation (in the terminal and in the ASCII .chi output file):<br />

PERIOD_PLL cannot be measured. Check your input netlist.<br />

The netlist already contains the .hiz command to generate HiZ detection for all the<br />

nodes that exceed 1e8 ohms and stores them in a dedicated high impedance detection<br />

file named HiZ_ALL.hiz. Command:<br />

Eldo® User's Manual, 15.3 1359


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

.hiz file=HiZ_ALL.hiz r=1e8<br />

2. Open the HiZ_ALL.hiz file with the AMS Results Browser using the command:<br />

amsrb HiZ_ALL.hiz<br />

You will see a table of results, each row in the table displays information about a high<br />

impedance detection:<br />

3. Click twice on the Impedance Average column header (highlighted in yellow) to list<br />

the results in decreasing order, then you will see the following:<br />

1360<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

4. From the table, it is easy to find out which nodes have the highest average impedance<br />

values. The first instance in the list points to the PLL input control node TPROG1_1,<br />

which is a subnode inserted through DSPF backannotation. In second and third positions<br />

in the list are the gates of MOS transistors M1 and M2 instantiated within<br />

XPLL.XTEST.XDUM1.<br />

The figure below illustrates the backannotated node TPROG1, highlighted in red:<br />

5. To find out why such a HiZ value is reported by Eldo, look at the contents of the DSPF<br />

file dspf_pll_v01.dspf. There is a mistake in the parasitic values in the corresponding<br />

DSPF section for net TPROG1:<br />

Eldo® User's Manual, 15.3 1361


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

*|NET TPROG1 1.221451e-14<br />

*|I (XPLL.Xtest.Xdum1.M1.g XPLL.Xtest.Xdum1.M1 g I 0.0 10.0 10.0)<br />

*|I (XPLL.Xtest.Xdum1.M2.g XPLL.Xtest.Xdum1.M2 g I 0.0 10.0 10.0)<br />

*|S (TPROG1_1)<br />

*|P (TPROG1 I )<br />

C5 TPROG1 VSS 1.17763E-01PF<br />

C6 TPROG1_1 VSS 2.76325E-01PF<br />

C7 XPLL.Xtest.Xdum1.M1.g VSS 2.70519E-01PF<br />

C8 XPLL.Xtest.Xdum1.M2.g VSS 2.70519E-01PF<br />

R4 TPROG1 TPROG1_1 1.70333E20<br />

R5 TPROG1_1 XPLL.Xtest.Xdum1.M1.g 1.29167E-01<br />

R6 TPROG1_1 XPLL.Xtest.Xdum1.M2.g 1.29167E-01<br />

The value of R4 has been set to 1.70333E20 Ω by mistake (see the line highlighted in<br />

red). The value should be 1.70333E00 Ω, just like R1 for the backannotated node<br />

TPROG0.<br />

6. Edit the DSPF file dspf_pll_v01.dspf in your preferred text editor, change the value of<br />

R4 from 1.70333E20 to 1.70333E00. Rerun the simulation in Eldo:<br />

<strong>eldo</strong> HiZ_PLL.cir<br />

Check the PLL output period labeled PERIOD_PLL which should be approximately<br />

23ns. You should see the following message at the end of the simulation:<br />

PERIOD_PLL = 2.2853E-08<br />

7. Reopen the newly generated HiZ output file HiZ_ALL.hiz with the AMS Results<br />

Browser and verify that node TPROG1 is no longer visible (default sort by instance<br />

name):<br />

1362<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

8. We need to find which nodes have the highest impedance average value and identify if<br />

this is expected or not. Filter the results in decreasing order to look at the biggest<br />

contributor first; in the AMS Results Browser click twice on the Impedance Average<br />

column to re-order the results:<br />

Eldo® User's Manual, 15.3 1363


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

You can see from the list (highlighted in yellow) several high impedance detections on<br />

the same node, XPLL.XCPF.INVCO, but for different time windows.<br />

9. To plot the evolution of this impedance with regards to the simulation time, edit the<br />

main netlist file HiZ_PLL.cir in your preferred text editor, and uncomment the following<br />

line in the netlist:<br />

.plot tran IMP(xpll.xcpf.invco)<br />

Add the following plot commands:<br />

.plot tran V(xpll.down)<br />

.plot tran V(xpll.up)<br />

Rerun the simulation in Eldo:<br />

<strong>eldo</strong> HiZ_PLL.cir<br />

10. After the simulation is complete, launch EZwave and open the generated output file<br />

HiZ_PLL.swd:<br />

ezwave HiZ_PLL.swd<br />

The following waveforms are displayed: IMP(XPLL.XCPF.INVCO),<br />

V(XPLL.DOWN), V(XPLL.UP):<br />

1364<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

Observe the impedance of the charge pump output (in green). It goes into high<br />

impedance state only when the charge pump input ports (UP in blue and DOWN in<br />

yellow) are equal to zero.<br />

The circuit schematic for the charge pump (highlighted in yellow) is shown below:<br />

When UP=DOWN=0, both transistors M2R and M1R are turned OFF and therefore<br />

their common node INVCO goes into high impedance state. This is the expected<br />

behavior.<br />

Eldo® User's Manual, 15.3 1365


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

11. Create a HiZ configuration to filter out detection on the charge pump output and focus<br />

our next analysis on the remaining PLL blocks. Edit the main netlist HiZ_PLL.cir in<br />

your preferred text editor, and uncomment the following lines in the netlist:<br />

.define_group name=without_xcpf inst=xpll except=xpll.xcpf<br />

.end_group<br />

.hiz_cfg name=cfg_withoutXCPF scope=without_xcpf<br />

.hiz use_config=cfg_withoutXCPF file=hiz_withoutXCPF.hiz<br />

The .define_group/.end_group commands create a group of instances/devices excluding<br />

the block XPLL.XCPF, providing the group name without_XCPF.<br />

The .hiz_cfg command creates a HiZ configuration named cfg_withoutXCPF that only<br />

applies to the group defined above.<br />

The .hiz command indicates that the high impedance checks will activate the<br />

configuration you have created.<br />

Remember to comment the previous .hiz command (step 1 in the netlist), otherwise there<br />

will be two .hiz commands used simultaneously which is not allowed by Eldo.<br />

12. Rerun the simulation in Eldo:<br />

<strong>eldo</strong> HiZ_PLL.cir<br />

After the simulation is complete, open the HiZ output file hiz_withoutXCPF.hiz with the<br />

AMS Results Browser and explore the results.<br />

amsrb hiz_withoutXCPF.hiz<br />

Click twice on the Impedance Average column to re-order the results by decreasing<br />

Impedance average value:<br />

1366<br />

Eldo® User's Manual, 15.3


Examples<br />

Tutorial—High Impedance Fault Detection of a PLL Circuit<br />

Looking at these results, the highest detection reported points to the node<br />

XPLL.XLD.XCNT.XD00.X2.XC.X.<br />

13. Plot the impedance of this node (in a similar way to step 9) and try to identify the cause<br />

of such a high impedance value.<br />

Edit the main netlist file HiZ_PLL.cir in your preferred text editor, and add the<br />

following plot command:<br />

.plot tran IMP(xpll.xld.xcnt.xd00.x2.xc.x)<br />

Rerun the simulation in Eldo:<br />

<strong>eldo</strong> HiZ_PLL.cir<br />

14. After the simulation is complete, launch EZwave and open the generated output file<br />

HiZ_PLL.swd:<br />

ezwave HiZ_PLL.swd<br />

A new waveform is displayed, IMP(XPLL.XLD.XCNT.XD00.X2.XC.X):<br />

Eldo® User's Manual, 15.3 1367


Examples<br />

Transient Noise Analysis Example 1—High-Rate Particle Detector<br />

Results<br />

This tutorial showed how to use the Eldo .HIZ and .HIZ_CFG commands to detect “abnormal”<br />

high impedance values on the PLL input control, and use HiZ configurations to detect<br />

“expected” high impedance values on the Charge Pump output.<br />

Tip<br />

See “.HIZ” and “.HIZ_CFG” in the Eldo Reference Manual.<br />

See also the AMS Results Browser User’s Manual.<br />

Related Topics<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter<br />

Transient Noise Analysis Example 1—High-Rate Particle Detector<br />

Transient Noise Analysis Example 1—High-<br />

Rate Particle Detector<br />

Netlist file: transient_noise_detector.cir<br />

This circuit was designed at CERN and is used in high-rate particle detection. It comprises a<br />

front-end pre-amplifier and an analog memory port. Transient simulations are performed and<br />

noise characteristics and performance investigated.<br />

1368<br />

Eldo® User's Manual, 15.3


Examples<br />

Transient Noise Analysis Example 1—High-Rate Particle Detector<br />

Figure 21-43. High-Rate Particle Detector Circuit<br />

Description of the Particle Detector Behavior<br />

The pre-amplifier has a rise time of less than 20ns and a large fall time constant compared to the<br />

rise time. Therefore, for this application it can be considered as an integrator. The function of<br />

the analog memory port is signal storage and noise shaping. It takes successive samples of the<br />

signal into the different feedback capacitors. The complete system of analog memories acts as a<br />

charge sampler and is equivalent, from a signal processing point of view, to a discrete<br />

differentiator.<br />

Figure 21-44 shows the signal at the input, the voltage at the amplifier output, and the signal at<br />

the output of the complete system. The simulation was performed for an input charge of 2.5 fC<br />

across a 5pF input capacitor and with a 15ns clock period.<br />

The clock of the analog memory port is synchronized with the input signal to store the<br />

maximum amount of charge in the first feedback capacitor. Note that most of the charge is<br />

deposited in one storage capacitor within the 15ns clock period.<br />

Eldo® User's Manual, 15.3 1369


Examples<br />

Transient Noise Analysis Example 1—High-Rate Particle Detector<br />

Figure 21-44. Simulation Results—Input & Output Signals<br />

Analysis of the Noise Performance<br />

The resolution of this detection system is a function of the noise generated by the circuit. It is<br />

therefore the major performance criterion of the device.<br />

The noise performance of the complete circuit strongly depends on the performance of the preamplifier.<br />

The analog memory port does not generate noise, it only shapes the noise generated<br />

by the amplifier.<br />

A number of transient noise simulations were performed on the complete circuit.<br />

Figure 21-45 shows the results of several transient simulation runs including noise sources, with<br />

different initial conditions and the RMS value of the noise at the amplifier output calculated<br />

from the different runs described above.<br />

1370<br />

Eldo® User's Manual, 15.3


Examples<br />

Transient Noise Analysis Example 1—High-Rate Particle Detector<br />

Figure 21-45. Noise at Amplifier O/P<br />

The RMS value of the noise increases with time, and the Signal to Noise Ratio is limited by the<br />

low frequency noise components.<br />

Figure 21-46 shows the curves related to the different runs with the noise sources, the signal at<br />

the output of the complete circuit, and the RMS value of the corresponding noise.<br />

Eldo® User's Manual, 15.3 1371


Examples<br />

Transient Noise Analysis Example 1—High-Rate Particle Detector<br />

Figure 21-46. Noise at Analog Memory O/P<br />

The effect of the analog memories on the noise behavior acts as a Correlated Double Sampling,<br />

meaning that output noise is reset at each period of the clock.<br />

For this type of circuit, the noise performance is expressed in terms of Equivalent Noise Charge<br />

referred on the input (ENC):<br />

where Noise is the RMS noise value at the output (extracted from the figure above), Signal is<br />

the signal at the output and Qin is the charge injected across the input capacitor (in e − ). In this<br />

case, the ENC is about 2000e − across Cin (Noise = 0.9mV, Signal=7mV, Qin=2.5 fC). This<br />

circuit has been manufactured and experimental measurements match the simulation results<br />

very closely.<br />

Related Topics<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter<br />

1372<br />

Eldo® User's Manual, 15.3


Examples<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter<br />

Transient Noise Analysis Example 2—<br />

Switched Capacitor Filter<br />

Netlist file: transient_noise_filter.cir<br />

This second transient noise analysis example is a 6th order switched capacitor bandpass filter<br />

used in telecommunications applications. Complete simulation results of the circuit and its<br />

noise performance are provided. To increase simulation speed, modeling is implemented at a<br />

macromodel level rather than transistor level. The Eldo macromodels SWITCH and OPA are<br />

used. We first describe the macromodels used and simulation results follow.<br />

Figure 21-47. Switched Capacitor Filter Circuit Schematic<br />

Characterization of the Amplifier<br />

The structure of the amplifier is a classical folded cascade. AC and transient simulations have<br />

been performed at a transistor level to determine the macromodel parameters of the circuit<br />

shown in Figure 21-48:<br />

Eldo® User's Manual, 15.3 1373


Examples<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter<br />

Figure 21-48. Amplifier Schematic<br />

A subcircuit composed of an OPA1 macromodel, and a voltage source representing the<br />

equivalent noise referred at the input, is used for the simulation of the complete circuit.<br />

The dominant pole of the amplifier is defined by the output impedance and load capacitance of<br />

the amplifier. Comparison of simulation results between the amplifier and its macromodel are<br />

shown in Figure 21-49 and Figure 21-50.<br />

1374<br />

Eldo® User's Manual, 15.3


Examples<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter<br />

Figure 21-49. AC & Noise Simulation Results of Amplifier<br />

Eldo® User's Manual, 15.3 1375


Examples<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter<br />

Figure 21-50. AC & Noise Simulation of Amplifier Macromodel<br />

Switch Noise Model<br />

Instead of MOS transistors, a switch macromodel is used to perform the complete circuit<br />

simulations. To compute transient noise simulations, noise sources have been added to the<br />

switches. We have considered that a switch only generates thermal noise. A current source has<br />

been included between the source and the drain and its Power Spectral Density is a function of<br />

R ον , as follows:<br />

Simulation Results of the Complete Circuit<br />

Transient simulation results are shown below. In Figure 21-51 the first curve represents the<br />

impulse response of the circuit. The second curve represents the RMS value of noise generated<br />

at the output of the filter in the frequency band (1Hz, 50kHz). The RMS result is approximately<br />

8μV. This has been obtained by performing about 20 runs including noise sources. This curve<br />

1376<br />

Eldo® User's Manual, 15.3


Examples<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter<br />

would be smoother if more runs had been performed. Figure 21-52 shows the Fourier transform<br />

of the circuit output; it therefore represents the frequency response of the filter.<br />

Figure 21-51. Simulation Results of the Filter<br />

Eldo® User's Manual, 15.3 1377


Examples<br />

Transient Noise Analysis Example 2—Switched Capacitor Filter<br />

Figure 21-52. Frequency Response of the Filter<br />

Related Topics<br />

Transient Noise Analysis Example 1—High-Rate Particle Detector<br />

1378<br />

Eldo® User's Manual, 15.3


Appendix A<br />

Error and Warning Messages<br />

Reference for the error and warning messages that can be generated by Eldo.<br />

Eldo Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1379<br />

Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1380<br />

Global Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1380<br />

Errors Related to Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1384<br />

Errors Related to Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385<br />

Errors Related to Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1392<br />

Errors Related to Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399<br />

Errors Related to Macromodels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401<br />

Errors Related to Subcircuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1402<br />

Miscellaneous Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1403<br />

Errors Related to Eldo Premier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408<br />

Warning Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411<br />

Global Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411<br />

Warnings Related to Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1415<br />

Warnings Related to Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417<br />

Warnings Related to Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1421<br />

Warnings Related to Models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1428<br />

Warnings Related to Subcircuits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1431<br />

Miscellaneous Warnings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1431<br />

Warnings Related to Eldo Premier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1450<br />

Eldo Messages<br />

Invoke Eldo with the -ovstatus command-line argument to generate in the standard output<br />

(stdout) a summary message at the end of simulation informing of any warnings and errors.<br />

If errors or warnings have been generated, an error message log file, .errm.log,<br />

is created. This file contains the error and warning messages, specifying:<br />

• Source line number.<br />

• Text containing the error.<br />

Related Topics<br />

Locating Eldo Messages<br />

Error and Warning Message Classification<br />

Eldo® User's Manual, 15.3 1379


Error and Warning Messages<br />

Error Messages<br />

Error Messages<br />

Error messages are divided into the following groups:<br />

• Global Errors<br />

• Errors Related to Nodes<br />

• Errors Related to Objects<br />

• Errors Related to Commands<br />

• Errors Related to Models<br />

• Errors Related to Macromodels<br />

• Errors Related to Subcircuits<br />

• Miscellaneous Errors<br />

• Errors Related to Eldo Premier<br />

Global Errors<br />

Global error messages.<br />

This version of Eldo does not include name<br />

Error<br />

Number<br />

Error 1<br />

Error 2<br />

Error 5<br />

Error 6<br />

Error 7<br />

Error 9<br />

Error 10<br />

Error 11<br />

Error 12<br />

Error 13<br />

Error 14<br />

Table A-1. Global Errors<br />

Description<br />

Unable to open the file name<br />

Unable to open the library file name<br />

Unable to open the temporary file name<br />

Nested #com statements are not allowed<br />

Unable to delete the temporary file name<br />

Internal error in AC analysis<br />

Non invertible matrix<br />

Bad execution of name<br />

Check sum incorrect. Check your key<br />

Error in reading key: (number). Check your key<br />

Error in reading ADC/DAC; file name not specified<br />

1380<br />

Eldo® User's Manual, 15.3


Error<br />

Number<br />

Description<br />

Table A-1. Global Errors (cont.)<br />

Error and Warning Messages<br />

Global Errors<br />

Error 15 The environment variable USER is not set by the system. Set this variable in your<br />

.cshrc or .login script<br />

Error 16 Unable to allocate number bytes. Memory already allocated name<br />

Error 17 MEMALLOC: Unable to allocate number bytes. Memory already allocated name<br />

Error 18 MAMALLOC: Unable to allocate number bytes. Memory already allocated name<br />

Error 19 Unable to load file name. Analysis stopped<br />

Error 20 The number of plots of the current simulation does not match the number of plots<br />

of the previous one. File reading stopped<br />

Error 21 Storage capacity exceeded. Memory already allocated name, <strong>eldo</strong>_mem_used()<br />

Error 22 Circuit nesting error (please check that all .SUBCKT have a corresponding<br />

.ENDS)<br />

Error 23 Unrecognized character or word<br />

Error 24 Unexpected end of file<br />

Error 25 Line not consistent with language syntax<br />

Error 26 No analysis specified<br />

Error 27 Inductor/Voltage source loop foundTo allow a voltage loop made up of 0 voltage<br />

sources use .OPTION LOOPV0 To downgrade this error to a warning use<br />

.OPTION VOLTAGE_LOOP_SEVERITY = WARNINGVoltage loops may lead<br />

to singular matrix during simulation<br />

Error 28 Unable to reallocate name<br />

Error 29 Trying to add a NULL element into the name. Please contact the office from<br />

which you obtained this product with the message above and the circuit that<br />

causes this error.<br />

Error 30 Mismatch in model specification for device name<br />

Error 31 DATA or SWEEP specification: : POI expects a positive number, name found<br />

Error 32 Switch option cannot be used on device name<br />

Error 33 Spectre file not specified<br />

Error 34 .OPTIMIZE MOD: no parameter specified<br />

Error 36 .OPTION LVLTIM must be 0, 1, 2, 3, or 4<br />

Error 37 Memory allocation failure in name during name while trying to allocate: number<br />

bytes<br />

Error 38 Compilation errors in file name<br />

Eldo® User's Manual, 15.3 1381


Error and Warning Messages<br />

Global Errors<br />

Error<br />

Number<br />

Description<br />

Table A-1. Global Errors (cont.)<br />

Error 39 Not enough memory to handle waves created through the DEFWAVE command<br />

Error 40 FML.exe not found<br />

Error 41 name: Real value expected<br />

Error 42 name: Non-real expression expected<br />

Error 43 Only DC followed by TRANSIENT analysis is allowed.<br />

Error 44 FasC model name already defined<br />

Error 45 .OPTION DVDT must be -1 or 0.<br />

Error 46 No plot to display for name analysis: Simulation stopped.<br />

Error 47 Error in updating the library. Refer to file name<br />

Error 48 No voltage or current AC input source specified<br />

Error 49 Unable to spawn name: There might not be enough memory<br />

Error 50 .OPTION NEWTON and OSR are not compatible<br />

Error 51 No plot matching analysis type: Analysis stopped.<br />

Error 52 No node “0” found in the circuit<br />

Error 54 Syntax error parsing name<br />

Error 55 The following line is too long...Please split your line using continuation line '+'<br />

Error 56 No key to run name<br />

Error 57 Nested DC Sweeps are not allowed within SimPilot<br />

Error 58 Error: Command name not allowed within SimPilot<br />

Error 59 No value given for parameter name<br />

Error 60 Real value expected for name: End of line found<br />

Error 61 .OPTION IEM and OSR are not compatible<br />

Error 62 .OPTION IEM and NEWTON are not compatible<br />

Error 63 Unable to include file name<br />

Error 64 .MODDUP cannot be used in conjunction with LOT|DEV<br />

Error 65 .MODDUP cannot be used in conjunction with .MC<br />

Error 66 .OPTION HMIN: Value must be strictly positive<br />

Error 67 .OPTION LVLCNV must be 0, 2, or 3<br />

Error 68 COMMAND .INCLUDE/.LIB cannot find name<br />

1382<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Global Errors<br />

Error<br />

Number<br />

Error 69<br />

Error 70<br />

Error 71<br />

Error 72<br />

Error 73<br />

Error 74<br />

Error 75<br />

Error 76<br />

Error 77<br />

Error 78<br />

Error 79<br />

Error 80<br />

Error 81<br />

Error 82<br />

Error 83<br />

Error 84<br />

Error 85<br />

Error 86<br />

Error 87<br />

Error 88<br />

Error 89<br />

Error 90<br />

Error 91<br />

Error 92<br />

Description<br />

Table A-1. Global Errors (cont.)<br />

Cannot find HDLA models<br />

.OPTION name expects an integer value<br />

TUNING: Unexpected parameter name<br />

Probable syntax error in library name<br />

Fatal error in name model, please check output file for details. Eldo Kernel can’t<br />

find the ‘SBVAL.PAR’ file<br />

Cannot find #endcom statement<br />

Questa ADMS command must be used in place of Eldo in order to use<br />

VHDL-AMS models<br />

Internal error: Mismatch in parameter name<br />

Line not allowed inside command file<br />

Unknown command name<br />

DEBUG command number name not found<br />

.RUN: Unknown argument name<br />

Too many files opened<br />

Parameter not known: name<br />

Unable to alter name<br />

Missing parameters<br />

Syntax error or<br />

Syntax error at or near name<br />

Error evaluating name<br />

Command cannot be issued at run time, or<br />

Command name cannot be issued at run time<br />

name cannot change .MODEL card for that kind of element<br />

name disabled because AC analysis performed within transient analysis. However,<br />

with keyword ALL added on the .MC card, simulation should run<br />

SST analysis cannot be performed: Device name is not supported<br />

SST analysis cannot be performed: Gudm model on name not supported<br />

SST analysis cannot be performed: MOS model on name should be a chargecontrolled<br />

model<br />

Eldo® User's Manual, 15.3 1383


Error and Warning Messages<br />

Errors Related to Nodes<br />

Error<br />

Number<br />

Error 93<br />

Error 94<br />

Error 95<br />

Error 96<br />

Error 97<br />

Error 98<br />

Error 99<br />

Error 100<br />

Description<br />

Table A-1. Global Errors (cont.)<br />

SST analysis cannot be performed: Non-Quasi Static effects on name is not<br />

supported<br />

Unknown directive: name<br />

No matching keyword name<br />

Parameter name cannot be evaluated<br />

Mismatch between .iic and .cir files: Simulation stopped<br />

Having both .STEP and SWEEP on AC/TRAN/DC cards is not allowed<br />

Unable to find a .DATA statement named name<br />

This version of Eldo does not include name<br />

Errors Related to Nodes<br />

The following error messages are preceded by NODE :<br />

Table A-2. Errors Related to Nodes<br />

Error Description<br />

Number<br />

Error 101 No sources on this node<br />

Error 102 Multiple input signal applied<br />

Error 103 The DIGITAL to ANALOG Voltage Source Converter conflicts with another<br />

Voltage Source already attached to this node<br />

Error 104 Multiple DTOA on this node and at least one of them is a Voltage Source<br />

Converter. This is not allowed<br />

Error 105 Inconsistencies in the High Voltage specifications of the different RC DTOA<br />

Converters connected to this node<br />

Error 106 Inconsistencies in the Low Voltage specifications of the different RC DTOA<br />

Converters connected to this node<br />

Error 107 Node name not known<br />

Error 108 Iout plot specification ignored on top-level nodes<br />

Error 109 This node is a floating gate<br />

Error 110 This node is a floating bulk<br />

Error 111 Less than two connections<br />

1384<br />

Eldo® User's Manual, 15.3


Error<br />

Number<br />

Description<br />

Table A-2. Errors Related to Nodes (cont.)<br />

Error and Warning Messages<br />

Errors Related to Objects<br />

Error 112 No DC path to ground<br />

Error 113 A2D/D2A cannot be applied on non-existing nodes<br />

Error 114 Connectivity around that node makes Matrix singular<br />

Error 115 Related device not found<br />

Error 116 Only IN port seen, and no signal applied<br />

Error 117 Missing A2D/D2A to connect to object<br />

Error 119 FORCE ignored, discontinuity found<br />

Error 120 This bulk node is not forced<br />

Error 121 .IPROBE command: not all pins connected to that node name may be on the<br />

reference pin list<br />

Error 122 Unexpected hierarchical character found in that node name. It is better to rename<br />

that node, or a workaround could be to use .option dotnode<br />

Error 123 Unexpected hierarchical character '.' found in that node name. Such name must be<br />

enclosed in escape character '\' like in \pin.name\<br />

Error 124 Init Terminal contribution. Current cannot be read. This node is unconnected<br />

Errors Related to Objects<br />

The following error messages are preceded by OBJECT :<br />

Error<br />

Number<br />

Error 201<br />

Error 202<br />

Error 203<br />

Error 204<br />

Error 205<br />

Error 206<br />

Error 207<br />

Error 208<br />

Description<br />

Table A-3. Errors Related to Objects<br />

Cannot be used in AC analysis, or<br />

Cannot be used with CAPTAB<br />

AC input has not been found<br />

Parameter sweep not available for this object<br />

VTH1 and VTH2 are inverted<br />

Not found in file: name<br />

VHI and VLO are equal<br />

VHI and VLO are inverted<br />

Unrecognized character or word: name<br />

Eldo® User's Manual, 15.3 1385


Error and Warning Messages<br />

Errors Related to Objects<br />

Error<br />

Number<br />

Description<br />

Table A-3. Errors Related to Objects (cont.)<br />

Error 209 Incorrect declaration of POLY names<br />

Error 210 Keyword FREQ expected<br />

Error 211 Parameters are missing<br />

Error 212 Unknown signal type: name<br />

Error 213 Incorrect geometrical dimension: name<br />

Error 214 No value specified for object: name<br />

Error 215 Macro already defined<br />

Error 216 Too many controlling nodes (> 3)<br />

Error 217 Model not yet defined: model_name<br />

Error 218 Model not found: model_name<br />

Error 219 Short circuit element<br />

Error 220 Voltage specifications are missing<br />

Error 221 Is a multidimensional element<br />

Error 222 SIN: Frequency below zero<br />

Error 223 SFFM: FC below zero<br />

Error 224 SFFM: FS below zero<br />

Error 225 EXP: TAU1 below zero<br />

Error 226 EXP: TAU2 below zero<br />

Error 227 Unknown signal applied<br />

Error 228 Either TD or F must be specified<br />

Error 229 Multidimensional object. This variable is not declared<br />

Error 230 Output pin is already a voltage source<br />

Error 231 Output pin is already connected to a comparator output<br />

Error 232 Geometries are below zero: please check DW and DL<br />

Error 233 Value becomes zero. Exited<br />

Error 234 Syntax error in the expression<br />

Error 235 Brackets are missing in the TABLE values<br />

Error 236 Table input values must be properly ordered<br />

Error 237 Parameter name: incorrect value found name<br />

1386<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Errors Related to Objects<br />

Error<br />

Number<br />

Error 238<br />

Error 240<br />

Error 242<br />

Error 243<br />

Error 244<br />

Error 245<br />

Error 246<br />

Error 247<br />

Error 248<br />

Error 249<br />

Error 250<br />

Error 251<br />

Error 252<br />

Error 253<br />

Error 254<br />

Error 255<br />

Error 256<br />

Error 257<br />

Error 258<br />

Error 259<br />

Error 260<br />

Error 261<br />

Error 262<br />

Error 263<br />

Error 264<br />

Error 265<br />

Error 266<br />

Error 267<br />

Error 268<br />

Table A-3. Errors Related to Objects (cont.)<br />

Description<br />

Bus specification ignored<br />

A time or a value specification is missing for this bus<br />

This bus is already defined<br />

PWLFILE: Bad value for parameters ISTART ISTOP ISTEP<br />

A signal has been already applied on this bus<br />

More than one .CHECKBUS applied on this bus<br />

No model specified in this functional call: name<br />

PWLFILE Parameters COL ISTART ISTOP ISTEP can’t be Negative<br />

Unable to plot the capacitances of this device. Only charges are available<br />

PWLFILE: No data read from file<br />

Unable to plot the charges of this device. Only capacitances are available<br />

Unexpected character found<br />

Parameters or pins are missing for this device<br />

Is not accessible<br />

Unknown parameter: name<br />

Unknown keyword: name<br />

The sign : is missing after keyword<br />

‘(‘ found when not expected<br />

Element not found: name<br />

The following element is not a current source: name<br />

The following element is not a voltage source: name<br />

Pin not found: name<br />

Number of pins: number<br />

Number of controlling nodes: number<br />

Number of controlling zero voltage sources: number<br />

Number of controlled voltage sources: number<br />

Number of controlled current sources: number<br />

Number of parameters: number<br />

Error when initializing SOLVE routines<br />

Eldo® User's Manual, 15.3 1387


Error and Warning Messages<br />

Errors Related to Objects<br />

Error<br />

Number<br />

Description<br />

Table A-3. Errors Related to Objects (cont.)<br />

Error 269 Error when initializing INTEGRAL routines<br />

Error 270 Parameter not found<br />

Error 271 Duplicate definition of parameter: name<br />

Error 272 Parameter already assigned to an equivalent: name<br />

Error 273 Parameter index not found: name<br />

Error 274 Error in macro name<br />

Error 275 VSTATUS already called with different pin order on: name<br />

Error 276 Unable to apply the function: name<br />

Error 277 Unable to find previous state: name<br />

Error 278 Error in function<br />

Error 279 No model assigned to this element<br />

Error 280 Model attached to this device is also attached to another device of a different type<br />

Error 281 Its model is also attached to the following component: name<br />

Error 282 Access resistor becomes less than or equal to zero<br />

Error 283 Error when computing R value. Division by 0<br />

Error 284 Keyword PARAM expected instead of: name<br />

Error 285 Equal sign ‘=’ expected instead of: name<br />

Error 286 Unknown Base specification<br />

Error 287 Cannot get the current through non-voltage source<br />

Error 288 Unable to parse expression of<br />

Error 289 Radiation source not found<br />

Error 290 SOI back source not found<br />

Error 291 Radiation source specification error<br />

Error 292 SOI back source specification error<br />

Error 293 The current through cannot be used as argument<br />

Error 294 Inconsistency in voltage specification<br />

Error 295 Unexpected digit found in the bus: name<br />

Error 296 Unable to code<br />

Error 297 Unknown pin number<br />

1388<br />

Eldo® User's Manual, 15.3


Error<br />

Number<br />

Description<br />

Table A-3. Errors Related to Objects (cont.)<br />

Error and Warning Messages<br />

Errors Related to Objects<br />

Error 298 R value is missing<br />

Error 299 Mismatch in POLY specification<br />

Error 801 Parameterizable object not created<br />

Error 802 This RC line refers to a model which is already attached to a standard resistance:<br />

name<br />

Error 803 This resistance refers to a model which is already attached to an RC line: name<br />

Error 804 Probably an RC line: please, specify level = 3 in the relevant .MODEL card<br />

Error 805 Missing model specifications<br />

Error 806 Delay cannot be 0.0<br />

Error 807 .PLOTLOG: Specified object is not 0xx instance<br />

Error 808 .PLOTLOG: Functional instance not defined<br />

Error 809 BSIM1: Parameter K1 = K10 + K1L/Leff + K1W/Weff


Error and Warning Messages<br />

Errors Related to Objects<br />

Error<br />

Number<br />

Error 826<br />

Error 827<br />

Error 828<br />

Error 829<br />

Error 830<br />

Error 831<br />

Error 832<br />

Error 833<br />

Error 834<br />

Error 835<br />

Error 836<br />

Error 838<br />

Error 839<br />

Error 840<br />

Error 841<br />

Error 842<br />

Error 843<br />

Error 844<br />

Error 845<br />

Error 846<br />

Error 855<br />

Error 856<br />

Error 857<br />

Description<br />

Table A-3. Errors Related to Objects (cont.)<br />

LENGTH and AREA must be strictly positive<br />

Mismatch in port specification<br />

Equal sign '=' is missing in parameter list<br />

Unexpected equal sign '=' in parameter list<br />

Several ports with that index<br />

No port index specified<br />

Missing R value<br />

COUPLING: expecting keyword I or V: found name<br />

Syntax error in PATTERN command<br />

Object Error<br />

Mismatch in coupling specification<br />

Already defined<br />

No model assigned to that device (MODDUP)<br />

Short circuit on dipole device<br />

This element cannot be converted into its switch equivalent<br />

Odd number of pins<br />

Pin index number ‘name’ of this object is a character string which contains the<br />

hierarchical character.<br />

But this node name has not been found in the hierarchy.<br />

The problem could be in the naming of that node (solution: do not use the<br />

hierarchical character in local node names).<br />

But if the node name is actually correct (it refers to an actual hierarchical net),<br />

ensure the instantiation of the object is placed after the instantiation of the subckt<br />

which creates this hierarchical node.<br />

Pin specification is missing<br />

None of the models in .MSELECT fits this instance<br />

The node name is a digital signal.<br />

It is not possible to connect directly analog voltage to digital object inside name<br />

description through hierarchical level.<br />

TDEV should be specified on that device<br />

Syntax HDLA_NAME = ELDO_NAME expected<br />

Multiple SST specifications<br />

1390<br />

Eldo® User's Manual, 15.3


Error<br />

Number<br />

Description<br />

Table A-3. Errors Related to Objects (cont.)<br />

Error and Warning Messages<br />

Errors Related to Objects<br />

Error 858 Wrong object inside thermal network: only R/V/C device type can be specified<br />

Error 859 AREA/PERI and W/L cannot be given together<br />

Error 860 Multiple types of input applied<br />

Error 861 Not declared<br />

Error 862 Unable to mix FPORT syntax with RPORT syntax. FPORT must be replaced by a<br />

voltage current source with R/C/L specifications.<br />

Error 863 RPORT can be applied on voltage source only<br />

Error 864 Missing IPORT specification<br />

Error 865 AREA is negative or 0.0<br />

Error 866 First pin of that element is undefined<br />

Error 867 Second pin of that element is undefined<br />

Error 868 .TRAN and .FOUR specification is not allowed on the same device<br />

Error 869 Geometric level expected because w/l specified on instance, but actual model<br />

used is a non-geometric model: ‘level’ parameter might be missing in .model<br />

card.<br />

Error 870 Generic/Parameter field appears twice<br />

Error 871 Only one of argument 'VALUE', 'TABLE' or 'AC' expected<br />

Error 872 Device not found<br />

Error 873 Missing L or W specification to enable appropriate model selection<br />

Error 874 No character string allowed in Param/Generic list<br />

Error 875 DDT or IDT operator allowed on 'E' or 'G' sources only<br />

Error 876 L and W must be specified before M()<br />

Error 877 Character not allowed on pattern<br />

Error 878 Value not specified<br />

Error 879 PORTS specification appears more than once<br />

Error 880 PINS specification appears more than once<br />

Error 881 Only PINS specification allowed on VHDL-AMS instances<br />

Error 882 GENERIC specification appears more than once<br />

Error 883 Dimension must be 1 exclusively<br />

Error 884 Second controlling node must be same as the second pin<br />

Eldo® User's Manual, 15.3 1391


Error and Warning Messages<br />

Errors Related to Commands<br />

Error<br />

Number<br />

Description<br />

Table A-3. Errors Related to Objects (cont.)<br />

Error 885 Second controlling node must be same as the first pin<br />

Error 886 Parameters of denominator for S/Z transform are all zero.<br />

Error 887 More than one value specified for resistor value<br />

Error 888 TSAMPLE not specified for PATTERN .CHECKBUS<br />

Error 889 Undeclared inductor<br />

Error 890 Expects syntax PWL(1) N1 N2 MODEL value<br />

Error 891 Syntax error in IBIS model call<br />

Error 892 Unknown IBIS device<br />

Error 893 Component name is missing inside IBIS model call<br />

Error 894 filename is missing inside IBIS model call<br />

Error 895 MODEL and PIN can’t be both specified<br />

Error 896 Cannot replace source, discontinuity found<br />

Error 897 Expects an even number of parameters<br />

Error 898 PZ or FNS allowed on E elements only<br />

Error 899 Neither MODEL nor PIN specified<br />

Error 900 FNS denominator cannot be 0<br />

Errors Related to Commands<br />

The following error messages are preceded by COMMAND :<br />

Error<br />

Number<br />

Error 301<br />

Error 302<br />

Error 303<br />

Error 304<br />

Error 305<br />

Error 307<br />

Table A-4. Errors Related to Commands<br />

Description<br />

.MC: Monte Carlo analysis is not compatible with .ALTER<br />

.MC: Monte Carlo analysis is not compatible with .STEP<br />

.ALTER: This command is not compatible with .STEP<br />

.MC: Unable to reallocate .MODEL field<br />

.MC: Internal memory error<br />

.CHRSIM: A previous transient analysis is required for the circuit<br />

1392<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Errors Related to Commands<br />

Error<br />

Number<br />

Error 308<br />

Error 309<br />

Error 310<br />

Error 311<br />

Error 312<br />

Error 313<br />

Error 314<br />

Error 315<br />

Error 316<br />

Error 317<br />

Error 318<br />

Error 319<br />

Error 320<br />

Error 321<br />

Error 322<br />

Error 324<br />

Error 325<br />

Error 326<br />

Error 327<br />

Error 328<br />

Error 329<br />

Error 330<br />

Error 331<br />

Error 332<br />

Error 333<br />

Error 334<br />

Error 335<br />

Error 336<br />

Table A-4. Errors Related to Commands (cont.)<br />

Description<br />

.CHRSIM: A previous DC sweep analysis is required for the circuit<br />

.CHRSIM: No output found in previous circuit to be connected to input<br />

.SENS: Unable to create sensitivity matrix<br />

.SENS: Circuit size too large (>name) for sensitivity analysis<br />

.MC: Type not found<br />

.OPTFOUR: Unknown output format<br />

.INIT: Time values are missing<br />

.IC: Time values are missing<br />

.USE name: Specification unknown<br />

.TRAN: Parameters are missing<br />

.USE name: Specification unknown<br />

.PLOT name: This kind of analysis is not supported<br />

.LOOP: Object type not allowed: name<br />

.PARAM: Attempt to divide by zero<br />

.DC: W or L must be written in place of name<br />

.OPTIMIZE: Name or element name not yet defined<br />

.DC: Too many values specified<br />

.RESTART: The file used to restart has the same name as the current circuit.<br />

Rename the previous .cou file<br />

.OPTIMIZE: name not yet created<br />

.OPTIMIZE: Model name not yet created<br />

.OPTIMIZE name: Incompatible operation<br />

.DC: Unknown object name<br />

.OPTIMIZE: AC output node name not yet defined<br />

.IC: Error on name<br />

.SOLVE: Error in expression<br />

.SOLVE: Element name not yet defined.<br />

.OPTIMIZE: Parameter name not known<br />

.PLOT: Specification name not allowed<br />

Eldo® User's Manual, 15.3 1393


Error and Warning Messages<br />

Errors Related to Commands<br />

Error<br />

Number<br />

Error 337<br />

Error 338<br />

Error 339<br />

Error 340<br />

Error 341<br />

Error 342<br />

Error 344<br />

Error 345<br />

Error 346<br />

Error 347<br />

Error 348<br />

Error 349<br />

Error 350<br />

Error 351<br />

Error 352<br />

Error 353<br />

Error 354<br />

Error 356<br />

Error 358<br />

Error 359<br />

Error 360<br />

Error 361<br />

Error 362<br />

Error 363<br />

Error 364<br />

Error 365<br />

Error 366<br />

Error 367<br />

Table A-4. Errors Related to Commands (cont.)<br />

Description<br />

.DC: Sweep object not specified<br />

.OPTIMIZE: Use ACOUT= to select output<br />

.NOISETRAN: Error with parameter<br />

The Thermal Noise Level (number) is not compatible with values extracted from<br />

MOS model<br />

.NOISE: Element name not found<br />

.SOLVE: Element name not found<br />

.MFTA: Parameter name not found<br />

.MFTA: Missing argument<br />

.SAVE: File name is already specified in a previous .SAVE command<br />

.TSAVE: save time value is required<br />

.INIT cannot be applied on node name: Conflict of signals<br />

.HIER: Not supported in Questa ADMS<br />

.WCASE: Unknown analysis specification name<br />

.TRAN: Unrecognized field (name)<br />

Expression name can accept only items V(node) or I(object)<br />

.TRAN: TSTOP is lower than HMIN<br />

Expression name can accept only items V(node), I(object) or W(w)<br />

.OPTIMIZE MOD: Real value expected, name found<br />

.OPTIMIZE MOD: Parameter name: token ) expected<br />

.PARAM: “=” is missing in expression: name<br />

.OPTIMIZE: Unexpected expression: name<br />

.EXTRACT: Unexpected expression: name<br />

.STEP PARAM: Parameter name not specified<br />

.DC: The parameter name is not specified or is not a primitive. Unable to perform<br />

this analysis<br />

.STEP: Parameter name not defined at the top level<br />

.DC PARAM: Parameter name not defined at the top level<br />

.ALTER: Appears as the title<br />

name: Unknown command<br />

1394<br />

Eldo® User's Manual, 15.3


Error<br />

Number<br />

Table A-4. Errors Related to Commands (cont.)<br />

Description<br />

Error and Warning Messages<br />

Errors Related to Commands<br />

Error 368 .OPTIMIZE: sign = < > expected instead of name<br />

Error 369 .DEFWAVE: Error name =<br />

Error 370 .OPTIMIZE: name not allowed on parameter<br />

Error 371 .PLOTLOG command: ‘->’ sign is missing<br />

Error 372 .PLOT command: Found name while expecting a ( or )<br />

Error 373 .SETSOA: Opening bracket expected after name<br />

Error 374 .SETSOA: Closing bracket expected after name<br />

Error 375 .SETSOA: Error in the expression name<br />

Error 376 .SETSOA: Expected .SETSOA EXPR = (MIN,MAX)<br />

Error 377 .SETSOA: Expected a * or a value for name<br />

Error 378 .SETSOA: Model name not yet created<br />

Error 379 .WC cannot be used with command .MC<br />

Error 380 .CONNECT: Node name not yet created. The X instance which creates the node<br />

must be placed before the .CONNECT card<br />

Error 381 .SIGBUS: No parameters allowed (name)<br />

Error 382 .SIGBUS PATTERN: THOLD must be specified<br />

Error 383 .INIT: Node name not yet defined<br />

Error 384 .DISTRIB name: Opening bracket expected<br />

Error 385 .DISTRIB name: Closing bracket expected<br />

Error 386 .DISTRIB name is already defined<br />

Error 387 name: Specified terms must be properly ordered<br />

Error 388 .DISTRIB name: must be in the range [0 to 1]<br />

Error 389 Distribution name referenced but not defined<br />

Error 390 Error in LOT/DEV specification for expression name<br />

Error 391 .PARAM: Double specification for name<br />

Error 392 .TRAN: No parameter allowed: (name found)<br />

Error 393 .DISTRIB name: must be within the range [-1 to 1]<br />

Error 394 Unable to measure ISUB (name): multiple connections<br />

Error 395 .OPTION name ignored<br />

Eldo® User's Manual, 15.3 1395


Error and Warning Messages<br />

Errors Related to Commands<br />

Error<br />

Number<br />

Error 396<br />

Error 397<br />

Error 398<br />

Error 399<br />

Error 400<br />

Error 401<br />

Error 402<br />

Error 403<br />

Error 404<br />

Error 405<br />

Error 406<br />

Error 407<br />

Error 408<br />

Error 409<br />

Error 410<br />

Error 411<br />

Error 412<br />

Error 413<br />

Error 414<br />

Error 415<br />

Error 416<br />

Error 417<br />

Error 418<br />

Error 419<br />

Error 420<br />

Error 421<br />

Error 422<br />

Error 423<br />

Error 424<br />

Table A-4. Errors Related to Commands (cont.)<br />

Description<br />

.STEP: DEC, LIN or OCT expected: name found<br />

.STEP: No parameter allowed: name found<br />

.STEP: DEC/OCT values must be positive<br />

name: Negative X value found for DEC scale<br />

.LMIN or .WMIN: Parameters are missing<br />

.OPTNOISE: Real value expected after keyword name<br />

.OPTNOISE: Keywords D V TD TV expected: name found<br />

.OPTNOISE: SV: Value must be less than 1 but greater than 0: name found<br />

name: The sign ‘,’ is not allowed<br />

.SOLVE: Cannot accept functions such as YVAL, TPD, MIN, MAX and INTEG<br />

.EXTRACT name: Cannot find a .EXTRACT with this label<br />

.OPTFOUR: Unknown parameter: name<br />

.EXTRACT name: Cannot find a .FOUR with the label name<br />

.SNF: Unknown parameter name<br />

.SNF: Double input specification for name field<br />

Multiple .SNF cards not allowed<br />

.SNF card: name specification expected<br />

.FOUR card: Syntax is [LABEL=] <br />

.EXTRACT name: RMS accepts transient waves or AC noise waves only<br />

.OPTWIND or .OPTPWL: Parameter name cannot be changed<br />

.OPTWIND or .OPTPWL: Missing time-value for name<br />

.OPTWIND or .OPTPWL: Decreasing time-value for name<br />

.AC: Syntax error card: name<br />

.OPTWIND or .OPTWPL: Missing value specification at or near name<br />

.OPTWIND or .OPTWPL: name<br />

.IFT: Unexpected argument name<br />

.OPTNOISE: NOISE and NONOISE cannot both be specified<br />

.OPTNOISE: ALL=OFF and NONOISE cannot both be specified<br />

.OPTNOISE: ALL=ON and NOISE cannot be both specified<br />

1396<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Errors Related to Commands<br />

Error<br />

Number<br />

Error 425<br />

Error 426<br />

Error 427<br />

Error 428<br />

Error 429<br />

Error 430<br />

Error 431<br />

Error 432<br />

Error 433<br />

Error 434<br />

Error 435<br />

Error 436<br />

Error 437<br />

Error 438<br />

Error 439<br />

Error 440<br />

Error 441<br />

Error 442<br />

Error 443<br />

Error 444<br />

Error 446<br />

Error 447<br />

Error 448<br />

Error 449<br />

Error 450<br />

Error 451<br />

Error 452<br />

Error 453<br />

Table A-4. Errors Related to Commands (cont.)<br />

Description<br />

.SNF: Element name not found<br />

.SNF: Element name appears as both input and output<br />

.OPTFOUR: Parameter FS must be specified<br />

.PZ: This analysis might give unexpected results because several AC sources are<br />

found in the circuit<br />

.ALTER: Not allowed in Accusim netlist<br />

.NOISETRAN: Too many runs specified<br />

.OPTFOUR: Bad value for parameters TSTART, TSTOP, NBPT and FS<br />

.STEP PARAM ( ): Syntax error<br />

.STEP PARAM ( ): Only LIST allowed for multi step<br />

.STEP PARAM ( ): The number of values does not match the number of<br />

parameters<br />

.STEP: TEMP keyword cannot appear more than once<br />

.STEP: Unknown name<br />

.CHECKSOA: Unexpected parameter<br />

.SETSOA: Expecting D, E or M: name found<br />

.STEP: Missing increment parameter<br />

.STEP: Missing boundary specification<br />

.WCASE: Missing analysis specification<br />

.AC LIST: Frequencies are not properly ordered<br />

.DC: Only a real value is expected<br />

.DEFWAVE: Duplicate definition of name<br />

.OPTFOUR: Unexpected expression: name<br />

.DEFMAC: Recursive definition of name<br />

.OPTFOUR: The expression for name could not be evaluated<br />

.OPTFOUR: TSTART > TSTOP<br />

.STEP LIST: name<br />

.NOISETRAN: Cannot be used with .OPTION SAMPLE<br />

.MEAS: Unknown analysis type name<br />

.MEAS: Unknown function name<br />

Eldo® User's Manual, 15.3 1397


Error and Warning Messages<br />

Errors Related to Commands<br />

Error<br />

Number<br />

Table A-4. Errors Related to Commands (cont.)<br />

Description<br />

Error 454 .MEAS: Unexpected wave name<br />

Error 455 .MEAS: Unexpected keyword: name<br />

Error 456 .MEAS: Missing keyword: name<br />

Error 457 .MEAS name: Cannot find a .MEAS of that name<br />

Error 458 .MEAS name: LAST not accepted<br />

Error 459 .DC: name unknown<br />

Error 460 .STEP: Increment is 0.0<br />

Error 461 .SETSOA: unexpected keyword name<br />

Error 462 .EXTRACT: FILE=name must be placed before the expression<br />

Error 463 .STEP: multiple declaration for name<br />

Error 464 .MCDEV: syntax E(devname[,geo]) expected<br />

Error 465 .TRAN: decreasing time not allowed: name<br />

Error 466 .LOTGROUP: double specification for name<br />

Error 467 .FFT: Syntax is .FFT <br />

Error 468 .PLOTBUS: specification error on name<br />

Error 469 .MODEL name HOOK: syntax is .MODEL HOOK<br />

[:][()]<br />

Error 470 .MC specification on name: dead-zone too large compared to ‘normal’ zone<br />

Error 471 Directive error name<br />

Error 472 .PLOT: SMITH chart available for AC only<br />

Error 473 .SETBUS: node name does not exist<br />

Error 474 .AC expecting DEC, LIN, OCT, LIST or DATA: name found<br />

Error 475 .PART: Unknown flag: name<br />

Error 476 .PART: Syntax error. Syntax is .PART SUBCKT|INST ()<br />

Error 477 .SETBUS: node name does not exist<br />

Error 478 .EXTRACT: such SST output .H extensions<br />

Error 479 .HOOK: expects ‘MOD=’ statement<br />

Error 480 .LOOP: unexpected string name<br />

Error 481 .DEFWAVE name: expects .H extensions<br />

1398<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Errors Related to Models<br />

Error<br />

Number<br />

Error 482<br />

Error 483<br />

Error 485<br />

Error 486<br />

Error 487<br />

Error 488<br />

Error 489<br />

Error 490<br />

Error 491<br />

Error 492<br />

Error 493<br />

Error 494<br />

Error 495<br />

Error 496<br />

Error 497<br />

Error 498<br />

Error 499<br />

Error 500<br />

Table A-4. Errors Related to Commands (cont.)<br />

Description<br />

name: expects an integer value<br />

name: missing a ‘(’ bracket<br />

.STEP: step windows must be separated<br />

Two ports are required for getting RNEQ/NFMIN_MAG/GOPT/<br />

GAMMA_OPT/GAMMA_OPT_MAG/PHI_OPT/NC<br />

.SNF: error specifying SIDEBAND: name<br />

.PARAMOPT name 3 or 4 values expected<br />

.PLOT: (SMITH) or (SPECTRAL) incompatible with (VERSUS)<br />

.PLOT: (VERSUS) must be followed by only one wave.<br />

.PLOT: No wave found before (VERSUS)<br />

.TVINCLUDE: syntax error in test vector name<br />

.DATA: name: Unable to open file name<br />

.EXTRACT: name: LABEL = expected<br />

.EXTRACT: name: expects MEAS(label_name)<br />

.SNF: name<br />

name not allowed with FS<br />

.PRINT/PLOT/PROBE/EXTRACT: bad number of tones specified<br />

name: Parameter name cannot be found<br />

.CORREL: Instance name cannot be found<br />

Errors Related to Models<br />

The following error messages are preceded by MODEL:<br />

Table A-5. Errors Related to Models<br />

Error Description<br />

Number<br />

Error 501 Not found in library<br />

Error 502 Unknown in the libraries<br />

Error 503 Undeclared model reference<br />

Error 504 Is defined twice<br />

Eldo® User's Manual, 15.3 1399


Error and Warning Messages<br />

Errors Related to Models<br />

Error<br />

Number<br />

Description<br />

Table A-5. Errors Related to Models (cont.)<br />

Error 505 Parameter unknown<br />

Error 506 Model not yet defined<br />

Error 507 Inconsistency in level specification. LEVEL: number<br />

Error 508 Level not implemented<br />

Error 509 R model not declared<br />

Error 510 NSUB < NI. exited<br />

Error 511 C model not declared<br />

Error 512 G model not declared<br />

Error 514 BIDIR type not allowed. Use ATOD or DTOA<br />

Error 515 Default BIDIR Converter not found<br />

Error 516 LEVEL already specified<br />

Error 517 Parameter TOX must be greater than 0<br />

Error 518 Parameter STRUCT must be +1 or -1<br />

Error 519 Unacceptable parameter value<br />

Error 520 MJSW must be less than 1.0<br />

Error 521 N must be positive<br />

Error 522 FC must be less than 1.0<br />

Error 523 The following parameter must only be used when <strong>eldo</strong>mos is active or level 12 or<br />

13 are used<br />

Error 524 Model Error<br />

Error 526 Unable to alter the parameters of that model<br />

Error 527 This model is used by Eldo-XL and cannot be replaced<br />

Error 528 This model cannot be changed using .LIB in an interactive mode: Inconsistent<br />

level or architecture<br />

Error 529 The following parameter cannot be used with model MM9<br />

Error 530 Unknown language type<br />

Error 531 Double MC specification (via .MCMOD/.MODEL) for the parameter name<br />

Error 532 Expects PWL(1) SYMMETRY NO SOURCE CARDS DATA<br />

Error 533 Parameter COX cannot be specified for that model<br />

Error 534 W model: missing declaration of parameter N<br />

1400<br />

Eldo® User's Manual, 15.3


Error<br />

Number<br />

Description<br />

Table A-5. Errors Related to Models (cont.)<br />

Error and Warning Messages<br />

Errors Related to Macromodels<br />

Error 535 W model: incorrect number of parameters<br />

Error 536 parameter name already assigned<br />

Error 537 vector size not consistent for parameter name<br />

Error 538 Missing inout values for parameter name<br />

Error 539 Size of vectors not consistent<br />

Error 540 Missing call to MP_vect_array<br />

Error 541 inconsistent dimension of the vector array<br />

Error 542 Position already allocated<br />

Error 543 PASSFAIL, DICHOTOMY or SEARCH expected after METHOD parameter<br />

Error 544 DEVX specification cannot be applied on .MODEL parameters<br />

Error 545 This level is not supported yet<br />

Error 546 Missing convertor type (STD_LOGIC, BIT, ... )<br />

Error 547 Missing language definition<br />

Error 548 Crypted models can't be simulated by FS<br />

Error 549 W model: Tabular model expected<br />

Error 550 Instance-dependant MC variation are allowed on DEV specifications only<br />

Error 551 Language specification expected<br />

Error 552 Parameter name must be specified<br />

Error 553 Double definition for parameter(s) name<br />

Error 554 The thresholds must be in the range [0,1] for supply dependant converters<br />

Error 556 MCMOD cannot be used on this type of MODEL. Use .PARAM with MC<br />

variations instead<br />

Error 557 An existing node name is expected for VLOREF or VHIREF. "name" found<br />

Error 558 Value for name found in global bin (name) does not match that of local bin (name)<br />

Errors Related to Macromodels<br />

The following error messages are preceded by AMODEL :<br />

Eldo® User's Manual, 15.3 1401


Error and Warning Messages<br />

Errors Related to Subcircuits<br />

Error<br />

Number<br />

Error 601<br />

Error 602<br />

Error 603<br />

Error 604<br />

Table A-6. Errors Related to Macromodels<br />

Description<br />

Attempt to redefine an Amodel while the previous definition is not completed<br />

Definition not completed<br />

Macromodel not found<br />

Pins must be specified before Ports<br />

Errors Related to Subcircuits<br />

The following error messages are preceded by SUBCKT :<br />

Error<br />

Number<br />

Error 701<br />

Error 702<br />

Error 703<br />

Error 704<br />

Error 705<br />

Error 708<br />

Error 709<br />

Error 710<br />

Error 711<br />

Error 712<br />

Error 713<br />

Error 714<br />

Error 715<br />

Error 716<br />

Description<br />

Table A-7. Errors Related to Subcircuits<br />

Not found in library name<br />

Undeclared subcircuit reference<br />

is defined twice<br />

Cannot be declared before the previous one has finished<br />

Incorrect number of nodes at line number, while instantiating instance name.<br />

number node(s) are expected according to SUBCKT definition,<br />

number node(s) are found at instantiation.<br />

Recursive .SUBCKT calls are not allowed<br />

Unable to connect the output to a power supply or another digital output<br />

Error in declaration<br />

Already obtained from another LIB file<br />

Cannot define a parameter named ‘M’<br />

An ‘IF’ statement is not properly closed<br />

Unexpected keyword name<br />

refering to non-existing hierarchical node nameA possible cause of this error is<br />

that the hierarchical character ‘name’<br />

has been used when referring to non-hierarchical names.<br />

This subcircuit cannot be used from within a .SUBCKT which has been<br />

declared as FASTSPICE (here name)<br />

1402<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Miscellaneous Errors<br />

Error<br />

Number<br />

Error 717<br />

Table A-7. Errors Related to Subcircuits (cont.)<br />

Description<br />

Multiple redefinition of ground node<br />

Miscellaneous Errors<br />

Miscellaneous error messages.<br />

Error<br />

Number<br />

Error 901<br />

Error 902<br />

Error 903<br />

Error 904<br />

Error 905<br />

Error 906<br />

Error 907<br />

Error 908<br />

Error 909<br />

Error 910<br />

Error 911<br />

Error 912<br />

Error 913<br />

Error 914<br />

Error 915<br />

Error 916<br />

Error 917<br />

Error 918<br />

Error 919<br />

Error 920<br />

Error 921<br />

Table A-8. Miscellaneous Errors<br />

Description<br />

number: Unknown signal type at line<br />

name: Unknown parameter<br />

name: Specification ignored<br />

name: Unknown model type<br />

name: Parameter not found<br />

name: Unknown output format specified<br />

name: Can not affect value<br />

name: Parameter not yet set<br />

name: Unknown specification<br />

name: Model not yet defined<br />

Diagram not supported at line<br />

name: Unknown command or component at line<br />

Decreasing time on input signal number name<br />

Decreasing time on input signal assigned to object<br />

CFAS: Call to get_param_value() allowed in ALLOCATE MODE only<br />

CFAS: Call to get_param_value_b4() not allowed<br />

Unable to read from file name<br />

Cannot reallocate component table<br />

Cannot reallocate input signal<br />

Unable to parse expression name<br />

name is not specified in ATOD model<br />

Eldo® User's Manual, 15.3 1403


Error and Warning Messages<br />

Miscellaneous Errors<br />

Error<br />

Number<br />

Error 922<br />

Error 923<br />

Error 924<br />

Error 925<br />

Error 926<br />

Error 927<br />

Error 928<br />

Error 929<br />

Error 930<br />

Error 931<br />

Error 932<br />

Error 933<br />

Error 934<br />

Error 935<br />

Error 936<br />

Error 937<br />

Error 938<br />

Error 939<br />

Error 940<br />

Error 941<br />

Error 942<br />

Error 943<br />

Error 944<br />

Error 945<br />

Error 946<br />

Error 947<br />

Error 948<br />

Error 949<br />

Description<br />

Table A-8. Miscellaneous Errors (cont.)<br />

Description of DTOA name is missing<br />

DTOA name is declared as ATOD<br />

Description of ATOD name is missing<br />

ATOD name is declared as DTOA<br />

Error in expression name. I or V expected<br />

Error calling `new_fas_fnc': name not found<br />

BIDIR name is declared as ATOD or DTOA<br />

MODPAR: Parameter name not known<br />

MODPAR: Parameter name is missing<br />

EVAL: Parameter name is missing<br />

EVAL: Parameter name not known<br />

Error in TRISE or TFALL or TCROSS specification<br />

.NOISE output must be a node voltage (V(xx))<br />

.PBOUND: parameter name not found<br />

name Inconsistent behavioural instance: expects ENTITY(ARCHITECTURE)<br />

.LIB: keyword 'KEY =' expected: name found<br />

.MCMOD: expecting LOT or DEV keyword: name<br />

name Unknown .PLOT/.PRINT specification<br />

.CHECKSOA: Not compatible with name<br />

name cannot be redefined in a .PARAM statement<br />

.CHRSIM name: Unknown argument<br />

.SCALE not implemented for (name)<br />

Invalid model name on .MSELECT statement - nested .MSELECT not allowed<br />

Wrong Model type for name on .MSELECT statement - mixing models type is<br />

not allowed<br />

.INCLUDE: keyword 'SECTION = ' expected: name found<br />

.DEFAULT/.SCALE: Unrecognized parameter (name)<br />

.DEFAULT: Parameters are missing<br />

.DEFAULT not implemented for (name)<br />

1404<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Miscellaneous Errors<br />

Error<br />

Number<br />

Error 950<br />

Error 951<br />

Error 952<br />

Error 953<br />

Error 954<br />

Error 955<br />

Error 956<br />

Error 957<br />

Error 958<br />

Error 959<br />

Error 960<br />

Error 961<br />

Error 962<br />

Error 963<br />

Error 964<br />

Error 965<br />

Error 966<br />

Error 967<br />

Error 968<br />

Error 969<br />

Error 970<br />

Error 971<br />

Error 972<br />

Error 973<br />

Error 974<br />

Error 975<br />

Error 976<br />

Error 977<br />

Description<br />

Table A-8. Miscellaneous Errors (cont.)<br />

Missing FPORT number name<br />

.FFILE: expecting unit (Hz, KHz, MHz, GHz): name found<br />

.FFILE: expecting format MA or RI: name found<br />

Dummy model name name on .MSELECT statement is also defined on a<br />

.MODEL statement<br />

.PZ: expecting V(pin) or I(Vxx)<br />

Missing state name to be displayed for device name<br />

.TEMP: real value expected, name found<br />

.FFILE: expecting S/Y/Z: name found<br />

.ALTER inside .INCLUDE is not allowed<br />

.PLOT (LOW, HIGH) values must be real: name found<br />

.SETSOA: Unexpected keyword 'ELSE' found<br />

.SETSOA: source line name: Error in nesting IF-ENDIF statement<br />

PORT name has only one connection<br />

name: Invalid expression for .EXTRACT DC<br />

Port specification in PLOT/PRINT is larger than the number of declared<br />

PORTS<br />

Inconsistent number of pins for devices name<br />

M factor is less than or equal to zero for device name<br />

.LIB: .LIB KEY=name already exists<br />

Instance already defined: name<br />

Unknown MC specification name<br />

Missing MC specification in name<br />

name: Parameter name cannot start with a digit<br />

FNS order must be an integer: name found<br />

.LIB: Unable to find library or variant<br />

LOTGROUP name not defined<br />

FOUR output: .H extension expected on the wave name<br />

Too many simulation are required ( > ELDO_LONGVAL)<br />

.H extension on wave: only integer value expected: name found<br />

Eldo® User's Manual, 15.3 1405


Error and Warning Messages<br />

Miscellaneous Errors<br />

Error<br />

Number<br />

Description<br />

Table A-8. Miscellaneous Errors (cont.)<br />

Error 978 name<br />

Error 979 IBIS: name<br />

Error 980 IBIS: bad value specified for parameter name<br />

Error 981 value cannot be negative<br />

Error 982 Optimization cannot work when command name is active<br />

Error 983 a non FFT output name appears in a FOUR or FOURMODSST extract<br />

Error 984 unmatched if/else/then statement at or near line name<br />

Error 985 Unable to alter parameter name because it controls device instantiation<br />

Error 986 Entity name affected by both MC and a non-MC change<br />

Error 987 Unexpected input format: name<br />

Error 988 .NET: name found while expecting keyword RIN or ROUT<br />

Error 990 At least two values are needed<br />

Error 991 File name does not exist<br />

Error 992 .EXTRACT mode: wave name can not be found in file name<br />

Error 993 Parameter name is not allowed<br />

Error 994 Unable to create/alter PORT structure on elements name which have not been<br />

instantiated with PORT information in the netlist<br />

Error 995 Parameter name should not contain boolean operator<br />

Error 996 Parameter name should not contain any special characters<br />

Error 997 .EXTRACT: wave name is incompatible with extract analysis<br />

Error 998 .CORREL: need at least 2 name to generate a correlation<br />

Error 999 .DSPMOD: name<br />

Error 1000 .DSP: Syntax error in waveform definition<br />

Error 1001 Using a parameter both in OPTIMIZATION and STEP is not allowed<br />

Error 1501 This circuit exhibits singularity, due to ...<br />

Error 1502 .OPTION DSCGLOB: unexpected specification name<br />

Error 1503 .OPTION parameter DSCGLOB disabled. Use now DSCGLOB = X or<br />

DSCGLOB = GLOB<br />

1406<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Miscellaneous Errors<br />

Error<br />

Number<br />

Error 1504<br />

Error 1505<br />

Error 1506<br />

Error 1507<br />

Error 1508<br />

Error 1509<br />

Error 1510<br />

Error 1511<br />

Error 1512<br />

Error 1513<br />

Error 1514<br />

Error 1515<br />

Error 1516<br />

Error 1517<br />

Error 1518<br />

Error 1519<br />

Error 1520<br />

Error 1521<br />

Error 1522<br />

Error 1523<br />

Error 1524<br />

Error 1525<br />

Description<br />

Table A-8. Miscellaneous Errors (cont.)<br />

COMMAND .STEP LIB: name This library is not referenced in the netlist.<br />

Please check that it was first used within a .LIB command.<br />

Model descriptions and parameter values are unchanged.<br />

COMMAND name: Unexpected keyword<br />

Problem in using ‘\\’ in name<br />

Object name: A periodic source must be associated to PHNOISE<br />

.VEC: name<br />

.HVEC: name<br />

.PARAM name: parameter cannot be defined both as a string and as a real value<br />

.CHRSIM : only analog waves are authorized using .CHRSIM<br />

.OPTIMIZE: constraint specification on measurement: name is not compatible<br />

with name method<br />

.PARAMOPT: name<br />

.CORREL: wildcards in parameter name name are not allowed<br />

.PARAMOPT: device or model name does not exist<br />

.PARAMOPT: Multiple definition for element name<br />

.JWDB_OPTION: A real value is expected after keyword name<br />

.JWDB_OPTION: Invalid keyword name<br />

Object name<br />

Parameter name found in name name depends directly or undirectly on DEV<br />

specification. This is not supported yet by Questa ADMS. Note that this<br />

parameter value is needed by device name. In case the DEV parameters do not<br />

affect any Questa ADMS instances nor any ELDO Y instances, then .option<br />

ADMSMCDEVSEV=warning can be used to disable the check, and let the<br />

simulation running<br />

COMMAND .PARAMOPT: wildcards in parameter name name are not<br />

allowed<br />

COMMAND .RESTART: file name name not found.<br />

COMMAND .EXTRACT or .MEAS: Unexpected FFT output name<br />

COMMAND .STEP PARAM name: parameter of type real cannot be given a<br />

string value<br />

COMMAND .STEP PARAM name: parameter cannot be a parameter of type<br />

string<br />

Eldo® User's Manual, 15.3 1407


Error and Warning Messages<br />

Errors Related to Eldo Premier<br />

Error<br />

Number<br />

Description<br />

Table A-8. Miscellaneous Errors (cont.)<br />

Error 1526 COMMAND .LIN: incorrect scattering parameter mixed-mode: name<br />

Error 1527 COMMAND .LIN: syntax error on line name<br />

Error 1528 COMMAND .LIN: unknown keyword name<br />

Error 1529 COMMAND "name": The number of harmonics is restricted to 10.<br />

Error 1530 COMMAND .CHRSIM: wave name is empty<br />

Error 1531<br />

Error 1532<br />

Error 1533<br />

Error 1534<br />

Error 1535<br />

Error 1536<br />

Error 1537<br />

Error 3001 Unable to initialize simulation with name<br />

Error 3002 OBJECT name: varying parameters can’t be used with this object<br />

Error 3003 Unable to open format name<br />

Error 3004 name should be an INTEGER<br />

Error 3005 nesting error inside #BB directive<br />

Error 3006 #BB directive must be at top level<br />

Error 3007 Can’t find subckt name for macro simulation<br />

Error 3008 Only commands are accepted here<br />

Error 3009 COMMAND .CALL_TCL name<br />

Error 3010 FBLOCK model is not available for HP 64bits version<br />

Error 3011 COMMAND .PARAMOPT: no initial value given<br />

Error 3012<br />

Error 3316 .MC analysis: Outer cannot be specified when DATAFLOW is not set to 0<br />

(LEGACY) and SAMPLING is not RAND.<br />

Errors Related to Eldo Premier<br />

The following error messages are related to Eldo Premier:<br />

1408<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Errors Related to Eldo Premier<br />

Error Number<br />

Error 101001<br />

Error 101002<br />

Error 101003<br />

Error 1021000<br />

Error 1021001<br />

Error 1021003<br />

Error 1021019<br />

Error 1021020<br />

Error 1021021<br />

Error 1021027<br />

Error 1021033<br />

Error 1021034<br />

Error 1021036<br />

Error 1021037<br />

Error 1021038<br />

Error 1021039<br />

Error 1021041<br />

Error 1021044<br />

Error 1021048<br />

Error 1021054<br />

Error 1021056<br />

Error 1021058<br />

Error 1021059<br />

Error 1021060<br />

Error 1021062<br />

Error 1021063<br />

Error 1021064<br />

Error 1021065<br />

Table A-9. Errors Related to Eldo Premier<br />

Description<br />

Address %p not handled by the alligned allocator<br />

name:%d : internal error, hRef overflow (%d)<br />

name:%d : internal error, invalid call(kind=%d)<br />

Assertion condition (name) failed in name:%d<br />

Aborting program at name:%d :name<br />

DLL 'name' open error: name<br />

Error: Plugin 'name' registration failed: error on shared library<br />

Error: Plugin 'name' registration failed: can not execute rtp_register<br />

function<br />

Error: Plugin 'name' registration failed: can not extract arguments : 'name'<br />

Can not open module 'name'<br />

Invalid value for option 'name' value: name<br />

Invalid value for option 'name' value: %ld<br />

Invalid href value in name:%d<br />

Overflow href value in name:%d<br />

No href defined for name<br />

Failed to execute command 'name'<br />

Failed to init solver for name instance ``name''<br />

Incompatible options name and name<br />

Elaboration failed<br />

Assertion condition (name) failed in name:%d\tname<br />

Error setting limit: name<br />

\tname<br />

Could not find exported subckt name for 'name'<br />

Could not find name: 'name'<br />

Function name not implemented<br />

Command .connect is currently not supported<br />

Device not supported for name<br />

Subckt name contains %d nets (i.e more than %d allowed): can not<br />

generate matrix or use premier_matrix_size_limit option<br />

Eldo® User's Manual, 15.3 1409


Error and Warning Messages<br />

Errors Related to Eldo Premier<br />

Error Number<br />

Error 1021068<br />

Error 1021069<br />

Error 1021070<br />

Error 1021074<br />

Error 1021080<br />

Error 1021083<br />

Error 1021094<br />

Error 1021101<br />

Error 1021102<br />

Error 1021104<br />

Error 1021107<br />

Error 1021108<br />

Error 1021147<br />

Error 1021174<br />

Error 1021187<br />

Error 1021192<br />

Error 1021197<br />

Table A-9. Errors Related to Eldo Premier (cont.)<br />

Description<br />

State allocation required name, only name are available<br />

Stack allocation required name, only name are available<br />

Script 'name' do not exists<br />

Matrix of name is structurally singular because of net 'name'<br />

DSPF error: duplicate ``I'' definition 'name'<br />

Invalid hierarchical reference for net 'name'<br />

In SUBCKT ``name'', name ``name'': character '.' is not supported by the<br />

simulator<br />

Option name not implemented<br />

Could not restart from file: mismatch between netlist and saved data<br />

hmin (=%e ns) : NR rejection after %d iterations at %e ns<br />

hmin (=%e ns) : fpe rejection after %d iterations at %e ns<br />

Transient stopped due to a rejection of hmin<br />

Dangling node name is only connected to one or more current source(s).<br />

Either fix the netlist or use RGNDI option to avoid convergence issue.<br />

Aborting program: name<br />

.RESTART: This version of the simulator can only restart from a file<br />

saved during a transient simulation performed with the same version of<br />

the simulator.<br />

Device name type 'name' not handled by Eldo Premier<br />

Resolution library directory appears to be corrupted, please rerun with<br />

premier_force_gen option. See “Forcing Elaboration” on page 71.<br />

1410<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Warning Messages<br />

Warning Messages<br />

Warning messages are divided into the following groups:<br />

• Global Warnings<br />

• Warnings Related to Nodes<br />

• Warnings Related to Objects<br />

• Warnings Related to Commands<br />

• Warnings Related to Models<br />

• Warnings Related to Subcircuits<br />

• Miscellaneous Warnings<br />

• Warnings Related to Eldo Premier<br />

Global Warnings<br />

Global error messages.<br />

Warning<br />

Number<br />

Warning 1<br />

Warning 2<br />

Warning 3<br />

Warning 4<br />

Warning 5<br />

Warning 6<br />

Warning 7<br />

Warning 8<br />

Warning 10<br />

Warning 12<br />

Warning 13<br />

Warning 14<br />

Description<br />

Table A-10. Global Warnings<br />

Mismatch between .iic and .cir files. .RESTART ignored<br />

The restarting values for .RESTART DC are only usable when no DC analysis<br />

is required. DC analysis omitted<br />

Unusual simulation time<br />

Due to parameter PTF, the integration scheme has been changed from Trapeze<br />

to Backward Euler<br />

unusual value for EPS name<br />

VDS and VGS initializations are useless with Eldo<br />

No output to display<br />

Due to .OPTION SWITCH, the ANALOG specification is ignored<br />

.RESTART: a catenated file<br />

.OPTION EPSDIG ignored due to .OPTION ANALOG<br />

.AC: Values for lower and upper frequencies are inverted<br />

Required ‘raw’ directory does not exist in the current directory; .OPTION<br />

sda=2 ignored<br />

Eldo® User's Manual, 15.3 1411


Error and Warning Messages<br />

Global Warnings<br />

Warning<br />

Number<br />

Description<br />

Table A-10. Global Warnings (cont.)<br />

Warning 15 AC analysis: name<br />

Warning 16 Digital description ignored in AC analysis<br />

Warning 17 .OPTION TIMEDIV ignored due to .OPTION SIMUDIV<br />

Warning 18 .OPTION EPS set to name<br />

Warning 19 Results from a TRAN analysis are being used for a DC analysis<br />

Warning 20 .OPTION GRAMP accepts only positive integer values below 20 .OPTION<br />

GRAMP ignored<br />

Warning 21 Character 'O' found just after a '.' in line name<br />

Warning 22 Non invertible matrix<br />

Warning 23 There are BJT elements in the design, LVLTIM is set to 2<br />

Warning 24 .TOPCELL should appear before any .SUBCKT definition<br />

Warning 25 Rounding errors may occur between the Digital Simulator and Eldo<br />

Warning 26 NUMDGT value name not accepted: default value used<br />

Warning 27 Probable syntax error in library name<br />

Warning 28 Negative or zero value for name ignored<br />

Warning 29 Such messages will not be displayed in future. Set .OPTION MSGNODE=0 to<br />

receive all warnings<br />

Warning 30 Unable to open file name<br />

Warning 31 No transient analysis specified .RESTART ignored<br />

Warning 32 No FOUR plot to display: FFT analysis removed<br />

Warning 33 XL: VSW0 and VSW1 set to name<br />

Warning 34 UIC specification ignored on .TRAN card in ADMS<br />

Warning 35 Multi-platform MC cannot be used<br />

Warning 36 Unable to open LIB file name<br />

Warning 37 Multiple definition of parameter name<br />

Warning 38 Command name is ignored<br />

Warning 39 First line of the command file must be a comment<br />

Warning 40 .OPTION parmhier: ‘local’ or ‘global’ expected<br />

Warning 41 Signals will be displayed in the digital output file<br />

Warning 43 overwriting MIN/MAX of parameter name<br />

1412<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Global Warnings<br />

Warning<br />

Number<br />

Warning 44<br />

Warning 45<br />

Warning 46<br />

Warning 47<br />

Warning 48<br />

Warning 49<br />

Warning 50<br />

Warning 51<br />

Warning 52<br />

Warning 53<br />

Warning 54<br />

Warning 55<br />

Warning 56<br />

Warning 57<br />

Warning 59<br />

Warning 60<br />

Warning 61<br />

Warning 62<br />

Warning 63<br />

Warning 64<br />

Warning 65<br />

Warning 66<br />

Warning 67<br />

Description<br />

Table A-10. Global Warnings (cont.)<br />

.MP not implemented with SST analysis<br />

DATA name<br />

Double definition for parameter name<br />

Unusual value given for name<br />

Multiple .TEMP not allowed in ADMS: only last TEMP value will be used<br />

This circuit exhibits singularity, due to name<br />

name is ignored because of Mach<br />

Using .OPTION RMV0, name zero-voltage sources would have been removed<br />

from the database<br />

Optimizer not active with Eldo-demo<br />

Eldo Mach partition UI can’t be used in Eldo Mach Black-Box mode<br />

Eldo Mach Black-Box mode disabled because of Eldo Mach partition UI<br />

.OPTION name has been set to<br />

Large flat netlist: Eldo switches to a mode where the order in which statements<br />

appear is important. In particular, make sure that .MODEL are defined on top<br />

of the netlist. However, you can use command .DISFLAT for restoring original<br />

Eldo behavior.<br />

JWDB cannot be disabled when running Questa ADMS<br />

OPTION RGNDI specified. It is used at least on device name<br />

Probably missing a .MODSST command. TRAN performed<br />

Option [P/N]GATEDEF also activates option FLOATGATE0<br />

OPTION name set<br />

Command name Variant name ignored<br />

Command name not supporetd in H_mode<br />

Probably missing surrounding ' or {} at or near name Eldo will consider that as<br />

an expression, which is may be not what is expected<br />

Unexpected token name That token is ignored by the parser<br />

In .ALTER: ".del lib name" is ignoredIt can't be use without libtype or key<br />

name to identify which library must be removed. Keeping "name" in file name<br />

at line number<br />

Eldo® User's Manual, 15.3 1413


Error and Warning Messages<br />

Global Warnings<br />

Warning<br />

Number<br />

Warning 68<br />

Warning 69<br />

Warning 70<br />

Warning 71<br />

Warning 72<br />

Warning 73<br />

Warning 74<br />

Warning 75<br />

Warning 76<br />

Warning 77<br />

Warning 78<br />

Warning 79<br />

Warning 80<br />

Warning 81<br />

Warning 82<br />

Warning 83<br />

Warning 84<br />

Description<br />

Table A-10. Global Warnings (cont.)<br />

Objects number mismatch while doing .restart: "name" objects to read while<br />

"name" objects currently in memory. The object's states may not be fully<br />

restored.<br />

Objects mismatch while doing .restart:<br />

reading object name "name" while expecting object "name". The object's<br />

states may not be fully restored.<br />

Command name appears in an if-endif section. This can lead to unexpected<br />

behaviour. The if-endif sections should contain device instantiations only.<br />

Unable to measure ISUB(name) in Whitebox Mode. Use blackbox instead.<br />

Maximum number of messages reached. Subsequent messages will not be<br />

displayed.<br />

Maximum number of messages reached for message name. Subsequent<br />

messages will not be displayed.<br />

.option RGND used with Questa ADMS may not add, in some cases, a<br />

grounded resistor on all HDL instance nodes<br />

Z state not allowed when SST analysis is running. SST analysis disabled.<br />

Default time specification used on device name, but .TRAN card appears later<br />

in the design. Please, set .TRAN earlier to prevent any possible time<br />

specification problem.<br />

Voltage loop found, but accepted because containing only 0 voltage sources:<br />

Unbalanced double quotes in line name. Strings defined in double quotes can<br />

not be splitted into several lines. That can lead to an unexpected behavior.<br />

Recursive inclusion of file name detected during name. Bypassing the last<br />

inclusion and continuing the execution. For your information, the inclusion<br />

stack is: name<br />

The name name comes from name and is in name (accessed during .step lib<br />

command). name will not be updated. However, if you want to force the update<br />

of elements that doesn't come from the same libraries, use .option force_update<br />

in the netlist.<br />

The name name comes from name and is in name (accessed during .step lib<br />

command). Updating of name forced. However, if you don't want to update<br />

elements that doesn't come from the same libraries, remove .option<br />

force_update from the netlist.<br />

Option name found: no more warning displayed.<br />

PORT related output name not supported on SSTAC.<br />

Multithread required, but single processor machine. Option ignored.<br />

1414<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Warnings Related to Nodes<br />

Warning<br />

Number<br />

Warning 85<br />

Warning 86<br />

Warning 87<br />

Warning 88<br />

Warning 89<br />

Warning 90<br />

Warning 91<br />

Warning 92<br />

Warning 93<br />

Warning 100<br />

Description<br />

Table A-10. Global Warnings (cont.)<br />

The characters 0 found at the beginning of node name which contains only<br />

integer characters (such as in name) are removed. Use .option nodestr if this<br />

should not be the case, i.e if those 0 should be considered as being actually part<br />

of the node name.<br />

Command line argument mthread / usethread has been removed. The<br />

command line argument -use_proc is the only supported.<br />

Some X or device instances connected in parallel have been merged into a<br />

single instance. This may cause some unexpected warning or error messages.<br />

See Eldo documentation for detail. To prevent this merging, please use .option<br />

nocatmx .<br />

Command name seen while COMPAT was already name. Ignored<br />

No .ENDCOMPAT found in the design: section between .COMPAT and .END<br />

is assumed to be in COMPAT mode.<br />

name is not supported with name<br />

Recursive file inclusion found: "name"<br />

Multiple name not allowed in Questa ADMS in compat mode: only last name<br />

values will be used<br />

name has been deactivated due to name<br />

This version of Eldo does not include name<br />

Warnings Related to Nodes<br />

The following warning messages are preceded by NODE :<br />

Table A-11. Warnings Related to Nodes<br />

Warning Description<br />

Number<br />

Warning 101 Significant node voltage variation, but of a lesser magnitude than VTH at time:<br />

number<br />

Warning 102 Number of iterations at time: number<br />

Warning 103 Attempt to redefine .IC<br />

Warning 104 Attempt to redefine .NODESET<br />

Warning 105 Decreasing time on time-values associated to the .IC command<br />

Warning 106 Global node already defined<br />

Eldo® User's Manual, 15.3 1415


Error and Warning Messages<br />

Warnings Related to Nodes<br />

Warning<br />

Number<br />

Table A-11. Warnings Related to Nodes (cont.)<br />

Description<br />

Warning 107 Less than two connections<br />

Warning 108 This node is a floating gate<br />

Warning 109 This bulk node is not biased<br />

Warning 110 Connected to capacitors only<br />

Warning 111 Less than two connections. Line: number<br />

Warning 112 Connected to grounded capacitors only. This node is removed from the netlist<br />

Warning 113 Not connected to any element. This node is removed from the netlist<br />

Warning 114 Second input signal ignored on that node<br />

Warning 115 This is an ATOD and DTOA node<br />

Warning 116 STRENGTH's CONFLICT on this node. Return to DIGITAL<br />

Warning 117 Not connected to any power supply<br />

Warning 118 No DC path to ground<br />

Warning 119 VTH1 > VTH2 on A2D converter<br />

Warning 120 VLO > VHI on D2A converter<br />

Warning 121 Signals will be displayed in the digital output file<br />

Warning 122 DC dangling node<br />

Warning 123 A capacitor of more than 1F is attached to that node<br />

Warning 124 Appears in .CONNECT only<br />

Warning 125 Previous IC value superseded<br />

Warning 126 Previous NODESET/GUESS value superseded<br />

Warning 127 Possibly no DC path on that node<br />

Warning 128 .CONNECT: node not found<br />

Warning 129 has been replaced by a DSPF network<br />

Warning 130 This node is already connected to a voltage source: D2A applied onto that node<br />

will have no effect<br />

Warning 131 This node is a floating gate for device name. Eldo connects gate of that device<br />

name to node name<br />

Warning 132 This node has been used by the DSPF process<br />

Warning 133 This node is not found, thus cannot be displayed as SIGNAL<br />

1416<br />

Eldo® User's Manual, 15.3


Warning<br />

Number<br />

Table A-11. Warnings Related to Nodes (cont.)<br />

Description<br />

Error and Warning Messages<br />

Warnings Related to Objects<br />

Warning 134 Node not found in netlist, appeared only in [P/N]GATEDEF: connectivity of<br />

floating [P/N]MOS might therefore be wrong<br />

Warning 135 This node is in a RF partition and therefore should appear in a TMODSST or<br />

FMODSST output specification rather than in a TRAN output specification<br />

Warning 136 Node name is in a RF partition and therefore should not appear in a PLOT/<br />

PROBE of type TRAN<br />

Warning 137 This node is in a non-RF partition and therefore it should appear in a transient<br />

related output specification (TRAN or FOUR), rather than in a MODSST<br />

related output specification<br />

Warning 138 This node is assumed to be global node 0<br />

Warning 139 This node is connected to capacitors only: adding GMIN across those<br />

capacitors for DC analysis<br />

Warning 140 This bulk node is not forced<br />

Warning 141 This node has not been found in the netlist<br />

Warning 142 This node is connected to zero-voltage source only<br />

Warning 143 This node is detected as a floating gate, but there are also some non-MOS-gate<br />

connections on that node: option FLOATGATE ignored on that node<br />

Warnings Related to Objects<br />

The following warning messages are preceded by OBJECT :<br />

Warning<br />

Number<br />

Warning 201<br />

Warning 202<br />

Warning 203<br />

Warning 204<br />

Warning 205<br />

Warning 206<br />

Warning 207<br />

Warning 208<br />

Table A-12. Warnings Related to Objects<br />

Description<br />

Cannot be parameterized<br />

Must be a differential amplifier. AC analysis omitted<br />

Object not in the linear domain. AC analysis omitted<br />

Already defined<br />

Unrecognized word: name<br />

No parameter or model specified<br />

Second L value ignored<br />

Second W value ignored<br />

Eldo® User's Manual, 15.3 1417


Error and Warning Messages<br />

Warnings Related to Objects<br />

Warning<br />

Number<br />

Warning 209<br />

Warning 210<br />

Warning 211<br />

Warning 212<br />

Warning 213<br />

Warning 214<br />

Warning 215<br />

Warning 216<br />

Warning 217<br />

Warning 218<br />

Warning 219<br />

Warning 220<br />

Warning 221<br />

Warning 222<br />

Warning 223<br />

Warning 224<br />

Warning 225<br />

Warning 226<br />

Warning 227<br />

Warning 228<br />

Warning 229<br />

Warning 230<br />

Warning 231<br />

Warning 232<br />

Warning 233<br />

Warning 234<br />

Table A-12. Warnings Related to Objects (cont.)<br />

Description<br />

Parameter ignored: name<br />

Z0 set to 50 W<br />

RON set to 1 kW<br />

W is less than WMIN. W is set to WMIN<br />

L is less than LMIN. L is set to LMIN<br />

Value becomes negative<br />

W undefined. Default value is taken: number<br />

L undefined. Default value is taken: number<br />

RS is negative or zero: value reset to<br />

Improper value. Default value is taken (1.0×100). Value: number<br />

Undeclared inductor<br />

Default values used for time specification<br />

Instability may occur because some of the root modules of the denominator<br />

are greater than 1, (outside the unit z circle). Poles are dumped in the standard<br />

output file<br />

Instability may occur because the real parts of some of the denominator’s<br />

root are greater than 1, (outside the unit z circle). Poles are dumped in the<br />

standard output file<br />

Last specification ignored<br />

Parameter already used as an equivalent: name<br />

CPIN already called on pin: name<br />

VSTATUS already called on: name<br />

Resistor value is 0: object not called: name<br />

This resistor is not a RC line. Parameter(s) ignored: name<br />

WEFF=W-2DW too small or negative. Default value RES used<br />

LEFF=L-2DL ≤ 0.0. Default value RES is used<br />

LEFF and WEFF ≤ 0.0. Default value CAP is used<br />

DTOA converter: Rhigh is not specified, the default value of 1 mW is taken<br />

DTOA converter: Rlow is not specified, the default value of 1 mW is taken<br />

This element cannot be converted into its switch equivalent<br />

1418<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Warnings Related to Objects<br />

Warning<br />

Number<br />

Warning 235<br />

Warning 236<br />

Warning 237<br />

Warning 238<br />

Warning 239<br />

Warning 240<br />

Warning 241<br />

Warning 242<br />

Warning 243<br />

Warning 244<br />

Warning 245<br />

Warning 246<br />

Warning 247<br />

Warning 248<br />

Warning 249<br />

Warning 250<br />

Warning 251<br />

Warning 252<br />

Warning 253<br />

Warning 254<br />

Warning 255<br />

Warning 256<br />

Warning 257<br />

Warning 258<br />

Warning 259<br />

Warning 260<br />

Table A-12. Warnings Related to Objects (cont.)<br />

Description<br />

Capacitance value is negative or zero<br />

Node name PARAM:xxxx found: This might be confused with PARAM:xxx<br />

The following dimension has an unusual value: name<br />

.SIGBUS: VHI < VLO<br />

VHI < VLO on .D2A<br />

Object Warning<br />

Unable to plot the capacitances of this device, only charges are available<br />

Unable to plot the charges of this device, only capacitances are available<br />

This object makes reference to the above node, which will be assumed to be<br />

ground node 0<br />

Level cannot be given on the instance<br />

Self in short circuit: Object not created<br />

Temperature given for TDEV device: TDEV ignored.<br />

Capacitance value of more than 1F<br />

There are several ports with that index<br />

The first pin of that element is undefined: Object not created<br />

The second pin of that element is undefined: Object not created<br />

Old syntax: Please use Ixx or Vxx element with PORT specification<br />

Self-connected objected not created.<br />

Parameter PGATE is defined for JUNCAP model only<br />

Differential lines are not supported, the reference plane will be replaced by<br />

the ground<br />

Size not consistent with LMIN/LMAX/WMIN/WMAX<br />

Very small value specified.<br />

Values are out of range for<br />

May be diode instantiation was intended, but its name could not start by<br />

‘DEL’, which is a prefix reserved for Eldo DELAY primitive.<br />

May be CCCS instantiation was intended, but its name could not be started<br />

by ‘/FNZ’, which is a prefix reserved for Eldo FNS/FNZ primitive.<br />

May be SUBCKT instantiation was intended, but its name could not be<br />

started by ‘XOR’, which is a prefix reserved for Eldo XOR primitive.<br />

Eldo® User's Manual, 15.3 1419


Error and Warning Messages<br />

Warnings Related to Objects<br />

Warning<br />

Number<br />

Table A-12. Warnings Related to Objects (cont.)<br />

Description<br />

Warning 261 May be Current Source instantiation was intended but its name could not be<br />

started by ‘INV’, which is a prefix reserved for Eldo INVERTOR primitive<br />

Warning 262 Incorrect value for keyword ABS (1 or 0 expected). Using 0 as default<br />

Warning 263 Ambiguity on parameter name<br />

Warning 264 Object not yet created<br />

Warning 265 W or L not specified on that device. Default setting relevant to that model<br />

will be used<br />

Warning 266 The timestep chosen for the simulation exceeds the delay<br />

Warning 267 Very small resistors have been encountered. This may cause nonconvergence<br />

problems<br />

Warning 268 Only 3 pins specified: bulk node set at 0<br />

Warning 269 Unsupported keyword<br />

Warning 270 Multiple DC specification found: only last one considered<br />

Warning 271 Multiple AC specification found: only last one considered<br />

Warning 272 Multiple TRAN specification found: only last one considered<br />

Warning 273 Missing IPORT specification<br />

Warning 274 name already specified, and name now specified. name takes precedence<br />

Warning 275 Negative resistor has been encountered. This may cause non-convergence<br />

problems<br />

Warning 276 Unusual large value inductance: Might be that DCFEED specification is<br />

missing on the instance<br />

Warning 277 Unusual large value capacitance: Might be that DCCUT specification is<br />

missing on the instance<br />

Warning 278 R value specified is negative or greater than the last time value. Period<br />

parameter ignored<br />

Warning 279 Multiple definition of parameter name: New specification 'name' overwrites<br />

previous specification 'name'<br />

Warning 280 Model level attached to that device is level %ld: i.e. a UDM or a GUDM<br />

model<br />

Warning 281 This source contains DC/TRAN and noise specifications. Only the noise<br />

specification will be considered during a .noisetran analysis. To obtain a DC<br />

offset, specify two voltage sources in series (or two current sources in<br />

parallel) with one source containing the DC specification and the other<br />

source containing the noise specification<br />

1420<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Warnings Related to Commands<br />

Warning<br />

Number<br />

Warning 282<br />

Warning 283<br />

Warning 284<br />

Warning 285<br />

Warning 286<br />

Warning 287<br />

Warning 288<br />

Warning 289<br />

Table A-12. Warnings Related to Objects (cont.)<br />

Description<br />

LFSR type source. First TAP value must be largest of all TAP values<br />

I(name,name) not supported for this type of devices: name ignored<br />

Capacitance value is negative<br />

LFSR type source. Seed (val) exceeds range of max TAP, reset to 2^2-1.<br />

Warnings Related to Commands<br />

The following warning messages are preceded by COMMAND :<br />

Warning<br />

Number<br />

Warning 301<br />

Warning 302<br />

Warning 303<br />

Warning 304<br />

Warning 305<br />

Warning 306<br />

Warning 307<br />

Warning 308<br />

Warning 309<br />

Warning 310<br />

Warning 311<br />

Warning 312<br />

Warning 313<br />

Warning 314<br />

Description<br />

Table A-13. Warnings Related to Commands<br />

.AC: FREQ1 is set to 1Hz<br />

.AC: FREQ2 is set to 1Hz<br />

.IC name: Ignored<br />

.NODESET name: Ignored<br />

.SOLVE: R sweep must be between positive values<br />

.SOLVE: No solution has been found<br />

.SOLVE: No solution has been found in the given interval<br />

.IC or .NODESET name: This value does not match the value specified in the input<br />

signal. Zero-time value is: number<br />

.CHRSIM: The input signal will force the simulation to end at V=number<br />

.CHRSIM: The input signal will force the simulation to end at time = number<br />

.OPTION name: Ignored<br />

.OPTIMIZE name: Ignored<br />

.WIDTH name: Ignored<br />

.OPTFOUR: Obsolete statement ignored<br />

Eldo® User's Manual, 15.3 1421


Error and Warning Messages<br />

Warnings Related to Commands<br />

Warning<br />

Number<br />

Warning 315<br />

Warning 316<br />

Warning 317<br />

Warning 318<br />

Warning 319<br />

Warning 320<br />

Warning 322<br />

Warning 323<br />

Warning 324<br />

Warning 325<br />

Warning 326<br />

Warning 327<br />

Warning 328<br />

Warning 329<br />

Warning 330<br />

Warning 331<br />

Warning 332<br />

Warning 333<br />

Warning 334<br />

Warning 335<br />

Warning 336<br />

Warning 337<br />

Warning 338<br />

Warning 339<br />

Warning 340<br />

Warning 341<br />

Warning 342<br />

Warning 343<br />

Table A-13. Warnings Related to Commands (cont.)<br />

Description<br />

.GLOBAL: Nodes specified in this card are considered as global nodes from the<br />

introduction of the corresponding .GLOBAL card, NOT BEFORE<br />

.ENDS: The name does not match the .SUBCKT name<br />

name: Option unknown<br />

.RAMP name: Specification unknown. .RAMP ignored<br />

.PZ: Previous specification on name ignored<br />

.STEP: Previous card superseded<br />

.NOISE: Previous specification ignored<br />

.DC: Previous values superseded<br />

.RAMP: Previous values superseded<br />

.TRAN: Previous values superseded<br />

.OPTIMIZE/.EXTRACT: Node name is connected to ground<br />

.TRAN: The parameter TMAX is not used<br />

.AC: Previous values superseded<br />

.TRAN: Specification ignored<br />

.TRAN: UIC specification accepted<br />

.SENS: Element name not found<br />

.SENS: Node name not found<br />

.PZ: Node name not found<br />

.PZ: Element name not found<br />

.TF: Node name not found: .TF ignored<br />

.TF: Element name not found: .TF ignored<br />

.FIX: Element name not found<br />

.UNFIX: Element name not found<br />

.NOISE: Element/object name not found<br />

.MC: Element name not found<br />

.MC: Node name not found<br />

.STEP: Parameter name not found<br />

.STEP: No MOS name found<br />

1422<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Warnings Related to Commands<br />

Warning<br />

Number<br />

Warning 344<br />

Warning 345<br />

Warning 346<br />

Warning 347<br />

Warning 348<br />

Warning 349<br />

Warning 350<br />

Warning 351<br />

Warning 352<br />

Warning 353<br />

Warning 354<br />

Warning 355<br />

Warning 356<br />

Warning 357<br />

Warning 358<br />

Warning 359<br />

Warning 360<br />

Warning 361<br />

Warning 362<br />

Warning 363<br />

Warning 364<br />

Warning 365<br />

Warning 366<br />

Warning 367<br />

Warning 368<br />

Warning 369<br />

Warning 370<br />

Warning 371<br />

Table A-13. Warnings Related to Commands (cont.)<br />

Description<br />

.OPTFOUR: Voltage source name found<br />

.OPTFOUR: Node name found<br />

.PRINT or .PLOT: Node name undeclared<br />

.PRINT or .PLOT: Element name undeclared<br />

.DC: Unknown sweep source name<br />

.AC: No output specified in AC analysis: use .PLOT or .PRINT statement<br />

.MC: Specification ignored<br />

.OPTIMIZE: Ignored<br />

.NOISE: Must be used in AC analysis only. NOISE analysis omitted<br />

.IC: Node name not found<br />

.NODESET: Node name not found<br />

.GUESS: Node name not found<br />

.CONSO: Voltage source name not found<br />

.PROBE: Too many nodes to display. This value can be overridden by .OPTION<br />

LIMPROBE = value<br />

.OPTIMIZE: New AC input name is ignored<br />

.PARAM: “=” is missing in expression name<br />

.OPTIMIZE: Unexpected expression: name<br />

.EXTRACT: Unexpected expression: name<br />

.OPTIMIZE: Bounds for name must be MIN MAX<br />

.PLOT/.PRINT: Wave name will be plotted in .MEAS file<br />

.OPTOMIZE: GAIN target is unusually high: name<br />

.PLOTBUS: Bus name not defined<br />

.ANALOG: name not found<br />

.PRINT or .PLOT or .PROBE: name not found<br />

.WCASE: name not known<br />

.MC ignored: Neither LOT or DEV specification found<br />

.SETSOA: Expecting D E or M: name found<br />

.SETSOA: Specification name unknown<br />

Eldo® User's Manual, 15.3 1423


Error and Warning Messages<br />

Warnings Related to Commands<br />

Warning<br />

Number<br />

Table A-13. Warnings Related to Commands (cont.)<br />

Description<br />

Warning 372 .SETSOA: Object name unknown<br />

Warning 373 .SETSOA: Model name unknown<br />

Warning 374 name analysis omitted because of the DCSWEEP analysis found<br />

Warning 375 .SETSOA: Double specification on name<br />

Warning 376 .LOOP: Object name undefined<br />

Warning 377 .NOISETRAN is currently incompatible with name. Transient Noise Analysis is<br />

therefore omitted. For example, when a netlist contains both .MC and<br />

.NOISETRAN commands, the .NOISETRAN command is ignored.<br />

Warning 378 EPS is possibly too large (name): The usual EPS value for Transient Noise is 1.0e-6<br />

Warning 379 RELTOL is possibly too large (name): %e The usual RELTOL value for Transient<br />

Noise is<br />

Warning 380 VNTOL is possibly too large (name): %e The usual VNTOL value for Transient<br />

Noise is<br />

Warning 381 .PLOT/.PRINT: Wave name will not be plotted in .ASCII file<br />

Warning 382 .OPTION name<br />

Warning 392 .STEP PARAM name: Sweep already defined in the .DC command<br />

Warning 393 .PROBE ISUB (name): No wild character allowed<br />

Warning 394 .PZ ignored because of FNZ functions<br />

Warning 395 .PROBE name: No nodes/objects found<br />

Warning 396 ISUB(name) not accessible: name is a global node<br />

Warning 397 ISUB: Node name not found<br />

Warning 398 .PROBE: Missing keyword AC, DC or TRAN<br />

Warning 399 Unable to display I(M/B/Jxx): name assumed<br />

Warning 400 .TRAN: TSTART > TSTOP: TSTART set to 0<br />

Warning 401 .STEP: INCR_SPEC > T2-T1<br />

Warning 402 .NOISE: zero or negative argument<br />

Warning 403 .AC: Frequency cannot be 0.0 or less: The value has been reset to 1.0<br />

Warning 404 .MODDUP: element name not found<br />

Warning 405 .MODDUP: cannot be used on element name<br />

Warning 406 .LIB cannot find name<br />

1424<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Warnings Related to Commands<br />

Warning<br />

Number<br />

Warning 407<br />

Warning 408<br />

Warning 409<br />

Warning 410<br />

Warning 411<br />

Warning 412<br />

Warning 413<br />

Warning 414<br />

Warning 415<br />

Warning 416<br />

Warning 417<br />

Warning 418<br />

Warning 419<br />

Warning 420<br />

Warning 421<br />

Warning 422<br />

Warning 423<br />

Warning 424<br />

Warning 425<br />

Warning 426<br />

Warning 427<br />

Warning 428<br />

Warning 429<br />

Warning 430<br />

Warning 431<br />

Warning 432<br />

Warning 433<br />

Warning 434<br />

Table A-13. Warnings Related to Commands (cont.)<br />

Description<br />

.SETSOA ignoring SOA on model name<br />

.SETSOA ignoring SOA on object name<br />

.TF analysis not performed: Bad operating point<br />

The line is too long: It has been truncated<br />

.OPTNOISE: previous command superseded<br />

.OPTNOISE: ON/OFF expected: name found<br />

.MC: Unknown specification name: LOT or DEV expected<br />

.FOUR: Parameter TSTOP is ignored<br />

.TRAN: Parameter TPRINT is set to: name<br />

.OPTFOUR: Previous values superseded<br />

.USE: DC value for source name has been changed<br />

.GLOBAL: Some subcircuits are already defined, if these subcircuits make use of<br />

nodes which will appear in .GLOBAL statements, results can be in error<br />

.OPTFOUR: Using INTERPOLATE=0 may increase the number of points<br />

computed by the simulator<br />

Missing FPORT number name<br />

LOT/DEV specification on parameter name ignored<br />

.PZ: Specified device is not a ‘voltage-like' element<br />

.OPTFOUR: TSTART > TSTOP: TSTART is ignored<br />

.OPTFOUR: TSTART < 0: TSTART is ignored<br />

.OPTFOUR: TSTOP < 0: TSTOP is ignored<br />

.OPTFOUR: NBPT < 0: NBPT is ignored<br />

.OPTFOUR: FS < 0: FS is ignored<br />

.OPTFOUR: Fnormal < 0: Fnormal is ignored<br />

.OPTFOUR: Fmin < 0: Fmin is ignored<br />

.OPTFOUR: Fmax < 0: Fmax is ignored<br />

.OPTFOUR: Fund < 0: Fund is ignored<br />

name: Only Magnitude or DB of NOISE outputs are available<br />

LOT/DEV specification is ignored on the non-primitive parameter name<br />

The given value for VSW0 is superior to VSW1:The values will be interchanged<br />

Eldo® User's Manual, 15.3 1425


Error and Warning Messages<br />

Warnings Related to Commands<br />

Warning<br />

Number<br />

Warning 435<br />

Warning 436<br />

Warning 437<br />

Warning 438<br />

Warning 439<br />

Warning 440<br />

Warning 441<br />

Warning 442<br />

Warning 443<br />

Warning 444<br />

Warning 445<br />

Warning 446<br />

Warning 447<br />

Warning 448<br />

Warning 449<br />

Warning 450<br />

Warning 451<br />

Warning 452<br />

Warning 453<br />

Warning 454<br />

Warning 455<br />

Warning 456<br />

Warning 457<br />

Warning 458<br />

Table A-13. Warnings Related to Commands (cont.)<br />

Description<br />

DEFAD/DEFAS/DEFPD/DEFPS overwritten by .OPTION XA for MOS models<br />

BERKELEY/BSIMxx/EKV and MM9<br />

.EXTRACT: Unable to open file name<br />

.PLOT/.PRINT: wave name will be plotted as<br />

.TRAN: last Tstep ignored.<br />

.SETBUS: last Time point ignored<br />

name ignored with Eldo Mach<br />

.STEP: increment must be positive: name used<br />

.PARAM name<br />

.MEAS name is ignored. This is because specification name is not supported<br />

.STEP: Compared to Eldo 5.4, the semantic of the .STEP ... LIN has changed: LIN<br />

stands for ‘number of runs’. Rather use keyword INCR if ‘increment value’ is<br />

meant<br />

.TVINCLUDE: name<br />

.PLOT: name statement removed. It appears more than once.<br />

.STEP LIB: name. This library is not referenced in the netlist. Please check that it<br />

was first used within a .LIB command. Model descriptions and parameter values are<br />

unchanged.<br />

Host name is already defined. Statement ignored.<br />

EXTRACT MODE: name<br />

Can't update correlation coefficient depending of parameter name<br />

.CORREL ignored, no Monte-Carlo analysis found.<br />

.DSP name<br />

.PLOT: unexpected output name. Missing .STEP or .TEMP card for using that type<br />

of output<br />

.PLOTBUS: limited to 53 bits: name not plotted<br />

.SIGBUS: Only first values specified for bus name will be taken for .SST analysis<br />

.STEP: no SST analysis found, keyword (AUTOINCR) ignored<br />

.MC: VARY was already specified. VARY overwritten<br />

1426<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Warnings Related to Commands<br />

Warning<br />

Number<br />

Warning 459<br />

Warning 460<br />

Warning 461<br />

Warning 462<br />

Warning 463<br />

Warning 464<br />

Warning 465<br />

Warning 466<br />

Warning 467<br />

Warning 468<br />

Warning 469<br />

Warning 470<br />

Warning 471<br />

Warning 472<br />

Warning 473<br />

Warning 474<br />

Warning 475<br />

Warning 476<br />

Warning 477<br />

Warning 478<br />

Warning 479<br />

Warning 480<br />

Warning 481<br />

Warning 482<br />

Warning 483<br />

Table A-13. Warnings Related to Commands (cont.)<br />

Description<br />

.EXTRACT DC: DCTRAN assumed since both transient and ac analysis found in<br />

the netlist<br />

.DSPMOD: Model name is ignored (not used by any .DSP command)<br />

.DSP: Element name is ignored (not used inside the netlist)<br />

.VEC: name<br />

DSPF command was processed. to disable parsing these commands use .option<br />

SPF_PROCESSCOMMANDS=0<br />

.AGEMODEL: Parameter name is ignored. It is not related to reliability analysis<br />

DSPF plot of node name limited to %d components. Use .option<br />

MAX_DSPF_PLOT to override this limit<br />

.AGE: name<br />

.HVEC: name<br />

.DCMISMATCH: name not found<br />

STRESS FILE LOADING: name<br />

.DCMISMATCH: no output available nor compatible extract found<br />

.SENSPARAM: instance name does not exist<br />

.SENSPARAM: subckt name does not exist<br />

.BIND: subckt instance name does not exist<br />

.BIND: subckt definition name does not exist<br />

.DSPF_INCLUDE: dspf file not specified<br />

.OPTFOUR: TSTART > .TRAN TSTOP ! FFT analysis ignored<br />

.MC: measurement name not found, ignored<br />

.PRINTFILE: xaxis STEPname has been set to: %e ns<br />

.DISCARD: subckt name does not exist<br />

.DISCARD: subckt instance name does not exist<br />

.OPTIMIZE: parameter name has been deprecated and will be removed from future<br />

releases<br />

.OPTIMIZE: parameter name ignored<br />

.OPTIMIZE: name scale cannot be applied to measurement (UBOUND or<br />

LBOUND is


Error and Warning Messages<br />

Warnings Related to Models<br />

Warning<br />

Number<br />

Warning 484<br />

Warning 485<br />

Warning 486<br />

Warning 487<br />

Warning 488<br />

Warning 489<br />

Warning 490<br />

Warning 491<br />

Warning 492<br />

Warning 493<br />

Warning 494<br />

Warning 495<br />

Warning 496<br />

Warning 497<br />

Warning 498<br />

Warning 499<br />

Warning 500<br />

Table A-13. Warnings Related to Commands (cont.)<br />

Description<br />

.DSPF_INCLUDE: instance name appears in several DSPF files. First occurrence<br />

used<br />

"name": on bus name. No transient analysis specified, this command is ignored<br />

.DSPF_INCLUDE: unknown argument name<br />

.DISCARD: deviceinstance name does not exist<br />

.MSELECT: Model name is not defined<br />

.IGNORE_DSPF/SELECT_DSPF: name with wildcards should be enclosed in<br />

double quotes ""<br />

.INCLUDE/LIB : unknown keyword name : Ignored<br />

.PROBE/PLOT/PRINT : unknown keyword name : Ignored<br />

.PLOT : keyword (name) has been ignored. It is not compatible with the required<br />

analysis<br />

.DEFAULT : keyword (name) is ignored on active devices<br />

.SCALE : unknown keyword name. Keyword EXCEPT expected. The list of<br />

models or element is ignored<br />

.DCMISMATCH: extract name is incompatible with dcmismatch requirements<br />

.PROBE: keywords MASK and EXCEPT can not be applied to generic probe of<br />

type VX, IX or ISUB<br />

.SCALE: No match found for (name)<br />

.PRINT or .PLOT: quantity name can not be extracted according to port<br />

specifications<br />

.SCALE : Unexpected keyword (name) for this scale type: Ignored<br />

.PLOT/.PROBE: no dcsweep analysis found in the netlist. DC plot ignored<br />

Warnings Related to Models<br />

The following warning messages are preceded by MODEL :<br />

Warning<br />

Number<br />

Warning 501<br />

Description<br />

Table A-14. Warnings Related to Models<br />

No parameter specified. Default values are used<br />

1428<br />

Eldo® User's Manual, 15.3


Warning<br />

Number<br />

Table A-14. Warnings Related to Models (cont.)<br />

Description<br />

Error and Warning Messages<br />

Warnings Related to Models<br />

Warning 502 GOFF less than zero<br />

Warning 503 Access resistors for this model are created as objects<br />

Warning 504 Unable to match reverse and forward region. BV = number<br />

Warning 505 Reset parameter<br />

Warning 508 LAMBDA value is high and may cause problems of convergence<br />

Warning 509 KB1 is set to number<br />

Warning 510 Parameter XQC ignored<br />

Warning 512 IBV set to number milliAmps. IBV has been increased in order to create a<br />

continuous diode current representation in the breakdown region.<br />

Warning 513 Parameter CF1 set to the default value: number<br />

Warning 514 Parameter CF3 set to the default value: number<br />

Warning 515 Parameters specific to BSIM appear and LEVEL is neither 8 or 11<br />

Warning 516 LOT and DEV cannot be applied on R|L|C parameters<br />

Warning 517 Parameter MJSW must be less than 1.0. Default is used<br />

Warning 518 Parameter MJ must be less than 1.0. Default is used<br />

Warning 519 LOT specification is less than or equal to zero<br />

Warning 520 DEV specification is less than or equal to zero<br />

Warning 521 The following parameter has an unusual value:<br />

Warning 522 DMUT parameter appears in a non-ST model<br />

Warning 523 SUBSN=1 is not allowed on a lateral PNP<br />

Warning 524 VTH1 > VTH2<br />

Warning 525 VLO > VHI<br />

Warning 526 Model Warning<br />

Warning 527 Parameter AF has an unusual value<br />

Warning 528 Parameter KF has an unusual value<br />

Warning 529 Only one threshold is allowed for BIT A2D models: The average value has<br />

been taken<br />

Warning 530 MCMOD cannot be applied on the model parameter: It can only be applied to a<br />

nominal value: MCMOD ignored<br />

Warning 531 Sinwave function: Theta factor is negative<br />

Eldo® User's Manual, 15.3 1429


Error and Warning Messages<br />

Warnings Related to Models<br />

Table A-14. Warnings Related to Models (cont.)<br />

Warning Description<br />

Number<br />

Warning 532 COX is ignored because TOX is given<br />

Warning 533 The model parameters (DW/RSH) that are specific to RC WIRE have been<br />

ignored<br />

Warning 534 Double definition for parameter(s)<br />

Warning 535 Level 21 is now replaced by Level name. For future versions make sure to use<br />

that level<br />

Warning 536 The model parameter RHO is needed for ST model<br />

Warning 537 name, parameter ignored<br />

Warning 538<br />

Warning 539 Very small value for TNOM, this can cause simulation errors<br />

Warning 540 This model has no equivalent on TI Spice: it will be mapped to Eldo model %s<br />

Warning 541 VHI and VLO are equal<br />

Warning 542 VHI and VLO are inverted<br />

Warning 543 VHI, VLO parameters specifications are ignored because VHIREF, VLOREF<br />

are given<br />

Warning 544 VTH, VTH1, VTH2 parameters specifications are ignored because VHIREF,<br />

VLOREF are given<br />

Warning 545 VLO, VHI, parameters specifications are ignored on A2D model<br />

Warning 546 %s undefined. Default value is taken<br />

Warning 547 %s is not expected for BIT A2D models. Using %s value (%e) for VTH<br />

Warning 548 VTH is already defined, %s is not expected for BIT A2D models. Ignoring<br />

parameter<br />

Warning 549 VTH, VTH1, VTH2 parameters specifications are ignored on D2A model<br />

Warning 550 Model level switched to %s because of presence of parameter %s<br />

Warning 551 Second model definition ignored<br />

Warning 552 %s has not been specified. This node will be grounded<br />

Warning 553 VTHREL, VTH1REL, VTH2REL parameters specifications are ignored<br />

because VHIREF, VLOREF are not given<br />

Warning 554 Level reset to %d<br />

1430<br />

Eldo® User's Manual, 15.3


Warnings Related to Subcircuits<br />

The following warning messages are preceded by SUBCKT :<br />

Error and Warning Messages<br />

Warnings Related to Subcircuits<br />

Table A-15. Warnings Related to Subcircuits<br />

Warning Description<br />

Number<br />

Warning 701 Unused parameter: name<br />

Warning 702 name: Cannot be updated with .LIB in interactive mode<br />

Warning 703 SUBCKT name cannot be that of a keyword<br />

Warning 704 This pin name appears more than once on definition<br />

Warning 705 The header of this SUBCKT contains node names defined as global<br />

Warning 706 In subckt %s, the parameter %s is already specified during instantiation: local<br />

affectation ignored<br />

Warning 707 is not used. Associated ".part" command line is ignored<br />

Warning 708 parameter %s exists and is set in both current subckt environment and in subckt<br />

%s. Value will be taken from current subckt environment %s<br />

Warning 709 parameter %s exists and is set in both current subckt environment and in subckt<br />

%s. Value will be taken from subckt %s<br />

Warning 710 parameter %s exists and is set in both current subckt environment and at top.<br />

Value will be taken from top level<br />

Warning 711 parameter %s exists and is set in both current subckt environment and at top.<br />

Value will be taken from current subckt environment %s<br />

Warning 712 Associated ".part" has no effect. This subckt is not used<br />

Warning 713 The header of this SUBCKT contains node names defined as global. Such<br />

nodes will be connected to the parent nodes which are passed by the X<br />

instance. If this is not the expected behaviour, i.e if it is expected that these<br />

nodes are connected to the global nodes, then use .OPTION<br />

DSCGLOB=GLOB<br />

Warning 714 Second definition ignored<br />

Miscellaneous Warnings<br />

Miscellaneous error messages.<br />

Eldo® User's Manual, 15.3 1431


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Table A-16. Miscellaneous Warnings<br />

Warning Description<br />

Number<br />

Warning 901 Last time ignored on input signal at line: number<br />

Warning 902 name: Model parameter ignored<br />

Warning 903 Too many nodes to plot (>8)<br />

Warning 904 Previous value of name superseded<br />

Warning 905 VSAT is set to: number<br />

Warning 906 VSATM is set to: number<br />

Warning 907 Parameter not used: name<br />

Warning 908 name: This parameter cannot be assigned<br />

Warning 909 name: Unknown parameter<br />

Warning 910 Unable to measure ISUB(name): Multiple connections<br />

Warning 911 PORT name has only one connection<br />

Warning 912 IBIS: name<br />

Warning 913 IBIS: parameter name ignored<br />

Warning 914 IBIS: parameter name not in the interval [0,1] is ignored<br />

Warning 915 Probably missing a path to ground from object name<br />

Warning 916 Unable to parse expression name<br />

Warning 917 SWEEP specification on TRAN/DC/AC ignored when .STEP are used: these<br />

two syntaxes are not compatible<br />

Warning 918 The check for instance duplicates has been disabled (netlist too large). Use<br />

.OPTION CHECKDUPL to override this limit.<br />

Warning 919 .OPTION ACCOUT=1 can not be applied to FOUR(name).<br />

Warning 920 Instances name, * not created because M is 0*<br />

Warning 921 MC variation on name<br />

Warning 922 .OPTION MEASDGT: value must be between 0 and 18<br />

Warning 923 .OPTION MEASLINE: value can't be less than zero<br />

Warning 924 Parameter %s is not a primitive. Unable to apply sensitivity<br />

Warning 925 Character % ignored in expression<br />

Warning 926<br />

.MEAS on %s: Using voltage-dependant value on %s. This is not allowed:<br />

value assumed to be 0.0<br />

1432<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Warning 927<br />

Warning 928<br />

Warning 929<br />

Warning 930<br />

Warning 931<br />

Warning 932<br />

Warning 933<br />

Warning 934<br />

Warning 935<br />

Warning 936<br />

Warning 937<br />

Warning 938<br />

Warning 939<br />

Warning 940<br />

Warning 941<br />

Warning 942<br />

Warning 943<br />

Warning 944<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

No IPROBE named %s found<br />

.PARAMOPT %s : %s has already been defined using (xinit=%s, xmin=%s,<br />

xmax=%s, xincr=%s)<br />

.PARAMOPT %s : %s is now defined with (xinit=%s, xmin=%s, xmax=%s,<br />

xincr=%s)<br />

OBJECT "%s": TABLE not supported in NOISETRAN analysis. Table<br />

values ignored<br />

Command %s: %s expected. Command ignored<br />

LOCATION_MAP File: %s doesn't exists or is not a file<br />

Environment variable MGC_LOCATION_MAP = %s doesn't exists or is not<br />

a file<br />

Unable to find the mgc_location_map file. That may lead to errors during the<br />

parse<br />

If it is expected to accept Hierarchical characters in node name, it is still<br />

possible to use .option dotnode<br />

COMMAND .SNF: duplicate SNF found with label %s. The values of the<br />

previous SNF will be overwritten by the current one. If this is not expected,<br />

please change the label of one of these SNF<br />

COMMAND .OPTION %s is ignored on %s side<br />

In mgc_location_map, %s: No such directory. Soft name %s not loaded: Eldo<br />

might not be able to load some libraries<br />

Inductor/"voltage source" loop found. Voltage loop made of 0 voltage<br />

sources only can be accepted using .OPTION LOOPV0. Voltage loop may<br />

lead to singular matrix during simulation<br />

Unable to find a model on device %s which satisfies binning conditions<br />

(lmin, lmax, ...) and model name (current model name is %s)<br />

Because it would give negative value, small-channel noise contribution<br />

disabled on device %s<br />

%s cannot be executed when design contains "%s" descriptions<br />

The netlist contains both a .variation block and some montecarlo variation<br />

specifications given on .param, device or model parameters. Only the<br />

.variation block is used, the other variation specifications are ignored<br />

Eldo® User's Manual, 15.3 1433


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Warning 945 Both the size of device %s and binned parameters of its model are affected by<br />

MC variation. This situation cannot be handled. Use .option<br />

"mc_ignore_binning" to ignore montecarlo variation on binning parameter<br />

(lmin/lmax...)<br />

Warning 946 Unable to evaluate GET_E(%s) on instance %s. That parameter has to be<br />

defined either on the instance or in the model card of that instance<br />

Warning 947 COMMAND "%s": previous values superseded<br />

Warning 948 COMMAND .SAVE : Saving DC data requested but No DC analysis has<br />

been actually performed<br />

Warning 949 COMMAND "%s": Parameter %s ignored<br />

Warning 950 COMMAND "%s": only top level parameters are elaborated in %s mode.<br />

That may lead to errors during the parse of if-endif statements<br />

Warning 951 COMMAND "%s": Saving time lower than HMIN. Set Eldo option 'HMIN'<br />

to a lower value if needed<br />

Warning 952 %d threads have been requested but Eldo detects only %d processors. Using<br />

more threads than the number of processors of the computer might greatly<br />

slow down the simulation<br />

Warning 953 The number of requested threads (%d) is too high compared to the detected<br />

number of processors. Eldo will use %d threads<br />

Warning 954 Negative number of threads has been specified. Eldo will run in monothread<br />

Warning 955 COMMAND .SETSOA: Error in the expression %s<br />

Warning 959 COMMAND "%s": Unable to parse expression %s<br />

Warning 962 OBJECT "%s": %s is negative, value is clipped to 0.0<br />

Warning 963 COMMAND .NOISETRAN inside Premier parameter %s has been %s<br />

Warning 1001 .NOISETRAN ignored: Only single TRAN analysis is allowed<br />

Warning 1002 .NOISE ignored because the output node is not defined<br />

Warning 1003 .SWITCH: Element name not found<br />

Warning 1004 .MCMOD: Parameter name not known<br />

Warning 1005 .MCMOD: Element name not known<br />

Warning 1006 COMMAND name removed from the include file<br />

Warning 1007 .SAVE and .RESTART used on the same file: .SAVE ignored<br />

Warning 1008 COMMAND name found in include file<br />

1434<br />

Eldo® User's Manual, 15.3


Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning 1009 .OPTION: Incorrect range for name<br />

Warning 1010 .PRINT or .PLOT: AC-like output name for non-AC analysis<br />

Warning 1011 .PRINT or .PLOT: Unexpected AC output name<br />

Warning 1012 .PLOT element name is not declared<br />

Warning 1013 .PROBE/.SAVE element name is not declared<br />

Warning 1014 .VIEW element name is not declared<br />

Warning 1015 Element name is not found<br />

Warning 1016 .SOLVE: Previous specifications superseded<br />

Warning 1017 AC input sources used in connection with FPORT<br />

Warning 1018 Digital gates are not handled in DCSWEEP<br />

Warning 1019 .WC and .MC cannot be used together: .WC ignored<br />

Warning 1020 .PZ analysis might give unexpected results because several AC sources are<br />

found in the circuit<br />

Warning 1021 .PRINT or .PLOT: Unexpected AC output name for SST<br />

Warning 1022 .PRINT or .PLOT: Only V() or I() is allowed for SST type<br />

Warning 1023 .TDEV: Object name not found<br />

Warning 1024 .PLOT element name not declared<br />

Warning 1025 .PRINT or .PLOT: Unexpected FFT output name<br />

Warning 1026 .PRINT/.PLOT/.PROBE: Missing declaration .FOUR LABEL=name<br />

Warning 1027 .PRINT or .PLOT SSTNOISE: Expected SSTNOISE output, and not name<br />

Warning 1028 .MEAS: Element name not declared<br />

Warning 1029 .EXTRACT: Element name not declared<br />

Warning 1030 .PRINT: Smith chart expects non-AC wave names<br />

Warning 1031 .SSTPROBE name: second node assumed to be 0<br />

Warning 1032 .PRINT/PLOT/PROBE/EXTRACT: bad number of tones specified<br />

Warning 1033 .PLOT: name. wave type is incompatible with extract type<br />

Warning 1034 name: Group-Delay specifications ignored in SST analysis<br />

Warning 1035 .PRINT or .PLOT: Only WOPT() is allowed for OPT type<br />

Warning 1036 SUBCKT name will be simulated as top level<br />

Eldo® User's Manual, 15.3 1435


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Warning 1037<br />

Warning 1038<br />

Warning 1039<br />

Warning 1040<br />

Warning 1041<br />

Warning 1042<br />

Warning 1043<br />

Warning 1044<br />

Warning 1045<br />

Warning 1046<br />

Warning 1047<br />

Warning 1048<br />

Warning 1049<br />

Warning 1050<br />

Warning 1051<br />

Warning 1052<br />

Warning 1053<br />

Warning 1054<br />

Warning 1055<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Standard Eldo Mach commands ignored in Eldo Mach Black-Box mode<br />

Command .EXTRACT OPMODE on name: name is not a valid keyword.<br />

COMMAND .STEP: keyword (AUTOINCR) is ignored. It can only be<br />

applied on .STEP PARAM syntax.<br />

COMMAND .MC: keyword OUTER is disabled. No multi-run analysis has<br />

been specified.<br />

COMMAND .PRINT or .PLOT SSTJITTER: Expected SSTJITTER output,<br />

and not name<br />

COMMAND .PRINT or .PLOT SSTSTABIL: Expected SSTSTABIL output,<br />

and not name<br />

COMMAND .PRINT or .PLOT: output name will be written as real/<br />

imaginary parts in files which do not support complex format.<br />

COMMAND .EXTRACT or .MEAS: Unexpected name output<br />

COMMAND .PRINTFILE: Element name not declared<br />

COMMAND .DSPF_INCLUDE: file name. An extra X has been added on<br />

name. That rule of adding an extra X will now be used by default in that file<br />

for all subsequent *|NET instructions.<br />

BUS name is of size 0: Could be declaration of that bus is missing.<br />

.OPTION name: list of values are limited to 10 elements.<br />

COMMAND .OPTWIND name is incompatible with options defined as a list<br />

of values. Only first value is kept.<br />

COMMAND name:Node name not found<br />

COMMAND name:Device name not found<br />

Object name: Eldo will simulate as if CTYPE = 1 had been set on that<br />

instance... This is because C value seems not to be dependant on the pin bias,<br />

or pins are connected to power supply or ground, and in such situations,<br />

CTYPE = 1 mode is usually more appropriate.. However, in case this tuning<br />

is here not appropriate, just set CTYPE = 0 on the device, or use .OPTION<br />

NOAUTOCTYPE in order to disable this setup.<br />

COMMAND .EXTRACT: name is ignored.<br />

COMMAND .FOUR: name removed<br />

COMMAND .MC: incorrect value for PRINT_EXTRACT. name found<br />

while only NOMINAL, NOMLAST, ALL and numbers are allowed<br />

1436<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Warning 1056<br />

Warning 1057<br />

Warning 1058<br />

Warning 1059<br />

Warning 1060<br />

Warning 1061<br />

Warning 1062<br />

Warning 1063<br />

Warning 1064<br />

Warning 1065<br />

Warning 1066<br />

Warning 1067<br />

Warning 1068<br />

Warning 1069<br />

Warning 1070<br />

Warning 1071<br />

Warning 1072<br />

Warning 1073<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

COMMAND .MC: Several .MC commands found in the netlist. Only last one<br />

will be used.<br />

COMMAND .PUNCH: unimplemented analyze type (name) requested.<br />

Command ignored<br />

COMMAND name: SNF output required but no .SNF card has been given.<br />

Please check that the .SNF and .PLOT SNF commands are labelled correctly.<br />

COMMAND .OPTIMIZE: Type of design objective name is incompatible<br />

with method<br />

D2A/A2D command ignored using ADMS.<br />

The SUBCKT(S) listed above will not be changed by the STEP command,<br />

they will remain the same for the entire stepping process. Therefore, results<br />

might not be as expected... Suggest to use .ALTER command in .cir file<br />

instead.<br />

COMMAND .AGE: TSTART/TSTOP specifications are ignored because of<br />

TWINDOW.<br />

COMMAND .EXTRACT/.MEAS name: Unable to find any .DATA<br />

associated with current analysis. Command ignored.<br />

COMMAND .EXTRACT/.MEAS name: Unable to find an item named name<br />

in .DATA name. Command ignored.<br />

COMMAND .EXTRACT/.MEAS name: Complex measurements are not<br />

compatible with optimization. Command ignored.<br />

COMMAND .EXTRACT/.MEAS name: Unable to find a .DATA named<br />

name. Command ignored.<br />

COMMAND .EXTRACT/.MEAS name: in name some points are outside the<br />

simulation interval. They will be ignored by the fitting command.<br />

COMMAND .EXTRACT/.MEAS name: in name some points are not<br />

correctly ordered, or not unique for a given X value. Fitting command<br />

ignored.<br />

COMMAND .EXTRACT/.MEAS name: in name some points can't be<br />

simulated. Fitting command ignored.<br />

COMMAND .PLOT/.PRINT/.PROBE: wave name contains some errors.<br />

This command is ignored.<br />

COMMAND .PLOT/.PRINT/.PROBE: Unexpected character 'name' found<br />

COMMAND .PRINTFILE: xaxis START value for file name has been set to:<br />

COMMAND .PRINTFILE: xaxis STOP value for file name has been set to:<br />

Eldo® User's Manual, 15.3 1437


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Warning 1074<br />

Warning 1075<br />

Warning 1076<br />

Warning 1077<br />

Warning 1078<br />

Warning 1079<br />

Warning 1080<br />

Warning 1081<br />

Warning 1082<br />

Warning 1083<br />

Warning 1084<br />

Warning 1085<br />

Warning 1086<br />

Warning 1087<br />

Warning 1088<br />

Warning 1089<br />

Warning 1090<br />

Warning 1091<br />

Warning 1092<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

In corner name of library name .BIND commands can't be processed by the<br />

STEP command.They will be ignored during the stepping process, therefore<br />

results might not be as expected. Suggest to use .ALTER command instead.<br />

COMMAND .RAMP: syntax error in command declaration:<br />

dc voltage reset to initial transient source value for source name<br />

COMMAND .PLOTBUS: incorrect BASE value: name. Default value will be<br />

used.<br />

COMMAND .PLOTBUS: BIN, DEC, OCT or HEX is expected after<br />

keyword BASE. Default value will be used.<br />

COMMAND .PLOTBUS: UNSIGNED or 2COMP is expected after keyword<br />

RADIX. Default value will be used.<br />

COMMAND .PLOTBUS: display keywords BASE and RADIX are mutually<br />

exclusive. Priority is given to RADIX.<br />

COMMAND .PLOTBUS: display keywords BASE and RADIX are ignored.<br />

They do not apply on analog buses.<br />

COMMAND .USE_TCL: NATIVE_TCL or EZWAVE_UDF is expected<br />

after keyword MODE. Default value will be used.<br />

COMMAND .TRAN is ignored when .MODSST is set.<br />

COMMAND .OBJECTIVE: unsupported analysis: name.<br />

COMMAND .PRINTFILE: file name cannot support more than name<br />

analysis.<br />

COMMAND .SIGBUS: Last value for bus name is not consistent with<br />

periodic definition. It should be equal to first value.<br />

COMMAND .OPTION: name has been deprecated and will be removed from<br />

future releases.<br />

COMMAND .ADMS_RESTART: argument evaluates to 0.0analog<br />

simulation start will not be delayed<br />

COMMAND .OPTIMIZE: .STEP command containing parameter name<br />

specified in OUTER_PARAM contains other parameters. OUTER_PARAM<br />

will affect them all.<br />

COMMAND .SCALE: Unable to find a device or model parameter to scale<br />

COMMAND .OPTFOUR: FMIN/FMAX specifications can not be applied on<br />

RF signals<br />

COMMAND .BIND cannot be used for FS Black Box Instances name.<br />

1438<br />

Eldo® User's Manual, 15.3


Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning 1093 COMMAND .LIMIT: complex output is not allowed inside name. Statement<br />

ignored.<br />

Warning 1094 COMMAND .MEAS: duplicate measurement name name<br />

Warning 1095 COMMAND .MODEL name: parameter name has been deprecated and will<br />

be removed from future releases.<br />

Warning 1096 COMMAND .MODEL name: parameter name ignored.<br />

Warning 1097 COMMAND .extract or .meas name contains symbols which are not handled<br />

in extract-mode. This command is ignored.<br />

Warning 1098 COMMAND .FOUR: name removed. Node name is unknown.<br />

Warning 1099 COMMAND .FOUR: name removed. Device name is unknown.<br />

Warning 1263 Ambiguity on parameter %s. Value used is %e. value defined by SST is %e<br />

Warning 1400 EXTRACT MODE: File %s has been sampled at frequency %e Hz. Extracted<br />

values might be inaccurate<br />

Warning 1401 COMMAND .PRINTFILE: The command is ignored because file %s can not<br />

be opened<br />

Warning 1402 COMMAND .PLOT FOURMODSST: %s will represent the first harmonic of<br />

the signal<br />

Warning 1403 COMMAND .PLOT CONTOUR: unable to plot the contour. Extract %s can<br />

not be used, it must define a vector of values (using VECT or CATVEC)<br />

Warning 1404 COMMAND .PLOT CONTOUR: unable to plot the contour. The vectors of<br />

values of CATVEC extracts don't have the same size<br />

Warning 1405 COMMAND .AGE: parameter %s is assumed to be a <strong>user</strong> defined parameter<br />

Warning 1406 OBJECT "%s": ambiguity found: using parameter %s instead of model %s<br />

Warning 1407 OBJECT "%s": ambiguity found: using model %s instead of parameter %s<br />

Warning 1408 OBJECT "%s": The following parameter(s) has(ve) multiple definitions : %s<br />

Warning 1409 COMMAND .AGE: a non-numerical character was found in TAGE=%s<br />

specification. It is ignored, thus if a unit was meant consider using TUNIT<br />

keyword<br />

Warning 1410 COMMAND .PROBE: %s is used as default analysis for command(s) not<br />

specifying it<br />

Warning 1411 EXTRACT MODE: wave %s can not be found in file %s. Maybe a .plot or<br />

.probe command should be added in the original netlist before running the<br />

<strong>eldo</strong> -extract command<br />

Eldo® User's Manual, 15.3 1439


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Warning 1412 COMMAND .OBJECTIVE %s:<br />

MONIT_VAL=ERRMEAN|ERRMIN|ERRMAX has no meaning with<br />

GOAL=MINIMIZE|MAXIMIZE. This statement is ignored<br />

Warning 1413 COMMAND .DATA %s: Wrong number of column in file %s at line %ld<br />

Warning 1414 COMMAND .DATA %s: Wrong number of lines in file %s<br />

Warning 1415 .OPTION TEMP_UNIT: Incorrect unit %s. KELVIN or CELSIUS is<br />

expected<br />

Warning 1416 COMMAND .MC OUTER does not apply on .TEMP command. Consider<br />

using .STEP TEMP LIST if an inner sweep of temperature is required<br />

Warning 1417 COMMAND .MC: keyword OUTER is disabled. It can't be applied with<br />

.AGE analysis<br />

Warning 1418 Not enough points were stored to compute FFT<br />

Warning 1419 Unable to compute a correct FFT since FFT stop time has not been reached<br />

Warning 1420 COMMAND .STEP LIB %s. Variant %s not found. Model descriptions and<br />

parameter values are unchanged<br />

Warning 1421 COMMAND .STEP LIB %s. Nothing to update. Model descriptions and<br />

parameter values are unchanged<br />

Warning 1422 COMMAND "%s": Unexpected keyword %s<br />

Warning 1423 COMMAND "%s": INITFILE is missing<br />

Warning 1424 COMMAND "%s": DEFAULTINIT=NO is set but no replacement file has<br />

been specified. Simulation may fail<br />

Warning 1425 COMMAND "%s": Ignored: Only active with .tran, .ac or .dc sweep analyses<br />

Warning 1426 COMMAND "%s": unable to detect any multiple run commands compatible<br />

with distributed simulations. This command is ignored<br />

Warning 1427 COMMAND "%s": Ignored: Only one license is allowed and is already in use<br />

Warning 1428 COMMAND "%s": Ignored: Cannot distribute jobs (no active hosts)<br />

Warning 1429 COMMAND "%s": Ignored: Cannot distribute jobs (there must be at least 3<br />

runs)<br />

Warning 1430 COMMAND "%s": Unknown keyword: %s. TRISE or TFALL is expected<br />

Warning 1431 COMMAND ".OPTION %s": Option is ignored. Syntax is: MIXEDSTEP =<br />

[LOCKED | FREE]<br />

Warning 1432 COMMAND ".OPTION %s": Unknown option or unexpected parameter<br />

type. .OPTION %s Ignored<br />

1440<br />

Eldo® User's Manual, 15.3


Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning 1433 COMMAND "%s": This command is interpreted as .PROBE<br />

Warning 1434 COMMAND "%s": Analysis disabled. MODEL %s is crypted. Accessing its<br />

parameters is not possible unless:<br />

1/ command .SETKEY is crypted with the .MODEL<br />

2/ command .USEKEY must be given in the netlist using the encrypted<br />

models<br />

Warning 1435 New definition of .FOUR %s ignored<br />

Warning 1436 COMMAND ".USE_VERILOG": This command has been deprecated inside<br />

Questa ADMS. ai file is ignored and the work library loaded instead<br />

Warning 1437 COMMAND "%s": Quantity %s has been replaced by %s<br />

Warning 1438 COMMAND .EXTRACT/.MEAS %s: Unable to find measurement %s.<br />

Command ignored<br />

Warning 1439 Parameter %s found in %s %s depends directly or undirectly on DEV<br />

specification. This is not supported yet by Questa ADMS<br />

Warning 1440 .OPTION %s: unknown specification %s ignored<br />

Warning 1441 .OPTION %s is ignored. It is only active when PSF_VERSION=2<br />

Warning 1442 COMMAND "%s": The type of analysis must be specified when RF analysis<br />

are used. Command ignored<br />

Warning 1443 COMMAND "%s": Unable to code %s in base %ld<br />

Warning 1444 COMMAND "%s": labeled "%s". The expression "%s" contains a SNF card<br />

that was not found<br />

Warning 1445 COMMAND .OPTIMIZE: OUTER specification is ignored since the netlist<br />

contains no .STEP commands<br />

Warning 1446 COMMAND .EXTRACT/.MEAS %s: Fitting waveforms requires to have<br />

either .option OUT_STEP, TIMESMP or FREQSMP. Fitting command<br />

ignored<br />

Warning 1447 Unable to release %s license, feature "%s"<br />

Warning 1448 COMMAND "%s": No .extract or .meas labeled %s was found. This<br />

command is ignored<br />

Warning 1449 COMMAND .FILTER: keyword %s has already been defined. First value is<br />

kept<br />

Warning 1450 OBJECT "%s": W/L parameters specified, a model should have been<br />

assigned to this device. As a value has been set, these parameters are ignored<br />

for computation of the effective resistor value<br />

Eldo® User's Manual, 15.3 1441


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Warning 1451 DSP MODEL %s is evaluated by EZwave engine. Thus output values of<br />

.DSP instances using this model - such as DSPR(), DSPI(), DSPM(), DSPP()<br />

and DSPDB() - will be identical to what is calculated in EZwave<br />

Warning 1452 DSP MODEL %s: parameter TSTART is set to %e according to .TRAN<br />

command<br />

Warning 1453 DSP MODEL %s: parameter NBPT is set to %ld according to TSTART,<br />

TSTOP and FS<br />

Warning 1454 DSP MODEL %s: parameter TSTOP is set to %e according to .TRAN<br />

command<br />

Warning 1455 DSP MODEL %s: parameter %s is set to %e<br />

Warning 1456 DSP MODEL %s: parameter INTERPOLATE is set to 1. INTERPOLATE=0<br />

can only be specified with fixed time step<br />

Warning 1457 DSP MODEL %s: TSTART > .TRAN TSTOP ! DSP analyse ignored<br />

Warning 1458 COMMAND .DSP %s: Parameters related to the DSP function are ignored.<br />

.DSPMODEL has precedence<br />

Warning 1459 Goal value for objective %s is set to 0.0<br />

Warning 1460 Command %s overwritten: last specification taken<br />

Warning 1461 COMMAND .PROBE: It is not allowed to specify subckt instance<br />

informations for .probe VN (even when using wildcards)<br />

Warning 1462 COMMAND .FFILE: Only one command is allowed. Previous values are<br />

replaced<br />

Warning 1463 The parameter %s is not defined in the .model %s or is unknown. No<br />

variation can be done on that parameter. Parameter ignored<br />

Warning 1464 The parameter %s is not defined on the instance %s or is unknown. No<br />

variation can be done on that parameter. Parameter ignored<br />

Warning 1465 Below is the list of variation that will be ignored: %s<br />

Warning 1466 Threshold value for extract %s has been set to %e<br />

Warning 1467 COMMAND .DSP: Input waveform %s of element %s can not be found.<br />

Command ignored<br />

Warning 1468 Noise factor %s will not be considered by the DEX analysis. Its deviation is<br />

equal to 0.0<br />

Warning 1469 COMMAND .DEX: the analysis is disabled because there is no active factors<br />

Warning 1470 COMMAND .PROBE %s is not supported<br />

1442<br />

Eldo® User's Manual, 15.3


Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning 1471 COMMAND .PARAMDEX %s: It is not possible to define the settings of a<br />

parameter as a fraction of the range value (using the RNG argument) when<br />

this parameter has a non-uniform distribution<br />

Warning 1472 EXTRACT MODE: %s command has been detected in the netlist. This<br />

command is ignored. This can cause unexpected results if some extracts use<br />

the swept parameter(s)<br />

Warning 1473 COMMAND .PROBE %s: The default analysis for .SST results is set to<br />

FSST. If TSST results are required, the type of analysis must be explicitly<br />

given<br />

Warning 1474 COMMAND .PROBE %s: The default analysis for .MODSST results is set to<br />

FMODSST. If TMODSST results are required, the type of analysis must be<br />

explicitly given<br />

Warning 1475 More than %ld points are required for %s analysis. Output database might be<br />

very large<br />

Warning 1476 License message from Provider: %s -- Feature: %s<br />

Warning 1477 COMMAND .PARAMDEX: wildcards in parameter %s are not allowed.<br />

This definition is ignored<br />

Warning 1478 The initial value of parameter %s set for optimization is ignored because this<br />

parameter is used in a STEP command<br />

Warning 1479 Some %s commands are declared for %s analysis. They are ignored because<br />

this analysis is not enabled<br />

Warning 1480 COMMAND .SETSOA: Model %s not found in subckt %s<br />

Warning 1481 COMMAND .SETSOA: Subckt %s not found: command ignored. If you<br />

specified an instance name instead of a subckt name try with keyword "inst="<br />

instead of "subckt="<br />

Warning 1482 COMMAND .PLOT: complex waveforms can not be plotted using<br />

(VERSUS) keyword. They will be represented using their magnitude<br />

Warning 1483 COMMAND .DEX: the analysis is disabled because there must be at least 2<br />

factors<br />

Warning 1484 AC analysis will not be performed during transient because of the commands<br />

ordering: AC command must appear before .TRAN for that<br />

Warning 1485 COMMAND .PARAMDEX: %s is ignored. It defines a DEV-like variation<br />

while the model parameter has LOT specifications<br />

Warning 1486 COMMAND .PARAMDEX: %s is ignored. It defines a LOT-like variation<br />

while the model parameter has DEV specifications<br />

Eldo® User's Manual, 15.3 1443


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Warning 1487 COMMAND .PRINTFILE: xaxis START and STOP values%s are lower<br />

than TSTART given on .TRAN command. The command is ignored<br />

Warning 1488 COMMAND %s: Unexpected argument %s inside %s<br />

Warning 1489 Model level %d does not support UDRM. The .AGE command is disabled<br />

Warning 1490 Model level %d does not support UDRM while model level %d does. The<br />

.AGE command is disabled to avoid incorrect results<br />

Warning 1491 COMMAND .OPTION OPSELDO_ALTER is only active when SQP<br />

method is used<br />

Warning 1492 COMMAND %s: keywords MASK and EXCEPT can only be applied to<br />

generic output specifications or to output specifications which contain<br />

wildcards<br />

Warning 1493 COMMAND "%s": Command is ignored because the requested analysis is<br />

not compatible with the analysis defined on .defwave %s<br />

Warning 1494 COMMAND .EXTRACT %s XTHRES/XUP/XDOWN threshold parameter<br />

expected a scalar instead of a waveform. DC value of the waveform is used.<br />

Use XYCOND if you want to detect intersection of 2 waveforms<br />

Warning 1495 COMMAND %s : %s expected after keyword %s. default is %s<br />

Warning 1496 COMMAND .AGE: Unable to update parameter %s<br />

Warning 1497 COMMAND .AGE: Analysis disabled. Accessing crypted parameters is not<br />

allowed unless:<br />

1/ command .SETKEY is crypted with the .PARAM<br />

2/ command .USEKEY must be given in the netlist using the encrypted<br />

models<br />

Warning 1498 W() can only reference one wave name or one wave expression. So, writing<br />

W(xx,yy) is not allowed<br />

Warning 1499 COMMAND %s is ignored: complex waveforms are not supported<br />

Warning 1500<br />

Warning 1501 No DSPF on node %s because at least one object of a different hierarchy level<br />

is connected to it using full pathname<br />

Warning 1502 No DSPF on node %s<br />

Warning 1503 DSPF command %s. Probably missing a *|NET instruction<br />

Warning 1504 DSPF: Cannot find object %s<br />

Warning 1505 DSPF: %s<br />

1444<br />

Eldo® User's Manual, 15.3


Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning 1506 %sDSPF: node %s was not found in instance %s. Therefore, no DSPF added<br />

on that node<br />

Warning 1507 DSPF: node %s was not found. Therefore, no DSPF added on that node<br />

Warning 1508 DSPF: Syntax error at line %ld (no pin %s) or object %s can not be handled<br />

Warning 1509 DSPF: No DSPF added on node %s<br />

Warning 1510 DSPF: Node %s is still connected ! This might indicate a problem in DSPF<br />

since this node should be replaced by a network<br />

Warning 1511 DSPF: No inductor %s found for K %s<br />

Warning 1512 DSPF: Unable to open include file %s<br />

Warning 1513 DSPF: subckt %s unknown PORT %s. DSPF ignored on that SUBCKT<br />

Warning 1514 DSPF: subckt %s: unconsistent number of pins. %ld pins found in DSPF, %ld<br />

expected. DSPF ignored on that SUBCKT<br />

Warning 1515 DSPF: subckt %s not defined in pre-layout<br />

Warning 1516 DSPF: nesting error at line %ld<br />

Warning 1517 DSPF: syntax error at line %ld<br />

Warning 1518 DSPF: instructions at line %d ignored<br />

Warning 1519 DSPF: Unable to find DSPF file %s<br />

Warning 1520<br />

Warning 1521 EXTRACT MODE: Any new binary data will be written to %s to avoid a<br />

conflict with an input file<br />

Warning 1522 Missing index extension on %s<br />

Warning 1523 Device %s: mismatch in parameter %s != %s. First value taken<br />

Warning 1524 Device %s: mismatch in parameter with respect to nominal values on %s.<br />

Nominal values taken<br />

Warning 1525 %s statement ignored on %s when DEV parameter on .DSPF_INCLUDE is<br />

of type DSPF<br />

Warning 1526 COMMAND %s: Unknown output type: %s. Following specifications are<br />

ignored<br />

Warning 1527 COMMAND %s: Unknown analysis type: %s. This command is ignored<br />

Warning 1528 COMMAND .AGE: Unable to access parameter %s<br />

Warning 1529 COMMAND .AGE: Unable to access parameter %s in subckt %s. The update<br />

of parameters for this subckt has not been enabled in the initialization method<br />

Eldo® User's Manual, 15.3 1445


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Warning 1530 COMMAND .MPRUN: host %s is ignored. It does not exist or it does not<br />

allow remote connections<br />

Warning 1531 COMMAND %s: Unable to parse expression %s<br />

Warning 1532 COMMAND "%s": Incorrect output syntax for device %s<br />

Warning 1533 .OPTION %s: Incorrect value %s. INDEX or XAXIS is expected<br />

Warning 1534 COMMAND .MPRUN: FLAT method is disabled. It can only be used with<br />

.alter<br />

Warning 1535 %s output is not available<br />

Warning 1536 COMMAND %s: No output specified. Default output %s is used<br />

Warning 1537 COMMAND %s: More than one %s value specified. Previous value for %s<br />

superseded by the last value specified<br />

Warning 1538 COMMAND %s: Stress vector element is out-of-range. Command is ignored<br />

Warning 1539 COMMAND .MC: PRINT_EXTRACT keyword is disabled when NONOM<br />

or ALL is used. All extract values are printed by default<br />

Warning 1540 COMMAND .EXTRACT: MC extract type can only be used with Monte-<br />

Carlo statistical functions such as MCAVG, MCMIN, etc. Command is<br />

ignored<br />

Warning 1541 COMMAND .PRINTFILE: analysis set to %s<br />

Warning 1542 COMMAND .AGE MODE=BLOCKLOAD: stress values have been loaded<br />

for all devices affected by the reliability analysis. Since no new stress values<br />

need to be calculated, MODE=LOAD is assumed<br />

Warning 1543 COMMAND .DSPF_INCLUDE %s: No X instance found in the circuit<br />

matching instance specification specified on the command<br />

Warning 1544 COMMAND .RESTART: %s specification is not available inside Questa<br />

ADMS<br />

Warning 1545 COMMAND %s: SWEEP type indicates that the following output<br />

specifications are measurement results. %s is not a known .EXTRACT or<br />

.MEAS label<br />

Warning 1546 COMMAND .MPRUN: This command is ignored since it has already been<br />

specified<br />

Warning 1547 DSPF: line %ld, device %s: no pin named %s found in pin list of SUBCKT<br />

%s<br />

Warning 1548 Unable to print/plot/extract lv9( ) when .op_display is used with vth_mask=0<br />

and vtmod=1 or 2<br />

1446<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Warning 1549<br />

Warning 1550<br />

Warning 1551<br />

Warning 1552<br />

Warning 1553<br />

Warning 1554<br />

Warning 1555<br />

Warning 1557<br />

Warning 1601<br />

Warning 1602<br />

Warning 1603<br />

Warning 1604<br />

Warning 1605<br />

Warning 1606<br />

Warning 1607<br />

Warning 1608<br />

Warning 1609<br />

Warning 1610<br />

Warning 1611<br />

Warning 1612<br />

Warning 1613<br />

Warning 1614<br />

Warning 1615<br />

Warning 1616<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

COMMAND .AGE: API function %s is used outside its context. This<br />

statement is ignored. This function should be called in %s only<br />

COMMAND .FOUR: node %s is in a RF partition and therefore requires an<br />

harmonic specification<br />

COMMAND .DEFINE_GROUP %s: No %s named %s found in the design<br />

COMMAND .DSPF_INCLUDE: file %s, on node %s: Swapping %s. That<br />

rule will now be used by default for node and device names<br />

COMMAND .DEFINE_GROUP %s: No subckt, instance or device match the<br />

patterns. This command is ignored<br />

COMMAND .ENDCOMPAT: This command is ignored as compat mode<br />

was turned on using .option compat|compnet or -compat|-compnet. It should<br />

be used with .COMPAT only<br />

DSPF: component %s: node %s not found ( node declaration missing in *|S<br />

statement ?)<br />

.MC analysis: OUTER specified on MC command; only a simplified MC<br />

output can be generated in that mode.<br />

Eldo® User's Manual, 15.3 1447


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Warning 1617<br />

Warning 1618<br />

Warning 1619<br />

Warning 1620<br />

Warning 1621<br />

Warning 1622<br />

Warning 1623<br />

Warning 1624<br />

Warning 1625<br />

Warning 1626<br />

Warning 1627<br />

Warning 1628<br />

Warning 1629<br />

Warning 1630<br />

Warning 1631<br />

Warning 1632<br />

Warning 1633<br />

Warning 1634<br />

Warning 1635<br />

Warning 1636<br />

Warning 1637<br />

Warning 1638<br />

Warning 1639<br />

Warning 1640<br />

Warning 1641<br />

Warning 1642<br />

Warning 1643<br />

Warning 1644<br />

Warning 1645<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

1448<br />

Eldo® User's Manual, 15.3


Error and Warning Messages<br />

Miscellaneous Warnings<br />

Warning<br />

Number<br />

Warning 1646<br />

Warning 1647<br />

Warning 1648<br />

Warning 1649<br />

Warning 1650<br />

Warning 1651<br />

Warning 1652<br />

Warning 1653<br />

Warning 1654<br />

Warning 1655<br />

Warning 1656<br />

Warning 1657<br />

Warning 1658<br />

Warning 1659<br />

Warning 1660<br />

Warning 1661<br />

Warning 1662<br />

Warning 1663<br />

Warning 1664<br />

Warning 1665<br />

Warning 1666<br />

Warning 1667<br />

Warning 1668<br />

Warning 1669<br />

Warning 1670<br />

Warning 1671<br />

Warning 1672<br />

Warning 1673<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Eldo® User's Manual, 15.3 1449


Error and Warning Messages<br />

Warnings Related to Eldo Premier<br />

Warning<br />

Number<br />

Warning 1838<br />

Table A-16. Miscellaneous Warnings (cont.)<br />

Description<br />

Some waveforms are identical due to circuit connectivity. In order to save<br />

disk space, only one is saved in the output file. Please use .option<br />

force_wave_aliases if you prefer to duplicate waveforms in the output file.<br />

The complete list of discarded waveforms is available in the .chi file.<br />

Warnings Related to Eldo Premier<br />

The following warning messages are related to Eldo Premier:<br />

Table A-17. Warnings Related to Eldo Premier<br />

Warning Description<br />

Number<br />

Warning 1021002 Can not create file 'name'<br />

Warning 1021015 Convergence problem for DC simulation : name<br />

Warning 1021016 Reducing time step from %lf to %lf<br />

Warning 1021017 Convergence problem for TRAN iteration : name<br />

Warning 1021022 Net 'name' removed from netlist because it is not connected to any device.<br />

Warning 1021035 Unknown Option line (ignored) 'name'<br />

Warning 1021040 OBJECT 'name' (name): Empty sub-circuit not created<br />

Warning 1021047 NODE 'name': Connected with only %i element.<br />

Warning 1021049 NET 'name': Not connected to any element. This net was removed from<br />

the netlist.<br />

Warning 1021050 OBJECT 'name': Not connected to parent subckt. This object has been<br />

removed from the netlist.<br />

Warning 1021072 PORT 'name': Not connected to any element. This port was removed from<br />

the netlist.<br />

Warning 1021075 PIN NAME 'name' could not be resolved<br />

Warning 1021077 NET 'name': remove parasitic devices connected to this net<br />

Warning 1021081 DSPF: invalid hierarchical name ``name name'' in ``I'' definition<br />

Warning 1021082 NET 'name' could not be found in pathname dictionary<br />

Warning 1021090 Net name not solved in structurally singular matrix of name<br />

Warning 1021091 'name': is not supported<br />

1450<br />

Eldo® User's Manual, 15.3


Warning<br />

Number<br />

Warning 1021092<br />

Warning 1021093<br />

Warning 1021100<br />

Warning 1021105<br />

Warning 1021106<br />

Warning 1021114<br />

Warning 1021115<br />

Warning 1021116<br />

Warning 1021119<br />

Warning 1021120<br />

Warning 1021121<br />

Warning 1021122<br />

Warning 1021138<br />

Warning 1021148<br />

Warning 1021149<br />

Warning 1021150<br />

Warning 1021156<br />

Warning 1021157<br />

Warning 1021158<br />

Warning 1021161<br />

Warning 1021162<br />

Error and Warning Messages<br />

Warnings Related to Eldo Premier<br />

Table A-17. Warnings Related to Eldo Premier (cont.)<br />

Description<br />

SUBCKT 'name': duplicate object 'name'<br />

NETLIST is empty<br />

DEVICE 'name': no path to active device. This device was removed from<br />

the netlist.<br />

The maximun number of iterations (itl4) was reached<br />

The norme diverged<br />

Eldo is not supposed to request simulation value at this point<br />

The net 'name' is a floating gate<br />

The net 'name' is connected to the ground<br />

NODE 'name' has less than two connections<br />

The net 'name' is no longer a floating gate (forward biased diode detected)<br />

The net 'name' is disconnected from the ground (forward biased diode<br />

detected)<br />

run-time option 'name' : No instance 'name' found.<br />

DC CPU time %lf msec, which is over limit %d sec, processed killed<br />

No DSPF added on node name<br />

DSPF: Duplicate ``I'' definition for ``name name'' with different nodes<br />

``name'' and ``name'': definition with node ``name'' is ignored<br />

DSPF: Inconsistency inside SUBCKT name. The ``I'' statement ``name<br />

name'' should refer to the NET ``name'' whose hierarchical name is<br />

``name.name'' while it refers here to node ``name''. This could indicate an<br />

inconsistency in the DSPF file. Anyway, Eldo proceeds according to the<br />

DSPF statement.<br />

DSPF: node name was not found in instance name. Therefore, no DSPF<br />

added on that node.<br />

DSPF: node specified by ``NET'' directive ``name'' does not exist.<br />

However, a node was found by converting ``name'' to ``name''. Therefore,<br />

the same character conversion will be performed for all nodes of this<br />

``NET'' section.<br />

DSPF: Character sequence ``%c%c'' needed to be translated to ``%c''<br />

(instead of ``%c%c'') to resolve hierarchical name ``name''. Therefore,<br />

this translation rule will be applied for all hierarchical names.<br />

.REDUCE: CC reduction not implemented in name<br />

.REDUCE: RONLY reduction not implemented in name<br />

Eldo® User's Manual, 15.3 1451


Error and Warning Messages<br />

Warnings Related to Eldo Premier<br />

Warning<br />

Number<br />

Warning 1021163<br />

Warning 1021164<br />

Warning 1021165<br />

Warning 1021166<br />

Warning 1021168<br />

Warning 1021172<br />

Warning 1021178<br />

Warning 1021179<br />

Warning 1021180<br />

Warning 1021182<br />

Warning 1021185<br />

Warning 1021186<br />

Warning 1021191<br />

Warning 1021199<br />

Table A-17. Warnings Related to Eldo Premier (cont.)<br />

Description<br />

Default reduction network type set to RC (TICER)<br />

.REDUCE TICER: PORTMERGE not implemented in name<br />

Due to the reduction process some outputs may not be available. Options<br />

REDUCE_KEEP_NODE=nodename and<br />

REDUCE_KEEP_INSTANCE=instance_name may be used to enforce<br />

the availability of some specified node voltages or branch currents<br />

respectively. Alternately, the global REDUCE_KEEP_OUTPUTS=YES<br />

option may be used to enforce the availability of all required outputs. This<br />

option may however hamper more strongly the reduction process.<br />

DSPF: device kind '%c' is not supported (yet) in DSPF file. Therefore,<br />

device ``name'' is not added.<br />

NET ``name'' could not be exported (limitation of current<br />

implementation)<br />

OBJECT ``name'': parameter KR is not supported with h_mode<br />

reltol=%g vntol=%g abstol=%g. This setting gives higher accuracy than<br />

default tuning, but the simulation time may increase.<br />

Newton: No convergence at time %gns ; try to pass over...<br />

DSPF: subckt name not defined in pre-layout.<br />

NODE ``name'': has been replaced by a DSPF network<br />

SUBCKT 'name': duplicate object 'name' (from DSPF)<br />

DSPF: port ``name'' appears in several ``|I'' interfaces. Only the first one is<br />

taken into account.<br />

Resistor name with small value is removed. Therefore, I(name) will not<br />

be computed<br />

Multi-threading mode disable : name<br />

1452<br />

Eldo® User's Manual, 15.3


Appendix B<br />

Troubleshooting<br />

Most <strong>user</strong>s of any product will from time to time experience problems in its use. This appendix<br />

is intended to provide an easy to use quick reference from which such problems can be<br />

identified and corrected.<br />

Common Netlist Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1453<br />

Tips for Troubleshooting and/or Improving Convergence and Performance . . . . . . . . 1454<br />

Tips for Troubleshooting Performance Bottlenecks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1454<br />

Troubleshooting File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1455<br />

Common Netlist Errors<br />

There are a number of common errors to look out for when producing an input netlist:<br />

• First Line of a File Not the Title.<br />

The first line of a netlist must be the title of the circuit. If part of the circuit description is<br />

found on the first line, it will be ignored. If the first line is a blank, this will be taken as<br />

the title line.<br />

• Correct Usage of the Simulator Accuracy (eps, vntol, reltol).<br />

The simulator accuracy parameters are the most important Eldo parameters—they must<br />

be correctly initialized.<br />

Tip<br />

For more details refer to the Speed and Accuracy chapter.<br />

• Correct Units on Devices.<br />

It is very important to make sure that all the components in the netlist have correct units;<br />

one mistake can have a large effect. An example of this is specifying units of farads<br />

instead of picofarads.<br />

• Missing Model.<br />

Make sure that model definitions are available to the simulator, either directly in the<br />

netlist, or in a referenced library.<br />

• Missing Voltage Sources.<br />

Independent voltage sources defined to have a voltage of 0V may be removed by Eldo<br />

to simplify calculations. If you wish to use a voltage source as a current probe, avoid<br />

Eldo® User's Manual, 15.3 1453


Troubleshooting<br />

Tips for Troubleshooting and/or Improving Convergence and Performance<br />

defining its voltage as 0V, but instead, define its voltage value to be very small.<br />

Moreover, currents through components may be measured directly, therefore, the use of<br />

voltage sources as current probes is not necessary.<br />

• Correct Model Name Syntax.<br />

The first character of a model name cannot be a number. This causes the compilation of<br />

the netlist to be interrupted, and an error message to be displayed.<br />

• Unknown Model Parameter.<br />

When defining model parameter values, care must be taken to ensure that the parameter<br />

is spelt correctly and that it is indeed a legal parameter of the device.<br />

• Ground (0) Node.<br />

A 0 node (ground) must always be present in the input netlist.<br />

Note<br />

Eldo does not recognize GND as GROUND!<br />

• Reserved Keywords.<br />

Some keywords should not be specified in a .PARAM command. If they are then errors<br />

will be generated. See .PARAM in the Eldo Reference Manual.<br />

Tips for Troubleshooting and/or Improving<br />

Convergence and Performance<br />

This topic collects together a number of techniques for improving convergence and/or<br />

simulation performance.<br />

• Operating Point Calculation.<br />

See “Improving DC Convergence” on page 211 and “DC Convergence<br />

Troubleshooting” on page 213.<br />

• Saving, Using, and Restarting Simulations.<br />

See “Improving DC Convergence” on page 211.<br />

Tips for Troubleshooting Performance<br />

Bottlenecks<br />

To help you understand why a circuit does not behave as expected, or takes more time than<br />

expected to simulate, a set of diagnostics are available.<br />

See “Diagnosing Convergence and Performance Issues” on page 377.<br />

1454<br />

Eldo® User's Manual, 15.3


Troubleshooting File<br />

Troubleshooting<br />

Troubleshooting File<br />

If an unexpected problem is detected by Eldo (for example, a message that reports an “Error<br />

Code”) the simulation will terminate, and one of the following files will be generated in the<br />

output directory:<br />

• <strong>eldo</strong>-stacktrace.vstf<br />

• <strong>eldo</strong>-stacktrace.dump<br />

Include the <strong>eldo</strong>-stacktrace file along with the model causing the error when submitting your<br />

Service Request to Mentor support. For more information on Service Requests, please refer to<br />

the section Tracking Service Requests, DRs, and ERs of the AMS Release Notes.<br />

Eldo® User's Manual, 15.3 1455


Troubleshooting<br />

Troubleshooting File<br />

1456<br />

Eldo® User's Manual, 15.3


Appendix C<br />

Eldo Interactive Mode<br />

Eldo interactive mode is a way of invoking Eldo and sending commands to it interactively<br />

instead of sending the commands in the netlist. Some other AMS tools, such as ICanalyst, make<br />

use of Eldo in the interactive mode, although this is transparent to the <strong>user</strong>. Eldo interactive<br />

mode is not supported by Questa ADMS.<br />

Invoking Eldo Interactive Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457<br />

Reading Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1459<br />

Resetting Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1461<br />

Change Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1463<br />

Controlling Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1466<br />

Invoking Eldo Interactive Mode<br />

To invoke Eldo interactive mode, from the command line run <strong>eldo</strong> with the -inter argument:<br />

<strong>eldo</strong> cir_file_name -inter<br />

where cir_file_name is the name of the .cir control file to be simulated. Default extension is .cir.<br />

When working in Eldo interactive mode, a prompt will appear:<br />

<strong>eldo</strong>><br />

Some help information is available, at the <strong>eldo</strong>> prompt. Type:<br />

help<br />

help <br />

help all<br />

to see the list of available commands<br />

for more information about a particular command<br />

to obtain the complete help listing<br />

When working in Eldo interactive mode, type your command after the <strong>eldo</strong>> prompt. For<br />

continuation lines, type the backslash character (\) at the end of a line.<br />

Commands can be read from a file specified via either of the following:<br />

• .eil file_name in the input file<br />

• -eil file_name at invocation of Eldo<br />

Eldo® User's Manual, 15.3 1457


Eldo Interactive Mode<br />

Invoking Eldo Interactive Mode<br />

The <strong>eldo</strong>> prompt appears before the first simulation, unless:<br />

• option DOSIMCIR is specified<br />

• -DOSIMCIR used at invocation of Eldo<br />

To control simulation, use the following commands:<br />

QUIT<br />

LOAD<br />

RUN<br />

GO<br />

CONT<br />

NEXT<br />

To check netlist elements, use the following commands:<br />

DISPLAY<br />

LIST<br />

To handle simulation information, use the following commands:<br />

STATUS<br />

PRINT<br />

DELETE<br />

RESET<br />

OPTRESET<br />

To handle breakpoints, use the following commands:<br />

STOP IF (expression)<br />

STATUS BREAK n<br />

DELETE |ALL<br />

To alter simulation conditions, use the following Eldo/SPICE commands:<br />

.TRAN<br />

.DC<br />

.AC<br />

.OP<br />

.STEP<br />

.TEMP<br />

.ALTER<br />

.NOISETRAN<br />

To change stimuli, re-instantiate the device with new values:<br />

Vxx n1 n2 <br />

To change element/model parameters, or parameters, use:<br />

SET<br />

1458<br />

Eldo® User's Manual, 15.3


Eldo Interactive Mode<br />

Reading Information<br />

Use the command, eilout file_name, to redirect the outputs generated by specific Eldo<br />

interactive commands to the specified file. Errors are still displayed on the terminal window.<br />

Use the command, eilout stdout, to switch back to the default mode, where information is sent<br />

to the terminal window.<br />

Reading Information<br />

This section describes the commands used to read information.<br />

STATUS<br />

STATUS [BREAK]<br />

STATUS ANAL<br />

STATUS AC<br />

STATUS TRAN<br />

STATUS DC<br />

STATUS MC<br />

STATUS PZ<br />

STATUS EXTRACT<br />

STATUS PLOT<br />

STATUS PROBE<br />

STATUS PRINT<br />

STATUS PARAM<br />

STATUS INPUT<br />

STATUS SAVE<br />

STATUS RESTART<br />

STATUS MCMOD<br />

STATUS MCPARAM<br />

STATUS STAT<br />

STATUS OPTION<br />

shows breakpoints<br />

shows status of the current simulation<br />

shows the AC simulation command and stimuli<br />

shows the TRAN simulation command<br />

shows the DC simulation command<br />

shows the MC simulation command<br />

shows the PZ simulation command<br />

shows the expressions to extract<br />

shows the .PLOT commands typed<br />

shows the .PROBE commands typed<br />

shows the .PRINT commands typed<br />

shows the parameters (.PARAM)<br />

shows the input stimuli<br />

shows the .SAVE commands issued<br />

shows the .RESTART commands issued<br />

shows the MC specifications on models<br />

shows the MC specifications on parameters<br />

shows the statistics at runtime<br />

shows all the options set inside Eldo<br />

PRINT <br />

The PRINT command can be issued to display:<br />

• Voltage or current (like plot command)<br />

Eldo® User's Manual, 15.3 1459


Eldo Interactive Mode<br />

Reading Information<br />

• Values from the extract-command language<br />

• EXTRACT indexwhere index is the key returned by STATUS EXTRACT<br />

• Values of Device/Models/Parameters; syntax is:<br />

PRINT E ([,W/L/AD/AS/PD/PS/NRD/NRS/AREA])<br />

PRINT M (,)<br />

PRINT P ()<br />

• OPTION <br />

Examples:<br />

PRINT V(S)<br />

PRINT V(S) + V(SS)<br />

PRINT TPD(E,S)<br />

PRINT OPTIM 2<br />

Note<br />

Note that the extract information issued through a PRINT command works only if the<br />

corresponding .EXTRACT command had been specified before running the simulation, or if<br />

Eldo is able to extract the information from the binary output file (.PLOT available, and<br />

general-purpose extraction language used).<br />

DISPLAY E string[*]<br />

The DISPLAY E string* command can be used to display the connectivity information,<br />

parameter names and values, if any, for each element selected by the string.<br />

The following commands are also available to list netlist elements. Wildcards are supported in<br />

the name specification.<br />

Command<br />

LIST []<br />

[.]LSDEV []<br />

LSDEVPAR <br />

LSDEVMOD <br />

[.]LSMOD []<br />

Table C-1. Netlist Element Commands<br />

Description<br />

Returns the list of all elements which have a name<br />

matching specified name. For example:<br />

<strong>eldo</strong>> LIST string*<br />

Lists all elements whose name begins with string.<br />

Returns the list of all elements which have a name<br />

matching specified name.<br />

Returns the list of all parameters of specified element.<br />

Returns the model of the specified element.<br />

Returns the list of all models which have a name matching<br />

specifed name.<br />

1460<br />

Eldo® User's Manual, 15.3


Command<br />

[.]LSMODEV <br />

LSMODPAR <br />

[.]LSSUB <br />

[.]LSSUBDEV <br />

LSSUBPAR <br />

LSPAR []<br />

.LPTOP<br />

[.]LDEVNODE <br />

.LNODEDEV <br />

[.]TRACEI <br />

[]<br />

Resetting Features<br />

Table C-1. Netlist Element Commands (cont.)<br />

Description<br />

This section describes the commands used to reset several features.<br />

Eldo Interactive Mode<br />

Resetting Features<br />

Returns the list of all elements which have a model<br />

matching specifed name.<br />

Returns the list of all parameters of the specified model.<br />

Returns the list of all the subckt which have a name<br />

matching specifed name.<br />

Returns the list of all the instances of the specified subckt.<br />

Returns the list of all the parameters of the specified<br />

subckt.<br />

Returns the list of all parameters which have a name<br />

matching specified name.<br />

Returns the list of top level parameters.<br />

Returns the list of devices connected to the specified<br />

node.<br />

Returns the list of nodes connected to the specified<br />

device.A device name must be specfified as an argument.<br />

For example, with the device:<br />

M1 A B C D NMOS w=10u l = 3u<br />

<strong>eldo</strong>> .lnodedev M1<br />

will return:<br />

M1.1 A<br />

M1.2 B<br />

M1.3 C<br />

M1.4 D<br />

Returns the list of current contributions on the specified<br />

node. The optional value is a threshold value. For<br />

example, under the <strong>eldo</strong>> prompt, you can specify:<br />

<strong>eldo</strong>> tracei s 1.0e-8<br />

IX(M4.1) = -2.1725E-05<br />

IX(M9.1) = 2.1725E-05<br />

The two contributions are not dumped because they fall<br />

below the threshold 1.0e-08. This tracei command returns<br />

current contributions on the specified node (s in this<br />

example): 1.0e-8 is a threshold, optional.<br />

Eldo® User's Manual, 15.3 1461


Eldo Interactive Mode<br />

Resetting Features<br />

RESET<br />

RESET [PRINT|PLOT|PROBE|IC|NODESET|GUESS|EXTRACT]<br />

Used to remove a set of commands.<br />

RESET FILES<br />

Rewind output files .cou and .chi.<br />

The options available in Eldo interactive mode are listed in the tables below.<br />

DC Control Options<br />

GMIN NMAXSIZE ITL1 GRAMP<br />

NETSIZE VMIN VMAX<br />

Accuracy Control Options<br />

ITOL EPS VNTOL RELTOL<br />

RELERR PIVREL PIVTOL ABSTOL<br />

FLXTOL<br />

MAXORD<br />

Time-Step Control Options<br />

ZOOMTIME STEP STARTSMP FREQSMP<br />

OUT_RESOL TRTOL HMIN ITL3<br />

ITL4 FT DCLOG LVLTIM<br />

LVLCNV DVDT RELVAR ABSVAR<br />

SAMPLE HMAX SPICDC NOSPICDC<br />

Options which can be set, but not reset:<br />

SPIOUT NEWTON OSR TRAP<br />

GEAR BE PROBEOP NOLAT<br />

NWLAT ANALOG BBDEBUG NOSIZECHK<br />

QTRUNC UNBOUND LCAPOP<br />

1462<br />

Eldo® User's Manual, 15.3


Eldo Interactive Mode<br />

Change Features<br />

Change Features<br />

Some Eldo commands are available from interactive mode.<br />

.TRAN .AC .DC .OP .STEP .TEMP<br />

.PLOT .PRINT .PROBE .PLOTBUS .PRINTBUS .PROBEBUS<br />

.EXTRACT .OPTION<br />

.MEAS .FOUR .OPTFOUR<br />

.NODESET .IC .GUESS<br />

.SAVE .RESTART .USE .LIB<br />

You can change the stimuli in interactive mode. The complete line must be re-entered with new<br />

stimuli. For example:<br />

V1 1 2 PWL (0 0 20n 0 30n 5)<br />

Eldo interactive checks the component name, and applies the new stimuli.<br />

BUS<br />

BUS <br />

Define a bus. The BUS command defines a bus with several different nodes by grouping them<br />

together.<br />

<br />

<br />

<br />

Name of the new bus<br />

Ignored (kept for Lsim compatibility)<br />

List of nodes composing the bus (msb...lsb).<br />

Example:<br />

bus foo x A[0] A[1] A[2] A[3] clk reset<br />

bus foo x A[0:3] clk reset<br />

bus ADD x A0 A1 A2 A3 A4 A5<br />

[.]CHMOD<br />

CHMOD <br />

Replace the model by the model for all the devices using (can<br />

be used for M, Q, D, J models).<br />

DELETE<br />

DELETE BREAK index<br />

DELETE BREAK ALL<br />

DELETE index<br />

Eldo® User's Manual, 15.3 1463


Eldo Interactive Mode<br />

Change Features<br />

DELETE is used to remove breakpoints used to stop Eldo at run time. The third syntax is used<br />

to remove the command corresponding to the index returned by the command STATUS .<br />

DISABLE<br />

DISABLE BREAK index<br />

DISABLE BREAK ALL<br />

DISABLE is used to remove breakpoints used to stop Eldo at run time. Breakpoints can be<br />

enabled back using command ENABLE.<br />

ENABLE<br />

ENABLE BREAK index<br />

ENABLE BREAK ALL<br />

ENABLE is used to re-activate breakpoints used to stop Eldo at run time, whenever these<br />

breakpoints have been disabled by DISABLE.<br />

FORCE<br />

FORCE =<br />

Force the node node_name to value after RISE_TIME or FALL_TIME depending on current<br />

value (see further information below). Used to impose a voltage on a node. If multiple FORCE<br />

are applied on the same node, the last command is used. If an input signal was applied on the<br />

node it will be ignored. The voltage imposed by FORCE can be removed using RELEASE.<br />

HIGH<br />

HIGH <br />

Force the node node_name to HIGHVOLTAGE after RISE_TIME (see further information<br />

below).<br />

LOW<br />

LOW <br />

Force the node node_name to LOWVOLTAGE after FALL_TIME (see further information<br />

below).<br />

Tip<br />

The previous three commands contain the parameters, HIGHVOLTAGE, LOWVOLTAGE,<br />

RISE_TIME and FALL_TIME. These parameters can be set using the .OPTION command.<br />

For more information, see Miscellaneous Simulation Control Options in the Eldo Reference<br />

Manual.<br />

1464<br />

Eldo® User's Manual, 15.3


Eldo Interactive Mode<br />

Change Features<br />

PWL<br />

PWL t1 v1 [t2 v2] ...<br />

Force a PWL on the specified node during transient simulation. tn are times<br />

relative to the current time. vn are the source values at tn.<br />

RELEASE<br />

RELEASE ...<br />

Release force on node. If a signal is present on node , and if no FORCE command<br />

had been applied on the node, then the signal is disabled (node will be computed by Eldo as any<br />

other node).<br />

SET<br />

SET E ( [,W/L/AD/AS/PD/PS/NRD/NRS/]) [=] <br />

SET M (,) [=] <br />

SET P () [=] <br />

The SET command is used to change device geometries or models parameters. The<br />

parameter_name can be specified as a string parameter.<br />

SETBUS<br />

SETBUS [[:]] <br />

Set a value on a bus. The SETBUS command sets a value on the specified bus. Values may be<br />

specified as binary, octal, hexadecimal, or decimal. The bus bit accepts the standard digital<br />

values 1, 0, X and Z.<br />

The command automatically sets all signals in a bus if the subscripted values are omitted. The<br />

default bit order is the European style D 0 ...D N-1 . Therefore, for a hierarchical base name that<br />

defines an 8-bit bus, the command:<br />

setbus Xcircuit.port[0:7] b00001111<br />

is equivalent to:<br />

setbus Xcircuit.port b00001111<br />

To use the American style D N-1 ...D 0 bit order, you must specify the range of bits explicitly:<br />

setbus Xcircuit.port[7:0] b00001111<br />

The SETBUS command ignores the most significant portion of values that are wider than the<br />

specified bus. Therefore, if you set a value of hexadecimal 8F to a 12 bit bus, the bus receives<br />

the value 0F.<br />

Eldo® User's Manual, 15.3 1465


Eldo Interactive Mode<br />

Controlling Execution<br />

Note<br />

This SETBUS syntax is different to the Eldo .SETBUS syntax used in the netlist .cir file.<br />

See .SETBUS and .SIGBUS in the Eldo Reference Manual. However, if you want to use the<br />

netlist syntax in interactive mode, specify the Eldo interactive command:<strong>eldo</strong>>LSIM OFF<br />

TRANSITION<br />

TRANSITION TT VALUE [DELAY]<br />

TT<br />

VALUE<br />

DELAY<br />

Transition Time<br />

Value of the signal after the transition<br />

Time delay before the transition starts<br />

Overwrite the signal which was on node by a PWL:<br />

Vxx 0 PWL ( <br />

)<br />

Controlling Execution<br />

This section describes the commands used to control execution.<br />

LOAD <br />

This command stops the current simulation, and Eldo loads the file . Extension .cir<br />

is assumed.<br />

SAVESIM <br />

Eldo creates three files:<br />

1. filename.eilThis file contains all the commands typed since the loading of the circuit<br />

file; it is possible to re-execute this set of functions by:<br />

-i circuit -eil filename.eil<br />

2. filename.chiThis file contains the ASCII output.<br />

3. filename.couThis file is the binary output file readable by graphic-postprocessors.<br />

Note<br />

A .pz file might be created if a .pz card exists.<br />

The files circuit.cou and circuit.chi are then reset.<br />

1466<br />

Eldo® User's Manual, 15.3


STOP IF <br />

Eldo Interactive Mode<br />

Controlling Execution<br />

Set breakpoints in interactive mode. can refer to the SWEEP value, and/or any<br />

valid plot command.<br />

The argument, soadetected, can be specified to specify a breakpoint on a safe operating area<br />

(SOA).<br />

Examples:<br />

STOP IF (SWEEP > 1n)<br />

STOP IF ((SWEEP > 10n) && (V(S) > 2.5))<br />

stop if(soadetected(mysoa))<br />

Eldo will stop the first time the .SOA labeled mysoa is violated. Wildcards are allowed in<br />

soadetected.<br />

STOP SIMU<br />

Stop the current simulation; Eldo is then ready to run a new simulation.<br />

RUN<br />

Restart the simulation.<br />

RUN FOR <br />

RUN UNTIL <br />

Run until the sweep value has changed of <br />

Run until the sweep value reaches <br />

Note<br />

can be a parameter, this must be specified on the .PARAM command in the netlist.<br />

NEXT [SIMU]<br />

NEXT<br />

NEXT SIMU<br />

Eldo will stop at the next sweep value.<br />

Eldo will stop after the next simulation if .TEMP or<br />

.STEP command are found.<br />

CONT<br />

CONT<br />

Forces Eldo to continue the simulation(s) until<br />

breakpoints are encountered, or the requested number<br />

of simulation is completed.<br />

Eldo® User's Manual, 15.3 1467


Eldo Interactive Mode<br />

Controlling Execution<br />

QUIT<br />

QUIT<br />

QUIT SIMU<br />

Quit the application.<br />

Stop current analysis.<br />

VIEW , UNVIEW <br />

Used for adding or removing signals whenever EZwave is connected to Eldo, running in<br />

interactive mode.<br />

Examples:<br />

view V(VDA)<br />

view I(*)<br />

1468<br />

Eldo® User's Manual, 15.3


Appendix D<br />

Eldo Conversion Utilities<br />

This appendix describes some conversion utilities available with Eldo.<br />

Utility to Convert .chi to .cir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1470<br />

Utility to Convert VCD to Test Vectors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1471<br />

Utility to Convert a Waveform Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473<br />

Eldo® User's Manual, 15.3 1469


Eldo Conversion Utilities<br />

Utility to Convert .chi to .cir<br />

Utility to Convert .chi to .cir<br />

A standalone utility chi2cir converts an Eldo ASCII output (.chi) file into a netlist (.cir) file. The<br />

resulting netlist file is independent of any libraries (no .LIB/.INCLUDE required), and all<br />

information required for another simulation is inside the netlist file (providing that there were<br />

no commands such as .NOTRC preventing the writing of the circuit description in the .chi file).<br />

Usage<br />

chi2cir [chifile cirfile]<br />

Arguments<br />

• chifile<br />

Input filename, the Eldo ASCII output (.chi) file.<br />

• cirfile<br />

Output filename for the resulting netlist (.cir) file.<br />

If no options are specified, the utility will prompt you for filenames.<br />

Description<br />

This utility could be useful to exchange testcases between <strong>user</strong>’s avoiding library dependence<br />

and would also simplify the creation of different tests on the same circuit.<br />

Once the circuit has been run once (to generate the .chi file), run this chi2cir utility to generate a<br />

testcase from this .chi output to modify some parameters/options to re-run other simulations.<br />

• The chi2cir utility does not handle references to Verilog-A model files or S-parameters<br />

files.<br />

• No provision is made for .ALTER statements for multiple simulation runs, only the first<br />

simulation is taken into account.<br />

Examples<br />

chi2cir trigger.chi my_trigger1.cir<br />

Once the original trigger.cir circuit had been run once (to generate the .chi file), running the<br />

chi2cir utility on the trigger.chi ASCII output file generates a testcase file my_trigger1.cir.<br />

Some parameters/options can then be modified in this testcase to re-run other simulations.<br />

1470<br />

Eldo® User's Manual, 15.3


Eldo Conversion Utilities<br />

Utility to Convert VCD to Test Vectors<br />

Utility to Convert VCD to Test Vectors<br />

A standalone utility vcd2tv can be used to convert VCD (Value Change Dump) stimuli into test<br />

vectors. It is a simple format converter, and can be used independently for any simulator.<br />

Output is in the test vector format. This utility can also be used to convert EVCD (extended<br />

VCD) files. Note when converting from EVCD format: inout statements are converted to input<br />

statements.<br />

Usage<br />

vcd2tv -i vcd_input_file [-io io_input_file] [-o tv_output_file]<br />

[-hier] [-end_time conversion_end_time] [-case]<br />

Arguments<br />

• -i vcd_input_file<br />

Input filename. Name of the VCD file to convert.<br />

• -io output_file<br />

Input/output filename. Name of the file containing the I/O definition (input or output).<br />

• -o tv_output_file<br />

Output filename. Name of the test vector file (.tv) to generate.<br />

• -hier<br />

When specified hierarchical node names are also converted. If not specified, only the top<br />

level is converted.<br />

• -end_time conversion_end_time<br />

Conversion time limit (if not specified conversion is done until the end of the VCD file).<br />

• -case<br />

Enables the case sensitive treatment of signal names.<br />

If this is not enabled, and the utility detects two signals with the same name except for the<br />

case, a warning will be generated suggesting to enable case-sensitivity with the -case<br />

argument. For example:<br />

*** Warning:the following signals are merged because their names<br />

differ only by the case. Please use -case option to enable case<br />

sensitivity.<br />

CLK<br />

clk<br />

Description<br />

The ADiT Fast-SPICE simulator supports VCD directly because it internally converts it to test<br />

vector format, transparently using the vcd2tv converter. Eldo is not able to read VCD, which is<br />

why this utility is useful. It can be used for any simulator which can read test vectors but not<br />

VCD.<br />

Eldo® User's Manual, 15.3 1471


Eldo Conversion Utilities<br />

Utility to Convert VCD to Test Vectors<br />

After converting a VCD file, use the generated test vector file by specifying the .TVINCLUDE<br />

command in the Eldo Reference Manual.<br />

Examples<br />

vcd2tv -i testcase2.vcd -io testcase2_ports.csv<br />

Converts the VCD values into test vectors, using the I/O definition provided in the .csv file,<br />

storing the test vectors in the generated file vcd2tv.tv.<br />

1472<br />

Eldo® User's Manual, 15.3


Eldo Conversion Utilities<br />

Utility to Convert a Waveform Database<br />

Utility to Convert a Waveform Database<br />

A standalone utility ffcv can be used to convert a waveform database from one format to one, or<br />

several, other formats.<br />

Usage<br />

ffcv [-i] input_database output_format_modifier [output_database]<br />

[-cvt_start xstart] [-cvt_stop xstop] [-cvt_tsample xvalue]<br />

[-cvt_progress] [-cvt_stat] [-cvt_duplicate_rule]<br />

[-cvt_mode SEQUENTIAL | GROUP | FULL]<br />

[-cvt_group_size val]<br />

[-cvt_untyped VOLTAGE | CURRENT]<br />

[-cvt_trise val] [-cvt_tfall val]<br />

[-tabular_comment string]<br />

[-tabular_separator string]<br />

[-cvt_numdgt value]<br />

[-cvt_selection_list filename]<br />

Arguments<br />

• [-i] input_database<br />

Input filename with known extension. Name of the waveform database file to convert.<br />

Note<br />

Split FSDB files of the following extensions are allowed: .fsdb.X or<br />

.fsdb0.x; .X.fsdb or .X.fsdb0; .fsdb_X or .fsdb0_X.<br />

• output_format_modifier<br />

Specification of the output format to generate. Can be one of the following:<br />

Table D-1. ffcv Output Format Modifier<br />

output_format_modifier Output Format<br />

-cou<br />

Binary COU file<br />

-cou_ascii<br />

Raw ASCII representation of a COU file<br />

-comment<br />

Commented ASCII representation of a COU file<br />

-compat<br />

Binary compatible file<br />

-compat_ascii<br />

ASCII compatible file<br />

-csdf<br />

CSDF file<br />

-fsdb<br />

FSDB file, compatible version is v5.2 (release<br />

2014.12) on Linux only<br />

-wdb<br />

Joint Waveform Database file (Eldo default)<br />

-stimuli<br />

SPICE representation of voltage waveforms<br />

Eldo® User's Manual, 15.3 1473


Eldo Conversion Utilities<br />

Utility to Convert a Waveform Database<br />

Table D-1. ffcv Output Format Modifier (cont.)<br />

output_format_modifier Output Format<br />

-tabular<br />

Tabulated representation of waveforms<br />

-wdf WDF file, compatible version is v2007.1<br />

• output_database<br />

Output filename. Name of the waveform database file to write converted format to. By<br />

default the root name of the input file is used with the output format modifier extension.<br />

General Purpose Arguments<br />

• -cvt_start xstart<br />

Conversion start point (time or frequency) in database.<br />

• -cvt_stop xstop<br />

Conversion end point (time or frequency) in database.<br />

• -cvt_tsample xvalue<br />

Time or frequency interval to sample output data.<br />

• -cvt_progress<br />

Displays the conversion progression, in percent.<br />

• -cvt_duplicate_rule FIRST | MAX | MIN | LAST | ALL<br />

Selects which value must be written to the output database when the input database contains<br />

multiple values at the same X. Default is set to ALL if the input database uses a compatible<br />

format, and MAX for other formats.<br />

Format-Specific Arguments<br />

• -cvt_mode SEQUENTIAL | GROUP | FULL<br />

Applies to FSDB format only. Selects the method used to convert the input database into the<br />

target format(s). This option is format dependent: it can be ignored if the input (or output)<br />

format does not support one or the other method. Default is set to FULL.<br />

FULL<br />

All waveforms are loaded in a single pass reading. This method is faster than the<br />

sequential method, but it requires more memory. Default.<br />

GROUP<br />

Waveforms are loaded in groupings of 200. This is an intermediate conversion mode<br />

between FULL and SEQUENTIAL. To modify the grouping size specify argument<br />

-cvt_group_size.<br />

SEQUENTIAL<br />

Waveforms are loaded one after another. This method is often slower because it uses<br />

multiple-pass reading. However, it usually requires less memory.<br />

1474<br />

Eldo® User's Manual, 15.3


Eldo Conversion Utilities<br />

Utility to Convert a Waveform Database<br />

• -cvt_group_size value<br />

Applies to FSDB format only. Specifies the number of waveforms to load simultaneously in<br />

-cvt_mode GROUP mode.<br />

• -cvt_stat<br />

Applies to FSDB format only. Displays statistical information about file content. For<br />

example:<br />

Statistical information about data read so far :<br />

------------------------------------------------<br />

simulator version: ELDO 15.1 (64 bits)<br />

number of unsupported waveforms: 0<br />

number of waveforms: 5<br />

analog: 5<br />

digital: 0<br />

bus: 0 (for a total of 0 bits)<br />

number of aliases: 0<br />

number of files: 1<br />

number of nodes in the hierarchy: 1<br />

• -cvt_selection_list filename<br />

Applies to FSDB format only. Provides a list of waveforms to extract from the input file,<br />

one waveform name per line. Wildcards are not supported. Waveform names are casesensitive.<br />

They follow FSDB syntax, the hierarchy comes before the signal name, for<br />

example:<br />

/top/x1/V(input)<br />

The hierarchy separator can be specified inside the file using syntax:<br />

#hierarchy_separator <br />

where character is the hierarchical separator (default is /).<br />

Example conversion notes:<br />

Conversion note: 4 signal references have been identified in file<br />

my.list.txt<br />

Conversion note: 2 waveforms matching selection list were loaded<br />

from FSDB file.<br />

• -cvt_untyped VOLTAGE | CURRENT<br />

Applies to WDB and STIMULI output only. Defines the default type which must be<br />

assigned to untyped waveforms such as VHDL-AMS real signals.<br />

• -cvt_trise value<br />

Applies to STIMULI output only. Specifies the rise time applied to edges encountered while<br />

converting digital-like waveforms, such as VHDL-AMS real signals, into analog waveforms<br />

(default is 1.0e-12 seconds).<br />

Eldo® User's Manual, 15.3 1475


Eldo Conversion Utilities<br />

Utility to Convert a Waveform Database<br />

• -cvt_tfall value<br />

Applies to STIMULI output only. Specifies the fall time applied to edges encountered while<br />

converting digital-like waveforms, such as VHDL-AMS real signals, into analog waveforms<br />

(default is 1.0e-12 seconds).<br />

• -tabular_comment string<br />

Applies to TABULAR output only. Defines the comment character for tabular output<br />

format.<br />

• -tabular_separator string<br />

Applies to TABULAR output only. Defines the column separator for tabular output format.<br />

For example to remove the comment char and use a comma as the separator, specify the<br />

command:<br />

ffcv -tabular -tabular_comment """" -tabular_separator "", ""<br />

• -cvt_numdgt value<br />

Applies to TABULAR output only. Specifies the number of significant digits printed for<br />

numerical values.<br />

Description<br />

See also:<br />

• Index File Format in the EZwave User’s and Reference Manual<br />

• dataset merge in the EZwave User’s and Reference Manual<br />

1476<br />

Eldo® User's Manual, 15.3


Appendix E<br />

STMicroelectronics Models<br />

Describes how to use the STMicroelectronics models inside Eldo, which is called Eldo-ST<br />

mode.<br />

How to Invoke Eldo-ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477<br />

What Does Eldo-ST Mode Change?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1478<br />

How to Invoke Eldo-ST<br />

Eldo-ST mode is invoked either on the command line or by specifying an option. The .OPTION<br />

takes precedence. Use to enable STMicroelectronics device models.<br />

• Command line:<br />

<strong>eldo</strong> -stver ... cir_file_name<br />

• Option (must be specified before the .MODEL cards):<br />

.OPTION STVER<br />

You can disable the Eldo-ST mode either on the command line or by specifying an option. The<br />

.OPTION takes precedence.<br />

• Command line:<br />

<strong>eldo</strong> -nostver ... cir_file_name<br />

• Option (must be specified before the .MODEL cards):<br />

.OPTION NOSTVER<br />

Instead of these global settings, you can enable individual ST-models by adding the following<br />

in the .MODEL card:<br />

MODTYPE=STVER<br />

This takes precedence over any STVER or NOSTVER global setting (in the command line, as<br />

an option, or in the Eldo initialization file <strong>eldo</strong>.ini).<br />

When MODTYPE=STVER is used, some additional options can also be specified that are set<br />

by default when the global Eldo-ST mode is set:<br />

• .option WL<br />

Eldo® User's Manual, 15.3 1477


STMicroelectronics Models<br />

What Does Eldo-ST Mode Change?<br />

Reverses the order of MOS length and width specification for rare cases where only<br />

values are specified without keywords W= and L=.<br />

• .option ERRDEVDUPLI<br />

Forces Eldo to stop the simulation and generate an error if there are duplicate instance<br />

names. Default.<br />

• .option STPROBEOP<br />

Forces Eldo to generate the operating point file named probeop# instead of<br />

.op#.<br />

What Does Eldo-ST Mode Change?<br />

When Eldo-ST is invoked, model levels are automatically changed to use Eldo-ST in exactly<br />

the same way as ST-SPICE.<br />

You can use standard Eldo levels in Eldo-ST by adding the following in the .MODEL card:<br />

MODTYPE=ELDO<br />

Specially tuned device models have been developed for use when simulating<br />

STMicroelectronics designs. These STMicroelectronics models are available within the<br />

standard version of Eldo.<br />

A special version of Eldo is also available which has been developed for use within the<br />

STMicroelectronics design kit. This version is identical to the standard version in every respect<br />

except that the STMicroelectronics device models occupy different levels within the lists of<br />

available device models.<br />

Option OPTYP<br />

When Eldo-ST is invoked, an additional control of Operating Point information is available.<br />

• .OPTION OPTYP=2<br />

Can be specified only when either the -stver argument or the STVER option are set.<br />

Used to print the reduced operating point information for the MOSFET models (see the<br />

SPICE documentation for more details). Otherwise equivalent to optyp=1. This can be<br />

used with UDM and BSIM4 models.<br />

Table E-1 lists the character string displayed in the Operating Point table for the different optyp<br />

values. Elements on the same line are synonymous: that is, the same value is printed if optyp<br />

changes.<br />

1478<br />

Eldo® User's Manual, 15.3


STMicroelectronics Models<br />

What Does Eldo-ST Mode Change?<br />

optyp=1 (Default)<br />

or optyp=3<br />

Table E-1. Operating Point—optyp values<br />

When -stver argument<br />

or STVER option is set<br />

ID ID ID<br />

IS<br />

IB<br />

VGS VGS VGS<br />

VDS VDS VDS<br />

VBS VBS VBS<br />

VTH VTH VTH<br />

VDSAT VSS VSS<br />

When -stver argument or<br />

STVER option is set and optyp=2<br />

GM -Gsg gm<br />

GDS<br />

Gds<br />

GMB Gdd+ Gdg + Gds gmbs<br />

Ibd<br />

Ibd<br />

Ibs<br />

Ibs<br />

Gdd<br />

Gdg<br />

Gss<br />

Gsd<br />

Gbd<br />

Gbs<br />

RON<br />

1/max(1e30,Gds)<br />

An explanation of some of these parameters is provided below:<br />

Ibd<br />

Ibs<br />

VTH<br />

VSS or VDSAT<br />

Bulk-drain current through the parasitic BD diode.<br />

Bulk-source current through the parasitic BS diode.<br />

Internal threshold OP dependent; see the Eldo Device Equations<br />

Manual for how it is computed.<br />

Saturation voltage at DCOP.<br />

Eldo® User's Manual, 15.3 1479


STMicroelectronics Models<br />

What Does Eldo-ST Mode Change?<br />

Gxy<br />

Cxy<br />

Isub<br />

Derivative of static current on node x with respect to Vy; x and y<br />

can be one of D, G, S, B.<br />

Derivative of charge on node x with respect to Vy; x and y can<br />

be one of D, G, S, B.<br />

Subthreshold current component.<br />

As shown in Table E-1, with the -st argument or STVER option set and optyp not set or not 2,<br />

then Eldo reports multiple Gxy terms, where Gxy stands for derivative of current on pin x with<br />

respect to voltage on pin y. For example, Gds is the derivative of the current on the Drain with<br />

respect to the voltage on the Source. In all other cases, just three conductances values are<br />

reported:<br />

• GM is the derivative of IDS with respect to VGS.<br />

• GDS is the derivative of IDS with respect to VDS.<br />

• GMBS is the derivative of IDS with respect to VBS.<br />

In the OP table for BSIM3v3, Eldo also displays VBI and PHI:<br />

PHI<br />

VBI<br />

Surface potential at strong inversion.<br />

Built-in voltage for the PN junction between the substrate and<br />

the source.<br />

Table E-2. Operating Point—optyp values—Dynamic Part for Charge Control<br />

Model<br />

optyp=1<br />

(Default)<br />

optyp=3<br />

When -st argument or<br />

STVER option is set<br />

Cdd Cddb Cdd<br />

Cdg Cdgb Cdg<br />

Cds Cdsb Cds<br />

Cdb Cdb Cdb+CJDB<br />

Cgd Cgdb Cgd Cgd+CVGD<br />

Cgg Cggb Cgg<br />

Cgs Cgsb Cgs Cgs+CVGS<br />

Cgb Cgb Cgb+CVGB<br />

Csd<br />

Csd<br />

Csg<br />

Csg<br />

When -st argument or<br />

STVER option is set and<br />

optyp=2<br />

1480<br />

Eldo® User's Manual, 15.3


Css<br />

Css<br />

Csb Csb Csb+CJSB<br />

Cbd Cdbd Cbd<br />

Cbg Cbgb Cbg<br />

Cbs Cbsb Cbs<br />

Cbb<br />

Cbb<br />

Option PROBEOP<br />

STMicroelectronics Models<br />

What Does Eldo-ST Mode Change?<br />

Table E-2. Operating Point—optyp values—Dynamic Part for Charge Control<br />

Model (cont.)<br />

optyp=1<br />

(Default)<br />

optyp=3<br />

When running Eldo-ST mode, with the -stver flag or option STVER set, option PROBEOP is<br />

set by default and the generated file is named probeopX, where X is the index of the run. Specify<br />

option NOPROBEOP to disable the creation of the probeopX file in Eldo-ST mode.<br />

Option NODUPINSTERR<br />

When -st argument or<br />

STVER option is set<br />

When -st argument or<br />

STVER option is set and<br />

optyp=2<br />

When running Eldo-ST mode, with the -stver flag or option STVER set, option<br />

NODUPINSTERR changes ERROR 838 into WARNING 204. This option is ignored if not<br />

specified with the stver argument/option.<br />

Eldo® User's Manual, 15.3 1481


STMicroelectronics Models<br />

What Does Eldo-ST Mode Change?<br />

1482<br />

Eldo® User's Manual, 15.3


Index<br />

— Symbols —<br />

! comment delimiter, 104<br />

.AC<br />

Examples, 1272, 1275, 1278, 1281, 1291,<br />

1306<br />

.ADDLIB<br />

.SUBCKT, 127<br />

.ALTER<br />

Altering netlist data, 298<br />

Examples, 300<br />

.CHECKSOA<br />

Safe Operating Area (SOA) Checks, 341<br />

.cir file, 95<br />

.cir File Structure Overview, 97<br />

.DATA<br />

Sweeping parameters, 296<br />

.DC, 205<br />

.DCMISMATCH, 269<br />

.DEFPLOTDIG, 316<br />

.DEX, 274<br />

.DSPF_INCLUDE<br />

Post-layout simulation, 394<br />

.EXTRACT<br />

Extract functions, 324<br />

Extract outputs, 324<br />

Extracting information, 321<br />

Extraction Mode, 327<br />

Monte Carlo analysis (.MC), 465, 468<br />

Plot and print quantities, 323<br />

.HIZ<br />

High Impedance Node Checks, 349<br />

.IP_protect, 146<br />

.LIB<br />

.SUBCKT, 127<br />

Interactive mode, 137<br />

.LSTB, 229<br />

Example, 1299<br />

.MC, 265<br />

Examples, 1291<br />

Index<br />

.MODEL<br />

Examples, 1278, 1281, 1284, 1287, 1291,<br />

1294<br />

.MPRUN, 156<br />

.NOISE, 239<br />

Examples, 1278<br />

.NOISETRAN, 241, 244<br />

.OP, 208<br />

.OPTNOISE, 239<br />

.PARAM<br />

Examples, 1287<br />

Parameter values, 291<br />

.PLOT<br />

.AC, 225<br />

.TRAN, 218, 259, 268<br />

Dynamic plot, 47, 318<br />

Examples, 1272, 1275, 1278, 1281, 1284,<br />

1287, 1291, 1295<br />

.POWER_ANALYSIS, 279<br />

.PRINT<br />

.AC, 225<br />

.TRAN, 218, 259, 268<br />

.PZ, 230<br />

.RAMP<br />

DC Operating Point Calculation, 212<br />

.REDUCE<br />

Reduction, 404<br />

.SAVE<br />

DC Operating Point Calculation, 215<br />

End of Simulation Results, 221<br />

.SENS, 270<br />

Examples, 1294<br />

.SENS TRAN, 272<br />

.SENSAC, 272<br />

.SENSPARAM, 273<br />

.SETSOA<br />

Safe Operating Area (SOA) Checks, 341<br />

.STEP<br />

Nested sweeps, 295<br />

Sweeping parameters, 292<br />

Eldo® User's Manual, 15.3<br />

1483


Sweeping parameters examples, 292<br />

.SUBCKT<br />

.PRINT, 310<br />

Examples, 1281<br />

.TEMPNODE, 282<br />

.TF, 237<br />

.TRAN<br />

Examples, 1275, 1284, 1287, 1298, 1303,<br />

1305, 1307<br />

.USE<br />

DC Operating Point Calculation, 215<br />

.USE_TCL, 1139<br />

.WCASE, 267<br />

*comment delimiter, 103<br />

// comment delimiter, 103<br />

— Numerics —<br />

4th Order Butterworth Filter Tutorial, 1274<br />

5th Order Elliptic SC Low Pass Filter Example,<br />

1303<br />

— A —<br />

ABS (Absolute value) function, 109<br />

AC Analysis (.AC)<br />

.LSTB, 229<br />

.PZ, 230<br />

.TF, 237<br />

4th Order Butterworth Filter Example,<br />

1275<br />

Active RC Band Pass Filter Example, 1306<br />

Adaptive example, 226<br />

Band Pass Filter Example, 1278<br />

Description, 224<br />

during Transient analysis, 226<br />

Examples, 1281, 1295<br />

Parallel LCR Example, 1272<br />

Results, 225<br />

Save and Restart, 227<br />

AC Sensitivity Analysis (.SENSAC)<br />

Description, 272<br />

Results, 273<br />

Accuracy<br />

EPS Parameter, 1453<br />

VNTOL parameter, 1453<br />

ACOS (Arc cosine of value) function, 109<br />

ACOSH (Arc hyperbolic cosine of value)<br />

function, 109<br />

Active RC Band Pass Filter Example, 1306<br />

Admittance parameters, 683<br />

Aging and Reliability Analysis (Eldo UDRM)<br />

Description, 277<br />

Aging and Reliability Simulation, 713<br />

Altering Netlist Data, 298<br />

Amodel Error Messages, 1401<br />

Arithm etic Functions&Operators<br />

PWL(), 110<br />

Arithmetic Functions&Operators<br />

ABS(VAL), 109<br />

ACOS(VAL), 109<br />

ACOSH(VAL), 109<br />

ASIN(VAL), 109<br />

ASINH(VAL), 109<br />

ATAN(VAL), 109<br />

ATANH(VAL), 109<br />

BITOF(a, b), 109<br />

CEIL(VAL), 109<br />

COMPL EX(a,b), 112<br />

CONJ(), 112<br />

COS(VAL), 109<br />

COSH(VAL), 109<br />

DB(VAL), 109<br />

DDT(VAL), 109, 110<br />

DERIV(VAL), 109<br />

DMAX(VAL1, ..., VALn), 110<br />

DMIN(VAL1, ..., VALn), 110<br />

EXP(VAL), 109<br />

IDT(VAL), 110<br />

IMAG(), 112<br />

INT(VAL), 110<br />

INTEG(VAL), 110, 112<br />

LIMIT(a, b, c), 110<br />

LOG(VAL), 110<br />

LOG10(VAL), 110<br />

MAGNITUDE(), 112<br />

MAX(VAL1, ..., VALn), 110<br />

MIN(VAL1, ..., VALn), 110<br />

MOD(x,y), 110<br />

ONGRID(), 110<br />

POW(VAL1, VAL2), 110<br />

PWL_CTE(), 110<br />

1484 Eldo® User's Manual, 15.3


PWL_LIN(), 111<br />

PWR(VAL1, VAL2), 110<br />

REAL(), 112<br />

ROUND(VAL), 111<br />

SELECT(), 111<br />

SGN(VAL), 111<br />

SIGMA(), 111<br />

SIGN(VAL), 111<br />

SIGN(VAL1, VAL2), 111<br />

SIN(VAL), 111<br />

SINH(VAL), 111<br />

SMABS(val,eps), 111<br />

SMMAX(a,b,eps), 111<br />

SMMIN(a,b,eps), 111<br />

SMSGN(val,eps), 111<br />

SMSIGN(val,eps), 111<br />

SQRT(VAL), 111<br />

STOSMITH(), 112<br />

STRCASECMP(str1,str2), 112<br />

STRCMP(str1,str2), 111<br />

STRMATCH(str,pat), 111<br />

STRNCASECMP(str1,str2,n), 112<br />

STRNCMP(str1,str2,n), 112<br />

TAN(VAL), 112<br />

TANH(VAL), 112<br />

TRUNC(VAL), 112<br />

VALUEOF(), 112<br />

YTOSMITH(), 112<br />

ZTOSMITH(), 112<br />

Arithmetic Functions&Operators in Eldo<br />

Arithmetic Functions, 109<br />

Arithmetic operators, 116<br />

Bitwise operators, 117<br />

Boolean operators, 116<br />

-compat flag, 114, 177<br />

Expressions, 118<br />

ASINH (Arc hyperbolic sine of value)<br />

function, 109<br />

ATAN (Arc tangent of value) function, 109<br />

ATANH (Arc hyperbolic tangent of value)<br />

function, 109<br />

— B —<br />

Band Pass Filter Tutorial, 1277<br />

Bipolar Amplifier Tutorial, 1293<br />

BITOF function, 109<br />

Bitwise operators, 117<br />

Boolean operators, 116<br />

Bootstrap<br />

Statistical analysis, 470<br />

— C —<br />

Calculation of Transfer Function (.TF), 237<br />

Capacitors<br />

Floating&Grounded Information, 363<br />

Cascaded Inverter Circuit, 32<br />

Case-Sensitivity, 105<br />

CEIL (Value rounded up to integer) function,<br />

109<br />

Charge Control in MOS Models Example,<br />

1304<br />

Check Safe Operating Area Analysis<br />

.CHECKSOA, 278, 279<br />

.SETSOA, 278, 279<br />

Chi File Output, 363<br />

backward compatibility, 365<br />

Convergence Information, 364<br />

Floating&Grounded Capacit ors<br />

Information, 363<br />

Locating messages, 368<br />

Matrix Information, 366<br />

Newton Block Information, 364<br />

Node&Element Information, 363<br />

Simulation time, 365<br />

System information, 363<br />

chi2cir utility, 1470<br />

Circuit file, 95<br />

Circuit Title, 98<br />

CITIfile Data Format, 708<br />

CKDCPATH option, 174<br />

Classification of Error Messages, 369<br />

Colpitts Oscillator Tutorial, 1283<br />

Command<br />

Error Messages, 1392<br />

Warning Messages, 1421<br />

Command Description<br />

.NOISETRAN, 244<br />

.TEMP, 287<br />

Command Line operation<br />

-extract, 327<br />

Comment Lines in Eldo, 103<br />

Common Netlist Errors, 1453<br />

Eldo® User's Manual, 15.3<br />

1485


-compat flag<br />

Arithmetic Functions&Operators in Eldo,<br />

114, 177<br />

Compatibility<br />

HSPICE, 162<br />

Spectre, 179<br />

COMPEXUP option, 174<br />

COMPLEX (Complex number) function, 112<br />

Complex Modifiers, 314<br />

Component Names in Eldo, 99<br />

Compound Waveforms, 315<br />

CONJ (Conjugate of complex number)<br />

function, 112<br />

Continuation Lines in Eldo, 103<br />

Control Language, 95<br />

Convergence<br />

DC, 211<br />

improving, 211<br />

troubleshooting, 213<br />

Convergence Information in Eldo, 364<br />

COS (Cosine of value) function, 109<br />

COSH (Hyperbolic cosine of value) function,<br />

109<br />

Current simulation time<br />

TIME variable, 119<br />

— D —<br />

DB (Value in decibels) function, 109<br />

DC Analysis (.DC)<br />

.DC, 205<br />

.OP, 208<br />

convergence, 211<br />

convergence troubleshooting, 213<br />

differences with .OP, 210<br />

during Transient analysis, 207<br />

improving convergence, 211<br />

Results, 206<br />

Save and Restart, 215<br />

DC Mismatch Analysis (.DCMISMATCH)<br />

Description, 269<br />

Results, 269<br />

DC Operating Point, 211<br />

DC Operating Point Calculation (.OP)<br />

.SAVE and .RESTART, 215<br />

.SAVE and .USE, 215<br />

DC Sensitivity Analysis (.SENS)<br />

Description, 270<br />

Results, 271<br />

DDT (Derivative of value) function, 109<br />

Defining Waveforms, 336<br />

Examples, 337<br />

Deleting a Library, 136<br />

DERIV (Derivative of value) function, 109<br />

Design of Experiments, 274, 556<br />

Design of Experiments Analysis (.DEX)<br />

Description, 274<br />

Results, 275<br />

Device Libraries, 127, 132<br />

.ADDLIB, 132<br />

.INCLUDE, 132<br />

.LIB, 132<br />

.SCOPE, 133<br />

Deleting a library, 136<br />

Library variant management, 134<br />

Nesting, 135<br />

Search path priorities, 133<br />

Search rules and naming conventions, 136<br />

DEX, 274, 557<br />

Directives, 121<br />

Distribution<br />

gaussian, 433<br />

LIMIT, 548<br />

uniform, 431<br />

User-defined, 435<br />

DMAX (Maximum value) function, 110<br />

DMIN (Minimum value) function, 110<br />

Documentation Syntax Conventions, 39<br />

DSCGLOB option, 127<br />

DSP Functions<br />

Post-Processing Library (PPL), 1215<br />

DSPF Backannotation, 392<br />

DSPF Backannotation Examples, 396<br />

Dynamic Plot<br />

Simulation Connection Manager, 318<br />

Dynamic plot<br />

Simulation Connection Manager, 47<br />

Dynamically Adding Voltage/Current Plots,<br />

318<br />

— E —<br />

Effects of Error Messages, 369<br />

Eldo<br />

1486 Eldo® User's Manual, 15.3


32-bit and 64-bit modes, 42<br />

An Introduction, 29<br />

chi2cir utility, 1470<br />

convert .chi to .cir, 1470<br />

Efficient Usage, 1243<br />

Encryption, 139<br />

fast launch script, 46<br />

Getting Started, 31<br />

Initialization file, 51<br />

Input and Output Files, 35<br />

Multi-Threading, 42<br />

Netlist Setup, 95<br />

Running from the Command Line, 41<br />

Running of, 31, 41<br />

Simulation Connection Manager, 47, 318<br />

Speed and Accuracy, 1243<br />

Syntax, 103<br />

Temperature Handling, 287<br />

Utilities, 1470<br />

Eldo Premier, 61<br />

Automatic Activation, 64<br />

Classic DC Solution, 66<br />

Enabling, 64<br />

Error Messages, 1408<br />

Example, 62<br />

Matrix-like circuits, 67<br />

Netlist Support, 74<br />

Output, 69<br />

Overview, 61<br />

RAM disk storage, 68<br />

Supported Com mands, 74<br />

Supported Models, 89<br />

Supported Options, 78<br />

Target Applications, 62<br />

Temporary Files, 69<br />

Transient Noise Analysis, 90<br />

Unsupported Devices and Features, 93<br />

Warning Messages, 1450<br />

Eldo UDRM<br />

Aging and reliability analysis, 277<br />

<strong>eldo</strong>.ini, 51<br />

Electrothermal Simulation<br />

.TEMPNODE, 282<br />

Element and Source Definitions, 99<br />

Encryption, 139<br />

.IP_protect, 146<br />

Encrypted libraries, 144<br />

Encrypting a protected library, 144, 146<br />

Errors and Warnings, 154<br />

Semi-Transparent, 147<br />

End Statement, 102<br />

Environment Variables, 108<br />

EPS option, 1253, 1453<br />

Error and Warning Messages, 1379<br />

Error Messages, 1380<br />

Classification, 369<br />

Classification of, 369<br />

Effects, 369<br />

Global, 1380<br />

Miscellaneous, 1403<br />

Related to Amodels, 1401<br />

Related to Commands, 1392<br />

Related to Eldo Premier, 1408<br />

Related to Models, 1399<br />

Related to Nodes, 1384<br />

Related to Objects, 1385<br />

Related to Subcircuits, 1402<br />

Examples<br />

.ALTER, 300<br />

.EXTRACT, 329<br />

5th Order Elliptic SC Low Pass Filter, 1303<br />

Active RC Band Pass Filter, 1306<br />

Cascade of Inverters, 32<br />

Charge Control in MOS Models, 1304<br />

DSPF backannotation, 396<br />

Eldo Premier, 62<br />

IBIS models, 790<br />

Loop Stability Analysis, 1299<br />

Monte Carlo analysis (.MC), 526<br />

Optimization (.OPTIMIZE), 664<br />

Overshoot Extraction, 1301<br />

Post-layout simulation, 396<br />

Post-Processing Library, 1137<br />

Safe Operating Area (SOA), 345, 350<br />

Safe Operating Area (SOA) Checks, 343<br />

SC—Schmitt Trigger, 1298<br />

Second Order Delta Sigma Modulator,<br />

1307<br />

Sweeping Parameters, 292<br />

Transient Noise Analysis, 260<br />

Eldo® User's Manual, 15.3<br />

1487


Two-Stage Operational Amplifier, 1309<br />

EXP (Exponent of value) function, 109<br />

Experiment Design, 556<br />

Expressions in Eldo, 118<br />

-extract<br />

Running from the command line, 327<br />

Extract Examples, 329<br />

Extract Functions, 324<br />

Extract Outputs, 324<br />

Extracting Information, 321<br />

Examples, 329<br />

Extract functions, 324<br />

Extract outputs, 324<br />

Plot and print quantities, 323<br />

Extraction Mode, 327<br />

Extraction Plot and Print Quantities, 323<br />

EZwave, 370<br />

Displaying Eldo simulation data, 372<br />

Graph windows, 371<br />

— F —<br />

ffcv utility, 1473<br />

FLOOR (Value rounded down to integer)<br />

function, 110<br />

FNS Model, 235<br />

Frequency Limit<br />

for Pole-Zero Post-processing, 234<br />

Functions&Operators<br />

see Arithmetic Functions&Operators<br />

— G —<br />

Gaussian distribution, 433<br />

Getting Started<br />

with Eldo, 31<br />

Global<br />

Error Messages, 1380<br />

Warning Messages, 1411<br />

— H —<br />

HACC option, 1251<br />

Hand Selection<br />

in Pole-Zero Post-processing, 234<br />

Hierarchical Nodes<br />

Monitoring of, 309<br />

High Impedance Node Checks, 349<br />

High Voltage Cascade Tutorial, 1286<br />

How to Run Eldo, 31, 41<br />

HSPICE Compatibility, 162<br />

— I —<br />

IBIS Models, 728<br />

Algorithmic Model Interface (AMI), 787<br />

Buffers, 752<br />

Component, 765<br />

Device standards, 732<br />

Electrical board description, 777<br />

File types and structures, 729<br />

Golden parser, 731<br />

Introduction, 728<br />

Package, 773<br />

Support in Eldo, 749<br />

Supported keywords and sub-parameters,<br />

780<br />

Syntax, 751<br />

Tutorials, 790<br />

IDT (Integral of value) function, 110<br />

IEM, 1260<br />

IMAG (Imaginary part of complex number)<br />

function, 112<br />

Impedance parameters, 683<br />

Initialization file, 51<br />

Input and Output Files for Eldo, 35<br />

Instances<br />

Merging in parallel, 158<br />

INT (Integer of value) function, 110<br />

INTEG (Integral of value) function, 110<br />

Interactive Mode, 58, 1457<br />

Internal Pin Values<br />

Plotting, 314<br />

Interruption of a Simulation, 222<br />

Invoking Eldo, 41<br />

— J —<br />

JWDB, 36, 359, 370<br />

Incremental saving, 354<br />

— K —<br />

Keywords, reserved, 104<br />

— L —<br />

Library Nesting, 135<br />

Library Variant Management, 134<br />

LIMIT distribution, 548<br />

1488 Eldo® User's Manual, 15.3


LIMIT function, 110<br />

Limiting Output Information, 352, 353<br />

Limiting the Size of Transient Output Files,<br />

353<br />

Local and Global Variations, 442<br />

Location Maps, 53<br />

LOG (Neperian log of value) function, 110<br />

LOG10 (Decimal log of value) function, 110<br />

Loop Stability Analysis (.LSTB)<br />

Example, 1299<br />

Loop Stability Analysis Example, 1299<br />

Low Pass Filter Tutorial, 1280<br />

— M —<br />

MAGNITUDE (Magnitude of complex<br />

number) function, 112<br />

Matrix Information in Eldo, 366<br />

MAX (Maximum value) function, 110<br />

MCCONV Extract Function<br />

Monte Carlo analysis (.MC), 514, 518<br />

Merging Instances in Parallel, 158<br />

MIN (Minimum value) function, 110<br />

Miscellaneous<br />

Error Messages, 1403<br />

Warning Messages, 1431<br />

MOD (Modulo value) function, 110<br />

Model<br />

Error Messages, 1399<br />

Names in Eldo, 98<br />

Warning Messages, 1428<br />

Model Definitions, 98<br />

Models<br />

STMicroelectronics, 1477<br />

Monitoring of Hierarchical Nodes, 309<br />

Monte Carlo Analysis (.MC), 409<br />

Bootstrap, 470<br />

Command, 421<br />

Description, 265<br />

DEV, DEVX or LOT, 447<br />

Distribution Function, 431<br />

Examples, 526, 1291<br />

Extracting, 465, 468<br />

Global sensitivity analysis, 471<br />

Graphical Output, 509<br />

Introduction, 411<br />

Local and global variations, 442<br />

Results, 266, 463<br />

Run-length control, 514, 518<br />

Sampling plan methods, 451<br />

Sensitivity analysis, 520<br />

Sharing distributions, 429<br />

Specifying, 421<br />

Statistical parameter naming conventions,<br />

536<br />

Statistical Parameters, 427<br />

Statistical Variations, 423<br />

Tolerance setting, 447<br />

Monte Carlo Basic Tutorial, 1290<br />

MOS Instances<br />

TSMC libraries, 156<br />

MOS instances, 156<br />

Multiple Runs, 156<br />

Multiplication (M) Factor, 127<br />

Multi-Threading, 42<br />

— N —<br />

Nested Output Requests, 310<br />

Nested Sweeps, 295<br />

Netlist file, 95<br />

Netlist Setup, 95<br />

Case-sensitivity, 105<br />

Circuit title, 98<br />

Comment lines, 103<br />

Component names, 99<br />

Conditional statements, 121<br />

Continuation lines, 103<br />

Device libraries, 132<br />

Directives, 121<br />

Element and source definitions, 99<br />

End statement, 102<br />

Environment variables, 108<br />

Expressions, 118<br />

Model definitions, 98<br />

Node Name conventions, 99<br />

Numerical values, 107<br />

Parameter names, 104<br />

Reserved keywords, 104<br />

Simulator commands and options, 100<br />

String parameters, 104<br />

Subcircuit definitions and calls, 99<br />

Subcircuits and device libraries, 127<br />

Netlist setup, 33<br />

Eldo® User's Manual, 15.3<br />

1489


Netlist Termination (.END), 102<br />

Newton Block Information in Eldo, 364<br />

NOBSLASHCONT option, 174<br />

Nodal<br />

Error Messages, 1384<br />

Warning Messages, 1415<br />

Node and Element Information in Eldo, 363<br />

Node Names<br />

inside Subcircuits, 127<br />

Nodes<br />

Node Name conventions, 99<br />

Node Names inside Subcircuits, 100<br />

Noise<br />

in subcircuits, 127<br />

Noise Analysis (.NOISE)<br />

.NOISETRAN, 241<br />

Description, 239<br />

Results, 239<br />

Transient, 241<br />

— O —<br />

Object<br />

Error Messages, 1385<br />

Warning Messages, 1417<br />

ONGRID function, 110<br />

Operating Point<br />

Calculation of, 211<br />

Operating Point Analysis, 208<br />

Results, 208<br />

Operator Precedence, 115<br />

Operators, 115<br />

Optimization (.OPTIMIZE), 587<br />

Commands, 589<br />

Description, 276<br />

Design objectives, 603<br />

Design Variables, 594<br />

Examples, 664<br />

Introduction, 589<br />

Methods, 622<br />

Monitoring design objectives, 653<br />

Multiple-run, 632<br />

Options, 591<br />

Output, 639<br />

Output file, 642<br />

plotting, 641<br />

Post-analysis, 639<br />

Results, 277, 639<br />

Status codes, 656<br />

Sweep simulations, 633<br />

Types of problems, 629<br />

Option PARHIER<br />

Parameter scoping, 291<br />

Output<br />

Tabular listing, 317<br />

Output Commands, 306<br />

Output Files, 358<br />

Output Types, 306<br />

Output Variables, 320<br />

Overshoot Extraction Example, 1301<br />

Overview<br />

.cir file structure, 97<br />

— P —<br />

Parallel LCR Circuit Tutorial, 1272<br />

Parameter Extraction, 683<br />

Parameter Names in Eldo, 104<br />

Parameter Scoping Rules, 291<br />

Parameter Values<br />

.PARAM, 291<br />

Parasitic Network Types, 394<br />

Plotting<br />

Analog Signal as a Digital Bus, 315<br />

Dynamic plot, 318<br />

Example Safe Operating Area (SOA)<br />

Checks, 343<br />

Optimization (.OPTIMIZE), 641<br />

Output Variables, 320<br />

Safe Operating Area limits, 341<br />

Plotting Extractions, 309<br />

Plotting Internal Pin Values, 314<br />

Plotting Output Variables, 309<br />

Plotting Templates, 309<br />

Plotting, Printing and Probing, 308<br />

Pole Zero Analysis, 230<br />

Pole-Zero<br />

Cancellation by Threshold, 234<br />

Numerical Issues, 236<br />

Post-processor, 360<br />

Dialogue of, 231<br />

Post-Layout Simulation, 389<br />

.DSPF_INCLUDE, 394<br />

Commands, 394<br />

1490 Eldo® User's Manual, 15.3


DSPF backannotation, 392<br />

Examples, 396<br />

Options, 395<br />

Parasitic network types, 394<br />

Reduction, 403<br />

Post-Processing Library (PPL), 1137<br />

Accessing waves, 1233<br />

DSP functions, 1215<br />

Examples, 1137<br />

Usage, 1139<br />

User defined functions, 1139<br />

Waveform functions, 1150<br />

Waveforms inside <strong>user</strong> defined functions,<br />

1142<br />

Post-processors<br />

Pole-Zero, 360<br />

POW (Power) function, 110<br />

Power Analysis (.POWER_ANALYSIS)<br />

Description, 279<br />

PPL (Post-Processing Library),seePost-<br />

Processing Library (PPL)<br />

PWL function, 110<br />

PWL_CTE function, 110<br />

PWL_LIN function, 111<br />

PWR (Power) function, 110<br />

— R —<br />

Ramping, 212<br />

REAL (Real part of complex number) function,<br />

112<br />

Reduction, 403<br />

Reduction (.REDUCE), 404<br />

Commands, 406<br />

Options, 406<br />

Reliability Simulation, 713<br />

RELTOL option, 1264<br />

Results, 305<br />

RF Analyses, 283<br />

ROUND (Value rounded to integer) function,<br />

111<br />

Running<br />

32-bit and 64-bit modes, 42<br />

Eldo from the Command Line, 41<br />

fast launch scrip, 46<br />

Multi-Threading, 42<br />

Simulation Connection Manager, 47, 318<br />

— S —<br />

S, Y, Z Parameter Extraction, 683<br />

output file specification (.FFILE), 688<br />

Source Syntax, 684, 685<br />

Safe Operating Area (SOA) Checks, 341<br />

Examples, 345, 350<br />

Modifying the SOA identifier format, 343<br />

Plotting, 341<br />

Safe Operating Area Examples, 345, 350<br />

SC Low Pass Filter Tutorial, 1295<br />

Scattering parameters, 683<br />

SC—Schmitt Trigger Example, 1298<br />

Second Order Delta Sigma Modulator<br />

Example, 1307<br />

SELECT function, 111<br />

Select Index<br />

in Pole-Zero Post-processing, 234<br />

Sens itivity Analysis of Parameters<br />

(.SENSPARAM)<br />

Results, 273<br />

Sensitivity Analysis<br />

Interpreting, 521<br />

Monte Carlo Analysis (.MC), 520<br />

Sensitivity Analysis (.SENS)<br />

Examples, 1294<br />

Sensitivity Analysis of Parameters<br />

(.SENSPARAM)<br />

Description, 273<br />

Set<br />

Circuit Temperature (.TEMP), 287<br />

SGN (Signum) function, 111<br />

SIGMA (Sum of values) function, 111<br />

SIGN (Signum) function, 111<br />

Signal Monitoring Specifications, 313<br />

Simul ation<br />

Counters, 365<br />

Simulation<br />

Accuracy<br />

RELTOL, 1264<br />

VNTOL, 1264<br />

Altering netlist data, 298<br />

Counters<br />

Convergence Information, 366<br />

Grounded Capacitors Information, 366<br />

Matrix Information, 366<br />

Eldo® User's Manual, 15.3<br />

1491


Newton Block Information, 366<br />

Node&Element Information, 366<br />

Files created, 308<br />

Interruption, 222<br />

Limiting output information, 352, 353<br />

Limiting size transient output files, 353<br />

Multi-Threading, 42<br />

Output, 305<br />

Output commands, 306<br />

Output files, 358<br />

Output types, 306<br />

Plotting, printing and probing, 308<br />

Reruns, 298<br />

Restart, 215<br />

Results, 33, 305<br />

Running, 33<br />

Save, 215<br />

Types of Waveforms, 309<br />

Using previous run results, 302<br />

Simulation Connection Manager, 47, 318<br />

Simulation Time<br />

Chi file output, 365<br />

Simulator Commands and Options, 100<br />

SIN (Sine of value) function, 111<br />

SINH (Hyperbolic sine of value) function, 111<br />

SMABS (Absolute valu e) function, 111<br />

SMMAX (Maximum value) function, 111<br />

SMMIN (Minimum value) function, 111<br />

S-Model, 692<br />

Applications, 696<br />

FBLOCK, 699<br />

Implementation, 695<br />

Syntax, 699<br />

SMSGN (Signum) function, 111<br />

SMSIGN (Signum) function, 111<br />

SOA<br />

Safe Operating Area analysis, 278, 279<br />

Spectre Compatibility, 179<br />

Speed and Accuracy, 1243<br />

SQRT (Square root of value) function, 111<br />

stacktrace file, 1455<br />

States<br />

Plotting, 313<br />

Statistical and Sensitivity Related Analyses,<br />

265<br />

AC sensitivity analysis (.SENSAC), 272<br />

DC Mismatch analysis (.DCMISMATCH),<br />

269<br />

DC sensitivity analysis (.SENS), 270<br />

Design of experiments analysis (.DEX),<br />

274<br />

Monte Carlo analysis (.MC), 265<br />

Sensitivity analysis of parameters<br />

(.SENSPARAM), 273<br />

Transient sensitivity analysis (.SENS<br />

TRAN), 272<br />

Worst Case analysis (.WCASE), 267<br />

Statistical Experimental Design and Analysis,<br />

556<br />

Statistical Parameters, 427<br />

Parameter naming conventions, 536<br />

Statistical Variations, 423<br />

Statistics File, 57<br />

Content, 386<br />

STMicroelectronics<br />

Models, 1477<br />

STOSMITH (Smith) function, 112<br />

STRCASECMP (String compare, ignoring<br />

case) function, 112<br />

STRCMP (String compare) function, 111<br />

String Parameters in Eldo, 104<br />

STRMATCH (String match) function, 111<br />

STRNCASECMP (String compare, ignoring<br />

case) function, 112<br />

STRNCMP (String compare) function, 112<br />

Subcircuit<br />

Error Messages, 1402<br />

Warning Messages, 1431<br />

Subcircuit Definitions and Calls, 99<br />

Subcircuits, 127<br />

Access of Nodes, 127<br />

Access of Nodes from within, 100<br />

Multiplication (M) factor, 127<br />

Nodes, 127<br />

Noise, 127<br />

Sweeping Parameters<br />

.DATA, 296<br />

.STEP, 292, 295<br />

.STEP examples, 292<br />

Switch<br />

1492 Eldo® User's Manual, 15.3


Noise Model, 1373<br />

Syntax<br />

Errors, 369<br />

General aspects<br />

Comment lines, 103<br />

Component names, 99<br />

Continuation lines, 103<br />

Model names, 98<br />

Node name conventions, 99<br />

Parameter names, 104<br />

Reserved keywords, 104<br />

String parameters, 104<br />

Values, 107<br />

of Eldo, 103<br />

System Information<br />

Chi file output, 363<br />

— T —<br />

T Parameter, 288<br />

Tabular Listing Output, 317<br />

TAN (Tangent of value) function, 112<br />

TANH (Hyperbolic tangent of value) function,<br />

112<br />

Tcl,seePost-Processing Library (PPL)<br />

TEMP Variable, 289<br />

TEMPER Variable, 289<br />

Temperature<br />

.TEMP, 287<br />

Handling in Eldo, 287<br />

TEMP Parameter, 289<br />

TEMPER Parameter, 289<br />

TMOD Parameter, 288<br />

TNOM Parameter, 287<br />

TParameter, 288<br />

TICER Reduction, 403<br />

TIME Variable, 119<br />

TMOD Parameter, 288<br />

TNOM option, 287<br />

Tolerance Setting<br />

DEV, DEVX or LOT, 447<br />

Touchstone Data Format, 705<br />

Transfer Function, 237<br />

Transient Analysis (.TRAN)<br />

Description, 217<br />

Examples, 1275, 1284, 1287, 1295, 1298,<br />

1303, 1305, 1307<br />

Results, 218<br />

Save and Restart, 219<br />

Transient Noise Analysis<br />

in Eldo Premier, 90<br />

Transient Noise Analysis (.NOISETRAN)<br />

Algorithms, 245<br />

Applications, 243<br />

Description, 241<br />

Example, 260<br />

Multiple noisy runs, 243<br />

Parameters, 244<br />

Performance and accuracy, 245, 257<br />

Results, 259<br />

Time domain noise sources, 246<br />

Transient Sensitivity Analysis (.SENS TRAN)<br />

Description, 272<br />

Results, 272<br />

Troubleshooting, 1453<br />

stacktrace file, 1455<br />

TRUNC (Truncated value) function, 112<br />

TSMC Libraries, 156<br />

Tutorials, 1269<br />

1—Parallel LCR Circuit, 1272<br />

2—4th Order Butterworth Filter, 1274<br />

3—Band Pass Filter, 1277<br />

4—Low Pass Filter, 1280<br />

5—Colpitts Oscillator, 1283<br />

6—High Voltage Cascade, 1286<br />

7—Monte Carlo Basic, 1290<br />

8—Bipolar Amplifier, 1293<br />

9—SC Low Pass Filter, 1295<br />

IBIS models, 790<br />

— U —<br />

UDRM, 713<br />

Aging and reliability analysis, 277<br />

Uniform distribution, 431<br />

User-defined distribution, 435<br />

Utilities, 1469<br />

— V —<br />

VALUEOF (Returns the current value of an<br />

extract) function, 112<br />

Values in Eldo, 107<br />

vcd2tv utility, 1471<br />

VNTOL, 1264<br />

Eldo® User's Manual, 15.3<br />

1493


Correct usage, 1453<br />

— W —<br />

Warning Messages, 369, 1411<br />

Global, 1411<br />

Miscellaneous, 1432<br />

Related to Commands, 1421<br />

Related to Eldo Premier, 1450<br />

Related to Models, 1428<br />

Related to Nodes, 1415<br />

Related to Objects, 1417<br />

Related to Subcircuits, 1431<br />

Warnings<br />

Messages, 369<br />

Waveform Definition Using a Tcl Function<br />

.TCL_WAVE, 1140<br />

Waveform Functions<br />

Post-Processing Library (PPL), 1150<br />

Waveform types, 309<br />

Waveforms<br />

Defining, 336<br />

Examples defining waveforms, 337<br />

X-axis, 316<br />

WINTEG (Integral of waveform) function, 112<br />

Worst Case Analysis (.MC)<br />

Description, 267<br />

Worst Case Analysis (.WCASE)<br />

Results, 268<br />

— X —<br />

XBLOCK<br />

Syntax, 710<br />

X-Model<br />

XBLOCK, 710<br />

— Y —<br />

YTOSMITH (Smith) function, 112<br />

— Z —<br />

ZTOSMITH (Smith) function, 112<br />

1494 Eldo® User's Manual, 15.3


Third-Party Information<br />

This section provides information on open source and third-party software that may be included in the Eldo product.<br />

•<br />

© 2005-2009 Jim Idle, Temporal Wave LLC<br />

http:www.temporal-wave.com<br />

http:www.linkedin.com/in/jimidle<br />

All rights reserved.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided with the distribution.<br />

3. The name of the author may not be used to endorse or promote products derived from this software without specific<br />

prior written permission.<br />

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,<br />

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS<br />

FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR<br />

ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES<br />

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF<br />

USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF<br />

LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

• /legal/intel_source_code.pdf.<br />

•<br />

© 1996 by AT&T<br />

Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that<br />

this entire notice is included in all copies of any software which is or includes a copy or modification of this software and<br />

in all copies of the supporting documentation for such software.<br />

THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN<br />

PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY REPRESENTATION OR WARRANTY OF<br />

ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY<br />

PARTICULAR PURPOSE.<br />

© 1996, 1997 Silicon Graphics Computer Systems, Inc.<br />

Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted<br />

without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this<br />

permission notice appear in supporting documentation. Silicon Graphics makes no representations about the suitability of<br />

this software for any purpose. It is provided "as is" without express or implied warranty.<br />

© 1994 Hewlett-Packard Company<br />

Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted<br />

without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this<br />

permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the<br />

suitability of this software for any purpose. It is provided "as is" without express or implied warranty.<br />

© 1997 Moscow Center for SPARC Technology


Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted<br />

without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this<br />

permission notice appear in supporting documentation. Moscow Center for SPARC Technology makes no<br />

representations about the suitability of this software for any purpose. It is provided "as is" without express or implied<br />

warranty.<br />

•<br />

© 2004-2007 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All<br />

rights reserved.<br />

© 2004-2005 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved.<br />

© 2004-2007 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved.<br />

© 2004-2005 The Regents of the University of California. All rights reserved.<br />

and renamed for hwloc:<br />

© 2009 INRIA. All rights reserved.<br />

© 2009 Université Bordeaux 1<br />

© 2010 Cisco Systems, Inc. All rights reserved.<br />

See COPYING in top-level directory.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following<br />

disclaimer listed in this license in the documentation and/or other materials provided with the distribution.<br />

- Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products<br />

derived from this software without specific prior written permission.<br />

The copyright holders provide no reassurances that the source code provided does not infringe any patent, copyright, or<br />

any other intellectual property rights of third parties. The copyright holders disclaim any liability to any recipient for<br />

claims brought against recipient by any third party for infringement of that parties intellectual property rights.<br />

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY<br />

EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT<br />

SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED<br />

TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR<br />

BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<br />

CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY<br />

WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />

© 2009 CNRS<br />

© 2009 INRIA. All rights reserved.<br />

© 2009 Université Bordeaux 1<br />

© 2009 Cisco Systems, Inc. All rights reserved.<br />

See COPYING in top-level directory.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided with the distribution.


3. The name of the author may not be used to endorse or promote products derived from this software without specific<br />

prior written permission.<br />

THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,<br />

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS<br />

FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR<br />

ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES<br />

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF<br />

USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF<br />

LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

•<br />

The terms under which the HICUM software is provided are as follows:<br />

Software is distributed as is, completely without warranty or service support. The Model Owner and his team members<br />

are not liable for the condition or performance of the software.<br />

Michael Schroter (Model Owner) owns the copyright but shall not be liable for any infringement of copyright or other<br />

proprietary rights brought by third parties against the <strong>user</strong>s of the software.<br />

The Model Owner hereby disclaims all implied warranties.<br />

The Model Owner grants the <strong>user</strong>s the right to modify, copy, and redistribute the software and documentation, both within<br />

the <strong>user</strong>'s organization and externally, subject to the following restrictions:<br />

1. The <strong>user</strong>s agree not to charge for the HICUM code itself but may charge for additions, extensions, or support.<br />

2. In any product based on the software, the <strong>user</strong>s agree to acknowledge the Model Owner that developed the software.<br />

This acknowledgment shall appear in the product documentation.<br />

3. The <strong>user</strong>s agree to reproduce any copyright notice which appears on the software on any copy or modification of such<br />

made available to others.<br />

No part of this code may be reproduced or used in any form without written permission from the originator.<br />

• /legal/gnu_lgpl_2.1.pdf. To obtain a copy of the KLU version 1.1.1<br />

source code, send a request to request_sourcecode@mentor.com. This offer shall only be available for three years from<br />

the date Mentor Graphics Corporation first distributed KLU version 1.1.1.<br />

• /legal/gnu_lgpl_2.1.pdf. To obtain a copy of the AMD version 2.2.2<br />

source code, send a request to request_sourcecode@mentor.com. This offer shall only be available for three years from<br />

the date Mentor Graphics Corporation first distributed AMD version 2.2.2.<br />

• /legal/gnu_lgpl_2.1.pdf. To obtain a copy of the COLAMD version<br />

2.7.3 source code, send a request to request_sourcecode@mentor.com. This offer shall only be available for three years<br />

from the date Mentor Graphics Corporation first distributed COLAMD version 2.7.3.<br />

• /legal/gnu_lgpl_2.1.pdf. To obtain a copy of the BTF version 1.1.2<br />

source code, send a request to request_sourcecode@mentor.com. This offer shall only be available for three years from<br />

the date Mentor Graphics Corporation first distributed BTF version 1.1.2.<br />

• /legal/gnu_lgpl_2.1.pdf. To obtain a copy of the UFconfig version<br />

3.6.1 source code, send a request to request_sourcecode@mentor.com. This offer shall only be available for three years<br />

from the date Mentor Graphics Corporation first distributed UFconfig version 3.6.1.<br />

•<br />

©1991, 1993 The Regents of the University of California. All rights reserved.


Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided with the distribution.<br />

4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products<br />

derived from this software without specific prior written permission.<br />

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR<br />

IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT<br />

SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,<br />

SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,<br />

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,<br />

STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF<br />

THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />

© 2010, Intel Corp. All rights reserved.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided with the distribution.<br />

- Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products<br />

derived from this software without specific prior written permission.<br />

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY<br />

EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT<br />

SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED<br />

TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR<br />

BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<br />

CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY<br />

WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />

© 2002 Niels Provos provos@citi.umich.edu All rights reserved.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided with the distribution.<br />

THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,<br />

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS<br />

FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR<br />

ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES<br />

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF


USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF<br />

LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

•<br />

•<br />

©2000-2008 Julian Seward. All rights reserved.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

2. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you<br />

use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.<br />

3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.<br />

4. The name of the author may not be used to endorse or promote products derived from this software without specific<br />

prior written permission.<br />

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,<br />

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS<br />

FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR<br />

ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES<br />

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF<br />

USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF<br />

LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

© 1998-2012, Google Inc.<br />

All rights reserved.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided with the distribution.<br />

* Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived<br />

from this software without specific prior written permission.<br />

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY<br />

EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT<br />

SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED<br />

TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR<br />

BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<br />

CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY<br />

WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />

© 2010 The Chromium Authors. All rights reserved.


Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following<br />

conditions are met:<br />

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following<br />

disclaimer.<br />

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided with the distribution.<br />

* Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived<br />

from this software without specific prior written permission.<br />

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY<br />

EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT<br />

SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED<br />

TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR<br />

BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<br />

CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY<br />

WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />

•<br />

• /legal/gnu_lgpl_2.1.pdf. To obtain a copy of the CHOLMOD<br />

version 08-Jul-2012 17:18 source code, send a request to request_sourcecode@mentor.com. This offer shall only be<br />

available for three years from the date Mentor Graphics Corporation first distributed CHOLMOD version 08-Jul-2012<br />

17:18.


End-User License Agreement<br />

The latest version of the End-User License Agreement is available on-line at:<br />

www.mentor.com/eula<br />

IMPORTANT INFORMATION<br />

USE OF ALL SOFTWARE IS SUBJECT TO LICENSE RESTRICTIONS. CAREFULLY READ THIS LICENSE<br />

AGREEMENT BEFORE USING THE PRODUCTS. USE OF SOFTWARE INDICATES CUSTOMER’S<br />

COMPLETE AND UNCONDITIONAL ACCEPTANCE OF THE TERMS AND CONDITIONS SET FORTH IN<br />

THIS AGREEMENT. ANY ADDITIONAL OR DIFFERENT PURCHASE ORDER TERMS AND CONDITIONS<br />

SHALL NOT APPLY.<br />

END-USER LICENSE AGREEMENT (“Agreement”)<br />

This is a legal agreement concerning the use of Software (as defined in Section 2) and hardware (collectively “Products”)<br />

between the company acquiring the Products (“Customer”), and the Mentor Graphics entity that issued the corresponding<br />

quotation or, if no quotation was issued, the applicable local Mentor Graphics entity (“Mentor Graphics”). Except for license<br />

agreements related to the subject matter of this license agreement which are physically signed by Customer and an authorized<br />

representative of Mentor Graphics, this Agreement and the applicable quotation contain the parties’ entire understanding<br />

relating to the subject matter and supersede all prior or contemporaneous agreements. If Customer does not agree to these<br />

terms and conditions, promptly return or, in the case of Software received electronically, certify destruction of Software and all<br />

accompanying items within five days after receipt of Software and receive a full refund of any license fee paid.<br />

1. ORDERS, FEES AND PAYMENT.<br />

1.1. To the extent Customer (or if agreed by Mentor Graphics, Customer’s appointed third party buying agent) places and Mentor<br />

Graphics accepts purchase orders pursuant to this Agreement (each an “Order”), each Order will constitute a contract between<br />

Customer and Mentor Graphics, which shall be governed solely and exclusively by the terms and conditions of this Agreement,<br />

any applicable addenda and the applicable quotation, whether or not those documents are referenced on the Order. Any additional<br />

or conflicting terms and conditions appearing on an Order or presented in any electronic portal or automated order management<br />

system, whether or not required to be electronically accepted, will not be effective unless agreed in writing and physically signed<br />

by an authorized representative of Customer and Mentor Graphics.<br />

1.2. Amounts invoiced will be paid, in the currency specified on the applicable invoice, within 30 days from the date of such invoice.<br />

Any past due invoices will be subject to the imposition of interest charges in the amount of one and one-half percent per month or<br />

the applicable legal rate currently in effect, whichever is lower. Prices do not include freight, insurance, customs duties, taxes or<br />

other similar charges, which Mentor Graphics will state separately in the applicable invoice. Unless timely provided with a valid<br />

certificate of exemption or other evidence that items are not taxable, Mentor Graphics will invoice Customer for all applicable<br />

taxes including, but not limited to, VAT, GST, sales tax, consumption tax and service tax. Customer will make all payments free<br />

and clear of, and without reduction for, any withholding or other taxes; any such taxes imposed on payments by Customer<br />

hereunder will be Customer’s sole responsibility. If Customer appoints a third party to place purchase orders and/or make<br />

payments on Customer’s behalf, Customer shall be liable for payment under Orders placed by such third party in the event of<br />

default.<br />

1.3. All Products are delivered FCA factory (Incoterms 2010), freight prepaid and invoiced to Customer, except Software delivered<br />

electronically, which shall be deemed delivered when made available to Customer for download. Mentor Graphics retains a<br />

security interest in all Products delivered under this Agreement, to secure payment of the purchase price of such Products, and<br />

Customer agrees to sign any documents that Mentor Graphics determines to be necessary or convenient for use in filing or<br />

perfecting such security interest. Mentor Graphics’ delivery of Software by electronic means is subject to Customer’s provision of<br />

both a primary and an alternate e-mail address.<br />

2. GRANT OF LICENSE. The software installed, downloaded, or otherwise acquired by Customer under this Agreement, including any<br />

updates, modifications, revisions, copies, documentation and design data (“Software”) are copyrighted, trade secret and confidential<br />

information of Mentor Graphics or its licensors, who maintain exclusive title to all Software and retain all rights not expressly granted<br />

by this Agreement. Mentor Graphics grants to Customer, subject to payment of applicable license fees, a nontransferable, nonexclusive<br />

license to use Software solely: (a) in machine-readable, object-code form (except as provided in Subsection 5.2); (b) for Customer’s<br />

internal business purposes; (c) for the term of the license; and (d) on the computer hardware and at the site authorized by Mentor<br />

Graphics. A site is restricted to a one-half mile (800 meter) radius. Customer may have Software temporarily used by an employee for<br />

telecommuting purposes from locations other than a Customer office, such as the employee’s residence, an airport or hotel, provided<br />

that such employee’s primary place of employment is the site where the Software is authorized for use. Mentor Graphics’ standard<br />

policies and programs, which vary depending on Software, license fees paid or services purchased, apply to the following: (a) relocation<br />

of Software; (b) use of Software, which may be limited, for example, to execution of a single session by a single <strong>user</strong> on the authorized<br />

hardware or for a restricted period of time (such limitations may be technically implemented through the use of authorization codes or<br />

similar devices); and (c) support services provided, including eligibility to receive telephone support, updates, modifications, and<br />

revisions. For the avoidance of doubt, if Customer provides any feedback or requests any change or enhancement to Products, whether<br />

in the course of receiving support or consulting services, evaluating Products, performing beta testing or otherwise, any inventions,<br />

product improvements, modifications or developments made by Mentor Graphics (at Mentor Graphics’ sole discretion) will be the<br />

exclusive property of Mentor Graphics.


3. ESC SOFTWARE. If Customer purchases a license to use development or prototyping tools of Mentor Graphics’ Embedded Software<br />

Channel (“ESC”), Mentor Graphics grants to Customer a nontransferable, nonexclusive license to reproduce and distribute executable<br />

files created using ESC compilers, including the ESC run-time libraries distributed with ESC C and C++ compiler Software that are<br />

linked into a composite program as an integral part of Customer’s compiled computer program, provided that Customer distributes<br />

these files only in conjunction with Customer’s compiled computer program. Mentor Graphics does NOT grant Customer any right to<br />

duplicate, incorporate or embed copies of Mentor Graphics’ real-time operating systems or other embedded software products into<br />

Customer’s products or applications without first signing or otherwise agreeing to a separate agreement with Mentor Graphics for such<br />

purpose.<br />

4. BETA CODE.<br />

4.1. Portions or all of certain Software may contain code for experimental testing and evaluation (which may be either alpha or beta,<br />

collectively “Beta Code”), which may not be used without Mentor Graphics’ explicit authorization. Upon Mentor Graphics’<br />

authorization, Mentor Graphics grants to Customer a temporary, nontransferable, nonexclusive license for experimental use to test<br />

and evaluate the Beta Code without charge for a limited period of time specified by Mentor Graphics. Mentor Graphics may<br />

choose, at its sole discretion, not to release Beta Code commercially in any form.<br />

4.2. If Mentor Graphics authorizes Customer to use the Beta Code, Customer agrees to evaluate and test the Beta Code under normal<br />

conditions as directed by Mentor Graphics. Customer will contact Mentor Graphics periodically during Customer’s use of the<br />

Beta Code to discuss any malfunctions or suggested improvements. Upon completion of Customer’s evaluation and testing,<br />

Customer will send to Mentor Graphics a written evaluation of the Beta Code, including its strengths, weaknesses and<br />

recommended improvements.<br />

4.3. Customer agrees to maintain Beta Code in confidence and shall restrict access to the Beta Code, including the methods and<br />

concepts utilized therein, solely to those employees and Customer location(s) authorized by Mentor Graphics to perform beta<br />

testing. Customer agrees that any written evaluations and all inventions, product improvements, modifications or developments<br />

that Mentor Graphics conceived or made during or subsequent to this Agreement, including those based partly or wholly on<br />

Customer’s feedback, will be the exclusive property of Mentor Graphics. Mentor Graphics will have exclusive rights, title and<br />

interest in all such property. The provisions of this Subsection 4.3 shall survive termination of this Agreement.<br />

5. RESTRICTIONS ON USE.<br />

5.1. Customer may copy Software only as reasonably necessary to support the authorized use. Each copy must include all notices and<br />

legends embedded in Software and affixed to its medium and container as received from Mentor Graphics. All copies shall remain<br />

the property of Mentor Graphics or its licensors. Customer shall maintain a record of the number and primary location of all copies<br />

of Software, including copies merged with other software, and shall make those records available to Mentor Graphics upon<br />

request. Customer shall not make Products available in any form to any person other than Customer’s employees and on-site<br />

contractors, excluding Mentor Graphics competitors, whose job performance requires access and who are under obligations of<br />

confidentiality. Customer shall take appropriate action to protect the confidentiality of Products and ensure that any person<br />

permitted access does not disclose or use Products except as permitted by this Agreement. Customer shall give Mentor Graphics<br />

written notice of any unauthorized disclosure or use of the Products as soon as Customer becomes aware of such unauthorized<br />

disclosure or use. Except as otherwise permitted for purposes of interoperability as specified by applicable and mandatory local<br />

law, Customer shall not reverse-assemble, reverse-compile, reverse-engineer or in any way derive any source code from Software.<br />

Log files, data files, rule files and script files generated by or for the Software (collectively “Files”), including without limitation<br />

files containing Standard Verification Rule Format (“SVRF”) and Tcl Verification Format (“TVF”) which are Mentor Graphics’<br />

trade secret and proprietary syntaxes for expressing process rules, constitute or include confidential information of Mentor<br />

Graphics. Customer may share Files with third parties, excluding Mentor Graphics competitors, provided that the confidentiality<br />

of such Files is protected by written agreement at least as well as Customer protects other information of a similar nature or<br />

importance, but in any case with at least reasonable care. Customer may use Files containing SVRF or TVF only with Mentor<br />

Graphics products. Under no circumstances shall Customer use Products or Files or allow their use for the purpose of developing,<br />

enhancing or marketing any product that is in any way competitive with Products, or disclose to any third party the results of, or<br />

information pertaining to, any benchmark.<br />

5.2. If any Software or portions thereof are provided in source code form, Customer will use the source code only to correct software<br />

errors and enhance or modify the Software for the authorized use. Customer shall not disclose or permit disclosure of source code,<br />

in whole or in part, including any of its methods or concepts, to anyone except Customer’s employees or on-site contractors,<br />

excluding Mentor Graphics competitors, with a need to know. Customer shall not copy or compile source code in any manner<br />

except to support this authorized use.<br />

5.3. Customer may not assign this Agreement or the rights and duties under it, or relocate, sublicense, or otherwise transfer the<br />

Products, whether by operation of law or otherwise (“Attempted Transfer”), without Mentor Graphics’ prior written consent and<br />

payment of Mentor Graphics’ then-current applicable relocation and/or transfer fees. Any Attempted Transfer without Mentor<br />

Graphics’ prior written consent shall be a material breach of this Agreement and may, at Mentor Graphics’ option, result in the<br />

immediate termination of the Agreement and/or the licenses granted under this Agreement. The terms of this Agreement,<br />

including without limitation the licensing and assignment provisions, shall be binding upon Customer’s permitted successors in<br />

interest and assigns.<br />

5.4. The provisions of this Section 5 shall survive the termination of this Agreement.<br />

6. SUPPORT SERVICES. To the extent Customer purchases support services, Mentor Graphics will provide Customer with updates and<br />

technical support for the Products, at the Customer site(s) for which support is purchased, in accordance with Mentor Graphics’ then<br />

current End-User Support Terms located at http://supportnet.mentor.com/supportterms.<br />

7. LIMITED WARRANTY.


7.1. Mentor Graphics warrants that during the warranty period its standard, generally supported Products, when properly installed, will<br />

substantially conform to the functional specifications set forth in the applicable <strong>user</strong> manual. Mentor Graphics does not warrant<br />

that Products will meet Customer’s requirements or that operation of Products will be uninterrupted or error free. The warranty<br />

period is 90 days starting on the 15th day after delivery or upon installation, whichever first occurs. Customer must notify Mentor<br />

Graphics in writing of any nonconformity within the warranty period. For the avoidance of doubt, this warranty applies only to the<br />

initial shipment of Software under an Order and does not renew or reset, for example, with the delivery of (a) Software updates or<br />

(b) authorization codes or alternate Software under a transaction involving Software re-mix. This warranty shall not be valid if<br />

Products have been subject to misuse, unauthorized modification, improper installation or Customer is not in compliance with this<br />

Agreement. MENTOR GRAPHICS’ ENTIRE LIABILITY AND CUSTOMER’S EXCLUSIVE REMEDY SHALL BE, AT<br />

MENTOR GRAPHICS’ OPTION, EITHER (A) REFUND OF THE PRICE PAID UPON RETURN OF THE PRODUCTS TO<br />

MENTOR GRAPHICS OR (B) MODIFICATION OR REPLACEMENT OF THE PRODUCTS THAT DO NOT MEET THIS<br />

LIMITED WARRANTY. MENTOR GRAPHICS MAKES NO WARRANTIES WITH RESPECT TO: (A) SERVICES; (B)<br />

PRODUCTS PROVIDED AT NO CHARGE; OR (C) BETA CODE; ALL OF WHICH ARE PROVIDED “AS IS.”<br />

7.2. THE WARRANTIES SET FORTH IN THIS SECTION 7 ARE EXCLUSIVE. NEITHER MENTOR GRAPHICS NOR ITS<br />

LICENSORS MAKE ANY OTHER WARRANTIES EXPRESS, IMPLIED OR STATUTORY, WITH RESPECT TO<br />

PRODUCTS PROVIDED UNDER THIS AGREEMENT. MENTOR GRAPHICS AND ITS LICENSORS SPECIFICALLY<br />

DISCLAIM ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND<br />

NON-INFRINGEMENT OF INTELLECTUAL PROPERTY.<br />

8. LIMITATION OF LIABILITY. EXCEPT WHERE THIS EXCLUSION OR RESTRICTION OF LIABILITY WOULD BE VOID<br />

OR INEFFECTIVE UNDER APPLICABLE LAW, IN NO EVENT SHALL MENTOR GRAPHICS OR ITS LICENSORS BE<br />

LIABLE FOR INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES (INCLUDING LOST PROFITS OR<br />

SAVINGS) WHETHER BASED ON CONTRACT, TORT OR ANY OTHER LEGAL THEORY, EVEN IF MENTOR GRAPHICS<br />

OR ITS LICENSORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL MENTOR<br />

GRAPHICS’ OR ITS LICENSORS’ LIABILITY UNDER THIS AGREEMENT EXCEED THE AMOUNT RECEIVED FROM<br />

CUSTOMER FOR THE HARDWARE, SOFTWARE LICENSE OR SERVICE GIVING RISE TO THE CLAIM. IN THE CASE<br />

WHERE NO AMOUNT WAS PAID, MENTOR GRAPHICS AND ITS LICENSORS SHALL HAVE NO LIABILITY FOR ANY<br />

DAMAGES WHATSOEVER. THE PROVISIONS OF THIS SECTION 8 SHALL SURVIVE THE TERMINATION OF THIS<br />

AGREEMENT.<br />

9. HAZARDOUS APPLICATIONS. CUSTOMER ACKNOWLEDGES IT IS SOLELY RESPONSIBLE FOR TESTING ITS<br />

PRODUCTS USED IN APPLICATIONS WHERE THE FAILURE OR INACCURACY OF ITS PRODUCTS MIGHT RESULT IN<br />

DEATH OR PERSONAL INJURY (“HAZARDOUS APPLICATIONS”). EXCEPT TO THE EXTENT THIS EXCLUSION OR<br />

RESTRICTION OF LIABILITY WOULD BE VOID OR INEFFECTIVE UNDER APPLICABLE LAW, IN NO EVENT SHALL<br />

MENTOR GRAPHICS OR ITS LICENSORS BE LIABLE FOR ANY DAMAGES RESULTING FROM OR IN CONNECTION<br />

WITH THE USE OF MENTOR GRAPHICS PRODUCTS IN OR FOR HAZARDOUS APPLICATIONS. THE PROVISIONS OF<br />

THIS SECTION 9 SHALL SURVIVE THE TERMINATION OF THIS AGREEMENT.<br />

10. INDEMNIFICATION. CUSTOMER AGREES TO INDEMNIFY AND HOLD HARMLESS MENTOR GRAPHICS AND ITS<br />

LICENSORS FROM ANY CLAIMS, LOSS, COST, DAMAGE, EXPENSE OR LIABILITY, INCLUDING ATTORNEYS’ FEES,<br />

ARISING OUT OF OR IN CONNECTION WITH THE USE OF MENTOR GRAPHICS PRODUCTS IN OR FOR HAZARDOUS<br />

APPLICATIONS. THE PROVISIONS OF THIS SECTION 10 SHALL SURVIVE THE TERMINATION OF THIS AGREEMENT.<br />

11. INFRINGEMENT.<br />

11.1. Mentor Graphics will defend or settle, at its option and expense, any action brought against Customer in the United States,<br />

Canada, Japan, or member state of the European Union which alleges that any standard, generally supported Product acquired by<br />

Customer hereunder infringes a patent or copyright or misappropriates a trade secret in such jurisdiction. Mentor Graphics will<br />

pay costs and damages finally awarded against Customer that are attributable to such action. Customer understands and agrees that<br />

as conditions to Mentor Graphics’ obligations under this section Customer must: (a) notify Mentor Graphics promptly in writing<br />

of the action; (b) provide Mentor Graphics all reasonable information and assistance to settle or defend the action; and (c) grant<br />

Mentor Graphics sole authority and control of the defense or settlement of the action.<br />

11.2. If a claim is made under Subsection 11.1 Mentor Graphics may, at its option and expense: (a) replace or modify the Product so that<br />

it becomes noninfringing; (b) procure for Customer the right to continue using the Product; or (c) require the return of the Product<br />

and refund to Customer any purchase price or license fee paid, less a reasonable allowance for use.<br />

11.3. Mentor Graphics has no liability to Customer if the action is based upon: (a) the combination of Software or hardware with any<br />

product not furnished by Mentor Graphics; (b) the modification of the Product other than by Mentor Graphics; (c) the use of other<br />

than a current unaltered release of Software; (d) the use of the Product as part of an infringing process; (e) a product that Customer<br />

makes, uses, or sells; (f) any Beta Code or Product provided at no charge; (g) any software provided by Mentor Graphics’<br />

licensors who do not provide such indemnification to Mentor Graphics’ customers; or (h) infringement by Customer that is<br />

deemed willful. In the case of (h), Customer shall reimburse Mentor Graphics for its reasonable attorney fees and other costs<br />

related to the action.<br />

11.4. THIS SECTION 11 IS SUBJECT TO SECTION 8 ABOVE AND STATES THE ENTIRE LIABILITY OF MENTOR<br />

GRAPHICS AND ITS LICENSORS, AND CUSTOMER’S SOLE AND EXCLUSIVE REMEDY, FOR DEFENSE,<br />

SETTLEMENT AND DAMAGES, WITH RESPECT TO ANY ALLEGED PATENT OR COPYRIGHT INFRINGEMENT OR<br />

TRADE SECRET MISAPPROPRIATION BY ANY PRODUCT PROVIDED UNDER THIS AGREEMENT.<br />

12. TERMINATION AND EFFECT OF TERMINATION.<br />

12.1. If a Software license was provided for limited term use, such license will automatically terminate at the end of the authorized term.<br />

Mentor Graphics may terminate this Agreement and/or any license granted under this Agreement immediately upon written notice<br />

if Customer: (a) exceeds the scope of the license or otherwise fails to comply with the licensing or confidentiality provisions of


this Agreement, or (b) becomes insolvent, files a bankruptcy petition, institutes proceedings for liquidation or winding up or enters<br />

into an agreement to assign its assets for the benefit of creditors. For any other material breach of any provision of this Agreement,<br />

Mentor Graphics may terminate this Agreement and/or any license granted under this Agreement upon 30 days written notice if<br />

Customer fails to cure the breach within the 30 day notice period. Termination of this Agreement or any license granted hereunder<br />

will not affect Customer’s obligation to pay for Products shipped or licenses granted prior to the termination, which amounts shall<br />

be payable immediately upon the date of termination.<br />

12.2. Upon termination of this Agreement, the rights and obligations of the parties shall cease except as expressly set forth in this<br />

Agreement. Upon termination, Customer shall ensure that all use of the affected Products ceases, and shall return hardware and<br />

either return to Mentor Graphics or destroy Software in Customer’s possession, including all copies and documentation, and<br />

certify in writing to Mentor Graphics within ten business days of the termination date that Customer no longer possesses any of<br />

the affected Products or copies of Software in any form.<br />

13. EXPORT. The Products provided hereunder are subject to regulation by local laws and United States (“U.S.”) government agencies,<br />

which prohibit export, re-export or diversion of certain products, information about the products, and direct or indirect products thereof,<br />

to certain countries and certain persons. Customer agrees that it will not export or re-export Products in any manner without first<br />

obtaining all necessary approval from appropriate local and U.S. government agencies. If Customer wishes to disclose any information<br />

to Mentor Graphics that is subject to any U.S. or other applicable export restrictions, including without limitation the U.S. International<br />

Traffic in Arms Regulations (ITAR) or special controls under the Export Administration Regulations (EAR), Customer will notify<br />

Mentor Graphics personnel, in advance of each instance of disclosure, that such information is subject to such export restrictions.<br />

14. U.S. GOVERNMENT LICENSE RIGHTS. Software was developed entirely at private expense. The parties agree that all Software is<br />

commercial computer software within the meaning of the applicable acquisition regulations. Accordingly, pursuant to U.S. FAR 48<br />

CFR 12.212 and DFAR 48 CFR 227.7202, use, duplication and disclosure of the Software by or for the U.S. government or a U.S.<br />

government subcontractor is subject solely to the terms and conditions set forth in this Agreement, which shall supersede any<br />

conflicting terms or conditions in any government order document, except for provisions which are contrary to applicable mandatory<br />

federal laws.<br />

15. THIRD PARTY BENEFICIARY. Mentor Graphics Corporation, Mentor Graphics (Ireland) Limited, Microsoft Corporation and<br />

other licensors may be third party beneficiaries of this Agreement with the right to enforce the obligations set forth herein.<br />

16. REVIEW OF LICENSE USAGE. Customer will monitor the access to and use of Software. With prior written notice and during<br />

Customer’s normal business hours, Mentor Graphics may engage an internationally recognized accounting firm to review Customer’s<br />

software monitoring system and records deemed relevant by the internationally recognized accounting firm to confirm Customer’s<br />

compliance with the terms of this Agreement or U.S. or other local export laws. Such review may include FlexNet (or successor<br />

product) report log files that Customer shall capture and provide at Mentor Graphics’ request. Customer shall make records available in<br />

electronic format and shall fully cooperate with data gathering to support the license review. Mentor Graphics shall bear the expense of<br />

any such review unless a material non-compliance is revealed. Mentor Graphics shall treat as confidential information all information<br />

gained as a result of any request or review and shall only use or disclose such information as required by law or to enforce its rights<br />

under this Agreement. The provisions of this Section 16 shall survive the termination of this Agreement.<br />

17. CONTROLLING LAW, JURISDICTION AND DISPUTE RESOLUTION. The owners of certain Mentor Graphics intellectual<br />

property licensed under this Agreement are located in Ireland and the U.S. To promote consistency around the world, disputes shall be<br />

resolved as follows: excluding conflict of laws rules, this Agreement shall be governed by and construed under the laws of the State of<br />

Oregon, U.S., if Customer is located in North or South America, and the laws of Ireland if Customer is located outside of North or<br />

South America. All disputes arising out of or in relation to this Agreement shall be submitted to the exclusive jurisdiction of the courts<br />

of Portland, Oregon when the laws of Oregon apply, or Dublin, Ireland when the laws of Ireland apply. Notwithstanding the foregoing,<br />

all disputes in Asia arising out of or in relation to this Agreement shall be resolved by arbitration in Singapore before a single arbitrator<br />

to be appointed by the chairman of the Singapore International Arbitration Centre (“SIAC”) to be conducted in the English language, in<br />

accordance with the Arbitration Rules of the SIAC in effect at the time of the dispute, which rules are deemed to be incorporated by<br />

reference in this section. Nothing in this section shall restrict Mentor Graphics’ right to bring an action (including for example a motion<br />

for injunctive relief) against Customer in the jurisdiction where Customer’s place of business is located. The United Nations<br />

Convention on Contracts for the International Sale of Goods does not apply to this Agreement.<br />

18. SEVERABILITY. If any provision of this Agreement is held by a court of competent jurisdiction to be void, invalid, unenforceable or<br />

illegal, such provision shall be severed from this Agreement and the remaining provisions will remain in full force and effect.<br />

19. MISCELLANEOUS. This Agreement contains the parties’ entire understanding relating to its subject matter and supersedes all prior<br />

or contemporaneous agreements. Some Software may contain code distributed under a third party license agreement that may provide<br />

additional rights to Customer. Please see the applicable Software documentation for details. This Agreement may only be modified in<br />

writing, signed by an authorized representative of each party. Waiver of terms or excuse of breach must be in writing and shall not<br />

constitute subsequent consent, waiver or excuse.<br />

Rev. 140201, Part No. 258976

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!