PCM Library Reference Manual - jmbussat/Physics290E/Fall-2006/... · PCM Library v Y-2006.09 About...

24
PCM Library Version Y-2006.09, September 2006

Transcript of PCM Library Reference Manual - jmbussat/Physics290E/Fall-2006/... · PCM Library v Y-2006.09 About...

PCM LibraryVersion Y-2006.09, September 2006

ii

Copyright Notice and Proprietary InformationCopyright © 2006 Synopsys, Inc. All rights reserved. This software and documentation contain confidential and proprietary information that is the property of Synopsys, Inc. The software and documentation are furnished under a license agreement and may be used or copied only in accordance with the terms of the license agreement. No part of the software and documentation may be reproduced, transmitted, or translated, in any form or by any means, electronic, mechanical, manual, optical, or otherwise, without prior written permission of Synopsys, Inc., or as expressly provided by the license agreement.

Right to Copy DocumentationThe license agreement with Synopsys permits licensee to make copies of the documentation for its internal use only. Each copy shall include all copyrights, trademarks, service marks, and proprietary rights notices, if any. Licensee must assign sequential numbers to all copies. These copies shall contain the following legend on the cover page:

“This document is duplicated with the permission of Synopsys, Inc., for the exclusive use of __________________________________________ and its employees. This is copy number __________.”

Destination Control StatementAll technical data contained in this publication is subject to the export control laws of the United States of America. Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader’s responsibility to determine the applicable regulations and to comply with them.

DisclaimerSYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

Registered Trademarks (®)Synopsys, AMPS, Cadabra, CATS, CRITIC, CSim, Design Compiler, DesignPower, DesignWare, EPIC, Formality, HSIM, HSPICE, iN-Phase, in-Sync, Leda, MAST, ModelTools, NanoSim, OpenVera, PathMill, Photolynx, Physical Compiler, PrimeTime, Saber, SiVL, SNUG, SolvNet, System Compiler, TetraMAX, VCS, and Vera are registered trademarks of Synopsys, Inc.

Trademarks (™)Active Parasitics, AFGen, Apollo, Astro, Astro-Rail, Astro-Xtalk, Aurora, AvanTestchip, AvanWaves, BOA, BRT, ChipPlanner, Circuit Analysis, Columbia, Columbia-CE, Comet 3D, Cosmos, CosmosEnterprise, CosmosLE, CosmosScope, CosmosSE, Cyclelink, DC Expert, DC Professional, DC Ultra, Design Advisor, Design Analyzer, Design Vision, DesignerHDL, DesignTime, Direct RTL, Direct Silicon Access, Discovery, Dynamic-Macromodeling, Dynamic Model Switcher, EDAnavigator, Encore, Encore PQ, Evaccess, ExpressModel, Formal Model Checker, FoundryModel, Frame Compiler, Galaxy, Gatran, HANEX, HDL Advisor, HDL Compiler, Hercules, Hercules-II, Hierarchical Optimization Technology, High Performance Option, HotPlace, HSIMplus, HSPICE-Link, iN-Tandem, Integrator, Interactive Waveform Viewer, i-Virtual Stepper, Jupiter, Jupiter-DP, JupiterXT, JupiterXT-ASIC, JVXtreme, Liberty, Libra-Passport, Library Compiler, Libra-Visa, Magellan, Mars, Mars-Rail, Mars-Xtalk, Medici, Metacapture, Milkyway, ModelSource, Module Compiler, Nova-ExploreRTL, Nova-Trans, Nova-VeriLint, Orion_ec, Parasitic View, Passport, Planet, Planet-PL, Planet-RTL, Polaris, Power Compiler, PowerCODE, PowerGate, ProFPGA, ProGen, Prospector, Raphael, Raphael-NES, Saturn, ScanBand, Schematic Compiler, Scirocco, Scirocco-i, Shadow Debugger, Silicon Blueprint, Silicon Early Access, SinglePass-SoC, Smart Extraction, SmartLicense, Softwire, Source-Level Design, Star, Star-DC, Star-MS, Star-MTB, Star-Power, Star-Rail, Star-RC, Star-RCXT, Star-Sim, Star-SimXT, Star-Time, Star-XP, Taurus, TimeSlice, TimeTracker, Timing Annotator, TopoPlace, TopoRoute, Trace-On-Demand, True-Hspice, TSUPREM-4, TymeWare, VCS Express, VCSi, Verification Portal, VFormal, VHDL Compiler, VHDL System Simulator, VirSim, and VMC are trademarks of Synopsys, Inc.

Service Marks (SM)MAP-in, SVP Café, and TAP-in are service marks of Synopsys, Inc.

SystemC is a trademark of the Open SystemC Initiative and is used under license.ARM and AMBA are registered trademarks of ARM Limited.All other product or company names may be trademarks of their respective owners.

PCM Library, Y-2006.09

Contents

About this manual ................................................................................................................. vAudience............................................................................................................................................. vRelated publications ........................................................................................................................... vTypographic conventions................................................................................................................... viCustomer support .............................................................................................................................. vi

Chapter 1 Overview................................................................................................................................1Introduction .........................................................................................................................................1What is a DLL? ...................................................................................................................................1Embedded process compact models..................................................................................................2Evaluating process compact models ..................................................................................................2Reverse analysis and feed-forward analysis with PCMs ....................................................................2References .........................................................................................................................................3

Chapter 2 API for using the PCM Library .............................................................................................5InitializePCM.......................................................................................................................................5DestroyPCM .......................................................................................................................................5GetListOfModels .................................................................................................................................5SetCurrentModelById .........................................................................................................................6SetCurrentModelByName...................................................................................................................6GetNumberOfParameters...................................................................................................................6GetNumberOfResponses ...................................................................................................................6GetRangeMax.....................................................................................................................................7GetRangeMin......................................................................................................................................7GetParametersList..............................................................................................................................7GetResponsesList ..............................................................................................................................8EvaluateSingleResponseByName and EvaluateSingleResponseById ..............................................8EvaluatePCM......................................................................................................................................8SolverInitialize.....................................................................................................................................9SolverInitializeByName and SolverInitializeById ................................................................................9SolverResponseValuesByName and SolverResponseValuesById ....................................................9SolverResponseTargetByName and SolverResponseTargetById ...................................................10SolverOptimize .................................................................................................................................10

Chapter 3 Examples of macros...........................................................................................................13Evaluating a process compact model ...............................................................................................13Reverse analysis ..............................................................................................................................14

PCM Library iiiY-2006.09

Contents

iv PCM LibraryY-2006.09

About this manual

This manual describes the functionality and the API of the PCM Library. The PCM Library can be usedto embed process compact models (PCMs) into any third-party application that can access componentobject models (COMs).

The main chapters are:

Chapter 1 gives an overview of the concepts and functionality of the PCM Library.

Chapter 2 describes the API of the PCM Library.

Chapter 3 presents examples of macros.

Audience

The intended users of the PCM Library are fab engineers and device engineers who want to use TCAD-derived PCMs in their preferred applications. The PCM can be loaded and the API provided by PCMLibrary can be used to perform analyses.

The PCM Library is not a stand-alone application, but can be used with COM-enabled applications.

Related publications

For additional information about PCM Library, see:

Documentation on the Web, which is available through SolvNet athttps://solvnet.synopsys.com/DocsOnWeb.

Synopsys Online Documentation (SOLD), which is included with the software for CD users or isavailable to download through the Synopsys Electronic Software Transfer (EST) system.

PCM Library vY-2006.09

About this manual Typographic conventions

Typographic conventions

Customer support

Customer support is available through SolvNet online customer support and through contacting theSynopsys Technical Support Center.

Accessing SolvNetSolvNet includes an electronic knowledge base of technical articles and answers to frequently askedquestions about Synopsys tools. SolvNet also gives you access to a wide range of Synopsys onlineservices including software downloads, documentation on the Web, and “Enter a Call to the SupportCenter.”

To access SolvNet:

1. Go to the SolvNet Web page at https://solvnet.synopsys.com.

2. If prompted, enter your user name and password. (If you do not have a Synopsys user name andpassword, follow the instructions to register with SolvNet.)

If you need help using SolvNet, click HELP in the top-right menu bar or in the footer.

Convention Explanation

Blue text Identifies a cross-reference (only on the screen).

Bold text Identifies a selectable icon, button, menu, or tab. It also indicates the name of a field, window, dialog box, or panel.

Courier font Identifies text that is displayed on the screen or that the user must type. It identifies the names of files, directories, paths, parameters, keywords, and variables.

Italicized text Used for emphasis, the titles of books and journals, and non-English words. It also identifies components of an equation or a formula, a placeholder, or an identifier.

NOTE Identifies important information.

vi PCM LibraryY-2006.09

About this manualCustomer support

Contacting the Synopsys Technical Support CenterIf you have problems, questions, or suggestions, you can contact the Synopsys Technical Support Centerin the following ways:

Open a call to your local support center from the Web by going to https://solvnet.synopsys.com(Synopsys user name and password required), then clicking “Enter a Call to the Support Center.”

Send an e-mail message to your local support center:

• E-mail [email protected] from within North America.

• Find other local support center e-mail addresses at http://www.synopsys.com/support/support_ctr.

Telephone your local support center:

• Call (800) 245-8005 from within the continental United States.

• Call (650) 584-4200 from Canada.

• Find other local support center telephone numbers at http://www.synopsys.com/support/support_ctr.

Contacting your local TCAD Support Team directlySend an e-mail message to:

[email protected] from within North America and South America.

[email protected] from within Europe.

[email protected] from within Asia Pacific (China, Taiwan, Singapore, Malaysia,India, Australia).

[email protected] from Korea.

[email protected] from Japan.

PCM Library viiY-2006.09

About this manual Customer support

viii PCM LibraryY-2006.09

CHAPTER 1 Overview

This chapter presents an overview of the PCM Library.

Introduction

The main purpose of the PCM Library is to provide the functionality to use TCAD-derived processcompact models (PCMs) in environments outside of PCM Studio. With some scripting knowledge, userscan access PCMs and integrate them into their yield management systems or statistical tools.

The PCM Library is an ActiveX Control DLL available under the Windows® operating system. Theterminology of DLL is primarily used under the Windows® operating system. An ActiveX Control is areusable, stand-alone software component often exposing a discrete subset of the total functionality ofa product or an application. The PCM Library can be embedded into several applications such asMicrosoft® Excel® and can be used as a part of the scripting language available inside the application.

The PCM Library provides several simple commands to load PCMs and to perform analysis usingPCMs.

The following sections explain the concept of a DLL and how the PCM Library can be used to integratePCMs into third-party applications.

What is a DLL?

A dynamic link library (DLL) or shared library is a precompiled and linked executable file that is storedseparately on the hard disk of a computer. It contains all the functions defined by the user. It is loadedonly when needed by an application. In most cases, multiple applications can use the same copy of thelibrary at the same time and there is no need for the operating system to load multiple instances of thelibrary into memory concurrently. In these cases, the libraries are stateless, that is, any data that must bestored by the library is stored by the applications it is serving. For this reason, these dynamic librariesare considered in-process.

In general terms, a DLL is a collection of useful functions that can be loaded into specific applicationsthat will use these functions. For example, in Excel®, a third-party COM-based DLL can be loadedusing a specific reference to the DLL. Specific functions in the COM-based DLL can be called byknowing the appropriate API of the DLL and writing a small macro in Excel®.

PCM Library 1Y-2006.09

1: Overview Embedded process compact models

Embedded process compact models

With the help of PCM Library, process compact models can be embedded directly into recipe flows inyield management systems or as plug-ins in statistical libraries. Using simple scripting, the PCM and itsfeatures can be accessed through the PCM Library. For example, PCMs can be embedded into Excel®and can be used to perform analysis using the Excel® scripting language. Further examples ofembedding PCMs can be found in the literature [1].

Figure 1 Data flow in a system using PCM Library

Evaluating process compact models

A PCM evaluation is performed to generate virtual device data using the PCM. Fab engineers can extractthe data from the quality control database. Using this data and the PCM from TCAD, fab engineers cangenerate virtual device characteristics corresponding to the simulation. They can compare the data fromthe fab to the data of the virtual device generated from the PCM in the yield management system.

Reverse analysis and feed-forward analysis with PCMs

Reverse analysis estimates the distribution of certain nonmeasurable process parameters based on datafor the rest of the parameters and electrical measurements for the device characteristics. Feed-forwardanalysis estimates the distribution of critical parameters (to understand the amount of control required)based on data or nominals for the rest of the process parameters and target device specifications (for theresponses). Technically, this corresponds to a reverse analysis with a fixed target value for the response.

NOTE Reverse analysis and feed-forward analysis use nonlinear numeric optimization methods toobtain an optimized result.

YMS ReportGeneration

PCM DLL-basedSystem

Data

YMS Data Link Yield Management Systems

Quality Control Data

2 PCM LibraryY-2006.09

1: OverviewReferences

References

[1] L. Bomholt et al., “Sub-100nm Technology Development and Optimization: Integration ofTCAD with Yield Management,” in Synopsys Users Group (SNUG), Hsinchu, Taiwan, May,2005.

PCM Library 3Y-2006.09

1: Overview References

4 PCM LibraryY-2006.09

CHAPTER 2 API for using the PCM Library

This chapter lists the functions provided by the API of the PCM Library.

InitializePCM

Imports a PCM (.xml) file. All the models in the file are loaded and indexed starting from 0.

DestroyPCM

Destroys the loaded PCMs and cleans up the allocated memory.

GetListOfModels

Returns the current list of models, stored in a BSTR array.

InitializePCM (string filename)

Input string filename

Return None

DestroyPCM ()

Input None

Return None

GetListOfModels ()

Input None

Return string array models

PCM Library 5Y-2006.09

2: API for using the PCM Library SetCurrentModelById

SetCurrentModelById

Sets the model represented by ModelIndex as the current active model. At any given instance, onemodel can be set as the active model.

SetCurrentModelByName

Sets the model represented by ModelName as the current active model. At any given instance, one modelcan be set as the active model.

GetNumberOfParameters

Obtains the number of parameters in the active model.

GetNumberOfResponses

Obtains the number of responses in the active model.

SetCurrentModelById (long ModelIndex)

Input long ModelIndex

Return None

SetCurrentModelByName (string ModelName)

Input string ModelName

Return None

GetNumberOfParameters ()

Input None

Return long ParameterCount

GetNumberOfResponses ()

Input None

Return long ResponseCount

6 PCM LibraryY-2006.09

2: API for using the PCM LibraryGetRangeMax

GetRangeMax

Obtains the upper limit of the parameter ParameterName in the current active model.

NOTE RangeMax is the upper operating limit of the parameter. Above the RangeMax value, thePCM is not valid.

GetRangeMin

Obtains the lower limit of the parameter ParameterName in the current active model.

NOTE RangeMin is the lower operating limit of the parameter. Below the RangeMin value, thePCM is not valid.

GetParametersList

Obtains the parameters in the current active model.

GetRangeMax (string ParameterName)

Input string ParameterName

Return double RangeMax

GetRangeMin (string ParameterName)

Input string ParameterName

Return double RangeMin

GetParametersList ()

Input None

Return string array parameters

PCM Library 7Y-2006.09

2: API for using the PCM Library GetResponsesList

GetResponsesList

Obtains the responses in the current active model.

EvaluateSingleResponseByName and EvaluateSingleResponseById

This function is used to evaluate the response represented by the ResponseName or ResponseIndex.The ResponseIndex is the array position of the response obtained from the GetResponsesList (thearray starts from 0). The ResponseName is obtained from the GetResponsesList function call.

EvaluatePCM

This function is used to evaluate all the responses present in the current active model. The predefinedarray ResponseValues is filled with the response values. The application must initialize the array anddestroy it.

GetResponsesList ()

Input None

Return string array responses

EvaluateSingleResponseByName (string ResponseName, double array InputParameters)EvaluateSingleResponseById (long ResponseIndex, double array InputParameters)

Input string ResponseName or long ResponseIndex

Input double array InputParameters

Return double ResponseValue

EvaluatePCM (double array InputParameters, double array ResponseValues (by reference))

Input double array InputParameters

Output double array ResponseValues

8 PCM LibraryY-2006.09

2: API for using the PCM LibrarySolverInitialize

SolverInitialize

The solver is initialized to the current active model. The option isConstrainedAnalysis set to trueis used if constrained optimization should be used instead of unconstrained optimization. In constrainedoptimization, the upper and lower bounds of the parameter (to be estimated) must be set.

SolverInitializeByName and SolverInitializeById

The model represented by ModelName or ModelId is set as the current active model and is used toinitialize the solver. The list of ModelNames is obtained using GetListOfModels. The ModelId is theindex of the preferred model.

SolverResponseValuesByName and SolverResponseValuesById

The functions SolverResponseValuesByName and SolverResponseValuesById are used to setup the response represented by name or ID, respectively.

SolverInitialize (boolean isConstrainedAnalysis)

Input boolean isConstrainedAnalysis

Return None

SolverInitializeByName (string ModelName, boolean isConstrainedAnalysis)SolverInitializeById (long ModelId, boolean isConstrainedAnalysis)

Input string ModelName or long ModelId

Input boolean isConstrainedAnalysis

Return None

SolverResponseValuesByName (string ResponseName, double weight, double shift)SolverResponseValuesById (long ResponseId, double weight, double shift)

Input string ResponseName or long ResponseID

Input double weight

Input double shift

Return None

PCM Library 9Y-2006.09

2: API for using the PCM Library SolverResponseTargetByName and SolverResponseTargetById

weight defines the weight value for each response. If the weight is not set for a response, the defaultvalue of 0.0 is assumed. (This means that the contribution of this response is not taken into accountduring optimization.)

shift sets the shift value of the response. This value is the measurement shift compared to thesimulation.

SolverResponseTargetByName and SolverResponseTargetById

The function SolverResponse is used to define the target value (target) of a response. The optimizerworks on minimizing the residuals.

SolverOptimize

The function SolverOptimize performs the optimization and determines the optimal values for theparameters to be estimated.

ParameterVector is a bit array of integers. The size of the array is equal to the number of parametersin the model. In the bit array, the parameters to be estimated are represented by 0 and parameters thatare available from in-process metrology are represented by 1. For example, if the input parameters areP1, P2, P3, P4, and P5, and if the parameters P2 and P4 are to be estimated, the bit array would be 1 01 0 1.

SolverResponseTargetByName (string ResponseName, double target)SolverResponseTargetById (long ResponseId, double target)

Input string ResponseName or long ResponseID

Input double target

Return None

SolverOptimize (long array ParameterVector, double array ParameterValues)

Input long ParameterVector

Input double array ParameterValues

Return double array ReturnValues

10 PCM LibraryY-2006.09

2: API for using the PCM LibrarySolverOptimize

ParameterValues is a double array. The size of the array is the number of parameters in the model.The values for the known parameters are provided and, for the parameters to be estimated, a startingpoint (usually the nominal value of that particular parameter) must be provided.

ReturnValues is a double array that is initialized and created. ReturnValues contains all theestimated values of the required parameters and residual value, representing the error involved in theestimation.

PCM Library 11Y-2006.09

2: API for using the PCM Library SolverOptimize

12 PCM LibraryY-2006.09

CHAPTER 3 Examples of macros

This chapter provides example macros that evaluate a process compactmodel (PCM) and perform reverse analysis.

The primary aim of the PCM Library is to allow users to evaluate and perform analyses using processcompact models. For this, users need to instantiate the PCM Library and call the specific routinesprovided by the API.

Users initially create an instance of the PCM Library in the local application. Now, all the data createdby this instance is bound to the application. There is a bidirectional information flow between theinstance and the calling application.

Evaluating a process compact model

A sample macro is provided, which can be embedded into Excel®; values can be passed to it andrequired responses (device characteristics) can be obtained from it:

Public Function EvaluateResponseByName(ResponseName As String, ByVal lgate, ByVal gox,ByVal ha_dose, ByVal ha_tilt, ByVal ex_dose, ByVal spike_t) As Double

' Create an instance of the PCM Library' all the operations using a model can be done' using the PCM LibraryDim m_PCM As New CPCMDim colIndex As IntegerDim Data As VariantDim lst As StringDim Filename As StringDim nParam As LongDim InputParam() As Double

' Provide the location of the PCM Filename = "C:\PCM\Generic6Param.xml"

' Initialize the PCM Library with the specific PCM File m_PCM.InitializePCM (Filename)

' Get the number of input parameters from the default model ' The default model is usually the first model present in the PCM ' A PCM can contain more than one model. nParam = m_PCM.GetNumberOfParameters

' Get the names of the input parameters

lst = m_PCM.GetParametersList

ReDim InputParam(0 To nParam - 1)InputParam(0) = lgate

PCM Library 13Y-2006.09

3: Examples of macros Reverse analysis

InputParam(1) = goxInputParam(2) = ha_doseInputParam(3) = ha_tiltInputParam(4) = ex_doseInputParam(5) = spike_t

' Evaluate a specific response by providing all the' process step information.EvaluateResponseByName = m_PCM.EvaluateSingleResponseByName(ResponseName, InputParam)m_PCM.DestroyPCM

End Function

Reverse analysis

This is an example of a macro for the estimation of ha_tilt and ha_dose, showing reverse analysisusing PCM Library:

Sub EstimateHaloTiltAndHaloDose()

Dim m_PCM As New CPCMDim Filename As StringDim InputParam() As DoubleDim InputVector() As LongDim returns As VariantDim lgate, gox, ha_dose, ha_tilt, ex_dose, spike_t, targetvtl, targetvts, targetion As Double

lgate = Worksheets("Process Control").Range("G5").Valuegox = Worksheets("Process Control").Range("D5").Valueha_dose = Worksheets("Process Control").Range("B31").Valueha_tilt = Worksheets("Process Control").Range("M5").Valueex_dose = Worksheets("Process Control").Range("B13").Valuespike_t = Worksheets("Process Control").Range("O5").Valuetargetvtl = Worksheets("Process Control").Range("G39").Valuetargetvts = Worksheets("Process Control").Range("G40").Valuetargetion = Worksheets("Process Control").Range("G41").Value

Filename = ActiveWorkbook.Path & "\Generic6Param.xml"m_PCM.InitializePCM (Filename)

Dim nParam As LongnParam = m_PCM.GetNumberOfParameters

ReDim InputParam(0 To nParam - 1)ReDim InputVector(0 To nParam - 1)

InputParam(0) = lgateInputParam(1) = goxInputParam(2) = ha_doseInputParam(3) = ha_tiltInputParam(4) = ex_doseInputParam(5) = spike_t

For I = 0 To nParam - 1InputVector(I) = 1

Next I

14 PCM LibraryY-2006.09

3: Examples of macrosReverse analysis

' This makes sure that Halo Tilt and Halo Dose' Are ReconstructedInputVector(2) = 0InputVector(3) = 0m_PCM.SolverInitialize (0)

m_PCM.SolverResponseTargetById 1, targetvtlm_PCM.SolverResponseValuesById 1, 1#, 0#m_PCM.SolverResponseTargetById 2, targetvtsm_PCM.SolverResponseValuesById 2, 1#, 0#m_PCM.SolverResponseTargetById 3, targetionm_PCM.SolverResponseValuesById 3, 1#, 0#

returns = m_PCM.SolverOptimize(InputVector, InputParam)m_PCM.DestroyPCM

Worksheets("Process Control").Range("K41").Value = returns(1)Worksheets("Process Control").Range("K39").Value = returns(0)

End Sub

Figure 2 shows an Excel® spreadsheet using this macro.

Figure 2 Excel® spreadsheet using sample macro

PCM Library 15Y-2006.09

3: Examples of macros Reverse analysis

16 PCM LibraryY-2006.09