Agilent 85190A IC-CAP 2008 Reference Agilent Technologies Notices © Agilent Technologies, Inc. 2000-2008 Warranty No part of this manual may be reproduced in any form or by any means (including electronic storage and retrieval or translation into a foreign language) without prior agreement and written consent from Agilent Technologies, Inc. as governed by United States and international copyright laws. The material contained in this document is provided “as is,” and is subject to being changed, without notice, in future editions. Further, to the maximum extent permitted by applicable law, Agilent disclaims all warranties, either express or implied, with regard to this manual and any information contained herein, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. Agilent shall not be liable for errors or for incidental or consequential damages in connection with the furnishing, use, or performance of this document or of any information contained herein. Should Agilent and the user have a separate written agreement with warranty terms covering the material in this document that conflict with these terms, the warranty terms in the separate agreement shall control. Edition March 2008 Printed in USA Agilent Technologies, Inc. 5301 Stevens Creek Blvd. Santa Clara, CA 95052 USA Acknowledgments UNIX ® is a registered trademark of the Open Group. Windows ®, MS Windows ® and Windows NT ® are U.S. registered trademarks of Microsoft Corporation. Mentor Graphics is a trademark of Mentor Graphics Corporation in the U.S. and other countries. Errata The IC-CAP product may contain references to “HP” or “HPEESOF” such as in file names and directory names. The business entity formerly known as “HP EEsof” is now part of Agilent Technologies and is known as “Agilent EEsof.” To avoid broken functionality and to maintain backward compatibility for our customers, we did not change all the names and labels that contain “HP” or “HPEESOF” references. 2 Technology Licenses The hardware and/or software described in this document are furnished under a license and may be used or copied only in accordance with the terms of such license. Restricted Rights Legend U.S. Government Restricted Rights. Software and technical data rights granted to the federal government include only those rights customarily provided to end user customers. Agilent provides this customary commercial license in Software and technical data pursuant to FAR 12.211 (Technical Data) and 12.212 (Computer Software) and, for the Department of Defense, DFARS 252.227-7015 (Technical Data - Commercial Items) and DFARS 227.7202-3 (Rights in Commercial Computer Software or Computer Software Documentation). Safety Notices CAU TI O N A CAUTION notice denotes a hazard. It calls attention to an operating procedure, practice, or the like that, if not correctly performed or adhered to, could result in damage to the product or loss of important data. Do not proceed beyond a CAUTION notice until the indicated conditions are fully understood and met. WA RN ING A WARNING notice denotes a hazard. It calls attention to an operating procedure, practice, or the like that, if not correctly performed or adhered to, could result in personal injury or death. Do not proceed beyond a WARNING notice until the indicated conditions are fully understood and met. IC-CAP Reference Contents 1 Supported Instruments DC Analyzers 22 HP 4071A Semiconductor Parametric Tester 23 HP 4140 pA Meter/DC Voltage Source 33 HP 4141 DC Source/Monitor 35 HP/Agilent 4142 Modular DC Source/Monitor 36 HP 4145 Semiconductor Parameter Analyzer 41 HP/Agilent 4155 Semiconductor Parameter Analyzer 44 HP/Agilent 4156 Precision Semiconductor Parameter Analyzer 47 Agilent E5260 Series Parametric Measurement Solutions 49 Agilent E5270 Series Parametric Measurement Solutions 53 Agilent B1500A Semiconductor Device Analyzer 59 Capacitance-Voltage Meters 65 HP 4194 Impedance Analyzer 66 HP 4271 1 MHz Digital Capacitance Meter 68 HP 4275 Multi-Frequency LCR Meter 69 HP 4280 1 MHz Capacitance Meter 71 HP/Agilent 4284 Precision LCR Meter 73 HP/Agilent 4285 Precision LCR Meter 75 Agilent E4980A Precision LCR Meter 77 Agilent 4294A Precision Impedance Analyzer 80 Agilent E4991A RF Impedance/Material Analyzer 82 Network Analyzers 84 Agilent E5071C ENA Series Network Analyzer 88 Agilent PNA Series Vector Network Analyzer 93 HP 3577 Network Analyzer 100 IC-CAP Reference 3 HP/Agilent 8510 Network Analyzer HP/Agilent 8702 Network Analyzer HP/Agilent 8719 Network Analyzer HP/Agilent 8720 Network Analyzer HP/Agilent 8722 Network Analyzer HP/Agilent 8753 Network Analyzer Wiltron360 Network Analyzer 120 104 108 109 109 112 112 Oscilloscopes 124 HP 54120T Series Digitizing Oscilloscopes 124 HP 54510 Digitizing Oscilloscope 129 Agilent Infiniium Oscilloscope 133 HP 54750 Series Digitizing Oscilloscopes 138 Differential TDR/TDT Capability 142 Pulse Generators 147 HP 8130 Pulse Generator HP 8131 Pulse Generator 147 148 Dynamic Signal Analyzer 151 HP/Agilent 35670A Dynamic Signal Analyzer 2 151 Drivers Prober Drivers 154 External Prober User Functions 155 Internal Prober Functions 159 Prober Settings and Commands 160 Prober Driver Test Program 164 Matrix Drivers 166 External Matrix Driver User Functions 166 Internal Matrix Driver Functions 168 Using IC-CAP with B2200A/B2201 Low-Leakage Mainframe Driver 170 Utility Functions 170 4 IC-CAP Reference Initialization and General Configuration 171 Transforms Governing the Bias Mode 172 Transforms Governing the Ground Mode 174 Transforms Governing the Couple Mode 176 Transforms Governing the Switching 177 Using IC-CAP with the HP 5250A Matrix Driver 178 Utility Functions 179 Initialization and General Configuration 181 Transforms Governing the Bias Mode 182 Transforms Governing the Couple Mode 183 Transforms Governing the Switching 184 Using IC-CAP with HP 4062UX and Prober/Matrix Drivers Writing a Macro 185 Prober Control 187 Special Conditions 187 185 Adding Instrument Drivers to IC-CAP 189 Using the Open Measurement Interface 189 Driver Development Concepts 190 Adding a Driver 194 Debugging 203 Alternatives to Creating New Drivers 206 What Makes up an IC-CAP Driver 207 Programming with C++ 219 Class Hierarchy for User-Contributed Drivers 226 Order in Which User-Supplied Functions are Called During Rebuild 229 During Calibrate 230 During Measure 231 Handling Signals and Exceptions IC-CAP Reference 229 236 5 3 SPICE Simulators SPICE Simulation Example 242 Piped and Non-Piped Simulations 244 Piped and Non-Piped SPICE Simulations Non-Piped HSPICE Simulations 247 Non-Piped ELDO Simulations 248 Output Data Formats 244 250 SPICE Parameter Sweeps 252 Circuit Model Descriptions 254 Specifying Simulator Options 254 Describing the Device Model 255 Describing Subcircuits 257 Assigning Node Names 258 Test Circuits and Hierarchical Simulation 258 Circuit Description Syntax 261 SPICE Simulators 261 HSPICE Simulator 263 ELDO Simulator 263 SPICE Simulator Differences 265 Using the PRECISE Simulator with IC-CAP Using the PSPICE Simulator with IC-CAP 4 270 SPECTRE Simulator SPECTRE Interfaces 274 SPECTRE Interface 274 SPECTRE443 Interface 274 SPECTRE442 Interface 275 Open Simulator Interface (OSI) Circuit Model Descriptions 6 267 275 276 IC-CAP Reference Specifying Simulator Options 276 Valid SPECTRE Netlist Syntax for IC-CAP 277 Describing a Device 278 Describing the Model 279 Describing Subcircuits 279 Using a Device Statement and Model Card Configuration 281 Using a Single Subcircuit Block Configuration 281 Using a Device Statement Followed by a Subcircuit Block 282 Test Circuits and Hierarchical Simulation 283 Piped and Non-Piped SPECTRE Simulations 286 Using SPECTRE Simulator Templates with CANNOT_PIPE 286 Using SPECTRE Simulator Templates with CAN_PIPE 287 Using Template SPICE3 and the Open Simulator Interface spectre3.c 288 5 Saber Simulator Saber Simulation Example 293 Piped and Non-Piped Saber Simulations Saber Parameter Sweeps The Alter Command 295 297 299 Circuit Model Description 300 Selecting Simulator Options 300 Entering Circuit Descriptions 301 6 MNS Simulator MNS Simulation Example 311 The Simulation Debugger 312 Piped MNS Simulations 314 Non-Piped MNS Simulations MNS Parameter Sweeps IC-CAP Reference 315 316 7 Example Circuit Simulation Parameter Sweep 319 Circuit Model Description 321 Selecting Simulator Options 321 Entering Circuit Descriptions 321 Device Model Descriptions 322 Subcircuit Model Descriptions 323 MNS Input Language MNS Libraries 7 326 326 ADS Simulator ADS Interfaces 330 Hardware and Operating System Requirements Codewording and Security 331 331 Setting Environment Variables 332 ADS Simulation Example 333 The Simulation Debugger 334 Piped ADS Simulations 336 Non-Piped ADS Simulations 338 Circuit Model Description 338 Selecting Simulator Options 338 Entering Circuit Descriptions 338 Device Model Descriptions 340 Subcircuit Model Descriptions 341 ADS Parameter Sweeps 345 Example Circuit Simulation Parameter Sweep Interpreting this Chapter General Syntax 352 355 The ADS Simulator Syntax 8 347 356 IC-CAP Reference Field Separators 356 Continuation Characters 356 Name Fields 356 Parameter Fields 357 Node Names 357 Lower/Upper Case 357 Units and Scale Factors 357 Booleans 360 Ground Nodes 361 Global Nodes 361 Comments 361 Statement Order 361 Naming Conventions 362 Currents 362 Instance Statements Model Statements 364 365 Subcircuit Definitions 366 Expression Capability 368 Constants 368 Variables 369 Expressions 371 Functions 372 Conditional Expressions 387 VarEqn Data Types 390 Type conversion 390 “C-Preprocessor” 391 File Inclusion 391 Library Inclusion 391 Macro Definitions 392 Conditional Inclusion 392 IC-CAP Reference 9 Data Access Component Reserved Words 8 IC-CAP Functions 9 Parameter Extraction Language 394 396 Fundamental Concepts 686 Keywords 686 Identifiers 686 Numeric Precision 687 Statements 691 Data Types 708 Built-in Functions 712 Built-In Constants 744 Expressions 745 Calls to the Function Library 10 749 File Structure and Format File Structure 752 Example File 754 11 Variables 12 GPIB Analyzer Menu Commands 784 Macro Files 784 Macro File Example 784 Macro Commands 785 Macro File Syntax Rules 787 10 IC-CAP Reference A OMI and C++ Glossary B Agilent EEBJT2 Model Equations Constants 796 Base-Emitter and Base-Collector Current Collector-Emitter Current 796 798 Base-Emitter and Base-Collector Capacitances References C 804 Agilent EEFET3 Model Equations Drain-Source Current 806 Dispersion Current (Idb) Gate Charge Model 812 816 Output Charge and Delay 822 Gate Forward Conduction and Breakdown Scaling Relations References D 823 824 827 Agilent EEHEMT1 Model Equations Drain-Source Current 830 Dispersion Current (Idb) Gate Charge Model 838 842 Output Charge and Delay 848 Gate Forward Conduction and Breakdown Scaling Relations References IC-CAP Reference 800 849 850 853 11 E Controlling IC-CAP from Another Application To Compile Using the Library Solaris Examples 857 856 Details of Function Calls 858 launch_iccap 858 initialize_session() 859 terminate_session() 860 send_PEL 860 get_PEL_response 861 send_map 862 Details of the LinkReturnS Structure F 864 ICCAP_FUNC Statement Objects 868 IC-CAP 868 Variables 869 GUI Items 869 GUI Item 869 Simulation Debugger 870 Hardware 870 HPIB Analyzer 871 MODEL 872 Circuit 872 PlotOptimizer 873 PlotOptions 873 Parameter Set 875 MACRO 875 DUT 876 Test Circuit 877 Device Parameter Set 877 SETUP 878 Instrument Options 879 12 IC-CAP Reference INPUT 879 OUTPUT 880 TRANSFORM 880 PLOT 881 Actions 883 Add Active Instr 893 Add Global Region 893 Add GUI 894 Add Interface File 894 Add Trace Region 895 Area Tools 895 Area Tools Off 895 Area Tools On 896 Autoconfigure or Autoconfigure And Enable 896 Autoscale 896 Auto Set Min Max 897 Auto Set Optimize or Auto Set And Optimize 897 Bus status 897 Calibrate 898 Change Address 898 Change Directory 899 Change Interface File 899 Check Active Address 900 Clear Active List 900 Clear Data/Simulated/Measured/Both 900 Clear Plot Optimizer 901 Clear Status Errors 901 Clear Status Output 901 Clear Table or Clear Parameter Table 901 Close 902 Close All 902 Close Branch 902 IC-CAP Reference 13 Close Error Log 903 Close GUI 903 Close Hardware 904 Close License Window 904 Close Output Log 904 Close Single GUI 904 Color 905 Copy 905 Copy to Clipboard 906 Copy to Variables 906 Create Variable Table Variable 906 Data Markers 907 Delete 907 Delete Active Instr 908 Delete Interface File 908 Delete Global Regions 909 Delete Trace Regions 909 Delete All User Regions 910 Delete User Region 910 Destroy GUI 910 Destroy Single GUI 911 Diagnostics 911 Diagnostics 912 Disable All 912 Disable All Traces 912 Disable Plot 913 Disable Supplies 913 Disable Trace 913 Display Found Instrs 914 Display Modal GUI 914 Display Modeless GUI 914 Display Plots 915 Display Single Modal GUI 915 14 IC-CAP Reference Display Single Modeless GUI 916 Draw Diag Line 916 Dump To Plotter 916 Dump To Printer 917 Dump To Stdout 917 Dump Via Server 918 Dump Via Server UI 919 Edit 919 Enable All 920 Enable Plot 920 Exchange Black-White 920 Execute 921 Exit/Exit! 921 Export Data Measured 921 Export Dataset 922 Export Data Simulated 922 Extract 922 File Debug On 923 File/Screen Debug Off 923 Footer 924 Footer Off 924 Footer On 925 Full Page Plot 925 Header 925 Header Off 925 Header On 926 I-O_Lock 926 I-O_Reset 927 I-O_Screen Debug OFF 927 I-O_Screen Debug ON 927 I-O_Unlock 928 Import Create 928 Import Create Header Only 928 IC-CAP Reference 15 Import Create Measured 929 Import Create Measured or Simulated 929 Import Create Simulated 930 Import Create Simulated or Measured 930 Import Data 931 Import Delete 932 Import Measured Data 932 Import Measured or Simulated Data 933 Import Simulated Data 933 Import Simulated or Measured Data 934 Import Text 935 Legend 935 Legend Off 936 Legend On 936 License Status 936 Listen Active Address 937 Macro File Execute 937 Macro File Specify 939 Manual Rescale 940 Manual Simulation 940 Measure 940 Memory Recall 941 Memory Store 941 New DUT 941 New Input/Output/Transform/Plot 942 New Macro 942 New Model 942 New Setup 943 Open 943 Open Branch 944 Open DUT 944 Open Error Log 944 Open Hardware 944 16 IC-CAP Reference Open Input/Output/Transform/Plot Open Macro 945 Open Model 946 Open Output Log 946 Open Plot Optimizer 946 Open Setup 947 Optimize 947 Parse 947 Print Read Buffer 948 Print Via Server 948 Read from File 949 ReadOnlyValues 949 Read String 949 Read String for Experts 950 Rebuild Active List 950 Recall Parameters 951 Redisplay 951 Refresh Dataset 951 Release License 952 Rename 952 Replace Interface File 953 Replot 953 Rescale 953 Reset 953 Reset Global Region 954 Reset Min Max 954 Reset Option Table 954 Reset to Saved Options 955 Reset Trace Region 955 Run Self-Tests 956 Save All 956 Save All No Data 956 Save As 957 IC-CAP Reference 945 17 Save As No Data 957 Save Extracted Deck 958 Save Image 958 Save Input/Command/Output File 958 Scale Plot/Scale Plot Preview 959 Scale RI Plot/Scale RI Plot Preview 960 Screen Debug On 961 Search for Instruments 962 Select Error Region 962 Select Plot 963 Select Whole Plot 963 Send Command Byte 963 Send, Receive, and Print 965 Send String 965 Send To Printer 965 Serial Poll 966 Set Active Address 966 Set Algorithm 967 Set Error 967 Set GUI Callbacks 968 Set GUI Options 968 Set Instrument Option Value 969 Set Speed 969 Set Table Field Value 970 Set Target Vs Simulated 971 Set Timeout 971 Set Trace As Both 972 Set User Region 972 Set Variable Table Value 973 Show Absolute Error 973 Show Relative Error 974 Simulate 974 Simulate All 974 18 IC-CAP Reference Simulate Plot Inputs 975 Simulation Debugger 975 Status Window 975 Stop Simulator 975 Store Parameters 976 Talk Active Address 976 Text Annotation 976 Text Annotation Off 977 Text Annotation On 977 Toggle Zoom 977 Tune Fast 978 Tune Slow 978 Undo Optim 978 Undo Zoom 979 Unselect All 979 Update Annotation 979 View 980 Who Are You 980 Write to File 980 Zoom Plot 981 G 54120 Demo TDR Example 984 Measurement/Instrument Setup Simulation 984 Setup specifics 985 984 Standard Time-Domain Example 987 Measurement/Instrument Setup 987 Simulation 988 Setup specifics 988 Controlled Pulse Generator Example Measurement/Instrument Setup IC-CAP Reference 991 991 19 Simulation 992 Setup specifics 992 Calibration Tips 995 996 Aligning Measured and Simulated Data H 997 User C Functions Example 1 1000 Example 2 1001 Function Descriptions 1002 USERC_open 1002 USERC_close 1003 USERC_write 1003 USERC_readnum 1004 USERC_readstr 1005 USERC_seek 1005 USERC_tell 1006 USERC_read_reals 1006 Hints 1008 Hints for Instruments 1008 Hints for Timeouts 1008 Hints for Reading/Writing Same File 1009 Hints for Carriage Returns, Line Feeds, etc. 1009 I icedil Functions DIL-related Functions Other Functions 1012 1013 Index 20 IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 1 Supported Instruments DC Analyzers 22 Capacitance-Voltage Meters 65 Network Analyzers 84 Oscilloscopes 124 Pulse Generators 147 Dynamic Signal Analyzer 151 This chapter discusses the instruments supported by IC-CAP and describes the options for each instrument. The instruments are divided into basic groups: • DC analyzers • Capacitance-Voltage meters • Network analyzers • Oscilloscopes • Pulse generators • Dynamic signal analyzers Agilent Technologies 21 1 Supported Instruments DC Analyzers DC analyzers source and monitor voltages and currents and return data representing DC characteristics. IC-CAP supports the following DC analyzers: • HP 4071A Semiconductor Parametric Tester • HP 4140 pA Meter/DC Voltage Source • HP 4141 DC Source/Monitor • HP/Agilent 4142 Modular DC Source/Monitor • HP 4145 Semiconductor Parameter Analyzer • HP/Agilent 4155 Semiconductor Parameter Analyzer • HP/Agilent 4156 Precision Semiconductor Parameter Analyzer • Agilent E5260 Series Parametric Measurement Solutions • Agilent E5270 Series Parametric Measurement Solutions • Agilent B1500A Semiconductor Device Analyzer CAU TI O N 22 IC-CAP does not restrict bias magnitude. When using a DC analyzer as a bias source for other instruments such as capacitance-voltage meters or network analyzers, check the limit on external bias voltage or current for each instrument. Excessive voltage or current may damage other instruments. IC-CAP Reference 1 Supported Instruments HP 4071A Semiconductor Parametric Tester The HP 4071A IC-CAP driver enables you to control the HP 4071A Semiconductor Parametric Tester from within IC-CAP. NO TE IC-CAP requires the Agilent 4070 System Software (also referred to as TIS), version B.02.00, or higher, to drive the Agilent 4071 Semiconductor Parametric Tester. The Agilent 4071 Semiconductor Parametric Tester is only supported on the HP-UX 11i platform. For assistance using the Agilent 4070 System Software (TIS), please contact your local Agilent Instrument Support Team. GPIB Interface The HP 4071A does not have a GPIB interface available by which you can control measurements. However, in keeping within the IC-CAP framework, an interface is required by the hardware manager in IC-CAP. The interface choices for the HP 4071 are limited to tis_offline, and tis_online. tis_offline runs the HP 4071 driver in a mode that does not require that the HP 4071 system be connected. tis_online runs the HP4071 driver in a mode that communicates with the HP 4071 system when one is available. You can add an interface in the Hardware Setup window using Tools > Hardware Setup in the IC-CAP/Main window, then click on Rebuild to set up the tester. IC-CAP will invoke the hp4070 executable if it is not already running or is shutdown during an IC-CAP function. Therefore, in the window where you start IC-CAP, you must set the PATH environment variable to the directory where the hp4070 executable is located. The typical installation directory for the hp4070 executable is /opt/hp4070/bin. IC-CAP Reference 23 1 Supported Instruments Pin Connections The HP 4071A switch matrix is controlled by the values entered for each of the Pins options in the Instrument Options Table. You can view the instrument options in the Model window after setting up the HP 4071 hardware, and creating an input for a setup. Highlight the setup name, then click on the Instrument Options tab. The values for the Pins option describes which PORT is connected to the available test head pins. Generally, each SMU has the same options implemented in the driver. One exception is that the Guard Pins option available for SMU1 and SMU2 are not available for SMU3. See the available instrument options in Table 1. The following table shows examples of valid entries for Pins and the resulting connections: Valid Pins Field Entry Resulting Pin Connections 10 10 1,5,7,9 1, 5, 7, 9 2,4-7,9 2, 4, 5, 6, 7, 9 2,4-7,9,0 Not connected 35,5,2-4 35, 5, 2, 3, 4 12-16 12, 13, 14, 15,16 Notice that valid entries include a series of numbers separated by commas, and a range of numbers using a dash. A 0 appearing anywhere in a Pins field disconnects the PORT from the switch matrix. This is an easy way to disconnect the PORT without having to erase the pin numbers. The Pins field also can be left blank. If the Pins field is left blank, then ICCAP will search for a pre-defined IC-CAP variable. The string value of the pre-defined IC-CAP variable becomes the Pins entry for the corresponding PORT. You can view the pre-defined IC-CAP variables by clicking on the Model Variables tab in the Model window. 24 IC-CAP Reference 1 Supported Instruments You may use these pre-defined IC-CAP variables in PEL programs and Macros, which enables you to programmatically change the pin assignments of each PORT. The following program listing is a PEL macro snippet that manipulates pin assignments. Though pin values for variables SMU1-4 are pre-defined, you can see that the variables are being assigned new values before an iccap_func statement is executed. n = 1 while (n <= 17) HP4070_SMU1 = n HP4070_SMU2 = n + 1 HP4070_SMU3 = n + 2 HP4070_SMU4 = n + 3 print “SMU1=”, HP4070_SMU1 print “SMU2=”, HP4070_SMU2 print “SMU3=”, HP4070_SMU3 print “SMU4=”, HP4070_SMU4 iccap_func(“/Test1/SMU/sweepOrder1”, “measure”) n = n + 4 end while Prober Functions The HP 4071A driver incorporates the TIS prober control functions as IC-CAP PEL functions. The TIS prober functions are described briefly in this section. The tis_prober_init() function is described in detail because its arguments differ slightly from the TIS function prober_init(). The remaining functions have the same arguments as their TIS counterparts. Consult the TIS Function Reference for complete descriptions of all prober commands. All prober functions return 0 when successful, and -1 when they fail. tis_prober_init (selectCode, busAddress, ProberType, InterfaceName) selectCode - Integer value, range 0 and 7-31. This is the GPIB select code. Setting selectCode and busAddress to 0 retrieves the GPIB select code and bus address from PCONFIG file. busAddress - Integer value, range 0-30. This is the GPIB bus address. Setting selectCode and busAddress to 0 retrieves the GPIB select code and bus address from PCONFIG file. ProberType - String value, 30 characters max. String that specifies the type of prober. See TIS Function Reference for prober types. IC-CAP Reference 25 1 Supported Instruments InterfaceName - String value. This is the interface name, either TIS_OFFLINE or TIS_ONLINE. tis_p_home () Used for loading a wafer onto the chuck and moving it to the home position. tis_p_up () Moves the chuck of the wafer prober up. tis_p_down () Lowers the chuck of the wafer prober. tis_p_scale (xIndex, yIndex) Defines the X & Y stepping dimensions that are used by the tis_p_move and tis_p_imove functions. tis_p_move (xCoordinate, yCoordinate) Moves the chuck to an absolute position. tis_p_imove (xDisplacement, yDisplacement) Moves the chuck a relative increment from its current position. tis_p_orig (xCoordinate, yCoordinate) Defines the current X & Y position of the chuck. Must be called before calling the tis_p_move or tis_p_imove functions. tis_p_pos (xPosition, yPosition) Returns the current X & Y position of the chuck. tis_p_ink (inkCode) Calls the inker function of the prober if it is supported. tis_prober_reset () Sends a device clear command to the prober. tis_prober_status (isRemote, onWafer, lastWafer) 26 IC-CAP Reference Supported Instruments 1 Sends a query to the prober to obtain the Remote/Local control state and the edge sensor contact state. The prober should be initialized with tis_prober_init before this function. tis_prober_get_name (proberModeName) Sends query to prober to read name of current mode. tis_prober_get_ba (proberBusAddress) Sends query to prober to read its bus address. tis_prober_read_sysconfig (proberType, scba) Sends query to prober to read its complete interface address including instrument type, select code, and bus address. The following PEL macro example uses the prober functions. For the prober used in this example, notice that the operator must manually place the prober into AUTO PROBE mode while the program is actively querying the prober and it is in remote mode. Also notice that isRemote, isOnWafer, and isLastWafer must be parameters that appear in a variable list such as Model Variables. status = -1 busAddress = 0 selectCode = 0 proberType = “EG4080X” interfaceName = “TIS_ONLINE” stepSizeX = 500 stepSizeY = 300 isRemote = 0 isOnWafer = 0 isLastWafer = 0 dum = 1 ! Prober Commands return 0 for success, -1 for failure dum = tis_prober_reset() status=tis_prober_init(selectCode,busAddress,proberType,inte rfaceName) if (status == 0) then status = tis_p_scale(stepSizeX, stepSizeY) print “status =”, status end if if (status == 0) then status = tis_prober_status(isRemote, isOnWafer, isLastWafer) print “status =”, status print “isRemote =”, isRemote end if if (status == 0) then IC-CAP Reference 27 1 Supported Instruments linput “Align the wafer. Press OK, then press [AUTO PROBE]”, ans ! EG4080X MUST be actively querying bus when AUTO PROBE is commenced while (isRemote == 0) dum2 = tis_prober_status (isRemote, isOnWafer, isLastWafer) end while print “isRemote =”, isRemote if (isRemote ==1) then status = 0 end if end if if (status == 0) then dum = tis_p_orig(5.0,5.0) n = 1 while (n < 5) dum = tis_p_move(n,n) n = n + 1 end while end if Instrument Options for the HP 4071A The following table describes the HP 4071A options and their default values. Table 1 28 HP 4071A Options Option Description Use User Sweep Yes = use user mode sweep. No = use system mode, when all required conditions are met. Default = No. Hold Time Time to allow for DC settling before starting internal or user sweep. Maximum 655 seconds. Default = 0. Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. Maximum 65 seconds. Default = 100 msec. Fast ADC Integration Mode Sets the integration mode for fast A/D converter to 0 = Manual, 1 = Short, 2 = Medium, 3 = Long. Default = 2. IC-CAP Reference 1 Supported Instruments Table 1 IC-CAP Reference HP 4071A Options (continued) Option Description Fast ADC Integration Value Sets the integration time in Power Line Cycles (PLC) or number of samples to average for integration. Allowed values depend on setting for Fast ADC Integration Mode: If Integration Mode = 0 or 1, samples = 0, 1 to 4096. Default = 1. If Integration Mode = 2, values are ignored, time is fixed to 1 PLC. If Integration Mode = 3, time = 0, 1 to 100 PLC. Default = 16. If 0 is entered as the value, the default value is used. Use Smart Fast ADC Integ Mode Yes/No, default = No. Specifying Yes will use Smart mode integration for fast A/D converter for current measurements. Fast ADC Integ Mode and Fast ADC Integ Value will still be used for voltage measurements. Smart Fast ADC Integ Value Sets the integration time in Power Line Cycles (PLC) for integration on current measurements when Use Smart Fast ADC Integ Mode is Yes. Values can be 0, or 1 to 100 PLC. If 0 is entered as the value, the default of 16 PLC will be used. Slow ADC Integration Mode Sets the integration mode for high-resolution (slow) A/D converter to 0 = Manual, 1 = Short, 2 = Medium, 3 = Long. Default = 2. Slow ADC Integration Value Sets the integration time in Power Line Cycles (PLC) or number of samples to average for integration. Allowed values depend on setting for Slow ADC Integration Mode: If Integration Mode = 0, time = 0, 80E-6 to 20E-3 seconds, or 1 to 100 PLC. Default = 240E-6 If Integration Mode = 1, time = 0, 80E-6 to 20E-3 seconds. Default = 480E-6. If Integration Mode = 2, values are ignored, time is fixed to 1 PLC. If Integration Mode = 3, time = 0, 1 to 100 PLC. Default = 16. If 0 is entered as the value, the default value is used. Slow ADC Auto Zero On Sets SMU auto zero function to 0 = Off or 1= On. When turned on, the offset error is canceled at each measurement. Default = last valid value. 29 1 Supported Instruments Table 1 30 HP 4071A Options (continued) Option Description Use Smart Slow ADC Integ Mode Yes/No, default = No. Specifying Yes will use Smart mode integration for high-resolution (slow) A/D converter for current measurements. Slow ADC Integ Mode and Slow ADC Integ Value will still be used for voltage measurements. Smart Fast ADC Integ Value Sets the integration time in Power Line Cycles (PLC) for integration on current measurements when Use Smart Slow ADC Integ Mode is Yes. Values can be 0, or 1 to 100 PLC. If 0 is entered as the value, the default of 16 PLC will be used. Ground Open Guard Terminals Connects guard terminals of unused measurement pins to circuit common. 0 = Disconnects terminals, any other value connects them. Default = 0. Pins Sets the PORT that is connected to the test head pins. Guard Pins Sets the pins to use for guard terminal. Available only for SMU1 and 2. Fast/Slow ADC Selects ADC. F = high speed (fast), S = high resolution (slow). Port Filter On Sets the SMU output filter mode, 0 = Off, 1 = On. Higher speed measurement is used when filter is off. Overshoot voltage or current is reduced when filter is on. Default = 0. V Range (0.0 = Auto) Sets the SMU voltage range. For MPSMU, allowed range is -100 to 100, with recommended range of 0, 2, 20, 40, 100. For HPSMU, allowed range is -200 to 200, with recommended range of 0, 2, 20, 40, 100, 200. Default = 0 (auto range). I Range (0.0 = Auto) Sets the SMU current range. For MPSMU, allowed range is -0.1 to 0.1, with recommended range of 0, 1E-9, 1E-8, 1E-7, 1E-6, 1E-5, 1E-4, 1E-3, 1E-2, 1E-1. For HPSMU, allowed range is -1 to 1, with recommended range of 0, 1E-9, 1E-8, 1E-7, 1E-6, 1E-5, 1E-4, 1E-3, 1E-2, 1E-1, 1. Default = 0 (auto range). IC-CAP Reference Supported Instruments Table 1 IC-CAP Reference 1 HP 4071A Options (continued) Option Description Power Compliance Sets SMU power compliance in Watts. Allowed range for MPSMU is 0, 0.001 to 2. Allowed range for HPSMU is 0, 0.001 to 14. Pulse Mode On Sets pulse mode. NO = off, YES = on. Pulse Base Sets level of waveform’s base for pulsed spot measurements. For MPSMU, allowed range is -0.1 to 0.1. For HPSMU, allowed range is -1 to 1. See Figure 1 for pulse waveform characteristics. Pulse Width Sets width of pulse for pulsed spot measurements. Allowed range is 0.0005 to 2.0000 seconds. Default = 0.005. See Figure 1 for pulse waveform characteristics. Pulse Period Sets period of pulse for pulsed spot measurements. Allowed range is 0, 0.0050 to 5.0000 seconds. Default = 0.2. See Figure 1 for pulse waveform characteristics. Perform Cal? TRUE = IC-CAP invokes calibration routine if a calibration is needed. FALSE = IC-CAP does not invoke calibration routine if a calibration is needed. Cal Type Sets the type of calibration routine to perform. Values are OPEN, SHORT, BOTH. BOTH invokes the OPEN and SHORT calibration routines. High Pin High voltage pin connection. Low Pin Low voltage pin connection. Guard Pins Guard pin connection. Integ Time Sets the CMU measurement’s integration time. Allowed values are 1 = Short, 2 = Medium, 3 = Long. Hold Time Sets the sweep hold time for C-G-V measurement by the CMU. Allowed range is 0 to 650.000 seconds. Default = 0. Delay Time Sets the sweep delay time for C-G-V measurement by the CMU. Allowed range is 0 to 650.000 seconds. Default = 0. Freq Sets the CMU measurement frequency. Allowed values are 1E+3, 1E+4, 1E+5, 1E+6 Hz. 31 1 Supported Instruments Table 1 HP 4071A Options (continued) Option Description Signal Level Sets the CMU measurement’s test signal level. Allowed range is 0 to 2.0 volts (standard), and 0 to 20.0 volts (option 001). Default = last valid setting, or 0.03. High Pins High voltage pin connection. Low Pins Low voltage pin connection. Auto Zero On Sets auto zero mode for DVM. 0 = disable, 1 = enable. Default = last valid setting. Integ Time Sets integration time for DVM. Allowed range is 0, 0.5E-6 to 999999.9E-6 seconds; 1 to 10 PLC and 10 to 100 PLC. If set to 0, integration time is set to default value. Default = 0.5E-6. The following figure is a diagram of the pulse waveform used in pulsed spot measurements showing Pulse Base, Pulse Width, and Pulse Period. Figure 1 32 Pulse Base, Width, and Period in Pulsed Spot Measurements IC-CAP Reference 1 Supported Instruments HP 4140 pA Meter/DC Voltage Source The HP 4140 is equipped with 2 DC voltage source units and 1 low current measurement unit. The units take measurements in either the internal system or user sweep mode. IC-CAP assigns the following names to the units: VA DC Voltage Source Unit. VA supports internal linear sweeps using step or ramp sweep mode. This unit can also be used in user sweep mode. VB DC Voltage Source Unit. VB only sources a constant voltage. If VB is assigned to the main sweep, user sweep mode is required. LCU pA Current Monitor Unit. The HP 4140 driver is an example of a driver created using the Open Measurement Interface. The driver’s source code can be found in the files user_meas2.h and user_meas2.C in the directory $ICCAP_ROOT/src. For information, refer to Chapter 2, “Drivers.” To recognize which data delimiter (CR/LF or Comma) is used, IC-CAP performs a spot I measurement only when an HP 4140 is first accessed (when the Measure command is issued). When the data delimiter is changed, choose Rebuild in the Hardware Setup window so that IC-CAP will note the change. With a ramp sweep, measured current I can be translated into quasi-static C by the following equation. Use a transform to perform this calculation. I C = --------------------------- [ Farads ] RampRate The following table describes the HP 4140 options and their default values, where applicable. IC-CAP Reference 33 1 Supported Instruments Table 2 34 HP 4140 Options Option Description Use User Sweep Yes = use user sweep. No = use the instrument’s internal sweep. Default = No Hold Time Time the instrument waits before starting an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. The range is 0.1 to 1999 seconds in 100 msec steps. Default = 0.1 Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. The range is 0.01 to 100 seconds in 10 msec steps. Default = 0.01 seconds Integ Time Instrument integration time: S (short), M (medium), or L (long). Default = L Range Specifies the measurement range. 0 is auto range; 1 is range hold; 2 to 12 denotes a current range of 1E-2 to1 E-12. For a faster ramp rate, use a fixed range. Default = 0 Use Ramp Sweep Yes = use ramp sweep. No = use step sweep. With a ramp sweep, both start and stop values are expanded by 1 point to have the same number of measurement points with a step sweep. Default = No Ramp Rate The dV/dt value of a ramp sweep. Minimum is 0.001V/s; maximum is 1V/s. Default = 0.5 Init Command This command field is used to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none IC-CAP Reference Supported Instruments 1 HP 4141 DC Source/Monitor The HP 4141 is equipped with 4 stimulus/measurement units (SMU), 2 programmable voltage source units (VS), 2 voltage monitor units (VM) and 1 non-programmable ground unit. Use a 16059A Adaptor when measuring a device with a 16058A Test Fixture. IC-CAP assigns the following names to the units: SMUn Stimulus/Measurement Unit n (1, 2, 3, 4) VSn Voltage Source Unit n (1, 2) VMn Voltage Monitor Unit n (1, 2) The following table describes the HP 4141 options and their default values, where applicable. Table 3 IC-CAP Reference HP 4141 Options Option Description Use User Sweep Yes = use user sweep. No = use the instrument’s internal sweep. Default = No Hold Time Time the instrument waits before starting internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Range is 0 to 650 seconds in 10 msec steps. Default = 0 Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Range is 0 to 6.5 seconds in 1 msec steps. Default = 0 Integ Time Instrument integration time; set to S (short), M (medium), or L (long). Default = S 35 1 Supported Instruments Table 3 HP 4141 Options (continued) Option Description Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none HP/Agilent 4142 Modular DC Source/Monitor The 4142 contains 8 configurable plug-in slots for: • High-power stimulus/measurement units (HPSMU) • Medium-power stimulus/measurement units (MPSMU) • High current unit (HCU), high voltage unit (HVU) • Voltage source units (VS) • Voltage monitor units (VM) • Analog Feedback units (AFU—not supported by IC-CAP) The 4142 ground unit (GND) provides a means for connecting device terminals to a ground reference and can sink current up to 1.6A. This ground unit cannot be programmed or monitored. Unit names are dependent on the slot they occupy. An SMU (except MPSMU) uses 2 slots in the mainframe; the value of slot number n is the higher of the 2 slots. IC-CAP assigns the following names to the units: 36 MPSMUn Medium Powered Stimulus/Measurement Unit in slot n HPSMUn High Powered Stimulus/Measurement Unit in slot n HCUn High Current Stimulus/Measurement Unit in slot n HVUn High Voltage Stimulus/Measurement Unit in slot n VSmn Voltage Source Unit m (1 or 2) in slot n VMmn Voltage Monitor Unit m (1 or 2) in slot n IC-CAP Reference 1 Supported Instruments The 4142 has a total maximum power consumption of 32W for HPSMU, MPSMU, HCU, HVU and VS/VM. If a measurement is performed and the 32W limit is exceeded, the measurement will not be attempted and IC-CAP will issue an error message. Power consumed by the VS/VM unit (HP/Agilent 41424A) is 2.2W at the 20V range and 0.88W at the 40V range. When using SMUs to source either voltage or current, refer to the Agilent 4142 Operation Manual for the actual SMU power calculations. NO TE To save power, IC-CAP disconnects output switches of unused HCUs and HVUs when they are not used with the current Setup. In the user and the internal system mode, voltage and current pulsed measurements are supported. Quasi-pulsed spot measurement is not supported by IC-CAP. For information on how to set up a pulsed measurement, refer to the Pulse entries in Table 5. HCU and 2-channel pulsed measurements are supported with ROM version 3.0 and later; HVU is supported with version 4.0 and later; Module Selector requires version 4.1. SMU Current-forced SMUs of the same type can be connected in parallel to increase the output current. Use SYNC sweep if you want double current at each sweep point. System Sweep can be used for 2 HPSMUs; however, User Sweep must be used for 2 HCUs. To avoid a warning message, set the system variable PARALLEL_INPUT_UNITS_OK to True. HCU An HCU can force up to 10A with 10V in the pulse mode only. Its pulse base is fixed to zero and it cannot force a constant value. Both 1- and 2-channel measurements are supported with an HCU. IC-CAP Reference 37 1 Supported Instruments 1-Channel Pulse Because an HCU can force only a pulse, an HCU can be used without placing its name in the pulse unit field in the Instrument Options folder. This is called an implicit pulse channel and its pulse width and period are taken from the Instrument Options folder. The pulse base is always set to zero for an implicit pulse channel (HCU). The pulse width and pulse period of an HCU have a different specification from other units. The pulse width must be 0.1 to 1 msec; the pulse period must be 10 to 500 msec; the pulse duty must be 10 percent or less when its output or compliance current is 1A or less, and must be 1 percent or less when its current is more than 1A. If an HCU is specified as the pulse unit explicitly in the Instrument Options folder, this is called an explicit pulse channel and the pulse base in the Instrument Options folder must be set to zero. 2-Channel Pulse When 2 pulsed channels are used, the primary channel must be an HCU; the secondary channel can be an HCU, SMU, or VS—it cannot be an HVU. For information on the 2-channel configuration, refer to the following table. Table 4 2-Channel Options Channel Primary Secondary Pulse Unit HCU only HCU/SMU/VS Pulse Width 0.1 to 0.8 msec; approximately 1 msec from Instrument Options folder Pulse Period from Instrument Options folder from Instrument Options folder Pulse Base 0 only from Instrument Options folder Declared implicit from Instrument Options folder HVU An HVU can force up to 1000V with 10 mA in either the constant or the pulsed mode. This unit has the same specification about the pulse width, pulse period, and pulse duty as other SMUs. 38 IC-CAP Reference 1 Supported Instruments An HVU is a unipolar source that requires the output polarity be set before you set its output value. An internal sweep from the minus-to-plus or from the plus-to-minus region is impossible; set the Use User Sweep option to Yes, if such a sweep range is necessary. To perform the self test and calibration, the INTLK switch must be closed for an HVU. At the start and end of each measurement, IC-CAP instructs all used units to force zero for safety reasons. The shock hazard lamp of the HP/Agilent 16088B test fixture remains on after each measurement because the output switch of the used HVU has been closed to force zero. VM A differential voltage measurement of a VM unit is supported by supplying a command string to the Init Command field in the Instrument Options folder. If a VM unit is in slot 8, add the command string “VM 8,2;” to the Init Command field. This sets the VM unit at slot 8 to a differential mode where it measures the differential voltage of VM18 versus VM28. Then add an output for VM18 (not VM28) to the Setup. When simulating this differential mode VM, VM18 should correspond to the + Node to have the same polarity between measurement and simulation. The following table describes the HP/Agilent 4142 options and their default values, where applicable. IC-CAP Reference Table 5 HP/Agilent 4l42 Options Option Description Use User Sweep Yes = use user mode sweep. No = use system mode, when all required conditions are met. Default = No Hold Time Time to allow for DC settling before starting internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum 655 seconds. Default = 0 39 1 Supported Instruments Table 5 40 HP/Agilent 4l42 Options (continued) Option Description Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum 65 seconds. Default = 100 msec Integ Time Instrument’s integration time; can be set to S (short), M (medium), or L (long). Default = S Range Specifies the measurement range. 0 specifies auto range. Applies to all SMUs in this 4142. Refer to the Agilent 4142 Operation Manual for definitions of other ranges. Default = 0 SMU Filters ON Yes = filters ON. No = filters OFF. Applies to all SMUs in this 4142. A pulsed unit is automatically set to filter off. Default = Yes Pulse Unit Enter name of a pulsed unit when taking pulsed measurements. Pulse Base Enter value of pulse base. Pulse Width Enter value of pulse width. Pulse Period Enter value of pulse period. Module Control Enter SMU, HCU, or HVU for module selection with option 300. For user relays, enter an exact argument for the ERC command (for example, 2,1,0). When blank, no unit is connected by the module selector. Refer to the 4142 GPIB Command Reference Manual for the ERC command. Init Command Command field used to set the instrument to a mode not supported by the option table. Command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Power Compliance † Specify power compliance in Watts with 1mW resolution. Specifying 0 (zero) disables power compliance mode (default). IC-CAP Reference 1 Supported Instruments Table 5 Option HP/Agilent 4l42 Options (continued) Description † Supported for internal sweep mode only (USE USER SWEEP = NO) and DC only measurement setups. This option applies to SMUs only. The allowable range of power compliance depends on the sweep source (SMU type) and is not monitored by IC-CAP. Refer to instrument's documentation for more details. IC-CAP requires rectangular datasets, thus when a power compliance is specified, the instrument concludes the measurement at the power compliance limit, but IC-CAP fills the datasets with the last point measured below power compliance. HP 4145 Semiconductor Parameter Analyzer The HP 4145 is equipped with the following units: • Four programmable stimulus/measurement units (SMU) • Two programmable voltage source units (VS) • Two voltage monitor units (VM) Time-domain measurement is not supported by IC-CAP. NO TE A user-defined function may cause an error E07 in the HP 4145 when the function refers to non-existing source names. Clear any user-defined functions in the HP 4145 before making a measurement with IC-CAP. IC-CAP assigns the following names to the units: SMUn Stimulus/Measurement Unit n (1, 2, 3, 4) VSn Voltage Source Unit n (1, 2) VMn Voltage Monitor Unit n (1, 2) To recognize which data delimiter (CR/LF or Comma) is used, IC-CAP performs a 2-point VM measurement only when an HP 4145 is first accessed (when the Measure command is IC-CAP Reference 41 1 Supported Instruments issued). When the data delimiter is changed, choose Rebuild in the Hardware Setup window so that IC-CAP will note the change. NO TE The HP 4145 performs an internal logarithmic sweep only if the number of points per decade is 10, 25 or 50; otherwise IC-CAP will force the measurement into User Sweep. If a Setup contains only a single Input with a sweep order of 1, IC-CAP will force the measurement into User Sweep. HP 4145 requires its test fixture lid be closed in User Sweep mode for safety reasons, even though output is low. A Shorting Connector (P/N 04145-61623) can be used to bypass this lid closure check. NO TE The HP 4145 offers the internal secondary sweep capability known as VAR2. However, the internal SYNC sweep always depends on the primary sweep source VAR1. When a secondary SYNC sweep is desired, use User Sweep. NO TE Always fill the Node Name field of each Input in a Setup because the HP 4145 needs a channel name generated from a Node Name. The channel names must be unique within a Setup for the HP 4145 internal sweep mode. The following table describes the HP 4145 options and their default values, where applicable. Table 6 42 HP 4145 Options Option Description Use User Sweep Yes = use user sweep. No = use the instrument’s internal sweep. Default = No IC-CAP Reference Supported Instruments Table 6 IC-CAP Reference 1 HP 4145 Options Option Description Hold Time Time the instrument waits before starting an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Range is 0 to 650 sec in 10 msec steps. Default = 0 Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. The range is 0 to 6.5 sec in 1 msec steps. Default = 0 Integ Time Instrument integration time; set to S (short), M (medium), or L (long). Default = S Init Command This command field is used to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none 43 1 Supported Instruments HP/Agilent 4155 Semiconductor Parameter Analyzer The HP/Agilent 4155 is equipped with the following units: • Four programmable medium power stimulus/measurement units (MPSMU) • Two programmable voltage source units (VS) • Two voltage monitor units (VM) IC-CAP assigns the following names to the units: MPSMUn Medium Power Stimulus/Measurement Unit n (1, 2, 3, 4) VSUx Voltage Source Unit n (1, 2) VMUx Voltage Monitor Unit n (1, 2) The HP 41501A is an optional SMU and pulse generator expander box that can be attached to and controlled by the 4155. The HP 41501A can be equipped with a high power stimulus/measurement unit (HPSMU), medium power stimulus/measurement units (MPSMU), and pulse generator units (PGU) (IC-CAP does not support PGUs). The availability and combination of these units depends on the expander box option. NO TE When making pulsed mode measurements, if you specify an SMU as the unit for an Output, and there is no corresponding SMU unit for an Input, compliance errors will result. The same problem occurs if you specify Voltage Monitor units. To prevent this from happening, you should define a compliance value for Output-only SMUs and a measurement range for Voltage Monitor units (VMs) through system variables, as follows, using the unit name: HRSMUx_COMP HPSMUx_COMP MPSMUx_COMP where x = 1, 2, 3, 4, 5, 6 VMU1_RANGE_VALUE VMU2_RANGE_VALUE IC-CAP assigns the following names to the units of the optional HP 41501A: 44 IC-CAP Reference 1 Supported Instruments • MPSMUn 6) Medium Power Stimulus/Measurement Unit n (5, • HPSMU5 High Power Stimulus/Measurement Unit A ground unit (GNDU) provides a means for connecting device terminals to a ground reference and can sink up to 1.6A. The ground unit is supported by IC-CAP but will not appear in the Hardware Editor Configuration dialog box. For information on how to use the ground unit, refer to the section “Adding a Ground Unit" in the User’s Guide. In both the user and internal sweep mode, voltage and current pulsed measurements are supported. Only the SMUs can be specified as pulse units because the PGUs are not currently supported. For information on how to set up a pulsed measurement, refer to the Pulse options in Table 7. NO TE The HP/Agilent 4155 offers the internal secondary sweep capability known as VAR2. However, the internal SYNC sweep always depends on the primary sweep source VAR1. When a secondary SYNC sweep is desired, use User Sweep. NO TE To execute a user sweep measurement, IC-CAP sets the HP/Agilent 4155 to the Sampling mode with the number of samples equal to 1. The front panel screen activity is turned off at the start of the measurement and is turned back on after the measurement is completed. Although the 4155 performs an internal logarithmic sweep if the number of points per decade is 10, 25 or 50, IC-CAP will force the measurement into the User Sweep for all specified logarithmic sweeps. If a Setup specification contains a single Input with a sweep order of 1, IC-CAP will force the measurement into User Sweep. The following table describes the 4155 options and their default values, where applicable. IC-CAP Reference 45 1 Supported Instruments Table 7 46 HP/Agilent 4155 (and HP/Agilent 4156) Option Option Description Use User Sweep Yes = use user mode sweep. No = use system mode, when required conditions are met. Default = No Hold Time Time delay before starting an internal or user sweep to allow for DC settling. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum is 655 seconds. Default = 0 Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. This value is not used for pulsed sweeps. Maximum is 65 seconds. Default = 0 Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Integ Time Instrument integration time; set to S (short), M (medium), or L (long). Default = S Pulse Unit Enter the name of a pulsed unit when taking pulsed measurements. Pulse Base Enter the value of the pulse base. Pulse Width Enter the value of the pulse width. Pulse Period Enter the value of the pulse period. Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Power Compliance † Specify power compliance in Watts with 1mW resolution. Specifying 0 (zero) disables power compliance mode (default). IC-CAP Reference 1 Supported Instruments Table 7 Option HP/Agilent 4155 (and HP/Agilent 4156) Option (continued) Description Notes: † Supported for internal sweep mode only (USE USER SWEEP = NO) and DC only measurement setups. This option applies to SMUs only. The allowable range of power compliance depends on the sweep source (SMU type) and is not monitored by IC-CAP. Refer to instrument's documentation for more details. IC-CAP requires rectangular datasets, thus when a power compliance is specified, the instrument concludes the measurement at the power compliance limit, but IC-CAP fills the datasets with the last point measured below power compliance. HP/Agilent 4156 Precision Semiconductor Parameter Analyzer The HP/Agilent 4156 is equipped with the following units: • Four programmable high-resolution stimulus/measurement units (HRSMU) • Two programmable voltage source units (VS) • Two voltage monitor units (VM) This instrument is designed for Kelvin connections and is capable of low- resistance and low-current measurements. IC-CAP assigns the following names to the units: HRSMUn High Resolution Stimulus/Measurement Unit n (1, 2, 3, 4) VSUx Voltage Source Unit n (1, 2) VMUx Voltage Monitor Unit n (1, 2) The HP 41501A is an optional SMU and pulse generator expander box that can be attached to and controlled by the 4156. The HP 41501A can be equipped with the following units: • High-power stimulus/measurement unit (HPSMU) • Medium power stimulus/measurement units (MPSMU) • Pulse generator units (PGU—not supported by IC-CAP) IC-CAP Reference 47 1 Supported Instruments IC-CAP assigns the following names to the units of the optional HP 41501A: MPSMUn Medium Power Stimulus/Measurement Unit n (5, 6) HPSMU5 High Power Stimulus/Measurement Unit A ground unit (GNDU) provides a means for connecting device terminals to a ground reference and can sink up to 1.6A. The ground unit is supported by IC-CAP but will not appear in the Hardware Editor Configuration dialog box. For information on how to use the ground unit, refer to the section “Adding a Ground Unit" in the User’s Guide. In both the user and internal sweep mode, voltage and current pulsed measurements are supported. Only the SMUs can be specified as pulse units because PGUs are not currently supported. For information on how to set up a pulsed measurement, refer to the Pulse options in Table 7. 48 NO TE The HP/Agilent 4156 offers the internal secondary sweep capability known as VAR2. However, the internal SYNC sweep always depends on the primary sweep source VAR1. When a secondary SYNC sweep is desired, use User Sweep. NO TE To execute a user sweep measurement, IC-CAP sets the HP/Agilent 4156 to the Sampling mode with the number of samples equal to 1. The front panel screen activity is turned off at the start of the measurement and is turned back on after the measurement is completed. NO TE Although the HP/Agilent 4156 performs an internal logarithmic sweep if the number of points per decade is 10, 25 or 50, IC-CAP will force the measurement into the user sweep for all specified logarithmic sweeps. If a Setup specification contains a single Input with a sweep order of 1, IC-CAP forces the measurement into user sweep. IC-CAP Reference 1 Supported Instruments Options for the HP 4156 are the same as for the HP 4155; refer to Table 7. Agilent E5260 Series Parametric Measurement Solutions Agilent E5260 Series High Speed Measurement Solutions are built around the following: • E5260A 8-slot parametric measurement mainframe • E5262A/3A 2-channel source/monitor units Available Source/Monitor Units (SMUs): • E5290A High Power source/monitor unit (HPSMU) • E5291A Medium Power source/monitor unit (MPSMU) The E5260A 8-slot parametric measurement mainframe holds up to 8 single-slot modules, such as a medium power source/monitor unit (MPSMU), or up to 4 dual-slot modules, such as a high power source/monitor unit (HPSMU). The E5262A 2-channel source/monitor unit contains 2 medium power source/monitor units (SMUs). The E5263A 2-channel source/monitor unit contains 1 high power and 1 medium power SMU. If you install 4 HPSMUs into the E5260A mainframe, you can output 1 Amp of current from each of these units simultaneously. The E5260A/B mainframe's ground unit (GNDU) provides a means for connecting device terminals to a ground reference. The GNDU will sink 4 amps of current without having to worry about any resistive ground rise issues. This ground unit cannot be programmed or monitored. Unit names are dependent on the slot they occupy. A high power SMU occupies 2 slots in the mainframe, a medium or a high resolution SMU occupies 1 slot; the value of slot number n is the higher of the 2 slots. IC-CAP assigns the following names to the units: MPSMUn IC-CAP Reference Medium Powered Stimulus/Measurement Unit in slot n 49 1 Supported Instruments HPSMUn High Powered Stimulus/Measurement Unit in slot n The E5260A 8-slot parametric measurement mainframe has a total maximum power consumption of 80W for all plug-in modules. The total maximum power consumption limits for the E5262A and E5263A are 8W and 24W respectively. If a measurement is performed and the power limitation is exceeded, the measurement will not be attempted and IC-CAP will issue an error message. HPSMU The high power source monitor units will provide up to 50 milliamps of current at ±200 volts and 1 amp of current at ±40 volts. Up to 4 HPSMUs can be used at one time in the E5260A mainframe. See manual for complete measurement and force ranges specifications such as resolution and measurement accuracy. MPSMU The medium power source monitor units will provide up to 20 milliamps of current at ±200 volts and 200 milliamps of current at ±20 volts. Up to 8 MPSMUs can be used at one time in the E5260A. See manual for complete measurement and force ranges specifications such as resolution and measurement accuracy. Instrument Options The following table describes the Agilent E5260A options and their default values, where applicable. Table 8 50 Agilent E5260A Options Option Description Use User Sweep Yes = use user mode sweep. No = use internal sweep, when all required conditions are met. Default = No IC-CAP Reference Supported Instruments Table 8 IC-CAP Reference 1 Agilent E5260A Options (continued) Option Description Hold Time Time to allow for DC settling before starting internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum 655 seconds. Default = 0 Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum 65 seconds. Default = 100 msec Integ Time Instrument’s integration time; can be set to S (short), M (medium), or L (long). Default = S Power Compliance † Specify power compliance in Watts with 1mW resolution. Specifying 0 (zero) disables power compliance mode (default). SMU Filters ON Yes = filters ON, No = filters OFF. Applies to all SMUs in this E5260. Default = No Range Manager Mode Specify Range Manager mode: 1, 2, or 3. 1 = deactivate Range Manager (default) 2 = set Range Manager to mode 2 3 = set Range Manager to mode 3 The Range Manager command is used to avoid potential voltage spikes during current range switching when using autorange. See Instrument Programming Guide††† under RM command for details. Range Manager Setting Set the rate of the Range Manager command. Allowed values are between 11 and 100. This option is only active when Range Manager Mode is set to 2 or 3. Enable <SMU name> Range Manager Enables Range Manager at the setting values entered above for the named SMU. Default = No. 51 1 Supported Instruments Table 8 Agilent E5260A Options (continued) Option Description <SMU name> In/Out Range Specify force (Input Sweep) and Output measurement ranges. Default is autorange (0 or 0/0) for both Input and Output measurement ranges. When an SMU is used in an IC-CAP input definition to force voltage or current, a specific force range may be selected. The force resolution†† will depend on the selected range. When an SMU is used in an IC-CAP output definition to monitor voltage or current, a specific measurement range may be selected. The measurement resolution will depend on the selected range. Both fixed (negative range number) and limited auto (positive numbers) ranges are supported. Allowed ranges are SMU dependent and are forced by IC-CAP during initial measurement setup. See instrument manual††† for allowed values for each SMU. When instrument supports 2 values for setting the same range, IC-CAP only supports the smaller of the 2. For example, to select a 20 V range, the manual suggests using 12 or 200. Use the value 12, to select that range. Ranges must be in the format ForceRange/OutRange, e.g., 13/15 for a voltage SMU monitoring current means Force Voltage Range=13 (40 V, 2mV resolution), Output Current Measurement Range=15 (10 uA limited autorange). Pulse Unit Enter name of a pulsed unit when taking pulsed measurements. Pulse Base Enter value of pulse base. Pulse Width Enter value of pulse width. Pulse Period Enter value of pulse period. Disable Self-Cal Controls the status of the E5260A self-calibration routine during measurements. Yes = self-cal disabled. No= self-cal enabled. Default = No. Output I/O Port (ERC Command) Send the user string with the ERC command Output I/O Port (ERM Command) Send the user string with the ERM command Delay for timeouts Sets the delay before a measurement attempt times out. 52 IC-CAP Reference Supported Instruments Table 8 1 Agilent E5260A Options (continued) Option Description Init Command Command field used to set the instrument to a mode not supported by the option table. Command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none † Supported for internal sweep mode only (USE USER SWEEP = NO) and DC only measurement setups. The allowable range of power compliance depends on the sweep source (SMU type) and is not monitored by IC-CAP. Refer to instrument's documentation for more details. IC-CAP requires rectangular datasets, thus when a power compliance is specified, the instrument concludes the measurement at the power compliance limit, but IC-CAP fills the datasets with the last point measured below power compliance. †† Agilent E5260A, E5262A, E5263A Technical Overview—see Medium and High Power SMUs technical specifications. ††† Agilent E5260A series Programming Guide—Chapter 4 “Command Reference”—Section “Command Parameters” Agilent E5270 Series Parametric Measurement Solutions Agilent E5270 Series Parametric Measurement Solutions are built around the following: • E5270A 8-slot parametric measurement mainframe (obsolete) • E5270B 8-slot parametric measurement mainframe • E5272A/3A 2-channel source/monitor units (obsolete) Available Source/Monitor Units (SMUs): • E5280A High Power source/monitor unit (HPSMU) for E5270A only • E5280B High Power source/monitor unit (HPSMU) for E5270B only • E5281A Medium Power source/monitor unit (MPSMU) for E5270A only IC-CAP Reference 53 1 Supported Instruments • E5281B Medium Power source/monitor unit (MPSMU) for E5270B only • E5287A High Resolution source/monitor unit (HRSMU) for E5270B only The E5270A 8-slot parametric measurement mainframe holds up to 8 single-slot modules, such as a medium power source/monitor unit (MPSMU), or up to 4 dual-slot modules, such as a high power source/monitor unit (HPSMU). The E5270B 8-slot parametric measurement mainframe holds up to 8 single-slot modules, such as a medium power source/monitor unit (MPSMU, HRSMU), or up to 4 dual-slot modules, such as a high power source/monitor unit (HPSMU). The E5272A 2-channel source/monitor unit contains 2 medium power source/monitor units (SMUs). The E5273A 2-channel source/monitor unit contains 1 high power and 1 medium power SMU. If you install 4 HPSMUs into E5270A/B mainframes, you can output 1 Amp of current from each of these units simultaneously. The E5270A/B mainframe's ground unit (GNDU) provides a means for connecting device terminals to a ground reference. The GNDU will sink 4 amps of current without having to worry about any resistive ground rise issues. This ground unit cannot be programmed or monitored. Unit names are dependent on the slot they occupy. A high power SMU occupies 2 slots in the mainframe, a medium or a high resolution occupies 1 slot; the value of slot number n is the higher of the 2 slots. IC-CAP assigns the following names to the units: 54 MPSMUn Medium Powered Stimulus/Measurement Unit in slot n HPSMUn High Powered Stimulus/Measurement Unit in slot n HRSMUn High Resolution Source/Monitor Unit in slot n (E5270B only) IC-CAP Reference 1 Supported Instruments The E5270A and E5270B 8-slot parametric measurement mainframes have a total maximum power consumption of 80W for all plug-in modules. The total maximum power consumption limits for the E5272A and E5273A are 8W and 24W respectively. If a measurement is performed and the power limitation is exceeded, the measurement will not be attempted and IC-CAP will issue an error message. HPSMU The high power source monitor units will provide up to 50 milliamps of current at ±200 volts and 1 amp of current at ±40 volts. Up to 4 HPSMUs can be used at one time in the E5270A mainframe. Since SMUs characteristic may vary with version, see manual for complete measurement and force ranges specifications such as resolution and measurement accuracy. MPSMU The medium power source monitor units will provide up to 20 milliamps of current at ±100 volts and 100 milliamps of current at ±20 volts (200 mA for the E5281A). Up to 8 MPSMUs can be used at one time in the E5270A and E5270B mainframes. Since SMUs characteristic may vary with version, see manual for complete measurement and force ranges specifications such as resolution and measurement accuracy. HRSMU The medium power/high resolution source monitor units provide up to 20 milliamps of current at ±100 volts and 100 milliamps of current at ±20 volts. Up to 8 HRSMUs can be used at one time in the E5270B mainframe. In the lowest current range, 10 pA, HRSMU's current force resolution can be as low as 5 fA with a measurement resolution as low as 1 fA. Instrument Options The following table describes the Agilent E5270A/B options and their default values, where applicable. IC-CAP Reference 55 1 56 Supported Instruments Table 9 Agilent E5270A/B Options Option Description Use User Sweep Yes = use user mode sweep. No = use internal sweep, when all required conditions are met. Default = No Hold Time Time to allow for DC settling before starting internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum 655 seconds. Default = 0 Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum 65 seconds. Default = 100 msec Integ Time Instrument’s integration time; can be set to S (short), M (medium), or L (long). Default = S Power Compliance † Specify power compliance in Watts with 1mW resolution. Specifying 0 (zero) disables power compliance mode (default). SMU Filters ON Yes = filters ON, No = filters OFF. Applies to all SMUs in this E5270. Default = No Range Manager Mode Specify Range Manager mode: 1, 2, or 3. 1 = deactivate Range Manager (default) 2 = set Range Manager to mode 2 3 = set Range Manager to mode 3 The Range Manager command is used to avoid potential voltage spikes during current range switching when using autorange. See Instrument Programming Guide††† under RM command for details. Range Manager Setting Set the rate of the Range Manager command. Allowed values are between 11 and 100. This option is only active when Range Manager Mode is set to 2 or 3. <SMU name> A/D converter Sets A/D converter for higher resolution or higher speed. S = higher speed R = higher resolution (Default) IC-CAP Reference Supported Instruments Table 9 IC-CAP Reference 1 Agilent E5270A/B Options (continued) Option Description Enable <SMU name> Range Manager Enables Range Manager at the setting values entered above for the named SMU. Default = No. <SMU name> In/Out Range Specify force (Input Sweep) and Output measurement ranges. Default is autorange (0 or 0/0) for both Input and Output measurement ranges. When an SMU is used in an IC-CAP input definition to force voltage or current, a specific force range may be selected. The force resolution†† will depend on the selected range. When an SMU is used in an IC-CAP output definition to monitor voltage or current, a specific measurement range may be selected. The measurement resolution will depend on the selected range. Both fixed (negative range number) and limited auto (positive numbers) ranges are supported. Allowed ranges are SMU dependent and are forced by IC-CAP during initial measurement setup. See instrument manual††† for allowed values for each SMU. When instrument supports 2 values for setting the same range, IC-CAP only supports the smaller of the 2. For example, to select a 20 V range, the manual suggests using 12 or 200. Use the value 12, to select that range. Ranges must be in the format ForceRange/OutRange, e.g., 13/15 for a voltage SMU monitoring current means Force Voltage Range=13 (40 V, 2mV resolution), Output Current Measurement Range=15 (10 uA limited autorange). Pulse Unit Enter name of a pulsed unit when taking pulsed measurements. Pulse Base Enter value of pulse base. Pulse Width Enter value of pulse width. Pulse Period Enter value of pulse period. Disable Self-Cal Controls the status of the E5270A self-calibration routine during measurements. Yes = self-cal disabled. No= self-cal enabled. Default = No. Output I/O Port (ERC Command) Send the user string with the ERC command 57 1 Supported Instruments Table 9 Agilent E5270A/B Options (continued) Option Description Output I/O Port (ERM Command) Send the user string with the ERM command Delay for timeouts Sets the delay before a measurement attempt times out. Init Command Command field used to set the instrument to a mode not supported by the option table. Command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none † Supported for internal sweep mode only (USE USER SWEEP = NO) and DC only measurement setups. The allowable range of power compliance depends on the sweep source (SMU type) and is not monitored by IC-CAP. Refer to instrument's documentation for more details. IC-CAP requires rectangular datasets, thus when a power compliance is specified, the instrument concludes the measurement at the power compliance limit, but IC-CAP fills the datasets with the last point measured below power compliance. †† Agilent E5270A, E5272A, E5273A Technical Overview—see Medium and High Power SMUs technical specifications. ††† Agilent E5270A series Programming Guide—Chapter 4 “Command Reference”—Section “Command Parameters” 58 IC-CAP Reference Supported Instruments 1 Agilent B1500A Semiconductor Device Analyzer The Agilent B1500A Semiconductor Device Analyzer is a modular instrument with a ten-slot configuration that supports both IV and CV measurements. The B1500A driver supports the following plug-in modules: • B1510A High Power Source Monitor Unit Module (HPSMU) for B1500 • B1511A Medium Power Source Monitor Unit Module (MPSMU) for B1500 • B1517A High Resolution Source Monitor Unit Module (HRSMU) for B1500 The B1500A driver does NOT support the following plug-in modules: • B1520A Multi-Frequency Capacitance Measurement Unit Module for B1500 (combined DC-CV measurements not supported) • E5288A Auto Sense and Switch Unit for B1500 HPSMU The high power source monitor units will provide up to 1 amp of current at ±200 volts. Up to 4 HPSMUs can be used at one time in the B1500A. Since SMUs characteristic may vary with version, see manual for complete measurement and force ranges specifications such as resolution and measurement accuracy. MPSMU The medium power source monitor units will provide up to 100 milliamps of current at ±100 volts. Up to 10 MPSMUs can be used at one time in the B1500A. Since SMUs characteristic may vary with version, see manual for complete measurement and force ranges specifications such as resolution and measurement accuracy. IC-CAP Reference 59 1 Supported Instruments HRSMU The medium power/high resolution source monitor units provide up to 100 milliamps of current at ±100 volts. Up to 10 HRSMUs can be used at one time in the B1500A. Since SMUs characteristic may vary with version, see manual for complete measurement and force ranges specifications such as resolution and measurement accuracy. Instrument Options The following table describes the Agilent B1500A options and their default values, where applicable. Table 10 60 Agilent B1500A Options Option Description Use User Sweep Yes = use user mode sweep. No = use internal sweep, when all required conditions are met. Default = No Hold Time Time to allow for DC settling before starting internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum 655 seconds. Default = 0 Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instrument drivers running on the same test system. Maximum 65 seconds. Default = 100 msec Integ Time Instrument’s integration time; can be set to S (short), M (medium), or L (long). Default = S Power Compliance † Specify power compliance in Watts with 1mW resolution. Specifying 0 (zero) disables power compliance mode (default). SMU Filters ON Yes = filters ON, No = filters OFF. Applies to all SMUs in this E5270. Default = No IC-CAP Reference Supported Instruments Table 10 IC-CAP Reference 1 Agilent B1500A Options (continued) Option Description Range Manager Mode Specify Range Manager mode: 1, 2, or 3. 1 = deactivate Range Manager (default) 2 = set Range Manager to mode 2 3 = set Range Manager to mode 3 The Range Manager command is used to avoid potential voltage spikes during current range switching when using autorange. See Instrument Programming Guide††† under RM command for details. Range Manager Setting Set the rate of the Range Manager command. Allowed values are between 11 and 100. This option is only active when Range Manager Mode is set to 2 or 3. <SMU name> A/D converter Sets A/D converter for higher resolution or higher speed. S = higher speed R = higher resolution (Default) Enable <SMU name> Range Manager Enables Range Manager at the setting values entered above for the named SMU. Default = No. 61 1 Supported Instruments Table 10 Agilent B1500A Options (continued) Option Description <SMU name> In/Out Range Specify force (Input Sweep) and Output measurement ranges. Default is autorange (0 or 0/0) for both Input and Output measurement ranges. When an SMU is used in an IC-CAP input definition to force voltage or current, a specific force range may be selected. The force resolution†† will depend on the selected range. When an SMU is used in an IC-CAP output definition to monitor voltage or current, a specific measurement range may be selected. The measurement resolution will depend on the selected range. Both fixed (negative range number) and limited auto (positive numbers) ranges are supported. Allowed ranges are SMU dependent and are forced by IC-CAP during initial measurement setup. See instrument manual††† for allowed values for each SMU. When instrument supports 2 values for setting the same range, IC-CAP only supports the smaller of the 2. For example, to select a 20 V range, the manual suggests using 12 or 200. Use the value 12, to select that range. Ranges must be in the format ForceRange/OutRange, e.g., 13/15 for a voltage SMU monitoring current means Force Voltage Range=13 (40 V, 2mV resolution), Output Current Measurement Range=15 (10 uA limited autorange). Pulse Unit Enter name of a pulsed unit when taking pulsed measurements. Pulse Base Enter value of pulse base. Pulse Width Enter value of pulse width. Pulse Period Enter value of pulse period. Disable Self-Cal Controls the status of the E5270A self-calibration routine during measurements. Yes = self-cal disabled. No= self-cal enabled. Default = No. Output I/O Port (ERC Command) Send the user string with the ERC command Output I/O Port (ERM Command) Send the user string with the ERM command Delay for timeouts Sets the delay before a measurement attempt times out. 62 IC-CAP Reference 1 Supported Instruments Table 10 Agilent B1500A Options (continued) Option Description Init Command Command field used to set the instrument to a mode not supported by the option table. Command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none † Supported for internal sweep mode only (USE USER SWEEP = NO) and DC only measurement setups. The allowable range of power compliance depends on the sweep source (SMU type) and is not monitored by IC-CAP. Refer to instrument's documentation for more details. IC-CAP requires rectangular datasets, thus when a power compliance is specified, the instrument concludes the measurement at the power compliance limit, but IC-CAP fills the datasets with the last point measured below power compliance. †† Agilent B1500A Technical Overview—see Medium and High Power SMUs technical specifications. ††† Agilent B1500A series Programming Guide—Chapter 4 “Command Reference”—Section “Command Parameters” Configuring the B1500A for IC-CAP Remote Contol 1 Turn on the B1500. 2 Login into Windows but do not start the EasyExpert software. 3 Start the Agilent_Connection_Expert: Select Start > Programs > Agilent_IO_Library_Suites > Agilent_Connection_Expert. 4 Select GPIB0 > Change_Properties, then uncheck the following checkboxes: • System_Controller • Auto-Discover_Instruments_Connected_To_The_Interface Select OK and exit the dialog. 5 Reboot the B1500A when prompted. 6 Start the EasyExpert software: IC-CAP Reference 63 1 Supported Instruments Select Start > Start_EasyExpert. Do not press the B1500A Start button, but leave the B1500A Start button on the screen. NO TE Fully starting the EasyExpert application would prevent IC-CAP from controlling the B1500A. 7 Connect the B1500A instrument to the IC-CAP computer via GPIB interface. 8 From IC-CAP, rebuild the active instrument list: Select Tools > Hardware Setup > Rebuild. 9 After rebuild is completed, check that the B1500A is in the Active Instrument List. 10 Select the instrument and configure its SMU names according to the names used in your measurement setups. 64 IC-CAP Reference 1 Supported Instruments Capacitance-Voltage Meters Capacitance-voltage meters supported by IC-CAP are: • HP 4194 Impedance Analyzer • HP 4271 1 MHz Digital Capacitance Meter • HP 4275 Multi-Frequency LCR Meter • HP 4280 1 MHz Capacitance Meter • HP/Agilent 4284 Precision LCR Meter • HP/Agilent 4285 Precision LCR Meter • Agilent E4980A Precision LCR Meter • Agilent 4294A Precision Impedance Analyzer • Agilent E4991A RF Impedance/Material Analyzer For all capacitance-voltage meters, issue the Calibrate command before starting a measurement, otherwise calibration is carried out automatically at the start of the measurement. This option directly controls the instrument firmware, and overrides similar delay/hold options set in other instruments’ drivers running on the same test system. Defining the Reset State Using the prepare_CV_meter.mdl example model file, you can easily define the reset state for the following instruments: • HP/Agilent 4284 • HP/Agilent 4285 • Agilent E4980 The IC-CAP drivers reset instruments to known states prior to configuring them for the current measurement. For the 4284, 4285 and E4980, it sends the *RST command, which resets the instruments to a known factory state. However, this default state (1V, 1KHz signal) may cause damage to certain devices between the time the $RST is requested and the time the requested signal level is set. IC-CAP Reference 65 1 Supported Instruments To avoid this problem, you can set the variable LCR_RST_MEM or LCR_RST_MEM_<unit> (e.g., LCR_RST_MEM_CM). The 4284, 4285, and E4980A instruments will use the value of this variable to set the instrument state. For example, if set to 1, the driver will recall instrument state 1 instead of *RST. Using the prepare_CV_meter.mdl example model file, you can programatically set any state to be the *RST state with a zero signal level. It will also set the variable for you such that when a measurement is performed, this programatically set state is recalled instead of sending *RST. To prepare a memory location, open and Auto Execute model_files/misc/prepare_CV_meter.mdl, then enter the 3 values below and click OK. 1 Name the unit associated with your instrument. 2 Identify the memory location (0-9 recommended, but you can use any number from 0-19 that your instrument supports.) 3 Indicate if you want the unit number to apply to any 4284, 4284, or E4980A, or only to those with the specified unit name. This selection essentially chooses between setting LCR_RST_MEM or LCR_RST_MEM_<unit>. HP 4194 Impedance Analyzer The HP 4194 offers 2 measurement types: impedance analysis and gain-phase measurement. These occupy different test connectors on the test set. IC-CAP supports the impedance analysis type, offering capacitance-voltage and conductance-versus-voltage measurements. The frequency range is 100 Hz to 40 MHz; to extend this to 100 MHz use the impedance probe kit. An internal DC bias unit can deliver biases between −40V and +40V. An internal oscillator can deliver between 10 mV and 1V rms. The HP 4194 driver is an example of a driver created using the Open Measurement Interface. The driver source code can be found in the files user_meas.hxx and user_meas.cxx in the directory $ICCAP_ROOT/src. For information, refer to Chapter 2, “Drivers.” 66 IC-CAP Reference Supported Instruments 1 IC-CAP assigns the following name to the unit: CM Capacitance Meter Unit NO TE The short calibration of the HP 4194 driver is disabled by default because the CV measurement rarely needs this compensation. However, the SHORT_CAL4194 system variable may be defined and set to Yes to enable the short calibration. NO TE After a CV measurement is finished, you may notice that a DC bias light on the HP 4194 stays on. This indicates that a bias voltage is still being applied to the test setup. However, the IC-CAP driver sets the DC sweep mode’s bias voltage for the measurement so the DC bias is set to 0 V when the sweep starts and stops. There are 2 ways you can verify the bias voltage is set to zero. One way is to measure the test setup with a DMM. Another way is to enable IC-CAP’s Screen Debug (Tools > Options > Screen Debug) and see that the following commands are being sent to the CV meter: START=0.0;STOP=0.0;NOP=2;MANUAL=0.0;OSC=0.01 SWM3;TRGM2 TRIG The following table describes the HP 4194 options and their default values, where applicable. Table 11 IC-CAP Reference HP 4194 Options Option Description Use User Sweep Yes = use user sweep. No = use the instrument’s internal sweep. Default = No Hold Time Time the instrument waits before starting an internal or user sweep. Default = 0 67 1 Supported Instruments Table 11 HP 4194 Options (continued) Option Description Delay Time Time delay, in seconds, the instrument waits before taking a measurement at each step of an internal or user sweep. When biasing the device with an external DC source (e.g., an Agilent 4142B or 4156C), the DC source’s delay/hold options override this option. Default = 0 Meas Freq Oscillator frequency range 100 Hz to 40 MHz. The 41941A/B impedance probe kit extends this to 100 MHz. If the CV_FREQ system variable is defined, it must be set equal to this frequency, otherwise an error is reported. Default = 1 MHz Integ Time Instrument integration time: S (short), M (medium), or L (long). Default = S Osc Level Test signal level. Allowable voltage levels and resolutions are: Minimum = 10 mV; Maximum = 1V. Default = 10mV Averages Number of averages. Maximum = 256. Default = 1 Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none HP 4271 1 MHz Digital Capacitance Meter IC-CAP supports only external bias sources when performing measurements using the HP 4271. Both hardware and software calibrations are available. The instrument makes measurements in user sweep only. If the CV_FREQ system variable is defined, it must be set equal to 1 MHz before making a measurement with the HP 4271, otherwise an error is reported. 68 IC-CAP Reference Supported Instruments 1 IC-CAP assigns the following name to this unit: CM Capacitance Meter Unit The following table describes the HP 4271 options and their default values, where applicable. Table 12 HP 4271 Options Option Description Hold Time Time the instrument waits before starting an internal or user sweep. Default = 0 Delay Time Time, in seconds, the instrument waits before taking a measurement at each step of an internal or user sweep. When biasing the device with an external DC source (e.g., an Agilent 4142B or 4156C), the DC source’s delay/hold options override this option. Default = 0 Init Command This is a command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none HP 4275 Multi-Frequency LCR Meter The HP 4275 includes an optional internal DC bias source. IC-CAP checks for this internal bias source when you issue the Rebuild command in the Hardware Setup window. For the internal DC bias to be recognized, the DC BIAS selector switch must be set to Internal. Only hardware calibration is available and the instrument makes measurements in user sweep only. IC-CAP assigns the following name to this unit: CM Capacitance Meter Unit The test signal level on the HP 4275 can only be set manually with the OSC LEVEL dial and MULTIPLIER switches. This signal level must be set by the user to a reasonable value such as 10 mV to obtain accurate results, since a high signal level can IC-CAP Reference 69 1 Supported Instruments modulate the DC operating point. The MULTIPLIER is set to 1 when the instrument is powered up; a different setting must be selected manually. When using the internal DC bias, the bias unit is also included in the CM unit. Therefore, the unit name of this CM unit should also be entered in the Unit fields of both the voltage bias Input and the capacitance Output specifications of the Setup. The following table describes the HP 4275 options and their default values, where applicable. Table 13 HP 4275 Options Option Description Hold Time Time the instrument waits before starting an internal or user sweep. Range is 0 to 650 seconds in 10 msec steps. Default = 0 Delay Time Time the instrument waits before taking a measurement at each step of an internal or user sweep. Range is 3 msec to 650 sec. Resolution is in 1 msec steps for the 3 to 65 msec range; 10 msec for the 65.01 to 99.99 msec range; and, 100 msec for the 100 msec to 650 sec range. When biasing the device with an external DC source (e.g., an Agilent 4142B or 4156C), the DC source’s delay/hold options override this option. Default = 3 msec 70 Meas Freq Measurement Frequencies. When the instrument is not equipped with option 004, it accepts frequency measurements at 10K, 20K, 40K, 100K, 200K, 400K, 1M, 2M, 4M, and 10M. When equipped with option 004, it accepts measurements at 10K, 30K, 50K, 100K, 300K, 500K, 1M, 3M, 5M, and 10M. Enter valid frequencies only. If the CV_FREQ system variable is defined, it must be set equal to this frequency, otherwise an error is reported. Because the unit of CV_FREQ is Hz, divide it by 1K for this field. Default = 1 MHz High Res Enables or disables high resolution mode. Yes = enabled; No = disabled. Default = No IC-CAP Reference Supported Instruments Table 13 1 HP 4275 Options (continued) Option Description Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none HP 4280 1 MHz Capacitance Meter The HP 4280 measures the capacitance-voltage characteristics of semiconductor devices. The test signal of the instrument is a 1 MHz sine wave. The HP 4280 also contains a built-in DC bias source with an output capability of 0 to ±100V and a maximum setting resolution of 1 mV. Capacitance-voltage measurements can be taken using this internal voltage source or an external bias unit. The HP 4280 includes an internal calibration capability. Measurements can be made in either internal or user sweep. If the CV_FREQ system variable is defined, it must be set to 1 MHz before making a measurement with the HP 4280, otherwise an error is reported. IC-CAP assigns the following name to this unit: CM Capacitance Meter Unit When using the internal DC bias, this bias unit is also included in the CM unit. Therefore, the unit name of this CM unit should also be entered in the Unit fields of both the voltage bias Input and the capacitance Output specifications of the Setup. The following table describes the HP 4280 options and their default values, where applicable. Table 14 IC-CAP Reference HP 4280 Options Option Description Use User Sweep Yes = use user sweep. No = use the instrument’s internal sweep. Default = No 71 1 Supported Instruments Table 14 HP 4280 Options (continued) Option Description Hold Time Time the instrument waits before starting internal or user sweep. Range is 0 to 650 seconds in 10 msec steps. Default = 3 msec Delay Time Time delay before each measurement is taken when using internal sweep. Range is 3 msec to 650 seconds. Resolution is in 1 msec steps for the 3 to 65 msec range, 10 msec for the 65.01 to 99.99 msec range, and 100 msec for the 100 msec to 650 second range. When biasing the device with an external DC source (e.g., an Agilent 4142B or 4156C), the DC source’s delay/hold options override this option. Default = 3 msec 72 Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Meas Speed Measuring speed: S (slow), M (medium), or F (fast). Default =S Sig Level (10, 30) Signal level: 10 or 30 mV rms. Default = 10 High Res Enables or disables high resolution mode. Yes = enabled. No = disabled. Default = No Conn Mode Connection mode. When using the HP 4280 internal bias source, set to 10. When using an external bias source, connect the source to the EXT-SLOW connector on the HP 4280 rear panel and set the connection mode to 12. Default = 10 Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none IC-CAP Reference 1 Supported Instruments HP/Agilent 4284 Precision LCR Meter The HP/Agilent 4284 is a general purpose LCR meter with a frequency range of 20 Hz to 1 MHz. The instrument includes an internal calibration. Options 001 and 006 are supported by IC-CAP. Option 001 includes a built-in internal bias source. Standard cable lengths are 0 and 1 meter; option 006 supports 2 and 4 meter lengths as well. Measurements can be made in user sweep mode only. IC-CAP assigns the following name to this unit: CM Capacitance Meter Unit When using the internal DC bias, the bias unit is also included in the CM unit. Therefore, the unit name of this CM unit should also be entered in the Unit fields of both the voltage bias Input and the capacitance Output specifications of the Setup. CAU TI O N Prior to configuring the HP/Agilent 4284 for the current measurement, the IC-CAP driver resets the 4284 to a known state by sending the *RST command. The default reset state (1V, 1KHz signal) may cause damage to certain devices between the time the $RST is requested and the time the requested signal level is set. To avoid this problem, you can define the reset state. See “Defining the Reset State” on page 65. The following table describes the HP/Agilent 4284 options and their default values, where applicable. Table 15 IC-CAP Reference HP/Agilent 4284 Options Option Description Hold Time Time the instrument waits before starting an internal or user sweep. Range is 0 to 650 seconds in 10 msec steps. Default = 0 73 1 Supported Instruments Table 15 HP/Agilent 4284 Options (continued) Option Description Delay Time Time the instrument waits before each sweep point is measured. The range is 0 to 60 seconds. When biasing the device with an external DC source (e.g., an Agilent 4142B or 4156C), the DC source’s delay/hold options override this option. Default = 0 Meas Freq Measuring frequency. Only a set of frequencies are available. The range is 20 Hz to 1 MHz. If the CV_FREQ system variable is defined, it must be set equal to this frequency, otherwise an error is reported. Default = 1 MHz Integ Time Instrument integration time: S (short), M (medium), or L (long). Default = M Osc Level Test signal level in volts or amps. Allowable voltage levels and resolutions are: Minimum = 5 mV Maximum = 20V with opt 001, 2V otherwise Between 5 mV and 200 mV: resolution = 1 mV Between 200 mV and 2V: resolution = 10 mV Between 2V and 20V: resolution = 100 mV (Opt. 001 only) Allowable current levels and resolutions are: Minimum level = 50 µA rms Maximum level = 200 mA rms with opt 001, 20 mA otherwise Between 50 µA and 2 mA: resolution = 10 µA Between 2 mA and 20 mA: resolution = 100 µA Between 20 mA and 200 mA: resolution = 1 mA (Opt. 001 only) The Instrument Options folder accepts test signal levels outside these ranges. However, if a measurement is attempted, an error message is issued and the measurement is not performed. Default = 10m Osc Mode [V,I] 74 Specify V (voltage) or I (current). Automatic Level Control (ALC) is not supported. Default = V IC-CAP Reference Supported Instruments Table 15 1 HP/Agilent 4284 Options (continued) Option Description Averaging [1-256] The averaging rate of the instrument. Default = 1 Cable Length Cable length, in meters: 0, 1, 2, or 4. Default = 1M Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none HP/Agilent 4285 Precision LCR Meter The HP/Agilent 4285 is a general purpose LCR meter with a frequency range of 75 kHz to 30 MHz. The instrument includes an internal calibration. Option 001, which adds a built-in internal bias source, is supported by IC-CAP. Measurements can be made in user sweep only. IC-CAP assigns the following name to this unit: CM Capacitance Meter Unit When using the internal DC bias, the bias unit is also included in the CM unit. Therefore, the unit name of this CM unit should also be entered in the Unit fields of both the voltage bias Input and the capacitance Output specifications of the Setup. CAU TI O N IC-CAP Reference Prior to configuring the HP/Agilent 4285 for the current measurement, the IC-CAP driver resets the 4285 to a known state by sending the *RST command. The default reset state (1V, 1KHz signal) may cause damage to certain devices between the time the $RST is requested and the time the requested signal level is set. To avoid this problem, you can define the reset state. See “Defining the Reset State” on page 65. 75 1 Supported Instruments The following table describes the HP/Agilent 4285 options and their default values, where applicable. Table 16 HP/Agilent 4285 Options Option Description Hold Time Time the instrument waits before starting an internal or user sweep. Default = 0 Delay Time Time the instrument waits before each sweep point is measured. Range is 0 to 60 seconds in 1 msec steps. When biasing the device with an external DC source (e.g., an Agilent 4142B or 4156C), the DC source’s delay/hold options override this option. Default = 0 Meas Freq Measuring frequency. Range is 75 kHz to 30 MHz with 100 Hz resolution. If the CV_FREQ system variable is defined, it must be set equal to this frequency, otherwise an error is reported. Default = 1 MHz Integ Time Instrument integration time: S (short), M (medium), or L (long). Default = M Osc Level Test signal level in volts or amps. The allowable voltage levels and resolutions are: Minimum level = 5 mV rms Maximum level = 2V rms Between 5 mV and 200 mV: resolution = 1 mV Between 200 mV and 2V: resolution = 10 mV The allowable current levels and resolutions are: Minimum level = 200 µA rms Maximum level = 20 mA rms Between 200 µA and 2 mA: resolution = 20 µA Between 2 mA and 20 mA: resolution = 200 µA The Instrument Options folder accepts test signal levels outside these ranges. However, if a measurement is attempted, an error message is issued and the measurement is not performed. Default = 10m 76 IC-CAP Reference Supported Instruments Table 16 1 HP/Agilent 4285 Options (continued) Option Description Osc Mode [V,I] Specify V (voltage) or I (current). Automatic Level Control (ALC) is not supported. Default = V Averaging [1-256] The averaging rate of the instrument. Default = 1 Cable Length Cable length, in meters: 0, 1, or 2. Default = 1 Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Agilent E4980A Precision LCR Meter The Agilent E4980A is a general-purpose LCR meter. The Agilent E4980A is used for evaluating LCR components, materials, and semiconductor devices over a wide range of frequencies (20 Hz to 20 MHz) and test signal levels (0.1 mVrms to 2 Vrms, 50 µA to 20 mArms). With Option 001, the E4980A’s test signal level range spans 0.1 mV to 20 Vrms, and 50 µA to 200 mArms. Also, the E4980A with Option 001 enables up to ±40 Vrms DC bias measurements (without Option 001, up to ±2 Vrms), DCR measurements, and DC source measurements using the internal voltage source. IC-CAP assigns the following name to this unit: CM Capacitance Meter Unit When using the internal DC bias, the bias unit is also included in the CM unit. Therefore, the unit name of this CM unit should also be entered in the Unit fields of both the voltage bias Input and the capacitance Output specifications of the Setup. IC-CAP Reference 77 1 Supported Instruments CAU TI O N Prior to configuring the Agilent E4980A for the current measurement, the IC-CAP driver resets the E4980 to a known state by sending the *RST command. The default reset state (1V, 1KHz signal) may cause damage to certain devices between the time the $RST is requested and the time the requested signal level is set. To avoid this problem, you can define the reset state. See “Defining the Reset State” on page 65. The following table describes the Agilent E4980A options and their default values, where applicable. Table 17 Agilent E4980A Options Option Description Hold Time Time the instrument waits before starting an internal or user sweep. Range is 0 to 650 seconds in 10 msec steps. Default = 0 Delay Time Time the instrument waits before each sweep point is measured. The range is 0 to 60 seconds. When biasing the device with an external DC source (e.g., an Agilent 4142B or 4156C), the DC source’s delay/hold options override this option. Default = 0 78 Meas Freq Measuring frequency. Only a set of frequencies are available. The range is 20 Hz to 1 MHz. If the CV_FREQ system variable is defined, it must be set equal to this frequency, otherwise an error is reported. Default = 1 MHz Integ Time Instrument integration time: S (short), M (medium), or L (long). Default = M IC-CAP Reference 1 Supported Instruments Table 17 Agilent E4980A Options (continued) Option Description Osc Level Test signal level in volts or amps. Allowable voltage levels and resolutions are: Minimum = 0 mVrms Maximum = 20 Vrms with opt 001, 2Vrms otherwise Between 0 mVrms and 200 mVrms: resolution = 100 µVrms Between 200 mVrms and 500 mVrms: resolution = 200 µVrms Between 500mVrms and 1Vrms: resolution = 500 µVrms Between 1 Vrms and 2 Vrms: resolution = 1 mVrms Between 2 Vrms and 5 Vrms: resolution = 2 mVrms (Opt. 001 only) Between 5 Vrms and 10 Vrms: resolution = 5 mVrms (Opt. 001 only) Between 10 Vrms and 20 Vrms†: resolution = 10 mVrms (Opt. 001 only) † When the test frequency is more than 1 MHz, the maximum oscillator voltage level that can be set is 15 Vrms. Allowable current levels and resolutions are: Minimum level = 0 Arms Maximum level = 100 mArms with opt 001, 20 mA otherwise Between 0 µArms and 2 mArms: resolution = 1 µArms Between 2 mArms and 5 mArms: resolution = 2 µArms Between 5 mArms and 10 mArms: resolution = 5 µArms Between 10 µArms and 20 mArms: resolution = 10 µArms Between 20 mArms and 50 mArms: resolution = 20 µArms (Opt. 001 only) Between 50 mArms and 100 mArms: resolution = 50 µArms (Opt. 001 only) The Instrument Options folder accepts test signal levels outside these ranges. However, if a measurement is attempted, an error message is issued and the measurement is not performed. Default = 10m Osc Mode [V,I] IC-CAP Reference Specify V (voltage) or I (current). Automatic Level Control (ALC) is not supported. Default = V 79 1 Supported Instruments Table 17 Agilent E4980A Options (continued) Option Description Averaging [1-256] The averaging rate of the instrument. Default = 1 Cable Length Cable length, in meters: 0, 1, 2, or 4. Default = 1M Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Agilent 4294A Precision Impedance Analyzer The Agilent 4294A is a precision impedance analyzer designed to measure impedance (inductance, capacitance, and resistance) at frequencies between 40 Hz and 110 MHz. The instrument includes an internal calibration. IC-CAP assigns the following name to this unit: CM Capacitance Meter Unit When using the internal DC bias, the bias unit is also included in the CM unit. Therefore, the unit name of this CM unit should also be entered in the Unit fields of both the voltage bias Input and the capacitance Output specifications of the Setup. Frequency cannot be swept using IC-CAP. The following table describes the Agilent 4294A options and their default values, where applicable. 80 IC-CAP Reference Supported Instruments Table 18 IC-CAP Reference 1 Agilent 4294A Options Option Description Use User Sweep Yes = use user sweep. No = use the instrument’s internal sweep. Default = No. Hold Time Time the instrument waits before starting an internal or user sweep. Default = 0. Delay Time Time the instrument waits before each sweep point is measured. Range is 0 to 30 seconds. Resolution is 1 msec. Default = 0. Meas Freq Measuring frequency. Only a set of frequencies are available. Range is 40 Hz to 110 MHz. Resolution is 1 mHz at 40 Hz and 1 kHz at 110 MHz. If the CV_FREQ system variable is defined, it must be set equal to this frequency, otherwise an error is reported. Default = 1 MHz. Bandwidth Measurement bandwidth. 1 FAST (fastest measurement), 2, 3, 4, 5 PRECISE (highest accuracy measurement). Default = 1. Osc Level Test signal level. Allowable voltage levels and resolutions are: minimum = 5 mV, maximum = 1 V. Default = 500 mV. Resolution = 1 mV. Averages [1-256] Point Averages, minimum 1, maximum = 256. Default = 1 Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0. Meas Range Selects DC bias range. Three ranges: 1 mA, 10 mA, and 100 mA. Default = 1 mA. Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = no entry. 81 1 Supported Instruments Agilent E4991A RF Impedance/Material Analyzer The Agilent E4991A is an RF impedance/material analyzer designed to measure impedance (inductance, capacitance, and resistance) at frequencies between 1 MHz and 3 GHz. Measurements can be made in internal sweep mode only. IC-CAP assigns the following name to this unit: CM Capacitance Meter Unit When using the internal DC bias, the bias unit is also included in the CM unit. Therefore, the unit name of this CM unit should also be entered in the Unit fields of both the voltage bias Input and the capacitance Output specifications of the Setup. Frequency cannot be swept using IC-CAP. The following table describes the Agilent E4991A options and their default values, where applicable. Table 19 82 Agilent E4991A Options Option Description Use User Sweep Yes = use user sweep, No = use the instrument’s internal sweep, default = No. Hold Time Time the instrument waits before starting an internal or user sweep, default = 0. Delay Time Time the instrument waits before each sweep point is measured. Range is 0 to 20 seconds, default = 0. Meas Freq Measuring frequency. Only a set of frequencies are available. Range is 1 MHz to 3 GHz with 1 kHz resolution. If the CV_FREQ system variable is defined, it must be set equal to this frequency, otherwise an error is reported, default = 1 MHz. Osc Level Test signal level in volts. Allowable voltage levels and resolutions are: minimum = 5 mV; maximum = 502 mV, default = 100 mV, resolution = 1 mV. The Instrument Options dialog accepts test signal levels outside these ranges. However, if a measurement is attempted, an error message is issued and the measurement is not performed. IC-CAP Reference Supported Instruments Table 19 1 Agilent E4991A Options (continued) Option Description Averages [1-100] Point Averages, minimum = 1, maximum = 256, default = 1. Delay for Timeouts For long-running measurements (that use a high number of averages, for example), use this option to avoid measurement timeouts. Default=0. Bias Current Limit Bias current limit, minimum 2 mA, maximum 50 mA, resolution 10 µA, default 2 mA. IC-CAP Reference Cal Reference Plane Used to select the calibration reference plane, either Coaxial (C) or Fixture (F). Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = no entry. 83 1 Supported Instruments Network Analyzers A network analyzer is an integrated stimulus/response test system that measures the magnitude and phase characteristics of a 1-port or multi-port network by comparing the incident signal with the signal transmitted through the device or reflected from its inputs. A network analyzer provides a waveform with a specified attenuation and frequency as inputs to the network or device under test. It then measures the magnitude and the phase information of both the reflected and transmitted waves. The network analyzers supported by IC-CAP are: • Agilent E5071C ENA Series Network Analyzer • Agilent PNA Series Vector Network Analyzer • HP 3577 Network Analyzer • HP/Agilent 8510 Network Analyzer • HP/Agilent 8702 Network Analyzer • HP/Agilent 8719 Network Analyzer • HP/Agilent 8720 Network Analyzer • HP/Agilent 8722 Network Analyzer • HP/Agilent 8753 Network Analyzer • Wiltron360 Network Analyzer A network analyzer contains an S-parameter test set that allows automatic selection of S11, S21, S12, and S22 measurements. S-parameters are used to quantify the signals involved in microwave design. S, for scattering, describes the act of an energy wave front entering, exiting, or reflecting off the 2-port network being characterized. Physically, the wave is an electromagnetic flow of energy, a traveling complex voltage wave. Mathematically, the S-parameter is a voltage normalized by the impedance of the environment so that its expression relates all information about voltage, current, and impedance at the same time. 84 IC-CAP Reference Supported Instruments 1 The primary advantage of characterization with S-parameters is that they can be measured by terminating a network in its characteristic impedance instead of a short or open. The following figure mathematically illustrates how S-parameters are defined. Figure 2 Mathematical Description of S-parameters Referring to the previous figure, when a network port is terminated so that there is no reflected energy, it is said to be terminated in its characteristic impedance Z0. If at port 2, a2 = 0 because b2 looked into a Z0 load and was not reflected, then b1 = S11 • a1+S12 • 0 S or b 1 = -----11 a a = 0 1 2 This defines an input reflection coefficient with the output terminated by a matched load (Z0). Similarly, S b 2 = -----22 a a = 0 2 1 defines an output reflection coefficient with the input terminated by Z0. IC-CAP Reference 85 1 Supported Instruments S b 2 = -----21 a a = 0 1 2 defines the forward transmission (insertion) gain with the output port terminated in Z0. S b 1 = -----12 a a = 0 2 1 defines the reverse transmission (insertion) gain with the input port terminated in Z0. The following figure is a graphic description of how S-parameters are defined. 86 IC-CAP Reference 1 Supported Instruments The smaller S11, the less energy is reflected (better source match. S21 is gain. Usually, the larger the better. The smaller S22, the less energy is reflected (better load match. The smaller S12, the more isolation the source has from the load. Figure 3 IC-CAP Reference Graphic Description of S-parameters 87 1 Supported Instruments NO TE The error terms saved to file during a network analyzer software calibration are not identified by error code. The order shown below represents the order in which they are saved and displayed in IC-CAP: 0. EDF [directivity] 1. EDR [directivity] 2. EXF [isolation] 3. EXR [isolation] 4. ESF [source match] 5. ERF [ref freq response] 6. ESR [source match] 7. ERR [ref freq response] 8. ELF [load match] 9. ETF [trans freq response] 10. ELR [load match] 11. ETR [trans freq response] Agilent E5071C ENA Series Network Analyzer IC-CAP supports the Agilent E5071C ENA Series RF network analyzer. The following table lists each analyzer and its frequency range: Table 20 Supported ENA Series Network Analyzers Instrument Name Low Frequency High Frequency Agilent E5071C-240/440 9 kHz 4.5 GHz Agilent E5071C-245/445 100 kHz 4.5 GHz Agilent E5071C-280/480 9 kHz 8.5 GHz Agilent E5071C-285/485 100 kHz 8.5 GHz IC-CAP assigns the following name to this unit: NWA Network Analyzer Unit 88 IC-CAP Reference Supported Instruments NO TE 1 IC-CAP loads the Instrument Options parameters, including Source Power, Sweep Time, and so on, during an ENA measurement. Since this involves setting values critical to the calibration, an error or warning may be issued. The ENA Series network analyzers are recognized when you issue the Rebuild, Measure, or Calibrate command. This driver only supports Frequency mode with sweep types of Linear, List, Log, and Constant. • Linear sweep mode allows you to specify the start/stop frequencies, number of points, and step size. • List sweep mode allows you to sweep up to 202 individual frequencies. • Log sweep mode allows you to specify start/stop frequencies, number of decades, and points per decade. The points are log spaced and you can specify a total of 202 points. • Constant mode allows you to measure 1 individual frequency. Table 21 on page 90 describes the E5071C ENA options and their default values, where applicable. For more information on options, refer to the E5071C ENA Series Network Analyzer Help file located in the analyzer. A self-test function is not provided for this instrument. Calibration The IC-CAP Calibrate command loads Setup information into the ENA prior to calibrating. When running a measurement afterwards, the calibration set must match IC-CAP's Setup and it must be valid. Only hardware calibration is supported. The calibration must be either manually executed or executed using dedicated calibration software and saved in a directory in the ENA. The calibration and state file must have extension .sta. To measure calibrated data, set the instrument option Cal Type to H (Hardware) and specify a file name with a .sta extension in the Instrument Option field Cal/State File Name. IC-CAP Reference 89 1 Supported Instruments On the ENA mainframe, the default directory for saving and reading calibration and state files is D:\State. You can save the calibration file in a different directory and still recall it from IC-CAP by setting the system variable ENA_CAL_FILE_PATH to the new directory (use full path such us D:\my_dir\). When running a measurement recalling a calibration set, the frequency sweep and the instrument options should be consistent with the calibration set. Warnings will be issued in the IC-CAP Status window when relevant ENA measurement settings (such as IF Bandwidth or Port Power) differ from the calibration settings. NO TE The .sta file type should be a save state file that includes the instrument state and the calibration data. So when saving the .sta file inside the instrument for further use, make sure to use the State & Cal save type in the Save/Recall menu. The ENA has the capability to interpolate between points. Therefore, you can specify a different frequency range and number of points during a measurement as long as the measured frequency range is within the calibrated frequency range. However, be aware that a loss in accuracy occurs due to interpolation. Table 21 90 Agilent E5071C ENA Options Option Description Use User Sweep [Yes/No] Yes = use user sweep. No = use instrument's internal sweep. Default = No Hold Time (sec) Time, in seconds, the instrument waits before each sweep to allow for DC settling. Default = 0 Delay Time (sec) Time the instrument waits before setting each frequency in user sweep mode. Default = 0 Sweep Time (sec) Time the instrument takes for each sweep. 0 = Auto Default = 0 IC-CAP Reference Supported Instruments Table 21 IC-CAP Reference 1 Agilent E5071C ENA Options (continued) Option Description Sweep Type [SA] S = Stepped mode. A = Analog (ramp) mode Default = S Port Power Coupled [Yes/No] Yes = Coupled mode. No = Non-Coupled mode. Default = Yes. When ports are coupled, the Port1 Src Power value is used for both Port 1 and 2. Port2 Src Power is ignored. Port1 Src Power (dBm) Defines the source Power for Port 1 and 2 when ports are coupled or the source power for Port 1 when ports are uncoupled. The power range depends on the ENA model and options. Port2 Src Power (dBm) Defines the source power for Port 2 when ports are uncoupled. This option field is ignored when ports are coupled. The power range depends on the ENA model and options. Power Slope (db/GHz) Can be any value between −2 and +2 dB/GHz Default = 0 IF Bandwidth (Hz) Range 10 Hz to 500 kHz Nominal settings are: 10, 15, 20, 30, 40, 50, 70, 100, 150, 200, 300, 400, 500, 700, 1k, 1.5k, 2k, 3k, 4k, 5k, 7k, 10k, 15k, 20k, 30k, 40k, 50k, 70k, 100k, 150k, 200k, 300k, 400k, 500kHz Default = 1000 Hz Note: If a invalid value is specified, the ENA will not round it to the nearest available value. It will round up to the next higher value. Avg Factor [1-1024] Number of averages per measurement. [1-1024] Default = 1 Cal Type [HN] H = Hardware calibration. N = No calibration Default = N Cal/State File Name [ .sta only] Name of .sta file (with stored calibration and instrument state) to be used. Default = none 91 1 Supported Instruments Table 21 Agilent E5071C ENA Options (continued) Option Description Use ENA Calibration Settings [Yes/No] This setting can be set to Yes only if a calibration file is available and Calibration Type is set to H (Hardware). Default = No When set to Yes, IC-CAP loads the calibration and runs the measurement without further initializing the instrument (i.e. without downloading the current Instrument Table settings). Although IC-CAP uses the calibration settings for measurements, it still sets the sweep settings (e.g. Start, Stop, Sweep Type, etc.). Therefore, make sure the requested sweep setting is consistent with the calibration settings as IC-CAP attempts to run the measurement without performing any frequency range checking. Also note that when this option is set to Yes, the driver responds as if MEASURE_FAST=Yes (i.e., calibration is loaded only when the measurement is first run or after errors or warnings occur). Delay for timeouts (sec) For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default = 0 Init Command Command field to set the instrument to a mode not supported by the option table. Command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Technical Notes • You can perform averaging by increasing the number of averages or decreasing the IF filter bandwidth. Both methods result in more samples taken at each frequency point. Decreasing the IF filter bandwidth not only increases the number of samples but also the time at each frequency point resulting in a longer sweep time. Increasing the number of averages, increases the number of sweeps. Although the driver supports both modes, using IF bandwidth for averaging is generally more efficient. 92 IC-CAP Reference 1 Supported Instruments • Coupled ports have the same source power connected to Port 1 and Port 2 for forward and reverse S-parameter measurements. • If you have significant insertion loss due to cables or bias networks, use power slope. Using the appropriate power slope can compensate for insertion loss as the frequency increases. However, if the network's return loss is too high, increasing the power slope will not compensate because the power is reflected back. • Step sweep mode is more accurate than analog (ramp) mode, but analog mode is typically faster than step sweep mode. In step sweep mode, RF phase locking is performed at each frequency, which ensures that the frequency value is very accurate. This results in a longer transition time from 1 frequency point to the next and a longer total sweep time. In analog mode, the RF frequency is swept across the frequency range and its frequency accuracy depends on the linearity of the VCO (Voltage Controlled Oscillator). • Sweep time is the total time to sweep from Start to Stop frequency. Several factors contribute to sweep time. For example at each point in step mode, sweep time is the summation of transient time due to phase locking, settling time, and measurement time, which depends on the IF Bandwidth filter. Although you can specify a sweep time, you should use auto mode (Sweep Time field = 0). This allows the ENA to determine the fastest sweep time based on the other settings. To view the actual sweep time, select Sweep Setup/Sweep Time on the ENA application's main window. For additional details on sweep time, see the E5071C ENA's online help. Agilent PNA Series Vector Network Analyzer IC-CAP supports the Agilent PNA Series vector network analyzers grouped as the Agilent PNA. The Table 22 lists each analyzer and its frequency range: IC-CAP Reference 93 1 Supported Instruments Table 22 Supported PNA Series Vector Network Analyzers Instrument Name Low Frequency High Frequency Agilent E8356A 300 kHz 3 GHz Agilent E8357A 300 kHz 6 GHz Agilent E8358A 300 kHz 9 GHz Agilent E8361A 10 MHz 67 GHz Agilent E8362A 45 MHz 20 GHz Agilent E8362B 10 MHz 20 GHz Agilent E8363A 45 MHz 40 GHz Agilent E8363B 10 MHz 40 GHz Agilent E8364A 45 MHz 50 GHz Agilent E8364B 10 MHz 50 GHz Agilent E8801A 300 kHz 3 GHz Agilent E8802A 300 kHz 6 GHz Agilent E8803A 300 kHz 9 GHz Agilent N5250A 10 MHz 110 GHz IC-CAP assigns the following name to this unit: NWA Network Analyzer Unit NO TE IC-CAP loads the Instrument Options parameters, including Source Power, Attenuation, and so on, during a PNA measurement. Since this involves setting values critical to the calibration, an error or warning may be issued. The PNA Series network analyzers are recognized when you issue the Rebuild, Measure, or Calibrate command. This driver only supports Frequency mode with sweep types of Linear, List, Log, and Constant. 94 IC-CAP Reference Supported Instruments 1 • Linear sweep mode allows you to specify the start/stop frequencies, number of points, and step size. • List sweep mode allows you to sweep up to 202 individual frequencies. • Log sweep mode allows you to specify start/stop frequencies, number of decades and points per decade. The points are log spaced and you can specify a total of 202 points. • Constant mode allows you to measure 1 individual frequency. Table 23 describes the PNA options and their default values, where applicable. For more information on options, refer to the PNA Series Network Analyzer Help file located in the analyzer. A self-test function is not provided for this instrument. Calibration The IC-CAP Calibrate command loads Setup information into the PNA prior to calibrating. When running a measurement afterwards, the calibration set must match IC-CAP’s Setup and it must be valid. Only hardware calibration is supported. The calibration must be either manually executed or executed using dedicated calibration software and saved in a directory in the PNA. The calibration file must have extension .cst. NO TE The .cst file type includes the instrument state and a pointer to the internal calset. The .cst file does not save the calibration coefficients (the internal calset). Do not delete the internal calset referenced by the .cst file otherwise the IC-CAP measurement will issue an error. If you wish to save the calibration coefficients, save the active calset using a .cal file extension. If the internal calset is accidentally deleted, you can reinstate it by loading the .cal file from the front panel. Do this BEFORE running an IC-CAP measurement that uses the .cst file. To measure calibrated data, set the instrument option Cal Type to H (Hardware) and specify a file name with a .cst extension in the Instrument Option field Cal/State File Name. IC-CAP Reference 95 1 Supported Instruments On the PNA mainframe, the default directory for saving and reading calibration and state file is C:\Program Files\Agilent\ Network Analyzer\Documents. You can save the calibration file in a different directory and still recall it from IC-CAP by setting the System Variable PNA_CAL_FILE_PATH to the new directory (use full path such us C:\my_dir\). When running a measurement recalling a calibration set, the frequency sweep and the instrument options should be consistent with the calibration set. Warnings will be issued in the IC-CAP Status Window when relevant PNA measurement settings (such as IF Bandwidth or Port Power) differ from the calibration settings. NO TE The PNA has the capability to interpolate between points. Therefore, you can specify a different frequency range and number of points during a measurement as long as the measured frequency range is within the calibrated frequency range. However, be aware that a loss in accuracy occurs due to interpolation. Table 23 96 Agilent PNA Options Option Description Use User Sweep Yes = use user sweep. No = use instrument’s internal sweep. Default = No Hold Time Time, in seconds, the instrument waits before each sweep to allow for DC settling. Default = 0 Delay Time Time the instrument waits before setting each frequency in user sweep mode. Default = 0 Sweep Time Time the instrument takes for each sweep. 0 = Auto Default = 0 Sweep Type[SA] S = Stepped mode. A = Analog (ramp) mode Default = S IC-CAP Reference Supported Instruments Table 23 1 Agilent PNA Options (continued) Option Description Port Power Coupled Yes = Coupled mode. No = Non-Coupled mode. Default = Yes. When ports are coupled, the Port Src Power value is used for both Port 1 and 2. Port 2 Src Power is ignored. Attenuators are also coupled so that Port Src Atten is used for both ports and Port 2 Src Atten is ignored. IC-CAP Reference Port Src Power Defines the source Power for Port 1 and 2 when ports are coupled or the source power for Port 1 when ports are uncoupled. The power range depends on the attenuator settings and the PNA model and options. Port 2 Src Power Defines the source power for Port 2 when ports are uncoupled. This option field is ignored when ports are coupled. The power range depends on the attenuator settings and the PNA model and options. Port Atten Auto Yes = Auto mode. No = Non-Auto mode. Default = No. When attenuators are in auto-mode, the PNA will set the most efficient values for the attenuators to obtain the requested output power at the port. In auto-mode, the full power range is directly available at the output port. In auto-mode, the instrument options Port Src Atten and Port 2 Src Atten are ignored. Port Src Atten Possible Values: 0, 10, 20, 30, 40, 50, 60, 70 dB Default = 0 The available range depends on the PNA model. For example, the E8364A attenuator range is 0-60 dB. This option is ignored when attenuators are in auto-mode. Port 2 Src Atten Possible Values: 0, 10, 20, 30, 40, 50, 60, 70 dB Default = 0 The available range depends on the PNA model. For example, the E8364A attenuator range is 0-60 dB. This option is ignored when attenuators are in auto-mode. Power Slope Can be any value between –2 and +2 dB/GHz Default = 0 Dwell Time Sets the dwell time, in seconds, between each sweep point. Only available in Stepped sweep type. Default = 0 (Auto - PNA will minimize dwell time) 97 1 Supported Instruments Table 23 98 Agilent PNA Options (continued) Option Description IF Bandwidth Possible Values: 1, 2, 3, 5, 7, 10, 15, 20, 30, 50, 70, 100, 150, 200, 300, 500, 700, 1k, 1.5k, 2k, 3k, 5k, 7k, 10k, 15k, 20k, 30k, 35k, 40k Default = 1000 Hz Note: If a invalid value is specified, the PNA will not round it to the nearest available value. It will round up to the next higher value. Avg Factor Number of averages per measurement. [1-1024] Default = 1 Cal Type[HN] H = Hardware calibration. N = No calibration Default = N Cal/State File Name Name of .cst file (cal file and instrument state) to be used. Default = none Use PNA Calibration Settings [Yes/No] This setting can be set to Yes only if a calibration file is available and Calibration Type is set to H (Hardware). Default = No When set to Yes, IC-CAP loads the calibration and runs the measurement without further initializing the instrument (i.e., without downloading the current Instrument Table settings). Although IC-CAP uses the calibration settings for measurements, it still sets the sweep settings (e.g., Start, Stop, Sweep Type, e.t.c.). Therefore, make sure the requested sweep setting is consistent with the calibration settings as IC-CAP attempts to run the measurement without performing any frequency range checking. Also note that when this option is set to Yes, the driver responds as if MEASURE_FAST=Yes (i.e., calibration is loaded only when the measurement is first run or after errors or warnings occur). Delay for timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default = 0 IC-CAP Reference 1 Supported Instruments Table 23 Agilent PNA Options (continued) Option Description Init Command Command field to set the instrument to a mode not supported by the option table. Command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Technical Notes • You can perform averaging by increasing the number of averages or decreasing the IF filter bandwidth. Both methods result in more samples taken at each frequency point. Decreasing the IF filter bandwidth not only increases the number of samples but also the time at each frequency point resulting in a longer sweep time. Increasing the number of averages, increases the number of sweeps. Although the driver supports both modes, using IF bandwidth for averaging is generally more efficient. • Coupled ports have the same source power connected to Port 1 and Port 2 for forward and reverse S-parameter measurements. In addition, the attenuator settings are coupled. • When port attenuators are set to auto mode, the PNA automatically chooses the attenuator value that provides the requested power level at the output port. Accurate S-parameter calibration requires that the attenuator settings do not change during measurements or calibration, therefore auto mode is not recommended. • If you have significant insertion loss due to cables or bias networks, use power slope. Using the appropriate power slope can compensate for insertion loss as the frequency increases. However, if the network’s return loss is too high, increasing the power slope will not compensate because the power is reflected back. IC-CAP Reference 99 1 Supported Instruments • Step sweep mode is more accurate than analog (ramp) mode, but analog mode is typically faster than step sweep mode. In step sweep mode, RF phase locking is performed at each frequency, which ensures that the frequency value is very accurate. This results in a longer transition time from 1 frequency point to the next and a longer total sweep time. In analog mode, the RF frequency is swept across the frequency range and its frequency accuracy depends on the linearity of the VCO (Voltage Controlled Oscillator). • Sweep time is the total time to sweep from Start to Stop frequency. Several factors contribute to sweep time. For example at each point in step mode, sweep time is the summation of transient time due to phase locking, settling time, dwell time, and measurement time, which depends on the IF Bandwidth filter. Although you can specify a sweep time, you should use auto mode (Sweep Time field = 0). This allows the PNA to determine the fastest sweep time based on the other settings. To view the actual sweep time, select Sweep/Sweep Time on the PNA application’s main window. For additional details on sweep time, see the PNA’s online help. • Dwell time is the time spent at each frequency point before sampling starts. For most applications, you should set dwell time to auto mode. In auto mode, the PNA increases the dwell time as the sweep time increases to comply the total sweep time. If long delays are present in the circuit and additional settling time is needed, set the dwell time to an appropriate value. Dwell time is not active in analog mode—only in step mode. If the sweep time in analog mode is increased significantly (because of a setting), the PNA can internally switch to step mode and set an optimum value for the dwell time. HP 3577 Network Analyzer The HP 3577 has a frequency range of 5 Hz to 200 MHz (100 kHz to 200 MHz with HP 35677A/B S-Parameter Test Set). The RF source is an integral part of this instrument; DC bias levels must be supplied from external sources. 100 IC-CAP Reference Supported Instruments 1 IC-CAP assigns the following name to this unit: NWA Network Analyzer Unit Because this instrument does not offer full 2-port calibration, IC-CAP provides a popular 12-term correction for this instrument that is widely used for 2-port measurements. Manual operation is required to measure standards interactively. Separate calibration data can be obtained for each Setup; the data is saved and retrieved when Setups are written to or read from files. Though IC-CAP supports the HP 3577A and B models, the Discrete Sweep capability of HP 3577B is not available with IC-CAP. Therefore, the log and list frequency sweeps must be performed as a User Sweep. For most 2-port AC measurements, the network analyzer units must be biased with a current or voltage source to supply DC power to the DUT. A DC analyzer can be used for this. Therefore, a typical S-parameter measurement Setup specification would use the unit name of the network analyzer unit (NWA) in the Unit field of the Output and the unit names of the DC analyzer units in the Unit fields of the biasing Inputs. NO TE The HP 35677A/B S-Parameter Test Set has a maximum DC bias range of ±30V and ±20mA with some degradation of RF specifications; ±200mA damage level. The measurement methods, listed in the following table, are selected by setting the Use User Sweep and Use Fast CW flags in the HP 3577 Instrument Options folder. Table 24 IC-CAP Reference HP 3577 Measurement Modes Mode Description Slow CW Sweep Mode Use User Sweep = Yes. Use Fast CW = No The instrument sets each frequency then measures all 4 S-Parameters. Although somewhat slow, this method has the advantage of gathering all of the parameters for a frequency at approximately the same time. 101 1 Supported Instruments Table 24 HP 3577 Measurement Modes (continued) Mode Description Fast CW Sweep Mode Use User Sweep = Yes. Use Fast CW = Yes This mode is faster than Slow CW Sweep because it performs just 2 user sweeps. The instrument first measures the forward parameters (S11 and S21), then changes the test set direction and measures the reverse parameters (S12 and S22). Single Freq CW Mode Use User Sweep = Yes. Use Fast CW = No The instrument performs a spot frequency measurement. Except for the number of frequencies, this mode is the same as the Slow CW Sweep Mode. Internal Sweep Mode Use User Sweep = No Fastest available sweep type. Sweep must be linear. Values for start, stop, and number of points are stored in the instrument. The number of points in the linear sweep must match 1 of the HP 3577’s allowed number of points choices. When IC-CAP is unable to fit an internal sweep, it attempts to use the Fast CW Mode. The following table describes the HP 3577 options and their default values, where applicable. For more information on options, refer to the HP 3577 Operating and Programming Manual. Table 25 102 HP 3577 Options Option Description Use User Sweep Yes = use user sweep. No = use instrument’s internal sweep. Default = No Hold Time Time, in seconds, the instrument waits before each sweep to allow for DC settling. Default = 0 Delay Time Time the instrument waits before setting each frequency in user sweep mode. Default = 100 msec Input A Attn Sets Input A attenuation. Choices are 0 or 20 dB. Default = 20 dB IC-CAP Reference 1 Supported Instruments Table 25 HP 3577 Options (continued) Option Description Input B Attn Sets Input B attenuation. Choices are 0 or 20 dB. Default = 20 dB Input R Attn Sets Input R attenuation: 0 or 20 dB. Default = 20 dB Source Power Source signal level. Range is −45 to 15 dBm. Default = −10 dBm Sweep Time [.05 16] Instrument internal sweep time, in seconds. Default = 100 msec. IF Bandwidth Instrument receiver resolution, in Hz. Default = 1000 Hz Use Fast CW Enables Fast CW mode. Default = Yes Avg Factor [1-256] Number of averages per measurement. Default = 1 Cal Type[SN] S = Software calibration. N = No calibration. Default = S Soft Cal Sequence Software calibration requires measurement of (L)oad, (O)pen, (S)hort, (T)hru, and optionally (I)solation in a certain order. This string defines the sequence of these standard measurements by these letters (L, O, S, T, I). Default = LOST Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none The system variables used by the 12-term software calibration are listed in the following table. They primarily affect S11 and S22 corrections at high frequencies. Load and Short standards are assumed ideal in the calibration frequency range. These variables can be defined at Setup or higher levels. IC-CAP Reference 103 1 Supported Instruments Table 26 System variables Variable Description CAL_OPEN_C0 CAL_OPEN_C1 CAL_OPEN_C2 Define a capacitance of an Open standard in Farads. This value applied to port 1 and port 2. A second-order polynomial is assumed for its frequency response. Copen = C0 + C1 • F + C2 • F2. Default = 0 (for C0, C1, and C2) TWOPORT_Z0 Defines impedance of port 1 and port 2, in Ohms. This and the open capacitance value are used to calculate open gamma correction data. Also used by TwoPort function. Default = 50 Ohms Note: CAL_OPEN_C is replaced by CAL_OPEN_C0; CAL_Z0 is replaced by TWOPORT_Z0. Use the new variables when possible; the old variables are effective for the software calibration when the new variables are undefined. HP/Agilent 8510 Network Analyzer The HP/Agilent 8510 is identical to the HP 8753 except: • The 8510A has a frequency range of 45 MHz to 26.5 GHz. • The 8510B options can source frequencies up to 100 GHz. • The RF source is a separate external instrument. • The 8510A does not support frequency list mode—it cannot run internal log and list sweeps. IC-CAP assumes an A model if the instrument is manually added to the Instrument List (in the Hardware Setup window) by selecting it and clicking the Add button. For IC-CAP to recognize a newer model, use the Rebuild command or perform a dummy measurement: use a linear sweep with the Use Linear List option set to No. Note that the 8510C is treated as the B model. IC-CAP assigns the following name to this unit: NWA 104 Network Analyzer Unit IC-CAP Reference 1 Supported Instruments NO TE IC-CAP loads the Instrument Options parameters, including Source Power, Attenuation, and so on, during an 8510 measurement. Because this involves setting values critical to the calibration, the following warning may be issued: Calibration may be invalid. If the IC-CAP Calibrate command is used to load Setup information to the 8510 prior to calibrating, the calibration set must match IC-CAP’s Setup and be valid. For information on the processes listed below, refer to the section, “HP 3577 Network Analyzer” on page 100. • Use of DC bias sources • Available measurement modes • System variables used in software calibration NO TE Use the 12-term software calibration carefully at very high frequencies where accuracy of the Load termination generally degrades. The following table describes the 8510 options and their default values, where applicable. For more information on options, refer to the HP 8510 Operating and Programming Manual. Table 27 IC-CAP Reference HP/Agilent 8510 Options Option Description Use User Sweep Yes = use user sweep. No = use instrument’s internal sweep. Default = Yes Hold Time Time, in seconds, the instrument waits before each sweep to allow for DC settling. Default = 0 Delay Time Time the instrument waits before setting each frequency in user sweep mode. Default = 100 msec Port 1 Attn Sets Port 1 attenuation. This option is ignored by the 8510XF. Range is 0 to 90 dB. Default = 20 dB 105 1 Supported Instruments Table 27 HP/Agilent 8510 Options (continued) Option Description Port 2 Attn Sets Port 2 attenuation. This option is ignored by the 8510XF. Range is 0 to 90 dB. Default = 20 dB Source Power Range is −90 to 30 dbm. Default = −10 dBm Power Slope Range is 0 to 1.5 dbm/GHz. Default = 0 Fast Sweep (Ramp) Enables ramp sweep. Default = No Sweep Time [.05 - 100] Instrument sweep time. Default = 100 msec Use Fast CW Enables Fast CW mode. Default = Yes Trim Sweep Adjusts frequency at each band edge. Default = 0 Avg Factor [1-4096] Number of averages per measurement. Default = 1 Cal Type[SHN] S = Software calibration. H = Hardware calibration. N = No calibration. Default = H Cal Set No. [1-8] Specifies an instrument calibration set. Default = 1 Soft Cal Sequence Software calibration requires measurement of (L)oad, (O)pen, (S)hort, (T)hru, and optionally (I)solation in a certain order. This string defines the sequence of these standard measurements by these letters (L, O, S, T, I). Default = LOST 106 Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Use Linear List Yes = load linear sweeps into the 8510’s frequency list instead of 1 of the fixed point counts. (Not available on 8510A.) Default = Yes Init Command Command field to set the instrument to a mode not supported by the option table. Command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none IC-CAP Reference Supported Instruments 1 When performing 2 sequential CW measurements that use different CW cal subsets, the 8510 may report the error RF UNLOCKED. A system variable is available in IC-CAP, in the Measurement Options group, to ignore this error: IGNORE_8510_RF_UNLOCK When defined as Yes, IC-CAP ignores a temporary and benign RF UNLOCKED error from the 8510. Making Measurements with Uncoupled Ports To calibrate using the 8510XF driver: 1 Set input sweeps and instrument options. To set port 1 power, set Source Power. To set port 1 power slope, set Power Slope. Set averaging. Ignore the Port 1 and 2 Attenuators fields as the 8510XF does not have attenuators. 2 In the Init Command field, type the following command string to set port 2 power and slope: PPCOUPLEOFF;POWP2 <power>SLPP2ON <slope> Example: PPCOUPLEOFF;POWP2 -20;SLPP2ON 0.05; sets P2=-20 dB and Power slope 2 to 0.05 dB/GHz 3 Click Calibrate. This downloads the sweep settings, the instrument option settings, and sets the 8510XF with uncoupled ports. 4 Perform RF Calibration and save the results in one of the Calsets. When making a measurement using the 8510XF driver, the driver recalls the calibration data and the setting used during calibration. If you want to use the same power level and slope, you do not need to make any changes. If you want to change the port 2 power setting, use the Init Command field as in step 2 (you do not need PPCOUPLEOFF since the ports are already off when calibration is recalled). Be aware that the 8510XF will issue a warning if you set a different port power for the measurements. IC-CAP Reference 107 1 Supported Instruments HP/Agilent 8702 Network Analyzer The HP/Agilent 8702 network analyzer has a frequency range of 300 kHz to 3 GHz (IC-CAP does not support the lightwave analyzer features). Use Option 006 and turn on the frequency doubler from the front panel if 6 GHz is desired. The RF source is an integral part of this instrument. For other features, refer to the section, “HP/Agilent 8753 Network Analyzer” on page 112 because the HP/Agilent 8702 is almost identical to the HP/Agilent 8753 in the E/E mode. IC-CAP supports both HP/Agilent 85046A and HP/Agilent 85047A S-Parameter Test Sets for the HP/Agilent 8702. IC-CAP assigns the following name to this unit: NWA Network Analyzer Unit For most 2-port AC measurements, the network analyzer units must be biased with a current or voltage source to supply DC power to the DUT. A DC analyzer can be used to supply this current or voltage source. Therefore, a typical S-parameter measurement Setup specification would use the unit name of the network analyzer unit (NWA) in the Unit field of the Output and the unit names of the DC analyzer units in the Unit fields of the biasing Inputs. For information on the topics listed below, refer to the section, “HP/Agilent 8753 Network Analyzer” on page 112. • Measurement modes • Options NO TE 108 The 8702 occupies 2 GPIB addresses, the instrument itself and the display. The display address is derived from the instrument address by complementing the least significant bit. Hence, if the instrument is at an even address, the display occupies the next higher address; if the instrument is at an odd address, the display occupies the next lower address. IC-CAP Reference 1 Supported Instruments HP/Agilent 8719 Network Analyzer The HP/Agilent 8719 is identical to the HP/Agilent 8720 except the 8719 has a frequency range of 50 MHz to 13.5 GHz. For information, refer to the next section, “HP/Agilent 8720 Network Analyzer.” HP/Agilent 8720 Network Analyzer The HP/Agilent 8720 network analyzer has a frequency range of 50 MHz to 20 GHz. The RF source and S-parameter test set are an integral part of this instrument. IC-CAP supports the HP/Agilent 8720 A, B, C, and D models. (The 8720 D is the only model that supports uncoupled port power.) IC-CAP assigns the following name to this unit: NWA NO TE Network Analyzer Unit The 8720 occupies 2 GPIB addresses, the instrument itself and the display. The display address is derived from the instrument address by complementing the least significant bit. Hence, if the instrument is at an even address, the display occupies the next higher address; if the instrument is at an odd address, the display occupies the next lower address. For most 2-port AC measurements, the network analyzer units must be biased with a current or voltage source to supply DC power to the DUT. A DC analyzer can be used to supply this current or voltage source. Therefore, a typical S-parameter measurement Setup specification would use the unit name of the network analyzer unit (NWA) in the Unit field of the Output and the unit names of the DC analyzer units in the Unit fields of the biasing Inputs. Measurement modes for the 8720 are the same as for the 8753; refer to Table 29 for this information. For system variables used in the software calibration, refer to Table 26 in the HP 3577 section. IC-CAP Reference 109 1 Supported Instruments The following table describes the 8720 options and their default values, where applicable. Table 28 110 HP/Agilent 8720 Options Option Description Use User Sweep Yes = use user sweep. No = use instrument’s internal sweep Default = No Hold Time Time, in seconds, that the instrument waits before each sweep to allow for DC settling. Default = 0 Delay Time Time the instrument waits before setting each frequency. Default = 100 msec Port 1 Source Power Range is −65 to 10 dBm. Default = −10.00 dBm Port 1 Power Range Specifies which instrument power range to use. Range is 1 to 12 for models A, B, and C; range is 0 to 11 for model D. (The Hardware calibration is turned off by the instrument when calibrated Power Range and requested Power Range don’t match.) Default = 1 Port 1 Auto Power Range† Enables auto power ranging on port 1. Default = Yes Coupled Port Power† Enables/disables coupled test port power. When disabled, Port 2 options are ignored. Default = Yes Port 2 Source Power† Range is −65 to 10 dBm. Default = −10.00 Port 2 Power Range† Specifies which instrument power range to use. Range is 1 to 12 for models A, B, and C; range is 0 to 11 for model D. (The Hardware calibration is turned off by the instrument when calibrated Power Range and requested Power Range don’t match.) Default = 1 Port 2 Auto Power Range† Enables auto power ranging on port 2. Default = Yes Sweep Time Instrument sweep time. A zero sweep time turns on the Auto Sweep Time, which ensures the minimum sweep time. Default = 100 msec IC-CAP Reference 1 Supported Instruments Table 28 HP/Agilent 8720 Options (continued) Option Description IF Bandwidth (Avg) Instrument’s receiver IF bandwidth. Default = 1000 Hz Use Fast CW Enables Fast CW mode. Default = Yes Avg Factor [1-999] Number of averages per measurement. Default = 1 Cal Type[SHN] S = Software calibration. H = Hardware calibration. N = No calibration. Default = H Cal Set No. Models A, B, and C: 1 through 5 specifies which instrument calibration sets to use; 6 specifies the active instrument state. Model D: 1 through 32 specifies which instrument calibration sets to use; 33 specifies the active instrument state. Default = 1 Soft Cal Sequence Software calibration requires measurement of (L)oad, (O)pen, (S)hort, (T)hru, and optionally (I)solation in a certain order. This string defines the sequence of these standard measurements by these letters (L, O, S, T, I). Default = LOST Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Use Linear List Yes = load linear sweeps into the HP/Agilent 8720’s frequency list instead of one of the fixed point counts. This mode should be faster than using the instruments linear frequency sweep. Default = Yes Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none † These options apply only when using built-in test set (Model D). IC-CAP Reference 111 1 Supported Instruments HP/Agilent 8722 Network Analyzer The HP/Agilent 8722 is identical to the HP/Agilent 8720 except for its frequency range—the HP/Agilent 8722 has a frequency range of 50 MHz to 40 GHz. HP/Agilent 8753 Network Analyzer The HP/Agilent 8753 network analyzer has a frequency range of 300 kHz to 3 GHz (6 GHz with Option 006). The instrument contains an RF source for frequency sweeps, but DC bias must be supplied from external sources to acquire biased RF data. IC-CAP assigns the following name to this unit: NWA Network Analyzer Unit IC-CAP supports the HP/Agilent 8753 A, B, C, D, E, and D opt 011 models (D models must be firmware revision 6.14 or higher). The standard D and E models have a built-in test set; the A, B, C, and D opt 011 models are used in conjunction with an external test set. IC-CAP supports both the HP/Agilent 85046A and HP/Agilent 85047A S-Parameter Test Sets. 112 NO TE IC-CAP cannot differentiate between model D and D opt 011. When using the 8753D with an external test set, alias it as an 8753C in the instraliases file in the $ICCAP_ROOT/iccap/lib directory. NO TE The 8753 occupies 2 GPIB addresses, the instrument itself and the display. The display address is derived from the instrument address by complementing the least significant bit. Hence, if the instrument is at an even address, the display occupies the next higher address; if the instrument is at an odd address, the display occupies the next lower address. IC-CAP Reference Supported Instruments 1 The model is recognized when you issue the Rebuild, Measure, or Calibrate command. If you manually add the instrument to the active instrument list (by clicking the Add button), IC-CAP assumes the instrument is an A model until one of the previously described commands is issued. NO TE Some early models of the 8753C (ROM 4.00 and 4.01) have GPIB problems that prevent IC-CAP from finding this instrument during Rebuild. Add the instrument manually after PRESET when IC-CAP ignores this instrument. The model is recognized when Measure or Calibrate is performed. A self-test function is not provided for this instrument. For most 2-port AC measurements, the network analyzer units must be biased with a current or voltage source to supply DC power to the DUT. A DC analyzer can be used to supply this current or voltage source. Therefore, a typical S-parameter measurement Setup specification would use the unit name of the network analyzer unit (NWA) in the Unit field of the Output and the unit names of the DC analyzer units in the Unit fields of the biasing Inputs. Hardware calibration is only supported when using Internal Sweep mode or Single Freq CW mode. For measurement modes that do not support internal instrument calibration, software calibration is provided. When software calibration is set in the instrument options, use the Calibrate command to initiate the calibration. IC-CAP will load the frequency values and options into the instrument and then direct you to connect the various calibration standards required to perform the calibration. The Calibrate command can also be used to download the desired instrument state when requesting a hardware calibration You must then calibrate the instrument manually (refer to the instrument manual) and store the results in one of the instrument’s state registers. With this method there is no need to manually input the instrument state to match the IC-CAP settings. IC-CAP Reference 113 1 Supported Instruments The measurement modes listed in Table 29 are selected by setting a combination of the following fields (details follow) in the 8753 Instrument Options folder: • Use User Sweep • Use Fast CW • Use Linear List • Cal Type field IC-CAP contains routines that compare its sweep values with those stored in the 8753. In case of discrepancies, IC-CAP prompts you to specify whether the sweeps should be modified to match the instrument. This may not be practical when variables are included in the sweep specifications. Error checking ensures a valid measurement mode. When discrepancies are found, the following changes are made: • For CON frequency, Use User Sweep is set to Yes and Use Fast CW is set to No. • For internally calibrated sweeps, Use User Sweep is set to No. • When frequency is not the main sweep, Use Fast CW is set to No, Cal Type is set to N, and Use User Sweep is set to Yes. Refer to “HP 3577 Network Analyzer” on page 100 for system variables used in the software calibration. Table 30 describes the 8753 options and their default values, where applicable. Differences in options when using the 8753 with an external test set versus a built-in test set are noted. For optimum performance of the HP/Agilent 85047 test set, 6 GHz mode requires Source Power to be +20dBm. The Instrument Options folder should show 20 as the Source Power level when the Freq Range is 6 GHz. Setting Source Power to less than 20 can cause No IF Found errors in the 8753. Further information on the power requirements for 6 GHz operation can be found in the instrument’s operation manual. When the test set switches between 3 and 6 GHz operation, the 8753 automatically changes Source Power level. • 3 to 6 GHz Switching: 20 dBm. • 6 to 3 GHz Switching: 0 dBm. 114 IC-CAP Reference 1 Supported Instruments When Hardware calibration is used, a specified calibration set recalls the original calibration power level. When Software or no calibration is used, the Source Power will be forced to one of the default levels if the test set has to switch modes. When a Source Power level other than the above forced values is required, perform one of the following: • Make a dummy measurement first to switch the test set to the desired frequency mode • Manually switch the test set to the desired frequency mode • Use the Calibrate command to download the desired instrument state NO TE The 8753 may not reflect the power level specified in the Instrument Options folder if the analyzer is in HOLD mode. When the 8753 is in HOLD mode and receives a remote command to switch the frequency mode of the test set, it postpones switching modes until an actual measurement sweep is triggered. When the Measure or Calibrate command is issued, IC-CAP initializes the state before triggering a measurement. Thus IC-CAP will download the power level specified in the Instrument Options folder and the analyzer will force it to its default value when the measurement is triggered. For descriptions of the variables used in software calibration, refer to Table 26 in the HP 3577 Network Analyzer section. IC-CAP Reference 115 1 Supported Instruments Table 29 116 Supported Measurement Modes Mode Description Use Use Use User Fast Linear Sweep CW List Cal Type Slow CW Sweep IC-CAP performs a spot measurement of 2-port data by setting the instrument to each frequency point individually and measuring all 4 S-parameters. Although slow, this method has the advantage of gathering all of the parameters for a frequency at approximately the same time. Only uncalibrated data can be obtained from this type of measurement since each frequency point is measured in CW mode. Typically used when frequency is not the primary sweep (Sweep Order ≠ 1). Yes No Ignored S, N Fast CW Sweep Similar to Slow CW Sweep, this mode is faster because it first measures the forward parameters (S11 and S21) with a single sweep, then the reverse parameters (S12 and S22). This is accomplished by using the dual channel feature of the instrument. As with Slow CW Sweep, instrument calibration is not possible and only uncalibrated data can be obtained. Yes Yes Ignored S, N Single Freq CW This is the only user sweep mode capable of acquiring 2-port data using hardware calibration. A CW mode calibration can be performed and saved in one of the state registers to be recalled when a measurement is executed. Yes No Ignored H,S, N IC-CAP Reference 1 Supported Instruments Table 29 Mode Supported Measurement Modes (continued) Description Internal Fastest available sweep type. † Sweep Sweeps can be linear, log, or list. Since this is an internal sweep, hardware calibration is possible. IC-CAP expects that the calibration over the appropriate frequencies has been completed before the measurement is performed. Use Use Use User Fast Linear Sweep CW List Cal Type No H,S, N No Yes or No Notes: For linear sweeps, the number of points requested must fit one of the 8753's predefined number of points. If the desired number of points is not one of the legal set values, IC-CAP checks to see if it still can make a valid measurement by increasing the number of points on the instrument such that data at the desired frequencies can be acquired. For example, a 300 to 500 kHz sweep in 6 steps internally requires IC-CAP to set the instrument to 11 points because 11 is a legal value. When IC- CAP is unable to fit an internal sweep, it attempts to use the Fast CW mode. If CW mode is not desired, set Use Linear List = Yes. For log and list sweeps, set Use Linear List = Yes. This uses the instrument's frequency list capability. Because the 8753 is limited to thirty sub-sweeps, it can store no more than sixty frequencies. Instrument options must match those for which the 8753 was calibrated. † Table 30 IC-CAP Reference Options for the HP/Agilent 8753 Option Description Use User Sweep Yes = use user sweep. No = use instrument's internal sweep Default = No Hold Time Time, in seconds, the instrument waits before each sweep to allow for DC settling. Default = 0 Delay Time Time the instrument waits before setting each frequency. Default = 100 msec Port 1 Atten† Sets Port 1 attenuation. Range is 0 to 70 dB. Default = 20 dB 117 1 Supported Instruments Table 30 118 Options for the HP/Agilent 8753 (continued) Option Description Port 2 Atten† Sets Port 2 attenuation. Range is 0 to 70 dB. Default = 20 dB Source Power† Range is −10 to 25 dbm. Default = −10 Power Slope Models A, B, C, and D opt 11: Range is 0 to 2 dbm/GHz. Default = 0 Models D and E: Range is −2 to +2dBm/GHz. Default = 0 dBm/GHz Port 1 Source Power†† Sets Port 1 source power level. Range is −85 to +10 dBm. Default = −10 dBm Port 1 Power Range[0-7]†† Sets Port 1 source power range. The valid range is 0 to 7. Default = 0 Port 1 Auto Power Range†† Enables auto power ranging on port 1. Default = No Coupled Port Power†† Enables/disables coupled test port power. When disabled, Port 2 options are ignored. Default = Yes Port 2 Source Power†† Sets Port 2 source power level. Range is −85 to +10 dBm. Default = −10 dBm Port 2 Power Range[0-7]†† Sets Port 2 source power range. The valid range is 0 to 7. Default = 0 Port 2 Auto Power Range†† Enables auto power ranging on port 2. Default = No Sweep Time Instrument sweep time. Zero sweep time turns on the Auto Sweep Time, which ensures the minimum sweep time. Default = 100 msec IF Bandwidth (Avg) Instrument receiver IF bandwidth setting in the Averaging menu. Default = 1000 Hz Use Fast CW Enables Fast CW mode. Default = Yes Avg Factor [1-999] Number of averages per measurement. Default = 1 Cal Type [SHN] S = Software calibration. H = Hardware calibration. N = No calibration. Default = H IC-CAP Reference 1 Supported Instruments Table 30 Options for the HP/Agilent 8753 (continued) Option Description Cal Set No. Models A, B, C, and D opt 11: 1 through 5 specifies which instrument calibration sets to use; 6 specifies the active instrument state. Models D and E: 1 through 32 specifies which instrument calibration sets to use; 33 specifies the active instrument state. Default = 1 Soft Cal Sequence Software calibration requires measurement of (L)oad, (O)pen, (S)hort, (T)hru, and optionally (I)solation in a certain order. This string defines the sequence of these standard measurements by these letters (L, O, S, T, I). Default = LOST Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Use Linear List Yes = load linear sweeps into the 8753 frequency list instead of one of the fixed point counts. This mode should be faster than using the instrument’s linear frequency sweep. Default = Yes Freq Range [36N]† This option sets Frequency Range to 3 GHz, 6 GHz, or No change. Default = N Init Command This command field sets the instrument to a mode that is not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Notes: † These options apply only when using external test set (Models A, B, C, and D opt 11). †† These options apply only when using built-in test set (Models D and E). IC-CAP Reference 119 1 Supported Instruments Wiltron360 Network Analyzer The Wiltron360 network analyzer has a frequency range of 10 MHz to 60 GHz depending on the RF source. If the frequency sweep requested exceeds the limits of the source, IC-CAP issues an error message, Parameter Out of Range. Check Inputs. The RF source is an integral component of the system for frequency sweeps, but DC bias must be supplied from external sources to acquire biased RF data. The Wiltron360 can be added to the active instrument list by issuing the Rebuild command from the Hardware Setup window. If the Wiltron360 is manually added to the active instrument list using the Add button, IC-CAP verifies that the instrument is available on the bus when either the Measure or Calibrate command is first issued. IC-CAP assigns the following name to this unit: NWA Network Analyzer Unit IC-CAP supports only hardware calibration for this instrument. After a broadband calibration, the 360 can perform a spot measurement of swept calibrated data—software calibration is not required. This capability also allows a CON frequency input defined in an IC-CAP setup to be used with a broadband calibration. For either measurement method, the requested frequency points must be a subset of the frequency sweep currently set up on the instrument. If the requested frequency point is not part of the instrument sweep, IC-CAP will issue an error message. The measurement modes listed in Table 31 are selected by setting the following fields in the Wiltron360 Instrument Options folder: • Use User Sweep • CW Mode Setup • Cal Type 120 IC-CAP Reference 1 Supported Instruments IC-CAP supports recalling calibration sets from the Wiltron360 internal disk drive. The Cal File Name option is provided to recall the desired calibration state from disk. If no calibration file name is supplied, the current active instrument state is used. IC-CAP loads the Instrument Options parameters during a measurement. Because this involves setting stimulus values sensitive to the calibration, instrument options must match those for which the Wiltron360 was calibrated; otherwise, the Wiltron360 will issue a Calibration may be invalid message if any of the downloaded stimulus values are different from the current calibration. If this message is displayed, check the Instrument Options folder to verify which value is different and modify as appropriate. Use the Calibrate command from the Setup menu to download the options information to the Wiltron360 prior to calibrating. This ensures that the calibration will match IC-CAP’s Setup and be valid. Table 31 Mode IC-CAP Reference Measurement Modes Description Use User Sweep CW Cal Mode Type Setup CW Used when frequency is not the primary Sweep sweep (Sweep Order = 1). IC-CAP performs a spot measurement of 2-port data by setting the instrument to each frequency point individually and measuring all S-parameters. A broadband hardware calibration can be performed. The calibration does not have to match the IC-CAP sweep exactly; however, the desired swept frequency points must be a subset of the calibrated frequencies. Yes No H or N Single Freq CW Yes Yes H Used when a CW mode hardware calibration is performed. 121 1 Supported Instruments Table 31 Mode Measurement Modes Description Intern Linear, log, or list sweeps. Hardware al calibration over requested frequencies is Sweep completed before an IC-CAP measurement is performed. Unlike CW Sweep, the calibration frequencies must match the setup. Use User Sweep CW Cal Mode Type Setup No No H or N The following table describes the Wiltron360 options and their default values, where applicable. Table 32 122 Wiltron360 options Option Description Use User Sweep Yes = Use user sweep No = use instrument's internal sweep. Default = No Hold Time Time, in seconds, the instrument waits before each sweep to allow for DC settling. Default = 0 Delay Time Time the instrument waits before setting each frequency in user sweep mode. Default = 50 msec Port 1 Src Atten Sets Port 1 source attenuation. Range is 0 to 70 dB, in 10 dB increments. Default = 0 dB Port 2 Src Atten Sets Port 2 source attenuation. Range is 0 to 70 dB, in 10 dB increments. Default = 0 dB Port 2 Test Atten Sets test port attenuation (port 2). Range is 0 to 40 dB, in 10 dB increments. Default = 0 dB Source Power Range is dependent on test set used. Default = 0 dBm IF Bandwidth [NRM] Sets instrument's receiver IF Bandwidth. N = Normal R = Reduced M = Minimum. Default = N Avg Factor [1-4095] Sets number of averages per measurement Default = 1 Use CW Mode Setup Indicates to IC-CAP that NWA has been set up in single point (CW) measurement mode. Default = No IC-CAP Reference 1 Supported Instruments Table 32 Wiltron360 options (continued) Option Description Cal Type[HN] H = Hardware calibration N = No calibration Default = H Cal File Name Specifies instrument calibration file to recall. If hardware calibration is requested and this option is empty, IC-CAP will use the current active instrument state. Default = Null Soft Cal Sequence Software calibration requires measurement of (L)oad, (O)pen, (S)hort, (T)hru, and optionally (I)solation in a certain order. This string defines the sequence of these standard measurements by these letters (L, O, S, T, I). Default = LOST IC-CAP Reference Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Init Command Command field to set to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none System Variables None. Software calibration is not provided for the Wiltron360. 123 1 Supported Instruments Oscilloscopes The oscilloscopes supported by IC-CAP are: • HP 54120T Series Digitizing Oscilloscopes • HP 54510 Digitizing Oscilloscope • Agilent Infiniium Oscilloscope • HP 54750 Series Digitizing Oscilloscopes HP 54120T Series Digitizing Oscilloscopes The HP 54120 Series of digitizing oscilloscopes measure time-domain responses, including TDR (time-domain reflectometry). • HP 54121T measures signals from DC through 20 GHz. • HP 54122T (does not have a step generator and cannot perform TDR measurements) provides programmable input attenuation. Bandwidth is reduced to 12.4 GHz due to the input attenuators. • HP 54123T operates up to 34 GHz; it operates up to 20 GHz on channel 1 (the channel on which the step generator is available). IC-CAP assigns the following names to the units: CHn Channel Unit n (1, 2, 3, and 4) A Setup configured for measurements using an HP 54120 Series is in the model file 54120.demo.mdl. See Appendix G, “54120 Demo” for additional information about this demonstration file. These files also include examples using an HP 54120 Series oscilloscope with an HP 8130 pulse generator and provides hints for obtaining good alignment between measured and simulated waveforms when a pulse generator is used. The following instrument capabilities are supported by IC-CAP: • Time-domain measurements nested within DC bias settings provided by DC SMUs. • 4-channel concurrent data acquisition. 124 IC-CAP Reference 1 Supported Instruments • Offset, range, and probe attenuation adjustment for each channel. HP 54122T includes options to set internal attenuation for each channel (refer to Table 33). • Averaging of between 1 and 2048 waveform acquisitions on each channel. • Automatic Pulse Parameter Measurements, such as risetime and peak-to-peak voltage. These are requested in Outputs of Mode T. For help on the available choices, click the middle mouse button over the Pulse Param field and see the Status window. • Square-wave generation (except HP 54122T) on CH1, the left-most connector on the test set. Frequency can be adjusted from 15.3 Hz to 500 kHz. To activate the step generator, the Setup should include an Input with Mode V and Type TDR. In the absence of a type TDR Input, the step generator is not activated. The instruments do not support some of the fields present in a TDR Input. For example, it is not possible for the instrument to offer other than a 50-ohm source impedance. The one field that is of consequence to oscilloscope measurements is Period. IC-CAP directs the instrument to use the closest value supported. The other TDR Input fields are ignored during measurement, and the following hardware-imposed values of the instrument’s step function apply: • Initial value of 0V • Pulsed value of 200 mV into 50 ohms; 400 mV into an open-circuit • Delay of approximately 17 nsec • Risetime of approximately 40 psec • Pulse width equal to about 50 percent of the specified period • Source impedance of 50 ohms • Time-Domain Reflectometry (except HP 54122T). When a type TDR Input is present in the Setup, the reflected signal is available on the unit designated CH1. IC-CAP Reference 125 1 Supported Instruments To make a time-domain measurement, a Setup must have these inputs and outputs: • An Input with Mode T and Type LIN. Here, the values of Start, Stop, and Number of Points govern the time axis of the measurement. Start and Stop values define the time viewing window, and are relative to the trigger event used by the oscilloscope. • Optionally, an Input of Mode V and Type TDR or PULSE. The Period field in this Input controls the rate of the oscilloscope’s internal square-wave generator. If Period is set to 0, or if this Input is absent from the Setup, the oscilloscope’s internal square-wave generator is not activated for the measurement. In this case, a trigger signal must be provided on the oscilloscope’s trigger input. If the Input’s Unit field is set to ground, IC-CAP ignores the Input during the measurement. In this manner, measurements can be performed using a pulse generator controlled by its front panel. If the Input’s Unit field is set to the pulse unit of a supported pulse generator (for example, PULSE1 for an HP 8130 generator), then IC-CAP will control the pulse generator to provide stimulus to the DUT and oscilloscope. Refer to the HP 8130 Pulse Generator documentation provided with IC-CAP. • To capture a waveform from any of the instrument’s 4 channels requires an Output of Mode V. The Output Editor permits you to specify from which channel a waveform is desired. Define an Output for each channel of interest. • To obtain automatically extracted pulse parameters at any of the 4 channels requires an Output of Mode T. The following pulse parameters can be requested: DUTYCYCLE, FALLTIME, FREQ, OVERSHOOT, PERIOD, PRESHOOT, RISETIME, VPP, VRMS, +WIDTH, and -WIDTH. Consult the instrument’s Front Panel Operation Reference for definitions of these parameters or information on the process by which the instrument computes them. 126 IC-CAP Reference 1 Supported Instruments By defining multiple Outputs for a scope channel, it is possible to obtain both the full time-domain waveform and any number of automatically extracted pulse parameters for that channel, all in the same measurement. This can be done with any or all of the 4 channels within the same measurement. The following table describes the HP 54120 series options and their default values, where applicable. Table 33 HP 54120 Series Options Option Description Hold Time Time, in seconds, prior to performing time-domain measurement. Can be used to permit additional DC stabilization when a time-domain sweep is nested within DC steps provided by a DC bias unit. Default = 0 Averages Number of averages. Maximum = 2048. Default = 1 CH1 Offset† DC offset value of Channel 1 in volts. Does not directly affect waveforms returned from the oscilloscope. However, an improper setting can cause the instrument to fail when measuring pulse parameters, such as RISETIME. Set to a value close to the middle of the expected range of the output voltage waveform to maximize the instrument’s ability to achieve high resolution without experiencing clipping. Valid range is ± 500mV ⋅ (CH1 Probe Attn) ⋅ (CH1 Internal Attn). Default = 200.0mV CH1 Probe Attn† Set to 10 if the channel 1 probe provides a divide by 10 functionality (20dB). Specifying the attenuation of the probe permits the oscilloscope to generate data in which the probe attenuation is corrected out. Values between 1 and 1000 are accepted. Default = 1.0 CH1 Internal Attn† HP 54122T only. This option causes IC-CAP to control attenuators inside the 54122 test set. The attenuators have limited power-handling ability††. Measured voltages will take the attenuation setting into account. Values 1, 3, 10, and 30 are valid. Default = 1.0 IC-CAP Reference 127 1 Supported Instruments Table 33 HP 54120 Series Options (continued) Option Description CH1 Range† Set in excess of the maximum anticipated signal swing for this channel. Does not affect waveforms returned from the oscilloscope. However, an improper setting can cause the instrument to fail when measuring pulse parameters, such as RISETIME. Specify a Range value between CH1 Range† (cont’d) 8mV ⋅ (CH1 Probe Attn) ⋅ (CH1 Internal Attn) and 640mV ⋅ (CH1 Probe Attn) ⋅ (CH1 Internal Attn). Default = 640.0 mV Notes: † Option table entries are also provided for Offset, Probe Attn, Internal Attn, and Range on channels CH2, CH3, and CH4. ††Changing the Probe Attn options for CH1-CH4 and the trigger input does not attenuate the input signals. It only changes the results reported by the instrument. To deliver signals exceeding 2V DC or 16 dBm AC peak, use an external attenuator. By using the internal attenuators of the HP 54122T (via the Internal Attn options), larger voltages can be accepted. Limitations on attenuator voltage and power handling are described in the Internal Atten documentation in the Channels Menu chapter of the HP 54122T Front Panel Reference. NO TE The external trigger is ignored if a TDR type Input is defined in the Setup. In the presence of a TDR type Input, the scope is triggered by its internal TDR step generator. The TRG options listed in the following table apply when driving the trigger input of the oscilloscope with an external signal. This is typically done with the trigger output from a signal generator. Table 34 128 Trigger Options for the HP 54120T Series Option Description TRG Probe Attn Set to 10 if the trigger probe is fitted with a 10X (20dB) divider. Values between 1 and 1000 are accepted. Default = 1.0 IC-CAP Reference 1 Supported Instruments Table 34 Trigger Options for the HP 54120T Series (continued) Option Description TRG Slope Specify triggering on a rising (+) or falling (−) edge. Default =+ TRG Level Voltage threshold at which triggering occurs. Valid range is ±1V ⋅ (TRG Probe Attn). Default = 100.0mV Normalize TDR If Yes, TDR waveform data from CH1 is subject to the HP 54120 series reflection normalization process. This can substantially improve waveform integrity when cabling and test fixtures have impedance mismatches. Prior to using this option perform calibration of the network reflection path via the front panel Network page. Default = No (This option is not supported by the HP 54122.) Delay for Timeouts For long-running measurements (that use a high number of averages, for example) use this option to avoid measurement timeouts. Default=0 Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none HP 54510 Digitizing Oscilloscope The HP 54510 is a 1 giga-sample/second, 2-channel digitizing oscilloscope. The HP 54510 driver is an example of a driver created using the Open Measurement Interface. The driver’s source code can be found in the files user_meas3.hxx and user_meas3.cxx in the directory $ICCAP_ROOT/src. For information, refer to Chapter 2, “Drivers.” IC-CAP assigns the following names to the units: CHn Channel Unit n (1 and 2) The following instrument capabilities are supported by IC-CAP: • Time-domain measurements nested within DC bias settings provided by DC SMUs. • 2-channel concurrent data acquisition. IC-CAP Reference 129 1 Supported Instruments • Offset, range, and probe attenuation adjustment for each channel. (Refer to Table 35.) • Averaging 1 to 2048 waveform acquisitions on each channel. • Automatic Pulse Parameter Measurements, such as risetime and peak-to-peak voltage. These are requested in Outputs of Mode T. For help on the available choices, click the middle mouse button over the Pulse Param field and see the Status window. To make a time-domain measurement, a Setup must contain these Inputs and Outputs: • An Input with Mode T and Type LIN. Here, the values of Start, Stop, and Number of Points govern the time axis of the measurement. Start and Stop values define the time viewing window, and are relative to the trigger event used by the oscilloscope. The HP 54510 driver uses the repetitive sampling mode and therefore always measures 501 points. The timebase range is set to 500 × step size of the input sweep. The timebase requires a value in the sequence 1-2-5, that is, 1 nsec, 2 nsec, 5 nsec, 10 nsec, ... , 1 sec, 2 sec, or 5 sec. If the Input step size does not correspond to a valid timebase, the driver aborts the measurement and recommends new stop and step values for the input sweep. • Optionally, an Input of Mode V and Type PULSE. A trigger signal must be provided on the oscilloscope’s trigger input. If the Input Unit field is set to ground, IC-CAP ignores the Input during the measurement. In this manner, you may perform measurements using a pulse generator controlled by its front panel. If the Input Unit field is set to the pulse unit of a supported pulse generator (for example, PULSE1 for an HP 8130 generator), then IC-CAP will control the pulse generator to provide stimulus to the DUT and oscilloscope. For more information, refer to “HP 8130 Pulse Generator” on page 147. Also refer to the documentation for the HP 54120 in the 54120.demo.mdl file as well as Appendix G, “54120 Demo.” • To capture a waveform from either of the instrument’s 2 channels requires an Output of Mode V. The Output Editor permits you to specify from which channel a waveform is desired. Define one such Output for each channel of interest. 130 IC-CAP Reference 1 Supported Instruments • To obtain automatically extracted pulse parameters at either of the 2 channels, the Setup must include an Output of Mode T. The following pulse parameters can be requested: DUTYCYCLE, FALLTIME, FREQ, OVERSHOOT, PERIOD, PRESHOOT, RISETIME, VPP, VRMS, +WIDTH, and -WIDTH. Consult the instrument’s Front Panel Operation Reference for definitions of these parameters, or information on the process by which the instrument computes them. By defining multiple Outputs for a scope channel, both the full time-domain waveform and any number of automatically extracted pulse parameters for that channel can be obtained, all in the same measurement. This can be done with either or both of the channels in the same measurement. The following table describes the HP 54510 options and default values, where applicable. Table 35 IC-CAP Reference HP 54510 Options Option Description Hold Time Time, in seconds, prior to performing time-domain measurement. Can be used to permit additional DC stabilization when a time-domain sweep is nested within DC steps provided by a DC bias unit. Default = 0.0 Averages Number of averages. Maximum = 2048. The HP 54510 rounds the number of averages to the nearest power of 2. If the value is exactly halfway between, it takes the higher value. Default = 1 CH1 Offset† DC offset value of Channel 1, in volts. This does not directly affect waveforms returned from the oscilloscope. However, an improper setting can cause the instrument to fail when measuring pulse parameters, such as RISETIME. Set this to a value close to the middle of the expected range of the output voltage waveform; this will maximize the instrument’s ability to achieve high resolution without experiencing clipping. Valid range is ±250V • (CH1 Probe Attn). Default = 0.0 131 1 Supported Instruments Table 35 HP 54510 Options (continued) Option Description CH1 Probe Attn†, Set to 10 if the Channel 1 probe provides a divide by 10 functionality (20 dB) and 50 ohm input impedance is selected. Specifying the attenuation of the probe permits the oscilloscope to generate data in which the probe attenuation is corrected out. Values between 0.9 and 1000 are accepted. Default = 1.0 †† CH1 Range† Set in excess of the maximum anticipated signal swing for this channel. This option does not affect waveforms returned from the oscilloscope. However, an improper setting can cause the instrument to fail when measuring pulse parameters, such as RISETIME. Default = 2.0 Notes: † Option table entries are also provided for Offset, Probe Attn, and Range for CH2. ††Changing Probe Attn options for CH1, CH2 and the External Trigger input does not attenuate the input signals. It only changes the results reported by the instrument. To deliver signals exceeding 5V rms (50 ohm) or 250V (1 Mohm), an external attenuator should be used. Refer to the following table for oscilloscope trigger options. The TRG/TRIG options apply to the trigger input. This is typically done with the trigger output from a signal generator. When using the EXT TRIG channel, be sure the TRG Source option is set to “E” (External Trigger). NO TE 132 Instrument settings not included in the Instrument Options folder, such as input impedance, can be set manually before executing Measure. IC-CAP Reference 1 Supported Instruments Table 36 Oscilloscope Trigger Options for the HP 54510 Option Description EXT TRIG Attn Attenuation of the EXT TRIG channel. Set to 10 if the trigger probe is fitted with a 10X (20dB) divider and the EXT TRIG channel is set to 50 ohms. Values between 0.9 and 1000 are accepted. Default = 1.0 TRG Source Specify the trigger source channel: 1 (CH1), 2 (CH2) or E (External Trigger). Default = E TRG Slope Specify + (rising edge) or − (falling edge). Default = + TRG Level Voltage threshold at which triggering occurs. Valid range is ±2V • (TRG Probe Attn) for the EXT TRIG channel and ±1.5 • (full scale from center of screen) for channels CH1 and CH2. Default = 0.0 Delay for Timeouts For long-running measurements (that use a high number of averages, for example), use this option to avoid measurement timeouts. Default = 0.0 Init Command Use to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Agilent Infiniium Oscilloscope The Agilent Infiniium scopes are available as 2 or 4-channel digitizing oscilloscopes. IC-CAP supports the following Infiniium scopes: • 54810A, 54815A, 54820A, 54825A 500 MHz bandwidth, 1 GSa/s sample rate and 32K of memory width. • 54835A, 1 GHz bandwidth, 4 GSa/s sample rate, 62K memory width. • 54845A, 1.5 GHz bandwidth, 8 GSa/s sample rate, 64K memory width. IC-CAP Reference 133 1 Supported Instruments The IC-CAP driver supports acquisition only from Channels 1 and 2. IC-CAP assigns the following names to the units: CHn Channel Unit n (1 and 2) The following instrument capabilities are supported by IC-CAP: • Time-domain measurements nested within DC bias settings provided by DC SMUs. • 2-channel concurrent data acquisition (Channel 1 and 2 only). • Offset, range, and probe attenuation adjustment for each channel. (Refer to Table 37.) • Averaging 1 to 2048 waveform acquisitions on each channel. • Automatic Pulse Parameter Measurements, such as risetime and peak-to-peak voltage. These are requested in Outputs of Mode T. For help on the available choices, click the middle mouse button over the Pulse Param field and see the Status window. To make a time-domain measurement, a Setup must contain these Inputs and Outputs: • An Input with Mode T and Type LIN. Here, the values of Start, Stop, and Number of Points govern the time axis of the measurement. Start and Stop values define the time viewing window, and are relative to the trigger event used by the oscilloscope. The Infiniium acquisition range is given by the number of acquisition points multiplied by the sampling period (1/Acquisition Rate). Acquisition points and frequency are set in the instrument option table. If the time viewing window set by the Start and Stop values is wider than the acquisition range, the driver aborts the measurement. The Acquisition rate must be in the 1, 2.5, 5, 10 sequence, that is, 1MSa/s, 2.5 MSa/s, 5 MSa/s, etc. The maximum acquisition rate depends on the scope model. The acquisition mode may be Real or Equivalent Time. Real time mode usually is used for single events, such as transients, while equivalent time may be used for periodic signals. 134 IC-CAP Reference Supported Instruments 1 • Optionally, an Input of Mode V and Type PULSE. A trigger signal must be provided on the oscilloscope’s trigger input. If the Input Unit field is set to ground, IC-CAP ignores the Input during the measurement. In this manner, you may perform measurements using a pulse generator controlled by its front panel. If the Input Unit field is set to the pulse unit of a supported pulse generator (for example, PULSE1 for an HP 8130 generator), then IC-CAP will control the pulse generator to provide stimulus to the DUT and oscilloscope. For more information, refer to “HP 8130 Pulse Generator” on page 147. • To capture a waveform from either of the instrument’s 2 channels requires an Output of Mode V. The Output Editor permits you to specify from which channel a waveform is desired. Define one such Output for each channel of interest. When acquisition range and points differ from sweep time interval and points, the waveform is actually interpolated by the actual measured data. It is a good practice to use an acquisition range that is slightly greater than the time window, but not too much greater. • To obtain automatically extracted pulse parameters at either of the 2 channels, the Setup must include an Output of Mode T. The following pulse parameters can be requested: DUTYCYCLE, FALLTIME, FREQ, OVERSHOOT, PERIOD, PRESHOOT, RISETIME, VPP, VRMS, +WIDTH, and -WIDTH. Consult the instrument’s Front Panel Operation Reference for definitions of these parameters, or information on the process by which the instrument computes them. By defining multiple Outputs for a scope channel, both the full time-domain waveform and any number of automatically extracted pulse parameters for that channel can be obtained, all in the same measurement. This can be done with either or both of the channels in the same measurement. As shown in the following instrument options table, the trigger source may be set to Channel 1 or 2, or to EXT or AUX. The trigger sweep may be Auto, Triggered or Single. Trigger level and slope are also specified. IC-CAP Reference 135 1 Supported Instruments The following table describes the Infiniium options and default values, where applicable. Table 37 136 Infiniium Options Option Description Hold Time Time, in seconds, prior to performing time-domain measurement. Can be used to permit additional DC stabilization when a time-domain sweep is nested within DC steps provided by a DC bias unit. Default = 0.0 Sample Rate The internal sample frequency. It must be in the 1, 2.5, 5, 10 sequence. In real-time mode the maximum sample rate is 1 GSa for the 54810A/15A, 2GSa for the 54820A/25A, 4 GSa for the 54835A and 8 GSa for the 54845A (2 channel mode). Default = 1 GSa. Acquisition Mode Can be real time (R) or equivalent time (E). Real time is used for single events such as transients while equivalent time may be used to increase the “equivalent” sampling rate when the waveform is periodical. Default = R. Acquisition Count Turns averaging on or off, and (when on) sets the number of averages. Allowed range is 1 through 4096. Use 1 to turn averaging off. Use 2 through 4096 to turn on averaging and set the count. Default = 1. Acquisition Points Number of acquired points at the sample rate. The acquisition range is defined as the acquisition period 1/(Sample rate) multiplied by the number of points. The number of points is limited by the memory depth: 32,768 points for the 54810A/15A/20A/25A and 65,536 points for the 54835A/45A. CH1 Scale† [V/div.] DC vertical sensitivity in Volts per division. When probe attenuation is 1 maximum sensitivity is 5 V/div. Minimum sensitivity is 1 mV/div for 54810A/15A/20A/25A and 2 mV/div for 54835A and 54845A. Default = 500 mV/div. CH1 Offset† [V] DC available offset. It depends on the scale. Maximum offset is ±250V when CHn Scale = 5 V/div. CH1 Input† Channel input impedance: DC 50 ohm (DC50),1 Mohm (DC), AC. LFR1 and LFR2 are also possible when using the Agilent 1153A differential probe. Default is DC. IC-CAP Reference 1 Supported Instruments Table 37 Infiniium Options (continued) Option Description CH1 Probe Attn† Set to 10 if the Channel 1 probe provides a divide-by-10 functionality (20 dB) and 50 ohm input impedance is selected. Specifying the attenuation of the probe permits the oscilloscope to generate data in which the probe attenuation is corrected out. Values between 0.9 and 1000 are accepted. Default = 10.0. †† Trigger Input Set trigger input source (1, 2, AUX or EXT). Default is 1 for Channel 1. Trigger Sweep Set trigger sweep Modes to Auto (A), Triggered (T), or Single (S). Default is Auto (A). Trigger Slope The only supported trigger mode is Edge. Trigger slope may be positive (+) or negative (-). Default is positive (+). Trigger Level [V] Sets voltage level at which trigger occurs. Level range depends on sweep mode and scope type. Default is 500 mV. Delay for Timeouts For long-running measurements, such as collecting a high number of averages, use this option to avoid measurement timeouts. Default = 0.0 Init Command Sets the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none Notes: † Option table entries are also provided for Scale, Offset, Input and Probe Attn, for CH2. †† Changing Probe Attn options for CH1, CH2 and the External Trigger input does not attenuate the input signals. It only changes the results reported by the instrument. To deliver signals exceeding 5V rms (50 ohm) or 250V (1 Mohm), an external attenuator should be used. IC-CAP Reference 137 1 Supported Instruments HP 54750 Series Digitizing Oscilloscopes The IC-CAP driver for the HP 54750 supports the following plug-in modules: • HP 54753A. This module is a 2-channel vertical plug-in with a TDR step generator built into channel one. The bandwidth of the TDR/vertical channel is 18 GHz. The bandwidth of channel 2 is 20 GHz. • HP/Agilent 54754A. This module has 2 independent vertical channels and 2 independent step generators. The bandwidth of both channels is 18 GHz. • HP 54752A and HP 54752B. The 54752A has two 50 GHz bandwidth channels and 54752B provides a single cost-effective channel. • HP 54751A. This module has two 20 GHz bandwidth channels. Since the instrument is configurable, the insertion of the instrument in the active instrument table must be done using rebuild active list. Plug-in modules must be placed starting from slot 1 without discontinuities. IC-CAP assigns the following names to the units: • TDRn for TDR channels • CHn for normal scope acquisition channels Example files: A Setup configured for measurements using the HP 54750, is in the model file /examples/model_files/misc/hp54750.mdl. The following instrument capabilities are supported by IC-CAP: • Time domain acquisition for each channel (TDR or CH). • Offset, Scale, and Probe Attenuation adjustment for each channel. • Averaging of between 1 and 4096 waveform acquisition. • Automatic Pulsed/Waveform parameter measurements for each TDR or CH type channel. • Trigger Probe Attenuation, Slope, Level, Mode as well as the trigger slot (2 or 4 in case 2 plug-ins are present) can be set in the instrument table. 138 IC-CAP Reference 1 Supported Instruments • Start time, Stop time, and number of points are set in the Input Time sweep. • Step generator on TDR channels. Frequency rate can be adjusted between 50 and 250 kHz. To activate the step generator the setup should include an Input with mode V and Type TDR. Note that only one TDR step generator can be active per setup (differential TDR is not supported). The period on the TDR input is used to calculate frequency for TDR/TDT measurements. • TDR normalized measurements are supported for each of the TDR channels. To acquire a normalized TDR response, perform either software or hardware calibration, then set Normalize to Y in the TDR channel and measure. To perform software TDR calibration, first set the normalization option to TDR, then run Calibrate and follow the steps. • TDT normalized measurements are supported for each plug-in. Plug-in channel 1 must be the TDR source, and channel 2 must be the TDT sink. To acquire a normalized TDT measurement on channel 2, perform either software or hardware TDT calibration, then set Normalize to Y on channel 2 (sink) and measure. To perform software TDT, set the normalization option to TDT, run Calibrate, and follow the steps. You must be sure to insert the oscilloscope into IC-CAP’s instrument table. Connect the instrument, switch it on, and perform Rebuild in the Hardware Setup. The HP 54750 should be now present in the Instrument List. Select HP 54750 in the list and select Configure. The units should reflect the hardware configuration and the plug-in type in the Unit Table. Here are examples of what should appear in the table: • If module HP/Agilent 54754 occupies slots 1 and 2, TDR1 and TDR2 units should appear in the Unit Table. • If module HP 54753 occupies slots 1 and 2, TDR1 and CH2 units should appear in the Unit Table. To make time-domain measurements (acquisition only), a setup must contain these Inputs and Outputs: IC-CAP Reference 139 1 Supported Instruments • An Input with Mode T, and Type LIN. Minimum start time is 20 nsec; max start time is 10 sec. The minimum time range is 100 psec while the maximum range is 10 sec. During acquisition (no internal TDR) the number of acquired points can be set to any number between 16 and 4096. • A trigger signal must be provided at the trigger input (slot 2 or 4) to acquire any waveform. Trigger Mode can be selected in the instrument option. Use trigger mode FREErun or TRIGgered for periodic waveforms. Use option TRIGgered when using external trigger for example for acquiring transients or when using external TDR step generator. • To capture a waveform, an Output of Mode V is required. Define an output for each channel of interest. • To obtain automatically-extracted pulse parameters, the setup must include an output of mode T that specifies the unit and the requested parameter. Examples of parameter values are VPP and VRMS. To make TDR or TDT measurements, a setup must contain these Inputs and Outputs: • An Input with Mode T and Type LIN. Minimum start time is 20 nsec, max start time is 10 sec. The minimum time range is 100 psec while the maximum range is 10 sec. When the instrument’s Normalize option is turned OFF, the number of acquired points can be set to any number between 16 and 4096. When the Normalize option is ON, the number of points can be set to any number between 16 and 4096 that is a multiple of 2, such as 512 or 1024. • An Input with Mode V and Sweep Type TDR. The unit is set to the TDR source channel. Only the value of the Period is used during measurement for setting the frequency of the internal step generator. Use a value between 50 Hz (20 msec) and 250 kHz (4 usec). The other fields, such as Delay and Width, are used only by the simulator. If an external TDR step generator is used, then Unit must be set to GND, and all parameters (including Period) are used only by the simulator. 140 IC-CAP Reference 1 Supported Instruments • To capture the output waveforms, insert 1 or 2 Outputs of mode V referring to the TDR source channel for TDR measurements, or to the sink channel for TDT measurements. • (Optional). To measure waveform parameters such as VPP and RISETIME, insert 1 or more Outputs of mode T. TDR or TDT measurements can be done with or without normalization. Normalization establishes a reference plane different from the oscilloscope output. The reflection and ohm measurements are based on the actual measured step height. Also, from this information, the scope builds a filter, which can be applied to any reflected signal. The risetime of the filtered step can be selected. The filtered step removes any losses or discontinuities from the reference plane generated by the plug-in. To measure without normalization, simply set the Normalize flag to N in the instrument options for any channel involved in the TDR or TDT measurement. To make normalized TDR measurements, either hardware or software normalization must be performed prior to measurement. To perform software calibration, set the Normalization mode to TDR in the Instrument Option Table. Then run Calibrate. This routine will load current sweeps (start, stop and period) in the instruments and then will ask the operator to insert the calibration standards (short and load) at the reference plane. Once the instrument has been successfully calibrated, set the Normalize flag of the TDR source channel to ‘Y’ before running a measurement to acquire normalized data. Set the normalized response Unit to VOLT (default), REF or OHM in the Instrument Options Table. When setting response scale to VOLT, IC-CAP will acquire the actual normalized response. When the response scale is OHM, IC-CAP will acquire the normalized-to-50 ohm response. This is particularly useful when evaluating characteristic impedance of different line series. Setting the scale to REF will acquire the reflection due to a change of impedance. The normalized rise time can also be set in the instrument option table. The minimum settable rise time IC-CAP Reference 141 1 Supported Instruments actually depends on the number of points. Generally speaking, increasing the number of points allows a smaller rise time and therefore improves the space resolution (minimum distance between 2 discontinuities to distinguish them in the space/time domain). To make normalized TDT measurements, either hardware or software normalization must be performed prior to measurement. To perform software calibration, set Normalization mode to TDT in the Instrument Option Table. Then connect source and sink together (without DUT) and run Calibrate. Once the instrument has been successfully calibrated, set the Normalize flag of the TDT sink channel to ‘Y’ before running a measurement to acquire normalized data. Normalized Response unit can be set to VOLT (default) or GAIN. The normalize risetime can also be varied with the same limitation described above. Differential TDR/TDT Capability New addition to TDR driver: Differential TDR/TDT capabilities. Two new entries have been added to the Agilent 54750 Instrument table: Differential Mode Set the instrument in differential mode. Channel 1 and 2 are the TDR channels. The differential stimulus on channel 1 and 2 can be Differential (DIFF) or Common (COMM). Default is no differential stimulus (NONE). Once the instrument has been calibrated in differential Response mode, the response reading can be set to Differential (DIFF) Mode or Common (COMM). Note that this field is active only when the Normalize Flag of the response channels is set to yes. Default is DIFF. 142 IC-CAP Reference 1 Supported Instruments To make TDR differential measurements, place the Agilent 54754A plug-in in the first 2 instrument slots (channel 1 and 2). In the IC-CAP measurement page insert 1 input of type TDR (Unit TDR1 or CH1). Insert 1 input of Mode T (Type LIN) and set the time interval and the number of points. Insert 2 outputs of Mode V monitoring channel 1 and 2. In the 54750 Instrument Option Table, set the Differential Mode to DIFF or COMM. To measure raw data simply set the Normalize flags of CH1 and CH2 to N and run the measurements. To measure normalized data, perform the TDR normalization before running the measurements. Follow the instructions in the 54754 manual to calibrate in differential TDR mode. Once the instrument has been successfully calibrated, set the Normalize Mode to TDR, set Differential Response Mode to DIFF or COMM. To measure the normalized response simply set the Normalize flag of channel 1 and 2 to yes. Summary differential TDR Differential Mode Differential Response Mode Response Mode CH1 CH2 Raw DIFF/COMM Not Relevant Nor relevant N N Norm DIFF/COMM DIFF/COMM TDR Y Y To make TDT differential measurements place 1 Agilent 54754A plug-in in the first 2 instrument slots (channel 1 and 2) and second 54754 plug-in in the third and fourth slots. When measuring differential TDT, the driver assumes that Channel 1 and 2 supply the differential stimulus (input). In the IC-CAP measurement setup page insert 1 input of type TDR (Unit TDR1 or CH1). IC-CAP Reference 143 1 Supported Instruments Insert 1 input of Mode T (Type LIN) and set the time interval and the number of points. Insert 4 outputs of Mode V monitoring channel 1 to 4. In the 54750 Instrument Option Table, set the Differential Mode to DIFF or COMM. To measure raw data simply set the Normalize Flags of CH1,CH2,CH3 and CH4 to N and run the measurements. To measure normalized data, the user needs to perform the TDT normalization before running the measurements. Follow the instructions in the 54754 manual on how to calibrate in differential TDT mode. Once the instrument has been successfully calibrated, set the Normalize Mode to TDT, set Differential Response Mode to DIFF or COMM. To measure the normalized response simply set the normalized flag of channels 3 and 4 to yes. Summary differential TDT: Differential Mode Differential Response Mode Response Mode CH1 CH2 CH3 CH4 Raw DIFF/COMM Not Relevant Not relevant N N N N Norm DIFF/COMM DIFF/COMM TDT N N Y Y The following table describes the HP 54750 options and default values, where applicable. Table 38 144 HP 54750 Options Table Option Description Hold Time Time, in seconds, prior to performing time-domain measurements. Default = 0 IC-CAP Reference 1 Supported Instruments Table 38 IC-CAP Reference HP 54750 Options Table (continued) Option Description Averages Number of averages per sample. Min = 1 (off), Max = 4096. Default = 16 Normalization Mode Two modes supported for calibration and measurements: TDR or TDT. Default = TDR Normalized Response Unit Sets the type of unit for the acquired normalized response. Possible choices are VOLT, REF or OHM for TDR type measurements and VOLT or GAIN for TDT measurements. Default = VOLT Normalized Response Risetime Set the risetime for the normalized response. Minimum risetime depends on number of points. In case specified rise time is greater than the minimum allowed for that number of points, IC-CAP will set the minimum possible value. Default = 40 psec CHn Probe Attenuation Probe Input impedance is always 50 ohm. Specifying the attenuation of the probe permits the oscilloscope to generate data in which the probe attenuation is corrected out. For example, set it to 10 if the channel 1 probe provides a divide by 10 functionality. Values between 0.9 and 1000 are accepted. Default = 1.0 CHn Offset DC offset value of Channel 1, in volts. This does not directly affect waveforms returned from the oscilloscope. However, an improper setting can cause the instrument to fail when measuring pulse parameters, such as RISETIME. Set this to a value close to the middle of the expected range of the output voltage waveform; this will maximize the instrument’s ability to achieve high resolution without experiencing clipping. Valid range is ±250V. Default = 200.0 mV CHn Scale Default = 100.0 mV/div. CHn Normalize Normalization Flag. When set to ‘Y’, IC-CAP acquires the normalized response with unit as specified in The Normalized Response Unit. Default = N TRG Probe Attenuation Default = 1.0 145 1 Supported Instruments Table 38 146 HP 54750 Options Table (continued) Option Description TRG Slope Specifies triggering on a rising (+) or falling (−) edge. Default = + TRG Level Voltage threshold at which triggering occurs. Range depends on attenuation. Default = 0.0 mV TRG Slot Choose the input trigger channel. For example, when 54754 plug-in is present on slot 1 and 2, trigger will be on slot 2. When another TDR plug-in is present on slot 3 and 4, slot 4 is another possible choice for trigger. Default = 2 TRG Mode Used when acquiring a waveform not in TDR mode (internal trigger is used in that case). Possible choices are freerun (FREE) usually used for periodic waveform or triggered (TRIG) for transients. Default = FREE Delay for timeout Increase this delay when acquiring a large number of points or averages. This gives more time for the instrument to digitize the waveform and save it into memory. Default = 3 Init Command Use to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = None IC-CAP Reference Supported Instruments 1 Pulse Generators This section describes the HP 8130 and the HP 8131 pulse generators. HP 8130 Pulse Generator The HP 8130 is a programmable pulse generator controllable by IC-CAP. It provides excellent features for time-domain characterization using pulse stimuli. The following pulse characteristics are programmable: • Period, Width, and Delay • Risetime and Falltime • Initial and Pulsed Voltage Levels IC-CAP assigns the following name to the channel 1 output unit: • PULSE1 The HP 8130 offers a fixed source impedance of 50 ohms. Pulse period can be varied from 3 nsec to 99.9 msec. Rise and falltimes can be varied from 670 psec to 100 µsec. The output voltage range is from −5.2 to +5.2V, but the maximum voltage swing must be less than or equal to 5.2V. A complementary output signal is available (refer to Table 39). A Setup configured for measurements using the HP 8130, along with HP 54120 Series digitizing oscilloscopes is in the model file 54120.demo.mdl. Additional information about this demonstration file is available in Appendix G, “54120 Demo.” These files also include examples using an HP 54120 Series oscilloscope with no pulse generator, or with a manually controlled pulse generator. The “54120 Demo” also provides hints for obtaining good alignment between measured and simulated waveforms. The following table describes the HP 8131 options and their default values, where applicable. IC-CAP Reference 147 1 Supported Instruments Table 39 HP 8130 Options Option Description Width at Top Flag provided to aid simulator compatibility. The HP 8130 defines pulse width to include the top section of the pulse plus one-half of the rising and falling edges. SPICE defines pulse width to include the top of the pulse only. For compatibility with SPICE, set this option to Yes (the 8130 pulse will become wider). Default = No Enable Comp Out If Yes, complementary data can be obtained by cabling to the complementary output connector on the HP 8130. Default = No Pulse Delay Offset The HP 8130 has a delay between its trigger output and signal output (SPICE has nothing like this). The value is added to the TDR or PULSE sweep Delay value. Positive values will shift the waveform to the right; negative values will shift the waveform to the left. This option permits one to align the simulated and measured waveforms. The option may need adjustment if the period is changed. Additional hints about the use of this option are provided in Appendix G, “54120 Demo,” in the section Aligning Data. Default = 0 Init Command Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none HP 8131 Pulse Generator The HP 8131 is a programmable pulse generator controllable by IC-CAP. It provides excellent features for time-domain characterization using pulse stimuli. The following pulse characteristics are programmable: • Period, Width, and Delay • Initial and Pulsed Voltage Levels IC-CAP assigns the following name to the channel 1 output unit: PULSE1 148 IC-CAP Reference 1 Supported Instruments The HP 8131 offers a fixed source impedance of 50 ohms. Pulse period can be varied from 2 nsec to 99.9 msec. Rise and fall times are fixed <200 psec; if >200 psec, IC-CAP will issue a warning PULSE1 Rise/Fall time fixed at less than 200ps. The output voltage range is from −5.0 to +5.0V; the maximum voltage swing must be less than or equal to 5.0V. The offset voltage is from -4.95V to +4.95V. A complementary output signal is available (refer to Table 40). A Setup configured for measurements using the HP 8131, along with HP 54120 Series digitizing oscilloscopes is in the model file 54120.demo.mdl. Additional information about this demonstration file is available Appendix G, “54120 Demo.” These files also include examples using a HP 54120 Series oscilloscope without a pulse generator, or with a manually controlled pulse generator. The “54120 Demo” also provides hints for obtaining good alignment between measured and simulated waveforms. The following table describes the HP 8131 options and their default values, where applicable. Table 40 IC-CAP Reference Options for the HP 8131 Option Description Width at Top Flag provided to aid compatibility with SPICE and other simulators. The HP 8131 defines pulse width to include the top section of the pulse plus one-half of the rising and falling edges. SPICE defines pulse width to include only the top of the pulse; as a result, SPICE pulses are wider. For SPICE compatibility, set this option to Yes. Default = No Enable Comp Out If Yes, complementary data can be obtained by cabling to the complementary output connector on the HP 8131. Default = No 149 1 Supported Instruments Table 40 Options for the HP 8131 (continued) Option Description Pulse Delay Offset The HP 8131 has a delay between its trigger output and signal output (SPICE does not). The value is added to the TDR or PULSE sweep Delay value. Positive values will shift the waveform to the right; negative values will shift the waveform to the left. This option permits alignment of simulated and measured waveforms. The option may need adjustment if the period is changed. Additional hints about the use of this option are provided in Appendix G, “54120 Demo,” in the section Aligning Data. Default = 0 Init Command 150 Command field to set the instrument to a mode not supported by the option table. This command is sent at the end of instrument initialization for each measurement. Normal C escape characters such as \n (new line) are available. Default = none IC-CAP Reference 1 Supported Instruments Dynamic Signal Analyzer IC-CAP supports the HP/Agilent 35670A dynamic signal analyzer. HP/Agilent 35670A Dynamic Signal Analyzer The HP/Agilent 35670A portable 2- or 4-channel dynamic signal analyzer evaluates signals and devices under 102.4 kHz real-time rate at 800 lines of resolution. It provides spectrum, network, and time- and amplitude-domain measurements from virtually DC to slightly over 100 kHz. IC-CAP assigns the following names to the units: CHn Channel Unit (1 and 2) SRC Source Unit The following table describes the HP/Agilent 35670A options and their default values, where applicable. Table 41 IC-CAP Reference HP/Agilent 35670A Options Option Description Hold Time Time delay, in seconds, before each primary sweep begins. Delay Time Time delay, in seconds, before each sweep point is measured. Averages Defines the averaging of the instrument. Maximum is 9,999,999. Source Mode Source waveforms: (R) random noise, (B) burst random, (P) periodic chirp, or (S) fixed sine. DC Offset Specifies a DC offset for the source output. Source Freq Sets the frequency of the sine source. Window Type Type of windowing function: (H) Hanning, (U) uniform, (F) flat or (E) exponential. 151 1 Supported Instruments Table 41 152 HP/Agilent 35670A Options (continued) Option Description CHn Units Vertical unit for the specified display’s Y axis: (V) volts, (V2) square volts, (V/RTHZ) square root power spectral density, or (V2/HZ) power spectral density. Init Command Extra command to initialize the instrument to a certain mode. IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 2 Drivers Prober Drivers 154 Prober Driver Test Program 164 Matrix Drivers 166 Using IC-CAP with the HP 5250A Matrix Driver 178 Using IC-CAP with HP 4062UX and Prober/Matrix Drivers 185 Adding Instrument Drivers to IC-CAP 189 Class Hierarchy for User-Contributed Drivers 226 Order in Which User-Supplied Functions are Called 229 Handling Signals and Exceptions 236 This chapter describes prober and matrix driver functions, prober settings and commands, the prober driver test program, and using OMI to add drivers. Agilent Technologies 153 2 Drivers Prober Drivers A prober driver is a set of USERC functions designed to control an IC wafer prober from an IC-CAP macro program. There are 3 types of probers (an initial call declares which type is in use) with these symbolic names: • EG1034X (ElectroGlas 1034X), EG2001X (ElectroGlas 2001X) • APM3000A (and APM6000A and APM7000A) (TSK APM models) • SUMMIT10K (Cascade SUMMIT 10000) These probers share the same driver functions. External user functions and internal design functions, as well as prober settings and commands, are described in this section. Additional TIS prober drivers required the renaming of native IC-CAP prober functions from prober_xxxx() to icprober_xxxx(). This only affects systems where the prober.c file has been customized in the OMI environment, and will not affect previously-written macros. See the Readme file in $ICCAP_ROOT/src/README for information about these functions. To provide easier manipulation of a raw GPIB device file, IC-CAP offers a set of low-level I/O functions named ice_hpib_xxxx. The declarations of these functions are found in icedil.h; their definitions are in icedil.c. Both files are provided as C source files. For more information on these I/O functions, see Appendix I, “icedil Functions” in online help. Driver functions are contained in the directory $ICCAP_ROOT/src in the files shown in the following table. 154 Table 42 Prober Driver Source Files File Name Description prober.h Prober call prototypes for userc.c prober.c Actual code for each prober function icedil.h Low level I/O call prototypes for prober.c IC-CAP Reference Drivers Table 42 Prober Driver Source Files File Name Description icedil.c Actual code for each ice_hpib_xxxx call testprob.c Small interactive program to test the driver run_testprob Properly sets your shared library lookup path and runs ./testprob if it exists, otherwise it runs $ICCAP_ROOT/bin/testprob. ICCAP_ROOT must be properly set in your environment for run_testprob to work. 2 A custom driver can be added by editing prober.c in $ICCAP_ROOT/src and generating a new shared library file, libicuserc.<ext> (where ext is a platform-specific extension) because all prober drivers are written in C and treated as library functions. • For information on libicuserc, refer to “Creating a New Shared Library” on page 201. • For details regarding adding library functions, refer to “Creating C Language Functions in IC-CAP" in the IC-CAP User’s Guide. Source code is provided with this open interface. Recompilation and relinking are necessary if this driver is user-modified. External Prober User Functions This section describes the external user functions. Prober_debug This function takes 2 arguments and sets the internal flags. The first argument defines the debug flag; when it is 1, all debugging information is displayed in the Status window. The second argument defines the stop flag; when it is 1, the Macro execution stops when an error is detected. After Prober_init(), the debug flag is off (0) and the stop flag is on (1). This function does not exist in TIS. This function always returns 0. An example call is: x = Prober_debug (1, 0); IC-CAP Reference 155 2 Drivers Every function looks at this internal debug flag and prints out any GPIB commands it is going to send, or a string it just received from the prober. Prober_init This function must be called before any other prober calls are made in a Macro program. This function takes a GPIB address of the prober, flat orientation, prober type name, and a raw GPIB interface name to which the prober is connected. The flat orientation is usually 0, 90, 180, or 270. The function returns 0 when prober initialization is successful and −1 when it fails. The following table lists the GPIB configuration recommended for HP 4062UX. NO TE A raw GPIB interface name is different for each platform. Refer to the following table for this name. A separate GPIB interface may be necessary if the given prober does not conform to IEEE 488 standard. Table 43 Standard HP 4062UX Configuration Select Code Devices 7 or 27 Instruments and Switching Matrix 25 Wafer Prober For a Sun SPARC computer, use the following call because a National Instruments GPIB card has this name by default: x = Prober_init (1, 0, “EG1034X”, “/dev/gpib0”); For an HP 700 Series computer, use the following call because it involves a symbolic name rather than a GPIB interface filename: x = Prober_init (1, 0, “EG1034X”, “hpib”); This function also checks the prober type and sets the internal prober type flag for subsequent driver calls. It closes its private unit descriptor from any previous prober access, opens the given GPIB interface file and keeps a new entity id. It then calls an appropriate subfunction, which does the prober-dependent initialization. 156 IC-CAP Reference 2 Drivers Prober_reset This function takes no arguments and sets the prober to Local mode. It returns 0 when successful and 1 when it fails. This function is not available for EG1034X (for which it is a no-operation). An example call is: x = Prober_reset (); This function clears the interface file and sends a selected device clear command to the prober. Prober_status This function takes no arguments and returns 3 Real values in 1 array. The first element of the array indicates whether the prober is Remote (1) or Local (0). The second element indicates whether the edge contact is detected (1) or not (0). The last element indicates whether the Cassette is empty (1) or not (0). An example call is: status = Prober_status (); if (status[0] == 1) then ... This function sends a query command to the prober and receives information about Remote/Local state as well as the edge sensor output. The Cassette Empty error is detected in the function Phome and referred by this function, which keeps these states and returns them back in an array of Real values. Pdown This function takes no arguments and lowers the chuck of the wafer prober. It returns 0 when successful and −1 when it fails. An example call is: x = Pdown (); Phome This function takes no arguments and performs several tasks depending on the prober type. It returns 0 when successful and −1 when it fails. When it detects a Cassette Empty error, it returns 1. An example call is: x = Phome (); This function calls a subfunction based on the prober type. A subfunction actually does the prober-dependent operation appropriate for Phome. NO TE IC-CAP Reference Set the SUMMIT 10000 prober to Remote manually after this function to move the chuck to its Load position and turn the mode to Manual for wafer alignment. 157 2 Drivers Pimove Like Pmove, this function takes 2 arguments and moves the chuck relative to the current position. It returns 0 when successful and −1 when it fails. An example call is: x = Pimove (1, 0); Pink This function takes 1 argument and triggers the specified inker. It returns 0 when successful or −1 when it fails. EG1034X and SUMMIT10K probers do not support an inker, so this function is a no-operation for them. An example call is: x = Pink (1); Pmove This function takes 2 arguments and moves the chuck to the specified absolute coordinates established by Pscale and Porig. The first argument specifies the new X position and the second specifies the new Y position. It returns 0 when successful and −1 when it fails. An example call is: x = Pmove (2, 4); This function calculates how many machine units the chuck must move relative to the current position, and sends an appropriate GPIB command to move the chuck. It also updates its internal variables to keep track of the position. Porig This function takes 2 numbers and defines these numbers as X and Y coordinates of the current chuck position. This function must be called before any Pmove or Pimove functions. It always returns 0. An example call is: x = Porig (0, 0); This function stores the given numbers in its private variables. Ppos This function takes no arguments and returns 2 Real values in an array, indicating the current die X and Y position being probed. The first element of the array is the X coordinate and the second is the Y coordinate. An example call is: position = Ppos (); print “X = “; position[0], “Y = “; position[1]; This function copies its private variables (which indicate the current position) and returns them. 158 IC-CAP Reference 2 Drivers Pscale This function takes the die X and Y dimensions in micrometers. These numbers are later used in Pmove, Porig, and Pimove functions. It always returns 0. An example call is: x = Pscale (5000, 5000); This function stores the given numbers in its private variables. Pup This function takes no arguments and raises the chuck of the wafer prober so that probe pins come in contact with the wafer. It returns 0 when successful and −1 when it fails. An example call is: x = Pup (); Internal Prober Functions Several internal functions support the user functions to customize the prober driver. For each algorithm, refer to the prober.c source file. prober_get_err This function takes 1 argument and calls a subfunction depending on the prober type. Each subfunction reads any error status from the prober. If it encounters an unknown error, it prints out the given number with an error message to the Status window. It always returns 0. An example call is: ret = prober_get_err(n); prober_get_srq This function takes no arguments and returns 0 (no SRQ) or 1 (SRQ) depending on the SRQ line of the device file. An example call is: ret = prober_get_srq(); prober_message This function takes 1 argument, a pointer to a string, and prints an error message to the Status window such as <name>: unknown prober type, where <name> is replaced with the given string. An example call is: ret = prober_message(“Prober_reset”); prober_precheck This function takes no arguments and checks prober state such as Remote/Local and SRQ. It returns 0 when successful and −1 when it fails. An example call is: ret = prober_precheck(); IC-CAP Reference 159 2 Drivers prober_response This function takes 1 argument that is either a pointer to a character array or null. It calls a subfunction depending on the prober type and each subfunction reads any status information from the prober. Internal flags are set according to the status and any errors are reported. It returns 0 if there is no error. If a non-null pointer is given, a received string from the prober is returned using this pointer. An example call is: char buffer[PSIZE]; ret = prober_response(buffer); prober_spoll This function takes no arguments and performs serial polls in a prober-dependent way that may be different from the standard IEEE 488 implementation. It returns a status byte from the prober. An example call is: ret = prober_spoll(); prober_wait_srq This function takes 1 argument that is a timeout value in seconds, and waits for SRQ to be asserted. It returns 0 when SRQ is detected and −1 when a timeout or error occurs. An example call is: ret = prober_wait_srq(60.0); /* 60 sec */ Prober Settings and Commands This section describes the correct IC-CAP wafer prober settings and their associated GPIB commands. EG1034X This simple manual prober uses 2 settings. (Note that IC-CAP uses SRQ whereas HP 4062UX does not.) • GPIB Address: Any • SRQ Switch: Enabled The following table lists the EG1034X GPIB commands. (Note that IC-CAP uses the MM command to move the chuck; HP 4062UX uses the MO commands for the EG1034X.) 160 IC-CAP Reference Drivers Table 44 2 EG1034X GPIB Commands Item Command Reply Item Command Reply Move Chuck MM MC Chuck Home HO MC Chuck Up ZU MC Chuck Status ?S SZ... Chuck Down ZD MC EG2001X This driver is tested with a prober software version called AC. The parameters listed in the following table must be set to control this prober. Note that the I/O PROTOCOL is different from the one for HP 4062UX. The Die Size is optional, but is included because IC-CAP does not set the size for manual operations. Table 45 EG2001X Settings Parameter Value Parameter Value METRIC/ENGLISH METRIC AUTO LOAD ENB if available DIE X and Y SIZE Any AUTO ALIGN ENB if available AUTO PROBER PAT. EXTERNAL AUTO PROFILE ENB if available AUTO DIAMETER ENB MF/MC on X-Y ENB Z-TRAVELING MODE EDGE-SEN MF/MC on Z DIS I/O PROTOCOL ENHANCED MF/MC on OPT. ENB I/O PORT GPIB-SP MF/MC on others DIS GPIB ADDRESS Any SRQ SWITCH ENB The following table lists the EG2001X GPIB commands. Note that Chuck Home uses both UL and LO commands (HP 4062UX uses LO). IC-CAP Reference 161 2 Drivers Table 46 EG2001X GPIB Commands Item Command Reply Move Chuck MM Chuck Up ZU Chuck Down ZD Chuck Home UL/LO Item Command Reply PZ MC or MF Auto Align AA MC or MF Trigger Inker IK MC or MF ?S SZ... MC or MF Auto Profile MC or MF Chuck Status APM3000A, APM6000A, APM7000A This prober uses the following settings: • GPIB Address: Any • Mode Switches: 3-4 OFF, 3-5 ON, 23-4 ON The following table lists the commands. Table 47 APM3000A, APM6000A, and APM7000ACommands Item Command Reply Item Command Move Chuck A 65 CPU Halt T Chuck Up Z 67 or 73 Trigger Inker M 69 Chuck Down D 68 L 70 or 76 Chuck Home Reply SUMMIT10K This driver waits for an SRQ for an operation completed. With Summit Software version 2.10, the F10 key enables Remote mode. This prober uses the following settings. • COMMUNICATION PROTOCOL: GPIB • COMMAND SET: native • DISP REMOTE CMDS: off • BUS ADDRESS: any • TIMEOUT: 30.0 • CONTROL MODE: remote 162 IC-CAP Reference 2 Drivers SUSS PA 150, PA 200 The SUSS ProberBench Interface developed by Karl Suss for IC-CAP is provided as a convenience, but is not supported by Agilent Technologies. The prober driver supports all functions described in “External Prober User Functions” on page 155 and “Internal Prober Functions” on page 159 except prober_spoll(), prober_get_srq(), and prober_wait_srq(). In addition to these IC-CAP functions, you can use the complete ProberBench command set (150 functions) to enhance operation. For information on these functions, refer to the ProberBench User Manual. For information on writing macros to control the prober, refer to “Writing a Macro” on page 185. The SUSS PA 150 and PA 200 Semiautomatic Probers utilize a Microsoft Windows-based user interface running on an IBM-compatible PC. The IC-CAP environment communicates with the prober via a macro over the IEEE 488 bus. The required PC IEEE488 control hardware is: IOtech Personal488/AT. The PC configuration must use the following values for the settings shown; all other settings use default values: IC-CAP Reference Interface Type: GP488B Name: IEEE IEEE Bus Address: 22 System Controller: Off Time-out (ms): 3000 Interface Bus Address: 02E1 DMA Channel: None Interrupt: None 163 2 Drivers Prober Driver Test Program This section describes the prober test program testprob, which is provided with C source code. This program runs independently from IC-CAP and interactively calls driver functions to test an Agilent-supplied or a custom driver. The file for this program is located in $ICCAP_ROOT/src and is called testprob.c. It includes the test program main. The Makefile offers an option to build this test program. This program is linked with prober.o, iceswn.o, icedil.o, a GPIB library to exercise both prober and switching matrix drivers. If testprob has been rebuilt with a custom driver, use an absolute path to specify the new testprob because $ICCAP_ROOT/bin has another, original testprob executable. The testprob executable is an interactive program that gets user input from its stdin and calls an appropriate driver function, then prints out the return value(s) of the driver function to the Status window. The run_testprob script properly sets your shared library lookup path and runs ./testprob if it exists, otherwise it runs $ICCAP_ROOT/bin/testprob. Therefore, you should use the run_testprob script to run testprob. Make sure $ICCAP_ROOT is properly set in your environment, then type run_testprob. An actual prober (matrix) must be connected to a raw GPIB device file in order to perform driver (matrix) tests. Off-line testing is not available with this program. This program expects to see a function name and its arguments as if they appeared in an IC-CAP Macro program. However an argument list cannot include another function, that is, nesting is not allowed. A command example is: Prober_init(1, 0, “EG1034X”, “hpib”) 164 IC-CAP Reference 2 Drivers The currently supported functions are shown next. NO TE Connect Prober_debug FNPort Prober_init Pdown Prober_reset Phome Prober_status Pimove Pscale Pink Pup Pmove SWM_debug Porig SWM_init Ppos Wait Any line starting with # is treated as a comment and is ignored. A blank line is skipped (this is helpful when a file is used to supply input to this program). Because this test program is not a real Macro interpreter, it has the following restrictions: • No control constructs • No variables • No nesting of functions • No function library other than the prober and matrix driver • No capability to execute IC-CAP Macro programs. Because nesting is not supported, the Connect function needs a port address such as 32701 instead of FNPort(1). Refer to the HP 4062UX Programming Reference for more information about port addresses. IC-CAP Reference 165 2 Drivers Matrix Drivers A matrix driver is a set of USERC functions designed to control the switching matrices through an HP 4084 controller from an IC-CAP Macro program. The matrix driver supports the matrices listed in Table 48. External user functions and internal design functions are described in this section. They are designed to be compatible with HP 4062UX TIS where possible. Source files for this matrix driver are iceswm.h and iceswm.c. The header file iceswm.h is included in userc.c so that the function names can appear in the Function List of IC-CAP. Source code is provided with this open interface. Table 48 Types of Matrix Drivers Matrix Controller Pins Device HP 4085A HP 4084A 48 HP 4062A and HP 4062B HP 4085B HP 4084B 48 HP 4062C and HP 4062UX HP 4089A HP 4084B 96 same as above, with 2 controllers External Matrix Driver User Functions This section describes the matrix driver external user functions. SWM_debug This function takes 1 argument and sets the internal debug flag. When the argument is 1, debugging information is printed out to the Status window; when the argument is 0, printing is turned off. It always returns 0. This function does not exist in TIS. An example call is: x = SWM_debug(1) Every function looks at this flag and prints out any GPIB commands it is going to send, or a string it just received from a matrix controller. 166 IC-CAP Reference 2 Drivers SWM_init This function takes 2 GPIB addresses, a matrix name, and a raw GPIB interface name to which the matrix is connected. The first GPIB address is for the block 1 (usually 19) and the second is for the block 2 (22). However, a different address can be assigned for each matrix controller. For the HP 4085A and HP 4085B (both 48-pin systems), the second address is used as the controller address, and the first address is ignored. It returns 0 when successful and −1 when it fails. This function does not exist in TIS. An example call is: x = SWM_init (19, 22, “HP4089A”, “hpib”); ! for 96-pin or x = SWM_init (0, 22, “HP4085B”, “hpib”); ! for 48-pin This function checks the matrix type and sets the internal type flag for subsequent matrix calls. It closes its private entity id from a previous matrix access (when it exists), and opens the given raw GPIB device file. Then it calls an internal function swm_init_unit to reset a controller. This clears all pins and ports. Connect This function takes a port address and a pin number and connects the given port to the pin. The port address is either 0 or from 32701 to 32711, inclusive. The pin number is 0 or from 1 to 48/96 inclusive. When a pin card does not exist for the given pin number, it gives an error message and aborts the Macro execution. An example call is: x = Connect(32701, 25); This function sends GPIB commands to the matrix controller and either connects or disconnects the specified port and pin. The following table lists argument combinations. Table 49 IC-CAP Reference Argument Combinations Port Address Pin Number Description 0 0 Disconnect all pins from all ports. 0 X Disconnect pin X from its connected port. X 0 Disconnect all pins connected to port X. 167 2 Drivers Table 49 Argument Combinations Port Address Pin Number Description X Y Connect port X to pin Y. As in TIS, multiple pins can be connected to 1 port by calling this function several times. Pin numbers 1 through 48 belong to block 1; pin numbers 49 through 96 belong to block 2. When a 96-pin matrix is used, do not connect block 1 and block 2 pins to 1 single port. Because this function does not include switching delay, allow enough wait time before and after measurement to prevent relay damage. Virtual Front Panel (VFP) is not supported. FNPort This function takes a port number and returns a port address for Connect. This allows compatibility with the HP 4062UX. An example call is: port = FNPort(1); Wait This function takes a wait time, in seconds, to give a necessary delay to wait until SMU outputs become zero for dry switching. This function does not exist in TIS. It returns 0 when successful or −1 when it fails. An example call is: x = Wait (0.1) ! 100ms delay; Internal Matrix Driver Functions The internal functions described next support the user functions. Refer to the source file for each algorithm. swm_connect_pin This function takes a GPIB address of a controller, a port number, and a pin number. It sends a Pin Connect command to the controller, and is called from swm_connect (Connect) to actually perform the pin connection and disconnection. swm_connect_port This function takes a GPIB address and a port number to send a Port Connect command to the controller, which manages input relays of an HP 4089A matrix. 168 IC-CAP Reference 2 Drivers swm_cut_port_pin This function takes a GPIB address and a pin number to cut the pin connection when a 96-pin matrix is used. It also checks if the port to which the pin was connected can be turned off; if it can (both Force and Guard are off), it turns off this port. NO TE When a switching matrix controller shares a single GPIB with other instruments, set the system variable INST_START_ADDR to a value greater than the matrix controller’s GPIB address. This prevents IC-CAP from accessing the controller while performing Rebuild (instrument list). swm_init_unit This function takes a file designator (or eid, a small integer usually obtained by calling the open system function) and a GPIB address of a matrix controller. It is called from swm_init to initialize a controller and clear all pins and ports for which the controller is responsible. swm_parse_err This function takes a status byte sent from a matrix controller and determines the cause of an SRQ. If there is no error, it returns 0 to allow the caller to keep running. If there is an error, it returns −1 to abort the execution of the caller. swm_release_port This function takes a GPIB address and a port number to send a Port Disconnect command to the controller only when a 96-pin matrix is used. Because block 1 and block 2 pins should not be connected to a single port, a disconnect request such as Connect(32701, 0) not only cuts the connection between a port and a pin, but also disconnects the input relays of the port. IC-CAP Reference 169 2 Drivers Using IC-CAP with B2200A/B2201 Low-Leakage Mainframe Driver This section describes the transforms implemented for the B2200A/B2201 Low-Leakage Mainframe Driver. List of the transforms: • B2200_bias_card_enable • B2200_bias_ch_enable • B2200_bias_enable • B2200_bias_init • B2200_close_interface • B2200_connect • B2200_couple_enable • B2200_couple_setup • B2200_debug • B2200_disconnect_card • B2200_GPIB_handler • B2200_ground_card_enable • B2200_ground_enable • B2200_ground_init • B2200_ground _outch_enable • B2200_ground _unused_inputs • B2200_init • B2200_open_interface The following sections describe these transforms. For more details about the Agilent B2200A/B2201A, see its User Guide. Utility Functions B2200_debug When set to 1, prints out all command strings sent to the instrument. This flag is common to all B2200A’s on the bus, regardless of their GPIB address. B2200_debug(<flag>) 170 IC-CAP Reference 2 Drivers where: <flag> is "1", "0", "Yes", or "No". B2200_close_interface Closes the current interface, which was opened by calling B2200_open_interface(). B2200_GPIB_handler Returns -1 if the interface has not been initialized (invalid handler). Returns a positive integer (handler) if the interface has been opened. Returns the current interface handler. The function is provided as a utility function, which enables you to write advanced PEL code to write and read data to the B2200A using the HPIB_write and HPIB_read functions. Initializing the handler using B2200_open_interface enables you to use B2200A's built-in driver functions as well as writing PEL code to support other features that are not currently supported by the built-in functions, all in the same PEL code. Initialization and General Configuration B2200_open_interface Opens and initializes the GPIB interface and must be run first in the PEL program. The interface handler is saved in a static variable so that the interface will be shared by all the other B2200's function calls. You can drive multiple B2200 instruments as long as they are on the same interface bus (obviously, they must have different addresses). B2200_open_interface(<Interface Name>) where: <Interface Name> is the name of the GPIB interface. B2200_init Must be run first in the PEL program to initialize the instrument and set the configuration mode. When the instrument is in AUTO configuration mode and multiple plug-in cards are installed in the B2200 slots from IC-CAP Reference 171 2 Drivers slot 1 continuously, the installed cards are then treated as one card (numbered 0). This function resets all the settings to factory default before setting the configuration mode. This function also sets the default connection rule for the specified card. When the connection rule is FREE (default mode), each input port can be connected to multiple output ports and each output port can be connected to multiple input ports. When the connection is SINGLE, each input port can be connected to only one output. Connection sequence specifies the open/close sequence of the relays when changing from an existing connection to a new connection. B2200_init(<addr>,<cardNumber>,<config>,<connectionRule>, <connectionSequence>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <cardNumber> is 0(auto), 1, 2, 3, or 4. <config> is "AUTO" or "NORMAL" (string input). <connectionRule> is "FREE" or "SINGLE". <connectionSequence> is "NSEQ", "BBM", or "MBBR". • NSEQ (No SEQuence): Disconnect old route, connect new route. • BBM (Break Before Make): Disconnect old route, wait, connect new route. • MBBR (Make Before BReak): Connect new route, wait, disconnect old route. Transforms Governing the Bias Mode B2200_bias_init Selects the Input Bias Port for the specified card. The Input Bias Port is the dedicated bias port. B2200_bias_init(<addr>, <CardNumber>, <InputBiasPort>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). 172 IC-CAP Reference 2 Drivers <CardNumber> is 0(auto), 1, 2, 3, or 4. <InputBiasPort> is 1 to 14 (numeric input) or −1 to disable bias port. B2200_bias_ch_enable This function bias-enables specific output ports in the channel list for the specified card. The input ports specified in the channel list are ignored since the input port is always the Bias Input Port. By default, all the outputs are bias-enabled after a reset. B2200_bias_ch_enable(<addr>,<CardNumber>,<State>,<Channel list>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <State> is the output port's state (allowed values are "ENABLE", "DISABLE", "E", or "D") <Channel list> is the list of channels, known as connection routes. Example channel list: (@10102, 10203, 10305:10307) B2200_bias_card_enable This function bias-enables all the output ports of the specified card. By default, all ports are bias-enabled after a reset. B2200_bias_card_enable(<addr>, <CardNumber>, <CardState>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <CardState> is the card output port's state (allowed values are "ENABLE", "DISABLE", "E", or "D"). B2200_bias_enable Enables the bias mode for the specified card once Input Bias Port and Enabled Output ports are specified. When Bias Mode is ON, the Input Bias Port is connected to all Bias Enabled output ports that are not IC-CAP Reference 173 2 Drivers connected to any other input ports. Bias Disabled output ports are never connected to an Input Bias Port when Bias Mode is ON. If another input port is disconnected from a bias enabled output port, this port is automatically connected to the Input Bias Port. If another input port is connected to a Bias Enabled output port, the output port is automatically disconnected from the Bias Input Port. When Bias Mode is OFF, the Input Bias Port is the same as the other ports. B2200_bias_enable(<addr>, <CardNumber>, <mode>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <mode> is "On", "Off", "1", or "0". Transforms Governing the Ground Mode B2200_ground_init Selects the input Ground Port for the specified card. For each card, you can specify the same or a different Ground Port. By default, the input Ground Port is port 12. The ground port should be connected to 0 V output voltage. See the Agilent B2200 User's Guide for details. B2200_ground_init(<addr>,<CardNumber>,<InputGroundPort>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <InputGroundPort> is 1 to 14 (numeric input) or −1 to disable ground port. B2200_ground _outch_enable Ground-enables or ground-disables output ports. When Ground Mode is turned ON, the ground-enabled output ports that have not been 174 IC-CAP Reference 2 Drivers connected to any other input port are connected to the input ground port. The input ports specified in channel lists are ignored since the input port is always the Input Ground Port. By default, all the outputs are ground-disabled after a reset. B2200_ground _outch_enable(<addr>,<CardNumber>,<State>, <Channel list>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <State> is the port's state (allowed values are "ENABLE", "DISABLE", "E", or "D"). <Channel list> is the list of channels, known as connection routes. Example channel list: (@10102, 10203, 10305:10307) B2200_ground _unused_inputs Specifies the ground-enabled (or unused) input ports for the specified card. When Ground Mode is turned ON, the ground-enabled input ports that have not been connected to any other port are connected to the input Ground Port. By default, all the inputs are ground-disabled after a reset. B2200_ground _unused_inputs(<addr>,<CardNumber>,<Input Channels>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, 4. <Input Channels> is the list of input channels (e.g., "1, 2, 5"). Only input ports 1 to 8 can be defined as unused (these are the input Kelvin Ports). B2200_ground_card_enable Enables ground-enabling for all the output ports of the specified card. By default, all ports are ground-disabled. B2200_ground_card_enable(<addr>,<CardNumber>,<CardState>) IC-CAP Reference 175 2 Drivers where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <CardState> is the card output port's state (allowed values are "ENABLE", "DISABLE", "E", or "D"). B2200_ground_enable Enables the bias mode for the specified card. When Ground Mode is turned ON, the Input Ground Port (default is 12) is connected to all the Ground Enabled input/output ports that have not been connected to any other port. At Reset, Ground Mode is OFF. Ground Mode cannot be turned ON when Bias Mode is ON. See the Agilent B2200 User's Guide for additional comments and restrictions. B2200_ground_enable(<addr>, <CardNumber>, <mode>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, 4. <mode> is "On", "Off", "1", or "0". Transforms Governing the Couple Mode B2200_couple_enable Use this function to enable or disable Couple Port mode. Couple Port mode allows synchronized connection of two adjacent input ports to two adjacent output ports. B2200_couple_enable(<addr>, <CardNumber>, <Mode>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <mode> is "On", "Off", "1", or "0". 176 IC-CAP Reference Drivers 2 B2200_couple_setup Selects the couple ports for Kelvin connections. At Reset, no input ports are coupled. B2200_couple_setup(<addr>,<CardNumber>,<ListOfCoupledPorts>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <ListOfCoupledPorts> is the list of odd number input channels (e.g., "1, 3, 5" means coupled ports are 1-2, 3-4, 5-6). Transforms Governing the Switching B2200_connect Connects or disconnects specified channels. Bias Mode and coupling Mode are also taken into account when a channel is closed or opened. For example, in the list (@10102, 10203:10205), the following channels are connected or disconnected on card 1. Input port 1 to output port 2. Input port 2 to output port 3 and 5. B2200_connect(<addr>,<Connect/Disconnect>,<ChannelList>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <Connect/Disconnect> is C or D. <ChannelList> is the list of connections to close. B2200_disconnect_card specified cards. Opens all relays or channels in the B2200_disconnect_card(<addr>, <CardNumber>) where: <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. IC-CAP Reference 177 2 Drivers Using IC-CAP with the HP 5250A Matrix Driver This section describes the transforms implemented for the HP 5250A Switching Matrix. NO TE The old switching box transforms that were implemented for the HP 40XX series are not compatible with the new ones. The instruments have different commands for switching and the 5250A has new features such as BIAS and COUPLE modes, which were not available for the old 40XX series. List of the transforms: • HP5250_debug • HP5250_init • HP5250_card_config • HP5250_bias_init • HP5250_bias_card • HP5250_bias_channel • HP5250_bias_setmode • HP5250_couple_setup • HP5250_couple_enable • HP5250_connect • HP5250_disconnect_card • HP5250_compensate_cap • HP5250_show() The following sections describe these transforms. For more details about the HP 5250A, see its User Guide. 178 IC-CAP Reference 2 Drivers Utility Functions HP5250_debug This transform is only for debugging. When the debug flag is set to 1, all the functions print out all the command strings that are sent to the instruments. Set flag using the values 1 or 0, or use YES or NO. HP5250_debug(<flag>) HP5250_compensate_cap This transform is the equivalent IC-CAP C routine for the HP BASIC capacitance compensation routine called Ccompen_5250 supplied with the HP 5250A. It returns a 2 by 1 matrix (2 rows, 1 column) defined as follows: • output.11 represents compensated capacitance data [F]. • output.21 represents compensated conductance data [S]. HP5250_compensate_cap (RawCap, RawCond, Freq, HPTriaxLenght, UserTriaxLenghtHigh, UserTriaxLenghtLow, UserCoaxLenghtHigh, UserCoaxLenghtLow) where: RawCap is Input Dataset containing raw capacitance data [F] RawCond is the Input Dataset containing raw conductance data [S] Freq is the measured frequency [Hz] HPTriaxLenght is the HP Triax Cable Length [m] UserTriaxLenghtHighis the user Triax Cable Length (High) [m] UserTriaxLenghtLow is the user Triax Cable Length (Low) [m] UserCoaxLenghtHigh is the user Coax Cable Length (High) [m] UserCoaxLenghtLow is the user Coax Cable Length (Low) [m] IC-CAP Reference 179 2 Drivers HP5250_show() This transform has no inputs. It returns to the standard output (screen or file) the following data about the instrument status: • Instrument Name • Instrument Configuration (AUTO/NORMAL). The following information is output for each card installed in the instrument (card 0 if the instrument is in auto configuration mode): • Connection mode • Connection sequence • Input Bias Port • Enabled Output Bias Ports • Bias Sate (ON/OFF) • Coupled Input Ports (only lower number is listed, e.g., “3,5” means ports 3 and 4 are coupled • Couple Port Mode (ON/OFF) • Connection Matrix Inputs(10)xOutputs(12,24,36, or48). The following table shows an output example of the Channel Matrix State where Card 1 is a 10x12 matrix switch. A “1” in a matrix cell means the connection is closed. Output Ports 180 1 2 3 4 5 6 7 8 9 10 11 12 1 0 0 0 1 0 0 0 0 0 0 0 0 2 1 1 1 1 1 0 0 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 0 0 0 Input 4 0 0 0 0 0 0 0 0 0 0 0 0 Ports 5 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 IC-CAP Reference 2 Drivers Initialization and General Configuration HP5250_init This transform must be run first to initialize the instrument with the address and interface. Using this transform the configuration mode can be set to AUTO. When the instrument is in AUTO configuration mode the same type of card must be installed in the HP 5250 slots from slot 1 continuously. The installed cards are then treated as 1 card (numbered 0). HP5250_init (BusAddress, "Interface", "Configuration") where BusAddress is interface bus address (default is 22) "Interface" is interface name (default is hpib) "Configuration" is AUTO/NORMAL A/N (default is NORMAL) HP5250_card_config This transform is used to change the default configuration for the specified card. When the connection rule is FREE (default mode), each input port can be connected to multiple output ports and each output port can be connected to multiple input ports. When the connection is SINGLE, each input port can be connected to only 1 output. Connection sequence specifies the open/close sequence of the relays when changing from an existing connection to a new connection. HP5250_card_config (CardNumber, "ConnRule", "ConnSequence") where CardNumber specifies the card (0 for AUTO configuration mode) "ConnRule" is FREE/SINGLE (default is FREE) "ConnSequence" is NSEQ/BBM/MBBR (default is BBM) • NSEQ (No SEQuence): Disconnect old route, connect new route. • BBM (Break Before Make): Disconnect old route, wait, connect new route. IC-CAP Reference 181 2 Drivers • MBBR (Make Before BReak): Connect new route, wait, disconnect old route. Transforms Governing the Bias Mode HP5250_bias_init This transform selects the bias port. When using the HP/Agilent E5255A card, the Input Bias Port is the dedicated bias port; however, for the HP/Agilent E5252A the Input Bias Port must be selected using this function. HP5250_bias_init(CardNumber, InputBiasPort) where Card Number specifies the card (allowed values 0-4, 0 = auto configuration mode) InputBiasPort specifies the input bias port number (allowed values are 1-10) HP5250_bias_card This transform bias-enables all the output ports for the specified card. HP5250_bias_card(CardNumber, "CardState") where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) "CardState" is the card’s state (allowed values are ENABLE/DISABLE or E/D) HP5250_bias_channel This transform bias-enables the specified output ports in the channel list. Note that the input ports are ignored since the input port is always the Bias Input Port. HP5250_bias_channel ("State", "Channel list") where "State" is the output port’s state (allowed values are ENABLE/DISABLE or E/D) "Channel list" is the list of channels, known as connection routes 182 IC-CAP Reference 2 Drivers Example channel list: (@10102, 10203, 10305:10307) HP5250_bias_setmode This transform enables the bias mode for the specified card once Input Bias Port and Enabled Output ports have been specified. HP5250_bias_setmode (CardNumber, "BiasMode") where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) "BiasMode" sets the bias mode on or off (allowed values are ON/OFF or 1/0) When Bias Mode is ON, the Input Bias Port is connected to all the Bias Enabled output ports that are not connected to any other input ports. Bias Disabled output ports are never connected to an Input Bias Port when Bias Mode is ON. • If another input port is disconnected from a bias enabled output port, this port is automatically connected to the Input Bias Port. • If another input port is connected to a Bias Enabled output port, the output port is automatically disconnected from the Bias Input port. When Bias Mode is OFF, the Input Bias Port is the same as the other ports. Transforms Governing the Couple Mode HP5250_couple_setup This transform sets up couple ports for making kelvin connections. HP5250_couple_setup (CardNumber, "InputPorts") where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) "InputPorts" is the list of coupled ports Example: In the list "1,3,5,7,9" the coupled ports are 1-2, 3-4, 5-6, 7-8, 9-10 IC-CAP Reference 183 2 Drivers HP5250_couple_enable This transform enables couple port mode. Couple port allows synchronized connection of 2 adjacent input ports to 2 adjacent output ports. HP5250_couple_enable (CardNumber, "CoupleState") where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) "CoupleState" is the coupled state (allowed values are ON/OFF or 1/0) Transforms Governing the Switching HP5250_connect This transform connects or disconnects specified channels. Note that Bias Mode and/or coupling Mode are also taken into account when a channel is closed or opened. HP5250_connect ("Action", "Channel list") where "Action" connects or disconnects channels (allowed values are C and D) "Channel list" is the list of connection routes to be switched Example: In the list (@10102, 10203:10205), the following channels are connected or disconnected on card 1: Input port 1 to output port 2. Input port 2 to output port 3, 4, and 5. HP5250_disconnect_card This transform simply opens all relays or channels in the specified cards. HP5250_disconnect_card (CardNumber) where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) 184 IC-CAP Reference 2 Drivers Using IC-CAP with HP 4062UX and Prober/Matrix Drivers This section describes how to use HP 4062UX instruments and the prober/matrix from IC-CAP for wafer device characterization. Also included in this section is information about writing a macro, controlling the prober, and conditions of which to be aware. While the HP 4062UX is an ideal instrument for performing device characterization with IC-CAP, it is necessary to understand IC-CAP, probers, matrices, and the instruments under control. IC-CAP is an independent program from HP 4062UX TIS or VFP. It is not necessary, and can be damaging, to run the START program before running IC-CAP. To run IC-CAP after running the START program, the HP/Agilent 4142B must first be reset manually. After running the HP 4062UX START program, the HP/Agilent 4142B is put into its binary mode. Because IC-CAP assumes that all the instruments to which IC-CAP is connected accept ASCII commands, IC-CAP cannot recognize the 4142B. Reset the 4142B by sending a Device Clear or by turning the instrument off and on again. To send a Device Clear to the 4142B, use the IC-CAP GPIB analyzer (Tools menu): 1 In the Instrument Setup Window, choose Tools > Send Byte. 2 Enter the default value 20 and choose OK. NO TE Execute the START program to run TIS applications on the HP 4062UX, similar to a normal power-up. Writing a Macro While instruments like the HP/Agilent 4142B and the HP 4280A are controlled by IC-CAP with Setup tables, both the wafer prober and the switching matrix must be controlled through macro programs using the Pxxxxx() and IC-CAP Reference 185 2 Drivers Connect() functions. The Setup table defines which measurement unit is going to force certain output. Users must perform the following actions: 1 Determine which matrix port needs to be connected to which matrix pin. 2 Write several Connect() functions in a macro program that invokes this Setup measurement with a iccap_func() statement. The example shown in the following figure involves 4 SMUs of an HP/Agilent 4142B and measures Id_vs_Vg characteristics of an NMOS device on a wafer. ! Prober and Matrix Test Program x = swm_init(19, 22, "HP4085B", "/dev/ice_raw_hpib") x = connect(fnport(1), 15) ! SMU1 - Drain x = connect(fnport(2), 7) ! SMU2 - Gate x = connect(fnport(3), 8) ! SMU3 - Source x = connect(fnport(4), 6) ! SMU4 - Bulk x = prober_init(2, 0, "EG2001X", "/dev/ice_raw_hpib") ! linput "Load Cassette and Press OK", msg status = prober_status() ! wait until Remote while (not status[0]) status = prober_status() endwhile iccap_func("/nmos2/large/idvg", "Display Plots") ! x = pscale(8200, 8200) ! test chip die size x = phome() ! goes to the first die while (x == 0) x = porig(0, 0) ! first die coordinates i = 0 while (i < 5) ! test diagonal 5 dies x = pdown() x = pmove(i, i) x = pup() print print "Die Position X=";i;" Y=";i; iccap_func("/nmos2/large/idvg", "Measure") iccap_func("/nmos2/large/idvg", "Extract") i = i + 1 endwhile x = phome() ! load next wafer endwhile if (x == 1) then linput "Cassette Empty. Test End.", msg x = connect(0, 0) ! disconnect matrix pins Figure 4 186 Sample Wafer Test Program IC-CAP Reference 2 Drivers Prober Control Prober control is determined by the number of test modules, which is either single or multiple per die. With the Pxxxx functions, it is assumed that there is a single test module on each die and every test module exists in the same place relative to its die origin. In this case, it is easy to control the wafer prober. The example in Figure 4 shows the size of each die to be 8200 µm × 8200 µm. The operator first indicates to the prober where the test module is on the first die. Once the prober is set to find this test module, Pmove() or Pimove() can step to any die and probe the same test module. When there are multiple modules per die, every module position must be calculated in microns and Pscale(1,1) must be called. You must know each module position relative to its die origin, and each die position relative to its wafer origin. You must calculate these numbers to move the wafer chuck to its correct probing position. Special Conditions When using probers and matrices, be aware of the following conditions: Interface File A dedicated GPIB interface for a prober is recommended to avoid unknown effects on other instruments. However, if the given prober conforms to the IEEE 488 standard, it is possible to put the prober on the same GPIB with other instruments. Set the INST_START_ADDR system variable high enough to protect the prober from being accessed by the Rebuild (instrument list) operation. Interrupt Both prober and matrix functions are simple C functions called from the Macro interpreter of IC-CAP. It is possible to interrupt any one of these functions during its GPIB communication. Therefore, whenever you interrupt the execution of a Macro program that involves prober or matrix control, it might be necessary to reset the bus. Prober_init() IC-CAP Reference 187 2 Drivers resets its interface bus to clear any pending GPIB communications with the prober. However, SWM_init() only sends a Selected Device Clear to the matrix controller. If necessary, you can reset the measurement bus by choosing Tools > Interface > Reset. Bus Lock The HP 4062UX can lock the measurement bus even when a TIS program is not running. Be sure that the GPIB for measurement instruments is unlocked when IC-CAP starts up. The easiest way to ensure this unlocked condition is to exit the HP BASIC process from which any HP 4062UX program has been executed. IC-CAP also locks the measurement bus only during a measurement, which is similar to “Implicit Locking” of the HP 4062UX. Measurement Accuracy While the HP 4062UX performs certain error corrections for its 48- and 96-pin matrices, IC-CAP does not know about these internal parameters. Therefore the capacitance measurement accuracy is not specified when IC-CAP measures a capacitance through a switching matrix. However, performing a calibration at the matrix pins should reduce these errors introduced by the matrix. NO TE 188 HCU and HVU are not supported by HP 4062UX. Do not use HCU or HVU with HP 4062UX because their output range exceeds the maximum ratings of the switching matrix and may cause damage to the switching matrix. IC-CAP Reference 2 Drivers Adding Instrument Drivers to IC-CAP Many instruments can measure a device or a circuit. While IC-CAP supports major HP/Agilent instruments, other instruments manufactured by HP/Agilent or other vendors could be used for characterization work within IC-CAP. The Open Measurement Interface (OMI) is part of IC-CAP’s open system philosophy that allows the addition of new instrument drivers. NO TE Because creating new drivers requires using C++, you must obtain C++ software that will compile with both your operating system and with IC-CAP. To determine appropriate software media options and to obtain the most up-to-date part numbers, consult an appropriate pricing and configuration guide, or contact your sales representative. This section provides information about OMI and the basic form of an OMI driver. Alternatives to creating a new driver are also addressed. Using the Open Measurement Interface The Open Measurement Interface enables you to add drivers for other instruments. User-added drivers can be full-featured, fully integrated, and indistinguishable from the Agilent-provided drivers. Like the Agilent-provided drivers, they are written using C++. OMI was designed to ensure that C Language programmers do not experience language barriers when creating new drivers. Much of the work necessary to lay out the required code is performed by a tool kit comprised of Driver Generation Scripts described in “Adding a Driver” on page 194. These scripts also write all necessary code for the Instrument Options editors for a new driver, and all necessary code for the driver to be included in the Instruments Library shown in the Hardware Setup window. IC-CAP Reference 189 2 Drivers The user is responsible for filling in the bodies of a set of functions that IC-CAP calls during measurements. A set of reusable software constructs is provided for accomplishing common programming tasks; refer to “Programming with C++” on page 219. With the first version of the Open Measurement Interface (IC-CAP version 4.00), only GPIB based instrument I/O is formally supported. OMI Guidelines To use the Open Measurement Interface, the following qualifications are recommended. • One year of C programming experience or recent completion of a good course in C. Familiarity with the use of struct data types in C (or record data types in PASCAL) is essential, because C++ classes build upon the struct concept. • Experience writing code to control an instrument. • Familiarity with the particular instrument’s features and operation. • A willingness to learn the details of the requests IC-CAP places on drivers, and the order in which they occur during principal operations: Measure, Calibrate, and Rebuild (instrument list). • A copy of the C++ language system provided by your computer vendor, including manuals and a license. Driver Development Concepts The basic form of user-added drivers involves 1 file with declarations of data types and functions, and 1 file with implementations of functions. Because Driver Generation Scripts are provided, very few modifications to the declarations file are necessary; work is largely confined to the function implementations file. The separation of declarations and implementations is common practice, and 190 IC-CAP Reference 2 Drivers has been used with User C Functions. The source directory $ICCAP_ROOT/src is used for OMI compilation, just as it is for User C Functions. The default source files for new drivers already contain example drivers: • HP 4194: user_meas.hxx and user_meas.cxx • HP 4140: user_meas2.hxx and user_meas2.cxx • HP 54510: user_meas3.hxx and user_meas3.cxx Unless you choose to add files to optimize your compilation process, the $ICCAP_ROOT/src/Makefile permits the make(1) command to create an up-to-date IC-CAP executable file with your latest modifications. This Makefile accounts for the distinct compilation needs of the C++ and C source files by invoking the appropriate compiler. By default, make(1) understands a .cxx suffix to mean C++ compilation, and .c to mean C compilation; the Open Measurement Interface follows this convention. The process for building the shared libraries libicuserc.<ext> and libicusercxx.<ext> is demonstrated in Figure 5. It is not necessary to know the details; the make(1) command can perform the entire process (provided the $ICCAP_ROOT/src/Makefile is correct). The user driver files, user_meas.hxx and user_meas.cxx, to which your driver is added by default, already contain an example driver. This keeps the facility simple but could slow your compilation. If you choose to add your code to other files, adjust the Makefile. Otherwise, do not modify the Makefile. IC-CAP Reference 191 2 Drivers Overall C and C++ Build Process Modules compiled with the C compiler Agilent Sources: icedil.c iceswm.c prober.c userc.c userc_io.c (.o file provided) cc cc cc cc cc User-Defined Sources (e.g.): cc my_extr.c icedil.o iceswm.o prober.o userc.o userc_io.o pbench.o cc libicuserc.sl (or .so) my_extr.o Modules compiled with the C++ compiler (Open Measurement Interface) Agilent Example Sources: CC user_meas.cxx user_meas2.cxx CC user_meas3.cxx CC user_meas.o user_meas2.o user_meas3.o CC libicusercxx.sl (or .so) User-Defined instrument drivers (e.g.): CC my_meter.cxx my_meter.o ksh: export ICCAP_OPEN_DIR=<path to libicuserc.sl and/or libicusercxx.sl> csh: setenv ICCAP_OPEN_DIR=<path to libicuserc.sl and/or libicusercxx.sl> Launch IC-CAP as normal. Figure 5 NO TE Flow Diagram for the User Build Process The pbench.o file is supplied since it is required to build the shared library. However, the source is not provided, so you cannot modify it. Additional information is available online in example drivers, header files, and comments inside the code generated by the driver generation scripts. 192 IC-CAP Reference 2 Drivers Example Drivers Three example drivers HP 4194, HP 4140, and HP 54510 can be seen in the Instrument Library in the Hardware Setup window. • Source files for the HP 4194 are user_meas.hxx and user_meas.cxx • Source files for the HP 4140 are user_meas2.hxx and user_meas2.cxx • Source files for the HP 54510 are user_meas3.hxx and user_meas3.cxx The information provided by these example drivers should serve as valuable reference material for adding a new driver. Header Files Files that are normally modified and re-compiled, user_meas.hxx and user_meas.cxx, use include (or header) files. The most important header files are unit.hxx, user_unit.hxx, instr.hxx, and user_instr.hxx. These files declare all of the virtual functions for each driver, and provide information to write (or avoid writing) each function. Generated Code and Comments The driver generation scripts generate both code and comments. Generally, the comments state what each required function must return, when it is invoked, and its purpose. Code examples are often provided that you can use as the basis for the code you must provide. To access this information, run the scripts. For information, refer to “Driver Generation Scripts” on page 194. Binary Byte Order For information on transferring binary data between an instrument and IC-CAP, see the README.byteorder file in the source directory $ICCAP_ROOT/src. It contains important information with respect to the order of bytes in a multi-byte number. IC-CAP Reference 193 2 Drivers Adding a Driver The basic steps (details are provided in the paragraphs that follow) for adding a driver are: 1 Run the Driver Generation Scripts. 2 Fill in functions that control your instrument. 3 Inform IC-CAP of the new instrument type. 4 Build the IC-CAP executable file. 5 Debug the new driver. Driver Generation Scripts The driver generation scripts provide a framework of functions into which a user’s driver code is placed. mk_unit This script generates code for units in an instrument. In the case of an HP 4141, for example, there are 8 units, including 4 DC SMUs, 2 VS and 2 VM units. The HP 4194 example has just 1 unit, which is typical for a CV driver. A transcript of the mk_unit session used for the HP 4194 driver is as follows: $ mk_unit Enter a name for the unit class for which you want code: cvu_4194 Enter a name for the instrument class that will use this unit class: hp4194 Enter the full name of the .hxx file that will declare hp4194 default: user_meas.hxx]: Enter a name of twelve characters or less; the emitted code will be appended to .cxx and .hxx files with this basename [default: user_meas]: Done. C++ code was added to user_meas.hxx and user_meas.cxx. You should re-run mk_unit if more unit types are needed. Otherwise, you probably need to run mk_instr now. You must supply the name of 2 C++ classes. A class is a name for a user-defined C++ type and is like a struct in C. The mk_unit script uses your chosen class names throughout the generated code. In this example a unit class name (cvu_4194) was chosen to denote CV Unit in a 4194, and an instrument class name (hp4194) was chosen to reflect the name of the instrument. Try to select class names in the same style. Class names should be meaningful and specific, since this helps to avoid name collisions during compilation. Use, for example, a suffix relating 194 IC-CAP Reference Drivers 2 to the instrument or company. Do not hesitate to take advantage of the fact that the C and C++ compilers generally accept very long names. The use of long descriptive names helps prevent compilation or linking problems due to name collisions. If the instrument has more than 1 kind of unit to drive, like the HP 4141, run mk_unit repeatedly. If it has several identical units, do not re-run mk_unit. Identical units can be taken into account after running mk_instr. mk_instr This script generates code for instrument-wide functionality in a driver, such as calibration, self-test, and getting the instrument recognized during Rebuild (instrument list). A transcript of the mk_instr session used for the HP 4194 driver is: $ mk_instr Enter the name of the instrument class for which you want code: hp4194 Enter a name of twelve characters or less; the emitted code will be appended to .cxx and .hxx files with this basename [default: user_meas]: Done. C++ code was added to user_meas.hxx and user_meas.cxx. Now you can go take a look at user_meas.cxx, and start doing the real work. NOTE: in user_meas.cxx you may eventually need to add #include statements to ensure that user_meas.cxx sees the class declarations of any unit classes used by hp4194. Disregard this if the necessary unit declarations appear at the beginning of user_meas.hxx.(The mk_unit script should generally have put them there.) You WILL need to declare some units in the class declaration of hp4194 in user_meas.hxx (see comments therein). After running this script, you generally need to run mk_instr_ui next. This script requires the class name hp4194 to be repeated again, exactly as it was entered in mk_unit. (In your own driver, use another class name besides hp4194, but repeat the same instrument class name when each script asks for it.) The script mentions the need to declare some units, which is accomplished by manual edits to the user_meas.hxx file; for example cvu_4194* cv_unit ; IC-CAP Reference 195 2 Drivers accomplishes that for the HP 4194 driver in the file user_meas.hxx file. If the HP 4194 had 2 identical CV units available, this declaration might have been cvu_4194* cv_unit_1 ; cvu_4194* cv_unit_2 ; mk_instr_ui This script generates code that fully implements the Instrument Options tables appearing in Setups that use the instrument driver. Within these tables, an IC-CAP operator can specify such things as Delay Time, Integration Time, and other instrument-specific options. Because this script completely writes out the necessary C++ code for this user interface functionality, it asks more questions than the previous scripts. A transcript of the mk_instr_ui session used for the HP 4194 driver is: $ mk_instr_ui NOTE: valid types for editor fields are these: { real | int | char | boolean | string } Enter the name of the instrument class for which you want UI code: hp4194 Enter a name of twelve characters or less; the emitted code will be appended to .cxx and .hxx files with this basename [default: user_meas]: Enter the label for an editor field (or enter a null string if no more fields are desired): Use User Sweep Enter a type for editor field ’Use User Sweep’ [h for help] : boolean Enter an initial value for this field [ 0 or 1 ] : 0 Enter the label for an editor field (or enter a null string if no more fields are desired): Hold Time Enter a type for editor field "Hold Time" [h for help] : real Enter the minimum legal value for this field: 0 Enter the maximum legal value for this field: HUGE Enter a granularity value (for rounding this field; 0 for no rounding): 0 Enter an initial value for this field: 0 Enter the label for an editor field (or enter a null string if no more fields are desired): Delay Time Enter a type for editor field "Delay Time" [h for help] : real Enter the minimum legal value for this field: 0 Enter the maximum legal value for this field: 3600 Enter a granularity value (for rounding this field; 0 for no rounding): 0 Enter an initial value for this field: 0 Enter the label for an editor field (or enter a null string if no more fields are desired): Meas Freq Enter a type for editor field "Meas Freq" [h for help] : Sorry, "" is not a valid type. The valid types are: { real | int | char | boolean | string } Enter a type for editor field "Meas Freq" [h for help] : real Enter the minimum legal value for this field: 100 Enter the maximum legal value for this field: 100e6 196 IC-CAP Reference 2 Drivers Enter a granularity value (for rounding this field; 0 for no rounding): 1 Enter an initial value for this field: 1e6 Enter the label for an editor field (or enter a null string if no more fields are desired): Integ Time Enter a type for editor field "Integ Time" [h for help] : char This field will force the user to enter one character, from within a set of valid characters you will specify now. Example set of valid characters: TFYN Enter the set of character values that this field can take on: SML Enter whether this field should force user input to uppercase [y/n]: y Enter an initial value for this field: S Enter the label for an editor field (or enter a null string if no more fields are desired): Osc Level [.01-1Vrms] Enter a type for editor field "Osc Level [.01-1Vrms]" [h for help] : real Enter the minimum legal value for this field: .01 Enter the maximum legal value for this field: 1 Enter a granularity value (for rounding this field; 0 for no rounding): 0 Enter an initial value for this field: .01 Enter the label for an editor field (or enter a null string if no more fields are desired): Averages [1-256] Enter a type for editor field "Averages [1-256]" [h for help] : int Enter the minimum legal value for this field: 1 Enter the maximum legal value for this field: 256 Enter an initial value for this field: 1 Enter the label for an editor field (or enter a null string if no more fields are desired): Delay for Timeouts Enter a type for editor field "Delay for Timeouts" [h for help] : real Enter the minimum legal value for this field: 0 Enter the maximum legal value for this field: HUGE Enter a granularity value (for rounding this field; 0 for no rounding): 0 Enter an initial value for this field: 0 Enter the label for an editor field (or enter a null string if no more fields are desired): Done. All necessary C++ UI code was added to user_meas.hxx and user_meas.cxx. From the nature of the questions in this script, this process defines an editor table for the instrument. The table offers some advanced features, such as constraining the type and the range of values that an operator can enter in each field. Running the Scripts on Windows To run the mk_instr, mk_unit, and mk_instr_ui scripts on Windows, first edit the file $ICCAP_ROOT/bin/icrun.bat. You must set ICCAP_ROOT accordingly by modifying the line: SET ICCAP_ROOT=<Path to IC-CAP> IC-CAP Reference 197 2 Drivers for example if you installed IC-CAP at C:\Agilent\ ICCAP_2006B, edit the file to read SET ICCAP_ROOT=C:\Agilent\ICCAP_2006B Once this is set, simply change <name> below to mk_instr, mk_unit, or mk_instr_ui to run those scripts. icrun <name> Running the Scripts on UNIX This section contains information about running the scripts, questions asked by the script, and the form of user responses. • They are invoked as UNIX commands. Execute cd $ICCAP_ROOT/src unless you just want to experiment with the scripts in another directory like /tmp. The cd command ensures that the code goes where the Makefile expects. • Make backup copies of user_meas.hxx and user_meas.cxx before starting to use the scripts. • The scripts are run in order: mk_unit, mk_instr, and mk_instr_ui. Running the scripts out of order may cause compilation errors when the compiler encounters types, classes, or variables before they are properly declared. • All the scripts prompt you with a series of questions. The effect of the scripts is to write C++ code onto the end of the user_meas.hxx header file and the user_meas.cxx implementation file. Plan your response by reviewing the transcripts and comments presented previously for each script to avoid re-running the script. Multiple passes by the scripts could put declarations into user_meas.hxx more than once causing error messages from the scripts or a compile-time message such as error 1113: class <some_class_name> defined twice. To re-run the script, restore user_meas.hxx and user_meas.cxx to the same state as they appear on the IC-CAP product media. 198 IC-CAP Reference 2 Drivers • When providing real number values to mk_instr_ui supply values that a C compiler will accept. The engineering notation accepted by IC-CAP’s PEL interpreter, such as 15meg, or 2k, is not accepted by the compiler. Examples of acceptable real numbers are: 1.0 10.5e6 HUGE (a constant from /usr/include/math.h) • granularity as used in real fields, refers to a flexible rounding feature. For example, if your instrument has an option Osc Level for which the instrument has only 10 mV resolution, enter granularity as 10e-3. The Instrument Options editor then protects the IC-CAP operator from entering values the instrument can’t support. The scripts require you to fill in functions in user_meas.cxx. They also require a few minor adjustments in user_meas.hxx. These adjustments are: • The instrument class should declare any units owned by the instrument. This is discussed under mk_instr. • You may encounter compilation errors when unit and instrument functions attempt access to each other’s data members, since this violates normal C++ access rules. For example, in user_meas.cxx, in hp4194::init_instr(), a function of the hp4194 class accesses a data member of the cvu_4194 class with this statement: cv_unit -> oscillator_on = 1 ; A typical compiler error message would be: error 1299: init_instr() cannot access cvu_4194::oscillator_on: private member One way to remedy this is to let the unit and instrument class declare each other as friends. For example, the declarations friend class cvu_4194 ; and friend class hp4194 ; IC-CAP Reference 199 2 Drivers in user_meas.hxx, permit the hp4194 functions to access the cvu_4194 data members, and vice-versa. Filling in Necessary Functions After running the scripts, you must write the body portions of the functions added to user_meas.cxx. This section provides hints to help you accomplish this. For help filling in a function body, look at the declarations and functions generated by the scripts. These provide comments explaining the purpose, return value, and invocation time of each function. Next look at the declarations and functions of the HP 4194 example driver. This section contains examples of code accomplishing required tasks. The following manual sections may also be helpful. • “Programming with C++” on page 219 • “Order in Which User-Supplied Functions are Called” on page 229. Provides useful information about the sequence in which functions are invoked. Decisions must often be made about which function should perform particular instrument manipulations; these decisions can be aided by seeing when each function runs. • “What Makes up an IC-CAP Driver” on page 207. Explains the functionality expected in areas such as Calibration and Hardware Setup Operations. The functions whose bodies you need to write are grouped in that section by functional category. You may want to proceed in stages. For example, start with Hardware Setup Operations to demonstrate that Rebuild (instrument list) can find the instrument and display the driver and instrument in the Hardware window. Then implement the functions that support Measure. Address those functions that support Calibrate, if desired. During the time your driver is partially implemented, compiler warnings serve as a rough indication of functions not yet implemented. 200 IC-CAP Reference Drivers 2 The GPIB analyzer (Tools menu), and especially its macro features (described elsewhere in this chapter), are helpful when developing the appropriate sequence of commands to use with the instrument. Making a New Instrument Type Known to IC-CAP Running the mk_instr script makes a new instrument type known to IC-CAP. The code involves an add_user_driver() function call, placed in user_meas.cxx by the mk_instr script. Creating a New Shared Library After any series of edits to the source files, you must generate 1 or 2 new shared libraries to pick up the modified files. The shared library names are libicuserc.<ext> and libicusercxx.<ext> where ext is a platform-specific extension. Use the extension .so for Solaris. The library libicuserc.<ext> holds C code and is used to add user C functions. The library libicusercxx.<ext> holds C++ code and is used to add instruments. The default location of these files on SUN Solaris 2.X is $ICCAP_ROOT/lib/sun2x. When you issue the make command, you will create a local version of the same file that includes your modifications. By setting an environment variable, you can direct IC-CAP to use your new shared library instead of the default library. To generate the new shared library: 1 Create a work directory for the source files (for example, mkdir my_source, and change it to (cd my_source). 2 Copy the set of source files from $ICCAP_ROOT/src to the new work directory (cp $ICCAP_ROOT/src/* . ). 3 Use the touch command on the *.o files so that all *.c and *.o files appear to have been created at the same time (touch *.o). (This step is important for the make procedure.) IC-CAP Reference 201 2 Drivers NO TE If the drive you’re copying to is NFS mounted, clock skews can result if the NFS drive’s system has a slightly different system time than the local system. If you think this might apply to you, first, execute touch * then execute touch *.o. The first touch synchronizes all files to your local system’s time; the following touch causes the make system to believe that all of the .o files were generated later than the source files, so it will not attempt to rebuild any unnecessary files. 4 Copy your source code to the working directory. Modify the function add_users_c_funcs() in userc.c to add your C functions to IC-CAP’s list of functions, and/or modify the function add_users_drivers() in user_meas.cxx to add your drivers to IC-CAP’s library of instrument drivers. Modify the Makefile to add your source code modules to the list of objects. 5 Issue the make command and debug any compiler errors. 6 Set the environment variable ICCAP_OPEN_DIR to point to the directory containing the libicuserc.<ext> or libicusercxx.<ext> file where ext is a platform-specific file extension (ext is .so on Solaris). Alternately, if you want to use the new files site wide, you can replace the original files (after copying to another name to preserve them) under $ICCAP_ROOT/lib/<platform>. 7 Start IC-CAP as usual. Troubleshooting Compiler Errors The definitive authority on compiler errors is your compiler documentation. This section offers assistance with some of the common messages you may encounter when compiling OMI drivers. The message CC: “user_meas.cxx”, line 899: warning: outptr not used (117) usually indicates that you have not yet filled in a function, with the result that the function is not using all of its arguments. In some cases the function may not use all of its arguments, so the message may not be important. 202 IC-CAP Reference 2 Drivers Resolution of the message error 1299: some_unit_func cannot access some_instr_class_name::some_member: private member is discussed in “Running the Scripts on Windows” on page 197. The message CC: “user_meas.hxx”, line 9: error: class x defined twice (1113) indicates that the Driver Generation Scripts were probably run twice. For help, refer to “Running the Scripts on Windows” on page 197. Debugging This section provides information about debugging driver code, after iccap.new has been compiled, including the xdb debugger and GPIB analyzer (Tools menu). Using the xdb Debugger The default Makefile arranges for debug information to be available after linking the executable file. This is done with the -g flag among the CFLAGS in the Makefile. The debugger commands described in the following table should be tried in the order presented. Table 50 IC-CAP Reference Debugger commands for the xdb debugger Command Action cd $ICCAP_ROOT/src Changes directories. Debugging works best when the current directory contains the source files and the binary. xdb iccap.new Starts the debugger. z 8 isr; z 16 isr ; z 18 isr Tells the debugger not to interfere with 3 signals managed by other parts of iccap.new. 203 2 Drivers Table 50 204 Debugger commands for the xdb debugger Command Action r bjt_npn.mdl Runs iccap.new, specifying bjt_npn.mdl as a command line argument. If the debugger stops with a message such as bad access to child process, ignore it and enter c to continue. BREAK or CTRL-C Suspends iccap.new, to give further debugger commands. xdb does not execute commands unless iccap.new is suspended. v user_meas.cxx Enables you to view and edit a source file. This command is helpful for setting breakpoints. td Toggle display. Toggles the display mode between assembly code and C/C++. Use this if the preceding command displays assembly code on the screen, or if no code is displayed. /hp4194::find Searches forward (as in vi) to view the source for the function hp4194::find_instr(). v nnn Enables you to view line nnn at the center of the screen where nnn is the line number you want to view. b Sets a breakpoint at the line currently centered on the screen. Sometimes the debugger chooses another nearby line, especially if the currently centered line is blank, or is only a declaration statement. When iccap.new resumes running, the debugger stops iccap.new whenever this line of code is about to be executed. You may set several breakpoints. b nnn Similar to the last command. Sets a breakpoint at line nnn where nnn is the line number you specify. Sometimes the debugger chooses another nearby line, especially if you chose a blank line, or a line with only a declaration statement. S Big step. Steps through 1 line of source code without stopping inside any procedure calls encountered. Little Like S, but this stops inside any debuggable procedure that is encountered while executing the line of code. IC-CAP Reference 2 Drivers Table 50 Debugger commands for the xdb debugger Command Action c Continues execution of iccap.new. Execute a menu function To reach breakpoints in the driver code, use Measure, Calibrate, or Rebuild as appropriate. For help in making this choice, refer to “Order in Which User-Supplied Functions are Called” on page 229. Be sure that the function will actually be called if you want the breakpoint reached. p address When the debugger hits a breakpoint in a procedure, this command prints the value of an argument passed to the procedure, or a local variable in the procedure. In this example, the argument/variable is named address. p address=23 To assign a new value to an integer variable named address, employ this special form of the p (print) command. p *this\K Prints the member data of the C++ object in whose member function the current breakpoint is located. GPIB Analyzer (Tools menu) and IC-CAP Diagnostics In addition to xdb, debugging capabilities are built into IC-CAP. The GPIB analyzer (Tools menu) in the Hardware Setup window includes the following features. • The I-O Screen Debug On menu selection can monitor all activity on the GPIB bus. Observe the GPIB commands and responses associated with your driver, as well as other IC-CAP drivers. • The analyzer can be used for interactive I/O activities, to force an instrument state, poll the instrument, or test the effect of a command. • Analyzer operations can be collected into a file for macros for rapidly prototyping the GPIB commands to be used in a driver. For more information about macro files of this sort, refer to “GPIB Analyzer” on page 783. IC-CAP Reference 205 2 Drivers The generation of IC-CAP diagnostic messages can be activated by menu functions under Tools in the IC-CAP Main window. Alternatives to Creating New Drivers If you don’t need an instrument driver to be as fully integrated as HP/Agilent-provided drivers, it may be worthwhile to consider controlling the instrument by means less formal than creating a driver using the Open Measurement Interface. NO TE There is an important shortcoming with these suggestions. An IC-CAP measurement currently provides no mechanism for Program Transforms or Macros to be invoked at critical times in the interior of the measurement (for example, at the instant when DC bias levels have just been established by SMUs, and it is time for a main sweep instrument to stimulate the DUT and collect data). Use of the Open Measurement Interface overcomes such limitations. • Use the PRINT statement in an IC-CAP Macro to direct commands to an instrument, when a suitable device file has been established using the mknod command. • Use the functions listed with USERC_write and USERC_read in a Program Transform or Macro to provide limited instrument control. For descriptions of the User C functions in general, refer to Chapter 8, “IC-CAP Functions.” For details and examples of the input/output functions, refer to Appendix H, “User C Functions.” • Rather than using the Measure menu selection directly, construct Macros in the following style to enclose the measurement between operations controlling other hardware: ! Steps 1, 2, and 3 are assumed to be implemented by PRINT. ! 1) Force next desired set point on temperature chamber. ! 2) Enable waveform generator. iccap_func(“/opamp/time_domain/positive_slew”,”Measure”) ! 3) Disable waveform generator. ! One way to control the values desired for temperature and ! frequency is to access IC-CAP system variables. 206 IC-CAP Reference 2 Drivers What Makes up an IC-CAP Driver In addition to measurement capabilities, each IC-CAP driver possesses other capabilities, such as the user interface functionality provided in Instrument Options folder and the ability to participate in Input, Output and Setup Checking prior to measuring. Each of these essential areas is discussed in this section. In each area, information is provided about the specific functions necessary to complete that part of a driver. In the tables throughout this section, the prefix unit:: means the class name(s) you provided for units when you ran the mk_unit script. The prefix instr:: should be considered to mean the class name you provided for the instrument when you ran the mk_instr script. The column Importance indicates whether you typically need to write any code for the function. Because of the inheritance features of C++, you must often rely on inherited default functions. Functions important to write, typical return values, and other information can be determined from the comments for the function in $ICCAP_ROOT/src/user_meas.cxx. Instrument Options The Instrument Options folder provides a method for selecting certain instrument conditions for a measurement. Certain instrument conditions are separated into different groups of instrument options (rather than appearing in Input sweep editors) because they are highly instrument specific, and play no role in simulation. The options displayed in the Instrument Options folder typically vary with each setup that participates in the measurement involving a particular instrument. The Driver Generation Scripts, described in Procedure for Adding a Driver, can write all the C++ code that is necessary to establish appropriate instrument options tables for a new driver. The driver generation script named mk_instr_ui prompts for the desired contents of the instrument options tables, after which it proceeds to generate the necessary declarations and implementations in IC-CAP Reference 207 2 Drivers C++. The generated code will contain data structures in which options are stored, as well as the user interface linkages that display the options for editing. Input, Output and Setup Checking When you initiate Measure or Calibrate for a Setup, IC-CAP first verifies the validity of the measurement Setup. This permits many operator errors to be detected and reported before IC-CAP undertakes instrument I/O. IC-CAP performs the following 3 kinds of checks: • Checks Input (Sweep) specifications; for example, does a Start or Stop value exceed the instrument’s range? • Checks Output specifications; for example, can the instrument measure the type of data desired, such as capacitance? • Checks overall Setup structure; for example, is there more than 1 time or frequency sweep being requested? Table 51 describes the functions related to input (sweep) checking. Table 52 shows a summary of the supported Input (Sweep) modes in IC-CAP. The column Character Used in Driver Functions shows the character passed when an Input Mode is passed to a function, such as unit::can_source. Table 53 describes the functions related to output checking. Table 54 shows a summary of the supported Output modes in IC-CAP. The column Character Used in Driver Functions shows the character passed when an Output Mode is passed to a function, such as unit::can_measure. Table 51 208 Functions for Input Checking Function Name Purpose Importance instr::use_second_sweep tells if unit has 2 internal sweeps default usually OK IC-CAP Reference 2 Drivers Table 51 Functions for Input Checking (continued) Function Name Purpose Importance unit::can_source tells if unit can source a given Mode important unit::can_source_vs_time tells if unit can source time-domain signals important for pulse generators unit::check_bias_swp reserved for future use default is OK unit::check_sweep lets unit check/preview Input data set important unit::check_sync checks sync sweep spec. important if implementing sync sweeps Table 52 IC-CAP Input (Sweep) Modes Character Used in Driver Functions Meaning V Voltage I Current F Frequency T Time P Parameter U User (refer to “User-Defined Input and Output Modes” on page 211) Table 53 Functions for Output Checking Function Name Purpose Importance unit::can_measure tells if unit can measure a given Mode important unit::can_measure_vs_time tells if unit can measure time-domain signals IC-CAP Reference important for oscilloscopes 209 2 Drivers Table 53 Functions for Output Checking (continued) Function Name Purpose Importance unit::check_out lets unit check/preview Output data set important if measures multiple data sets Table 54 IC-CAP Output Modes Character Used in Driver Functions Meaning V Voltage I Current C Capacitance G Conductance T Time Domain Pulse Parameter (like RISETIME) S, H, Z, Y, K, A Two-Port U User (refer to “User-Defined Input and Output Modes” on page 211) Setup checking is performed primarily by logic embedded in IC-CAP. A limited amount of the checking is accomplished with user-supplied functions. The following table describes the user functions related to overall Setup checking. Table 55 210 Functions for Overall Setup Checking Function Name Purpose Importance instr::find_instr checks GPIB for instrument necessary instr::find_units locates optional units default usually OK instr::set_found remembers instrument was found; could set internal flags concerning presence of optional hardware modules default usually OK IC-CAP Reference Drivers Table 55 2 Functions for Overall Setup Checking (continued) Function Name Purpose Importance instr::use_second_sweep tells if unit has 2 internal sweeps default usually OK unit::bias_compatible checks if this unit can tolerate signal or bias from another unit could potentially save fuses. unit::can_do_second_sweep tells if another sweep and unit can be an internal sweep secondary to the sweep for this unit default is OK User-Defined Input and Output Modes Mode U is a reserved user-defined mode that allows some flexibility for safely checking any new signal modes to be sourced or measured. This feature is for situations where it is not practical or safe to use existing Input or Output modes (such as voltage or capacitance). The following considerations apply: • Units associated with existing drivers are likely to reject U. For example, a HP 4141 VM unit will not force or measure U. In such a case the measurement is disallowed. (It does not make sense for the IC-CAP HP 4141 driver to try to force or measure U-Mode data, since it does not know what U-Mode means.) • The unit functions associated with the new driver can enforce any desired policy for a U-mode Input or Output, as well as the other Input and Output Modes. • With a U-Mode Input or Output in an IC-CAP Setup, do not expect the Simulate menu function to work on that Setup. IC-CAP Reference 211 2 Drivers Calibration Calibration functions are associated with the instrument, not its units. To perform calibration procedures initiated from the IC-CAP program, implement the functions shown in the following table. Table 56 Functions for Calibration Function Name Purpose Importance cal_possible tells if the other 2 functions do anything do_cal downloads Setup, leads operator through calibration procedure These functions are necessary if IC-CAP is to calibrate the instrument. recall_n_chk_calib activates calibration during Measure; checks sweep Several of the functions required for Measure are also used during Calibrate. Refer to “Order in Which User-Supplied Functions are Called” on page 229 in this chapter for a list of functions called during Calibrate. Storage is provided in the instr_options class for limited calibration data for a particular instrument in a particular Setup. The instr_options class is declared in instr.hxx. The data members in instr_options for holding calibration results are: • String cal_data ; // declare your own data if String is not an appropriate type • calib_status last_cal_status ; // calib_status is an enumeration with these possible values: • CAL_OK • CAL_ERROR • CAL_ABORTED • CAL_NEVER_DONE 212 IC-CAP Reference Drivers 2 Set calib_status during do_cal() and test it during recall_n_chk_calib(). Recall that cal_possible() and do_cal() are invoked (in that order) during Calibrate, while recall_n_chk_calib() is later called during Measure, with the purpose of enabling the desired calibration set. Derived from the class instr_options (declared in instr.hxx) is user_instr_options, declared in user_instr.hxx. For the new driver, a further derived class will have been declared in user_meas.hxx by the mk_instr_ui script. The section Class Hierarchy for User-Contributed Drivers clarifies the relationships of these classes. The class in user_meas.hxx that is derived from user_instr_options is an appropriate place to declare additional calibration data the workstation should retain, because a distinct object (or data structure) of this type exists in every situation where distinct instrument calibration data might be needed. In other words, an instrument has a distinct user_instr_options object in every Setup where the instrument is used. For the example of the HP 4194 driver, such data (if any) would be declared in the class named hp4194_table in user_meas.hxx. You might declare several double numbers, to keep a record of sweep limits that were in effect at the time of Calibrate, so that they can be verified during Measurement. (With many instruments, calibration is not valid unless measurements employ the same sweep limits that were in effect during calibration.) NO TE To simplify an initial pass at implementing calibration, do not declare additional data structures for remembering sweep parameters, and do not perform much verification during recall_n_chk_calib(). If you choose to declare additional calibration-related data in the class derived from user_instr_options, it is possible for this data to be archived and re-loaded with IC-CAP Model(.mdl), DUT(.dut), and Setup(.set) files. Note that the IC-CAP Reference 213 2 Drivers archiving of user-defined calibration data is an advanced feature that most implementations can probably avoid considering. To archive user-defined calibration data, your class derived from user_instr_options must redeclare and implement 2 virtual functions. These functions are read_from_file and write_from_file, declared for the class instr_options, in the file instr.hxx. When called, these functions receive an open stdio FILE*, which provides read or write access to the IC-CAP archive file at the appropriate time during a Read From File or Write to File menu function. Measurement: Initialization, Control and Data Acquisition The functions in this area perform the real work of the instrument driver; this area accounts for the largest number of functions present in each driver. Initialization functions are listed in the following table. Table 57 214 Initialization Functions Function Name Purpose Importance instr::init_instr downloads information from the Instrument Option Table necessary instr::reset_instr_info clears flags in driver, refer to instr.hxx default usually OK instr::reset_outptrs nulls out output data set pointers, refer to instr.hxx default usually OK instr::zero_supplies puts instrument to safe state, turns off sources necessary unit::enable_output enables any output unit needing explicit enabling (refer to user_meas.cxx) necessary with some instruments, such as the HP 4141 unit::init_unit reserved for future use default is OK IC-CAP Reference 2 Drivers Table 57 Initialization Functions (continued) Function Name Purpose Importance unit::reset_inassign reserved for use by 4142 and 4145 default is OK unit::reset_outassign reserved for use by 4142 and 4145 default is OK unit::set_2_internal_sweeps downloads specifications for 2 nested internal sweeps default usually OK unit::set_internal_sweep downloads specifications for internal sweep necessary unit::set_sync downloads specifications for sync sweeps default usually OK unit::zero_supply puts unit to safe state, suppresses bias and so on necessary, if the unit can source bias or other signal Control and data acquisition functions are shown in Table 58. Because many of the functions in this category must perform non-trivial work, such as instrument communication and error reporting, refer to “Programming with C++” on page 219, where such operations are explained. The examples for the cvu_4194 member functions and the hp4194 member functions in user_meas.cxx are also helpful. A few of the functions in this area are provided for the support of a particular instrument, for example, the HP 4145. The intermediate classes user_unit and user_instr do not redeclare some of these low-usage functions, though their declarations are inherited from the unit and instr classes, so they could be used in a new driver if needed. For example, instr::use_second_sweep() is re-declared and used only by the HP 4145 driver. IC-CAP Reference 215 2 Drivers Table 58 216 Control and Data Acquisition Functions Function Name Purpose Importance instr::copy_outds does delayed data set default usually OK stuffing (refer to instr.hxx) instr::fill_outds similar to copy_outds (refer to instr.hxx) default usually OK instr::get_outptr gives pointer to Output data set default usually OK instr::keep_mdata keeps 1 data point default is OK instr::out_count tells number of output pointers in instr class default usually OK unit::can_do_second_s weep tells if 2 internal sweeps OK (refer to unit.hxx) default is OK unit::define_channel reserved for 4145 default is OK unit::enable_sync reserved for future use default is OK unit::fill_outds any data this unit has kept internally, or in data structures of the instrument or unit driver, that belong in outptr, should be saved there now (refer to user_meas.cxx) default usually OK unit::get_data gets data from the instrument (Refer to user_meas.cxx) necessary unit::get_int_bias reserved for future use default is OK unit::get_scalar_data reserved for 54120 series default is OK unit::list_chan_num reserved for 4142 default is OK unit::list_output_name reserved for 4145 default is OK unit::meas_err used by some drivers to make error messages default is OK IC-CAP Reference 2 Drivers Table 58 Control and Data Acquisition Functions (continued) Function Name Purpose Importance unit::set_bias forces a bias value necessary for user sweep unit::set_data_out reserved for 4145 default is OK unit::set_scalar reserved for 54120 series default is OK unit::source_const_unit reserved for 4145 default is OK unit::source_unit reserved for 4145 default is OK unit::trigger directs a unit to perform the measurement specified earlier via set_internal_sweep necessary unit::turn_chan_OFF reserved for 4145 default is OK unit::wait_data_ready allows the instrument to finish measurement before trying to get data after trigger. In the cvu_4194 code, this wait is accomplished in the trigger function. default usually OK unit::wait_delay_time implements Delay Time prior to a spot measurement. Refer to cvu_4194 case in user_meas.cxx. necessary unit::wait_hold_time implements Hold Time prior to a User Main Sweep. Refer to cvu_4194 case in user_meas.cxx. necessary Hardware Setup Operations The Hardware Setup functions, listed in Table 59, are used in the following operations: • Maintaining lists of instruments and units IC-CAP Reference 217 2 Drivers • Adding and deleting instruments • Maintaining the unit table, including the addition of entries due to newly added instruments • The Rebuild (instrument list) function • Self-testing the instruments • Polling the instruments Table 59 218 Hardware Setup Functions Function Name Purpose Importance instr::addl_addr_label reserved for 8510 and 8753 default is OK instr::build_units creates unit objects. Refer to hp4194::build_units in user_meas.cxx. necessary instr::find_instr checks GPIB for instrument necessary instr::find_units locates optional units default usually OK instr::get_addl_addr reserved for 8510 and 8753 default is OK instr::get_ID gets instrument ID string. Refer to user_meas.cxx. necessary instr::get_unit_by_name finds a unit in the instrument default is OK instr::instr * initializes data members of instrument object necessary ~instr::instr * cleans up members of instrument object necessary instr::read_units reserved for 4142 default is OK instr::rebuild_units reserved for 4142 default is OK IC-CAP Reference 2 Drivers Table 59 Hardware Setup Functions (continued) Function Name Purpose Importance instr::set_found remembers that instr found; may test and set internal flags concerning presence of optional hardware modules default usually OK instr::test_instr supports the Run Self Tests menu function in the Hardware Setup window default is OK (no self-test) instr::unit_count tells how many units the instrument has necessary instr::units_configurable reserved for 4142 default is OK instr::write_units reserved for 4142 default is OK unit::unit * initializes data members of unit object necessary ~unit::unit * cleans up members of unit object necessary * denotes a constructor or destructor function for which the actual name is the unit or instr class name chosen when the mk_unit and mk_instr scripts were run. For example, hp4194::hp4194, in user_meas.cxx. Programming with C++ This section provides examples of code for common Open Measurement Interface programming tasks. • Access to Inputs (Sweeps) and Outputs • Error and Warning Messages • Reading from an Instrument • Serial Poll of an Instrument • String Handling • Time Delay • User Input with a Dialog Box IC-CAP Reference 219 2 Drivers • Writing to an Instrument Access to Inputs (Sweeps) and Outputs In user_meas.cxx the function cvu_4194::check_sweep demonstrates how to determine sweep properties like Mode (V, for example), Type (LOG, for example), compliance, and start and stop values. IC-CAP computes all necessary step values. Do not attempt to compute them from start, stop, and so on, because simulations will use the values IC-CAP computes. Instead, access individual sweep steps with the get_point function. Following are statements from cvu_4194::check_sweep that determine sweep properties and get sweep values. These statements are isolated examples and are not necessarily to be used in the order shown. int cvu_4194::check_sweep(sweep* swp) // header of the function used here sweep_def *swpdef = swp->get_sweep_def(); // a sweep uses sweep_def for values switch(swpdef->get_esweep_type()) // to see if it’s CON, LOG, LIN, ... compval = swp->get_compliance(); // compliance case CON: val1 = ((con_sweep *)swpdef)->get_value(); // value of CON sweep case LIN: val1 = ((lin_sweep *)swpdef)->get_start(); // start value of LIN sweep val2 = ((lin_sweep *)swpdef)->get_stop(); // stop value ((lin_sweep *)swpdef)->get_stepsize() // step size // next 2 are taken from cvu_4194::set_internal_sweep: linswp = (lin_sweep*)swpdef ; // to enable lin_sweep functions numpoints = linswp -> get_num_points(); // number of points if (swp->get_sweep_order() == 1) // sweep order; 1 => main sweep switch (swp->get_mode()) // Mode: ’V’, ’I’, ’F’, ... swp->get_size() // Number of points swp->get_point(step_num) // get one point (indexed from 0) 220 IC-CAP Reference 2 Drivers The class named sweep is declared in sweep.hxx. Using a sweep often involves using functions it inherits from the class ds (data set), declared in ds.hxx. The function get_point is an example of a function inherited from ds. The sweep_type class is in sweep_type.hxx. To save measured data to an IC-CAP Output data set, employ the style in cvu_4194::get_data: dsptr -> keep_point (index++, datapoint, DATA_MEAS); // datapoint is a double In the example, dsptr points to a ds object. The class ds declares other forms of the keep_point function in ds.hxx. These can store complex or 2-port matrix data into the Output data set. Error and Warning Messages The IC-CAP error box appears after a measurement, displays one or more messages, and must be dismissed by clicking OK if you make one or more statements such as errbox << "ERROR: HP4194 unsupported internal sweep type." << EOL; errbox << "ERROR: HP4194 sweep produced " << num_points_kept << "when" << swp_num_points << " were requested" << EOL ; Warnings are displayed in the Status window: cerr << "WARNING: HP4194 frequency rounded up to 100Hz" << EOL ; The objects errbox and cerr accept any number of arguments, of various types, including double, String, char*, int, and char. Separate them with << . Reading from an Instrument The user_meas.cxx file demonstrates 2 styles. Writing and reading are done with separate calls. In hp4194::get_id a readstring function is used as follows: stat=ioport->readstring(ad,id_buf,255); // below is the code needed to call readstring from // a unit class function stat=get_io_port()->readstring(ad,id_buf,255); // because the instrument owns and maintains the ioport // object, the unit gets it this way before using it The first argument above is the GPIB address. The id_buf argument is a buffer guaranteed to be adjusted by readstring to hold 255 bytes, if the read produces that many. IC-CAP Reference 221 2 Drivers A function is also provided to write a query and then read an answer: if ( ioport->write_n_read(addr,"MKRB?", urbuf, 80) == -1 ) The first argument above is the GPIB address. The second argument is a char* to be written. The third argument is a buffer guaranteed to be adjusted by readstring to hold 80 bytes, if the read produces that many. The above functions are 2 of many available for an hpib_io_port. Complete declarations of its functions are in io_port.hxx. Serial Poll of an Instrument The following functions are 2 of many available for an hpib_io_port. Complete declarations of its functions are in io_port.hxx. Serial polling is done as follows: int status_byte = ioport->spoll(addr); // this example not from user_meas.cxx int status_byte = get_io_port()->spoll(addr); // call from a unit function To wait for a particular serial poll bit: // from cvu_4194::zero_supply: hpib_io_port *ioport = get_ioport(); // bit-weight 1 below is to await ’measurement complete bit’ if ( ioport -> poll_wait(addr, 1, 0, 10.0) == -1 ) The arguments are: GPIB address, bit-weight to wait for, a flag reserved for future use, and maximum time that poll_wait should try (10 seconds). String Handling C++ offers a substantial improvement over C for handling String type data. In the file String.h a number of String functions are declared. The following code demonstrates several. 222 IC-CAP Reference 2 Drivers String str_hello = "hello" ; // declare and initialize a string String str_world ; // just declare str_world = "world" ; // assignment String hello_world = str_hello + " " + str_world ;// concatenation errbox << hello_world + "0 ; // writing to errbox if ( "hello world" == hello_world ) // test for equality String instr_cmd = "*RST" ; // initialize for next statement: if ioport->writestring(addr,instr_cmd) == -1 ) // String to instrument In the final example, a char* is expected by writestring, and C++ automatically extracts it from the String. Do not pass a String to printf or scanf. The declarations of these functions in /usr/include/stdio.h use the ellipsis notation (...), so C++ does not know that a char* should be passed to them. Time Delay An example of a time delay is: delay ( 10E-3 ) ; // 10 millisecond delay User Input with a Dialog Box A number of functions for this purpose are declared in dialog.hxx. Examples to get data from dialog boxes are: // These use the versions of get_double and get_String that // each take 3 arguments. double double_result ; String String_result ; int ok_or_cancel ; // 0 => OK pressed by user, and -1 => CANCEL ok_or_cancel = get_double ("Give a double:",default_dbl_val,&double_result); ok_or_cancel = get_String ("Give a string:",default_string,&String_result); Writing to an Instrument An example of writing to an instrument is: if ( ioport->writestring(addr,"TRIG") == -1 ) // cvu_4194::zero_supply The arguments are the GPIB address and a char* string to send. You can also write a query and read a response with 1 call, write_n_read, discussed in Reading from an Instrument. Writestring and write_n_read are 2 of many functions available for an hpib_io_port. Complete declarations of its functions are in io_port.hxx. IC-CAP Reference 223 2 Drivers Syntax This section provides help with reading the IC-CAP source code in user_meas.hxx, user_meas.cxx, and the various include files. Follow the example code in user_meas.hxx and user_meas.cxx when implementing a new driver. NO TE For best results when using the vi editor to browse the source files, execute the command :set tabstop=3 The C++ language introduces several keywords to help understand OMI programming, for example, class, new, delete, and virtual. Terms that are peculiar to OMI programming, for example, Measurer, sweep type, sweep order, main sweep, internal sweep, user sweep, unit function, and instrument data, are used in this chapter and in the source files. Function declarations in C++ use the improved function prototypes of ANSI/C. For example, int mult_by_2(int input); // style for forward declaration int y=2 ; int y = 2 ; int x = mult_by_2(y) ; // example of invocation int mult_by_2(int input) // style for implementation (SAME AS DECLARATION) { return 2*input ; } This is an area of incompatibility with original (Kernighan and Ritchie) C. However, it is easier to read, and write, and is the emerging new standard. It also gives the compiler information with which function call argument lists can be checked, saving run-time aggravation. Sometimes in class declarations you will see the function body present: const char *class_name() // this code from user_meas.hxx { return “cvu_4194” ; } 224 IC-CAP Reference Drivers 2 These cases are called inline functions. They behave like normal functions, but the C++ compiler emits code inline, without normal function call overhead. For short functions this reduces both execution time and code size. New Symbols and Operators This section defines new symbols and operators in C++. // A pair of slashes introduces an end-of-line comment. ( /* and */ can still be used for C-style comments.) & Appearing after a type name or class name, & usually indicates that an argument to a function is passed by reference. Although C can pass arguments by address, the C++ notion of reference arguments eliminates many error-prone uses of * (pointer de-reference) and & (address) operators used with pointer handling in C. In the following example, the called function increments the callers variable: // ’input’ passed by reference: void increment(int& input) { input++ ; // need not use *input } int x=3; increment(x); // Need not pass &x // Now x is equal to 4 object. member_function( ) In C, the . operator is used to access data members in a struct object. In C++, . is also used to access (execute) function members. ptr_to_object->member_function() In C, the -> operator is used to access data members in a struct object to which one holds a pointer. In C++, -> is also used to access (execute) function members of a class type object to which you hold a pointer. IC-CAP Reference 225 2 Drivers Class Hierarchy for User-Contributed Drivers The diagram in the following figure depicts the relationships of the classes that are of principle interest to a user creating a driver. The arrows without labels indicate pointers held in the objects. unit instr inherits inherits user_unit user_instr inherits inherits cvu_4194 hp4194 Figure 6 instr_options inherits user_instr_options inherits hp4194_table Classes Involved in the HP 4194 Example of a User Driver At the top of the hierarchy are classes named unit, instr, and instr_options. All instrument drivers in IC-CAP consist of classes derived from these 3 classes. When Agilent Technologies adds a driver to IC-CAP, one new class is derived from instr, one or more new classes are derived from unit, and one new class is derived from instr_options. The process of deriving new classes from these base classes permits the new driver to efficiently reuse generic 226 IC-CAP Reference 2 Drivers functionality present in the base classes, while also introducing new code where necessary to accommodate the specialized needs of the new instrument. The division of a driver into unit, instr, and instr_options components helps modularity. Generally, the role of each of these parts is as follows: • instr - manages operations associated with the whole instrument, such as self-test and initialization. • instr_options - presents a user interface for and stores the values of options unique to each Setup in which an instrument is used. For example, the option Use User Sweep determines whether an instrument does or does not use its internal sweep capability during measurement in a particular Setup. • unit - manages operations on a single SMU for example, in the case of a DC analyzer, or on a single oscilloscope input, in the case of a multi-channel digitizing oscilloscope like the 54120 series. Operations undertaken at this level include the application of DC and other signals to the DUT, as well as the acquisition of the measured data. Intermediate in the hierarchy are 3 classes named user_unit, user_instr, and user_instr_options. These serve the following purposes: • Hide any virtual functions of unit and instr that are unlikely to be necessary to override in new driver classes. This allows the critical function declarations to be concentrated in one location, with comments close at hand. • Introduce new member functions provided for Instrument Options management or for convenience. At the bottom of the hierarchy are examples of classes introduced by the Driver Generation Scripts. When a user adds a driver to IC-CAP, the Driver Generation Scripts add a class derived from user_instr, one or more classes derived from user_unit, and a class derived from user_instr_options. The class derived from user_instr_options, which is hp4194_table in the example driver, is completely declared IC-CAP Reference 227 2 Drivers and implemented when the user runs the mk_instr_ui script. In other words, a programmer using the Open Measurement Interface need not become involved with any coding that pertains to this user interface component of the driver. The programmer also does not need to provide declarations for any new classes needed for the driver, since these are completely written out when the driver generation scripts mk_unit, mk_instr, and mk_instr_ui are run. However, the programmer is required to fill-in the implementations of several functions that ultimately perform the work done by the driver. 228 IC-CAP Reference 2 Drivers Order in Which User-Supplied Functions are Called Table 60 through Table 63 illustrate the following 3 essential instrument operations: • Rebuild (instrument list) • Calibrate • Measure These tables are representative of a typical order of invocation. Some functions may be used more than once, particularly since Measure involves looping through different bias levels. The column Function Category indicates the location of further information about the function in “What Makes up an IC-CAP Driver” on page 207. Other valuable information is located in the comments for each function, provided in user_instr.hxx, user_unit.hxx, user_meas.hxx, and user_meas.cxx. During Rebuild During this operation, the Hardware Manager locates addresses that respond to a serial poll. At each such address, available drivers determine if they own the instrument, until 1 driver succeeds. They try in the order shown in the Instrument Library list. Note that unless find_instr() is successful, none of the ensuing functions are called. The functions called during Rebuild (instrument list) are shown in the following table. IC-CAP Reference 229 2 Drivers Table 60 Functions Called During Rebuild (instrument list) Function Name Function Category get_addl_addr Hardware Editor Operations addl_addr_label find_instr units_configurable rebuild_units or build_units find_units set_found unit_count get_unit During Calibrate During this operation the Measurer initiates calibration procedures for each instrument in a Setup that has calibration supported by IC-CAP. The functions called during Calibrate are shown in the following table. Table 61 230 Functions Called During Calibrate Function Name Function Category instr::find_instr Setup Checking unit::get_int_bias Control and Data Acquisition Functions unit::can_source Checking of Inputs unit::can_source_vs_time Checking of Inputs unit::can_measure_vs_time Checking of Outputs unit::can_measure Checking of Outputs unit::bias_compatible Setup Checking IC-CAP Reference 2 Drivers Table 61 Functions Called During Calibrate (continued) Function Name Function Category unit::check_sweep Checking of Inputs unit::check_sync Checking of Inputs instr::cal_possible Calibration instr::find_instr Setup Checking instr::do_cal Calibration During Measure This operation undertakes a potentially complex series of operations on the instruments used by a Setup. The exact functions called vary, depending on whether calibration is available for particular instruments, and whether the main sweep instrument operates in an internally swept fashion, or in a stepped/spot-mode fashion (the case when the instrument option Use User Sweep is set to Yes for the main sweep instrument). The functions called during Measure are shown in Table 62 (user main sweep) and Table 63 (internal main sweep). Table 62 IC-CAP Reference Functions Called During Measure (with User Main Sweep) Function Name Function Category instr::find_instr Setup Checking instr::find_units Hardware Editor Operations instr::set_found Hardware Editor Operations unit::get_int_bias Control and Data Acquisition Functions unit::can_source Checking of Inputs unit::can_source_vs_time Checking of Inputs Notes 231 2 Drivers Table 62 Functions Called During Measure (with User Main Sweep) Function Name Function Category unit::can_measure_vs_time Checking of Outputs unit::can_measure Checking of Outputs unit::bias_compatible Setup Checking instr::reset_instr_info Initialization unit::check_sweep Checking of Inputs unit::check_sync Checking of Inputs instr::reset_outptrs Initialization unit::check_out Checking of Outputs unit::can_do_second_sweep Control and Data Acquisition Functions instr::cal_possible Calibration instr::recall_n_chk_calib Calibration instr::init_instr Initialization instr::zero_supplies Initialization BEGIN BIAS LOOP Loop to END BIAS LOOP unit::set_bias Control and Data Acquisition unit::enable_output Initialization unit::set_scalar Control and Data Acquisition BEGIN USER MAIN SWEEP LOOP 232 Notes Loop to END MAIN SWEEP unit::wait_hold_time Control and Data Acquisition unit::set_bias Control and Data Acquisition IC-CAP Reference 2 Drivers Table 62 Functions Called During Measure (with User Main Sweep) Function Name Function Category unit::set_sync Control and Data Acquisition unit::wait_delay_time Control and Data Acquisition unit::get_data Control and Data Acquisition unit::get_scalar_data Control and Data Acquisition Notes END MAIN SWEEP LOOP END BIAS LOOP instr::zero_supplies Initialization unit::fill_outds Control and Data Acquisition Table 63 IC-CAP Reference Functions Called During Measure (with Internal Main Sweep) Function Name Function Category instr::find_instr Setup Checking instr::find_units Hardware Editor Operations instr::set_found Hardware Editor Operations unit::get_int_bias Control and Data Acquisition Functions unit::can_source Checking of Inputs unit::can_source_vs_time Checking of Inputs unit::can_measure_vs_time Checking of Outputs unit::can_measure Checking of Outputs unit::bias_compatible Setup Checking Notes 233 2 Drivers Table 63 Functions Called During Measure (with Internal Main Sweep) Function Name Function Category instr::reset_instr_info Initialization unit::check_sweep Checking of Inputs unit::check_sync Checking of Inputs instr::reset_outptrs Initialization unit::check_out Checking of Outputs unit::can_do_second_sweep Control and Data Acquisition Functions instr::cal_possible Calibration instr::recall_n_chk_calib Calibration instr::init_instr Initialization instr::zero_supplies Initialization BEGIN BIAS LOOP 234 Notes Loop through END BIAS LOOP below unit::set_bias Control and Data Acquisition unit::enable_output Initialization unit::set_scalar Control and Data Acquisition unit::enable_sync Control and Data Acquisition unit::set_2_internal_sweeps Initialization unit::set_internal_sweep Initialization unit::set_bias Control and Data Acquisition unit::set_sync Control and Data Acquisition unit::trigger Control and Data Acquisition IC-CAP Reference 2 Drivers Table 63 Functions Called During Measure (with Internal Main Sweep) Function Name Function Category unit::wait_data_ready Control and Data Acquisition unit::get_data Control and Data Acquisition unit::get_scalar_data Control and Data Acquisition Notes END BIAS LOOP IC-CAP Reference instr::zero_supplies Initialization unit::fill_outds Control and Data Acquisition 235 2 Drivers Handling Signals and Exceptions A variety of conditions may result in termination of a measurement. Among the most common exceptions for a driver is an I/O timeout. Timeouts usually occur when one or more of the following conditions is present: • Instruments are turned off • Cabling is incorrect • The driver software makes errors with respect to instrument protocol or the time required by the instrument’s operations There are numerous examples in the hp4194 and cvu_4194 functions code that demonstrate setting the timeout before making different queries to the instrument. A timeout is usually detected as a value of -1, returned from the spoll, readstring, or writestring functions of the hpib_io_port used by the driver software. In addition to instrument I/O problems, either of the following signals may be generated: • SIGFPE This signal occurs when the code executes an operation like a divide by zero. By default, there is no provision in IC-CAP for trapping this signal. NO TE If this signal occurs during Measure, the default handling of SIGFPE terminates the measurement; if it occurs during the execution of a transform, the function or macro will continue to execute and upon completion, an error message is displayed indicating a floating point error occurred. • SIGINT This signal is generated when you issue the Interrupt command. By default, there is no provision in IC-CAP for trapping this signal. The measurement is terminated immediately. Note: For complex operations, it may take several minutes before control is returned. 236 IC-CAP Reference Drivers 2 If your application requires special error recovery for these signals, it is possible to trap them. For details, refer to “Handling Signals and Exceptions" in the User’s Guide. NO TE IC-CAP Reference Do not alter the handling of SIGUSR1 and SIGUSR2; both signals are used internally by IC-CAP for error trap and recovery purposes. 237 2 238 Drivers IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 3 SPICE Simulators SPICE Simulation Example 242 Piped and Non-Piped Simulations 244 Output Data Formats 250 SPICE Parameter Sweeps 252 Circuit Model Descriptions 254 Circuit Description Syntax 261 SPICE Simulator Differences 265 Using the PRECISE Simulator with IC-CAP 267 Using the PSPICE Simulator with IC-CAP 270 This chapter describes the details of using the SPICE simulators with IC-CAP. For general information on IC-CAP simulation, refer to Chapter 6, “Simulating,” in the User’s Guide. NO TE The Solaris OS must include the cpp utility, which IC-CAP uses to manage output from SPICE simulators. See “System Requirements" in the Installation and Configuration Guide for more details. IC-CAP can interface with the following SPICE simulators. They are provided as a courtesy to IC-CAP users (though not supported by Agilent Technologies), and you must purchase a license to use them. • SPICE2 The SPICE2G.6 simulator developed at U.C. Berkeley. • SPICE3 The SPICE3E2 simulator developed at U.C. Berkeley. Agilent Technologies 239 3 SPICE Simulators • HPSPICE The Agilent Technologies implementation of SPICE2. Although there are some differences between this version and the SPICE2G.6 version from U.C. Berkeley, these 2 simulators are compatible. For more information refer to “SPICE Simulator Differences” on page 265. The version of HPSPICE provided with IC-CAP can be run only from within the IC-CAP program—it cannot be run stand-alone. NO TE The HSPICE simulator, developed by Cadence, uses input deck syntax similar to that of the SPICE-type simulators; thus, it is referred to as a SPICE-type simulator in this manual. IC-CAP currently supports only the features of HSPICE also available in the U.C. Berkeley SPICE simulators. The SPICE simulators support the following analysis types: • DC • AC • Transient • Noise • Capacitance Voltage (CV) • 2-Port (S,H,Y,Z,K,A parameter) • Time-Domain Reflectometry (TDR) NO TE The latter 3 simulation types are not directly available in the SPICE simulators; IC-CAP builds the additional circuitry required in the simulator input files to perform the simulation. IC-CAP supports the features of ELDO that are also available in the UCB SPICE simulators but also provides limited support for models written in either ELDO-FAS or HDL-A. ELDO is an analog simulator developed by Mentor Graphics Corp. ELDO input deck syntax is compatible with that of the SPICE type simulators; therefore, in ELDO is categorized as a SPICE-type simulator this manual. 240 IC-CAP Reference SPICE Simulators 3 The IC-CAP version of SPICE3 supports the following models: Model Group Supported Models MOSFET Model Files Level 1, Level 2, Level 3 nmos/pmos2 nmos3/pmos3 BSIM3, BSIM4 BSIM3_DC_CV_Measure BSIM3_DC_CV_Extract BSIM3_RF_Measure BSIM3_RF_Extract BSIM3_AC_Noise_Tutorial BSIM3_CV_Tutorial BSIM3_DC_Tutorial BSIM3_Temp_Tutorial BSIM3_DC_CV_Finetune BSIM4_DC_CV_Measure BSIM4_DC_CV_Extract BSIM4_RF_Measure BSIM4_RF_Extract BSIM4_DC_CV_Tutorial BSIM4_DC_CV_Finetune MOS Model 9 mm9 mm9_demo BJT Gummel Poon bjt_npn/bjt_pnp bjt_nhf bjt_ncehf bjt_ft mnsnpn sabernpn GaAs Statz UCBGaas UGaashf Diode PN Diode pn_diode Philips JUNCAP juncap The following additional SPICE-like simulators are also discussed in this chapter: • PRECISE • PSPICE IC-CAP Reference 241 3 SPICE Simulators SPICE Simulation Example The circuit description is predefined for all IC-CAP configuration files. Enter this description if a new model is being defined; edit the description to fit specific needs. The syntax is identical to the syntax used for describing circuits in a typical SPICE simulation deck. This simulation example will use the IC-CAP supplied Model bjt_npn.mdl. 1 Select the simulator by choosing Tools > Options > Select Simulator > spice2. Choose OK. 2 Choose File > Open > bjt_npn.mdl. Choose OK. 3 View the circuit description by clicking the Circuit tab. The circuit description is shown in Figure 7. This deck describes the circuit (in this case, a single device) to be used in the simulation. 4 To view input and output for the fearly setup, click the DUTs-Setups tab and select fearly. The Measure/Simulate folder appears with the inputs vb, vc, ve, and vs, and the output ic. The vc input specifies a voltage source at node C that sweeps linearly from 0 to 5V in 21 steps. The ic output specifies that current at node C be monitored. In the Plots folder, icvsvc is specified so that the results of the simulation can be viewed graphically. 5 To simulate, click the Simulate button in the Measure/Simulate folder. The Status line displays Simulate in progress. When the simulation is complete, the Status line displays IC-CAP Ready. 6 To view the results of the simulation, display the Plots folder and click Display Plot. The plot displays measured data represented by solid lines and simulated data represented by dashed lines. 242 IC-CAP Reference SPICE Simulators NO TE 3 For syntax examples of running a remote simulation, refer to “Remote Simulation Examples" in the User’s Guide. Q1 1 = C 2 = B 3 = E 4 = S NPN AREA = 1.0 .MODEL NPN NPN + IS = 36.76e-18 + BF = 336.1 + NF = 1.003 + VAF = 35.25 + IKF = 22.07m + ISE = 1.882f + NE = 1.932 + BR = 4.103 + NR = 1.005 + VAR = 1.651 + IKR = 147.3u + ISC = 15.69f + NC = 1.857 + RB = 522.0 + IRB = 61.43u + RBM = 1.000m + RE = 8.435 + RC = 57.05 + XTB = 1.700 + EG = 1.110 + XTI = 3.000 + CJE = 44.06f + VJE = 871.7m + MJE = 429.9m + TF = 10.49p + TR = 1.700m + XTF = 247.4 + VTF = 1.622 + ITF = 140.6m + PTF = 218.8 + CJC = 68.94f + VJC = 603.8m + MJC = 290.6m + XCJC = 300.0m + TR = 1.700n + CJS = 111.9f + VJS = 465.0m + MJS = 241.9m + FC = 500.0m Figure 7 IC-CAP Reference Circuit Description Deck for an NPN Bipolar Transistor 243 3 SPICE Simulators Piped and Non-Piped Simulations The following sections describe the differences in piped and non-piped simulations for the various SPICE simulators. Each section also describes the argument syntax required to invoke each of the template simulators. This information is needed when writing the user translation module, since these are the arguments supplied by IC-CAP when it calls the translation module. For information on the translation module and adding a simulator, refer to the section “Adding a Simulator" in the User’s Guide. Piped and Non-Piped SPICE Simulations A non-piped simulation receives the input deck information from a file, performs the simulation and sends the binary output data and resulting text output to other files. The simulator process is restarted for every simulation. A piped simulation receives the input deck information from a pipe connected to standard input, performs the simulation and sends the output data to a pipe connected to standard output. The simulator process will remain on until another simulator is selected. Setting the RETAIN_SIMU variable to TRUE overrides this behavior and allows multiple simulators to remain running. This uses additional memory but increases speed when frequently switching between simulators. In all cases, a piped simulator process will be turned off when the Simulation Debugger is turned on. The text output from a simulation usually contains an explanation of any errors which may have been encountered during the simulation. Piped simulations do not save any text output from the simulation. If an error occurs during a piped simulation, IC-CAP issues a message in an error box stating that an error has occurred and recommending that the simulation be repeated with the Simulation Debugger turned on. IC-CAP performs non-piped simulations when the Simulation Debugger is ON. 244 IC-CAP Reference SPICE Simulators 3 In general, piped simulations are faster than non-piped simulations for any given simulator because the simulator process does not have to be restarted for every simulation and less file activity is required. Syntax: Non-Piped 2G.6, 3E2, and HPSPICE Simulations The command formats for non-piped simulations are shown next: UCB SPICE 2G.6 ucbspice2g6 rawfile where: rawfile is the output binary data file. The input deck file containing the circuit description and analysis commands comes from standard input and the output text file containing the results of the simulation goes to standard output. UCB SPICE 3E2 spice3e2 -b -r rawfile -o textfile deckfile where: -b specifies batch mode. rawfile is the output binary data file. textfile is the output text file containing the results of the simulation. deckfile is the input deck file containing the circuit description and analysis commands. HPSPICE spice2.4n1 deckfile textfile rawfile where: deckfile is the input deck file containing the circuit description and analysis commands. textfile is the output text file containing the results of the simulation. IC-CAP Reference 245 3 SPICE Simulators rawfile is the output binary data file. Syntax: Piped 2G.6, 3E2, and HPSPICE Simulations The command formats for piped simulations are shown next: UCB SPICE 2G.6 ucbspice2g6 - where: The "-" denotes that the binary data output is going to the standard output pipe. The input deck information comes from the standard input pipe and the output text is sent to the file /dev/null. UCB SPICE 3E2 spice3e2 -s where: The -s option specifies that the input deck information is coming from standard input and the binary data output is going to standard output. HPSPICE spice2.4n1 - /dev/null - where: The first "-" denotes that the input deck information is coming from the standard input pipe. The output text is sent to the file /dev/null. The last "-" denotes that the binary data output is going to the standard output pipe. 246 IC-CAP Reference SPICE Simulators 3 Non-Piped HSPICE Simulations NO TE Prior to IC-CAP 2006B Addon3, IC-CAP did not support the CAN_PIPE token for HSPICE in usersimulators. This token may now be used on local Linux and local Solaris HSPICE simulations with Hspice-2007.03-SP1. It is not a true piped mode (netlists and raw files are still written to disk), but provides substantial performance improvement by using an interactive mode that avoids restarting HSPICE for every simulation. Non-piped HSPICE simulations are identical to non-piped SPICE simulations. This type of simulation is performed when the Simulation Debugger is set to ON. If CANNOT_PIPE is specified for HSPICE, even when the Simulation Debugger is OFF, it still performs a non-piped simulation. This means that HSPICE must be restarted for every simulation. Because of this, there is no noticeable difference in simulation speed when the Simulation Debugger is set to ON or OFF. Syntax: Piped HSPICE Simulations The command format for an HSPICE non-piped simulation is as follows: hspice -I load deckname and run commands are then passed to the running HSPICE process. Syntax: Non-Piped HSPICE Simulations The command format for an HSPICE non-piped simulation is as follows: hspice -i deckfile -o logfile where deckfile is the input deck file containing the circuit description and analysis commands. logfile is the listing of information about the simulation generated by HSPICE. If the simulation debugger is open, this file will be displayed in the Output Text portion of the simulation debugger. IC-CAP Reference 247 3 SPICE Simulators The output binary data file is written to a file named deckfile.suffix where suffix depends on the type of analysis being performed. Refer to the HSPICE User's Manual for more information. Syntax: Client/Server mode HSPICE Simulations On Windows, provides a method of invoking a standing server process to access HSPICE licenses. If this was launched via the hspui program, IC-CAP can simulate faster by launching HSPICE with the followin syntax: hspice -C deckfile -o logfile where deckfile is the input deck file containing the circuit description and analysis commands. logfile is the listing of information about the simulation generated by HSPICE. If the simulation debugger is open, this file will be displayed in the Output Text portion of the simulation debugger. However, if the server has not been started, the simulation still occurs but at a slower speed. To configure IC-CAP to send the -C instead of -i, specify the template name hspice-C as the second field in your usersimulators line example: hspiceC hspice-C c:\synopsys\Z-2007.09\bin\hspice.exe "" CANNOT_PIPE Non-Piped ELDO Simulations Non-piped ELDO simulations are identical to non-piped SPICE simulations. This type of simulation is performed when the Simulation Debugger is set to ON. ELDO is not capable of performing a piped simulation, so even when the Simulation Debugger is OFF, it still performs a non-piped simulation. This means that ELDO must be restarted for every simulation. Because of this, a there is no noticeable difference in simulation speed when the Simulation Debugger is set to ON or OFF. 248 IC-CAP Reference 3 SPICE Simulators Syntax: Non-Piped ELDO Simulations The command format for an ELDO non-piped simulation is as follows: eldo deckfile where deckfile is the input deck file containing the circuit description and analysis commands. The name of this deckfile is in the form <circuit_name>.cir. The output binary data file is written to a file named <circuit_name>.spi3. This output binary data format is similar to the output binary format of the UCB SPICE3 simulator and is generated when you specify the option .option spi3bin Refer to the ELDO User’s Manual for more information. The output text file, is sent to the file named <circuit_name>.chi This file is displayed in the Output table of the Simulation Debugger if it is on. IC-CAP Reference 249 3 SPICE Simulators Output Data Formats The example in the following figure shows the output data format of the spice2 template simulator supported in IC-CAP. Record Record Record Record Record 1: 2: 3: 4: 5: Title card (80 bytes), date (8 bytes), time (8 bytes) TOTAL-96 BYTES Number of output variables (including "sweep" variable) (2 bytes) Integer ’4’ (2 bytes) Names of each output variable (8 bytes each) Type of each output (2 bytes each) 0 = no type 1 = time 2 = frequency 3 = voltage 4 = current 5 = output noise 6 = input noise 7 = HD2 8 = HD3 9 = DIM2 10 = SIM2 11 = DIM3 Outputs 7 through 11 are distortion outputs. Record 6: The location of each variable within each sweep point. (2-bytes each) (Normally just 1,2,3,4,...but needed if outputs are mixed up) Record 6a: 24 characters that are the plot sub-title if Record 3 is a ’4’. Record 7: Outputs at first sweep point Record 8: Outputs at second sweep point Record 9: . . . last record All real data are 8-byte quantities. All complex data are single precision reals, that is 4-byte quantities. (4-byte quantity for the real part, 4-byte quantity for the imaginary part) EOF A special "end-of-file" indicator: 9.87654321D+27 for real data (9.876E+0,5.432E+0) for complex data EOI A 4 byte integer zero indicates the end of all raw data Figure 8 Output File Format Used For spice2 The binary format output by the spice3 template simulator is shown in the following figure. 250 IC-CAP Reference 3 SPICE Simulators Title Card (Newline (\n) terminated string) Date and Time (Newline (\n) terminated string) Plot Title (Newline (\n) terminated string) Flags (Newline (\n) terminated string) Number of Variables (No. Variables: [an integer]) Number of Points (No. Points: [an integer]) Version (Newline (\n) terminated string) Variables List (Variables: [tab] (index) [tab] (name) [tab] (type) . . . { repeated num_var times } where: index = variable index [integer] name = variable name [string] type = variable type [string (that is, "current" or "voltage")] num_var = number of variables Binary: ( Newline (\n) terminated string indicating the start of the binary data ) Each data point is listed in the order listed in the variables list. Each real data point is represented by 8 bytes. Each complex data point consists of the real part and the imaginary part of 8 bytes each. There are no separators between data points. Figure 9 IC-CAP Reference Output File Format Used For spice3 251 3 SPICE Simulators SPICE Parameter Sweeps NO TE Parameter sweeps should always be the outer most sweep. LSYNC sweeps should have master sweeps that are also parameter sweeps. For SPICE-type simulators, specifying parameter sweeps for devices and circuits requires an input added to the setup (in this example, nmos2/short/idvd) with Mode P. Figure 10 SPICE Parameter Sweep Setup Example IC-CAP performs a simulation for each value of the parameter sweep. The following figure shows the resulting plot. 252 IC-CAP Reference SPICE Simulators Figure 11 3 SPICE Parameter Sweep Plot Example For additional information on sweeping parameters, refer to the section, “Specifying Parameter or Variable Sweeps" in the User’s Guide. IC-CAP Reference 253 3 SPICE Simulators Circuit Model Descriptions The circuit description for the HSPICE and ELDO simulators is similar to the UCB SPICE simulator circuit description. The details in the following sections also apply to HSPICE and ELDO. Specifying Simulator Options For information on available options and their syntax, refer to the User’s Manual for that simulator. Simulator options are specified in the first line of the circuit definition using the following syntax: .OPTIONS OPT1 = OPTVAL1 OPT2 = OPTVAL2 ... OPTN = OPTVALN where OPTs denote the option keywords used by the simulator OPTVALs are the corresponding option values. Some options do not require a value; this field may or may not be specified, depending on the option. A space is the only delimiter required between options. The nominal and operating temperatures, TNOM and TEMP, are commonly used options; they can also be specified by entering a value (in °C) for the global variables TNOM and TEMP. To do this, enter the variable and its value in the System Variables table in the Utilities application. • TNOM is the temperature at which the model parameters are extracted; TEMP is the temperature at which the simulation is performed. When performing an optimization to extract model parameters, TEMP and TNOM should be set to the same value so that simulations during optimization are performed at TNOM. TNOM must be defined to guarantee consistency between simulation and extraction. 254 IC-CAP Reference 3 SPICE Simulators • In general, TNOM and TEMP can be in any variable table, allowing different Models, DUTs or Setups to use different nominal and operating temperatures. IC-CAP checks for these global variables before running a simulation. If the variable is not found, the value of the option set in the .OPTIONS statement in the Circuit Editor is used when it exists. Otherwise, the circuit is analyzed using the simulator’s default values. IC-CAP automatically adds the option POST=1 to the options list when the selected simulator is hspice. Specifying this option causes hspice to return the binary raw data file, which IC-CAP requires for reading back the simulated data. This option is not necessary when performing a Manual Simulation from the Simulation Debugger command menu because the data is not read back into IC-CAP. Describing the Device Model A device model is used to characterize a single SPICE element of any type. This description requires 2 parts: • An element statement that calls a defined model • A .MODEL definition, which is identical to a .MODEL card in SPICE The general form of the element statement that calls the device model is: DNAME NNUM1 = NNAME1 NNUM2 = NNAME2 ...NNUMN = NNAMEN MNAME + DPAR1 = DVAL1 DPAR2 = DVAL2 ...DPARN = DVALN where DNAME is the device name with the first letter being a simulator defined key letter denoting the type of model being specified. NNUM denotes the node number connections. NNAME denotes node names corresponding to the node numbers. DPAR is a predefined DUT parameter name. IC-CAP Reference 255 3 SPICE Simulators DVAL is the specified DUT parameter value. Refer to the SPICE Reference manual for DUT parameter names available for each model. MNAME is the model name being referenced. This is the same MNAME specified in the .MODEL definition described below A .MODEL definition specifies the parameters of a device model that describe a particular element. When a parameter is not specified, the default value in the model is used. The general form of the .MODEL definition is: .MODEL MNAME TYPE PNAME1=PVAL1 PNAME2=PVAL2 ...PNAMEN=PVALN where MNAME is the model name. Regardless of the model name entered in the MNAME field of the .MODEL definition statement, IC-CAP substitutes the name of the Model as it is called in the Model List when the simulator input deck is built. TYPE is a valid SPICE component type PNAME is a parameter name for the particular model type PVAL is the parameter value As in SPICE, a plus sign ( + ) that appears as the first character of a line denotes a continuation of the previous line. This continuation character is often used for easier readability when specifying the .MODEL card. NO TE 256 When using the SPECTRE simulator with either the OSI, SPECTRE442, or SPECTRE443 interfaces (see “SPECTRE Interfaces” on page 274), the LEVEL parameter for a MOS .MODEL card may not translate properly. IC-CAP outputs the value as a real number in the netlist, but SPECTRE requires an integer. To work around this issue, use the model type BSIM3 instead of MOS and omit the LEVEL parameter. Alternatively, enclose the LEVEL parameter with parentheses, for example, LEVEL = (11). By doing the later, IC-CAP does not flag it as a model parameter and leaves the expression alone when passing the netlist to SPECTRE. IC-CAP Reference 3 SPICE Simulators Describing Subcircuits A subcircuit model is used to describe a circuit that contains more than 1 element. The syntax is similar to the syntax in SPICE. The subcircuit description must begin with a .SUBCKT and end with a .ENDS declaration. Statements between these 2 declarations describe the subcircuit components. The general form of the first line of a subcircuit definition is: .SUBCKT SUBNAME NNUM1 = NNAME1 NNUM2 = NNAME2 ...NNUMN = NNAMEN + (PAR1=PARVAL1 PAR2=PARVAL2 ...PARN=PARVALN) where SUBNAME is the name you give to the subcircuit. Regardless of the subcircuit name entered in the SUBNAME field of the .SUBCKT definition statement, IC-CAP substitutes the name of the Model being simulated when the simulator input deck is built. NNUM are the numbers of the external nodes of the subcircuit. These external nodes are used to connect the subcircuit to another circuit. External nodes in the .SUBCKT declaration cannot be 0 (ground), but internal nodes can be connected to ground and any external node to ground in a surrounding circuit. NNAME is a node name assigned to a node number. As in the device model description, IC-CAP allows the option of equating node numbers to node names. If you assign node names, use these names when specifying the Inputs and Outputs in the Setup. PAR1 ... PARN are subcircuit parameters that can be passed through subcircuit calls. These parameters are added to the DUT parameter table in IC-CAP. PARVAL1 ... PARVALN are the corresponding parameter values. These subcircuit parameters become DUT parameters and can be modified in the DUT Parameter Editor. (While the syntax shown here is correct, passed parameters are ignored by IC-CAP.) IC-CAP Reference 257 3 SPICE Simulators The body of the subcircuit model description contains the components of the subcircuit using element and .MODEL statements. Assigning Node Names IC-CAP allows the option of equating node numbers to node names in circuit descriptions because it is typically easier to refer to a node by a meaningful name rather than a number. If node numbers only are specified, these node numbers must be used when specifying inputs and outputs. Node identities can also be specified with the format %<name>. For example: Q1 1=C 2=B 3=E 4=S NPN or Q1 %C %B %E %S NPN Although HSPICE and ELDO allow alphanumeric characters for node names, node numbers must still be associated with node names because IC-CAP parses HSPICE as a SPICE-type simulator. When using this format, all node names within the circuit or device must be referenced using the %[nodename] syntax. Test Circuits and Hierarchical Simulation When characterizing a circuit, it is often necessary to add circuitry around a circuit or device to model the actual measurement Setup. IC-CAP provides a Test Circuit Editor to allow modeling of this additional bias circuitry. Select the DUT from the DUT/Setup panel. Click the Test Circuit tab and enter the test circuit description in the same manner you would enter a Circuit Description. The test circuit definition should include a call to the device or subcircuit defined in the Circuit Editor, as well as the additional circuitry needed to model the external parasitics of the measurement Setup. NO TE 258 When you define a test circuit, the DUT parameter table contains the values specified in the test circuit specification. Regardless of the subcircuit name entered in the SUBNAME field of the .SUBCKT declaration, IC-CAP uses the name of the DUT being simulated when the simulator input deck is built. IC-CAP Reference 3 SPICE Simulators Subcircuit and device model specifications can be called from inside another Model. This enables you to perform hierarchical simulations to study a circuit at different levels. When making reference to another model, the model name must be used as it appears in the IC-CAP Model List. For example, assume you have defined 3 Models, model1, model2, and model3. model1 has a circuit model description that is a device definition. The circuit model description for model2 is a subcircuit definition at the gate level that includes a call to model1 in a device call statement. And, the circuit model description for model3 is a subcircuit definition that includes a call to model2 in a subcircuit call statement. When you simulate a Setup in model3, IC-CAP traverses the Model hierarchy and uses the circuit model description defined in model3, which includes calls to model1 and model2. The syntax for calling a device model is identical to that described in the Device Model Description section. The general form of the device call is: DNAME NNUM1 = NNAME1 NNUM2 = NNAME2 ...NNUMN = NNAMEN MNAME + DPAR1 = DVAL1 DPAR2 = DVAL2 ...DPARN = DVALN Calling a subcircuit specification allows you to insert an entire subcircuit into a circuit as if it were a single component. The call requires a syntax identical to that used in SPICE. The general form of the subcircuit call is: XNAME NNUM1 NNUM2 ...NNUMN SUBNAME (PARVAL1 PARVAL2 ... PARVALN) where XNAME is the name of the subcircuit call statement. The only requirement for this name is that it must start with the letter X. NNUM are the node numbers of the calling circuit that connect to the external nodes of the subcircuit. The calling circuit node numbers need not be the same as the external nodes of the subcircuit. The nodes are connected in the order specified. Specify the same number of nodes declared in the subcircuit definition. IC-CAP Reference 259 3 SPICE Simulators SUBNAME is the name of the subcircuit, previously described by a .SUBCKT definition. This must have the name of the model as it appears in the Model List if it is in a different model. PARVAL are subcircuit parameter values. The order in which they are listed in the subcircuit call statement must match the parameters list in the subcircuit definition. (While the syntax shown here is correct, passed parameters are ignored by IC-CAP.) NO TE 260 When a test circuit is included in the Model, IC-CAP uses the test circuit description as the top level circuit definition. The node number connections defined in the test circuit description, not the circuit description, are used as the external nodes. Because of this, any node-number-to-node-name cross-referencing in the circuit description is not used. Only node names equated to node numbers in the test circuit description can be used when specifying Inputs and Outputs in the Setup Editor. When only node numbers are specified in the test circuit description, (that is, they are not equated to node names) these same node numbers must be used in the Input and Output node fields. IC-CAP Reference 3 SPICE Simulators Circuit Description Syntax This section describes basic syntax rules for creating a circuit description. SPICE Simulators Start an input line with * to denote a comment in the circuit model description or in the input file of the simulation debugger. Although some simulators accept # and * , IC-CAP accepts * only. (# is recognized as a preprocessor directive when the simulator input deck is built. Adding a comment using # causes a simulation generated from a DUT or Setup to fail.) Table 64 lists the SPICE element component specifications. For information on available options and their syntax, refer to the SPICE Reference manual. Table 65 lists the semiconductor device specifications. For information on available options and their syntax, refer to the SPICE Reference manual. Table 64 IC-CAP Reference SPICE Element Component Specifications Component General Form Example Resistor RXXXXXXX N1 N2 VALUE <TC=TC1<TC2>> R1 1 2 1000 TC=0.001,0.015 Capacitor CXXXXXXX N+ N- VALUE <IC=INCOND> COSC 15 2 10U IC=3 Inductor LXXXXXXX N+ N- VALUE <IC=INCOND> LSHUNT 3 29 10U IC=15.7m Mutual Inductor KXXXXXXX LYYYYYYY LZZZZZZZ VALUE K43 LAA LBB 0.999 Transmission Line TXXXXXXX N1 N2 N3 N4 Z0=VALUE <TD=VALUE>+ <F=FREQ <NL=NRMLEN>> <IC=V1,I1,V2,I2> T1 1 0 2 0 Z0=50 TD=10NS 261 3 SPICE Simulators Table 64 Component General Form Example Linear VoltageControlled Current Source GXXXXXXX N+ N- NC+ NC- VALUE G1 2 0 5 0 0.1M Linear VoltageControlled Voltage Source EXXXXXXX N+ N- NC+ NC- VALUE E1 2 3 14 1 2.0 Linear CurrentControlled Current Source FXXXXXXX N+ N- VNAM VALUE F1 13 5 VSENS 5 Linear CurrentControlled Voltage Source HXXXXXXX N+ N- VNAM VALUE HX 5 17 VZ 0.5K Independent Voltage Source VXXXXXXX N+ N- <<DC> DC/TRAN VALUE> + <AC <ACMAG <ACPHASE>>> VIN 12 0 DC 6 Independent Current Source IXXXXXXX N+ N- <<DC> DC/TRAN VALUE> + <AC <ACMAG <ACPHASE>>> + SFFM(0 1 10K 5 1K) ISRC 23 21 AC 0.333 45.0 Table 65 262 SPICE Element Component Specifications (continued) SPICE Semiconductor Component Specifications Component General Form Example Junction Diode DXXXXXXX N1 N2 MNAME + <AREA><OFF><IC=VD> DCLAMP 3 7 DMOD 3.0 IC=0.2 BJT QXXXXXXX NC NB NE <NS> MNAME + <AREA> <OFF> <IC=VBE,VCE> Q2A 11 26 4 20 MOD1 JFET JXXXXXXX ND NG NS MNAME + <AREA> <OFF> <IC=VDS,VGS> J1 7 2 3 JM1 OFF IC-CAP Reference 3 SPICE Simulators Table 65 SPICE Semiconductor Component Specifications (continued) Component General Form Example MOSFET MXXXXXXX ND NG NS NB MNAME + <L=VAL><W=VAL><AD=VAL ><AS=VAL> +<PD=VAL><PS=VAL><NRD =VAL><NRS=VAL> + <OFF> <IC=VDS,VGS,VBS M1 2 9 3 0 MOD1 L=10U W=5U HSPICE Simulator Basic HSPICE syntax rules are the same as SPICE-type simulators. Refer to the HSPICE User’s Manual for complete syntax and rules. NO TE Before performing HSPICE simulations, specify the HSPICE version name in the System Variable HSPICE_VERSION. If this variable is not specified, IC-CAP will assume the latest version of HSPICE is being used. ELDO Simulator Basic ELDO syntax rules are the same as SPICE-type simulators. In addition to the SPICE-type syntax, FAS user-defined models can be defined and instantiated in the IC-CAP Circuit Editor. An FAS model is defined as: amodel name(pin1,pin2..) . <model body> . endmodel (smodel and fmodel are also accepted). The above model is instantiated in a circuit as: yxx name [pin:] 1 2 ... [param: par1 = var1 ...] [model: ...] In addition, the parser accepts the following ELDO constructs: .ADDLIB number pathname #com . . #endcom IC-CAP Reference 263 3 SPICE Simulators FIDEL models (oxx p1:typ p2:typ ... mod=modelname) and transfer functions (FNS, FNZ) are not currently supported by the IC-CAP parser. However, the #echo keyword can be used to insert these statements into a circuit in the IC-CAP Circuit Editor. The #echo keyword is available in the IC-CAP Circuit Editor for all supported simulators. #echo can be used to pass a deck card or command directly through to the simulator without any parsing by IC-CAP. For example, the line #echo <something that the IC-CAP parser doesn't understand> is sent to the simulator as <something that the IC-CAP parser doesn't understand> The following analog model instantiation syntax is supported for HDL-A: HDL-A user-defined models with the following syntax can also be instantiated in the IC-CAP Circuit Editor. yxx name(xx) [pin:] 1 2 ... [param: par1 = var1 ...] and yxx name(xx) [pin:] 1 2 ... [generic: par1 = var1 ...] NO TE 264 Before performing ELDO simulations specify the ELDO version name in the System Variable ELDO_VERSION. If this variable is not specified, IC-CAP will use the version name specified in the environment variable eldover, if it exists. If neither ELDO_VERSION or eldover are specified, IC-CAP assumes that the latest version of ELDO is being used. IC-CAP Reference 3 SPICE Simulators SPICE Simulator Differences Subtle differences in syntax, behavior, error handling and calculation of data between the simulators must be considered when creating a circuit description. • SPICE2 simulations will fail if an underscore is used in the Model name. An error message will appear in the output text file generated by the Simulation Debugger: 0*ERROR*: MODEL TYPE IS MISSING • SPICE2 simulations will fail if an underscore is used in a test circuit and DUT name because the simulation input deck uses the DUT name as a model name. An error message will appear in the output text file: 0*ERROR*: SUBCIRCUIT NODES MISSING • When attempting a SPICE2 or SPICE3 simulation in the BJT model, if the ideal maximum forward beta parameter BF=0 or the transport saturation current parameter IS=0, the simulation will fail without an error message. (Other parameters may yield similar results when set to zero.) • SPICE3 is the only simulator that supports the UCB GaAs model. Refer to “Simulators" in the Nonlinear Device Models, Volume 1 manual for details on the syntax required to simulate this model. • HPSPICE is the only simulator that supports the Curtice GaAs model. Refer to “Simulators" in the Nonlinear Device Models, Volume 1 manual for details on the syntax required to simulate this model. • When using HPSPICE to simulate a UC Berkeley MOSFET model, specify the ucb option in the .OPTIONS statement of the circuit description: .OPTIONS ucb IC-CAP Reference 265 3 SPICE Simulators • When using SPICE3 with the Simulation Debugger to perform an IC-CAP simulation (as opposed to a manual simulation), an output text file with the following message results: print card ignored since rawfile was produced. To generate a more informative output text file, perform a manual simulation. The manual simulation results in an output text file that includes the requested output data values. 266 IC-CAP Reference 3 SPICE Simulators Using the PRECISE Simulator with IC-CAP PRECISE is a UCB SPICE-based simulator developed by Mentor Graphics Corp. Using IC-CAP’s Open Simulator Interface, a C-language Translation Module is provided that makes PRECISE simulation capability available in IC-CAP. This module and instructions for performing PRECISE simulations in IC-CAP are described here. For general information on the Open Simulator Interface, refer to the section “Adding a Simulator" in the User’s Guide. The IC-CAP/PRECISE link uses UCB SPICE2G.6 as the template simulator. When performing a PRECISE simulation in IC-CAP, IC-CAP behaves as if it is performing a SPICE2 simulation. Therefore it generates an input deck in SPICE2 format, calls the simulator and reads back a binary raw data file in SPICE2 format. Through the Open Simulator Interface, the call to the simulator is actually calling the executable version of the C-language Translation Module, precise.c. This executable, called precise, translates the SPICE2 input deck to a PRECISE input format, calls PRECISE to perform the simulation, then translates the PRECISE format binary raw data file to SPICE2 format which is read by IC-CAP. The source code file precise.c is located in the $ICCAP_ROOT/src directory. To set up PRECISE simulation capability in IC-CAP: 1 Add the precise simulator to the usersimulators file in the directory $ICCAP_ROOT/iccap/lib, as shown next: precise spice2 /<your path>/precise "<host_machine_name>" CANNOT_PIPE 2 The host_machine_name is the host computer for the PRECISE simulations. This name can be left blank ("") if PRECISE and IC-CAP are running on the same computer. Since PRECISE does not have the ability to perform piped simulations in IC-CAP, the CANNOT_PIPE flag must always be set, as shown in the above example. IC-CAP Reference 267 3 SPICE Simulators NO TE The IC-CAP/PRECISE interface is only supported for the HP 9000 Series 700 version of PRECISE. Therefore the host computer must be a Series 700 workstation. 3 Make the following changes to the precise.c program to customize it for your environment: • In the main routine, specify the full pathname of the actual PRECISE simulator on your system. • In the spice2_to_precise routine, specify the full pathname of the Mentor Graphics supplied program ppphp700.exe, which translates a SPICE2 input deck to the equivalent PRECISE input deck. 4 Compile the translation module using the following command: cc -o precise precise.c -lm 5 Move the executable file, precise to a permanent location such as $ICCAP_ROOT/bin The location must match the path specified in the usersimulators file. 6 In IC-CAP, set the SIMULATOR variable to precise or specify precise with the Select Simulator command on the IC-CAP Tools Menu. The following files are generated in your home directory when running PRECISE simulations in IC-CAP: • namefile - File that contains the name of the spice input deck file indeck.spi. • indeck.spi - SPICE 2G.6 format input deck file that is the input to the input deck translator program ppphp700.exe provided by Mentor Graphics. • indeck.ckt - PRECISE format circuit description deck output from the input deck translator program ppphp700.exe. • indeck.use - PRECISE format analysis command deck output from the input deck translator program ppphp700.exe. • xndeck.use - PRECISE format analysis command deck referenced by indeck.use. Also generated by the input deck translation. 268 IC-CAP Reference SPICE Simulators 3 • rawout - PRECISE formatted binary raw data output file generated by a PRECISE simulation. IC-CAP Reference 269 3 SPICE Simulators Using the PSPICE Simulator with IC-CAP PSPICE is a SPICE-based circuit simulator developed by MicroSim Corporation. PSPICE uses the same basic numeric algorithms as the UCB SPICE2 simulator but claims superior convergence and performance. Using IC-CAP’s Open Simulator Interface, a C-language Translation Module is provided that makes PSPICE simulation capability available in IC-CAP. This module and instructions for performing PSPICE simulations in IC-CAP are described here. For general information on the Open Simulator Interface, refer to the section “Adding a Simulator" in the User’s Guide. The IC-CAP/PSPICE link uses UCB SPICE2 as the template simulator. When performing a PSPICE simulation in IC-CAP, IC-CAP behaves as if it is performing a SPICE2 simulation. Therefore it generates an input deck in SPICE2 format, calls the simulator and reads back a binary raw data file in SPICE2 format. Through the Open Simulator Interface, the call to the simulator is actually calling the executable version of the C-language Translation Module, pspice.c. This executable, called pspice, translates the SPICE2 input deck to a PSPICE input format, calls PSPICE to perform the simulation, then translates the PSPICE format binary raw data file to SPICE2 format which is read by IC-CAP. The source code file pspice.c is located in the $ICCAP_ROOT/src directory. NO TE The IC-CAP/PSPICE translation module pspice.c has been updated in IC-CAP 5.0 to support the output binary data format of PSPICE 6.3. Only PSPICE versions with the identical output binary data format will work with this translation module. For older PSPICE versions, use the translation module pspice5_4.c, also supplied with this release. To set up PSPICE simulation capability in IC-CAP: 1 Add the pspice simulator to the usersimulators file in the directory $ICCAP_ROOT/iccap/lib, as shown next. pspice spice2 /<your path>/pspice "<host_machine_name>" CANNOT_PIPE 270 IC-CAP Reference 3 SPICE Simulators 2 The host_machine_name is the host computer for the PSPICE simulations. This name can be left blank ("") if PSPICE and IC-CAP are running on the same computer. Since PSPICE does not have the ability to perform piped simulations in IC-CAP, the CANNOT_PIPE flag must always be set, as shown in the above example. 3 Make the following change to the pspice.c program to customize it for your environment: • In the main routine, specify the full pathname of the actual PSPICE simulator on your system. 4 Compile the translation module using the following command: cc -o pspice pspice.c -lm 5 Move the executable file, pspice to a permanent location such as ICCAP_ROOT/bin. The location must match the path specified in the usersimulators file. 6 In IC-CAP, set the SIMULATOR variable to pspice or specify pspice with the Select Simulator command in the IC-CAP Tools Menu. The following files are generated in your home directory when running PSPICE simulations in IC-CAP: • psp.cir - PSPICE format circuit description deck file translated from the SPICE2 circuit description deck. • psp.raw - PSPICE formatted binary raw data output file generated by a PSPICE simulation. • psp.out - Output print file generated by a PSPICE simulation. psp.raw and psp.out are automatically removed from your home directory after the simulation is completed in IC-CAP. NO TE IC-CAP Reference When using PSPICE, the LM_LICENSE_FILE environment variable must be set. This variable contains the directory path for the license file required by the PSPICE simulator. Refer to the PSPICE Reference Manual for detailed procedures on installing the PSPICE simulator. 271 3 272 SPICE Simulators IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 4 SPECTRE Simulator SPECTRE Interfaces 274 Circuit Model Descriptions 276 Piped and Non-Piped SPECTRE Simulations 286 This chapter describes the details of using the SPECTRE simulator with IC-CAP. For general information on IC-CAP simulation, refer to Chapter 6, “Simulating,” in the User’s Guide. Agilent Technologies 273 4 SPECTRE Simulator SPECTRE Interfaces SPECTRE is a SPICE-like circuit simulator developed by Cadence Design Systems that simulates analog and digital circuits at the differential equation level using direct methods. SPECTRE uses the same basic algorithms used in UCB SPICE but the implementation of these algorithms uses the most up-to-date methods currently available. IC-CAP offers 3 different interfaces for use with the SPECTRE simulator: • SPECTRE • SPECTRE443 • SPECTRE442 SPECTRE Interface The SPECTRE interface is compatible with SPECTRE version 4.4.3 simulators and later. Unlike the SPECTRE443 and SPECTRE442 interfaces which invoke the SPICE netlist parser, this interface uses native SPECTRE netlist syntax to parse data from the circuit page. This alleviates the need to translate SPECTRE netlists to SPICE syntax prior to entering the netlists on the circuit page. See the following section, “Valid SPECTRE Netlist Syntax for IC-CAP” on page 277.” SPECTRE443 Interface This interface is compatible with SPECTRE versions up to 5.0.0. The SPECTRE443 interface invokes a SPICE netlist parser, unlike the SPECTRE implementation which uses native SPECTRE netlist syntax to parse data from the circuit page. This interface requires that SPECTRE netlists are first converted to SPICE syntax prior to entering them on the circuit page. 274 IC-CAP Reference SPECTRE Simulator 4 SPECTRE442 Interface This interface is compatible with SPECTRE simulator version 4.2.2 only. The SPECTRE442 interface invokes the SPICE netlist parser, unlike the SPECTRE interface which uses native SPECTRE netlist syntax to parse data from the circuit page. This interface requires that SPECTRE netlists are first converted to SPICE syntax prior to entering them on the circuit page. CAU TI O N The SPECTRE442 interface is no longer recommended. IC-CAP is only tested against the latest version of SPECTRE. The SPECTRE442 interface is documented only to assist in migrating to the SPECTRE443 or SPECTRE interface. Open Simulator Interface (OSI) This interface requires the compilation of a translation module (see spectre3.c in $ICCAP_ROOT/src). This translation module allows IC-CAP to operate as though it is interfacing to SPICE 3. This interface is no longer recommended, but is documented to help migration efforts from the old interface to the new SPECTRE interface template. For details, see “Using Template SPICE3 and the Open Simulator Interface spectre3.c” on page 288. IC-CAP Reference 275 4 SPECTRE Simulator Circuit Model Descriptions The following section describes the type of circuit page netlists required when using the SPECTRE interface. Please refer to “Circuit Model Descriptions” on page 254 for the netlist requirements for the SPECTRE443, SPECTRE442, or the SPICE3 OSI interfaces. For valid circuit syntax descriptions, see the Cadence SPECTRE simulator user’s documentation. Specifying Simulator Options For information on available simulator options and their syntax, refer to the Cadence SPECTRE simulator user’s documentation. Simulator options are specified in the first line of the circuit definition using the following syntax: options OPT1 = OPTVAL1 OPT2 = OPTVAL2 ... OPTN = OPTVALN where OPT denotes the option keyword used by the simulator. OPTVAL is the corresponding option value. Some options do not require a value. This field may or may not be specified, depending on the option. A space is the only delimiter required between options. The nominal and operating temperatures, TNOM and TEMP, are commonly used options. TNOM is the temperature at which the model parameters are extracted. TEMP is the temperature at which the simulation is performed. NO TE 276 When performing an optimization to extract model parameters, TEMP and TNOM should be set to the same value so that simulations during optimization are performed at TNOM. TNOM must be defined to guarantee consistency between simulation and extraction. IC-CAP Reference SPECTRE Simulator 4 You can also specify these variables by entering a value (in °C) for the global variables TNOM and TEMP in the System Variables table in the Utilities application. In general, TNOM and TEMP can be in any variable table, allowing different Models, DUTs or Setups to use different nominal and operating temperatures. IC-CAP checks for these global variables before running a simulation. If it does not find the variable, IC-CAP uses the value set in the Circuit Editor options statement. Otherwise, IC-CAP analyzes the circuit using the simulator’s default values. Valid SPECTRE Netlist Syntax for IC-CAP The SPECTRE interface parses netlists written in native SPECTRE syntax. During a simulation using the SPECTRE template, IC-CAP examines the netlist entered on the Circuit page for: • The name of the device to be modelled • The external nodes of the device • The model-level parameters • The device-level parameters IC-CAP is intended for single-device model extractions. Therefore, not all valid SPECTRE netlists are accepted by IC-CAP. Valid SPECTRE Constructs IC-CAP uses 3 SPECTRE constructs: • the device statement • the subcircuit (subckt) block • the model statement Valid SPECTRE Circuit Page Configurations There are 3 valid Circuit page configurations: IC-CAP Reference 277 4 SPECTRE Simulator • A single device statement and a single model card • A single subcircuit block • A single device statement followed by a single subcircuit block NO TE Other supporting statements can be added in and around the configurations mentioned above. This includes all valid SPECTRE syntax statements other than the device, subckt, and model statements. These 3 constructs are limited in number and combination as described above. Describing a Device A device statement describes a single SPECTRE element of any type. The general form of device statement is: DNAME NODE1 NODE2...NODEN MNAME DPAR1=DVAL1 DPAR2=DVAL2 where DNAME is the device name with the first letter being a simulator-defined key letter, denoting the type of model being specified. NODE denotes the node name for the device connection. MNAME is the name of a built-in device, or the name of a model or subcircuit definition. This is the same MNAME specified in the model definition described below. DPAR is a predefined DUT parameter name. DVAL is the specified DUT parameter value. Refer to the MNS and SPICE Reference for the DUT parameter names available for each model. A plus sign ( + ) that appears as the first character of a line or a back slash ( \ ) that appears as the last character in a previous line denotes a continuation of the previous line. This continuation character is often used for easier readability when specifying the model card. 278 IC-CAP Reference 4 SPECTRE Simulator Describing the Model A model definition specifies the parameters of a particular model that is referenced by a device statement (see “Describing a Device” on page 278). When a parameter is not specified, the default value in the model is used. The general form of the model definition is: model MNAME TYPE PNAME1=PVAL1 PNAME2=PVAL2 ...PNAMEN=PVALN where MNAME is the model name. Regardless of the model name entered in the MNAME field of the model definition statement, IC-CAP substitutes the name of the Model as it is called in the Model List when the simulator input deck is built. NO TE Noise is a reserved word in SPECTRE and must not be used in naming components of the netlist. Do not use the name “noise” for DUTs or Models. IC-CAP substitutes the Model/DUT name for the name in the Circuit or Test Circuit folders respectively. TYPE is a valid SPECTRE component type. PNAME is a parameter name for the particular model type. PVAL is the parameter value. A plus sign ( + ) that appears as the first character of a line or a back slash ( \ ) that appears as the last character in a previous line denotes a continuation of the previous line. This continuation character is often used for easier readability when specifying the model card. Describing Subcircuits A subcircuit model is used to describe a circuit that contains more than 1 element. IC-CAP Reference 279 4 SPECTRE Simulator The syntax is similar to the syntax in SPICE. The subcircuit description must begin with a subckt and end with an ends declaration. Statements between these 2 declarations describe the subcircuit components. The general form of a subcircuit definition is: subckt SUBNAME (NODE1 NODE2...NODEN) parameters PAR1=PARVAL1 PAR2=PARVAL2 ...PARN=PARVALN <subcircuit devices and/or models listed here> ends SUBNAME where SUBNAME is the subcircuit name. Regardless of the subcircuit name entered in the SUBNAME field of the subckt definition statement, IC-CAP substitutes the name of the Model being simulated when the simulator input deck is built. NO TE Noise is a reserved word in SPECTRE and must not be used in naming components of the netlist. Do not use the name “noise” for DUTs or Models. IC-CAP substitutes the Model/DUT name for the name in the Circuit or Test Circuit folders respectively. NODE denotes the node name for the device connection. PAR1 ... PARN are subcircuit parameters that can be passed through subcircuit calls. If a subcircuit is used in conjunction with a device statement, then the parameters specified on the device line will also need to be listed here. In this case, those parameters are added to the DUT Parameters table. All other parameters not listed in the device statement will be added to the Model Parameters table. If the subcircuit description is used without an associated device statement, then all parameters listed here will be entered in the DUT Parameters table. 280 IC-CAP Reference 4 SPECTRE Simulator PARVAL1 ... PARVALN are the corresponding parameter values. Depending on the context (see previous paragraph), these parameters become either DUT parameters or model parameters which can be modified in the DUT Parameters table of the Model Parameters table. The body of the subcircuit model description contains the components of the subcircuit using element and model statements. Using a Device Statement and Model Card Configuration The device statement and model card is the simplest circuit page configuration. The template parses the model card into the Model Parameters page and the device parameters into the DUT Parameters page. The device statement provides the external nodes. Example syntax: q1 C B E S NPN area = 1.0 model NPN bjt + is = 1E-16 + bf = 100 In this case, is and bf will appear on the Model Parameters page, and area will appear in the DUT Parameters page. NO TE The device statement and model card may appear in any order. Using a Single Subcircuit Block Configuration This circuit page configuration interprets the subcircuit as a single device. If the subcircuit includes a Parameters statement, the template parses these parameters as device parameters, where they appear in the DUT Parameter Table. All parameters on model or device statements within the subcircuit appear in the Model Parameter Table in the form: <inst/model>.<parameter> IC-CAP Reference 281 4 SPECTRE Simulator Example syntax: subckt realnpn (C B E) parameters area=1 LE E 4 inductor l=.35n LB B 5 inductor l=.2n CC C 0 capacitor c=.255p Q1 C 5 4 NPN area = area model NPN bjt + is = 1E-16 + bf = 100 ends realnpn In this case, LE.l, LB.l, CC.c, NPN.is, and NPN.bf will appear in the Model Parameters table and area will appear in each DUT Parameters table. NO TE Note, Q1.area does not appear because its value is not a simple number. IC-CAP only identifies parameters with simple numbers for extraction. When this circuit is simulated, IC-CAP outputs the subcircuit as well as an device statement to call the subcircuit. See the example file model_files/bjt/spectre_ncehf.mdl for a working model. Using a Device Statement Followed by a Subcircuit Block In some situations, you must extract parameters from a device defined by a subcircuit whose parameters listed in the Parameters statement within the subcircuit are your model parameters and not your device parameters. Use the “device statement followed by a subcircuit block” configuration. In this configuration, all parameters listed with the subcircuit parameters statement are parsed as model parameters, unless they are referenced on the device statement, in which case they are treated as device parameters. 282 IC-CAP Reference SPECTRE Simulator 4 Example syntax: q1 C B E S realnpn area=1.0 subckt realnpn C B E S parameters area=1.0 is=1e-16 bf=100 lb=1 lb1 B 1 inductor l=lb q1 C 1 E S NPN area=area model NPN bjt is=is bf=bf ends realnpn In the this example, there are 3 model parameters, is, bf and lb, and 1 device parameter, area. Note the difference between this configuration and the single-subcircuit configuration which has only a subckt definition and no device. Test Circuits and Hierarchical Simulation When characterizing a circuit, it is often necessary to add circuitry around a circuit or device to model the actual measurement Setup. IC-CAP provides a Test Circuit Editor to allow modeling of this additional bias circuitry. Select the DUT from the DUT/Setup panel. Click the Test Circuit tab and enter the test circuit description in the same manner you would enter a Circuit Description. The test circuit definition should include a call to the device or subcircuit defined in the Circuit Editor, as well as the additional circuitry needed to model the external parasitics of the measurement Setup. IC-CAP Reference NO TE When you define a test circuit, the DUT Parameter table contains the values specified in the test circuit specification. Regardless of the subcircuit name entered in the SUBNAME field of the subckt declaration, IC-CAP uses the name of the DUT being simulated when the simulator input deck is built. NO TE Noise is a reserved word in SPECTRE and must not be used in naming components of the netlist. Do not use the name “noise” for DUTs or Models. IC-CAP substitutes the Model/DUT name for the name in the Circuit or Test Circuit folders respectively. 283 4 SPECTRE Simulator Subcircuit and device model specifications can be called from inside another model. This enables you to perform hierarchical simulations to study a circuit at different levels. When making reference to another model, the model name must be used as it appears in the IC-CAP Model List. For example, assume you have defined 3 models, model1, model2, and model3. model1 has a circuit model description that is a device definition. The circuit model description for model2 is a subcircuit definition at the gate level that includes a call to model1 in a device call statement. And, the circuit model description for model3 is a subcircuit definition that includes a call to model2 in a subcircuit call statement. When you simulate a Setup in model3, IC-CAP traverses the Model hierarchy and uses the circuit model description defined in model3, which includes calls to model1 and model2. The syntax for calling a device model is identical to that described in the Device Model Description section. The general form of the device call is: DNAME NODE1 NODE2...NODEN MNAME DPAR1=DVAL1 DPAR2=DVAL2 Calling a subcircuit specification allows you to insert an entire subcircuit into a circuit as if it were a single component. The call requires a syntax identical to that used in SPECTRE. The general form of the subcircuit call is: DNAME NODE1 NODE2...NODEN SUBNAME DPAR1=DVAL1 DPAR2=DVAL2 where DNAME is the name of the subcircuit call statement. The only requirement for this name is that it must start with the letter D. NODE denotes the node name for the device connection. SUBNAME is the name of the subcircuit, previously described by a subckt definition. This must have the name of the model as it appears in the Model List if it is in a different model. DPAR are passed in the parameter names. 284 IC-CAP Reference 4 SPECTRE Simulator DVAL are subcircuit parameter values. The order in which they are listed in the subcircuit call statement must match the parameters list in the subcircuit definition. NO TE IC-CAP Reference When a test circuit is included in the Model, IC-CAP uses the test circuit description as the top level circuit definition. The node number connections defined in the test circuit description, not the circuit description, are used as the external nodes. Because of this, any node-number-to-node-name cross-referencing in the circuit description is not used. Only node names equated to node numbers in the test circuit description can be used when specifying Inputs and Outputs in the Setup Editor. When only node numbers are specified in the test circuit description, (that is, they are not equated to node names) these same node numbers must be used in the Input and Output node fields. 285 4 SPECTRE Simulator Piped and Non-Piped SPECTRE Simulations The following sections describe the differences in piped and non-piped simulations for the various SPECTRE simulators. Each section also describes the argument syntax required to invoke each of the template simulators. This information is needed when writing the user translation module, since these are the arguments supplied by IC-CAP when it calls the translation module. For information on the translation module and adding a simulator, refer to the section “Adding a Simulator" in the User’s Guide. There are 3 methods you can use to link to the SPECTRE simulator interface: • Use template SPECTRE, SPECTRE443, or SPECTRE442 with CANNOT_PIPE. • Use template SPECTRE, SPECTRE443, or SPECTRE442 with CAN_PIPE. • Use template SPICE3 and the Open Simulator Interface spectre3.c. NO TE The methods using SPECTRE or SPECTRE442/443 offer significant speed enhancements with some minor features that will not work properly. Be sure to read the following sections describing their limitations. NO TE The method using SPICE3 is fully supported, but offers the slowest speed. It is not recommended, except when methods using SPECTRE or SPECTRE442/443 do not work, or are unavailable. Using SPECTRE Simulator Templates with CANNOT_PIPE If you specify the template SPECTRE, SPECTRE442 or SPECTRE443, you can greatly speed up your simulations. This template will use the SPECTRE alter command to simulate multiple bias steps in 1 simulation. This improves 286 IC-CAP Reference 4 SPECTRE Simulator many multi-sweep simulations such as an S-parameter setup with 2 sweeps. Using the Open Simulator Interface method, each of these bias steps would require a separate simulation. The one known limitation with this method is that parameter sweeps will not work properly with certain parameters that are declared in a subcircuit at the Circuit page level when a Test circuit is being used. Parameters that are declared with an “=” sign will work even under this configuration, but parameters that are declared without an “=” sign will not work. In the following example, parameter sweeps will work for IS, but not for R1. Circuit Page: subckt CIRC 1=A 2=C R1 1 2 50 Q1 1 2 1 2 NPN model NPN BJT IS=10e-15 .ENDS Test Circuit: subckt CIRC2 1=A 2=C XTEST 1 2 CIRC .ENDS Using SPECTRE Simulator Templates with CAN_PIPE IC-CAP may not work properly with parameters defined using $mpar() in #echo lines. If using such a circuit, Agilent Technologies does not recommend using CAN_PIPE. Use CANNOT_PIPE instead. Specifying CAN_PIPE with SPECTRE, SPECTRE442 or SPECTRE443 templates will use a mode that will allow the simulator to stay up for multiple simulations of the same setup as long as the only thing changing are parameters. This is what happens during an optimization which has all targets within 1 setup. This mode is not officially supported by Cadence, so use the link at your own risk. Our testing has shown it to provide significant performance improvements. Limitations of this method include: • This mode has the same limitation described in the previous section. IC-CAP Reference 287 4 SPECTRE Simulator • If a Test circuit is used, this mode offers no performance enhancement. • This mode does not work with remote hosts. Using Template SPICE3 and the Open Simulator Interface spectre3.c NO TE Using Template SPICE3 requires more processing time than the other SPECTRE templates. Using Template SPICE3 is not recommended, except when methods using SPECTRE, SPECTRE442, or SPECTRE443 are unavailable. Using IC-CAP’s Open Simulator Interface, a C-language Translation Module is provided that makes SPECTRE simulation capability available in IC-CAP. This module and instructions for performing SPECTRE simulations in IC-CAP are described here. For general information on the Open Simulator Interface, refer to the section “Adding a Simulator" in the User’s Guide. The IC-CAP/SPECTRE link uses UCB SPICE3 as the template simulator. When performing a SPECTRE simulation in IC-CAP, IC-CAP behaves as if it is performing a SPICE3 simulation. Therefore it generates an input deck in SPICE3 format, calls the simulator and reads back a binary raw data file in SPICE3 format. Through the Open Simulator Interface, the call to the simulator is actually calling the executable version of the C-language Translation Module, spectre3.c. This executable, called spectre3, translates the SPICE3 input deck to a SPECTRE input format, calls SPECTRE to perform the simulation, then translates the SPECTRE format binary raw data file to SPICE3 format which is read by IC-CAP. The source code file spectre3.c is located in the $ICCAP_ROOT/src directory. NO TE 288 When using SPECTRE, the CDS_LICENSE_DIR environment variable must be set. This variable contains the directory path for the license file required by the SPECTRE simulator. Refer to the SPECTRE Reference Manual for detailed procedures on installing the SPECTRE simulator. IC-CAP Reference 4 SPECTRE Simulator NO TE SPECTRE does not support a secondary sweep in the DC specification. For DC simulations, set the System Variable MAX_DC_SWEEPS to 1 so that IC-CAP generates a separate input deck for every point in the secondary sweep, if it exists. NO TE If you set the SPECTRE variable SPECTRE_DEFAULTS in your system startup file, for example, the .profile file, do not use the −E option. Use the following syntax: SPECTRE_DEFAULTS +l %C.r.out -f psfascii To set up SPECTRE simulation capability in IC-CAP: 1 Add the spectre simulator to the usersimulators file in the directory $ICCAP_ROOT/iccap/lib, as shown next. spectre spice3 /<your path>/spectre3 "<host_machine_name>" CANNOT_PIPE 2 The host_machine_name is the host computer for the SPECTRE simulations. This name can be left blank ("") if SPECTRE and IC-CAP are running on the same computer. Since SPECTRE does not have the ability to perform piped simulations in IC-CAP, the CANNOT_PIPE flag must always be set, as shown in the above example. 3 Make the following change to the spectre3.c program to customize it for your environment: • In the main routine, specify the full pathname of the actual SPECTRE simulator on your system. 4 Compile the translation module using the following command: cc -o spectre3 spectre3.c -lm 5 Move the executable file, spectre3 to a permanent location such as $ICCAP_ROOT/bin. The location must match the path specified in the usersimulators file. 6 In IC-CAP, set the SIMULATOR variable to spectre or specify spectre with the Select Simulator command in the IC-CAP Tools Menu. The following files are generated in your home directory when running SPECTRE simulations in IC-CAP: IC-CAP Reference 289 4 SPECTRE Simulator • spectre.cki - SPECTRE format circuit description deck file translated from the SPICE3 circuit description deck. • spectre.raw - SPECTRE formatted binary raw data output file generated by a SPECTRE simulation. • spectre.log - Output print file generated by a SPECTRE simulation. spectre.raw and spectre.log are automatically removed from your home directory after the simulation is completed in IC-CAP. NO TE Some of the new models implemented in SPECTRE use slightly different syntax for the model statement than they would for SPICE3. This difference will not be accounted for by the translator; you must change the model statement in the Circuit Description folder before simulating. The following examples show how the model statement would read for the MM9 and BSIM3 models: model <name> mos902 type=n <parameters> model <name> bsim3 type=n <parameters> 290 IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 5 Saber Simulator Saber Simulation Example 293 Piped and Non-Piped Saber Simulations 295 Saber Parameter Sweeps 297 The Alter Command 299 Circuit Model Description 300 This chapter describes the details of using the Saber simulator with IC-CAP. For general information on IC-CAP simulation, refer to Chapter 6, “Simulating,” in the User’s Guide. The Saber simulator, developed by Analogy, Inc., analyzes analog, digital, event-driven analog and mixed-mode systems. IC-CAP supports these Saber simulator features: • Vary command for unlimited sweeps and simulation at multiple operating points • DC Operating Point Analysis used with DC Transfer, AC Frequency, and Transient Analysis • Options for each type of analysis (these options must be specified in the IC-CAP Variables Table) • Parameter sweeps • Alter command (For details, refer to “The Alter Command” on page 299) • Hierarchical simulation • Remote simulation Agilent Technologies 291 5 Saber Simulator IC-CAP supports other Saber features as follows. (Limited support includes workarounds to achieve desired results that may not be in an ideal format.) • MAST capabilities. • Limited support for the syntax required for model and element development. This can be done in a separate file and included in the Circuit Description using the MAST syntax: <filename where filename is the name of the file that contains the template description of the model or element under development. • IC-CAP does not support stimulus conversion to collect data on non-electrical nodes • Limited support for noise analysis, Fourier analysis, distortion analysis, mixed-mode simulation, and mixed technology simulation. This includes simulations involving non-electrical types such as pressure, revolutions per minute, and torque. IC-CAP does not support digital state type stimulus and response for mixed-mode simulation. Hypermodels must be used to convert digital states to analog signals. The Saber simulator supports the following analysis types: • DC • AC • Transient • Capacitance Voltage (CV) • 2-Port (S,H,Y,Z,K,A parameter) • Time-Domain Reflectometry (TDR) 292 IC-CAP Reference 5 Saber Simulator Saber Simulation Example The circuit description is predefined for all IC-CAP configuration files. Enter this description if a new model is being defined; edit the description to fit specific needs. The syntax is identical to the syntax used for describing circuits in a typical Saber simulation deck. This simulation example will use the IC-CAP supplied Model sabernpn.mdl. 1 Select the simulator by choosing Tools > Options > Select Simulator > saber. Choose OK. 2 Choose File > Open > sabernpn.mdl. Choose OK. 3 View the circuit description by clicking the Circuit tab. The circuit description is shown in Figure 12. This deck describes the circuit (in this case, a single device) to be used in the simulation. 4 To view the input and output for the fearly setup, click the DUTs-Setups tab and select fearly; The Measure/Simulate folder appears with the inputs vb, vc, ve, and vs, and the output ic. The vc input specifies a voltage source at node C that sweeps linearly from 0 to 5V in 21 steps. The ic output specifies that current at node C be monitored. In the Plots folder, icvsvc is specified so that the results of the simulation can be viewed graphically. 5 To simulate, click the Simulate button in the Measure/Simulate folder. The Status line displays Simulate in progress. When the simulation is complete, the Status line displays IC-CAP Ready. 6 To view the results of the simulation, display the Plots folder and click Display Plot. The plot displays measured data represented by solid lines and simulated data represented by dashed lines. IC-CAP Reference 293 5 Saber Simulator NO TE For syntax examples of running a remote simulation, refer to “Remote Simulation Examples” in the User’s Guide. # Saber NPN Device q..model sabernpn= (IS=le-16, TYPE= n, BF = 100, NF = 1, VAF = 1000, IKF = 10, ISE = 0, NE = 1.5, BR = 1, NR = 1, VAR = 1000, IKR = 10, ISC = 0, NC = 2, RB = 0, IRB = 10, RBM = 0, RE = 0, RC = 0, XTB = 0, EG = 1.110, XTI = 3.000, CJE = 0, VJE = 750m, MJE = 333m, TF = 0, XTF = 0, VTF = 1000, ITF = 0, CJC = 0, VJC = 750m, MJC = 333m, XCJC = 1.0, TR = 0, CJS = 0, VJS = 750m, MJS = 0, FC = 500.0m) q.qckt C B E S= model = sabernpn, AREA = 1.0 Figure 12 294 MAST Circuit Description Deck for an NPN Bipolar Transistor IC-CAP Reference Saber Simulator 5 Piped and Non-Piped Saber Simulations Non-piped Saber simulations are identical to non-piped SPICE simulations. However, there are differences between the 2 types of piped simulation. A piped simulation in Saber does the following: 1 Read the input deck from a file upon start up of the simulator 2 Read in the analysis commands from a pipe connected to standard input 3 Perform the simulation 4 Send the text output to a pipe connected to standard output 5 Save the output data to files Saber is restarted if any topological changes are made to the circuit description. If changes are made which do not affect the topology of the circuit, such as changed parameter values, then alter commands are used and the simulator is not restarted. Syntax: Non-Piped simulations This section describes the argument syntax required to invoke the template simulator. This information is needed when writing the user translation module, since these are the arguments supplied by IC-CAP when it calls the translation module. For information on the translation module and adding a simulator, refer to “Adding a Simulator” in the User’s Guide. The command format for a Saber non-piped simulation is as follows: saber -b deckfile where: -b specifies batch mode. IC-CAP Reference 295 5 Saber Simulator deckfile is the input file name. Saber will read deckfile as the input deck file containing the circuit description and deckfile as the command file containing the analysis statements. The textfile is written to a file called deckfile.out. The rawfile information is written to 2 files, called the control file and the data file. The control file is named deckfile.p1.suffix and the data file is named deckfile.p2.suffix where suffix is a keyword assigned by Saber according to the analysis being performed. Refer to the Saber User’s Manual for more information. Syntax: Piped simulations The command format for a Saber piped simulation is as follows: saber -c deckfile where: -c specifies the Saber command mode. deckfile is the input deck file containing the circuit description. Saber reads the analysis commands through standard input. The textfile is written to a file called <deckfile>.out. The rawfile is written to a file called <deckfile>.p1.<suffix> where suffix is a keyword assigned by Saber according to the analysis being performed. Refer to the Saber User’s Manual for more information. 296 IC-CAP Reference Saber Simulator 5 Saber Parameter Sweeps NO TE The LSYNC sweep is not supported with the Saber simulator. When using the Saber simulator, IC-CAP allows parameter sweeps of only parameters and Saber global variables, such as the global variable for temperature called TEMP. Like SPICE-type simulators, specifying parameter sweeps for devices and circuits is done the same way. Parameter names must be entered in the Name field of the Input table exactly as they appear in the Parameters table. An input for vto, with Mode set to P, is added to the nmos2/short/idvd setup, as shown in the following figure. Figure 13 Saber Parameter Sweep Setup Example Figure 14 shows the resulting plot. IC-CAP Reference 297 5 Saber Simulator Figure 14 Saber Parameter Sweep Plot Example For additional information on sweeping parameters, refer to “Specifying Parameter or Variable Sweeps” in the User’s Guide. The following sections of this chapter describe in more detail each of the steps in these simulation overview examples. 298 IC-CAP Reference Saber Simulator 5 The Alter Command An alter command temporarily changes the value of any element or parameter in a MAST template. It is used to make a change in a template description so that a simulation can be re-executed without reloading the original circuit. The alter command cannot be used to make a change that modifies the topology of a design. Alter commands are used in IC-CAP Saber simulations when the Circuit Description and Setup information, other than the sweep limits, remain unchanged from the previous simulation. If only parameter values in the Device Parameters table or Model Parameters table are changed, IC-CAP will not restart the Saber simulator and reload the circuit. Instead, IC-CAP generates alter commands for every parameter, then re-executes the simulation commands. The USE_ALTER variable can be specified and set to No to override this behavior. In this case, Saber is restarted with every simulation whether or not the Circuit Description or Setup was changed. If the USE_ALTER variable does not exist, IC-CAP behaves as if the variable were set to Yes. After a successful simulation, if a resistor is changed from a non-zero to zero value, Saber collapses the nodes. This causes an implicit topological change in the circuit that is not recognized by IC-CAP since the Circuit Description or Setup information has not been changed. Turn the USE_ALTER variable off by setting it to NO to allow IC-CAP to restart the Saber simulator and reload the altered circuit. IC-CAP Reference 299 5 Saber Simulator Circuit Model Description This section discusses the circuit description for the Saber simulator. Selecting Simulator Options Saber simulation options are not specified in the circuit description, but rather in the analysis command line. Saber simulator options are set using the SABER_OPTIONS variable in the Setup, DUT or System variable tables. Enter the options in the Value section of the variable exactly as they should appear in the Saber command string. For example, to perform a transient simulation from 0 to 0.8 nsec in 10 psec steps, the Saber command generated in IC-CAP is: tr(ts le-11, te 8e-10, tb 0) To specify that all step sizes be fixed instead of variable, append the following option to the Saber command: steps fix To do this in IC-CAP, specify the options command steps fix in the value field of the SABER_OPTIONS variable. Simulation now performs the following transient analysis command: tr(ts le-11, te 8e-10, tb 0, steps fix) The SABER_OPTIONS variable can be specified in a variable table at any level. However, it is important to note that a SABER_OPTIONS variable specified in the DUT, Model or System variable tables is used by all simulations executed below that level. For example, if a SABER_OPTIONS variable is specified in the DUT variable table, every Setup under that DUT will use the specified option. This may result in simulation errors because 1 particular option may not be valid for every type of analysis being specified in the DUT. Any number of options can be specified in the SABER_OPTIONS variable; they must be separated by a comma. 300 IC-CAP Reference 5 Saber Simulator A Saber analysis in IC-CAP is always preceded by a DC operating point analysis. This DC command can also contain options and can be specified using the SABER_DC_OPTIONS variable. Refer to Saber manuals for available options and corresponding syntax for each simulation type. Invalid options entered into the SABER_DC_OPTIONS and SABER_OPTIONS variables cause the simulation to fail. Entering Circuit Descriptions Circuit descriptions contain templates of devices and components, as well as node connections and model descriptions written in the MAST modeling language. All model parameter names must be specified when defining models. Circuit descriptions can also be read into the IC-CAP Circuit Editor from a file that already contains a description. You must enter circuit descriptions using valid model names and valid parameter names for the particular model being used. Enter circuit descriptions for a Saber input deck with the Circuit Editor. IC-CAP contains a parser for descriptions written in the MAST modeling language. There are 2 types of Saber circuit editor descriptions: devices and templates. Syntax rules for each type are described in the following sections. Device Model Descriptions A device model is used to characterize a single element of any type. This element can be predefined in the Saber library or defined by the user using the MAST modeling language. A device model description requires a model definition written in the MAST modeling language and an element statement that calls a defined model. IC-CAP Reference 301 5 Saber Simulator A model description specifies the values of a device model that describes a particular element. When a parameter is not specified, the default value in the model template is used and the parameter does not appear in the IC-CAP Parameters table. The general form of the model definition is: ENAME..model MNAME = (PNAME1=PVAL1, PNAME2=PVAL2, ...PNAMEX=PVALX) where ENAME is the name of the element template MNAME is the user-specified name of the model being defined PNAME is a parameter name for the particular model type PVALs are the corresponding parameter values The general form of the element statement that calls the device model is: ENAME.DNAME NNAME1 NNAME2 ...NNAMEN = model = MNAME, DPAR1 = DVAL1, DPAR2 = DVAL2 ...DPARN = DVALN where ENAME is the element template name DNAME is the device name NNAME specifies a node name MNAME is the name of the model being referenced DPAR is a predefined DUT parameter name DVAL is the corresponding DUT parameter value A sample element statement in the MAST modeling language is: q.qckt C B E S = model = sabernpn,AREA = 1.0 where q is the element template name defined in the Saber component library qckt is the user-specified device name 302 IC-CAP Reference 5 Saber Simulator C, B, E, and S are the node names sabernpn is the model name. The model corresponding to this model name must be defined in the circuit description before the reference is made. AREA is a DUT parameter of this model with an assigned value of 1.0 As in Saber, a line ending with a comma is continued on the next line. Template Descriptions A template is used to characterize a circuit that contains more than 1 device. The syntax for defining a template is identical to that of the MAST modeling language. A template can be defined as either an element template or a model template. The general form of the first line of a template element definition is: element template TEMPNAME NNAME1 NNAME2 ...NNAMEN = PAR1, PAR2, ...PARN where TEMPNAME is the template name NNAME is a node name of the external node of the template. External nodes are used to connect the template to another circuit. PAR is the name of the parameter passed into the template The general form of the first line of a template model definition is: element template TEMPNAME NNAME1 NNAME2 ...NNAMEN = model where TEMPNAME is the template name NNAME is the node name of the external node of the template. External nodes are used to connect the template to another circuit. IC-CAP Reference 303 5 Saber Simulator The body of a model definition defines the model parameters. For more information on writing templates, refer to the Saber MAST Reference manual. When writing a template for model development within IC-CAP, the recommended procedure is to define the template in an external file and include this file in the IC-CAP circuit description using the MAST nomenclature <filename> to include a file. This minimizes the changes to be made in the IC-CAP Circuit Description and thereby increases the rate of model development because changes in the external template file will immediately be recognized in IC-CAP. Non-Numeric Parameter Values Saber allows non-numeric values for a number of parameters in predefined templates. The MOS model parameter type is 1 example. This parameter can take on the value of _n for an nmos device and _p for a pmos device. When a Saber input parameter is in alpha format, it does not appear in the IC-CAP Parameters table but is still present in the input deck and passed to the simulator for analysis. Node Names Saber accepts alphanumeric names as well as numbers to represent nodes. There is no limit to the number of characters allowed in a node name (the command line has a limit of 1024 characters). Test Circuits and Hierarchical Simulations When characterizing a circuit, it is often necessary to add circuitry around a circuit or device to model the actual measurement Setup. IC-CAP provides a Test Circuit Editor to allow modeling of this additional bias circuitry. Select the DUT from the DUT/Setup panel. Click the Test Circuit tab and enter the test circuit description in the same manner you would enter a Circuit Description. The test circuit 304 IC-CAP Reference 5 Saber Simulator definition should include a call to the device or template circuit defined in the Circuit Editor, as well as the additional circuitry needed to model the external parasitics of the measurement Setup. NO TE When you define a test circuit, the DUT Parameters table contains the values specified in the test circuit specification. Regardless of the name entered in the TEMPNAME field of the template definition statement, IC-CAP uses the name of the DUT being simulated when the simulator input deck is built. Template circuit and device model specifications can be called from inside another Model. This allows you to perform hierarchical simulations to study a circuit at different levels. For example, assume you have defined 3 Models, model1, model2, and model3. Model1 has a circuit model description that is a device definition. The circuit model description for model2 is a template circuit definition at the gate level that includes a call to model1 in a device call statement. And, the circuit model description for model3 is a template circuit definition that includes a call to model2 in a subcircuit call statement. When you simulate a Setup in model3, IC-CAP traverses the Model hierarchy and uses the circuit model description defined in model3, which includes calls to model1 and model2. The syntax for calling a device model is identical to that described in the Device Model Specifications section above. The general form of the device call is: ENAME.DNAME NNAME1 NNAME2 ...NNAMEN = model MNAME, DPAR1 = DPAR1, DPAR2 = DVAL2 ...DPARN = DVALN Calling a template specification allows you to insert an entire template into a circuit as if it were a single component. The call requires a syntax identical to that used in the MAST modeling language. The general form of the template element call is: TEMPNAME.TNAME NNAME1 NNAME2 ...NNAMEN = TPAR1 = TPARVAL1, TPAR2 = TPARVAL2, ...TPARN = TPARVALN where IC-CAP Reference 305 5 Saber Simulator TEMPNAME is the name of the template previously described by a template definition. This template definition could exist in a different Model. TNAME is the user specified name given to this particular instance of the template described by TEMPNAME. NNAMEs represent the node names of the calling circuit that connect to the external nodes of the template. The calling circuit’s node names need not be the same as the external nodes of the template. The order in which you specify these nodes is the order in which they are connected. The same number of nodes as declared in the template definition must be specified. TPARs are predefined template parameter names. These parameters are defined in the template definition. TPARVALs are the corresponding values of the template parameters. A hierarchical simulation, in which a template in 1 model references a device defined in a different model, requires the use of a MAST external declaration in the template definition. For example, assume a MOS device model (Saber template m named nmos2), which is called in the body of a circuit template called inverter in another model. This inverter template must include the following declaration in order for the nmos2 device model to be recognized. external m..model nmos2 The complete template for the inverter circuit is: template inv A B C D E F electrical A, B, C, D, E, F { external m..model nmos2 m.minv A B C D = model = nmos2, l = 10u, w = 10u m.mload E F A D = model = nmos2, l = 10u, w = 10u } The external declaration does not need to be added when a template calls another template. Refer to the Saber manuals for complete syntax and rules of the MAST modeling language. 306 IC-CAP Reference Saber Simulator 5 Saber Libraries The Saber library of components and templates includes the SPICE components as well as the components developed by Analogy, Inc. Refer to the Saber manuals for a list of supported simulator components, higher level templates and the required specification formats. Saber Input Deck Comments To indicate comments in the Saber simulator input deck, start an input line with the pound symbol (#). This denotes a comment in the circuit model description or in the input file of the Simulation Debugger. NO TE IC-CAP Reference The SABER_DATA_PATH environment variable must be set. This variable contains the directory paths for the executable files and libraries required by the Saber simulator. Refer to the Saber Reference Manual for installation procedures. 307 5 308 Saber Simulator IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 6 MNS Simulator MNS Simulation Example 311 Piped MNS Simulations 314 Non-Piped MNS Simulations 315 MNS Parameter Sweeps 316 Circuit Model Description 321 MNS Input Language 326 MNS Libraries 326 This chapter describes the details of using the MNS simulator with IC-CAP. For general information on IC-CAP simulation, refer to Chapter 6, “Simulating,” in the User’s Guide. IC-CAP supports the following Microwave Nonlinear Simulator (MNS) features: • DC, Small Signal AC, Small Signal S-Parameter, and Transient analysis options • Parameter sweeps for device and circuit simulation • Temperature sweeps • Hierarchical simulation • Variables • Constants • Expressions The MNS Optimizer features are not currently supported in IC-CAP. IC-CAP optimization (different from the MNS Optimizer) of simulated data to target data is supported. Agilent Technologies 309 6 MNS Simulator The MNS simulator supports the following analysis types: • DC • AC • 2-port • Transient • Noise • Capacitance Voltage (CV) • Time-Domain Reflectometry (TDR) • Harmonic Balance NO TE 310 IC-CAP does not add extra circuitry in order to perform a 2-port simulation since this is a standard type in MNS. IC-CAP Reference MNS Simulator 6 MNS Simulation Example The circuit description is predefined for all IC-CAP configuration files. Enter this description if a new model is being defined; edit the description to fit specific needs. The syntax is identical to the syntax used for describing circuits in a typical MNS simulation deck. This MNS simulation example will use the IC-CAP supplied Model mnsnpn.mdl. 1 Select the simulator by choosing Tools > Options > Select Simulator > mns. Choose OK. 2 Choose File > Open > mnsnpn.mdl. Choose OK. 3 View the description by clicking the Circuit tab. The circuit description is shown in the following figure. This deck describes the circuit (in this case, a single device) to be used in the simulation. options ascii=no model npnbjt bjt NPN=yes \ IS=4.015e-16 BF = 87.01 \ NF = 0.9955 VAF = 84.56 \ IKF = 0.01195 ISE = 3.405E-14 \ NE = 1.594 BR = 10.79 \ NR = 1.002 VAR = 9.759 \ IKR = 0.0237 ISC = 1.095E-15 \ NC = 1.1 RB = 9.117 \ IRB = 0.001613 RBM = 5.62 \ RE = 1.385 RC = 9.292 \ XTB = 1.7 EG = 1.11 \ XTI = 3 CJE = 1.312E-12 \ VJE = 1.11 MJE = 0.3475 \ TF = 5.274E-11 XTF = 5.625 \ VTF = 2.678 ITF = 0.02382 \ PTF = 154.1 CJC = 1.396E-12 \ VJC = 0.4511 MJC = 0.1924 \ XCJC = 0.3 TR = 1E-09 \ CJC = 9.985E-14 VJS = 0.8137 \ MJS = 0.3509 FC = 0.5 npnbjt:qckt C B E S Figure 15 MNS Circuit Description Deck for an NPN Bipolar Transistor 4 To view the input and output for the fearly setup, click the DUTs-Setups tab and select fearly. IC-CAP Reference 311 6 MNS Simulator The Measure/Simulate folder appears with the inputs vb, vc, ve, and vs, and the output ic. The vc input specifies a voltage source at node C that sweeps linearly from 0 to 5V in 21 steps. The ic output specifies that current at node C be monitored. In the Plots folder, icvsvc is specified so that the results of the simulation can be viewed graphically. 5 To simulate, click the Simulate button in the Measure/Simulate folder. The Status line displays Simulate in progress. When the simulation is complete, the Status line displays IC-CAP Ready. 6 To view the results of the simulation, display the Plots folder and click Display Plot. The plot displays measured data represented by solid lines and simulated data represented by dashed lines. NO TE Phase information from the sin input cannot be included in the netlist. NO TE For syntax examples of running a remote simulation, refer to “Remote Simulation Examples” in the User’s Guide. The Simulation Debugger When using MNS with the Simulation Debugger to perform an IC-CAP simulation (as opposed to a manual simulation), an output text file consists of only the computational analysis information. An example of a typical AC analysis output text file is as follows: MNS (ver. 03.00 -- 12 Feb 2004) Copyright Agilent Technologies, 2004 AC ac1[1] <baaa07774> freq=(1 kHz->10 MHz) Time required for ac1[1] was 0.30 seconds. 312 IC-CAP Reference MNS Simulator 6 This file does not include the resulting data. To generate a more informative output text file, change the ascii option in the Input File from ascii=no to ascii=yes and perform a manual simulation. An output text file that includes the simulated output data values is produced. The ascii option is set to no by IC-CAP before every simulation so that the binary raw data file is generated by MNS. IC-CAP needs the binary raw data file to read the resulting simulation data. However, this data is not needed for a manual simulation. MNS version 4.0 requires that the option nutmeg be set to yes to cause MNS to generate the binary raw data file required by IC-CAP. If the nutmeg option is not specified, the default is nutmeg = yes. If you set nutmeg = no, MNS will generate an output data format that IC-CAP cannot understand. IC-CAP Reference 313 6 MNS Simulator Piped MNS Simulations Specifying CAN_PIPE (the default) in your usersimulators file for MNS enables IC-CAP to take advantage of the tune mode built into the MNS simulator. This mode permits changing parameters of a simulation without requiring the simulator to be relaunched. This greatly reduces the time required for an optimization which has all simulated targets within 1 setup. Whenever the setup is changed, the simulator is stopped and restarted with the new resulting netlist. Thus, an optimization that has multiple simulated targets from different setups must stop the simulator and restart it at each iteration as it switches between setups. The performance of this second scenario is the same as if the non-piped mode were used. 314 IC-CAP Reference 6 MNS Simulator Non-Piped MNS Simulations Non-piped MNS simulations are identical to non-piped SPICE simulations. Execute a simulation with the Simulation Debugger ON to perform a non-piped simulation. MNS is capable of performing piped simulations, which enables you to turn the Simulation Debugger OFF without requiring that MNS be restarted for every simulation. Syntax: Non-piped simulation This section describes the argument syntax required to invoke the template simulator. This information is needed when writing the user translation module, since these are the arguments supplied by IC-CAP when it calls the translation module. For information on the translation module and adding a simulator, refer to “Adding a Simulator” in the User’s Guide. The command format for an MNS non-piped simulation is as follows: mns -r rawfile deckfile where: deckfile is the input deck file containing the circuit description and analysis commands. rawfile is the output binary data file. The output text file, which normally is sent to standard output is redirected by IC-CAP to a file. This file is displayed in the Output table of the Simulation Debugger if it is on. IC-CAP Reference 315 6 MNS Simulator MNS Parameter Sweeps When using the MNS simulator in IC-CAP, the method of specifying parameter sweeps differs between performing single device simulations and circuit simulations. NO TE When performing parameter sweeps, the name of the parameter to be swept must be recognized by MNS, since the analysis is performed from within the simulator. This means that the global declaration must be used within the MNS circuit description. Simply adding the parameter name to the Variables table results in a failed simulation. Device Simulation Parameter Sweep To sweep a parameter in an MNS device simulation: 1 Add an input specification of mode P to the Setup. Enter the name of the parameter as it appears in the Parameters table. 2 Enter the sweep type and values. The Device Simulation Parameter Sweep example uses the mnsnpn.mdl model with an input of mode P to the fearly setup. This input specifies a linear sweep of the parameter from 200.0e−15 to 230.0e−15 amperes in steps of 15.0e−15 amperes. Figure 16 316 MNS Device Simulation Parameter Sweep Setup Example IC-CAP Reference MNS Simulator 6 During the simulation, IC-CAP generates the following input deck. ; Simulation Input File options ascii=no model mnsnpn bjt npn=yes\ is=4.015E-16\ bf = 60 \ nf = 0.9955\ vaf = 84.56\ ikf = 0.01195 \ ise = 3.405E-14 \ ne = 1.594 \ br = 10.79 \ nr = 1.002 \ var = 9.759 \ ikr = 0.00237 \ isc = 1.095E-15 \ nc = 1.1 \ rb = 9.117 \ irb = 0.001613 \ rbm =5.62 \ re = 1.385 \ rc = 9.292 \ xtb = 1.7 \ eg = 1.11 \ xti = 3 \ cje = 1.312E-12 \ vje = 1.11 \ mje = 0.3475 \ tf = 5.274E-11 \ xtf = 5.625 \ vtf = 2.678 \ itf = 0.02382 \ ptf = 154.1 \ cjc = 1.396E-12 \ vjc = 0.4511 \ mjc = 0.1924 \ xcjc = 0.3 \ tr = 1E-09 \ cjs = 9.985E-14 \ vjs = 0.8137 \ mjs = 0.3509 \ fc = 0.5 mnsnpn:devckt 1 2 3 4 \ area = 1 ; START SOURCES ivs:V2GROUND 2 0 vdc=0 ivs:V1GROUND 3 0 vdc=0 ivs:V3GROUND 3 0 vdc=0 ivs:V4GROUND 4 0 vdc=0 ; END SOURCES stim:swp1 start=0 stop=5 step=0.25 stim:swp2 start=0.7 stop=0.72 step=0.01 stim:swp3 start=200a stop=230a step=15a dc:dc1 stim=swp1 var="V1GROUND.vdc" ct:ct1 an="dc1" stim=swp2 var="V2GROUND.vdc" ct:ct2 an="ct1" stim=swp3 var="mnsnpn.is" IC-CAP Reference 317 6 MNS Simulator Circuit Simulation Parameter Sweep Specifying a parameter sweep for a circuit simulation requires a different approach from a parameter sweep for a device simulation. To sweep a parameter in an MNS circuit simulation: 1 Specify a global variable in the MNS circuit description and set it to an initial value. 2 Set the value of the parameter in the circuit description equal to the global variable name. 3 Add a variable in IC-CAP with the same name as the global MNS parameter. 4 Add an input specification of mode P to the Setup. 5 Enter the global variable name in the Name field of the Input table. 6 Enter the sweep type and values. 318 IC-CAP Reference MNS Simulator 6 Example Circuit Simulation Parameter Sweep The Circuit Simulation Parameter Sweep example, uses the model mnsopamp.mdl. The following line is added to the circuit description: global RC1_r=4352 This complete circuit description is shown below. ; Simulation Input File in MNS Input Deck Format options ascii=no define opamp1 (2 3 4 6 7 ) global RC1_r=4352 ;Internal OpAmp circuit ;using Boyle-Pederson Macro Model ;Input differential amplifier npn1:Q1 10 2 12 npn2:Q2 11 3 13 model npn1 bjt npn=yes is = 8E-16 bf = 52.81 model npn2 bjt npn=yes is = 8.093E-16 bf = 52.66 r:RC1 7 10 r=RC1_r r:RC2 7 11 r=4352 c:C1 10 11 c=4.529E-12 r:RE1 12 14 r=2392 r:RE2 13 14 r=2392 r:RE 14 0 r+7.27E+06 c:CE 14 0 c=7.5E-12 ; Power dissipation modeling resistor r:RP 7 4 r=1.515E+04 ; 1st gain stage vccs:GCM 0 15 14 0 gm=1.152E-09 vccs:GA 15 0 10 11 gm=0.0002298 r:R2 15 0 r=1E+05 ; Compensation capacitor c:C2 15 16 c=1E-11 ; 2nd gain stage vccs:GB 16 0 15 0 gm=37.1 r:RO2 16 0 r=489.2 dmod1:D1 16 17 dmod1:D2 17 16 model dmod1 diode is = 3.822E-32 r:RC 17 0 r=0.0001986 vccs:GC 0 17 6 0 gm=5034 ; Output circuit r:RO1 16 6 r=76.8 dmod2:D3 6 18 dmod2:D4 19 6 model dmod2 diode is = 3.822E-32 ivs:VC 7 18 vdc=1.604 ivs:VE 19 4 vdc=3.104 ; Input diff amp bias source ics:IEE 14 4 idc=2.751E-05 end opamp1 In this example, the value of r:RC1 is set to RC1_r. You must also add a variable called RC1_r to the IC-CAP model variables table and set the variable to a value, such as, IC-CAP Reference 319 6 MNS Simulator 4.000K. In the setup mnsopamp/inv_amp/B_P_macro add an input called RC1_r. The Inputs table is shown in the following figure. Figure 17 MNS Circuit Parameter Sweep Setup Example For additional information on sweeping parameters, refer to “Specifying Parameter or Variable Sweeps” in the User’s Guide. The following sections of this chapter describe in more detail each of the steps in these simulation overview examples. 320 IC-CAP Reference 6 MNS Simulator Circuit Model Description This section explains the circuit descriptions for the MNS simulator. Selecting Simulator Options MNS simulation options are specified using the MNS_OPTIONS variable in the Setup DUT or System Variable tables. Enter the options in the value section of the variable exactly as they should appear in the MNS options command. Entering Circuit Descriptions The circuit description is entered into the IC-CAP Circuit Editor or the Test Circuit Editor. The circuit description includes the necessary definitions of devices, sources and components, as well as node connections and model descriptions. MNS accepts a netlist description that is different from SPICE and Saber simulators. Parameter Table Generation The circuit description is parsed by IC-CAP and specific model information (such as parameters and their corresponding values) as well as circuit component values are reflected in the Parameters table. Model parameters and component values specified in the circuit description entered in the Circuit Editor are saved in the Parameters table. Device parameters specified in the model call statement are saved in the DUT Parameters table—unless a Test Circuit is specified, in which case, parameter values specified in the test circuit description are saved in the DUT Parameters table. Non-numeric Parameter Values MNS allows non-numeric values for a number of parameters in predefined component definitions. One example is the BJT model parameter npn. This parameter can take on the value IC-CAP Reference 321 6 MNS Simulator of yes if it is an nmos device. Alpha format parameters do not appear in the IC-CAP Parameters table but do appear in the simulation input decks. Circuit descriptions must be entered with valid model and parameter names for the particular model being used. Node Names MNS accepts alphanumeric names as well as numbers to represent nodes. There is no limit on the number of characters allowed in a node name; however, delimiters or non-alphanumeric characters are not allowed. Also, a node name that begins with a digit must consist only of digits. Comments To indicate comments in an MNS input deck, start an input line with a semicolon (;). All text on the line following the semicolon will be ignored. NO TE MNS will treat the suffix M as MEG and m as milli, whereas IC-CAP parses both M and m as milli. When specifying a value multiplied by10-3 use m; when specifying a value multiplied by 106 use MEG. Device Model Descriptions A device model is used to characterize a single MNS-defined element of any type. This specification requires a model definition that describes the device and an instance statement that calls the model definition. The model description specifies the value of a device model that describes a particular element. When a parameter is not specified, the default value in the model is used. The general form of the model definition is: model MNAME TYPE PNAME1 = PVAL1 PNAME2 = PVAL2... where 322 IC-CAP Reference MNS Simulator 6 MNAME is the model name. (Regardless of the model name entered into the MNAME field of the MNS model definition statement, IC-CAP substitutes this field with the name of the Model as it is called in the Model List when the simulator input deck is built.) TYPE is a valid MNS element type. PNAMEs are parameter names available for the particular model type. PVALs are the parameter values. A backslash immediately followed by a return (no space between the backslash and the return) at the end of a line indicates that the statement is continued on the next line This continuation character is often used for easier readability when specifying the model description. The general form of the instance statement that calls the device model is: TYPE :DNAME NNAME1 NNAME2...NNAMEN DPAR1 = DVAL1 DPAR2 = DVAL2...DPARN = DVALN where TYPE is the instance type descriptor. This field can contain either the MNS instance type name or a user-supplied model or subcircuit name. DNAME is the device name. NNAMEs denote node names. DPAR is a predefined DUT parameter name. DVAL is the specified DUT parameter value. Refer to the MNS User’s Guide for DUT parameter names available for each model. Subcircuit Model Descriptions A subcircuit definition represents a circuit that contains more than 1 device. The syntax for defining a subcircuit is identical to the syntax used for the MNS input language. The general form of the subcircuit definition is: IC-CAP Reference 323 6 MNS Simulator define SUBCKTNAME (NNAME1 NNAME2 ...NNAMEN) parameters PAR1 = VAL1 PAR2 = VAL2 ...PARN = VALN < body of subcircuit > end SUBCKTNAME where SUBCKTNAME is the name of the subcircuit. NNAMEs are the node names of the external nodes of the subcircuit. These external nodes are used to connect the subcircuit to another circuit. PARs are the names of the parameters passed into the subcircuit. These parameters are optional in a subcircuit definition. If parameters are specified, the assigned default values VAL are also optional. A parameter is assigned to this default value if the parameter is not specified in the subcircuit call. The body of the subcircuit contains element statements. It can contain calls to other subcircuits but it cannot contain other subcircuit definitions. The subcircuit definition is completed using the end SUBCKTNAME statement. Calling a subcircuit definition allows you to insert all instances specified within the subcircuit into the circuit. The call requires a syntax identical to the syntax used in the MNS input language for any instance statement. The general form of the instance statement is: TYPE :INAME NNAME1 NNAME2....NNAMEN PAR1 = VAL1 PAR2 = VAL2......PARN = VALN (While the syntax shown here is correct, passed parameters are ignored by IC-CAP.) where TYPE is the instance type descriptor. If a subcircuit is being called, this field would contain the subcircuit name denoted by SUBCKTNAME. INAME is the instantiated name of the subcircuit. NNAMEs denote node names. 324 IC-CAP Reference MNS Simulator 6 PARs are the subcircuit parameter names. VALs are the specified subcircuit parameter values. The following is an example of a complete subcircuit definition and subcircuit call. • Defined by the user in the Circuit folder: options ascii=no define opamp1 (2 3 4 6 7) ; Internal OpAmp circuit ; using Boyle-Pederson Macro Model ; Input differential amplifier npn1:Q1 10 2 12 npn2:Q2 11 3 13 model npn1 bjt npn=yes is = 8E-16 bf = 52.81 model npn2 bjt npn=yes is = 8.093E-16 bf = 52.66 r:RC1 7 10 r=4352 r:RC2 7 11 r=4352 c:C1 10 11 c=4.529E-12 r:RE1 12 14 r=2392 r:RE2 13 14 r=2392 r:RE 14 0 r=7.27E+06 c:CE 14 0 c=7.5E-12 : Power dissipation modeling resistor r:RP 7 4 r=1.515E+04 : 1st gain stage vccs:GCM 0 15 14 0 gm=1.152E-09 vccs:GA 15 0 10 11 gm=0.0002298 r:R2 15 0 r=1E+05 ; Compensation capacitor c:C2 15 16 c=1E-11 ; 2nd gain stage vccs:GB 16 0 15 0 gm=37.1 r:RO2 16 0 r=489.2 dmod1:D1 16 17 dmod1:D2 17 16 model dmod1 diode is = 3.822E-32 r:RC 17 0 r=0.0001986 vccs:GC 0 17 6 0 gm=5034 ; Output circuit r:RO1 16 6 r=76.8 dmod2:D3 6 18 dmod2:D4 19 6 model dmod2 diode is = 3.822E-32 ivs:VC 7 18 vdc=1.604 ivs:VE 19 4 vdc=3.104 ; Input diff amp bias source ics:IEE 14 4 idc=2.751E-05 end opamp1 IC-CAP Reference 325 6 MNS Simulator • Defined by the user in the Test Circuit folder: ;Inverting Amplifier define inv_amp (1 2 3 4 6 7 ) opamp1:X1 2 3 4 6 7 r:Rf 6 2 r=1E+04 r:Rin 2 1 r=2000 r:Rgnd 3 0 r=0.001 end inv_amp • Added by IC-CAP to the circuit description: inv_amp:XCKT 1 2 3 4 5 6 ; START SOURCES ivs:V1GROUND 1 0 vdc=0 vac=1 ivs:V7GROUND 6 0 vdc=15 ivs:V5GROUND 4 0 vdc=-15 ; END SOURCES r:RO2 2 0 100000 r:RO3 3 0 100000 r:RO5 5 0 100000 stim:swpfreq start=1000 stop=1e=07 dec=3 ac:ac1 stim=swpfreq var="freq" For more information on MNS subcircuit definitions, refer to the MNS User’s Guide. MNS Input Language The MNS Input Language, which describes circuit and simulator control statements, is different from the SPICE Input Language and the Saber Input Language (MAST). For information about the MNS input language, refer to the MNS User’s Guide. MNS Libraries MNS contains a library of elements and components. For information about the MNS Libraries, refer to the MNS User’s Guide. 326 IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 7 ADS Simulator ADS Interfaces 330 Hardware and Operating System Requirements 331 Codewording and Security 331 Setting Environment Variables 332 ADS Simulation Example 333 Piped ADS Simulations 336 Non-Piped ADS Simulations 338 Circuit Model Description 338 ADS Parameter Sweeps 345 Interpreting this Chapter 352 General Syntax 355 The ADS Simulator Syntax 356 Instance Statements 364 Model Statements 365 Subcircuit Definitions 366 Expression Capability 368 VarEqn Data Types 390 “C-Preprocessor” 391 Data Access Component 394 Reserved Words 396 This chapter describes the details of using the Advanced Design System (ADS) Simulator with IC-CAP. For general information on IC-CAP simulation, refer to Chapter 6, “Simulating,” in the User’s Guide. Agilent Technologies 327 7 ADS Simulator NO TE The PC version of IC-CAP supports ADS version 2002 or newer. Older versions of ADS can not be used with the PC version of IC-CAP. IC-CAP supports the following ADS features: • DC, Small Signal AC, Small Signal S-Parameter, and Transient analysis options • Parameter sweeps for device and circuit simulation • Temperature sweeps • Hierarchical simulation • Variables • Constants • Expressions • Spectre circuit page The ADS Optimizer features are not currently supported in IC-CAP. IC-CAP optimization (different from the ADS Optimizer) of simulated data to target data is supported. The ADS simulator supports the following analysis types: • DC • AC • 2-port • Transient • Noise • Capacitance Voltage (CV) • Time-Domain Reflectometry (TDR) • Steady State Harmonic Balance 328 IC-CAP Reference 7 ADS Simulator NO TE 2-port simulation with high frequency noise is supported to extract noise parameters such as noise figure, optimum source reflection coefficients, equivalent noise resistance data, minimum noise figure data, and equivalent noise temperature data. IC-CAP does not add extra circuitry in order to perform a 2-port simulation since this is a standard type in ADS. IC-CAP Reference 329 7 ADS Simulator ADS Interfaces IC-CAP provides two template names to interface to the ADS simulator’s Circuit and Test Circuit pages—hpeesofsim uses native ADS simulator syntax and spmodeads uses spectre simulator syntax. Both interfaces use native ADS simulator syntax to specify the sweep and output requests. To specify the hpeesofsim or spmodeads interface, usersimulators should have a line similar to the following: hpeesofsim hpeesofsim $ADS_DIR/bin/iccapinterface "" CAN_PIPE or spmodeads spmodeads $ADS_DIR/bin/iccapinterface "" CAN_PIPE The first field can be any name you choose, it will show up in your simulator list, and it can be used with the SIMULATOR variable. Both the hpeesofsim and spmodeads lines shown above are in the usersimulators file by default. When using the spmodeads interface, refer to “Circuit Model Descriptions” on page 276 in Chapter 4, “SPECTRE Simulator” for spectre syntax for the Circuit and Test Circuit pages. 330 IC-CAP Reference 7 ADS Simulator Hardware and Operating System Requirements The ADS Simulator on IC-CAP is supported on the following platforms: • Linux RedHat Enterprise 4.0 or Linux Novell SUSE SLES 9 • Solaris 10 • Microsoft Windows XP or Microsoft Windows Vista. Codewording and Security The ADS Simulator is a secured program that requires, at a minimum, a license for the E8881 Linear Simulator to run. Depending on the type of simulation, additional licenses may be required. IC-CAP Reference 331 7 ADS Simulator Setting Environment Variables Before running the ADS Simulator, set the environment variable HPEESOF_DIR on UNIX or ADS_DIR on Windows to point to the ADS Simulator’s installation location. • To set HPEESOF_DIR using the Korn Shell, add the following to your ~/.profile. export HPEESOF_DIR=<ADS_install_directory> • To set HPEESOF_DIR using the C Shell, add the following to your ~/.cshrc. setenv HPEESOF_DIR <ADS_install_directory> • To set ADS_DIR for Windows 2000, right click on My Computer and select Properties. Click on the Advanced tab. Then select Environment Variables and set ADS_DIR either for the local user or system wide, depending on your needs. • To set ADS_DIR for Windows NT 4.0, right click on My Computer and select Properties. Click on the Environment tab. Then set ADS_DIR either for the local user or system wide, depending on your needs. You may need to log off and log back onto the computer for the new variable to be found by IC-CAP. 332 IC-CAP Reference 7 ADS Simulator ADS Simulation Example The circuit description is predefined for all IC-CAP configuration files. Enter this description if a new model is being defined; edit the description to fit specific needs. The syntax is identical to the syntax used for describing circuits in a typical ADS simulation deck. This ADS simulation example will use the IC-CAP supplied Model hpsimnpn.mdl. 1 Choose File > Examples > model_files/bjt/hpsimnpn.mdl. Choose OK. 2 View the description by clicking the Circuit tab. The circuit description is shown in the following figure. This deck describes the circuit (in this case, a single device) to be used in the simulation. ; Simulation Input File for BJT options ascii=no model npnbjt BJT NPN=yes \ Is=401.5a Bf = 87.01 \ Nf = 995.5m Vaf = 84.56 \ Ikf = 11.95m Ise = 34.05f \ Ne = 1.594 Br = 10.79 \ Nr = 1.002 Var = 9.759 \ Ikr = 23.7m Isc = 1.095f \ Nc = 1.100 Rb = 9.117 \ Irb = 1.613m Rbm = 5.620 \ Re = 1.385 Rc = 9.292 \ Xtb = 1.7 Eg = 1.110 \ Xti = 3.000 Cje = 1.312p \ Vje = 1.110m Mje = 347.5m \ Tf = 52.74p Xtf = 5.625 \ Vtf = 2.678 Itf = 23.82 \ Ptf = 154.1 Cjc = 1.396p \ Vjc = 451.1m Mjc = 192.4m \ Xcjc = 300m Tr = 1.00n \ Cjs = 99.85f Vjs = 813.7m \ Mjs = 350.9m Fc = 500.0m \ Tnom = 27 npnbjt:Q1 C B E S Figure 18 ADS Circuit Description Deck for an NPN Bipolar Transistor 3 To view the input and output for the fearly setup, click the DUTs-Setups tab and select fearly. IC-CAP Reference 333 7 ADS Simulator The Measure/Simulate folder appears with the inputs vb, vc, ve, and vs, and the output ic. The vc input specifies a voltage source at node C that sweeps linearly from 0 to 5V in 21 steps. The ic output specifies that current at node C be monitored. In the Plots folder, icvsvc is specified so that the results of the simulation can be viewed graphically. 4 To simulate, click the Simulate button in the Measure/Simulate folder. The Status line displays Simulate in progress. Under most configurations, the ADS status window will appear. For more information about these configurations, see “Piped ADS Simulations” on page 336. When the simulation is complete, the Status line displays Simulate Complete. 5 To view the results of the simulation, right-click on fearly, then choose Plots > icvsvc. (This is a shortcut for displaying the plot from the Plots folder.) The plot displays measured data represented by solid lines and simulated data represented by dashed lines. NO TE For syntax examples of running a remote simulation, refer to “Remote Simulation Examples" in the User’s Guide. The Simulation Debugger When using ADS with the Simulation Debugger to perform an IC-CAP simulation (as opposed to a manual simulation), an output text file consists of only the computational analysis information. An example of a typical AC analysis output text file is as follows: 334 IC-CAP Reference ADS Simulator 7 HPEESOFSIM (ver. 03.00 -- 12/14/01 09:28:45) Copyright Agilent Technologies, 2004 CT ct1[1] </var/tmp/ICCAAa18727> VBGROUND.Vdc=(700 mV->720 mV) DC ct1[1].dc1[1/3] </var/tmp/ICCAAa18727> VBGROUND.Vdc=700 mV VCGROUND.Vdc=(0 V->5 V) DC ct1[1].dc1[2/3] </var/tmp/ICCAAa18727> VBGROUND.Vdc=710 mV VCGROUND.Vdc=(0 V->5 V) DC ct1[1].dc1[3/3] </var/tmp/ICCAAa18727> VBGROUND.Vdc=720 mV VCGROUND.Vdc=(0 V->5 V) ------------------Simulation finished. ------------------- This file does not include the resulting data. To generate a more informative output text file, change the ASCII_Rawfile option in the Input File from ASCII_Rawfile=no to ASCII_Rawfile=yes and perform a manual simulation. An output text file that includes the simulated output data values is produced. The ASCII_Rawfile option is set to no by IC-CAP before every simulation so that the binary raw data file is generated by ADS. IC-CAP needs the binary raw data file to read the resulting simulation data. However, this data is not needed for a manual simulation. ADS version 1.3 requires that the option UseNutmegFormat be set to yes to cause ADS to generate the binary raw data file required by IC-CAP. If the UseNutmegFormat option is not specified, the default is UseNutmegFormat = yes. If you set UseNutmegFormat = no, ADS will generate an output data format that IC-CAP cannot understand. IC-CAP Reference 335 7 ADS Simulator Piped ADS Simulations Specifying CAN_PIPE (the default) in your usersimulators file for the ADS simulator enables IC-CAP to take advantage of the tune mode built into the ADS simulator. This mode permits changing parameters of a simulation without requiring the simulator to be relaunched. This greatly reduces the time required for optimizations to run. However, each setup requires a new simulator to be launched. By default, IC-CAP permits up to 3 ADS simulators to be running at once so that an optimization across as many as 3 setups can be completed in the fastest time possible. Certain large simulations may require a great deal of system resources and having 3 simulations currently active can degrade system performance. If you encounter this problem, you can set the MAX_PARALLEL_SIMULATORS system variable to 1 or 2. If your system can handle more than 3 simulators in parallel and you need to optimize across more than 3 setups at a time, the value of MAX_PARALLEL_SIMULATORS can be increased. When CAN_PIPE mode is used, the ADS simulator will bring up a status window during simulation. The first time the simulator is launched it can take several seconds for this window to appear. Once it is open, successive simulations will attach to the same status window. Each time a new setup is simulated, a new simulator must be started. There is a certain start-up delay associated with each invocation. This will be much shorter than the very first invocation which needed to launch the status window. Successive simulations of a setup which has been previously simulated will return in the shortest time as the simulator does not need to be reinvoked. Opening the Simulation Debugger will terminate all running simulators, and close the ADS status window. Simulations done with the Simulation Debugger window open are performed in non-piped mode and thus the ADS status window is not opened. In situations when you want to use the $mpar or $dpar feature in #echo lines for MNS and ADS netlists, you must enter names properly. The proper ADS name syntax is a dot-separated name, such as NPN.Bf. If you fail to use a proper name, simulations 336 IC-CAP Reference ADS Simulator 7 will yield incorrect results when you try to use the simulator in CAN_PIPE mode. If names cannot be revised, use CANNOT_PIPE. This was especially problematic for userdefined models requiring many #echo lines using the $mpar feature in order for IC-CAP to parse it properly. This problem occurs when the technique used to implement userdefined models in ADS is declaring 2 new components, 1 a modelform and another an instance. This implementation of user-defined models led to the requirement for #echo lines. The modelform component looked like any other ADS netlist component, but it had no nodes. The parser is modified for IC-CAP 2001 to recognize a nodeless component as a userdefined model; however, only in the context of a subcircuit. If you want to create this type of userdefined model in ADS, then you must use a subcircuit. Doing so eliminates the need for #echo lines in the netlist and the subcircuit will parse and simulate properly. IC-CAP Reference 337 7 ADS Simulator Non-Piped ADS Simulations Non-piped ADS simulations are identical to non-piped MNS simulations. Execute a simulation with the Simulation Debugger ON to perform a non-piped simulation. ADS is capable of performing piped simulations, which enables you to turn the Simulation Debugger OFF without requiring that ADS be restarted for every simulation. Circuit Model Description This section explains the circuit descriptions for the ADS simulator. Selecting Simulator Options ADS simulation options are specified using the HPEESOFSIM_OPTIONS variable in the Setup DUT or System Variable tables. Enter the options in the value section of the variable exactly as they should appear in the ADS options command. Entering Circuit Descriptions The circuit description is entered into the IC-CAP Circuit Editor or the Test Circuit Editor. The circuit description includes the necessary definitions of devices, sources and components, as well as node connections and model descriptions. ADS accepts a netlist description that is different from SPICE and Saber simulators. NO TE 338 IC-CAP accepts a modified form of a netlist that enables you to use binning. To simulate a netlist with binned models from IC-CAP, you must declare the bin model (and only the bin model) immediately following the subcircuit definition. You must declare each Model[x]= to be a name of the form XCKT.modname since that is how IC-CAP netlists the bin model. IC-CAP Reference ADS Simulator 7 Parameter Table Generation The circuit description is parsed by IC-CAP and specific model information (such as parameters and their corresponding values) as well as circuit component values are reflected in the Parameters table. Model parameters and component values specified in the circuit description entered in the Circuit Editor are saved in the Parameters table. Device parameters specified in the model call statement are saved in the DUT Parameters table—unless a Test Circuit is specified, in which case, parameter values specified in the test circuit description are saved in the DUT Parameters table. By default, all parameter names will be converted to uppercase, since most extraction routines look for parameters named with all uppercase letters. Some extraction routines (e.g., Root models and EExxx models) require all lowercase letters. In these .mdl files, the variable HPEESOFSIM_USE_LOWER_CASE_PARAMS is declared to override the default behavior. If you want to write extraction routines using the native mixed case parameters, declare the variable HPEESOFSIM_USE_MIXED_CASE_PARAMS in your model file. For a description of these functions, see the System Variables. Non-numeric Parameter Values ADS allows non-numeric values for a number of parameters in predefined component definitions. One example is the BJT model parameter npn. This parameter can take on the value of yes if it is an nmos device. Alpha format parameters do not appear in the IC-CAP Parameters table but do appear in the simulation input decks. Circuit descriptions must be entered with valid model and parameter names for the particular model being used. IC-CAP Reference 339 7 ADS Simulator Node Names ADS accepts alphanumeric names as well as numbers to represent nodes. There is no limit on the number of characters allowed in a node name; however, delimiters or non-alphanumeric characters are not allowed. Also, a node name that begins with a digit must consist only of digits. Numeric node names are discouraged as they will result in warnings during simulation that the results will not be displayed properly in ADS Data Display Server (DDS). However, these warnings are of no consequence to ICCap. Comments To indicate comments in an ADS input deck, start an input line with a semicolon (;). All text on the line following the semicolon will be ignored. NO TE ADS will treat the suffix M as MEG and m as milli, whereas IC-CAP parses both M and m as milli. When specifying a value multiplied by10-3 use m; when specifying a value multiplied by 106 use MEG. Device Model Descriptions A device model is used to characterize a single ADS-defined element of any type. This specification requires a model definition that describes the device and an instance statement that calls the model definition. The model description specifies the value of a device model that describes a particular element. When a parameter is not specified, the default value in the model is used. The general form of the model definition is: model MNAME TYPE PNAME1 = PVAL1 PNAME2 = PVAL2... where 340 IC-CAP Reference ADS Simulator 7 MNAME is the model name. (Regardless of the model name entered into the MNAME field of the ADS model definition statement, IC-CAP substitutes this field with the name of the Model as it is called in the Main window when the simulator input deck is built.) TYPE is a valid ADS element type. PNAMEs are parameter names available for the particular model type. PVALs are the parameter values. A backslash immediately followed by a return (no space between the backslash and the return) at the end of a line indicates that the statement is continued on the next line This continuation character is often used for easier readability when specifying the model description. The general form of the instance statement that calls the device model is: TYPE :DNAME NNAME1 NNAME2...NNAMEN DPAR1 = DVAL1 DPAR2 = DVAL2...DPARN = DVALN where TYPE is the instance type descriptor. This field can contain either the ADS instance type name or a user-supplied model or subcircuit name. DNAME is the device name. NNAMEs denote node names. DPAR is a predefined DUT parameter name. DVAL is the specified DUT parameter value. Refer to “General Syntax” on page 355 for DUT parameter names available for each model. Subcircuit Model Descriptions A subcircuit definition represents a circuit that contains more than 1 device. The syntax for defining a subcircuit is identical to the syntax used for the ADS input language. The general form of the subcircuit definition is: IC-CAP Reference 341 7 ADS Simulator define SUBCKTNAME (NNAME1 NNAME2 ...NNAMEN) parameters PAR1 = VAL1 PAR2 = VAL2 ...PARN = VALN < body of subcircuit > end SUBCKTNAME where SUBCKTNAME is the name of the subcircuit. NNAMEs are the node names of the external nodes of the subcircuit. These external nodes are used to connect the subcircuit to another circuit. PARs are the names of the parameters passed into the subcircuit. These parameters are optional in a subcircuit definition. If parameters are specified, the assigned default values VAL are also optional. A parameter is assigned to this default value if the parameter is not specified in the subcircuit call. The body of the subcircuit contains element statements. It can contain calls to other subcircuits but it cannot contain other subcircuit definitions. The subcircuit definition is completed using the end SUBCKTNAME statement. Calling a subcircuit definition allows you to insert all instances specified within the subcircuit into the circuit. The call requires a syntax identical to the syntax used in the ADS input language for any instance statement. The general form of the instance statement is: TYPE :INAME NNAME1 NNAME2....NNAMEN PAR1 = VAL1 PAR2 = VAL2......PARN = VALN (While the syntax shown here is correct, passed parameters are ignored by IC-CAP.) where TYPE is the instance type descriptor. If a subcircuit is being called, this field would contain the subcircuit name denoted by SUBCKTNAME. INAME is the instantiated name of the subcircuit. NNAMEs denote node names. 342 IC-CAP Reference ADS Simulator 7 PARs are the subcircuit parameter names. VALs are the specified subcircuit parameter values. The following is an example of a complete subcircuit definition and subcircuit call. • Added by IC-CAP for output format/etc. Options ASCII_Rawfile=no UseNutmegFormat=yes • Defined by the user in the Circuit folder: ;Simulation Input File in hpeesofsim Input Deck Format global RC1_r=4352 define hpsimopamp (2 3 4 6 7 ) ; Internal OpAmp circuit ; using Boyle-Pederson Macro Model ; Input differential amplifier NPN1:Q1 10 2 12 NPN2:Q2 11 3 13 model NPN1 BJT NPN=yes \ Is = 8E-16 \ Bf = 52.81 model NPN2 BJT NPN=yes \ Is = 8.093E-16 \ Bf = 52.66 R:RC1 7 10 R=RC1_r R:RC2 7 11 R=4352 C:C1 10 11 C=4.529E-12 R:RE1 12 14 R=2392 R:RE2 13 14 R=2392 R:RE 14 0 R=7.27E+06 C:CE 14 0 C=7.5E-12 ; Power dissipation modeling resistor R:RP 7 4 R=1.515E+04 ; 1st gain stage #uselib "ckt", "VCCS" VCCS:GCM 14 0 0 15 G=1.152E-09 VCCS:GA 10 11 15 0 G=0.0002298 R:R2 15 0 R=1E+05 ; Compensation capacitor C:C2 15 16 C=3E-11 ; 2nd gain stage VCCS:GB 15 0 16 0 G=37.1 R:RO2 16 0 R=489.2 DMOD1:D1 16 17 DMOD1:D2 17 16 model DMOD1 Diode \ Is = 3.822E-32 R:RC 17 0 R=0.0001986 VCCS:GC 6 0 0 17 G=5034 ; Output circuit R:RO1 16 6 R=76.8 DMOD2:D3 6 18 DMOD2:D4 19 6 model DMOD2 Diode \ Is = 3.822E-32 V_Source:VC 7 18 Vdc=1.604 V_Source:VE 19 4 Vdc=3.104 IC-CAP Reference 343 7 ADS Simulator ; Input diff amp bias source I_Source:IEE 14 4 Idc=2.751E-05 end hpsimopamp • Defined by the user in the Test Circuit folder: ; Inverting Amplifier define inv_amp (1 2 3 4 6 7 ) hpsimopamp:X1 2 3 4 6 7 R:Rf 6 2 R=1E+04 R:Rin 2 1 R=2000 R:Rgnd 3 0 R=0.001 end inv_amp • Added by IC-CAP to the circuit description: inv_amp:XCKT n1 n2 n3 n4 n5 n6 ; START SOURCES V_Source:V1GROUND n1 0 Vdc=0 Vac=1 V_Source:V7GROUND n6 0 Vdc=15 V_Source:V4GROUND n4 0 Vdc=-15 ; END SOURCES R:RO2 n2 0 R=100MEG R:RO3 n3 0 R=100MEG R:RO5 n5 0 R=100MEG SweepPlan:swpfreq Start = 1000 Stop = 1e+07 Dec = 3 AC:ac1 SweepPlan=swpfreq SweepVar="freq" 344 IC-CAP Reference ADS Simulator 7 ADS Parameter Sweeps When using the ADS simulator in IC-CAP, the method of specifying parameter sweeps differs between performing single device simulations and circuit simulations. NO TE When performing parameter sweeps, the name of the parameter to be swept must be recognized by ADS, since the analysis is performed from within the simulator. This means that the global declaration must be used within the ADS circuit description. Simply adding the parameter name to the Variables table results in a failed simulation. Device Simulation Parameter Sweep To sweep a parameter in an ADS device simulation: 1 Add an input specification of mode P to the Setup. Enter the name of the parameter as it appears in the Parameters table. 2 Enter the sweep type and values. The Device Simulation Parameter Sweep example uses the hpsimnpn.mdl model with an input of mode P to the fearly setup. This input specifies a linear sweep of the parameter from 200.0e−15 to 230.0e−15 amperes in steps of 15.0e−15 amperes. Figure 19 ADS Device Simulation Parameter Sweep Setup Example During the simulation, IC-CAP generates the following input deck. IC-CAP Reference 345 7 ADS Simulator Options\ ASCII_Rawfile=no UseNutmegFormat=yes ; Simulation Input File for BJT model npn BJT NPN=yes \ Is = 2.704E-16 \ Bf = 86.16 \ Nf = 0.979 \ Vaf = 86.95 \ Ikf = 0.01491 \ Ise = 1.886E-14 \ Ne = 1.522 \ Br = 8.799 \ Nr = 0.9967 \ Var = 9.757 \ Ikr = 0.02369 \ Isc = 1.095E-15 \ Nc = 1.1 \ Rb = 8.706 \ Irb = 0.001509 \ Rbm = 5.833 \ Re = 1.385 \ Rc = 10.68 \ Xtb = 0 \ Eg = 1.11 \ Xti = 3 \ Cje = 1.312E-12 \ Vje = 0.6151 \ Mje = 0.2052 \ Tf = 4.781E-11 \ Xtf = 4.359 \ Vtf = 3.237 \ Itf = 0.01753 \ Ptf = 176.2 \ Cjc = 1.394E-12 \ Vjc = 0.5428 \ Mjc = 0.2254 \ Xcjc = 1 \ Tr = 5.099E-09 \ Cjs = 1.004E-13 \ Vjs = 0.5668 \ Mjs = 0.2696 \ Fc = 0.5 \ Tnom = 27 npn:devckt 1 2 3 4 ; START SOURCES V_Source:VBGROUND 2 0 Vdc=0 V_Source:VCGROUND 1 0 Vdc=0 V_Source:VEGROUND 3 0 Vdc=0 V_Source:VSGROUND 4 0 Vdc=-3 ; END SOURCES SweepPlan:swp1 Start=0 Stop=5 Step=0.25 SweepPlan:swp2 Start=0.7 Stop=0.72 Step=0.01 DC:dc1 SweepPlan=swp1 SweepVar=”VCGROUND.Vdc” ParamSweep:ct1 SimInstanceName=”dc1” SweepPlan=swp2 SweepVar=”VBGROUND.Vdc” 346 IC-CAP Reference 7 ADS Simulator Circuit Simulation Parameter Sweep Specifying a parameter sweep for a circuit simulation requires a different approach from a parameter sweep for a device simulation. To sweep a parameter in an ADS circuit simulation: 1 Specify a global variable in the ADS circuit description and set it to an initial value. 2 Set the value of the parameter in the circuit description equal to the global variable name. 3 Add a variable in IC-CAP with the same name as the global ADS parameter. 4 Add an input specification of mode P to the Setup. 5 Enter the global variable name in the Name field of the Input table. 6 Enter the sweep type and values. Example Circuit Simulation Parameter Sweep The Circuit Simulation Parameter Sweep example, uses a model for opamp simulation. The following line is included with the circuit description: global RC1_r=4352 This complete circuit description is shown below. ;Simulation Input File in hpeesofsim Input Deck Format global RC1_r=4352 define opamp1 (2 3 4 6 7) ; Internal OpAmp circuit ; using Boyle-Pederson Macro Model ; Input differential amplifier NPN1:Q1 10 2 12 NPN2:Q2 11 3 13 model NPN1 BJT NPN=yes \ Is = 8E-16 \ Bf = 52.81 model NPN2 BJT NPN=yes \ Is = 8.093E-16 \ Bf = 52.66 R:RC1 7 10 R=RC1_r R:RC2 7 11 R=4352 C:C1 10 11 C=4.529E-12 R:RE1 12 14 R=2392 IC-CAP Reference 347 7 ADS Simulator R:RE2 13 14 R=2392 R:RE 14 0 R=7.27E+06 C:CE 14 0 C=7.5E-12 ; Power dissipation modeling resistor R:RP 7 4 R=1.515E+04 ; 1st gain stage #uselib "ckt", "VCCS" VCCS:GCM 14 0 0 15 G=1.152E-09 VCCS:GA 10 11 15 0 G=0.0002298 R:R2 15 0 R=1E+05 ; Compensation capacitor C:C2 15 16 C=1E-11 ; 2nd gain stage VCCS:GB 15 0 16 0 G=37.1 R:RO2 16 0 R=489.2 DMOD1:D1 16 17 DMOD1:D2 17 16 model DMOD1 Diode \ Is = 3.822E-32 R:RC 17 0 R=0.0001986 VCCS:GC 6 0 0 17 G=5034 ; Output circuit R:RO1 16 6 R=76.8 DMOD2:D3 6 18 DMOD2:D4 19 6 model DMOD2 Diode \ Is = 3.822E-32 V_Source:VC 7 18 Vdc=1.604 V_Source:VE 19 4 Vdc=3.104 ; Input diff amp bias source I_Source:IEE 14 4 Idc=2.751E-05 end opamp1 define inv_amp (1 2 3 4 6 7 ) opamp1:X1 2 3 4 6 7 R:Rf 6 2 R=1E+004 R:Rin 2 1 R=2000 R:Rgnd 3 0 R=0.001 end inv_amp inv_amp:XCKT n1 n2 n3 n4 n5 n6 ; START SOURCES V_Source:V1GROUND n1 0 Vdc=0 Vac=polar(1,0) V_Source:V7GROUND n6 0 Vdc=15 V_Source:V4GROUND n4 0 Vdc=-15 ; END SOURCES R:RO2 n2 0 R=100MEG R:RO3 n3 0 R=100MEG R:RO5 n5 0 R=100MEG SweepPlan:swpfreq Start=1000 Stop=1e+07 Dec=3 SweepPlan:swp1 Start=4 Stop=10 Step=6 AC:ac1 SweepPlan=swpfreq SweepVar="freq" ParamSweep:ct1 SimInstanceName="ac1" SweepPlan=swp1 SweepVar="RC1_r" In this example, the value of R:RC1 is set to RC1_r. You must also add a variable called RC1_r to the IC-CAP model variables table and set the variable to a value, such as, 4.000K. In the example model, you must then add an input call RC1_r to the setup . The Inputs table is shown in the following figure. 348 IC-CAP Reference 7 ADS Simulator Figure 20 ADS Circuit Parameter Sweep Setup Example For additional information on sweeping parameters, refer to “Specifying Parameter or Variable Sweeps" in the User’s Guide. The following sections of this chapter describe in detail the syntax for the ADS Simulator. Using LSYNC sweeps When you use LSYNC sweeps for an ADS simulation, data is written to a data access component file. This file contains the synchronized lists and the specific elements in the netlist that refer to LSYNC values. These elements are accessed using variables and an index. A single sweep for the LSYNC group is then created to sweep the index. IC-CAP Reference 349 7 ADS Simulator Example Netlist: Options ASCII_Rawfile=no UseNutmegFormat=yes model nmos3 MOSFET nmos=yes \ UO = 1000 \ Vto = 1.136 \ Nfs = 0 \ Tox = 1E-007 \ Nsub = 5.31E+015 \ Nss = 0 \ Vmax = 1E+006 \ Rs = 0 \ Rd = 0 \ Rsh = 0 \ Cbd = 0 \ Cbs = 0 \ Cj = 0 \ Mj = 0.5 \ Cjsw = 0 \ Mjsw = 0.33 \ Is = 1E-014 \ Pb = 0.8 \ Fc = 0.5 \ Xj = 9.438E-008 \ Ld = 2.955E-007 \ Delta = 0.9338 \ 350 IC-CAP Reference ADS Simulator Theta Eta Kappa = 0.04124 = 0 = 0.2 7 \ \ nmos3:devckt n1 n2 n3 n4 L = lsync0_0 W = lsync0_1 Ad = 1e-10 As = 1e-10 Pd = 0.000104 Ps = 0.000104 ; START SOURCES V_Source:VGGROUND n2 0 Vdc=0 V_Source:VBGROUND n4 0 Vdc=0 V_Source:VDGROUND n1 0 Vdc=0.1 V_Source:VSGROUND n3 0 Vdc=0 ; END SOURCES INDEX0=0 #uselib "ckt" , "DAC" DAC:DAC0 File="c:\ictmp\IC19_lsync0" Type="dscr" InterpMode="index_lookup" iVar1=1 iVal1=INDEX0 lsync0_0=file {DAC0, "lval0"} lsync0_1 = file {DAC0, "lval1"} SweepPlan:swp1 Start=0 Stop=5 Step=0.2 SweepPlan:swp2 Start=-3 Stop=0 Step=1.5 Reverse=yes SweepPlan:swp3 Start=0 Stop=2 Step=1 DC:dc1 SweepPlan=swp1 SweepVar="VGGROUND.Vdc" ParamSweep:ct1 SimInstanceName="dc1" SweepPlan=swp2 SweepVar="VBGROUND.Vdc" ParamSweep:ct2 SimInstanceName="ct1" SweepPlan=swp3 SweepVar="INDEX0" And the contents of IC19_lsync0 will be: BEGIN DSCRDATA % INDEX0 lval0 lval1 0 5e-05 5e-05 1 5e-05 5e-06 2 2.5e-06 5e-05 IC-CAP Reference 351 7 ADS Simulator Interpreting this Chapter To make this chapter more accurate and easier to update, much of the information in it is derived directly from the help facility in the ADS Simulator. The parameter information in the help facility has the following format. Parameters: name (units) attributes description Attributes: field 1: settable. s = settable. S = settable and required. field 2: modifiable. m = modifiable. field 3: optimizable. o = optimizable. field 4: readable. r = readable. field 5: type. b = boolean. i = integer. r = real number. c = complex number. d = device instance. s = character string. Table 66 352 Model Parameter Attribute Definitions Attribute Meaning Example settable Can be defined in the instance or model statement. Most parameters are settable, there are a few cases where a parameter is calculated internally and could be used either in an equation or sent to the dataset via the OutVar parameter on the simulation component. The parameter must have its full address. Gbe (Small signal Base-Emitter Conductance) in the BJT model can be sent to the dataset by setting required Has no default value; must be set to some value, otherwise the simulator will return an error. modifiable The parameter value can be swept in simulation. OutVar=”MySubCkt. X1.Gbe” on the simulation component. IC-CAP Reference 7 ADS Simulator Table 66 IC-CAP Reference Model Parameter Attribute Definitions Attribute Meaning Example optimizable The parameter value can be optimized. readable Can be queried for value in simulation using the OutVar parameter. See settable. boolean Valid values are 1, 0, True, and False. integer The maximum value allowed for an integer type is 32767, values between 32767 and 2147483646 are still valid, but will be netlisted as real numbers. In some cases the value of a parameter is restricted to a certain number of legal values. real number The maximum value allowed is 1.79769313486231e308+. complex number The maximum value allowed for the real and imaginary parts is 1.79769313486231e308+. device instance The parameter value must be set to the name of one of the instances present in the circuit. The mutual inductance component (Mutual), where the parameters Inductor1 and Inductor2 are defined by instance names of inductors present in the circuit or by a variable pointing to the instance names. Inductor1=”L1” or Inductor1=Xyz where Xyz=”L1” character string Used typically for file names. Must be in double quotes. Filename=”MyFileName” The Region parameter in the BJT model is defined as integer but the only valid values are 0, 1, 2, and 3. 353 7 ADS Simulator There are 2 other identifiers not in flag format. One is [ ] next to a parameter name and it means that the parameter is structured as an array. The other is (repeatable) appended to the parameter description and it means that the parameter can appear more than once in the same instance. An example is OutVar. 354 IC-CAP Reference 7 ADS Simulator General Syntax In this chapter, the following typographical conventions apply: Table 67 IC-CAP Reference Typographic Conventions Type Style Used For [. . .] Data or character fields enclosed in brackets are optional. italics Names and values in italics must be supplied bold Words in bold are ADS simulator keywords and are also required. 355 7 ADS Simulator The ADS Simulator Syntax The following sections outline the basic language rules. Field Separators A delimiter is one or more blanks or tabs. Continuation Characters A statement may be continued on the next line by ending the current line with a backslash and continuing on the next line. Name Fields A name may have any number of letters or digits in it but must not contain any delimiters or non alphanumeric characters. The name must begin with a letter or an underscore ( _ ). Table 68 356 Fundamental Units Dimension Fundamental Unit Frequency Hertz Resistance Ohms Conductance Siemens Capacitance Farads Inductance Henries Length meters Time seconds Voltage Volts Current Amperes Power Watts Distance meters Temperature Celsius IC-CAP Reference 7 ADS Simulator Parameter Fields A parameter field takes the form name = value, where name is a parameter keyword and value is either a numeric expression, the name of a device instance, the name of a model or a character string surrounded by double quotes. Some parameters can be indexed, in which case the name is followed by [i], [i,j], or [i,j,k]. i, j, and k must be integer constants or variables. Node Names A node name may have any number of letters or digits in it but must not contain any delimiters or non alphanumeric characters. If a node name begins with a digit, then it must consist only of digits. Lower/Upper Case The ADS Simulator is case sensitive. Units and Scale Factors An integer or floating point number may be scaled by following it with either an e or E and an integer exponent (e.g., 2.65e3, 1e-14). An ADS Simulator parameter with a given dimension assumes its value has the corresponding units. For example, for a resistance, R=10 is assumed to be 10 Ohms. The fundamental units for the ADS Simulator are shown in Table 68. A number or expression can be scaled by following it with a scale factor. A scale factor is a single word that begins with a letter or an underscore. The remaining characters, if any, consist of letters, digits, and underscores. Note that ‘‘/’’ cannot be used to represent ‘‘per’’. The value of a scale factor is resolved using the following rule: If the scale factor exactly matches one of the predefined scale-factors (Table 69), then use the numerical equivalent; otherwise, if the first character of the scale factor is one of the legal scale-factor prefixes (Table 70), the corresponding scaling is applied. IC-CAP Reference 357 7 ADS Simulator Table 69 Predefined Scale Factors Scale Factor Scaling Meaning A 1 Amperes F 1 Farads ft 0.3048 feet H 1 Henries Hz 1 Hertz in 0.0254 inches meter 1 meters meters 1 meters metre 1 meters metres 1 meters mi 1609.344 miles mil 2.54*10 5 mils mils 2.54*10 5 mils nmi 1852 nautical miles Ohm 1 Ohms Ohms 1 Ohms S 1 Siemens sec 1 seconds V 1 Volts W 1 Watts Predefined Scale Factors This type of scale factor is a predefined sequence of characters which the ADS Simulator parses as a single token. The predefined scale factors are listed in Table 69. 358 IC-CAP Reference 7 ADS Simulator Single-character prefixes If the first character of the scale factor is one of the legal scale-factor prefixes, the corresponding scaling is applied.The single-character prefixes are based on the metric system of scaling prefixes and are listed in Table 70 For example, 3.5 GHz is equivalent to 3.5*109 and 12 nF is equivalent to 1.2*10-8. Note that most of the time, the ADS Simulator ignores any characters that follow the single-character prefix. The exceptions are noted in “Unrecognized Scale Factors” on page 360. Most of these scale factors can be used without any additional characters (e.g., 3.5 G, 12n). This means that m, when used alone, stands for ‘‘milli’’. The underscore _ is provided to turn off scaling. For example, 1e-9 _farad is equivalent to 10-9, and 1e-9 farad is equivalent to 10-24. Predefined scale factors are case sensitive. Unless otherwise noted, additional characters can be appended to a predefined scale factor prefix without affecting its scaling value. Table 70 IC-CAP Reference Single-character prefixes Prefix Scaling Meaning T 1012 tera G 109 giga M 106 mega K 103 kilo k 103 kilo - 1 m 10-3 milli u 10-6 micro n 10-9 nano 359 7 ADS Simulator Table 70 Single-character prefixes (continued) Prefix Scaling Meaning p 10-12 pico f 10 -15 a 10-18 femto atto A predefined scale factor overrides any corresponding single-character-prefix scale factor. For example, 3 mm is equivalent to 3*10-3, not 3*106. In particular, note that M does not stand for milli, m does not stand for mega, and F does not stand for femto. There are no scale factors for dBm, dBW, or temperature, see section on “Functions” on page 372 for conversion functions. Unrecognized Scale Factors The ADS Simulator treats unrecognizable scale factors as equal to 1 and generates a warning message. Scale-Factor Binding More than one scale factor may appear in an expression, so expressions like x in + y mil are valid and behave properly. Scale factors bind tightly to the preceding variable. For instance, 6 + 9 MHz is equal to 9000006. Use parentheses to extend the scope of a scale factor (e.g., (6 + 9) MHz). Booleans Many devices, models, and analyses have parameters that are boolean valued. Zero is used to represent false or no, whereas any number besides zero represents true or yes. The keywords yes and no can also be used. 360 IC-CAP Reference ADS Simulator 7 Ground Nodes Node 0 is assumed to be the ground node. Additional ground node aliases can be defined using the ground statement. Multiple ground statements can be used to define any number of ground aliases, but they must all occur at the top-level hierarchy in the netlist. General Form: Ground [ :name ] node1 [... nodeN] Example: Ground gnd Global Nodes Global nodes are user-defined nodes which exist throughout the hierarchy. The global nodes must be defined on the first lines in the netlist. They must be defined before they are used. General Form: globalnode nodename1 [ nodename2 ] [... nodenameN ] Example: globalnode sumnode my_internal_node Comments Comments are introduced into an ADS Simulator file with a semicolon; they terminate at the end of the line. Any text on a line that follows a semicolon is ignored. Also, all blank lines are ignored. Statement Order Models can appear anywhere in the netlist. They do not have to be defined before a model instance is defined. IC-CAP Reference 361 7 ADS Simulator Some parameters expect a device instance name as the parameter value. In these cases, the device instance must already have been defined before it is referenced. If not, the device instance name can be entered as a quoted string using double quotes ("). Naming Conventions The full name for an instance parameter is of the form: [pathName].instanceName.parameterName[index] where pathName is a hierarchical name of the form [pathName].subcircuitInstanceName The same naming convention is used to reference nodes, variables, expressions, functions, device terminals, and device ports. For device terminals, the terminal name can be either the terminal name given in the device description, or tn where n is the terminal number (the first terminal in the description is terminal 1, etc.). Device ports are referenced by using the name pm, where m is the port number (the first pair of terminals in the device description is port 1, etc.). Note that t1 and p1 both correspond to the current flowing into the first terminal of a device, and that t2 corresponds to the current flowing into the second terminal. If terminals 1 and 2 define a port, then the current specified by t2 is equal and opposite to the current specified by t1 and p1. Currents The only currents that can be accessed for simulation, optimization, or output purposes are the state currents. State currents Most devices are voltage controlled, that is, their terminal currents can be calculated given their terminal voltages. Circuits that contain only voltage-controlled devices can be solved using node analysis. Some devices, however, such as 362 IC-CAP Reference ADS Simulator 7 voltage sources, are not voltage controlled. Since the only unknowns in node analysis are the node voltages, circuits that contain non-voltage-controlled devices cannot be solved using node analysis. Instead, modified node analysis is used. In modified node analysis, the unknown vector is enlarged. It contains not only the node voltages but the branch currents of the non-voltage-controlled devices as well. The branch currents that appear in the vector of unknowns are called state currents. Since the ADS Simulator uses modified node analysis, the values of the state currents are available for output. If the value of a particular current is desired but the current is not a state current, insert a short in series with the desired terminal. The short does not affect the behavior of the circuit but does create a state current corresponding to the desired current. To reference a state current, use the device instance name followed by either a terminal or port name. If the terminal or port name is not specified, the state current defaults to the first state current of the specified device. Note that this does not correspond to the current through the first port of the device whenever the current through the first port is not a state current. For some applications, the positive state current must be referenced, so a terminal name of t1 or t3 is acceptable but not t2. Using port names avoids this problem. The convention for current polarity is that positive current flows into the positive terminal. IC-CAP Reference 363 7 ADS Simulator Instance Statements General Form: type [ :name ] node1 ... nodeN [ [ param=value ] ... ] type [ :name ] [ [ param=value] ... ] Examples: ua741:OpAmp in out out C:C1 2 3 C=10pf HB:Distortion1 Freq=10GHz The instance statement is used to define to the ADS Simulator the information unique to a particular instance of a device or an analysis. The instance statement consists of the instance type descriptor and an optional name preceded by a colon. If it is a device instance with terminals, the nodes to which the terminals of the instance are connected come next. Then the parameter fields for the instance are defined. The parameters can be in any order. The nodes, though, must appear in the same order as in the device or subcircuit definition. The type field may contain either the ADS Simulator instance type name, or a user-supplied model or subcircuit name. The name can be any valid name, which means it must begin with a letter, can contain any number of letters and digits, must not contain any delimiters or non alphanumeric characters, and must not conflict with other names including node names. 364 IC-CAP Reference 7 ADS Simulator Model Statements General Form: model name type [ [ param = value ] ... ] Examples: model NPNbjt bjt NPN=yes Bf=100 Js=0.1fa Often characteristics of a particular type of element are common to a large number of instances. For example, the saturation current of a diode is a function of the process used to construct the diode and also of the area of the diode. Rather than describing the process on each diode instantiation, that description is done once in a model statement and many diode instances refer to it. The area, which may be different for each device, is included on each instance statement. Though it is possible to have several model statements for a particular type of device, each instance may only reference at most one model. Not all device types support model statements. The name in the model statement becomes the type in the instance statement. The type field is the ADS Simulator-defined model name. Any parameter value not supplied will be set to the model’s default value. Most models, such as the diode or bjt models, can be instantiated with an instance statement. There are exceptions. For instance, the Substrate model cannot be instantiated. Its name, though, can be used as a parameter value for the Subst parameter of certain transmission line devices. IC-CAP Reference 365 7 ADS Simulator Subcircuit Definitions General Form: define subcircuitName ( node1 ... nodeN ) [ parameters name1 = [ value1 ] ... name n = [ value n ] ] . . . elementStatements . . . end [ subcircuitName ] Examples: define DoubleTuner (top bottom left right) parameters vel=0.95 r=1.0 l1=.25 l2=.25 tline:tuner1 top bottom left left len=l1 vel=vel r=r tline:tuner2 top bottom right right len=l2 vel=2*vel r=r end DoubleTuner DoubleTuner:InputTuner t1 b2 3 4 l1=0.5 A subcircuit is a named collection of instances connected in a particular way that can be instantiated as a group any number of times by subcircuit calls. The subcircuit call is in effect and form, an instance statement. Subcircuit definitions are simply circuit macros that can be expanded anywhere in the circuit any number of times. When an instance in the input file refers to a subcircuit definition, the instances specified within the subcircuit are inserted into the circuit. Subcircuits may be nested. Thus a subcircuit definition may contain other subcircuits. However, a subcircuit definition cannot contain another subcircuit definition. All the definitions must occur at the top level. An instance statement that instantiates a subcircuit definition is referred to as a subcircuit call. The node names (or numbers) specified in the subcircuit call are substituted, in order, for the node names given in the subcircuit definition. All instances that refer to a subcircuit definition must have the same number of nodes as are specified in the subcircuit definition and in the same order. Node names inside the subcircuit definition are strictly local unless they are a global ground defined with a ground statement or global nodes defined with a globalnode statement. A subcircuit definition with no nodes must still include the parentheses ( ). 366 IC-CAP Reference ADS Simulator 7 Parameter specification in subcircuit definitions is optional. Any parameters that are specified are referred to by name followed by an equals sign and then an optional default value. If, when making a subcircuit call in your input file, you do not specify a particular parameter, then this default value is used in that instance. Subcircuit parameters can be used in expressions within the subcircuit just as any other variable. Subcircuits are a flexible and powerful way of developing and maintaining hierarchical circuits. Parameters can be used to modify one instance of a subcircuit from another. Names within a subcircuit can be assigned without worrying about conflicting with the same name in another subcircuit definition. The full name for a node or instance include its path name in addition to its instance name. For example, if the above subcircuit is included in subckt2 which is itself included in subckt1, then the full path name of the length of the first transmission line is subckt1.subckt2.tuner1.len. Only enough of the path name has to be specified to unambiguously identify the parameter. For example, an analysis inside subckt1 can reference the length by subckt2.tuner1.len since the name search starts from the current level in the hierarchy. If a reference to a name cannot be resolved in the local level of hierarchy, then the parent is searched for the name, and so on until the top level is searched. In this way, a sibling can either inherit its parent’s attributes or define its own. IC-CAP Reference 367 7 ADS Simulator Expression Capability The ADS Simulator has a powerful and flexible symbolic expression capability, called VarEqn, which allows the user to define variables, expressions, and functions in the netlist. These can then be used to define other VarEqn expressions and functions, to specify device parameters and optimization goals, etc. The names for VarEqn variables, expressions, and functions follow the same hierarchy rules that instance and node names do. Thus, local variables in a subcircuit definition can assume values that differ from one instance of the subcircuit to the next. Functions and expressions can be defined either globally or locally anywhere in the hierarchy. All variables are local by default. Local variables are known in the subcircuit in which they are defined, and all lower subcircuits; they are not known at higher levels. Expressions defined at the root (the top level) are known everywhere within the circuit. To specify an expression to be global the global keyword must precede the expression. The global keyword causes the variable to be defined at the root of the hierarchy tree regardless of the lexical location. Examples: global exp1 = 2.718 The expression capability includes the standard math operations of + - / * ^ in addition to parenthesis grouping. Scale factors are also allowed in general expressions and have higher precedence than any of the math operators (see “Units and Scale Factors” on page 357). Constants An integer constant is represented by a sequence of digits optionally preceded by a negative sign (e.g, 14, -3). A real number contains a decimal point and/or an exponential suffix using the e notation (e.g, 14.0, -13e-10). 368 IC-CAP Reference 7 ADS Simulator The only complex constant is the predefined constant j which is equal to the square root of -1. It can be used to generate complex constants from real and integer constants (e.g., j*3, 9.1 + j*1.2e-2). The predefined functions complex() and polar() can also be used to enter complex constants into an expression. A string constant is delimited by single quotes (e.g.,’string’,’this is a string’). Predefined Constants Table 71 Predefined Constants Constant Definition Constant Definition boltzmann Boltzmann’s constant ln10 2.30... c0 Speed of light in a vacuum j Square root of -1 DF_DefaultInt Reference to default int value defined in Data Flow controller pi 3.14... DF_ZERO_OHMS Symbol for use as zero ohms planck Planck’s constant e 2.718... qelectron Charge of an electron e0 Permittivity of a vacuum tinyReal Smallest real number hugeReal Largest real number u0 Permeability of a vacuum Variables General Form: variableName = constantExpression Examples: x1 = 4.3inches + 3mils syc_a = cos(1.0+sin(pi*3)) Zin = 7.8k - j*3.2k IC-CAP Reference 369 7 ADS Simulator The type of a variable is determined by the type of its value. For example, x=1 is an integer, x=1+j is complex, and x = “tuesday” is a string. Predefined Variables In addition to the predefined constants, there are several predefined global variables. Since they are variables, they can be modified and swept. 370 __fdd Flag to indicate a new FDD instance __fdd_v Flag to indicate updated FDD state vars _ac_state Is analyses in AC state _c1 to _c30 Symbolic controlling current _dc_state Is analyses in DC state _freq1 to _freq12 Fundamental frequency _harm Harmonic number index for sources and FDD _hb_state Is analyses in harmonic balance state _p2dInputPower Port input power for P2D simulation _sigproc_state Is analyses in signal processing state _sm_state Is analyses in sm state _sp_state Is analyses in sparameter analysis state _tr_state Is analyses in transient state CostIndex Index for optimization cost plots DF_Value Reference to corresponding value defined in Data Flow controller DefaultValue Signal processing default parameter value DeviceIndex Device Index used for noise contribution or DC OP output dcSourceLevel used for DC source-level sweeping doeindex Index for Design of Experiment sweeps freq The frequency in Hertz of the present simulation logNodesetScale Used for DC nodeset simulation logRshunt Used for DC Rshunt sweeping (1MHz) IC-CAP Reference ADS Simulator mcTrial Trial counter for Monte Carlo based simulations noisefreq The spectral noise analysis frequency Nsample Signal processing analysis sample number optIter Optimization job iteration counter temp The ambient temperature, in degrees Celsius. time The analysis time timestep The analysis time step tranorder The transient analysis integration order ScheduleCycle Signal processing schedule cycle number sourcelevel The relative attenuation of the spectral sources (1.0) ssfreq The small-signal mixer analysis frequency _v1 to _v19 State variable voltages used by the sdd device _i1 to _i19 State variable currents used by the sdd device mc_index Index variable used by Monte Carlo controller 7 (25 degrees) The sourcelevel variable is used by the spectral analysis when it needs to gradually increase source power from 0 to full scale to obtain convergence. It can be used by the user to sweep the level of ALL spectral source components, but is not recommended. The _v and _i variables should only be used in the context of the sdd device. Expressions General Form: expressionName = nonconstantExpression Examples: x1 = 4.3 + freq; syc_a = cos(1.0+sin(pi*3 + 2.0*x1)) Zin = 7.8 ohm + j*freq * 1.9 ph y = if (x equals 0) then 1.0e100 else 1/x endif The main difference between expressions and variables is that a variable can be directly swept and modified by an analysis but an expression cannot. Note however, that any instance IC-CAP Reference 371 7 ADS Simulator parameter that depends on an expression is updated whenever one of the variables that the expression depends upon is changed (e.g., by a sweep). Predefined Expressions gaussian = _gaussian_tol(10.0) default gaussian distribution nfmin = _nfmin() the minimum noise figure omega = 2.0*pi*freq the analysis frequency rn = _rn() the noise resistance sopt = _sopt the optimum noise match tempkelvin = temp + 273.15 the analysis temperature uniform = _uniform_tol(10.0) default uniform distribution Functions General Form: functionName( [ arg1, ..., argn ] ) = expression Examples: y_srl(freq, r, l) = 1.0/(r + j*freq*l) expl(a,b) = exp(a)*step(b-a) + exp(b)*(a-b-1)*step(a-b) In expression, the function’s arguments can be used, as can any other VarEqn variables, expressions, or functions. Predefined Functions 372 _discrete_density(...) user-defined discrete density function _gaussian( [mean, sigma, lower_n_sigmas, upper_n_sigmas, lower_n_sigmas_del, upper_n_sigmas_del] ) gaussian density function IC-CAP Reference 7 ADS Simulator _gaussian_tol[percent_tol, gaussian density function (tolerance version) lower_n_sigmas, upper_n_sigmas, lower_percent_tol, upper_percent_tol, lower_n_sigmas_del, upper_n_sigmas_del] ) _get_fnom_freq(...) Get analysis frequency for FDD carrier frequency index and harmonic _lfsr(x, y, z) linear feedback shift register (trigger, seed, taps) _mvgaussian(...) multivariate gaussian density function (correlation version) _mvgaussian_cov(...) multivariate gaussian density function (covariance version) _n_state(x, y) _n_state(arr, val) array index nearest value _pwl_density(...) user-defined piecewise-linear density function _pwl_distribution(...) user-defined piecewise-linear distribution function _randvar(distribution, mcindex, [nominal, tol_percent, x_min, x_max, lower_tol, upper_tol, delta_tol, tol_factor] ) random variable function _shift_reg(x, y, z, t) (trigger, mode(ParIn:MSB1st), length, input) _uniform( [lower_bound, upper_bound] ) uniform density function _uniform_tol([percent_tol, uniform density function (tolerance version) lower_tol, upper_tol] ) IC-CAP Reference abs(x) absolute value function access_all_data(...) datafile indep+dep lookup/interpolation function access_data(...) datafile dependents’ lookup/interpolation function arcsinh(x) arcsinh function arctan(x) arctan function atan2(y, x) arctangent function (2 real arguments) awg_dia(x) wire gauge to diameter in meters bin(x) function convert a binary to integer 373 7 374 ADS Simulator bitseq(time, [clockfreq, trise, tfall, vlow, vhigh, bitseq] ) bitsequence function complex(x, y) real-to-complex conversion function conj(x) complex-conjugate function cos(x) cosine function cos_pulse(time, [low, high, delay, rise, fall, width, period] ) periodic cosine shaped pulse function cosh(x) hyperbolic cosine function cot(x) cotangent function coth(x) hyperbolic cotangent function ctof(x) convert Celsius to Fahrenheit ctok(x) convert Celsius to Kelvin cxform(x, y, z) transform complex data damped_sin(time, [offset, amplitude, freq, delay, damping, phase] ) damped sin function db(x) decibel function dbm(x, y) convert voltage and impedance into dbm dbmtoa(x, y) convert dbm and impedance into short circuit current dbmtov(x, y) convert dbm and impedance into open circuit voltage dbmtow(x) convert dBm to Watts dbpolar(x, y) (dB,angle)-to-rectangular conversion function dbwtow(x) convert dBW to Watts deembed(x) deembedding function deg(x) radian-to-degree conversion function dep_data(x, y, [z] ) dependent variable value dphase(x, y) Continuous phase difference (radians) between x and y dsexpr(x, y) Evaluate a dataset expression to an hpvar dstoarray(x, [y] ) Convert an hpvar to an array echo(x) echo-arguments function IC-CAP Reference 7 ADS Simulator erf_pulse(time, [low, high, delay, rise, fall, width, period] ) periodic error function shaped pulse function eval_poly(x, y, z) polynomial evaluation function exp(x) exponential function exp_pulse(time, [low, high, delay1, tau1, delay2, tau2] ) exponential pulse function fread(x) raw-file reading function ftoc(x) convert Fahrenheit to Celsius ftok(x) convert Fahrenheit to Kelvin get_array_size(x) Get the size of the array get_attribute(...) value of attribute of a set of data get_block(x, y) HPvar tree from block name function get_fund_freq(x) Get the frequency associated with a specified fundamental index get_max_points(x, y) maximum points of independent variable imag(x) imaginary-part function index(x, y, [z, t] ) get index of name in array innerprod(...) inner-product function int(x) convert-to-integer function itob(x, [y] ) convert integer to binary jn(x, y) bessel function ktoc(x) convert Kelvin to Celsius ktof(x) convert Kelvin to Fahrenheit length(x) returns number of elements in array limit_warn( [x, y, z, t, u] ) limit, default and warn function list(...) IC-CAP Reference ln(x) natural log function log(x) log base 10 function mag(x) magnitude function makearray(...) (1:real-2:complex-3:string, y, z..) or (array, startIndex, stopIndex) max(x, y) maximum function 375 7 376 ADS Simulator min(x, y) minimum function multi_freq(time, amplitude, freq1, freq2, n, [seed] ) multifrequency function names(x, y) array of names of indepVars and/or depVars in dataset norm(x) norm function phase(x) phase (in degrees) function phase_noise_pwl(...) piecewise-linear function for computing phase noise phasedeg(x) phase (in degrees) function phaserad(x) phase (in radians) function polar(x, y) polar-to-rectangular conversion function polarcpx(...) polar to rectangular conversion function pulse(time, [low, high, delay, rise, fall, width, period] ) periodic pulse function pwl(...) piecewise-linear function pwlr(...) piecewise-linear-repeated function rad(x) degree-to-radian conversion function ramp(x) ramp function read_data(...) read_data("file-dataset", "locName", "fileType") read_lib(...) read_lib("libName", "item", "fileType") real(x) real-part function rect(x, y, z) rectangular pulse function rem(...) remainder function ripple(x, y, z, v) ripple(amplitude, intercept, period, variable) sinusoidal ripple function rms(...) root-mean-square function rpsmooth(x) rectangular-to-polar smoothing function scalearray(x, y) scalar times a vector (array) function setDT(x) Turns on discrete time transient mode (returns argument) IC-CAP Reference ADS Simulator NO TE sffm(time, [offset, amplitude, carrier_freq, mod_index, signal_freq] ) signal frequency FM sgn(x) signum function sin(x) sine function sinc(x) sin(x)/x function sinh(x) hyperbolic sine function sprintf(x, y) formatted print utility sqrt(x) square root function step(x) step function tan(x) tangent function tanh(x) hyperbolic tangent function vswrpolar(x, y) (VSWR,angle)-to-rectangular conversion function 7 The VarEqn trigonometric functions always expect the argument to be specified in radians. If the user wants to specify the angle in degrees then the VarEqn function deg() can be used to convert radians to degrees or the VarEqn function rad() can be used to convert degrees to radians. Detailed Descriptions of the Predefined Functions _discrete_density (x1, p1, x2, p2, …) allows the user to define a discrete density distribution: returns x1 with probability p1, x2 with probability p2, etc. The xn, pn pairs needn’t be sorted. The pns will be normalized automatically. _gaussian( [mean, sigma, lower_n_sigmas, upper_n_sigmas, lower_n_sigmas_del, upper_n_sigmas_del] ) returns a value randomly distributed according to the standard bell-shaped curve. mean defaults to 0. sigma defaults to 1. lower_n_sigmas, upper_n_sigmas define truncation limits (default to 3). lower_n_sigmas_del and upper_n_sigmas_del define a range in which the probability is zero (a bimodal distribution). _gaussian_tol( [percent_tol, lower_n_sigmas, upper_n_sigmas, lower_percent_tol, upper_percent_tol, lower_n_sigmas_del, upper_n_sigmas_del] IC-CAP Reference 377 7 ADS Simulator ) is similar, but percent_tol defines the percentage tolerance about the nominal value (which comes from the RANDVAR expression). _get_fnom_freq(x) returns the actual analysis frequency associated with the carrier frequency specified in the surrounding FDD context. If x is negative, it is the carrier frequency index. If x is positive, it is the harmonic index. _mvgaussian(N, mean1, … meanN, sigma1, … sigmaN, correlation1,2, …, correlation1,N, …, correlationN-1,N) multivariate gaussian density function (correlation version). Returns an N dimensional vector. The correlation coefficient matrix must be positive definite. _mvgaussian_cov(N, mean1, … meanN, sigma1, … sigmaN, covariance1,2, ..., covariance1,N, ..., covarianceN-1,N) is similar, but defined in terms of covariance. The covariance matrix must be positive definite. _pwl_density(x1, p1, x2, p2, …) returns a value randomly distributed according to the piecewise-linear density function with values pn at xn, i.e. it will return xn with probability pn and return p –p n+1 n x + ε with probability p + ε --------------------------n n xn + 1 – xn The xn, pn pairs needn’t be sorted. The pns will be normalized automatically. _pwl_distribution(x1, p1, x2, p2, …) is similar, but is defined in terms of the distribution values. It will return a value less than or equal to xn with probability pn. The xn, pn pairs will be sorted in increasing xn order. After sorting, the pns should never decrease. The pns will be normalized so that pN=1. _randvar(distribution, mcindex, [nominal, tol_percent, x_min, x_max, lower_tol, upper_tol, delta_tol, tol_factor] ) returns a value randomly distributed according to the distribution. The value will be the same for a given value of mcindex. The other parameters are interpreted according to the distribution. 378 IC-CAP Reference 7 ADS Simulator _shift_reg(x, y, z, t) implements a z-bit shift register. x specifies the trigger. y = 0 means LSB First, Serial To Parallel, 1 means MSB First, Serial To Parallel, 2 means LSB First, Parallel to Serial, 3 means MSB First, Parallel to Serial. t is the input (output) value. _uniform( [lower_bound, upper_bound] ) returns a value between lower_bound and upper_bound. All such values are equally probable. _uniform_tol( [percent_tol, lower_tol, upper_tol] ) is similar, but tolerance version. access_all_data(InterpMode, source, indep1, dep1 …) datafile independent and dependent lookup/interpolation function. access_data(InterpMode, nData, source, dep1 …) datafile dependents’ lookup/interpolation function. bin(String) calculates the integer value of a sequence of 1’s and 0’s. For example bin(’11001100’) = 204. The argument of the bin function must be a string denoted by single quotes. The main use of the bin function is with the System Model Library to define an integer which corresponds to a digital word. cxform(x, OutFormat, InFormat) transform complex data x from format InFormat to format OutFormat. The values for OutFormat and InFormat are 0: real and imaginary, 1: magnitude (linear) and phase (degrees), 2: magnitude (linear) and phase (radians), 3: magnitude (dB) and phase (degrees), 4: magnitude (dB) and phase (radians), 5: magnitude (SWR) and phase (degrees), 6: magnitude (SWR) and phase (radians). For example, to convert linear magnitude and phase in degrees to real and imaginary parts: result = cxform(invar, 0, 1) damped_sin(time, [offset, amplitude, freq, delay, damping, phase]). See “Transient Source Functions” on page 384. The function db(x) is a shorthand form for the expression: 20log(mag(x)). The deembed(x) function takes an array, x, of 4 complex numbers (the 2-port S-parameter array returned from the VarEqn interp() function) and returns an array of equivalent IC-CAP Reference 379 7 ADS Simulator de-embedding S-parameters for that network. The array must be of length 4 (2 x 2--two-port data only), or an error message will result. The transformation used is: S 11 –1 S 11 = --------det S S –1 21 = --------21 det S S –1 12 = --------12 det S S 22 –1 = --------22 det where det is the determinant of the 2 x 2 array. CAU TI O N This transformation assumes that the S-parameters are derived from equal port termination impedances. This transformation does not work when the port impedances are unequal. The function deg(x) converts from radians to degrees. dphase(x, y) Calculates phase difference phase(x)-phase(y) (in radians). dsexpr(x, y) Evaluate x, a DDS expression, to an hpvar. y is the default location data directory. echo(x) prints argument on terminal and returns it as a value. erf_pulse(time, [low, high, delay, rise, fall, width, period] ) periodic pulse function, edges are error function (integral of Gaussian) shaped. 380 IC-CAP Reference 7 ADS Simulator eval_poly(x, y, z) y is a real number. z is an integer that describes what to evaluate: -1 means the integral of the polynomial, 0 means the polynomial itself, +1 means the derivative of the polynomial. x is a VarEqn array that contains real numbers. The polynomial is x + x y + x y 2 + x y 3 … 0 1 2 3 exp_pulse(time, [low, high, delay1, tau1, delay2, tau2]) See “Transient Source Functions” on page 384. get_fund_freq(fund) returns the value of frequency (in Hertz) of a given fundamental defined by fund. index(nameArray, "varName", [caseSense, length] ) returns position of "varName" in nameArray, -1 if not found. caseSense sets case-sensitivity, defaults to yes. length sets how many characters to check, defaults to 0 (all). innerprod(x, y) forms the inner product of the vectors x and y: n innerprod ( x, y ) = ∑ x i∗ y i i= 0 j and k are optional integers which specify a range of harmonics to include in the calculation: k innerprod ( x, y, j, k ) = ∑xi∗ yi i=j j defaults to 0 and k defaults to infinity. int(x) Truncates the fractional part of x. itob(x, [bits] ) convert integer x to bits-bit binary string. The function jn(n, x) is the n-th order bessel function evaluated at x. limit_warn( [Value, Min, Max, default, Name] ) sets Value to default, if not set. Limits it to Min and Max and generates a warning if the value is limited. IC-CAP Reference 381 7 ADS Simulator makearray(arg1[,arg2,..] creates an array with elements defined by arg1 to argN where N can be any number of arguments. The data type of args must be Integer, Real, or Complex and the same for all args. word = bin(’1101’) fibo = makearray(0,1,1,2,3,5,8,word) foo = fibo[0] multi_freq(time, amplitude, freq1, freq2, n, [seed] ) seed defaults to 1. If it is 0, phase is set to 0, otherwise it is used as a seed for a randomly-generated phase. norm(x) returns the L-2 norm of the spectrum x: norm ( x ) = innerprod ( x, x ) j and k are optional integers which specify a range of harmonics to include in the calculation: norm ( x, j, k ) = innerprod ( x, x, j, k ) j defaults to 0 and k defaults to infinity. phase(x) is the same as phasedeg(x). The function phasedeg(x) returns phase in degrees. The function phaserad(x) returns phase in radians. The function polarcpx(x[,leave_as_real]) takes a complex argument, assumes that the real and complex part of the argument represents mag and phase (in radians) information, and converts it to real/imaginary. If the argument is real or integer instead of complex, the imaginary part is assumed to be zero. However, if the optional leave_as_real variable is specified, and is the value ‘‘1’’ (note that the legal values are ‘‘0’’ and ‘‘1’’ only), a real argument will be not be converted to a complex one. pulse(time, [low, high, delay, rise, fall, width, period]) See “Transient Source Functions” on page 384. pwl(...) piecewise-linear function. See “Transient Source Functions” on page 384. pwlr(...) piecewise-linear-repeated function. 382 IC-CAP Reference 7 ADS Simulator The function rect(t, tc, tp) is pulse function of variable t centered at time tc with duration tp. The function rad(x) converts from degrees to radians. ramp(x) 0 for x < 0 , x for x ≥ 0 read_data(source, locName, [fileType]) returns data from a file or dataset. source = “file” --- “dataset”. locName is the name of the source. fileType specifies the file type. read_lib(libName, locName, [fileType]) returns data from a library. libName is the name of the library. locName is the name of the source. fileType specifies the file type. read_lib("libName", "item", "fileType") rect(x, y, z) Returns: z |x - y| < |z| |x - y| > |z| >0 1 0 <0 0 1 rem(x, [y]) Returns remainder of dividing x/y. y defaults to 0 (which returns x). rms(x) returns the RMS value (including DC) of the spectrum x: norm ( x ) rms ( x ) = --------------------2.0 j and k are optional integers which specify a range of harmonics to include in the calculation: norm ( x, j, k ) rms ( x, j, k ) = ------------------------------2.0 j defaults to 0 and k defaults to infinity. The function rpsmooth(x) takes a VarEqn pointer (one returned by readraw()), converts to polar format the rectangular data given by the VarEqn pointer, and smooths out ‘phase discontinuities’. IC-CAP Reference 383 7 ADS Simulator CAU TI O N This function uses an algorithm that assumes that the first point is correct (i.e., not off by some multiple of 2π ) and that the change in phase between any 2 adjacent points is less than π . This interpolation will not work well with noisy data or with data within roundoff error of zero. It should be used only with S-parameters in preparation for interpolation or extrapolation by one of the interpolation functions like interp1(). Also note that the result is left in a polar ‘mag/phase’ format stored in a complex number; the real part is magnitude, and the imaginary part is phase. The polarcpx() function must be used to convert the result of the rpsmooth() function back into a real/imaginary format. sffm(time, [offset, amplitude, carrier_freq, mod_index, signal_freq]) See “Transient Source Functions” on page 384. The sprintf() function is similar to the C function which takes a format string for argument s and a print argument x (x must be a string, an integer, or a real number) and returns a formatted string. This string then may be written to the console using the system function with an echo command. Transient Source Functions There are several built-in functions that mimic Spice transient sources. They are: SPICE source ADS Simulator function exponential exp_pulse(time, low, high, tdelay1, tau1, tdelay2, tau2) single-frequency FM sffm(time, offset, amplitude, carrier_freq, mod_index, signal_freq) damped sine damped_sin(time, offset, amplitude, freq, delay, damping) pulse pulse(time, low, high, delay, rise, fall, width, period) piecewise linear pwl(time, t1, x1, ..., tn, xn) There functions are typically used with the vt parameter of the voltage source and the it parameter of the current source. 384 IC-CAP Reference ADS Simulator 7 exp_pulse Examples: ivs:vin n1 0 vt=exp_pulse(time) ics:iin n1 0 it=exp_pulse(time, -0.5mA, 0.5mA, 10ns, 5ns, 20ns, 8ns) Arguments for exp_pulse Name Optional Default TIME NO LOW YES 0 HIGH YES 1 TDELAY1 YES 0 TAU1 YES TSTEP TDELAY2 YES TDELAY1 + TSTEP TAU2 YES TSTEP TSTEP is the output step-time time specified on the TRAN analysis. sffm Examples: ivs:vin n1 0 vt=sffm(time, , , , 0.5) ics:iin n1 0 it=sffm(time, 0, 2, 1GHz, 1.2, 99MHz) Arguments for sffm Name Optional Default TIME NO OFFSET YES 0 AMPLITUDE YES 1 CARRIER_FREQ YES 1/TSTOP MOD_INDEX YES 0 SIGNAL_FREQ YES 1/TSTOP TSTOP is the stop time specified on the TRAN analysis. IC-CAP Reference 385 7 ADS Simulator damped_sin Examples: ivs:vin n1 0 vt=damped_sin(time) ics:iin n1 0 it=damped_sin(time, 0, 5V, 500MHz, 50ns, 200ns) Arguments for damped_sin Name Optional Default TIME NO OFFSET YES 0 AMPLITUDE YES 1 FREQ YES 1/TSTOP DELAY YES 0 DAMPING YES 1/TSTOP TSTOP is the stop time specified on the TRAN analysis. pulse Examples: ivs:vin n1 0 vt=pulse(time) ics:iin n1 0 it=pulse(time, -5V, 5V, 500MHz, 50ns, 200ns) Arguments for pulse Name Optional Default TIME NO LOW YES 0 HIGH YES 1 DELAY YES 0 RISE YES TSTEP FALL YES TSTEP WIDTH YES TSTOP PERIOD YES TSTOP TSTEP is the output step-time time specified on the TRAN analysis. TSTOP is the stop time specified on the TRAN analysis. 386 IC-CAP Reference 7 ADS Simulator pwl Examples: ivs:vin n1 0 vt=pulse(time, 0, 0, 1ns, 1, 10ns, 1, 15ns, 0) ics:iin n1 0 it=pwl(time, 0, 0, 1ns, 1, 5ns, 1, 5ns, 0.5, 10ns,0.5, 15ns, 0) Arguments for pwl Name Optional Default TIME NO T1 NO X1 NO T2 YES NONE X2 YES NONE . . . . . . . . . TN YES NONE XN YES NONE Conditional Expressions The ADS Simulator supports simple in-line conditional expressions: if boolExpr then expr else expr endif if boolExpr then expr elseif boolExpr then expr else expr endif boolExpr is a boolean expression, that is, an expression that evaluates to TRUE or FALSE. expr is any non-boolean expression. The else is required (because the conditional expression must always evaluate to some value). There can be any number of occurrences of elseif expr then expr. A conditional expression can legally occur as the right-hand side of an expression or function definition or, if parenthesized, anywhere in an expression that a variable can occur. IC-CAP Reference 387 7 ADS Simulator Boolean operators equals logical equals = logical equals == logical equals notequals logical not equals != logical not equals not logical negative ! logical negative and logical and && logical and or logical or || logical or < less than > greater than <= less than or equals >= greater than or equals Boolean expressions A boolean expression must evaluate to TRUE or FALSE and, therefore, must contain a relational operator (equals, =, ==, notequals, !=, <, >, <=, or >=). The only legal place for a boolean expression is directly after an if or an elseif. A boolean expression cannot stand alone, that is, x = a > b is illegal. Precedence Tightest binding: equals, =, ==, notequals, !=, >, <, >=, <= NOT, ! 388 IC-CAP Reference 7 ADS Simulator AND, Loosest binding: OR, || All arithmetic operators have tighter binding than the boolean operators. Evaluation Boolean expressions are short-circuit evaluated. For example, if when evaluating a and b, expression a evaluates to FALSE, expression b will not be evaluated. During evaluation of boolean expressions with arithmetic operands, the operand with the lower type is promoted to the type of the other operand. For example, in 3 equals x +j*b, 3 is promoted to complex. A complex number cannot be used with <, >, <=, or >=. Nor can an array (and remember that strings are arrays). This will cause an evaluation-time error. Pointers can be compared only with pointers. Examples: Protect against divide by zero: f(a) = if a equals 0 then 1.0e100 else 1.0/a endif Nested if’s #1: f(mode) = if mode equals 0 then 1-a else f2(mode) endif f2(mode) = if mode equals 1 then log(1-a) else f3(mode) endif f3(mode) = if mode equals 2 then exp(1-a) else 0.0 endif Nested if’s #2: f(mode) = if mode equals 0 then 1-a elseif mode equals 1 then \ log(1-a) elseif mode equals 2 then exp(1-a) else 0.0 endif Soft exponential: exp_max = 1.0e16 x_max = ln(exp_max) exp_soft(x) = if x<x_max then exp(x) else (x+1-x_max)*exp_max endif IC-CAP Reference 389 7 ADS Simulator VarEqn Data Types The 4 basic data types that VarEqn supports are integer, real, complex, and string. There is a fifth data type, pointer, that is also supported. Pointers are not allowed in an algebraic expression, except as an argument to a function that is expecting a pointer. Strings are not allowed in algebraic expressions either except that addition of strings is equivalent to catenation of the strings. String catenation is not commutative, and since VarEqn’s simplification routines can internally change the order of operands of commutative operators, this feature should be used cautiously. It will most likely be replaced by an explicit catenation function. Type conversion The data type of a VarEqn expression is determined at the time the expression is evaluated and depends on the data types of the terms in the expression. For example, let y=3*x^2. If x is an integer, then y is integer-valued. If x is real, then y is real-valued. If x is complex, then y is complex-valued. As another example, let y=sqrt(2.5*x). If x is a positive integer, then y evaluates to a real number. If, however, x is a negative integer, then y evaluates to a complex number. There are some special cases of type conversion: • If either operand of a division is integer-valued, it is promoted to a real before the division occurs. Thus, 2/3 evaluates to 0.6666.... • The built-in trigonometric, hyperbolic, and logarithmic functions never return an integer, only a real or complex number. 390 IC-CAP Reference 7 ADS Simulator “C-Preprocessor” Before being interpreted by the ADS Simulator, all input files are run through a built-in preprocessor based upon a C preprocessor. This brings several useful features to the ADS Simulator, such as the ability to define macro constants and functions, to include the contents of another file, and to conditionally remove statements from the input. All C preprocessor statements begin with # as the first character. Unfortunately, for reasons of backward compatibility, there is no way to specify include directories. The standard C preprocessor “-I” option is not supported; instead, “-I” is used to specify a file for inclusion into the netlist. File Inclusion Any source line of the form #include "filename" is replaced by the contents of the file filename. The file must be specified with an absolute path or must reside in either the current working directory or in /$HPEESOF_DIR/circuit/components/. Library Inclusion The C preprocessor automatically includes a library file if the -N command line option is not specified and if such a file exists. The first file found in the following list is included as the library: $HPEESOF_DIR/circuit/components/gemlib $EESOF_DIR/circuit/components/gemlib $GEMLIB .gemlib ~/.gemlib ~/gemini/gemlib A library file is specified by the user using the -Ifilename command line option. More than 1 library may be specified. Specifying a library file prevents the ADS Simulator from including any of the above library files. IC-CAP Reference 391 7 ADS Simulator Macro Definitions A macro definition has the form; #define name replacement-text It defines a macro substitution of the simplest kind--subsequent occurrences of the token name are replaced by replacement-text. The name consists of alphanumeric characters and underscores, but must not begin with a numeric character; the replacement text is arbitrary. Normally the replacement text is the rest of the line, but a long definition may be continued by placing a “\” at the end of each line to be continued. Substitutions do not occur within quoted strings. Names may be undefined with #undef name It is also possible to define macros with parameters. For example, #define to_celcius(t) (((t)-32)/1.8) is a macro with the formal parameter t that is replaced with the corresponding actual parameters when invoked. Thus the line options temp=to_celcius(77) is replaced by the line options temp=(((77)-32)/1.8) Macro functions may have more than 1 parameter, but the number of formal and actual parameters must match. Macros may also be defined using the -D command line option. Conditional Inclusion It is possible to conditionally discard portions of the source file. The #if line evaluates a constant integer expression, and if the expression is non-zero, subsequent lines are retained until an #else or #endif line is found. If an #else line is found, any lines between it and the corresponding #endif are discarded. If the expression evaluates to zero, lines between the #if and #else are discarded, while those between the #else and #endif are retained. The conditional inclusion statements nest to an arbitrary level of hierarchy. The following operators and functions can be used in the constant expression; 392 IC-CAP Reference 7 ADS Simulator ! Logical negation. || Logical or. && Logical and. == Equal to. != Not equal to. > Greater than. < Less than. >= Greater than or equal to. <= Less than or equal to. + Addition. defined(x) 1 if x defined, 0 otherwise. The #ifdef and #ifndef lines are specialized forms of #if that test whether a name is defined. CAU TI O N IC-CAP Reference Execution of preprocessor instructions depend on the order in which they appear on the netlist. When using preprocessor statements make sure that they are in the proper order. For example, if an #ifdef statement is used to conditionally include part of a netlist, the corresponding #define statement is contained in a separate file and #include is used to include the content of the file into the netlist, the #include statement will have to appear before the #ifdef statement for the expression to evaluate correctly. 393 7 ADS Simulator Data Access Component The Data Access Component provides a clean, unified way to access tabular data from within a simulation. The data may reside in either a text file of a supported, documented format (e.g. discrete MDIF, model MDIF, Touchstone, CITIfile), or a dataset. It provides a variety of access methods, including lookup by index/value, as well as linear, cubic spline and cubic interpolation modes, with support for derivatives. The Data Access Component provides a "handle" with which one may access data from either a text file or dataset for use in a simulation. The DAC is implemented as a cktlib subcircuit fragment with internally known expressions names (e.g. _DAC, _TREE) that are assigned via VarEqn calls such as read_data() and access_all_data(). The accessed data can be used by other components (including models, devices, variables, subcircuit calls and other DAC instances) in the netlist, either by the specific file syntax or via the VarEqn function dep_data(). The DAC can also be used to supply parameters to device and model components from text files and datasets. In this case, the AllParams device/model parameter is used to refer to a DAC component. The component’s parameters will then be accessed from the DAC and supplied to the instance. Care is taken to ensure that only matching (between parameter names in the component definition and DAC dependent column names) data is used. Also, parameter data can be assigned "inline" - as is usually done - in which case the inline data takes precedence over the DAC data. As the DAC component is composed of just a parameterized subcircuit, it allows alterations (sweep, tune, optimize, yield) of its parameters. Consequently any component that uses DAC data via file, dep_data() or AllParams will automatically be updated when a DAC parameter is altered. A caveat with sweeping over files using AllParams is that all the files must contain the same number of dependent columns of data. Below is an example definition of a simple DAC component that accesses discrete values from a text file: 394 IC-CAP Reference 7 ADS Simulator #uselib "ckt" , "DAC" DAC:DAC1 File="C:\jeffm\ADS_testing\ADS13_test_prj/ .\data\SweptData.ds" Type="dataset" Block="S" InterpMode="linear" InterpDom="ri" iVar1="X" iVal1=X iVar2="freq" iVal2=freq S_Port:S2P1 _net1 0 _net6 0 S[1,1]=file{DAC1, "S[1,1]"} S[1,2]=file{DAC1,"S[1,2]"} S[2,1]=1 S[2,2]=0 Recip=no dindex = 1 DAC:atc1 File="vdcr.mdf" Type="dscr" \ InterpMode="index_lookup" iVar1=1 iVal1=dindex And its use to provide the resistance value to a pair of circuit components: R:R1 n1 0 R=file{atc1, "R"} kOhm R:R2 n1 0 R=dep_data(atc1, "R") kOhm Here, it provides the value to a variable: V1 = file{atc1, "Vdc"} V1 could be used elsewhere in the circuit, as expected. In this example, a scaling factor applied to the result of a DAC access is shown: File = "atc.mdf" Type = "dscr" Mode="index_lookup" Cnom = "Cnom" DAC:atc_s File=File Type=Type InterpMode=Mode iVar1=1 iVal1 = Cs_row C:Cs n1 n2 C=file{atc_s, Cnom} Pf In this example, a use of AllParams is shown to enter model parameters from a text file: File = "c:\gemini\vdcr.mdf" Type = "dscr" Mode="index_lookup" DAC:dac1 File=File Type=Type InterpMode=Mode iVar1=1 iVal1 = ix model rm1 R_Model R=0 AllParams = dac1._DAC rm1:rm1i1 n3 0 IC-CAP Reference 395 7 ADS Simulator Reserved Words The words on the following pages have built-in meaning and should not be defined or used in a way not consistent with their pre-defined meaning: 396 AC CPWCPL4 ACPWDS CPWCTL ACPWDTL CPWDS AIRIND1 CPWEF Alter CPWEGAP Amplifier CPWG AmplifierP2D CPWOC AntLoad CPWSC BFINL CPWSUB BFINLT CPWTL BJT CPWTLFG BR3CTL CTL BR4CTL C_Model BRCTL Chain BROCTL Chebyshev Bessel Connector BudLinearization CostIndex Butterworth Crossover C DC CAPP2 DF CAPQ DFDevice1 CIND2 DFDevice2 CLIN DF_DefaultInt CLINP DF_Value COAX DF_ZERO_OHMS COAXTL DICAP CPW DILABMLC IC-CAP Reference ADS Simulator IC-CAP Reference CPWCGAP DOE CPWCPL2 DRC DefaultValue JFET DeviceIndex L Diode LineCalcTest EE_BJT2 MACLIN EE_FET3 MACLIN3 EE_HEMT1 MBEND EE_MOS1 MBEND2 ETAPER MBEND3 Elliptic MBSTUB FDD MCFIL FINLINE MCLIN FSUB MCORN GCPWTL MCROS GMSK_Lowpass MCROSO GaAs MCURVE Gaussian MCUREVE2 Goal MGAP HB MICAP1 HP_Diode MICAP2 HP_FET MICAP3 HP_FET2 MICAP4 HP_MOSFET MLANG Hybrid MLANG6 IFINL MLANG8 IFINLT MLEF INDQ MLIN I_Source MLOC InitCond MLSC InoiseBD MLYRSUB MOS9 MSRTL MOSFET MSSLIT 7 397 7 398 ADS Simulator MRIND MSSPLC MRINDELA MSSPLR MRINDELM MSSPLS MRINDNBR MSSTEP MRINDSBR MSSVIA MRINDWNR MSTAPER MRSTUB MSTEE MS2CTL MSTEP MS3CTL MSTL MS4CTL MSUB MS5CTL MSVIA MSABND MSWRAP MSACTL MTAPER MSAGAP MTEE MSBEND MTEEO MSCRNR MTFC MSCROSS MextramBJT MSCTL Mixer MSGAP MixerIMT MSIDC Multipath MSIDCF Mutual MSLANGE NodeSet MSLIT NoiseCorr2Port MSOBND Noisey2Port MSOC Nsample MSOP OldMonteCarlo MSRBND OldOpt OldOptim PC_Corner OldYield PC_CrossJunction Optim PC_Crossover OptimGoal PC_Gap Options PC_Line OscPort PC_OpenStub IC-CAP Reference ADS Simulator IC-CAP Reference OutSelector PC_Pad PCBEND PC_Slanted PCCORN PC_Taper PCCROS PC_Tee PCCURVE PC_Via PCILC PIN PCLIN1 PIN2 PCLIN10 PLCQ PCLIN2 ParamSweep PCLIN3 PinDiode PCLIN4 PoleZero PCLIN5 Polynomial PCLIN6 Port PCLIN7 PowerBounce PCLIN8 PowerGroundPlane PCLIN9 R PCSTEP RCLIN PCSUB RIBBON PCTAPER RIBBON_MDS PCTEE RIND PCTRACE RWG PC_Bend RWGINDF PC_Clear RWGT RWGTL SLSTEP R_Model SLTEE RaisedCos SLTL SAGELIN SLUCTL SAGEPAC SLUTL SBCLIN SMITER SBEND SOCLIN SBEND2 SPIND SCLIN SS3CTL SCROS SS4CTL 7 399 7 400 ADS Simulator SCURVE SS5CTL SDD SSACTL SL3CTL SSCLIN SL4CTL SSCTL SL5CTL SSLANGE SLABND SSLIN SLCQ SSSPLC SLCRNR SSSPLR SLCTL SSSPLS SLEF SSSUB SLGAP SSTEP SLIN SSTFR SLINO SSTL SLOBND SSUB SLOC SSUBO SLOC_MDS STEE SLOTTL S_Param SLRBND S_Port SLSC ScheduleCycle Short VBIC Substrate VIA SweepPlan VIA2 SwitchV V_Source SwitchV_Model VnoiseBD TAPIND1 WIRE TFC WIRE_MDS TFC_MDS Y_Port TFR Yield TFR_MDS YieldOptim TL YieldSpec TLIN YieldSpecOld TLIN4 Z_Port TLINP __fdd IC-CAP Reference ADS Simulator IC-CAP Reference TLINP4 __fdd_v TL_New _ac_state TQAVIA _c1 TQCAP _c10 TQFET _c11 TQFET2 _c12 TQIND _c13 TQRES _c14 TQSVIA _c15 TQSWH _c16 TQTL _c17 Tran _c18 UFINL _c19 UFINLT _c2 Unalter _c20 _c21 _freq6 _c22 _freq7 _c23 _freq8 _c24 _freq9 _c25 _gaussian _c26 _gaussian_tol _c27 _get_fnom_freq _c28 _get_fund_freq_for_fdd _c29 _harm _c3 _hb_state _c30 _i1 _c4 _i10 _c5 _i11 _c6 _i12 _c7 _i13 _c8 _i14 _c9 _i15 _dc_state _i16 7 401 7 402 ADS Simulator _default _i17 _discrete_density _i18 _divn _i19 _freq1 _i2 _freq10 _i20 _freq11 _i21 _freq12 _i22 _freq2 _i23 _freq3 _i24 _freq4 _i25 _freq5 _i26 _i27 _sopt _i28 _sp_state _i29 _sv _i3 _sv_bb _i30 _sv_d _i4 _sv_e _i5 _tn _i6 _to _i7 _tr_state _i8 _tt _i9 _uniform _lfsr _uniform_tol _mvgaussian _v1 _mvgaussian_cov _v10 _n_state _v11 _nfmin _v12 _p2dInputPower _v13 _phase_freq _v14 _pwl_density _v15 _pwl_distribution _v16 _randvar _v17 _rn _v18 IC-CAP Reference ADS Simulator IC-CAP Reference _shift_reg _v19 _si _v2 _si_bb _v20 _si_d _v21 _si_e _v22 _sigproc_state _v23 _sm_state _v24 _v25 conj _v26 cos _v27 cos_pulse _v28 cosh _v29 cot _v3 coth _v30 coupling _v4 ctof _v5 ctok _v6 cxform _v7 d_atan2 _v8 damped_sin _v9 db _xcross dbm abs dbmtoa access_all_data dbmtov access_data dbmtow aele dbpolar and dbwtow arcsinh dcSourceLevel arctan deembed atan2 define awg_dia deg bin delay bitseq dep_data boltzmann deriv 7 403 7 404 ADS Simulator by discrete c0 distcompname complex doe doeindex generate_qam16_spectra dphase generate_qpsk_pulse_spectra dsexpr get_array_size dstoarray get_attribute e get_block e0 get_fund_freq echo get_max_points else global elseif globalnode end ground endif hugereal equals i erf_pulse if eval_poly ilsb exp imag exp_pulse index file innerprod fread inoise freq int freq_mult_coef internal_generate_gmsk_iq_spectra freq_mult_poly internal_generate_gmsk_pulse_spectra ftoc internal_generate_piqpsk_spectra ftok internal_generate_pulse_train_spectra gauss internal_generate_qam16_spectra gaussian internal_generate_qpsk_pulse_spectra generate_gmsk_iq_spectra internal_get_fund_freq generate_gmsk_pulse_spectra internal_window generate_piqpsk_spectra interp generate_pulse_train_spectra interp1 interp2 names IC-CAP Reference ADS Simulator IC-CAP Reference interp3 nested interp4 nf iss nfmin itob no iusb nodoe jn noisefreq ktoc noopt ktof norm lbtran nostat length not limit_warn notequals list omega ln opt ln10 optIter local or log parameters logNodesetScale phase logRshunt phase_noise_pwl log_amp phasedeg log_amp_cas phaserad mag planck makearray polar max polarcpx mcTrial ppt mcindex pulse min pwl model pwlr multi_freq qelectron qinterp sprintf rad sqrt ramp ssfreq randtime stat rawtoarray step 7 405 7 ADS Simulator read_data strcat read_lib stypexform readdata sym_set readlib system readraw tan real tanh rect temp rem tempkelvin ripple thd rms then rn time rpsmooth timestep scalearray tinyreal sens to setDT toi sffm tranorder sgn transform sin u0 sinc unconst sine unicap sinh uniform sink v sopt value sourceLevel vlsb vnoise vss vswrpolar vusb window yes 406 IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 8 IC-CAP Functions This chapter describes the IC-CAP functions. They appear in alphabetical order. When reviewing the functions, keep in mind the following points: • Many functions can be called from within a Program or Macro. Several examples are provided here; additional examples can be found in “Calls to the Function Library” on page 749. • The list does not represent all the functions available in a Program or Macro. Additional built-in functions are available in the Parameter Extraction Language. Refer to “Built-in Functions” on page 712. • For consistency, the argument names listed for each function reflect the descriptive labels these arguments would get in a standalone Transform editor. • The Input Arguments referred to as Strings/Pars/Vars can be any of the following alternatives: string expressions, Model parameter names, DUT parameter names, or IC-CAP system variable names. The tables that follow list the available functions by category, as they appear in the program. Agilent Technologies 407 8 IC-CAP Functions Table 72 IC-CAP Functions AHBT AgilentHBT_ABCX_extract AgilentHBT_calculate_ccb AgilentHBT_calculate_rbb AgilentHBT_CCMAX_extract AgilentHBT_CEMAX_extract AgilentHBT_CJC_extract AgilentHBT_CJE_extract AgilentHBT_IS_NF_extract AgilentHBT_ISC_NC_extract AgilentHBT_ISE_NE_extract AgilentHBT_ISH_NH_extract AgilentHBT_ISR_NR_extract AgilentHBT_ISRH_NRH_extract AgilentHBT_ITC_ITC2_extract AgilentHBT_Param_Init AgilentHBT_TFC0_extract AgilentHBT_VJC_extract AgilentHBT_VJE_extract HPTFTCV_model_cgd HPTFTDC_lin HPTFTDC_sat HPTFTCV_model_cgs HPTFTDC_model_id HPTFT_param B2200_bias_card_enable B2200_bias_ch_enable B2200_bias_enable B2200_bias_init B2200_close_interface B2200_connect B2200_couple_enable B2200_couple_setup B2200_debug B2200_disconnect_card B2200_GPIB_handler B2200_ground_card_enable B2200_ground_enable B2200_ground_init B2200_ground _outch_enable B2200_ground _unused_inputs B2200_init B2200_open_interface BJTAC_high_freq BJTDC_rc BJTCV_stoc BJTAC_rb_rbm_irb BJTDC_rcfb RBBcalc BJTDC_fwd_gummel BJTDC_re H11corr BJTDC_is_nf BJTDC_rev_gummel BJT_dc_model BJTDC_nr BJTDC_vaf_var HFBJT_linear_ssmod_sim BSIM1DC_sub BSIMCV_total_cap BSIM2DC_geom_indep BSIM2_save_dev_pars BSIM2_lin_plot BSIM2DC_lin_sat BSIMCV_total_cap ATFT (obsolete) B2200 BJT HFBJT_linear_elem_extr BPOPAMP BPOPAMP_macro_model BSIM1 (obsolete) BSIM1DC_geom_indep BSIM1DC_lin_sat BSIM2 (obsolete) 408 IC-CAP Reference IC-CAP Functions Table 72 8 IC-CAP Functions (continued) BSIM3 BSIM3_set_opt BSIM3DC_sat_narrow BSIM3DC_vth BSIM3DC_bulk_short BSIM3DC_sat_short BSIM3DC_vth_sim BSIM3DC_lin_large BSIM3DC_sat_short2 BSIM3DC_vth_versus BSIM3DC_lin_narrow BSIM3DC_sub_short BSIM3CVmodCBD BSIM3DC_lin_short BSIM3DC_sub_short2 BSIM3CVmodCBS BSIM3DC_lin_small BSIM3DC_model BSIM3CV_total_cap BSIM3_calculate BSIM3_toolkit_vth BSIM3_check_par BSIM3_DC_vth BSIM3_DC_calculate BSIM3_DC_get_parameter BSIM3_DC_calc_bin_parameter BSIM3_error BSIM4 BSIM4_check_par BSIM4_DC_get_parameter BSIM4_error BSIM4_DC_calculate BSIM4_DC_extr_A0_AGS_KETA BSIM4_set_opt BSIM430_DC_calculate BSIM4_DC_vth BSIM450_DC_calculate BSIM430_DC_vth BSIM4_DC_calc_bin_parameter BSIM450_DC_vth Data Exchange ICMSarray ICMSpin SPECSSpin ICMSchar ICMSreal LINKarray ICMSint ICMSstr LINKchar LINKint LINKpin LINKreal icdb_add_comment icdb_close icdb_export_data icdb_get_sweep_value icdb_open icdb_register_con_sweep icdb_register_lin_sweep icdb_register_list_sweep icdbf_add_comment icdbf_close icdbf_export_data icdbf_get_sweep_value icdbf_open icdbf_register_con_sweep icdbf_register_lin_sweep icdbf_register_list_sweep icdb_register_lsync_sweep icdbf_register_lsync_sweep circlefit linfit LINKstr Data Export Data Fit autofit fit_line IC-CAP Reference 409 8 IC-CAP Functions Table 72 IC-CAP Functions (continued) Diode DIODEDCmod_ia EEBJT EEbjt2_Is_N EEbjt2_ce_dc_iv EEbjt2_ce_ss_elements EEbjt2_extrinsic_ckt EEbjt2_mdl HFMOD_get_bias_size HFMOD_get_freq_index HFMOD_get_freq_value HFMOD_remove_freq_dbl EEfet3_model_name EEfet3_Rs_delta_s HFMOD_remove_freq_mat EEFET EEfet3_ckt EEfet3_cs_dc_iv EEfet3_package EEfet3_s2ckt EEfet3_lecp EEfet3_ResCheck EEfet3_spars EEfet3_mdl EEfet3_Rs_delta_m EEMOS (obsolete) EEmos1_ckt EEmos1_mdl EEmos1_ResCheck EEmos1_cs_dc_iv EEmos1_model_name EEmos1_s2ckt EEmos1_lecp EEmos1_package EEmos1_spars Flicker Noise NOISE_1f_bjt_1Hz NOISE_1f_bjt_calc NOISE_1f_bjt_extract NOISE_1f_force_bias NOISE_1f_get_Af NOISE_1f_get_Bf NOISE_1f_get_Ef NOISE_1f_get_Kf NOISE_1f_mos_1Hz NOISE_1f_set_Af NOISE_1f_set_Bf NOISE_1f_set_Ef NOISE_1f_set_Kf NOISE_1f_stop_bias GAAS GAASAC_cur GAASDC_lev1 GAASmod_cgd GAASAC_l_and_r GAASDC_lev2 GAASmod_cgs GAASAC_r_and_c GAASDC_rd GAASmod_id GAASCV_cgs_cgd GAASDC_rs GAASmod_ig GAASDC_cur1 GAASAC_calc_rc GAASAC_calc_rl RMSerror conjg log10 TwoPort correlation mean GAASDC_cur2 General Math 410 IC-CAP Reference IC-CAP Functions Table 72 IC-CAP Functions (continued) TwoPort2 cos abs cosh sin acs derivative sinh acsh derivative2 smooth3 arg equation sqrt asn exp tan asnh log tanh atn floor variance atnh integral0 mem_diag ceil integral3 8 random HF MOS Level3 (obsolete) HFMOS3_capas HFMOS3_paras HFMOS3_StoC HFMOS3_lin_large HFMOS3_sat_short HFMOS3_StoZ HFMOS3_lin_narrow HFMOS3_sub_large HFMOS3_modcap HFMOS3_lin_short HFMOS3_total_cap HPIB HPIB_abort HPIB_open HPIB_spoll HPIB_clear HPIB_read_reals HPIB_srq HPIB_close HPIB_readnum HPIB_timeout HPIB_command HPIB_readstr HPIB_write HPIB_eoi HPIB_fwrite HPIB_read HPMOSDC_lin_large HPMOSDC_lin_short HPMOS_process_pars HPMOSDC_lin_narrow HPMOSDC_sat_short HPMOS HPRoot Diode HPdiode_C HPdiode_S11i HPdiode_para_at_f HPdiode_C2 HPdiode_S11r HPdiode_para_f HPdiode_I HPdiode_V HPdiode_wr HPdiode_Q HPdiode_data_acqu HPRoot_n HPdiode_R HPdiode_mdl HPdiode_fgrt HPdiode_fless HPdiode_iextr HPRoot Fet IC-CAP Reference 411 8 IC-CAP Functions Table 72 IC-CAP Functions (continued) HPRoot_data_acqu HPRoot_Qd HPRoot_Y12r HPRoot_FET HPRoot_Qg HPRoot_Y21i HPRoot_initial HPRoot_Vd HPRoot_Y21r HPRoot_parasitic HPRoot_Vg HPRoot_Y22i HPRoot_Id HPRoot_Y11i HPRoot_Y22r HPRoot_Idh HPRoot_Y11r HPRoot_FET_t HPRoot_Ig HPRoot_Y12i HPRoot_fet_acqu HPRoot_n HPRoot_para_cal HPRoot_wr HPRoot Mos HPRoot_Id HPRoot_Vd HPRoot_Y12r HPRoot_Idh HPRoot_Vg HPRoot_Y21i HPRoot_Ig HPRoot_Y11i HPRoot_Y21r HPRoot_Qd HPRoot_Y11r HPRoot_Y22i HPRoot_Qg HPRoot_Y12i HPRoot_Y22r HPRoot_MOSFET HPRoot_mos_acqu HPRoot_mos_para HPRoot_para_cal JUNCAP JUNCAP JUNCAP_TR MEXTRAM MXT_I0 MEXTRAM_stoc MXT_cbc MXT_cbe MXT_cj0 MXT_csc MXT_forward_hfe MXT_forward_ic MXT_forward_vbe MXT_ft MXT_VEF MXT_ic_vce MXT_VER MXT_hard_sat_isub MXT_reverse_isub MXT_jun_cap MXT_reverse_currents MXT_reverse_hfc MXT_reverse_hfc_sub MXT_veaf_ib MXT_veaf_ic MXT_vear_ie MXT_show_parms MEXTRAM 503 (obsolete) mxt_smooth mxt3t_cbc mxt3t_cbe mxt3t_cj0 mxt3t_ft_ic mxt3t_ft_ic_new mxt3t_fwd_early_ib mxt3t_fwd_early_ic mxt3t_fwd_gummel_hfe mxt3t_fwd_gummel_ib mxt3t_fwd_gummel_ic mxt3t_fwd_gummel_vbe 412 IC-CAP Reference IC-CAP Functions Table 72 8 IC-CAP Functions (continued) mxt3t_i0 mxt3t_linear_range mxt3t_output_ic mxt3t_output_vbe mxt3t_rev_early_ie mxt3t_rev_early_qb0_guess mxt3t_rev_gummel_hfc mxt3t_rev_gummel_ib mxt3t_rev_gummel_ie mxt4t_cbc mxt4t_cbe mxt4t_cj0 mxt4t_csc mxt4t_ft_ic mxt4t_ft_ic_new mxt4t_fwd_early_ib mxt4t_fwd_early_ic mxt4t_fwd_gummel_hfe mxt4t_fwd_gummel_ib mxt4t_fwd_gummel_ic mxt4t_fwd_gummel_vbe mxt4t_i0 mxt4t_linear_range mxt4t_output_ic mxt4t_output_vbe mxt4t_rev_early_ie mxt4t_rev_early_qb0_guess mxt4t_rev_gummel_hfc mxt4t_rev_gummel_hfc_sub mxt4t_rev_gummel_ib mxt4t_rev_gummel_ie mxt4t_rev_gummel_is MM9 MM9_LIN_EXT MM9_COPY MM9_SAVE_SPARS MM9_SAT_EXT MM9_DATA MM9_SETUP MM9_STH_EXT MM9_GEOMPAR MM9_TEMPPAR MM9_WEAVAL_EXT MM9_GEOMSCAL MM9_TEMPSCAL MM9 MM9_KEEP MOS Level1 MOSmodel MOSmodel2 MOS Level2 MOSCV_total_cap MOSDC_lev2_lin_short MOSCVmodCBS MOSDC_lev2_lin_large MOSDC_lev2_sat_short MOSmodel MOSDC_lev2_lin_narrow MOSCVmodCBD MOSmodel2 MOSDC_lev3_lin_short MOSCVmodCBS MOSDC_lev3_lin_large MOSDC_lev3_sat_short MOSmodel2 MOSDC_lev3_lin_narrow MOSCVmodCBD MOS Level3 MOSCV_total_cap MOS Level6 MOSCV_total_cap MOSDC_lev6_lin_narrow MOSCVmodCBD MOSDC_lev6_lin_large MOSDC_lev6_lin_short MOSCVmodCBS MOS Process MOS_process_pars IC-CAP Reference 413 8 IC-CAP Functions Table 72 IC-CAP Functions (continued) Optimization Optimize PEL Program or Program2 PN Capacitance PNCAPsimu PSP PSP_DC_vth PSP_check_par PSP_DC_calc_bin_parameter PTFTDC_lin PTFTDC_sat rand_gauss rand_seed icstat_get_column icstat_deactivate icstat_set_text_cell icstat_set_column icstat_attribute_2_parameter icstat_open icstat_num_columns icstat_parameter_2_attribute icstat_write_to_status_window icstat_num_rows icstat_analysis icstat_exit icstat_get_cell icstat_correlation icstat_open_sdf_file icstat_set_cell icstat_stat_summary icstat_close_sdf_file PSP_set_opt PTFT (obsolete) PTFTCV_cgd PTFTCV_cgs Random Functions rand_flat Statistical Analysis icstat_num_deactivated icstat_factor_analysis icstat_save_sdf_file icstat_num_filtered icstat_parametric_models icstat_to_partable icstat_num_attributes icstat_equations icstat_from_partable icstat_get_deactivated icstat_plot_graph icstat_set_param_column_labels icstat_get_filtered_rows icstat_set_row iicstat_nonparametric_models icstat_get_attribute_columns icstat_get_row icstat_clear icstat_activate icstat_get_text_cell icstat_delete Connect SWM_debug Wait FNPort SWM_init HP5250_bias_card icstat_insert Switching Matrix 414 IC-CAP Reference IC-CAP Functions Table 72 8 IC-CAP Functions (continued) HP5250_card_config HP5250_bias_channel HP5250_bias_init HP5250_bias_setmode HP5250_compensate_cap HP5250_connect HP5250_couple_enable HP5250_couple_setup HP5250_debug HP5250_disconnect_card HP5250_init HP5250_show K707_init K708a_init K70X_clear_setup K70X_close_crosspoints K70X_config_trigger K70X_connect_sequence K70X_copy_setup K70X_debug K70X_delete_setup K70X_edit_setup K70X_init_interface K70X_open_crosspoints K70X_trigger_disable K70X_trigger_enable Target TARGET_DC_vth TRL Calibration 8753_TRL_Cal TRL_Cal USERC USERC_init_param USERC_open USERC_sweep_start USERC_avg_2 USERC_read_reals USERC_sweep_stepsize USERC_avg_3 USERC_readnum USERC_sweep_stop USERC_conjg USERC_readstr USERC_system USERC_transpose USERC_seek USERC_tell USERC_close USERC_set_param USERC_write USERC_data_w_check USERC_size USERC_sweep_name USERC_num_of_points USERC_set_param_quiet USERC_sweep_mode USERC_get_object_name User Defined Holding place for user-defined functions. For details, refer to “Adding Functions to the Function Browser" in the User’s Guide. Utility check_error_log copy2output Package dataset lookup_par lookup_var VBIC_ac_solver VBIC_avc VBIC_cbc VBIC_cbe VBIC_cj0 VBIC_clean_data ascii$ VBIC IC-CAP Reference 415 8 IC-CAP Functions Table 72 IC-CAP Functions (continued) VBIC_csc VBIC_dc_approx VBIC_dci_solver VBIC_dcv_solver VBIC_fg_currents VBIC_ibci_nci VBIC_ibei_nei VBIC_ikf VBIC_stoc VBIC_ikr VBIC_is_nf VBIC_isp_nfp VBIC_nr VBIC_qcdepl VBIC_rcx VBIC_rg_currents VBIC_vef_ver Wafer Prober Pdown Porig Prober_status Phome Ppos Pscale Pimove Prober_debug Pup Pink Prober_init PB_bindex Pmove Prober_reset PB_gsite_xy PB_abort PB_bincode PB_msite_xy PB_bindex_cr PB_index_cr PBench_CMD PB_index PB_gindex_cr tis_p_down tis_p_home tis_p_imove tis_p_ink tis_p_move tis_p_orig tis_p_pos tis_p_scale tis_p_up tis_prober_get_ba tis_prober_get_name tis_prober_init tis_prober_read_sysconfig tis_prober_reset tis_prober_status Wire Functions wirexfX wirexfY wirexfYX wirexfXY 8753_TRL_Cal Deembed the raw measured data using measured data of TRL (thru-reflect-line) calibration standards. The function calculates and downloads the error coefficients to the 8753. The reference plane is defined at the middle of the thru standard, or at the interface to the DUT when it is installed in the compatible carrier. Inputs: Freq Data: 416 Frequency Inputs IC-CAP Reference 8 IC-CAP Functions Thru: measured S-parameters of the Thru standard Short: measured S-parameters of the Short standard Line A: measured S-parameters of Line A standard Line B: measured S-parameters of Line B standard Line C: measured S-parameters of Line C standard Freq 1 Trans: transition frequency Line A to Line B Freq 1 Trans: transition frequency Line B to Line C Outputs: None abs Absolute value function (magnitude when input data is complex) Input Arguments: Data Sets: Output: Input 1 Real number, matrix, real array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change acs Inverse cosine in radians. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change IC-CAP Reference 417 8 IC-CAP Functions acsh Inverse hyperbolic cosine. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change AgilentHBT_ABCX_extract parameter ABCX. This function extracts model Input Arguments: Variables: Emitter Area, Total Area Parameters: Parameter(ABCX) Extracts: ABCX AgilentHBT_calculate_ccb This function calculates Cbc in an alternative method from the specified Z-parameters. Input Arguments: Inputs: Output: freq, Z11, Z12, Z21, Z22 Complex data sets. AgilentHBT_calculate_rbb This function calculates Rb in an alternative method from the specified H-parameters. Input Arguments: Inputs: freq, H11, H12, H21, H22 Variables: Mode (0:ignore RE effect, 1:include RE effect) Parameters: Parameter(RE) Output: 418 Complex data sets IC-CAP Reference 8 IC-CAP Functions AgilentHBT_CCMAX_extract parameter CCMAX. This function extracts model Input Arguments: Inputs: Vbc (as positive value), Cbc Parameters: Parameter(CCMAX), Parameter(VJC) Extracts: CCMAX AgilentHBT_CEMAX_extract parameter CEMAX. This function extracts model Input Arguments: Inputs: Vbe, Cbe Parameters: Parameter(CEMAX), Parameter(VJE) Extracts: AgilentHBT_CJC_extract parameter CJC. CEMAX This function extracts model Input Arguments: Inputs: Vbc (as positive value), Cbc Parameters: Parameter(CJC), Parameter(CPBC) Extracts: AgilentHBT_CJE_extract parameter CJE. CJC This function extracts model Input Arguments: Inputs: Vbe, Cbe Parameters: Parameter(CJE), Parameter(CPBE) Extracts: IC-CAP Reference CJE 419 8 IC-CAP Functions AgilentHBT_IS_NF_extract parameters IS, NF. This function extracts model Input Arguments: Inputs: Vbe, Ic Variables: X Low, X High, Y Low, Y High, TEMP Parameters: Parameter(IS), Parameter(NF) Extracts: IS, NF AgilentHBT_ISC_NC_extract parameters ISC, NC. This function extracts model Input Arguments: Inputs: Vcb (as positive value), Ib Variables: X Low, X High, Y Low, Y High, TEMP Parameters: Parameter(ISC), Parameter(NC) Extracts: AgilentHBT_ISE_NE_extract parameters ISE, NE. ISC, NC This function extracts model Input Arguments: Inputs: Vbe, Ib Variables: X Low, X High, Y Low, Y High, TEMP Parameters: Parameter(ISE), Parameter(NE) Extracts: 420 ISE, NE IC-CAP Reference 8 IC-CAP Functions AgilentHBT_ISH_NH_extract parameters ISH, NH. This function extracts model Input Arguments: Inputs: Vbe, Ib Variables: X Low, X High, Y Low, Y High, TEMP Parameters: Parameter(ISH), Parameter(NH) Extracts: ISH, NH AgilentHBT_ISR_NR_extract parameters ISR, NR. This function extracts model Input Arguments: Inputs: Vcb (as positive value), Ie Variables: X Low, X High, Y Low, Y High, TEMP Parameters: Parameter(ISR), Parameter(NR) Extracts: ISR, NR AgilentHBT_ISRH_NRH_extract parameters ISRH, NRH. This function extracts model Input Arguments: Inputs: Vcb (as positive value), Ib Variables: X Low, X High, Y Low, Y High, TEMP Parameters: Parameter(ISRH), Parameter(NRH) Extracts: IC-CAP Reference ISRH, NRH 421 8 IC-CAP Functions AgilentHBT_ITC_ITC2_extract parameters ITC, ITC2. This function extracts model Input Arguments: Inputs: Ic, Ft, Vc, Vb Variables: X Low, X High, Y Low, Y High Parameters: Parameter(ITC), Parameter(ITC2) Extracts: ITC, ITC2 AgilentHBT_Param_Init This function initializes the model parameters for the extraction. Input Arguments: Variables: Emitter Width (W) [um] Emitter Length (L) [um] # of Emitter Fingers (NF) Total Area [um^2] Parameters: Parameter(hbt.TNOM) Extracts: AgilentHBT_TFC0_extract parameter TFC0. All Agilent-HBT model parameters This function extracts model Input Arguments: Inputs: Ic or Ic-1, Tau, Vc, Vb Variables: X Low, X High, Y Low, Y High Parameters: Parameter(TFC0) Extracts: 422 TFC0 IC-CAP Reference 8 IC-CAP Functions AgilentHBT_VJC_extract parameter VJC. This function extracts model Input Arguments: Inputs: Vbc (as positive value), Cbc, Cdiff Parameters: Parameter(VJC), Parameter(CJC), Parameter(CPBC) Extracts: AgilentHBT_VJE_extract parameter VJE. VJC This function extracts model Input Arguments: Inputs: Vbe, Cbe, Cdiff Parameters: Parameter(VJE), Parameter(CJE), Parameter(CPBE) Extracts: VJE arg Argument (phase angle), in radians, for a complex number. Input Arguments: Data Sets: Output: Input 1 Real number, matrix, real array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change ascii$ Converts ascii-coded characters into literal characters as entered into a text box. If certain characters are entered in a text box, they must be encoded so they are compatible with the .mdl file format used in variable tables. These characters include double quotes (“) and newlines (\n). Such characters may be IC-CAP Reference 423 8 IC-CAP Functions entered in a GUI’s edit box and tracked by a variable table variable. IC-CAP must encode these characters before storing them in a .mdl file to avoid undesirable effects. After the characters are encoded, they appear as encoded characters if you choose to print them from the .mdl file to an output such as the Status window. To translate the encoding, call the function ascii$() in PEL and the string will be output exactly as it was typed into the text box. asn Inverse sine in radians. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change asnh Inverse hyperbolic sine. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change atn Inverse tangent in radians. Input Arguments: Data Sets: Output: 424 Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) IC-CAP Reference 8 IC-CAP Functions Automatic Invocation: On Data Set Input Change atnh Inverse hyperbolic tangent. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change autofit Performs an automatic line fit to a set of X and Y data sets. This function finds the largest region of the line that fits with less than the specified error from the RMS limit field. A buffer can be specified that removes a certain percentage of the data from each end of the curve. This eliminates data points that may throw off the line fit. The percentages should be specified out of 1. For example, 0.01 = 1%. If the OVERRIDE_LIMITS variable is TRUE, the limits can be specified manually with the X_LOW and X_HIGH variables, which can be set from the Plot menu. This function should only be used on data with a single sweep variable. A 3 point data set, containing slope and intercept data and the regression coefficient, is returned. Input Arguments: Data Sets: X Data, Y Data Reals or Integers: RMS limit, Buffer Output: Array of 2 points: slope then intercept Automatic Invocation: None Example PEL Statement: fit_data = autofit(-ve,log(ic.m),0.01,0.1) IC-CAP Reference 425 8 IC-CAP Functions B2200_bias_card_enable Bias-enables all the output ports of the specified card. By default, all ports are bias-enabled after a reset. Syntax B2200_bias_card_enable(<addr>, <CardNumber>, <CardState>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <CardState> is the card output port's state (allowed values are "ENABLE", "DISABLE", "E", or "D"). B2200_bias_ch_enable Bias-enables specific output ports in the channel list for the specified card. The input ports specified in the channel list are ignored since the input port is always the Bias Input Port. By default, all the outputs are bias-enabled after a reset. Syntax B2200_bias_ch_enable(<addr>,<CardNumber>,<State>, <Channel list>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <State> is the output port's state (allowed values are "ENABLE", "DISABLE", "E", or "D") <Channel list> is the list of channels, known as connection routes. Example channel list: (@10102, 10203, 10305:10307) B2200_bias_enable Enables the bias mode for the specified card once Input Bias Port and Enabled Output ports are specified. When Bias Mode is ON, the Input Bias Port is connected to all Bias Enabled output ports that are not 426 IC-CAP Reference 8 IC-CAP Functions connected to any other input ports. Bias Disabled output ports are never connected to an Input Bias Port when Bias Mode is ON. If another input port is disconnected from a bias enabled output port, this port is automatically connected to the Input Bias Port. If another input port is connected to a Bias Enabled output port, the output port is automatically disconnected from the Bias Input Port. When Bias Mode is OFF, the Input Bias Port is the same as the other ports. Syntax B2200_bias_enable(<addr>, <CardNumber>, <mode>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <mode> is "On", "Off", "1", or "0". B2200_bias_init Selects the Input Bias Port for the specified card. The Input Bias Port is the dedicated bias port. Syntax B2200_bias_init(<addr>, <CardNumber>, <InputBiasPort>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <InputBiasPort> is 1 to 14 (numeric input) or −1 to disable bias port. B2200_close_interface Closes the current interface, which was opened by calling B2200_open_interface(). IC-CAP Reference 427 8 IC-CAP Functions B2200_connect Connects or disconnects specified channels. Bias Mode and coupling Mode are also taken into account when a channel is closed or opened. For example, in the list (@10102, 10203:10205), the following channels are connected or disconnected on card 1. Input port 1 to output port 2. Input port 2 to output port 3 and 5. Syntax B2200_connect(<addr>,<Connect/Disconnect>,<ChannelList>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <Connect/Disconnect> is C or D. <ChannelList> is the list of connections to close. B2200_couple_enable Enables or disables Couple Port mode. Couple Port mode allows synchronized connection of two adjacent input ports to two adjacent output ports. Syntax B2200_couple_enable(<addr>, <CardNumber>, <Mode>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <mode> is "On", "Off", "1", or "0". B2200_couple_setup Selects the couple ports for Kelvin connections. At Reset, no input ports are coupled. Syntax B2200_couple_setup( <addr>,<CardNumber>, <ListOfCoupledPorts>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). 428 IC-CAP Reference 8 IC-CAP Functions <CardNumber> is 0(auto), 1, 2, 3, or 4. <ListOfCoupledPorts> is the list of odd number input channels (e.g., "1, 3, 5" means coupled ports are 1-2, 3-4, 5-6). B2200_debug Prints out all command strings sent to the instrument when set to 1. This flag is common to all B2200A’s on the bus, regardless of their GPIB address. Syntax B2200_debug(<flag>) Where <flag> is "1", "0", "Yes", or "No". B2200_disconnect_card specified cards. Opens all relays or channels in the Syntax B2200_disconnect_card(<addr>, <CardNumber>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. B2200_GPIB_handler Returns -1 if the interface has not been initialized (invalid handler). Returns a positive integer (handler) if the interface has been opened. Returns the current interface handler. The function is provided as a utility function, which enables you to write advanced PEL code to write and read data to the B2200A using the HPIB_write and HPIB_read functions. Initializing the handler using B2200_open_interface enables you to use B2200A's built-in driver functions as well as writing PEL code to support other features that are not currently supported by the built-in functions, all in the same PEL code. IC-CAP Reference 429 8 IC-CAP Functions B2200_ground_card_enable Enables ground-enabling for all the output ports of the specified card. By default, all ports are ground-disabled. Syntax B2200_ground_card_enable(<addr>,<CardNumber>,<CardState>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <CardState> is the card output port's state (allowed values are "ENABLE", "DISABLE", "E", or "D"). B2200_ground_enable Enables the bias mode for the specified card. When Ground Mode is turned ON, the Input Ground Port (default is 12) is connected to all the Ground Enabled input/output ports that have not been connected to any other port. At Reset, Ground Mode is OFF. Ground Mode cannot be turned ON when Bias Mode is ON. See the Agilent B2200 User's Guide for additional comments and restrictions. Syntax B2200_ground_enable(<addr>, <CardNumber>, <mode>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, 4. <mode> is "On", "Off", "1", or "0". B2200_ground_init Selects the input Ground Port for the specified card. For each card, you can specify the same or a different Ground Port. By default, the input Ground Port is port 12. The ground port should be connected to 0 V output voltage. See the Agilent B2200 User's Guide for details. Syntax 430 IC-CAP Reference 8 IC-CAP Functions B2200_ground_init(<addr>,<CardNumber>,<InputGroundPort>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <InputGroundPort> is 1 to 14 (numeric input) or −1 to disable ground port. B2200_ground _outch_enable Ground-enables or ground-disables output ports. When Ground Mode is turned ON, the ground-enabled output ports that have not been connected to any other input port are connected to the input ground port. The input ports specified in channel lists are ignored since the input port is always the Input Ground Port. By default, all the outputs are ground-disabled after a reset. Syntax B2200_ground _outch_enable(<addr>,<CardNumber>,<State>, <Channel list>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, or 4. <State> is the port's state (allowed values are "ENABLE", "DISABLE", "E", or "D"). <Channel list> is the list of channels, known as connection routes. Example channel list: (@10102, 10203, 10305:10307) B2200_ground _unused_inputs Specifies the ground-enabled (or unused) input ports for the specified card. When Ground Mode is turned ON, the ground-enabled input ports that have not been connected to any other port are connected to the input Ground Port. By default, all the inputs are ground-disabled after a reset. IC-CAP Reference 431 8 IC-CAP Functions Syntax B2200_ground _unused_inputs(<addr>,<CardNumber>,<Input Channels>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <CardNumber> is 0(auto), 1, 2, 3, 4. <Input Channels> is the list of input channels (e.g., "1, 2, 5"). Only input ports 1 to 8 can be defined as unused (these are the input Kelvin Ports). B2200_init Must be run first in the PEL program to initialize the instrument and set the configuration mode. When the instrument is in AUTO configuration mode and multiple plug-in cards are installed in the B2200 slots from slot 1 continuously, the installed cards are then treated as one card (numbered 0). This function resets all the settings to factory default before setting the configuration mode. This function also sets the default connection rule for the specified card. When the connection rule is FREE (default mode), each input port can be connected to multiple output ports and each output port can be connected to multiple input ports. When the connection is SINGLE, each input port can be connected to only one output. Connection sequence specifies the open/close sequence of the relays when changing from an existing connection to a new connection. Syntax B2200_init( <addr>, <cardNumber>, <config>, <connectionRule>, <connectionSequence>) Where <addr> is the GPIB address of the Mainframe (must be a positive number from 1 to 30). <cardNumber> is 0(auto), 1, 2, 3, or 4. <config> is "AUTO" or "NORMAL" (string input). <connectionRule> is "FREE" or "SINGLE". 432 IC-CAP Reference 8 IC-CAP Functions <connectionSequence> is "NSEQ", "BBM", or "MBBR". • NSEQ (No SEQuence): Disconnect old route, connect new route. • BBM (Break Before Make): Disconnect old route, wait, connect new route. • MBBR (Make Before BReak): Connect new route, wait, disconnect old route. B2200_open_interface Opens and initializes the GPIB interface and must be run first in the PEL program. The interface handler is saved in a static variable so that the interface will be shared by all the other B2200's function calls. You can drive multiple B2200 instruments as long as they are on the same interface bus (obviously, they must have different addresses). Syntax B2200_open_interface(<Interface Name>) Where <Interface Name> is the name of the GPIB interface. BJT_dc_model Calculates collector current (IC), base current (IB) or gain (BETA) versus terminal voltages for a bipolar transistor using the UCB DC bipolar model. Set the Output field to IC, IB, or BETA. Use this function in place of an actual simulation for fast optimizations. The source code for this function is provided as an example in the userc.c file. Input Arguments: Data Sets: VC, VB, VE Strings/Pars/Vars Output Output: Array of real numbers; size determined by inputs Automatic Invocation: None IC-CAP Reference 433 8 IC-CAP Functions BJTAC_high_freq Standard extraction for the UCB Bipolar model. Extracts AC parameters from a common emitter measurement of H-parameters. Requires the following setup: H versus Vbe, with Vce = 1V and 3V, and Freq constant. The frequency value must be past the pole frequency of the device. Optimization can be used to tune the parameter values; typically, it should not be required. Input Arguments: Data Sets: Base Voltage, Frequency, Col Voltage, Sub Voltage, H-Par Output Output: None Extracts: TF, ITF, XTF, VTF, PTF Automatic Invocation: By Extract menu function BJTAC_rb_rbm_irb Standard extraction for the UCB Bipolar model. Extracts base resistance parameters from a common emitter measurement of H11. Requires the following setups: Ib versus Vbe, with Vce = constant H11 versus Freq versus Vbe, with Vce = constant Input Arguments: Data Sets: IB Data, RBB Data Output: None Extracts: RB, RBM, IRB Automatic Invocation: By Extract menu function BJTCV_stoc Calculates capacitance data from S-parameter data using the following equations: Cbc(Vbc) = − imag(Y12)/(2*pi*freq) Cbe(Vbe) = imag(Y11)/(2*pi*freq) - Cbc(Vbc) 434 IC-CAP Reference IC-CAP Functions 8 This allows base-collector and base-emitter capacitance to be calculated from network analyzer measurements. The output of this function can be used in place of actual capacitance data to extract capacitance related parameters. Input Arguments: Data Sets: FREQ data, S data Strings/Pars/Vars: Node (C/E) Output: Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change BJTDC_fwd_gummel Standard extraction for the UCB Bipolar model. Extracts forward Gummel parameters from forward Gummel plot measurements. Requires the following setup: Ic and Ib versus Vbe, with Vcb = 0V. The measured data should include high and low current roll-off effects in the gain. The Vbe lower limit for extraction is automatically selected. If the OVERRIDE_LIMITS variable is true, this limit can be specified manually with the X_LOW variable, which can be set from the Plot menu. Optimization can be used to tune the parameter values, but should not typically be required. Input Arguments: Data Sets: Fwd VBE, Fwd IC, Fwd IB, Fwd Beta Output: None Extracts: ISE, NE, BF, IKF Automatic Invocation: By Extract menu function BJTDC_is_nf Standard extraction for the UCB Bipolar model. Extracts saturation current parameters from forward gummel plot measurements. Requires the following setup: IC-CAP Reference 435 8 IC-CAP Functions Ic and Ib versus Vbe, with Vcb = 0V. The Vbe limits for extraction are automatically selected. If the OVERRIDE_LIMITS variable is true, these limits can be specified manually with the X_LOW and X_HIGH variables, which can be set from the Plot menu. Optimization can be used to tune the parameter values, but should not typically be required. Input Arguments: Data Sets: Fwd VBE, Log10 Fwd IC Output: None Extracts: IS, NF Automatic Invocation: By Extract menu function BJTDC_nr Standard extraction for the UCB Bipolar model. Extracts NR from reverse Gummel Plot measurements. Requires the following setup: Ie and Ib versus Vbc, with Veb = 0V. The Vbc limits for extraction are automatically selected. If the OVERRIDE_LIMITS variable is true, these limits can be specified manually with the X_LOW and X_HIGH variables, which can be set from the Plot menu. Optimization can be used to tune the parameter value, but should not typically be required. Input Arguments: Data Sets: Rev VBC, Log10 Rev IE Output: None Extracts: NR Automatic Invocation: By Extract menu function BJTDC_rc Standard extraction for the UCB Bipolar model. Extracts collector resistance in the saturation region. Requires the following setup: 436 IC-CAP Reference 8 IC-CAP Functions Ic versus Vce, with Vbe = typical operating value. Depending on the device, optimization to this and other DC measurements may be required to tune the parameter value. Input Arguments: Data Sets: VC Data, IC Data Output: None Extracts: RC Automatic Invocation: By Extract menu function BJTDC_rcfb Alternate extraction for the UCB Bipolar model. Extracts collector resistance using the flyback technique. Requires the following setup: Vec versus Ib, with the emitter floating. Depending on the device, optimization to this and other DC measurements may be required to tune the parameter value. Input Arguments: Data Sets: IB Data, VE Data Output: None Extracts: RC Automatic Invocation: By Extract menu function BJTDC_re Standard extraction for the UCB Bipolar model. Extracts emitter resistance using the flyback technique. Requires the following setup: Vce versus Ib, with the collector floating. Depending on the device, optimization to this and other DC measurements may be required to tune the parameter value. Input Arguments: Data Sets: IC-CAP Reference IB Data, VC Data 437 8 IC-CAP Functions Output: None Extracts: RE Automatic Invocation: By Extract menu function BJTDC_rev_gummel Standard extraction for the UCB Bipolar model. Extracts reverse Gummel parameters from reverse Gummel plot measurements. Requires the following setup: Ie and Ib versus Vbc, with Veb = 0V. The measured data should include high and low current roll-off effects in the gain. The Vbc lower limit for extraction is automatically selected. If the OVERRIDE_LIMITS variable is true, this limit can be specified manually with the X_LOW variable, which can be set from the Plot menu. Optimization can be used to tune the parameter values, but should not typically be required. Input Arguments: Data Sets: Rev VBC, Rev IE, Rev IB, Rev Beta Output: None Extracts: ISC, NC, BR, IKR Automatic Invocation: By Extract menu function BJTDC_vaf_var Standard extraction for the UCB Bipolar model. Extracts forward and reverse early voltages from common emitter and common collector curves. Requires the following setups: Ic versus Vce versus Vbe. Ie versus Vec versus Vbc. The setups should have the same number of base voltage steps. The base voltages should be chosen so that current levels correspond to the peak gain regions of the device. No more than 20 percent of the data should be in the saturation region. Optimization can be used to tune the parameter 438 IC-CAP Reference 8 IC-CAP Functions values, but should not typically be required. Optimization of these parameters should be performed only after extracting the complete DC model. Input Arguments: Data Sets: Forward VC, Forward VB, Forward IC, Reverse VE, Reverse VB, Reverse IE Output: None Extracts: VAF, VAR Automatic Invocation: By Extract menu function BPOPAMP_macro_model Extraction function for the Boyle-Pederson- Solomon-Cohn Opamp macromodel written in C code. (Refer to IEEE JSSC vol. SC-9, no. 6, Dec. 1974.) Extracts circuit element values for a specified set of opamp performance measurements. The data set inputs to the extraction function may be from outputs of Setups that measure the specific opamp performance or from values known via other sources such as specifications on a data sheet. The real and integer inputs are not generally measurable and are taken from the knowledge of the design of the opamp being modeled. An expanded description of the inputs is given in parentheses where applicable. Input Arguments: Data Sets: IC-CAP Reference Slew Rate +(V/uS), Slew Rate -(V/uS), Bias Current(Amps), Bias Offset(Amps), Volt Offset(Volts), Av(DM) (gain-no unit), BW(Hz), Excess Phase(radians), CMRR (dB), Rout(ohms), Rout-ac(ohms), Isc +(Amps), Isc -(Amps), Vout_max +(Volts), Vout_min -(Volts), Power Diss(Watts), Vcc supply(Volts), Vee supply(Volts) 439 8 IC-CAP Functions Reals or Integers: Nom. Q.IS(nominal input transistor saturation current), R2(mid-stage gain setting resistor), Comp. Cap.(compensation capacitance), Temp.(C), Inputs PNP?(=1 if input stage uses pnps), Debug?(=1 print debug information during extraction) Output: None Extracts: NPN1.BF, NPN1.IS, NPN2.BF, NPN2.IS, C1, RC1, RC2, RE1, RE2, RE, CE, RP, GCM, GA, R2, C2, GB, RO2, RC, RO1, DMOD1.IS, DMOD2.IS, VC, VE, IEE Automatic Invocation: By Extract menu function BSIM1DC_geom_indep This function is obsolete. Generates the BSIM geometry independent parameters (all parameters scaled to channel length and width) from a device file generated either by the BSIM extraction routines in IC-CAP or from a compatible BSIM characterization system. 440 Input Arguments: None Output: None IC-CAP Reference 8 IC-CAP Functions Extracts: VFB, LVFB, WVFB, PHI, LPHI, WPHI, K1, LK1, WK1, K2, LK2, WK2, ETA, LETA, WETA, MUZ, U1, LU1, WU1, DL, DW, X2E, LX2E, WX2E, X3D, LX3E, WX3E, X2MZ, LX2MZ, WX2MZ, MUS, LMUS, WMUS, X2MS, LX2MS, WX2MS, X3MS, LX3MS, WX3MS, X2U0, LX2U0, WX2U0, X2U1, LX2U1, WX2U1, X3U1, LX3U1, WX3U1 If subthreshold parameters are extracted, the following geometry independent parameters are also extracted: N0, LN0, WN0, NB, LNB, WNB, ND, LND, WND Automatic Invocation: By Extract menu function BSIM1DC_lin_sat This function is obsolete. Extracts the linear and saturation region parameters of the BSIM model using Id versus Vg curves for a single device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: The linear region parameters: VFB, PHI, K1, K2, U0, X2U0. The saturation region parameters: ETA, MUZ, U1, X2MZ, X2E, X3E, X2U1, MUS, X2MS, X3MS, X3U1. Automatic Invocation: By Extract menu function IC-CAP Reference 441 8 IC-CAP Functions BSIM1DC_sub This function is obsolete. Extracts the BSIM subthreshold parameters for a single device using 4 Id versus Vg curves. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I 1, Drain I 2, Drain I 3, Drain I 4 Output: None Extracts: N0, NB, ND Automatic Invocation: By Extract menu function BSIM2_lin_plot This function is obsolete. Acquires specified parameter value data versus 1/W or 1/L and displays plot. Input Arguments: Data Sets: Input an output data set with both measured and simulated data types set Strings/Pars/Vars: Parameter name of parameter to be plotted against 1/W or 1/L, Sort Key - W or L Output: Array of real numbers; size determined by inputs Automatic Invocation: None BSIM2_save_dev_pars This function is obsolete. Appends the set of BSIM2 extracted parameters for a single device to the device file in the user’s home directory. Input Arguments: None Output: None Automatic Invocation: By Extract menu function 442 IC-CAP Reference 8 IC-CAP Functions BSIM2DC_geom_indep This function is obsolete. Generates the BSIM2 geometry independent parameters (all parameters scaled to channel length and width) from a device file generated by the BSIM2 extraction routines in IC-CAP or from a compatible BSIM2 characterization system. Input Arguments: None Output: None Extracts: VFB, LVFB, WVFB, PHI, LPHI, WPHI, K1, LK1, WK1, K2, LK2, WK2, ETA0, LETA0, WETA0, MU0, DL, DW, UA0, LUA0, WUA0, U10, LU10, WU10, MU0B, LMU0B, WMU0B, ETAB, LETAB, WETAB, UB0, LUB0, WUB0, UAB, LUAB, WUAB, U1B, LU1B, WU1B, MUS0, LMUS0, WMUS0, MUSB, LMUSB, WMUSB, UBB, LUBB, WUBB, U1D, LU1D, WU1D, N0, LN0, WN0, NB, LNB, WNB, ND, LND, WND, MU20, LMU20, WMU20,MU2B, LMU2B, WMU2B, MU2G, LMU2G, WMU2G, MU30, LMU30, WMU30, MU3B, LMU3B, WMU3B, MU3G, LMU3G, WMU3G, MU40, LMU40, WMU40, MU4B, LMU4B, WMU4B, MU4G, LMU4G, WMU4G, VOF0, LVOF0, WVOF0, VOFB, LVOFB, WVOFB, VOFD, LVOFD, WVOFD, AI0, LAI0, WAI0, AIB, LAIB, WAIB, BI0, LBI0, WBI0, BIB, LBIB, WBIB, VGHIGH, LVGHIGH, WVGHIGH, VGLOW, LVGLOW, WVGLOW Automatic Invocation: By Extract menu function IC-CAP Reference 443 8 IC-CAP Functions BSIM2DC_lin_sat This function is obsolete. Extracts the linear, saturation, and subthreshold region parameters of the BSIM2 model using 2 families of Id versus Vg curves for a single device. Also extracts the output resistance parameters of the BSIM2 model using 2 families of Id versus Vd curves for a single device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I vs Vg, Drain I vs Vd Output: None Extracts: The linear region parameters: VFB, PHI, K1, K2, MU0, MU0B, UA0, UAB, UB0, UBB, VGHIGH, VGLOW. The saturation region parameters: MUS0, MUSB, U10, U1B, ETA0, ETAB, VOF0, VOFD, VOFB. The subthreshold region parameters: N0, NB, ND. The output resistance parameters: MU20, MU2B, MU2G, MU30, MU3B, MU3G, MU40, MU4B, MU4G, AI0, AIB, BI0, BIB, U1D Automatic Invocation: By Extract menu function BSIM3_calculate Calculates the drain current of the BSIM3v3.2 model and different internal states of the model for the given terminal voltages vd, vg, vs, and vb. The type of internal state, for example, the drain source resistance rds can be selected by the select output flag. In some cases it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one. 444 IC-CAP Reference IC-CAP Functions 8 Input Arguments: IC-CAP Reference Variables: vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1) Parameters: None Output: Value to calculate or failure indicator output[0] = lx; output[1] = wx; output[2] = vbseff; output[3] = vt0; output[4] = nonlat; output[5] = dvtx; output[6] = dvtx_w; output[7] = k3w0; output[8] = eta_vd; output[9] = vth; output[10] = vgsteff; output[11] = abulk; output[12] = ueff; output[13] = rds; output[14] = vdsat; output[15] = vdseff; output[16] = idlin; output[17] = idr; output[18] = vasat; output[19] = vaclm; output[20] = vadiblc; output[21] = inv_vascbe; output[22] = va; output[23] = idout; Extracts: Nothing 445 8 IC-CAP Functions BSIM3_check_par Checks whether a model parameter is in a predefined range. The range information for this parameter must be given in a variable in the referenced path. The range information is stored in a string in the following format: range_A0 >-1 0 10 | | | |___ | | |______ | |___________ |______________ upper upper lower lower error condition ({operator(<,<=), value}{-)} optimization boundary optimization boundary error condition ({operator(>,>=), value}{-)} Input Arguments: Variables: Actual value of parameter to check Parameters: Parameter name Path to parameter range definition Output: Flag for correct operation: 0: parameter is in specified range −1: parameter is outside specified range −2: error during function execution (e.g., variable 'range_xx' not found) Example call in PEL: check = BSIM3_check_par(prwg,"PRWG", "/BSIM3_DC_CV/Extraction_configuration/Boundaries") BSIM3_DC_calc_bin_parameter This function calculates from the input the 4 binning parameters P0, PL, PW, and PP. If the calculation is done correctly, outputs[0] will return 0. Otherwise, outputs[0] will result in a negative number. In such a case, the error will be printed in detail in the output window. 446 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Inputs: Array with 4 parameters P1 .. P4 of the bin corners Array with 4 gate lengths L1 .. L4 of the bin corners Array with 4 gate widths W1 .. W4 of the bin corners Array with 4 values for the number of gate fingers NF1 .. NF4 of the bin corners Parameter set (get with 'BSIM3_DC_get_parameter()') Output: Array containing error condition and binning parameters outputs[0] = error condition (0=o.k., any other number indicates an error) outputs[1] = P0 outputs[2] = PL outputs[3] = PW outputs[4] = PP Extracts: Binning parameters P0, PL, PW, PP Example call in PEL: complex l[4] complex w[4] : l[0]= 1u : par = BSIM3_DC_get_parameter() bin_par = BSIM3_DC_calc_bin_parameter(p, l, w, par) BSIM3_DC_calculate Calculates the drain current of the BSIM3v3.2 model and different internal states of the model for the given terminal voltages vd, vg, vs, and vb. The type of internal state, for example, the drain source resistance rds can be selected by the select output flag. In some cases, it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select IC-CAP Reference 447 8 IC-CAP Functions measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one. Input Arguments: Variables: 448 vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1) IC-CAP Reference 8 IC-CAP Functions Output: Vector with BSIM4 internal states for the given DC bias point. By setting debug = 1, this vector is printed with explanations: 0. leff 1. weff 2. 3. 4. dl 5. dws 6. vtm0 7. eg0 8. ni 9. vbi 10. vbc 11. xdep0 12. xdep 13. cdep 14. cox 15. 16. 17. lt0 18. lt 19. ltw 20. phi 21. phis 22. VFB 23. - IC-CAP Reference 449 8 IC-CAP Functions 24. vgsteff 25. vbseff 26. vdseff 27. vth0 28. 29. 30. pocket implant =nonlat 31. narrow channel effect = k3w0 32. short channel effect = dvtx 33. small channel effect = dvtx_w 34. high vds effect = eta_vd 35. vth 36. 37. abulk 38. litl 39. ueff 40. esat 41. rds 42. 43. 44. vdsat 45. ids0 (without resistance) 46. idsr (with resistance) 47. vasat 48. vaclm 49. va 50. 51. 52. vadibl 53. inv_vascbe 54. ids (with output resistance) 55. 56. n 57. 58. actual version Example call in PEL: erg = BSIM3_DC_calculate(par, point_vd, point_vg, 0, point_vb, MAIN.L, MAIN.W, 0, 0, TEMP, TYPE, 0) 450 IC-CAP Reference 8 IC-CAP Functions BSIM3_DC_get_parameter This function loads all BSIM3 model parameters from the actual model parameter set and checks them for consistency. Without finding errors, the function gives back an array with model parameters in a given order. Output: Array of BSIM3 model parameters in the following order: error = outputs[0]; ! in case of an ! error during the parameter check ! error would be set to 1e-99 LEVEL = outputs[1]; VERSION = outputs[2]; MOBMOD = outputs[3]; TOX = outputs[4] TOXM = outputs[5] XJ = outputs[6] NCH = outputs[7] NGATE = outputs[8] RSH = outputs[9] VTH0 = outputs[10] K1 = outputs[11] K2 = outputs[12] K3 = outputs[13] K3B = outputs[14] W0 = outputs[15] NLX = outputs[16] VBM = outputs[17] DVT0 = outputs[18] DVT1 = outputs[19] DVT2 = outputs[20] DVT0W = outputs[21] DVT1W = outputs[22] DVT2W = outputs[23] U0 = outputs[24] UA = outputs[25] UB = outputs[26] UC = outputs[27] VSAT = outputs[28] IC-CAP Reference 451 8 IC-CAP Functions A0 = outputs[29] AGS = outputs[30] B0 = outputs[31] B1 = outputs[32] KETA = outputs[33] A1 = outputs[34] A2 = outputs[35] WINT = outputs[36] LINT = outputs[37] DWG = outputs[38] DWB = outputs[39] VOFF = outputs[40] NFACTOR = outputs[41] ETA0 = outputs[42] ETAB = outputs[43] DSUB = outputs[44] CIT = outputs[45] CDSC = outputs[46] CDSCB = outputs[47] CDSCD = outputs[48] PCLM = outputs[49] PDIBLC1 = outputs[50] PDIBLC2 = outputs[51] PDIBLCB = outputs[52] DROUT = outputs[53] PSCBE1 = outputs[54] PSCBE2 = outputs[55] PVAG = outputs[56] DELTA = outputs[57] RDSW = outputs[58] PRWG = outputs[59] PRWB = outputs[60] WR = outputs[61] ALPHA0 = outputs[62] ALPHA1 = outputs[63] BETA0 = outputs[64] TNOM = outputs[65] UTE = outputs[66] KT1 = outputs[67] KT1L = outputs[68] KT2 = outputs[69] 452 IC-CAP Reference IC-CAP Functions 8 UA1 = outputs[70] UB1 = outputs[71] UC1 = outputs[72] AT = outputs[73] PRT = outputs[74] WL = outputs[75] WLN = outputs[76] WW = outputs[77] WWN = outputs[78] WWL = outputs[79] LL = outputs[80] LLN = outputs[81] LW = outputs[82] LWN = outputs[83] LWL = outputs[84] WLC = outputs[85] WWC = outputs[86] WWLC = outputs[87] BINUNIT = outputs[88] Example call in PEL: par = BSIM3_DC_get_parameter() BSIM3_DC_vth Picks up 1 single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage vth. The setup is specified by the parameters path to vd, ... etc. This makes it easier to call the function with variable inputs inside the PEL programs. The 'Flag' variable is used to define certain conditions, for example, the extraction of vth for the large device that does not need to calculate all the early voltage values. Input Arguments: Input: IC-CAP Reference parameter set (get with 'BSIM3_DC_get_parameter()') 453 8 IC-CAP Functions Variables: Length (L) Width (W) Flag for extraction options flag: 0 Large device @ low vds 1 Short and small device @ low vds 2 Short and small device @ high vds 3 A constant reference current Idref = ID_REF_VTH*W/L is used where ID_REF_VTH is a model variable. # of curve Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: ) Parameters: path to setup vd vg vb id type id Output: Value vth or failure indicator Extracts: Vth (1e99 indicates error) Example call in PEL: erg = BSIM3_DC_vth(par, MAIN.L, MAIN.W, flag, i, TEMP, TYPE, 0, ".", "vd","vg","vb","id","M") BSIM3_error This function takes a set of measured and simulated data and calculates the error between simulation and measurement in the specified range (xmin, xmax, ymin, ymax). The error is given back as output. In addition, the maximum error and the root mean square (RMS) error are given back through an IC-CAP system variable. 454 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Inputs: x-coordinate values measured y-coordinate values simulated y-coordinate values Variables: x_min x_max y_min y_max Parameters: IC-CAP Variable to write MAX_ERROR IC-CAP Variable to write RMS_ERROR Output: error in the specified range, all other points of the output = 0 Example call in PEL: error = BSIM3_error(vg,id.m,id.s,0,3,0,1e-6,"MAX_ERROR", "RMS_ERROR") BSIM3_set_opt The function accepts a list of model parameters, separated by blanks (e.g., “A0 AGS KETA”) and searches the range information for these parameters in the range_<PARAMETER> variables in the referenced path. After analyzing the range information for each parameter, the variables min_<PARAMETER> and max_<PARAMETER> in the local setup/DUT are set. These variables can be used as upper/lower limit in an optimizer call. The range information is stored in a string in the following format: range_A0 >-1 0 10 | | | |___ | | |______ | |___________ |______________ IC-CAP Reference upper upper lower lower error condition ({operator(<,<=), value}{-)} optimization boundary optimization boundary error condition ({operator(>,>=), value}{-)} 455 8 IC-CAP Functions Input Arguments: Parameters: Output: Parameter names, separated by blanks Path to parameter range definition Flag for correct operation: 0: everything is ok -1: error during function execution (e.g., variable 'range_xx' not found) Example call in PEL: erg = BSIM3_set_opt("RDSW PRWG PRWB","Extraction_configuration/Boundaries") BSIM3_toolkit_vth Picks up 1 single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage vth. The setup is specified by the parameters path to vd and so on. This makes it easier to call the function with variable inputs inside the PEL programs. The Flag variable is used to define certain conditions. For example, the extraction of vth for the large device, which does not need to calculate all the early voltage values. Input arguments Variables: Length (L) Width (W) Flag for extraction options flag: 0 Large device q low vds 1 Short and small device @ low vds 2 Short and small device @ high vds # of curve Parameters: 456 path to setup, vd, vg, vb, id, type id IC-CAP Reference 8 IC-CAP Functions Output: Value vth or failure indicator Extracts: Vth (1e99 indicates error) BSIM3CV_total_cap Extracts the total PN junction capacitance parameters from the bottom and sidewall for the BSIM3 model. Requires C-V measurement on 2 different geometries. The first measurement should be on a device in which the bottom capacitance dominates. The second measurement should be on a device in which the sidewall capacitance dominates. Extracts: CJ, MJ, CJSW, MJSW, PB BSIM3CVmodCBD BSIM3 Bulk to Drain Capacitance model. Calculates CBD from the input voltage. BSIM3CVmodCBS BSIM3 Bulk to Source Capacitance model. Calculates CBS from the input voltage. BSIM3DC_bulk_short Standard extraction for the BSIM 3 model. Extracts substrate current parameters using Ib versus Vg measured on a set of devices with a large and fixed width and different length. Extracts: ALPHA0, BETA0 BSIM3DC_lin_large Standard extraction for the BSIM 3 model. Extracts linear region parameters using Id versus Vg measured on a large device. Extracts: IC-CAP Reference VTH0, K1, K2, U0, UA, UB, UC, VOFF 457 8 IC-CAP Functions BSIM3DC_lin_narrow Standard extraction for the BSIM 3 model. Extracts width effect parameters using Id versus Vg measured on a set of devices with a large and fixed length and different width. Extracts: K3, W0, K3B, WINT, DWB BSIM3DC_lin_short Standard extraction for the BSIM 3 model. Extracts length effect parameters using Id versus Vg measured on a set of devices with a large and fixed width and different length. Extracts: DVT0, DVT1, DVT2, LINT, RDSW, NLX, PRWB BSIM3DC_lin_small Standard extraction for the BSIM 3 model. Extracts small effect parameters using Id versus Vg measured on a set of devices with a short and fixed length and different width. Extracts: WR, DVT0W, DVT1W, DVT2W BSIM3DC_model UCB BSIM3 MOS model. Calculates Id, Gd, Rout, or Ib from voltages. BSIM3DC_sat_narrow Standard extraction for the BSIM 3 model. Extracts saturation parameters using Id versus Vd measured on a set of devices with a large and fixed length and different width. Extracts: B0, B1 BSIM3DC_sat_short Standard extraction for the BSIM 3 model. Extracts saturation and output resistance parameters using Id versus Vd measured on a set of devices with a large and fixed width and different length. 458 IC-CAP Reference 8 IC-CAP Functions Extracts: A0, A1, A2, DROUT, VSAT, PCLM, PDIBLC1, PDIBLC2, PSCBE1, PSCBE2, PVAG BSIM3DC_sat_short2 Standard extraction for the BSIM 3 model. Extracts saturation parameters using Id versus Vd measured on a set of devices with a large and fixed width and different length. Extracts: KETA, PDIBLCB BSIM3DC_sub_short Standard extraction for the BSIM 3 model. Extracts subthreshold parameters using Id versus Vg measured on a set of devices with a large and fixed width and different length. Extracts: CDSC, CDSCB, NFACTOR BSIM3DC_sub_short2 Standard extraction for the BSIM 3 model. Extracts subthreshold parameters at high drain voltage using Id versus Vg measured on a set of devices with a large and fixed width and different length. Extracts: ETA0, ETAB, CDSCD BSIM3DC_vth Calculates the threshold voltage from Id versus Vg measurements. BSIM3DC_vth_sim Calculates the threshold voltage from the model parameters. BSIM3DC_vth_versus Acquires threshold voltage data versus length or width to display in plot. IC-CAP Reference 459 8 IC-CAP Functions BSIM4_check_par Checks whether a model parameter is in a predefined range. The range information for this parameter must be given in a variable in the referenced path. The range information is stored in a string in the following format: range_A0 >-1 0 10 | | | |___ | | |______ | |___________ |______________ upper upper lower lower error condition ({operator(<,<=), value}{-)} optimization boundary optimization boundary error condition ({operator(>,>=), value}{-)} Input Arguments: Variables: Actual value of parameter to check Parameters: Parameter name Path to parameter range definition Output: Flag for correct operation: 0: parameter is in specified range −1: parameter is outside specified range −2: error during function execution (e.g. variable 'range_xx' not found) Example call in PEL: check = BSIM4_check_par(prwg,"PRWG", "/BSIM4_DC_CV/Extraction_configuration/Boundaries") BSIM4_DC_calc_bin_parameter This function calculates from the input the 4 binning parameters P0, PL, PW, and PP. If the calculation is done correctly, outputs[0] will return 0. Otherwise, outputs[0] will result in a negative number. In such a case, the error will be printed in detail in the output window. 460 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Inputs: Array with 4 parameters P1 .. P4 of the bin corners Array with 4 gate lengths L1 .. L4 of the bin corners Array with 4 gate widths W1 .. W4 of the bin corners Array with 4 values for the number of gate fingers NF1 .. NF4 of the bin corners Parameter set (get with 'BSIM4_DC_get_parameter()') Output: Array containing error condition and binning parameters outputs[0] = error condition (0=o.k., any other number indicates an error) outputs[1] = P0 outputs[2] = PL outputs[3] = PW outputs[4] = PP Extracts: Binning parameters P0, PL, PW, PW Example call in PEL: complex l[4] complex w[4] : l[0]= 1u : par = BSIM4_DC_get_parameter() bin_par = BSIM4_DC_calc_bin_parameter(p, l, w, nf, par) IC-CAP Reference 461 8 IC-CAP Functions BSIM4_DC_calculate Calculates the drain current of the BSIM4.2.0 model and different internal states of the model for the given terminal voltages vd, vg, vs, and vb. The type of internal state, for example, the drain source resistance rds can be selected by the select output flag. In some cases, it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one. Input Arguments: 462 Input: Parameter set (get with 'BSIM4_DC_get_parameter()') Variables: vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width Number fingers (NF) Number of gate fingers select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1) IC-CAP Reference 8 IC-CAP Functions Output: Vector with BSIM4 internal states for the given DC bias point. By setting debug = 1, this vector is printed with explanations: 0. leff 1. weff 2. weffs 3. weffcj 4. dl 5. dws 6. vtm0 7. eg0 8. ni 9. vbi 10. vbc 11. xdep0 12. xdep 13. cdep 14. coxe 15. coxp 16. coxeff 17. lt0 18. lt 19. ltw 20. phi 21. phis 22. VFB 23. vgse 24. vgsteff 25. vbseff 26. vdseff 27. vth0 28. bulk effect k1 = term[0] 29. bulk effect k2 = term[1] 30. pocket implant = term[2] 31. narrow channel effect = term[3] 32. short channel effect = term[4] 33. small channel effect = term[5] 34. high vds effect = term[6] 35. vth IC-CAP Reference 463 8 IC-CAP Functions 36. f_doping 37. abulk 38. litl 39. ueff 40. esat 41. rds 42. rd 43. rs 44. vdsat 45. ids0 (without resistance) 46. idsr (with resistance) 47. vasat 48. vaclm 49. va 50. cclm 51. vadits 52. vadibl 53. inv_vascbe 54. ids (with output resistance) 55. vth_dits 56. n 57. vfbsd 58. actual version Example call in PEL: erg = BSIM4_DC_calculate(par, point_vd, point_vg, 0, point_vb, MAIN.L, MAIN.W, MAIN.NF, 0, 0, TEMP, TYPE, 0) 464 IC-CAP Reference IC-CAP Functions 8 BSIM430_DC_calculate Calculates the drain current of the BSIM4.3.0 model and different internal states of the model for the given terminal voltages vd, vg, vs and vb. The type of internal state, for example, the drain source resistance rds can be selected by the select output flag. In some cases, it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one. Input arguments: IC-CAP Reference Input: Parameter set (get with 'BSIM4_DC_get_parameter()') Variables: vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width SA Distance between OD edge to poly from one side SB Distance between OD edge to poly from other side SD Distance between neighboring fingers Number fingers (NF) Number of gate fingers select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1) Parameters: - 465 8 IC-CAP Functions Output: 466 Vector with BSIM4 internal states for the given DC bias point. By setting debug = 1, this vector is printed with explanations: 0. leff 1. weff 2. weffs 3. weffcj 4. dl 5. dws 6. vtm0 7. eg0 8. ni 9. vbi 10. vbc 11. xdep0 12. xdep 13. cdep 14. coxe 15. coxp 16. coxeff 17. lt0 18. lt 19. ltw 20. phi 21. phis 22. VFB 23. vgse 24. vgsteff 25. vbseff 26. vdseff 27. vth0 28. bulk effect k1 = term[0] 29. bulk effect k2 = term[1] 30. pocket implant = term[2] 31. narrow channel effect = term[3] 32. short channel effect = term[4] 33. small channel effect = term[5] 34. high vds effect = term[6] 35. vth 36. f_doping IC-CAP Reference IC-CAP Functions 8 37. abulk 38. litl 39. ueff 40. esat 41. rds 42. rd 43. rs 44. vdsat 45. ids0 (without resistance) 46. idsr (with resistance) 47. vasat 48. vaclm 49. va 50. cclm 51. vadits 52. vadibl 53. inv_vascbe 54. ids (with output resistance) 55 vth_dits 56. n 57. vfbsd 58. actual version Example call in PEL: erg = BSIM430_DC_calculate(par, point_vd, point_vg, 0, point_vb, MAIN.L, MAIN.W, MAIN.NF, MAIN.SA, MAIN.SB, MAIN.SD, 0, 0, TEMP, TYPE, 0) BSIM450_DC_calculate Calculates the drain current of the BSIM4.3.0 model and different internal states of the model for the given terminal voltages vd, vg, vs and vb. The type of internal state, e.g. the drain source resistance rds can be selected by the select output flag. In some cases, it is necessary to use a measured value for the threshold voltage instead of the calculated. Use the select input flag to select measured or calculated. If this is not equal to zero, then the value in value input is used for vth instead of the calculated one. IC-CAP Reference 467 8 IC-CAP Functions Input Arguments: 468 Input: Parameter set (get with 'BSIM4_DC_get_parameter()') Variables: vd Drain voltage vg Gate voltage vs Source voltage vb Bulk voltage Length (L) Gate length Width (W) Gate width SA Distance between OD edge to poly from one side SB Distance between OD edge to poly from other side SD Distance between neighboring fingers SCA Integral of the first distribution function for scattered well dopant SCB Integral of the second distribution function for scattered well dopant SCC Integral of the third distribution function for scattered well dopant SC Distance to a single well edge Number fingers (NF) Number of gate fingers select input (if 1 use value input for Vth) value input (value input for Vth if select input = 1) IC-CAP Reference 8 IC-CAP Functions Parameters: Output: IC-CAP Reference Vector with BSIM4 internal states for the given DC bias point. By setting debug = 1, this vector is printed with explanations: 0. leff 1. weff 2. weffs 3. weffcj 4. dl 5. dws 6. vtm0 7. eg0 8. ni 9. vbi 10. vbc 11. xdep0 12. xdep 13. cdep 14. coxe 15. coxp 16. coxeff 17. lt0 18. lt 19. ltw 20. phi 21. phis 22. VFB 23. vgse 24. vgsteff 25. vbseff 26. vdseff 27. vth0 28. bulk effect k1 = term[0] 29. bulk effect k2 = term[1] 30. pocket implant = term[2] 31. narrow channel effect = term[3] 32. short channel effect = term[4] 33. small channel effect = term[5] 34. high vds effect = term[6] 469 8 IC-CAP Functions 35. vth 36. f_doping 37. abulk 38. litl 39. ueff 40. esat 41. rds 42. rd 43. rs 44. vdsat 45. ids0 (without resistance) 46. idsr (with resistance) 47. vasat 48. vaclm 49. va 50. cclm 51. vadits 52. vadibl 53. inv_vascbe 54. ids (with output resistance) 55 vth_dits 56. n 57. vfbsd 58. actual version Example call in PEL: erg = BSIM450_DC_calculate(par, point_vd, point_vg, 0, point_vb, MAIN.L, MAIN.W, MAIN.NF, MAIN.SA, MAIN.SB, MAIN.SD, MAIN.SCA, MAIN.SCB, MAIN.SCC, MAIN.SC, 0, 0, TEMP, TYPE, 0) BSIM4_DC_extr_A0_AGS_KETA Extract model parameters A0, AGS, KETA from the measurement: id = f(Vgs) @ diff. Vbs @ high Vds from a transistor with large and wide gate length. 470 IC-CAP Reference IC-CAP Functions 8 Input Arguments: Input: parameter set (get with 'BSIM4_DC_get_parameter()') Variables: Length (L) Width (W) Number fingers (NF) Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: ) Parameters: path to setup vd vg vb id type id Output: Value of: output[0] = a0 output[1] = ags output[2] = keta In the case of an error, all 3 outputs are set to 1e99 Extracts: A0, AGS, KETA Example call in PEL: erg = BSIM4_DC_extr_A0_AGS_KETA(par, MAIN.L, MAIN.W, MAIN.NF, TEMP, TYPE, 0,".","vd","vg","vb","id") BSIM4_DC_get_parameter This function loads all BSIM4 model parameters from the actual model parameter set and checks them for consistency. Without finding errors, the function gives back an array with model parameters in a given order. IC-CAP Reference 471 8 IC-CAP Functions Output: Array of BSIM4 model parameters in the following order: error = outputs[0]; ! in case of an ! error during the parameter check ! error would be set to 1e-99 LEVEL = outputs[1]; VERSION = outputs[2]; MOBMOD = outputs[3]; RDSMOD = outputs[4]; IGCMOD = outputs[5]; IGBMOD = outputs[6]; GEOMOD = outputs[7]; EPSROX = outputs[8]; TOXE = outputs[9]; TOXP = outputs[10]; TOXM = outputs[11]; DTOX = outputs[12]; XJ = outputs[13]; NDEP = outputs[14]; NGATE = outputs[15]; NSD = outputs[16]; XT = outputs[17]; RSH = outputs[18]; RSHG = outputs[19]; VTH0 = outputs[20]; PHIN = outputs[21]; K1 = outputs[22]; K2 = outputs[23]; K3 = outputs[24]; K3B = outputs[25]; W0 = outputs[26]; LPE0 = outputs[27]; LPEB = outputs[28]; VBM = outputs[29]; DVT0 = outputs[30]; DVT1 = outputs[31]; DVT2 = outputs[32]; DVTP0 = outputs[33]; DVTP1 = outputs[34]; 472 IC-CAP Reference IC-CAP Functions 8 DVT0W = outputs[35]; DVT1W = outputs[36]; DVT2W = outputs[37]; U0 = outputs[38]; UA = outputs[39]; UB = outputs[40]; UC = outputs[41]; EU = outputs[42]; VSAT = outputs[43]; A0 = outputs[44]; AGS = outputs[45]; B0 = outputs[46]; B1 = outputs[47]; KETA = outputs[48]; A1 = outputs[49]; A2 = outputs[50]; WINT = outputs[51]; LINT = outputs[52]; DWG = outputs[53]; DWB = outputs[54]; VOFF = outputs[55]; VOFFL = outputs[56]; MINV = outputs[57]; NFACTOR = outputs[58]; ETA0 = outputs[59]; ETAB = outputs[60]; DSUB = outputs[61]; CIT = outputs[62]; CDSC = outputs[63]; CDSCB = outputs[64]; CDSCD = outputs[65]; PCLM = outputs[66]; PDIBLC1 = outputs[67]; PDIBLC2 = outputs[68]; PDIBLCB = outputs[69]; DROUT = outputs[70]; PSCBE1 = outputs[71]; PSCBE2 = outputs[72]; PVAG = outputs[73]; DELTA = outputs[74]; FPROUT = outputs[75]; IC-CAP Reference 473 8 IC-CAP Functions PDITS = outputs[76]; PDITSL = outputs[77]; PDITSD = outputs[78]; RDSW = outputs[79]; RDSWMIN = outputs[80]; RDW = outputs[81]; RDWMIN = outputs[82]; RSW = outputs[83]; RSWMIN = outputs[84]; PRWG = outputs[85]; PRWB = outputs[86]; WR = outputs[87]; ALPHA0 = outputs[88]; ALPHA1 = outputs[89]; BETA0 = outputs[90]; AGIDL = outputs[91]; BGIDL = outputs[92]; CGIDL = outputs[93]; EGIDL = outputs[94]; AIGBACC = outputs[95]; BIGBACC = outputs[96]; CIGBACC = outputs[97]; NIGBACC = outputs[98]; AIGBINV = outputs[99]; BIGBINV = outputs[100]; CIGBINV = outputs[101]; EIGBINV = outputs[102]; NIGBINV = outputs[103]; AIGC = outputs[104]; BIGC = outputs[105]; CIGC = outputs[106]; AIGSD = outputs[107]; BIGSD = outputs[108]; CIGSD = outputs[109]; DLCIG = outputs[110]; NIGC = outputs[111]; POXEDGE = outputs[112]; PIGCD = outputs[113]; NTOX = outputs[114]; TOXREF = outputs[115]; DWJ = outputs[116]; 474 IC-CAP Reference IC-CAP Functions 8 TNOM = outputs[117]; UTE = outputs[118]; KT1 = outputs[119]; KT1L = outputs[120]; KT2 = outputs[121]; UA1 = outputs[122]; UB1 = outputs[123]; UC1 = outputs[124]; AT = outputs[125]; PRT = outputs[126]; WL = outputs[127]; WLN = outputs[128]; WW = outputs[129]; WWN = outputs[130]; WWL = outputs[131]; LL = outputs[132]; LLN = outputs[133]; LW = outputs[134]; LWN = outputs[135]; LWL = outputs[136]; WLC = outputs[137]; WWC = outputs[138]; WWLC = outputs[139]; XL = outputs[140]; XW = outputs[141]; BINUNIT = outputs[142]; LAMBDA = outputs[143]; VTL = outputs[144]; XN = outputs[145]; LC = outputs[146]; SAREF = outputs[147]; SBREF = outputs[148]; WLOD = outputs[149]; KU0 = outputs[150]; KVSAT = outputs[151]; TKU0 = outputs[152]; LKU0 = outputs[153]; WKU0 = outputs[154]; PKU0 = outputs[155]; IC-CAP Reference 475 8 IC-CAP Functions LLODKU0 = outputs[156]; WLODKU0 = outputs[157]; KVTH0 = outputs[158]; LKVTH0 = outputs[159]; WKVTH0 = outputs[160]; PKVTH0 = outputs[161]; LLODVTH = outputs[162]; WLODVTH = outputs[163]; STK2 = outputs[164]; LODK2 = outputs[165]; STETA0 = outputs[166]; LODETA0 = outputs[167]; TEMPMOD = outputs[168]; UD = outputs[169]; UP = outputs[170]; LP = outputs[171]; UD1 = outputs[172]; TVFBSDOFF = outputs[173]; TVOFF = outputs[174]; WEB = outputs[175]; WEC = outputs[176]; KVTH0WE = outputs[177]; K2WE = outputs[178]; KU0WE = outputs[179]; SCREF = outputs[180]; WPEMOD = outputs[181]; Example call in PEL: par = BSIM4_DC_get_parameter() BSIM4_DC_vth Picks up 1 single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage vth. The setup is specified by the parameters path to vd, ... etc. This makes it easier to call the function with variable inputs inside the PEL programs. The 'Flag' variable is used to define certain conditions, for example, the extraction of vth for the large device that does not need to calculate all the early voltage values. 476 IC-CAP Reference IC-CAP Functions 8 Input Arguments: Input: parameter set (get with 'BSIM4_DC_get_parameter()') Variables: Length (L) Width (W) Flag for extraction options flag: 0 Large device @ low vds 1 Short and small device @ low vds 2 Short and small device @ high vds 3 A constant reference current Idref = ID_REF_VTH*W/L is used where ID_REF_VTH is a model variable. # of curve Number fingers (NF) Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: nothing) Parameters: path to setup vd vg vb id type id Output: Value vth or failure indicator Extracts: Vth (1e99 indicates error) Example call in PEL: erg = BSIM4_DC_vth(par, MAIN.L, MAIN.W, flag, i, MAIN.NF, TEMP, TYPE, 0, ".", "vd","vg","vb","id","M") IC-CAP Reference 477 8 IC-CAP Functions BSIM430_DC_vth "Picks up one single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage Vth. The setup is specified by the parameters path to vd, ... etc. This function should only be used with model versions BSIM4.3 and higher. Input Arguments: 478 Input: Parameter set (get with 'BSIM4_DC_get_parameter()') Variables: Length(L) Width (W) Number fingers (NF) SA SB SD Flag for extraction options flag: 0 Large device @ low vds 1 Short and small device @ low vds 2 Short and small device @ high vds 3 A constant reference current Idref = ID_REF_VTH*W/L is used Reference current ID_REF_VTH for extraction options 3 # of curve Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: nothing) Parameters: path to setup vd vg vb id type id Output: Value vth or failure indicator Extracts: Vth (1e99 indicates error) IC-CAP Reference IC-CAP Functions 8 Example call in PEL: erg = BSIM430_DC_vth(par, MAIN.L, MAIN.W, MAIN.NF, MAIN.SA, MAIN.SB, MAIN.SD, flag, ID_REF_VHT, i, TEMP, TYPE, 0, ".", "vd","vg","vb","id","M") BSIM450_DC_vth Picks up one single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage Vth. The setup is specified by the parameters path to vd, ... etc. This function should only be used with model versions BSIM4.5 and higher. Input Arguments: IC-CAP Reference Input: Parameter set (get with 'BSIM4_DC_get_parameter()') Variables: Length(L) Width (W) Number fingers (NF) SA SB SD SCA SCB SCC SC Flag for extraction options flag: 0 Large device @ low vds 1 Short and small device @ low vds 2 Short and small device @ high vds 3 A constant reference current Idref = ID_REF_VTH*W/L is used 4 A constant reference current Idref = ID_REF_VTH*(W-2*Delta W)/(L-2*Delta L) 479 8 IC-CAP Functions Reference current ID_REF_VTH for extraction options 3,4 Delta L (one side) for extraction options 4 Delta W (one side) for extraction options 4 # of curve Temperature (Degree C) Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: nothing) Parameters: path to setup vd vg vb id type id Output: Value vth or failure indicator Extracts: Vth (1e99 indicates error) Example call in PEL: erg = BSIM450_DC_vth(par, MAIN.L, MAIN.W, MAIN.NF, MAIN.SA, MAIN.SB, MAIN.SD, MAIN.SC, MAIN.SCA, MAIN.SCB, MAIN.SCC, flag, i, TEMP, TYPE, 0, ".", "vd","vg","vb","id","M") BSIM4_error This function takes a set of measured and simulated data and calculates the error between simulation and measurement in the specified range (xmin, xmax, ymin, ymax). The error is given back as output. In addition, the maximum error and the root mean square (RMS) error are given back through an IC-CAP system variable. Input Arguments: Inputs: 480 x-coordinate values measured y-coordinate values simulated y-coordinate values IC-CAP Reference 8 IC-CAP Functions Variables: x_min x_max y_min y_max Parameters: IC-CAP Variable to write MAX_ERROR IC-CAP Variable to write RMS_ERROR Output: error in the specified range, all other points of the output = 0 Example call in PEL: error = BSIM4_error(vg,id.m,id.s,0,3,0,1e-6,"MAX_ERROR", "RMS_ERROR") BSIM4_set_opt The function accepts a list of model parameters, separated by blanks (e.g., “A0 AGS KETA”) and searches the range information for these parameters in the range_<PARAMETER> variables in the referenced path. After analyzing the range information for each parameter, the variables min_<PARAMETER> and max_<PARAMETER> in the local setup/DUT are set. These variables can be used as upper/lower limit in an optimizer call. The range information is stored in a string in the following format: range_A0 >-1 0 10 | | | |___ | | |______ | |___________ |______________ upper upper lower lower error condition ({operator(<,<=), value}{-)} optimization boundary optimization boundary error condition ({operator(>,>=), value}{-)} Input Arguments: Parameters: IC-CAP Reference Parameter names, separated by blanks Path to parameter range definition 481 8 IC-CAP Functions Output: Flag for correct operation: 0: everything is ok -1: error during function execution (e.g., variable 'range_xx' not found) Example call in PEL: erg = BSIM4_set_opt("RDSW PRWG PRWB","Extraction_configuration/Boundaries") BSIMCV_total_cap This function is obsolete. Extracts the total PN junction capacitance parameters from the bottom and sidewall for the BSIM1 and BSIM2 models. Requires C-V measurement on 2 different geometries. The first measurement should be on a device in which the bottom capacitance dominates. The second measurement should be on a device in which the sidewall capacitance dominates. Input Arguments: Data Sets: Cap 1, Cap 2, Junction V Reals or Integers: Cap 1 Area, Cap 1 Perim, Cap 2 Area, Cap 2 Perim Output: None Extracts: CJ, MJ, CJSW, MJSW, PB Automatic Invocation: By Extract menu function ceil Returns the smallest integer not less than the given value. Input Arguments: Reals: Output: Number Single real Automatic Invocation: On Input Change 482 IC-CAP Reference 8 IC-CAP Functions check_error_log Checks the .icerrlog file to see if any error messages were logged during the execution of the previous function. The log file can be viewed using any text editor (or in a terminal window using more .icerrlog). Note: the .icerrlog file is cleared each time you start IC-CAP. Input Arguments: Strings/Pars/Vars: Output: mpme Returns 0 if no errors; non-zero if errors are logged. Automatic Invocation: MANUAL PEL Example x = check_error_log() circlefit Performs a circlefit on a set of complex data centered on the REAL axis. Returns a 2 point data set containing the center and radius. If the OVERRIDE_LIMITS variable is TRUE, the limits can be specified manually with the X_LOW and X_HIGH variables. These limits will always apply to the first Sweep in the Setup. Input Arguments: Data Sets: Input Reals or Integers: Step Number (0 is first) Output: Array of 2 points: center then radius Automatic Invocation: None conjg Complex conjugate function. Input Arguments: Data Sets: Output: IC-CAP Reference Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) 483 8 IC-CAP Functions Automatic Invocation: On Data Set Input Change Connect Switching matrix function. Used to connect or disconnect the specified port and pin. Initialize the switching matrix with SWM_init before this function. For more information regarding this function, refer to “External Matrix Driver User Functions” on page 166. Input Arguments: Reals or Integers: Output: Port Addr, Pin Number Single number with exit status. Automatic Invocation: None copy2output Copies the input data set to a measured or simulated output data set. correlation Calculates the correlation coefficient for 1 data set versus another, at a particular curve (step number). Indicates the degree to which the 2 data sets share a linear dependence. Input Arguments: Data Sets: Input 1, Input 2 Reals or Integers: Step Number (0 is first) Output: single value in the interval [-1,1] Automatic Invocation: On Data Set Input Change cos Cosine of an angle in radians. Input Arguments: Data Sets: Output: 484 Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) IC-CAP Reference 8 IC-CAP Functions Automatic Invocation: On Data Set Input Change cosh Hyperbolic cosine. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change dataset Enables you to access the dataset referred to by a string. A second argument may be specified that is a variable to receive any error string normally going to a red error box. Example: x=dataset("/npn/dc/fgummel/vb") print x[4] x=dataset("/npn/dc/fgummel/badname",errstr) if errstr<>"" then print errstr If you try to run a transform that uses the dataset() function, a warning message appears in the Status window. The message appears since you are creating a transform that depends on data in another output or transform. However, each time you run the transform, you could depend on a different set of data because the argument to dataset() is only known at run-time and could change each time you run the transform. IC-CAP can’t track this dependency as it does all other dependencies. Since it can’t track the dependency, it cannot automatically execute the transform, and it sends the warning message to the Status window. To prevent the error message from appearing, you can set up a transform that does not require automatic updating when the argument in dataset() is updated. If automatic updating is not needed, you can suppress the warning by prepending the word quiet to the dataset() argument as shown in this example: IC-CAP Reference 485 8 IC-CAP Functions x=dataset("quiet "&mydata) where mydata is the string containing the name of the data you want to access. derivative This function has been deprecated. Use the derivative2 function instead for calculating derivatives. Calculates the derivative of data set Y relative to data set X. The order can be specified. A 3-point numerical derivative formula is used, except for the endpoints, where a 2-point formula is used. Input Arguments: Data Sets: X Data, Y Data Reals or Integers: Order Output: Array of real numbers; size determined by number of points in setup Automatic Invocation: On Data Set Input Change derivative2 Calculates the derivative of data set Y relative to data set X. The order can be specified. The number of points per sweep can be specified. If number of points per sweep is set to 0, then the data is assumed to be a single curve. If number of points per sweep is set to -1, then the function will act as the same derivative function, requiring the local setup to determine the number of points per curve. If number of points is >=0 then the function may be called on any arbitrary sets of data of the same size, even from a macro. A 3-point numerical derivative formula is used, except for the endpoints, where a 2-point formula is used. Input Arguments: 486 Data Sets: X Data, Y Data Reals or Integers: Order, Points per sweep IC-CAP Reference 8 IC-CAP Functions Output: Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change DIODEDCmod_ia Given the forward diode voltage, the anode current is calculated according to the UCB diode model. Input Arguments: Data Sets: Output: Diode V Array of real numbers; size determined by inputs Automatic Invocation: None EEbjt2_ce_dc_iv Solves for the dependent terminal characteristic (current or voltage) at the input or output port given any combination of independent variables. Usage: EEbjt2_ce_dc_iv(<Port 1 Input>, <Port 2 Input>, <Port 1 Mode>, <Port 2 Mode>, <Output Port>) Input Arguments: <Port 1 Input> Current or voltage dataset for port 1 <Port 2 Input> Current or voltage dataset for port 2 <Port 1 Mode> Port 1 mode, “V” for voltage or “I” for current <Port 2 Mode> Port 2 mode, “V” for voltage or “I” for current <Output Port> Port number for output dataset (“1” or “2”) Example PEL statement: icf_gummel = EEbjt2_ce_dc_iv(vb, vc, "V", "V", "2") IC-CAP Reference 487 8 IC-CAP Functions EEbjt2_ce_ss_elements Computes the intrinsic conductance, transconductance, capacitance or transcapacitance at the input or output port of the bjt2 model. Usage: EEbjt2_ce_ss_elements(<Port 1 Input>, <Port 2 Input>, <Port 1 Mode>, <Port 2 Mode>, <Element Name>) Input Arguments: <Port 1 Input> Current or voltage dataset for port 1 <Port 2 Input> Current or voltage dataset for port 2 <Port 1 Mode> Port 1 mode, “V” for voltage or “I” for current <Port 2 Mode> Port 2 mode, “V” for voltage or “I” for current <Element Name> Desired linear conductance (“G11”, “G12”, “G21”, “G22”) or capacitance (“C11”, “C12”, “C21”, “C22”) Example PEL statement: g11 = EEbjt2_ce_ss_elements(ibase, vce, "I", "V", "G11") EEbjt2_extrinsic_ckt Embeds the effect of the extrinsic elements onto s-parameter data, or de-embeds the effect of the extrinsic elements from s-parameter data. Resistances and inductances are series elements separated by the shunt capacitances Cxbc, Cxbe and Cxce. If the input s-parameter dataset is of the same size as the frequency dataset in the referenced setup, then it is assumed that the s-parameters vary over the frequencies specified and these frequencies will be used in the embedding or de-embedding operation. In this case, the <Frequency> parameter is not used. If however, the input s-parameter dataset has a size which differs from that of the frequency dataset in the referenced 488 IC-CAP Reference 8 IC-CAP Functions setup, the data points is assumed to be at a single frequency. This frequency value is specified by the <Frequency> parameter. Usage: EEbjt2_extrinsic_ckt(<S-pars>, <de-embed ?>, <Frequency>, <Setup path>, <Lb>, <Lc>, <Le>, <Cxbc>, <Cxbe>, <Cxce>, <Rb>, <Rc>, <Re>) Input Arguments: <S-pars> S-parameter dataset name to be embedded or de-embedded <de_embed ?> Controls whether the function embeds (“no”) or de-embeds (“yes”) <Frequency> Variable containing the frequency value of the s-parameter data <Setup path> Variable containing the setup path of the frequency dataset <Lb> Parameter for base inductance <Lc> Parameter for collector inductance <Le> Parameter for emitter inductance <Cxbc> Parameter for base-collector capacitance <Cxbe> Parameter for base-emitter capacitance <Cxce> Parameter for collector-emitter capacitance <Rb> Parameter for base resistance <Rc> Parameter for collector resistance <Re> Parameter for emitter resistance Example PEL statement: s_mod = EEbjt2_extrinsic_ckt(s_mod_int, "no", FREQ_CAP, PATH, Lb, Lc, Le, C1, C2, C3, Rb, Rc, Re) IC-CAP Reference 489 8 IC-CAP Functions EEbjt2_Is_N Extracts saturation current and ideality factor for diodes or Gummel-Poon type BJTs. For extraction of Gummel-Poon collector currents, the value of the early voltage can be input. For standard diodes or Gummel-Poon base currents, a large value for <Fwd/Rev Va> should be used so as to remove this effect from the extraction. Usage: EEbjt2_Is_N(<Vj>, <Ij>, <Fwd/Rev Is>, <Fwd/Rev N>, <Fwd/Rev Va>, <Vmin>, <Vmax>) Input Arguments: <Vj> Input dataset containing voltage data <Ij> Input dataset containing current data <Fwd/Rev Is> Model parameter to be assigned the extracted Is value <Fwd/Rev N> Model parameter to be assigned the extracted N value <Fwd/Rev Va> Parameter or variable that contains the early voltage value <Vmin> Variable that contains the minimum voltage value of data to be used in the extraction <Vmax> Variable that contains the maximum voltage value of data to be used in the extraction EEbjt2_mdl file. Saves model parameters to a Series IV formatted Usage: EEbjt2_mdl(<Mdl File Name>) Input Arguments: <Mdl File Name> 490 The file name that will contain the “MDIF” formatted data IC-CAP Reference 8 IC-CAP Functions Example PEL statement: dummy_result = EEbjt2_mdl("generic_bjt.txt") EEfet3_ckt Returns the value of the selected linear equivalent circuit element. Usage: EEfet3_ckt(Vg, Vd, <ckt_par_name>) Vg and Vd are data sets that contain the bias conditions where the linear equivalent circuit is computed. The desired equivalent circuit element name is supplied in the third parameter as a text string. Equivalent circuit element names are: cgs, cgd, cds, ris, rid, gm and gds. The conductances gma and gds are AC values and should be compared with those extracted from S-parameter data. PEL example that returns the computed requested element value. Cgs_data = EEfet3_ckt(Vg, Vd, “cgs”) Cgd_data = EEfet3_ckt(Vg, Vd, “cgd”) Cds_data = EEfet3_ckt(Vg, Vd, “cds”) Ris_data = EEfet3_ckt(Vg, Vd, “ris”) Rid_data = EEfet3_ckt(Vg, Vd, “rid”) Gm_data = EEfet3_ckt(Vg, Vd, “gm”) Tau_data = EEfet3_ckt(Vg, Vd, “tau”) Gds_data = EEfet3_ckt(Vg, Vd, “gds”) EEfet3_cs_dc_iv response. Usage: Computes the model’s common source bias EEfet3_cs_dc_iv (Data_port_1, Data_port_2, Mode_port_1, Mode_port_2, response_port) This function returns a data set containing the bias response at the port specified by the fifth parameter (response_port). The first 2 parameters are data sets that contain the bias conditions forced at the respective ports. The next 2 parameters are strings that indicate whether current “I” or voltage “V” is being forced. The fifth parameter is an index that specifies which port’s (1 or 2) bias response will be contained in the data set returned. PEL Example: IC-CAP Reference 491 8 IC-CAP Functions Ids Igs Vds Vgs = = = = EEfet3_cs_dc_iv(Vg, EEfet3_cs_dc_iv(Vg, EEfet3_cs_dc_iv(Vg, EEfet3_cs_dc_iv(Ig, Vd, Vd, Id, Vd, “V”, “V”, “V”, “I”, “V”, “V”, “I”, “V”, 2) 1) 2) 1) EEfet3_lecp Returns the requested linear equivalent circuit parameter value extracted from measured S-parameter data. Usage: EEfet3_lecp (Vg, Vd, <ckt_par_name>) This function is used in conjunction with EEfet3_s2ckt() to extract and display linear equivalent circuit parameters from measured S-parameter data. EEfet3_s2ckt does the extraction of linear equivalent circuit parameters from measured S-parameters and stores them internally to ICCAP. EEfet3_lecp retrieves the linear equivalent circuit parameter values. The specific element returned is requested by the string in the third field of the function call. Valid equivalent circuit element names are cgs, cdg, cds, ris, rid, gm, and gds. An error condition will be flagged if a bias condition is specified in EEfet3_lecp that was not in the data stored by a previous call to EEfet3_s2ckt. PEL example that returns the computed requested element value. Cgs_data = EEfet3_lecp(Vg, Vd, “cgs”) Cgd_data = EEfet3_lecp(Vg, Vd, “cgd”) Cds_data = EEfet3_lecp(Vg, Vd, “cds”) Ris_data = EEfet3_lecp(Vg, Vd, “ris”) Rid_data = EEfet3_lecp(Vg, Vd, “rid”) Gm_data = EEfet3_lecp(Vg, Vd, “gm”) Tau_data = EEfet3_lecp(Vg, Vd, “tau”) Gds_data = EEfet3_lecp(Vg, Vd, “gds”) EEfet3_mdl file. Saves model parameters to a Series IV formatted Usage: EEfet3_mdl(“file_name.txt”) This function returns no data or result code. Upon execution, an “MDIF” formatted data file containing the existing set of model parameters is written to the current working directory. PEL example that saves a data file that can be read by Series IV simulators. dummy_result = EEfet3_mdl(“MRF_901.par”) 492 IC-CAP Reference 8 IC-CAP Functions EEfet3_model_name A utility function that copies the model name into the variable passed in as the argument. Usage: EEfet3_model_name(variable): Since PEL only has direct access to the relative path name of local transforms and variables, this function parses out the model’s “root” name and copies it as a string to the variable specified as the argument. After execution, the argument variable will contain a string containing the model name. Note: This function can be used with any model file; it is not restricted to EEfet3. PEL example that copies the model name into the variable “MyName.” dummy_result = EEfet3_modle_name(MyName) EEfet3_package A utility function that can either “embed or de-embed” the effects of a package from S-parameter data provided as input. The resultant set of S-parameters is returned as a data set with the same frequency and bias conditions as the input S-parameter data set. Usage: Efet3_package(S_parameter_data_set, embed/deembed_flag, Rg, Rd, Rs, Lg, Ld, Ls, Cxgs, Cxds, Cxgd, Z0_gate, length, effective_velocity, Z0_drain, length, effective_velocity, Z0_source, length, effective_velocity) This function either embeds or de-embeds the S-parameters provided as input. The package topology used here is a very simple series shunt representation of a component’s package. The elements represented in the argument list work from the intrinsic device to the outside wall of the package. The bond wire and contact resistances are represented by the arguments: Rg, Rd, Rs, Lg, Ld, Ls. The arguments Rg and Lg are the input port’s (gate) series inductance and resistance. IC-CAP Reference 493 8 IC-CAP Functions Rs and Ls are the common lead’s inductance and resistance. Rd and Ld are the output lead’s contact resistance and bond inductance. Three shunt capacitances are next and represent stray capacitance of the package. Cxgs is connected from the outside of the series impedances from gate-to-source nodes just described. Cxgd is connected from the outside of the series impedance from the gate to drain nodes just described. Cxds is connected from the outside of the series impedance from drain to source as just described. The final series elements of the package model are transmission lines. Z0_gate, length and effective velocity describe the input transmission line connected at the gate terminal of the package to the modified gate node just outlined above. Z0_drain, length and effective velocity describe the output transmission line connected at the drain terminal of the package to the modified drain node just outlined above. There is no common lead transmission line in this package model. Because you must use the same values for each of these arguments in many places in the IC-CAP model file, this function is constructed to use model variables as arguments. First: create 1 variable, in the model variable table, for each of the function arguments (thus making it global to the entire model in use). Then use the variables each time the function is used. In this manner you can ensure that the same values are being used to embed the model as were extracted from measurements. The first argument is the data set upon which the function will operate. The second argument is a text string or variable containing a text string “embed” or “deembed.” The function will operate on the input data set as indicated by the second argument. PEL example that de-embeds a package from a measurement: s_intrinsic = EEfet3_package(measured_s, “deembed”, Rin, Rout, Rcommon, Lin, Lout, Lcommon, Cx_InToCommon, CxInToOut, CxOutToCommon, Z0_in, L_in, Evel, Z0_out, L_out, Evel) 494 IC-CAP Reference 8 IC-CAP Functions EEfet3_ResCheck Verifies and adjusts variables that are used to control swept measurements. Usage: EEfet3_ResCheck(Start, Stop, Number_of_Points, resolution) Each argument of EEfet3_ResCheck is a model variable. These variables are used in DUT/Setups to control measurements. Each type of measurement equipment has resolution limitations. Start, stop, and step size must be within the equipment’s resolution before a measurement can be successful. For example, the HP/Agilent 4142 cannot resolve voltages with greater accuracy than 1 millivolt. There are several conditions that must be accounted for to guarantee proper control of the measurement equipment in use. The following sequence of steps should be followed to ensure that equipment limitations are not violated. First, the start value is rounded to a “resolvable” measurement value as specified by the argument “resolution.” The end point is then rounded. The step size is then calculated [step = (stop-start) / points] and rounded to the proper resolution. The end point is then re-computed and adjusted to exactly fit the number of steps requested [stop = start + step * points]. Because of this adjustment, you may see the “stop” point change after this function is called. The last case is where the step size is below the minimum resolution. In this case, the step size is set to the minimum resolution and the starting point is placed that number of points away and the number of points is adjusted. The “resolution” argument is the only value that will not change upon execution of this function. PEL Example: dummy_result = EEfet3ResCheck(Vstart, Vstop, NumPoints, v_res) EEfet3_Rs_delta_m Returns a data set that contains the change in measured Vgs when very specific bias currents are forced at the gate and drain terminals.* IC-CAP Reference 495 8 IC-CAP Functions Usage: EEfet3_Rs_delta_m (Ig, Id, Vg, Vd) Vgs is measured at 2 values of Ids while Igs is swept. Ids is chosen such that Vds is on the order of 2 tenths of a volt (the FET must be in the region of linear operation). Igs is fifty to one hundred times smaller than Ids. The change in Vgs is then proportional to Rs. The expressions for the change in Vgs are a complicated function of Rs. Since these expressions cannot be solved for Rs directly, optimization is used to find a value of Rs that makes measured and simulated values of delta Vgs match. PEL Example: Delta_Vgs = EEfet3_Rs_delta_m(Ig,Id,Vg,Vd) *This method of extracting Rs is based on: “New Method to Measure the Source and Drain Resistance of the GaAs MESFET” Long Yang and Steven Long, IEEE Electron Device Letters Vol EDL-7 No. 2, February 1986. EEfet3_Rs_delta_s Returns a data set that contains the change in simulated Vgs given the same bias conditions specified when EEfet3_Rs_delta_m was extracted.* Usage: EEfet3_Rs_delta_s (Ig, Id, Vg, Vd) This simulation function for delta Vgs uses EEfet3 model parameters Rs and N, the gate diode's emission coefficient. Since these expressions cannot be solved for Rs directly, optimization is used to find a value of Rs that makes measured and simulated values of delta Vgs match. Note that N must be accurately determined before this method of extracting Rs can be successful. PEL Example: Delta_Vgs_Simulated = EEfet3_Rs_delta_s(Ig,Id,Vg,Vd) *This method of extracting Rs is based on: “New Method to Measure the Source and Drain Resistance of the GaAs MESFET” Long Yang and Steven Long, IEEE Electron Device Letters Vol EDL-7 No. 2, February 1986. EEfet3_s2ckt Converts S-parameters to a table of linear equivalent circuit element values. 496 IC-CAP Reference 8 IC-CAP Functions Usage: EEfet3_ s2ckt (S_parameter, Frequency, Vg, Vd, Conductance_Frequency, Capacitance_Frequency, Delay_Frequency) This function returns a data set containing S-parameters computed from a linear equivalent circuit model. Element values for the linear equivalent circuit model are extracted from the input S-parameter data set. The table of element values for the linear equivalent circuit model are stored internally to IC-CAP and can be accessed using EEfet3_lecp(). In this manner, you can both examine how well the linear equivalent circuit model fits measured S-parameter data over frequency and see how the element values behave over bias. The reason for this 2-step process is that each IC-CAP function can only return a data set of the same type and dimension as the input data set. In the first step (EEfet3_s2ckt) S-parameters are input (over frequency and bias) and a computed set of S-parameters is returned (over frequency and bias). The values of the linear equivalent circuit model extracted are saved in a special internal structure. The second step is to create a DUT/Setup that only sweeps bias, not frequency. The function EEfet3_lecp is then used to access the internal data structure and return the linear equivalent circuit element value requested. The output is then of the same type and array size as the bias range. Element values can then be plotted against bias. PEL Example: computed_s_parameters = EEfet3_s2ckt(s_data, freq, Vg, Vd, FG, FC, Ftau) and in another DUT/Setup the next function recalls Cgs saved Cgs_data = EEfet3_lecp(Vg, Vd, “cgs”) EEfet3_spars Computes modeled S-parameters based on the current set of model parameters. IC-CAP Reference 497 8 IC-CAP Functions Usage: EEfet3_ spars (measured_S_parameter_data_set, Frequency, Vg, Vd) Computes the bias-dependent model's intrinsic S-parameters at each bias and frequency specified. The S-parameter data set used as an input is only for the purpose of defining the type and quantity of data this function will supply as an output. Typical use would be comparing the computed set of S-parameters to a set of measured data and using that measured data as the S-parameter data set supplied as input to this function PEL Example: computed_s_parameters = EEfet3_spars(s_data, freq, Vg, Vd) EEmos1_ckt This function is obsolete. Returns the value of the selected linear equivalent circuit element Usage: EEmos1_ckt(Vg, Vd, <ckt_par_name>) Vg and Vd are data sets that contain the bias conditions where the linear equivalent circuit is computed. The desired equivalent circuit element name is supplied in the third parameter as a text string. Equivalent circuit element names are: cgs, cgd, cds, ris, rid, gm and gds. The conductances gma and gds are AC values and should be compared with those extracted from S-parameter data. PEL example that returns the computed requested element value. Cgs_data = EEmos1_ckt(Vg, Vd, “cgs”) Cgd_data = EEmos1_ckt(Vg, Vd, “cgd”) Cds_data = EEmos1_ckt(Vg, Vd, “cds”) Ris_data = EEmos1_ckt(Vg, Vd, “ris”) Rid_data = EEmos1_ckt(Vg, Vd, “rid”) Gm_data = EEmos1_ckt(Vg, Vd, “gm”) Tau_data = EEmos1_ckt(Vg, Vd, “tau”) Gds_data = EEmos1_ckt(Vg, Vd, “gds”) EEmos1_cs_dc_iv This function is obsolete. Computes the model’s common source bias response. 498 IC-CAP Reference 8 IC-CAP Functions Usage: EEmos1_cs_dc_iv (Data_port_1, Data_port_2, Mode_port_1, Mode_port_2, response_port) This function returns a data set containing the bias response at the port specified by the fifth parameter (response_port). The first 2 parameters are data sets that contain the bias conditions forced at the respective ports. The next 2 parameters are strings that indicate whether current “I” or voltage “V” is being forced. The fifth parameter is an index that specifies which port’s (1 or 2) bias response will be contained in the data set returned. PEL Example: Ids Igs Vds Vgs = = = = EEmos1_cs_dc_iv(Vg, EEmos1_cs_dc_iv(Vg, EEmos1_cs_dc_iv(Vg, EEmos1_cs_dc_iv(Ig, EEmos1_lecp Vd, Vd, Id, Vd, “V”, “V”, “V”, “I”, “V”, “V”, “I”, “V”, 2) 1) 2) 1) This function is obsolete. Returns the requested linear equivalent circuit parameter value extracted from measured S-parameter data. Usage: EEmos1_lecp (Vg, Vd, <ckt_par_name>) This function is used in conjunction with EEmos1_s2ckt() to extract and display linear equivalent circuit parameters from measured S-parameter data. EEmos1_s2ckt does the extraction of linear equivalent circuit parameters from measured S-parameters and stores them internally to ICCAP. EEmos1_lecp retrieves the linear equivalent circuit parameter values. The specific element returned is requested by the string in the third field of the function call. Valid equivalent circuit element names are cgs, cdg, cds, ris, rid, gm, and gds. An error condition will be flagged if a bias condition is specified in EEmos1_lecp that was not in the data stored by a previous call to EEmos1_s2ckt. PEL example that returns the computed requested element value. Cgs_data = EEmos1_lecp(Vg, Vd, “cgs”) Cgd_data = EEmos1_lecp(Vg, Vd, “cgd”) Cds_data = EEmos1_lecp(Vg, Vd, “cds”) IC-CAP Reference 499 8 IC-CAP Functions Ris_data = EEmos1_lecp(Vg, Vd, “ris”) Rid_data = EEmos1_lecp(Vg, Vd, “rid”) Gm_data = EEmos1_lecp(Vg, Vd, “gm”) Tau_data = EEmos1_lecp(Vg, Vd, “tau”) Gds_data = EEmos1_lecp(Vg, Vd, “gds”) EEmos1_mdl This function is obsolete. Saves model parameters to a Series IV formatted file. Usage: EEmos1_mdl(“file_name.txt”) This function returns no data or result code. Upon execution, an “MDIF” formatted data file containing the existing set of model parameters is written to the current working directory. PEL example that saves a data file that can be read by Series IV simulators. dummy_result = EEmos1_mdl(“MRF_901.par”) EEmos1_model_name This function is obsolete. A utility function that copies the model name into the variable passed in as the argument. Usage: EEmos1_model_name(variable): Since PEL only has direct access to the relative path name of local transforms and variables, this function parses out the model’s “root” name and copies it as a string to the variable specified as the argument. After execution, the argument variable will contain a string containing the model name. Note: This function can be used with any model file; it is not restricted to EEmos1. PEL example that copies the model name into the variable “MyName.” dummy_result = EEmos1_modle_name(MyName) 500 IC-CAP Reference 8 IC-CAP Functions EEmos1_package This function is obsolete. A utility function that can either “embed or de-embed” the effects of a package from S-parameter data provided as input. The resultant set of S-parameters is returned as a data set with the same frequency and bias conditions as the input S-parameter data set. Usage: Efet3_package(S_parameter_data_set, embed/deembed_flag, Rg, Rd, Rs, Lg, Ld, Ls, Cxgs, Cxds, Cxgd, Z0_gate, length, effective_velocity, Z0_drain, length, effective_velocity) This function either embeds or de-embeds the S-parameters provided as input. The package topology used here is a very simple series shunt representation of a component’s package. The elements represented in the argument list work from the intrinsic device to the outside wall of the package. The bond wire and contact resistances are represented by the arguments: Rg, Rd, Rs, Lg, Ld, Ls. The arguments Rg and Lg are the input port’s (gate) series inductance and resistance. Rs and Ls are the common lead’s inductance and resistance. Rd and Ld are the output lead’s contact resistance and bond inductance. Three shunt capacitances are next and represent stray capacitance of the package. Cxgs is connected from the outside of the series impedances from gate-to-source nodes just described. Cxgd is connected from the outside of the series impedance from the gate to drain nodes just described. Cxds is connected from the outside of the series impedance from drain to source as just described. The final series elements of the package model are transmission lines. Z0_gate, length and effective velocity describe the input transmission line connected at the gate terminal of the package to the modified gate node just outlined above. Z0_drain, length and effective velocity describe the output transmission line connected at the drain IC-CAP Reference 501 8 IC-CAP Functions terminal of the package to the modified drain node just outlined above. There is no common lead transmission line in this package model. Because you must use the same values for each of these arguments in many places in the IC-CAP model file, this function is constructed to use model variables as arguments. First: create 1 variable, in the model variable table, for each of the function arguments (thus making it global to the entire model in use). Then use the variables each time the function is used. In this manner you can ensure that the same values are being used to embed the model as were extracted from measurements. The first argument is the data set upon which the function will operate. The second argument is a text string or variable containing a text string “embed” or “deembed.” The function will operate on the input data set as indicated by the second argument. PEL example that de-embeds a package from a measurement: s_intrinsic = EEmos1_package(measured_s, “deembed”, Rin, Rout, Rcommon, Lin, Lout, Lcommon, Cx_InToCommon, CxInToOut, CxOutToCommon, Z0_in, L_in, Evel, Z0_out, L_out, Evel) EEmos1_ResCheck This function is obsolete. Verifies and adjusts variables that are used to control swept measurements. Usage: EEmos1_ResCheck(Start, Stop, Number_of_Points, resolution) Each argument of EEmos1_ResCheck is a model variable. These variables are used in DUT/Setups to control measurements. Each type of measurement equipment has resolution limitations. Start, stop, and step size must be within the equipment’s resolution before a measurement can be successful. For example, the HP/Agilent 4142 cannot resolve voltages with greater accuracy than 1 millivolt. There 502 IC-CAP Reference 8 IC-CAP Functions are several conditions that must be accounted for to guarantee proper control of the measurement equipment in use. The following sequence of steps should be followed to ensure that equipment limitations are not violated. First, the start value is rounded to a “resolvable” measurement value as specified by the argument “resolution.” The end point is then rounded. The step size is then calculated [step = (stop-start) / points] and rounded to the proper resolution. The end point is then re-computed and adjusted to exactly fit the number of steps requested [stop = start + step * points]. Because of this adjustment, you may see the “stop” point change after this function is called. The last case is where the step size is below the minimum resolution. In this case, the step size is set to the minimum resolution and the starting point is placed that number of points away and the number of points is adjusted. The “resolution” argument is the only value that will not change upon execution of this function. PEL Example: dummy_result = EEmos1ResCheck(Vstart, Vstop, NumPoints, v_res) IC-CAP Reference 503 8 IC-CAP Functions EEmos1_s2ckt This function is obsolete. Converts S-parameters to a table of linear equivalent circuit element values. Usage: EEmos1_ s2ckt (S_parameter, Frequency, Vg, Vd, Conductance_Frequency, Capacitance_Frequency, Delay_Frequency) This function returns a data set containing S-parameters computed from a linear equivalent circuit model. Element values for the linear equivalent circuit model are extracted from the input S-parameter data set. The table of element values for the linear equivalent circuit model are stored internally to IC-CAP and can be accessed using EEmos1_lecp(). In this manner, you can both examine how well the linear equivalent circuit model fits measured S-parameter data over frequency and see how the element values behave over bias. The reason for this 2-step process is that each IC-CAP function can only return a data set of the same type and dimension as the input data set. In the first step (EEmos1_s2ckt) S-parameters are input (over frequency and bias) and a computed set of S-parameters is returned (over frequency and bias). The values of the linear equivalent circuit model extracted are saved in a special internal structure. The second step is to create a DUT/Setup that only sweeps bias, not frequency. The function EEmos1_lecp is then used to access the internal data structure and return the linear equivalent circuit element value requested. The output is then of the same type and array size as the bias range. Element values can then be plotted against bias. PEL Example: computed_s_parameters = EEmos1_s2ckt(s_data, freq, Vg, Vd, FG, FC, Ftau) and in another DUT/Setup the next function recalls Cgs saved Cgs_data = EEmos1_lecp(Vg, Vd, “cgs”) 504 IC-CAP Reference 8 IC-CAP Functions EEmos1_spars This function is obsolete. Computes modeled S-parameters based on the current set of model parameters. Usage: EEmos1_ spars (measured_S_parameter_data_set, Frequency, Vg, Vd) Computes the bias-dependent model's intrinsic S-parameters at each bias and frequency specified. The S-parameter data set used as an input is only for the purpose of defining the type and quantity of data this function will supply as an output. Typical use would be comparing the computed set of S-parameters to a set of measured data and using that measured data as the S-parameter data set supplied as input to this function PEL Example: computed_s_parameters = EEmos1_spars(s_data, freq, Vg, Vd) equation Uses the Parameter Extraction Language interpreter to evaluate an expression and produce a data set. This function is rarely needed, since arithmetic expressions are directly accepted in plot definitions and in the input fields to all of the other functions listed here. Input Arguments: Data Sets: Output: Input (must be IC-CAP recognized data names and not strings in quote marks) Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change IC-CAP Reference 505 8 IC-CAP Functions exp The arithmetic exponential function; the inverse of the function log. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change fit_line Calculates and returns a least-squares fitted line. Accepts an X data set followed by a Y data set. If the Y data has multiple curves (steps), fit_line yields multiple fitted lines, 1 for each curve. Use linfit for the slope and intercept, rather than a plottable data set. If the OVERRIDE_LIMITS variable is TRUE, the limits can be specified manually with the X_LOW and X_HIGH variables, which can be set from the Plot menu. Note: the imaginary part of the input data sets is disregarded. Input Arguments: Data Sets: Output: X Data, Y Data Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change floor Returns the largest integer not greater than the given value. Input Arguments: Reals: Output: Number Single real Automatic Invocation: On Input Change 506 IC-CAP Reference 8 IC-CAP Functions FNPort Switching matrix function. Returns the port address for the specified port number. The port address is used by the Connect function. For more information regarding this function, refer to “External Matrix Driver User Functions” on page 166 for more information. Input Arguments: Reals or Integers: Output: Port Number Single number with exit status Automatic Invocation: None GAASAC_calc_rc Calculates capacitance and AC parameters from S-parameter measurements. Requires the following setup: S versus Freq, with Vds and Vgs = typical operating values If S-parameter data from the parasitic_r_l setup is supplied as an input, this data is converted to Z-parameters and subtracted before calculating the intrinsic values for Zds. This function can be used to plot the data that is used for extraction in the GAASAC_r_and_c function. Output is a complex array that is controlled by the Mode input. Valid modes are: GS - RGS in real array, CGS in complex array GD - RGD, CGD DS - RDS, CDS A5 - TAU, A5 G0 - CGS0, CGD0 GM - YGM Input Arguments: Data Sets: IC-CAP Reference F Swp, S Parameters, VG, VD, S Pars RL Strings/Pars/Vars: Mode Output: Array of complex numbers; size determined by inputs 507 8 IC-CAP Functions Automatic Invocation: On Data Set Input Change GAASAC_calc_rl Calculates inductances and resistances from an S-parameter measurement made at a single bias. Requires the following setup: S versus Freq, with high Vgs and Vds = 0 Determine the bias point by measuring the device with the gate strongly forward biased. Typically, Vd = Vs = 0 with Vg positive. Ig should be more than 100 mA/mm, with Id approximately equal to Ig/2 at a typical operating frequency. This function can be used to plot the resistance and inductance data that is used for extraction in the GAASAC_l_and_r function. Output is in the form of Z data for the G, D, or S Node. If IG is specified as an input, the dynamic resistance is subtracted during the calculation of RG. If Deembed is TRUE, the bond inductance and pad capacitance are used in the calculation of resistance and inductance. Input Arguments: Data Sets: F Swp, S Parameters, IG Strings/Pars/Vars: Deembed, Node Output: Array of complex numbers; size determined by inputs Automatic Invocation: On Data Set Input Change GAASAC_cur Standard extraction for the Curtice GaAs model. Extracts the capacitance and AC parameters from S-parameter measurements. Requires the following setup: S versus Freq, with Vds and Vgs = typical operating values If the variables LINEAR_CGS, LINEAR_CGD, or CONSTANT_TAU are true, CGS, CGD, or TAU are extracted, respectively. Depending on the device, optimization may be required to tune the parameter values. 508 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Data Sets: Frequency, Gate V, Drain V, S Par Output Output: None Extracts: LD, LG, LS, RD, RG, RS Automatic Invocation: By Extract menu function GAASAC_l_and_r Standard extraction for the UCB and Curtice GaAs models. Extracts inductances and resistances from an S-parameter measurement made at a single bias. Requires the following setup: S versus Freq, with high Vgs and Vds = 0 Determine the bias point by measuring the device with the gate strongly forward biased. Typically, Vd = Vs = 0 with Vg positive. Ig should be more than 100 mA/mm, with Id approximately equal to Ig/2 at a typical operating frequency. The frequency can be either constant or swept. The extracted parameter values are averaged over a frequency range specified by the X_LOW and X_HIGH variables, which can be set from the Plot menu. If these variables are not set, the entire frequency range is used. If IG is specified as an input, the dynamic resistance is subtracted during the calculation of RG. If Deembed is true, the bond inductance and pad capacitance are used in the calculation of resistance and inductance. Optimization can be used to tune the parameter values, but should not typically be required. Input Arguments: Data Sets: Const F Swp, S Parameters, IG Strings/Pars/Vars: Deembed Output: None Extracts: LD, LG, LS, RD, RG, RS Automatic Invocation: By Extract menu function IC-CAP Reference 509 8 IC-CAP Functions GAASAC_r_and_c Alternate AC extraction for the UCB and Curtice GaAs models. Extracts the capacitance and AC parameters from S-parameter measurements. Requires the following Setup: S versus Freq, with Vds and Vgs = typical operating values. The extracted parameter values are averaged over a frequency range specified by the X_LOW and X_HIGH variables, which can be set from the Plot menu. If these variables are not set, the entire frequency range is used. For the Curtice model, if the variables LINEAR_CGS, LINEAR_CGD, or CONSTANT_TAU are TRUE, CGS, CGD, or TAU are extracted, respectively. Also for the Curtice Model, the parameters CGDN, RGDN, and RDS are extracted if they are defined as either parameters or variables. If CGDN is defined, then both CGD and CGDO are set to 0. For the UCB model, CDS is extracted if it is defined as a parameter or variable. For both models, YGM_MAG and YGM_PHASE are extracted if they are defined as variables. If S-parameter data from the parasitic_r_l Setup is supplied as an input, this data is converted to Z- parameters and subtracted before calculating the intrinsic values for Zds. Depending on the device, optimization may be required to tune the parameter values. Input Arguments: Data Sets: F Swp, S Parameters, VG, VD, S Pars RL Output: None Extracts: Curtice: CGSO, CGDO, CDS, RIN, A5 Optionally - CGS, CGD, TAU, CGDN, RGDN, RDS, YGM_MAG, YGM_PHASE UCB: CGS, CGD Optionally - CDS, YGM_MAG, YGM_PHASE 510 IC-CAP Reference 8 IC-CAP Functions Automatic Invocation: By Extract menu function GAASCV_cgs_cgd Standard extraction for the UCB GaAs model. Extracts junction capacitances from S-parameter data measured with VGS and VDS held constant. Requires the following Setup: S versus Freq, with Vds and Vgs = typical operating values. Optimization can be used to tune the parameter values, but should not typically be required. Input Arguments: Data Sets: Freq Sweep, Const Vgs Sw, Const Vds Sw, S Par Output Output: None Extracts: CGD, CGS Automatic Invocation: By Extract menu function GAASDC_cur1 Standard extraction for the Curtice GaAs model. Extracts the threshold parameters from DC measurements. Requires the following Setup: Id versus Vgs, with high Vds. Depending on the device, optimization may be required to tune the parameter values. The optimization should not include too much of the pinch-off region. Input Arguments: Data Sets: Gate V, Drain V, Drain I Output: None Extracts: Level 1: VTO Level 2: A0, A1, A2, A3 Automatic Invocation: By Extract menu function IC-CAP Reference 511 8 IC-CAP Functions GAASDC_cur2 Standard extraction for the Curtice GaAs model. Extracts the linear and saturation parameters from DC measurements. Requires the following Setup: Id versus Vds versus Vgs. Optimization is typically required to tune the parameter values. Input Arguments: Data Sets: Drain V, Gate V, Drain I Output: None Extracts: Level 1: BETA, LAMBDA, ALPHA Level 2: BETA, GAMMA Automatic Invocation: By Extract menu function GAASDC_lev1 Standard extraction for the UCB and Curtice GaAs models. Extracts diode (and optionally resistance) parameters from DC measurements. Requires the following Setups: Ig versus Vg, with Vd = 0 and S floating. Ig versus Vg, with Vd less than 50 mV. Ig versus Vg, with Vs = 0 and D floating. The Vg limits for the diode parameter extraction are automatically selected. If the OVERRIDE_LIMITS variable is TRUE, these limits can be specified manually with the X_LOW and X_HIGH variables, which can be set from the Plot menu. Omit the resistance extraction (useful if resistances were extracted using GAASAC_l_and_r) by specifying only the first Setup of the 3 listed above. Optimization can be used to tune the parameter values, but should not typically be required. 512 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Data Sets: VG (S Flt), IG (S Flt), VG (low Vds), VD (low Vds), ID (low Vds), VG (D Flt), IG (D Flt) Output: None Extracts: UCB: PB, IS, XN Curtice: VBI, IS, N Optionally: RD, RS Automatic Invocation: By Extract menu function GAASDC_lev2 Standard extraction for the UCB GaAs model. Extracts the drain current parameters from DC measurements. Requires the following setups: Id versus Vd versus Vg Id versus Vg, with Vd = constant Depending on the device, the following parameters may require optimization: VTO, BETA, ALPHA, LAMBDA over Id versus Vd. VTO, BETA, B over Id versus Vg. Input Arguments: Data Sets: IdVg VG, IdVg VD, IdVg ID, IdVg IG, IdVd VD, IdVd VG, IdVd ID, IdVd IG Output: None Extracts: VTO, BETA, ALPHA, LAMBDA, B Automatic Invocation: By Extract menu function GAASDC_rd DC RD extraction for the UCB and Curtice GaAs models. Requires the following setup: Vsd versus Ig, with the source floating and the drain grounded This extraction can be used to extract RD when AC measurements are not available, or to verify the value extracted from the GAASAC_l_and_r function. IC-CAP Reference 513 8 IC-CAP Functions Input Arguments: Data Sets: IG, VS Output: None Extracts: RD Automatic Invocation: By Extract menu function GAASDC_rs DC RS extraction for the UCB and Curtice GaAs models. Requires the following setup: Vds versus Ig, with the drain floating and the source grounded This extraction can be used to extract RS when AC measurements are not available, or to verify the value extracted from the GAASAC_l_and_r function. Input Arguments: Data Sets: IG, VD Output: None Extracts: RS Automatic Invocation: By Extract menu function GAASmod_cgd Given the drain, gate, and source voltages, calculates gate-drain capacitance according to the UCB GaAs model. Input Arguments: Data Sets: Output: Drain V, Gate V, Source V Array of real numbers; size determined by inputs Automatic Invocation: None GAASmod_cgs Given the drain, gate, and source voltages, calculates gate-source capacitance according to the UCB GaAs model. 514 IC-CAP Reference IC-CAP Functions 8 Input Arguments: Data Sets: Output: Drain V, Gate V, Source V Array of real numbers; size determined by inputs Automatic Invocation: None GAASmod_id Given the drain, gate, and source voltages, calculates drain current according to the UCB GaAs model. Input Arguments: Data Sets: Output: Drain V, Gate V, Source V Array of real numbers; size determined by inputs Automatic Invocation: None GAASmod_ig Given the drain, gate, and source voltages, calculates gate current according to the UCB GaAs model. Input Arguments: Data Sets: Output: Drain V, Gate V, Source V Array of real numbers; size determined by inputs Automatic Invocation: None H11corr Produces an input impedance curve corrected for the effects of base to collector feedthrough impedance. The corrected output is used as input to the RBBcalc function described below. Input Arguments: Data Sets: Output: IC-CAP Reference FREQ, VB, VC, H11 Array of complex numbers; size determined by inputs 515 8 IC-CAP Functions Automatic Invocation: On Data Set Input Change HFBJT_linear_elem_extr time. HFBJT_linear_ssmod_sim time. No documentation available at this No documentation available at this HFMOD_get_bias_size Finds the number of bias points in a data set. For sweeps that don't include a frequency sweep, this is the same as the total number of points in the dataset. Usage: HFMOD_get_bias_size(<Dataset name>, <Setup path>) Input Arguments: <Dataset name> Name if dataset to be checked <Setup path> Variable containing path of dataset Example PEL statement: data_size = HFMOD_get_bias_size("s", PATH) HFMOD_get_freq_index Finds the array index of the frequency point nearest to (>=) the specified frequency value. Usage: HFMOD_get_freq_index(<Setup path>, <Freq value>) Input Arguments: <Setup path> Variable containing path of dataset <Freq value> Variable containing frequency value Example PEL statement: index_freq_cap = HFMOD_get_freq_index(PATH, FREQ_CAP) 516 IC-CAP Reference 8 IC-CAP Functions HFMOD_get_freq_value an index value. Usage: Finds a specific frequency value, given HFMOD_get_freq_value(<Setup path>, <Freq index>) Input Arguments: <Setup path> Variable containing path of dataset <Freq index> Variable containing frequency index Example PEL statement: freq_cap = HFMOD_get_freq_value(PATH, index_freq_cap) HFMOD_remove_freq_dbl Reduces a matrix of bias and frequency dependent data (type double) down to a bias dependent matrix only. Usage: HFMOD_remove_freq_dbl(<Input double>, <Dataset name>, <Setup path>) Input Arguments: <Input double> Dummy input matrix (must be dimensioned to desired size of output matrix) <Dataset name> Name of dataset to be reduced <Setup path> Variable containing path of dataset to be reduced HFMOD_remove_freq_mat Reduces a complex matrix of bias and frequency dependent 2-port parameters down to a bias dependent matrix only. Usage: HFMOD_remove_freq_mat(<Input matrix>, <Freq Index>, <Dataset name>, <Setup path>) Input Arguments: IC-CAP Reference 517 8 IC-CAP Functions <Input matrix> Dummy input matrix (must be dimensioned to desired size of output matrix) <Freq Index> Variable containing frequency index of desired frequency point <Dataset name> Name of dataset to be reduced <Setup path> Variable containing path of dataset to be reduced Example PEL statement: s_cond = HFMOD_remove_freq_mat(dummy_mat, INDEX_FREQ_CAP, "s", PATH) HFMOS3_capas This function is obsolete. Extracts the overlap capacitances CGSO and CGDO and the oxide thickness TOX from the capacitance data. Extracts: HFMOS3_lin_large CGDO, CGSO, TOX This function is obsolete. Standard extraction for the HF MOS Level 3 model. Extracts classical Level 3 parameters, using Id versus Vg data from a large device. Extracts: HFMOS3_lin_narrow VTO, NSUB, UO, THETA, DELTA, RDS This function is obsolete. Standard extraction for the HF MOS Level 3 model. Extracts Level 3 width parameters, using Id versus Vg data from a narrow device. Extracts: 518 WD, DELTA IC-CAP Reference IC-CAP Functions HFMOS3_lin_short 8 This function is obsolete. Standard extraction for the HF MOS Level 3 model. Extracts Level 3 length effect parameters, using Id versus Vg data from a short device. Extracts: XJ, LD, RDS HFMOS3_modcap This function is obsolete. Calculates the Gate-Source and Gate-Drain capacitances according to the Meyer model or Bulk-Drain junction capacitance according to the UCB MOS model. HFMOS3_paras This function is obsolete. Extracts gate, drain and source parasitic resistances and inductances from the impedance data. Extracts: RS, RD, RG, LSS, LDD, LGG HFMOS3_sat_short This function is obsolete. Standard extraction for the HF MOS Level 3 model. Extracts Level 3 saturation parameters, using Id versus Vd data from a short device. Extracts: HFMOS3_StoC VMAX, KAPPA This function is obsolete. This function calculates capacitance data from S-parameter data, allowing gate-source , gate-drain, and junction capacitances to be calculated from network analyzer measurements. The output of this function can be used in place of actual capacitance data to extract capacitance related parameters. IC-CAP Reference 519 8 IC-CAP Functions HFMOS3_StoZ This function is obsolete. This function calculates impedance data from S-parameter data, allowing gate, drain, and source impedances to be calculated from network analyzer measurements. The output of this function can be used in place of actual impedance data to extract the parasitics parameters. HFMOS3_sub_large This function is obsolete. Standard extraction for the HF MOS Level 3 model. Extracts Level 3 subthreshold parameters, using Id versus Vg data from a large device. Initializes ETA for later optimization. Extracts: HFMOS3_total_cap NFS, ETA This function is obsolete. Extracts the total PN junction capacitance parameters from the bottom and sidewall. Requires C-V measurement on 2 different geometries. The first measurement should be on a device in which the bottom capacitance dominates. The second measurement should be on a device in which the sidewall capacitance dominates. Extracts: CJ, MJ, CJSW, MJSW, PB HP5250_bias_card HP 5250A Switching Matrix function. Bias-enables all the output ports for the specified card. Syntax HP5250_bias_card(CardNumber, “CardState”) Where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) “CardState” is the card's state (allowed values are ENABLE/DISABLE or E/D) 520 IC-CAP Reference IC-CAP Functions 8 HP5250_bias_channel HP 5250A Switching Matrix function. Bias-enables the specified output ports in the channel list. Note that the input ports are ignored since the input port is always the Bias Input Port. Syntax HP5250_bias_channel (“State”, “Channel list”) Where “State” is the output port's state (allowed values are ENABLE/DISABLE or E/D) “Channel list” is the list of channels, known as connection routes. Example channel list: (@10102, 10203, 10305:10307) HP5250_bias_init HP 5250A Switching Matrix function. Selects the bias port. When using the HP E5255A card, the Input Bias Port is the dedicated bias port; however, for the HP E5252A the Input Bias Port must be selected using this function. Syntax HP5250_bias_init(CardNumber, InputBiasPort) Where Card Number specifies the card (allowed values 0-4, 0 = auto configuration mode) InputBiasPort specifies the input bias port number (allowed values are 1-10) HP5250_bias_setmode HP 5250A Switching Matrix function. Enables the bias mode for the specified card once Input Bias Port and Enabled Output ports have been specified. Syntax HP5250_bias_setmode (CardNumber, “BiasMode”) Where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) IC-CAP Reference 521 8 IC-CAP Functions “BiasMode” sets the bias mode on or off (allowed values are ON/OFF or 1/0) When Bias Mode is ON, the Input Bias Port is connected to all the Bias Enabled output ports that are not connected to any other input ports. Bias Disabled output ports are never connected to an Input Bias Port when Bias Mode is ON. • If another input port is disconnected from a bias enabled output port, this port is automatically connected to the Input Bias Port. • If another input port is connected to a Bias Enabled output port, the output port is automatically disconnected from the Bias Input port. When Bias Mode is OFF, the Input Bias Port is the same as the other ports. HP5250_card_config HP 5250A Switching Matrix function. Changes the default configuration for the specified card. When the connection rule is FREE (default mode), each input port can be connected to multiple output ports and each output port can be connected to multiple input ports. When the connection is SINGLE, each input port can be connected to only 1 output. Connection sequence specifies the open/close sequence of the relays when changing from an existing connection to a new connection. Syntax HP5250_card_config (CardNumber, “ConnRule”, “ConnSequence”) Where CardNumber specifies the card (0 for AUTO configuration mode) “ConnRule” is FREE/SINGLE (default is FREE) “ConnSequence” is NSEQ/BBM/MBBR (default is BBM) NSEQ (No SEQuence): Disconnect old route, connect new route. BBM (Break Before Make): Disconnect old route, wait, 522 IC-CAP Reference 8 IC-CAP Functions connect new route. MBBR (Make Before BReak): Connect new route, wait, disconnect old route. HP5250_compensate_cap HP 5250A Switching Matrix function. Equivalent to IC-CAP C routine for the HP BASIC capacitance compensation routine called Ccompen_5250 supplied with the HP 5250A. It returns a 2 by 1 matrix (2 rows, 1 column) defined as follows: output.11 represents compensated capacitance data [F]. output.21 represents compensated conductance data [S]. Syntax HP5250_compensate_cap (RawCap, RawCond, Freq, HPTriaxLength, UserTriaxLengthHigh, UserTriaxLengthLow, UserCoaxLengthHigh, UserCoaxLengthLow) Where RawCap is Input Dataset containing raw capacitance data [F] RawCond is the Input Dataset containing raw conductance data [S] Freq is the measured frequency [Hz] HPTriaxLength is the Triax Cable Length [m] UserTriaxLengthHigh is the user Triax Cable Length (High) [m] UserTriaxLengthLow is the user Triax Cable Length (Low) [m] UserCoaxLengthHigh is the user Coax Cable Length (High) [m] UserCoaxLengthLow is the user Coax Cable Length (Low) [m] IC-CAP Reference 523 8 IC-CAP Functions HP5250_connect HP 5250A Switching Matrix function. Connects or disconnects specified channels. Note that Bias Mode and/or coupling Mode are also taken into account when a channel is closed or opened. Syntax HP5250_connect (“Action”, “Channel list”) Where “Action” connects or disconnects channels (allowed values are C and D) “Channel list” is the list of connection routes to be switched Example: In the list (@10102, 10203:10205), the following channels are connected or disconnected on card 1: • Input port 1 to output port 2. • Input port 2 to output port 3, 4, and 5. HP5250_couple_enable HP 5250A Switching Matrix function. Enables couple port mode. Couple port allows synchronized connection of 2 adjacent input ports to 2 adjacent output ports. Syntax HP5250_couple_enable (CardNumber, “CoupleState”) Where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) “CoupleState” is the coupled state (allowed values are ON/OFF or 1/0) HP5250_couple_setup HP 5250A Switching Matrix function. Sets up couple ports for making kelvin connections. Syntax HP5250_couple_setup (CardNumber, “InputPorts”) Where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) 524 IC-CAP Reference IC-CAP Functions 8 “InputPorts” is the list of coupled ports Example: In the list “1,3,5,7,9” the coupled ports are 1-2, 3-4, 5-6, 7-8, 9-10 HP5250_debug HP 5250A Switching Matrix function. Used only for debugging. When the debug flag is set to 1, all the functions print out all the command strings that are sent to the instruments. Set flag using the values 1 or 0, or use YES or NO. Syntax HP5250_debug(<flag>) HP5250_disconnect_card HP 5250A Switching Matrix function. Opens all relays or channels in the specified cards. Syntax HP5250_disconnect_card (CardNumber) Where CardNumber specifies the card (allowed values 0-4, 0 = auto configuration mode) HP5250_init HP 5250A Switching Matrix function. Must be run first to initialize the instrument with the address and interface. Using this transform the configuration mode can be set to AUTO. When the instrument is in AUTO configuration mode the same type of card must be installed in the HP 5250 slots from slot 1 continuously. The installed cards are then treated as 1 card (numbered 0). Syntax HP5250_init (BusAddress, “Interface”, “Configuration”) Where BusAddress is interface bus address (default is 22) “Interface” is interface name (default is hpib) “Configuration” is AUTO/NORMAL A/N (default is NORMAL) IC-CAP Reference 525 8 IC-CAP Functions HP5250_show HP 5250A Switching Matrix function. Has no inputs. Returns to the standard output (screen or file) the following data about the instrument status: Instrument Name Instrument Configuration (AUTO/NORMAL). The following information is output for each card installed in the instrument (card 0 if the instrument is in auto configuration mode): Connection mode Connection sequence Input Bias Port Enabled Output Bias Ports Bias Sate (ON/OFF) Coupled Input Ports (only lower number is listed, e.g., “3,5” means ports 3 and 4 are coupled) Couple Port Mode (ON/OFF) Connection Matrix Inputs(10)xOutputs(12,24,36, or48). HPdiode_C Produces an array of data that contains the high-frequency intrinsic capacitance at measured bias points for the Agilent Root Diode model. Output: Array of real numbers; size determined by the setup Automatic Invocation: None HPdiode_C2 Produces an array of data that contains the high-frequency intrinsic capacitance at measured bias points for the Agilent Root Diode model. Output Array of real numbers; size determined by the setup 526 IC-CAP Reference IC-CAP Functions 8 HPdiode_I Produces an array of data that contains the current values at measured bias points for the Agilent Root Diode model. Output Array of real numbers; size determined by the setup HPdiode_Q Produces an array of data that contains the charge values at measured bias points for the Agilent Root Diode model. Output Array of real numbers; size determined by the setup HPdiode_R Produces an array of data that contains the intrinsic resistance at measured bias points for the Agilent Root Diode model. Output Array of real numbers; size determined by the setup HPdiode_S11i Produces an array of data that contains the imaginary part of S11 at measured bias points for the Agilent Root Diode model. Output Array of real numbers; size determined by the setup HPdiode_S11r Produces an array of data that contains the real part of S11 at measured bias points for the Agilent Root Diode model. Output Array of real numbers, size determined by the setup HPdiode_V Produces an array of data that contains the voltage values at measured bias points for the Agilent Root Diode model. HPdiode_data_acqu Extraction function for acquiring data for the Agilent Root Diode model. Adaptively takes data throughout the safe operating range of the device. IC-CAP Reference 527 8 IC-CAP Functions Input Arguments: Reals or Integers: Vmax, Vmin, Max step, Min step, Noise level, Eps Automatic Invocation: By Extract menu function HPdiode_fgrt No documentation available at this time HPdiode_fless No documentation available at this time HPdiode_iextr No documentation available at this time HPdiode_mdl Extraction function for generating the Agilent Root Diode model. Input Arguments: Reals or Integers: Extracts: LowBound V, HighBound V, Extraction f Generates the model function and look-up table Automatic Invocation: By Extract menu function HPdiode_para_at_f Calculates parasitics at the specified frequency for the Agilent Root Diode model. Input Arguments: Reals or Integers: Extracts: Extraction f cac, cag, ccg, R, L_tot HPdiode_para_f Extracts parasitic elements and writes them to the Para.data file. Input Arguments: Data Sets: Reals or Integers: 528 Freq, S param, I Ideality IC-CAP Reference 8 IC-CAP Functions Output: HPdiode_wr None Writes the inputs to the Measured.data file. Input Arguments: Data Sets: HPIB_abort Freq, S param, I, V Breaks GPIB communication and resets the bus. Input Arguments: Reals or Integers: Output: File descriptor returned from HPIB_open() 0 for success, -1 for error. Automatic Invocation: None Example PEL Statement: x = HPIB_abort(file_num) HPIB_clear Sends a Device Clear command to an instrument. Input Arguments: Reals or Integers: Output: File descriptor returned from HPIB_open(), target GPIB address. 0 for success, -1 for error. Automatic Invocation: None Example PEL Statement: x = HPIB_clear(file_num, 16) HPIB_close resources. IC-CAP Reference Terminates GPIB communication and releases 529 8 IC-CAP Functions Input Arguments: Reals or Integers: Output: File descriptor returned from HPIB_open(). 0 for success, -1 for error. Automatic Invocation: None Example PEL Statement: x = HPIB_close(file_num) HPIB_command bus. Sends a single GPIB command byte on the Input Arguments: Reals or Integers: Output: File descriptor returned from HPIB_open(), command byte. 0 for success, −1 for error. Automatic Invocation: None Example PEL Statement: x = HPIB_command(file_num, 20) ! DCL HPIB_eoi Enables or disables if eoi is sent with last byte transmitted. Usage: HPIB_eio(EID,eoiFlag) Input Arguments: EID Specifies the descriptor returned from HPIB_open() eoiFlag 0 for disable, 1 for enable Output: 0 for success, −1 for error HPIB_fwrite Formatted write to GPIB. Writes a variety of formats to the designated instrument. 530 IC-CAP Reference 8 IC-CAP Functions Usage: HPIB_fwrite(EID,Address,numBytes, numericalData,convertChar) Input Arguments: EID Specifies the descriptor returned from HPIB_open() Address Specifies the address of the instrument numBytes Specifies how many bytes to read from the bus numericalData Specifies the number to be written out convertChar Specifies how to interpret the bytes as follows: “F” Must request numBytes=4 or numBytes=8 Numerical data will be converted to a single or double precision number and sent across the bus. “I” Must request numBytes=2 or numBytes=4 Numerical data will be converted to a 2’s complement number of the specified size and sent across the bus. Output: 0 for success, −1 for error HPIB_open Initiates GPIB communication and reserves resources. Instrument control through GPIB should use this function family to be portable across platforms. Defined in userc_io.c. Input Arguments: Reals or Integers: Output: IC-CAP Reference Interface file name. Refer to Measurement chapter. File descriptor. 531 8 IC-CAP Functions Automatic Invocation: None Example PEL Statement: file_num = HPIB_open("hpib") ! for s700 file_num = HPIB_open("/dev/gpib0") ! for Sun HPIB_read Reads a variety of formats from the designated instrument. Usage: HPIB_read(EID,Address,numBytes,F ormat,Variable) Input Arguments: EID Specifies the descriptor returned from HPIB_open() Address Specifies the address of the instrument numBytes Specifies how many bytes to read from the bus Format Specifies how to interpret the bytes as follows: “A” Return an ASCII string less than or equal to numBytes in length (depending on EOI and Null characters read.) Allow for a terminator in your numBytes length, but this terminator will be stripped from the return. “F” Must request numBytes=4 or numBytes=8 Result will be these bytes interpreted as a normal ordered single or double precision number. “I” Must request numBytes=2 or numBytes=4 Result will be these bytes interpreted as a normal ordered 2’s complement integer. 532 IC-CAP Reference 8 IC-CAP Functions “C” Must request numBytes=1. Result will be this byte interpreted as a normal ordered unsigned integer. “H” Interprets a string of characters as a hexadecimal number and outputs the decimal equivalent. NumBytes may be any length. Hexadecimal interpretation will continue until a non hexadecimal character or NULL byte is encountered. hexadecimal character set [0-9, a-f, A-F]. “O” Interprets a string of characters as an octal number and outputs the decimal equivalent. NumBytes may be any length. Octal interpretation will continue until a non-octal character or NULL byte is encountered. octal character set [0-7]. Variable Specifies the name of a variable in a variable table will receive the read data. Output: 0 for success, −1 for error HPIB_read_reals This function was obsoleted and replaced by “HPIB_read” on page 532. Reads multiple real numbers from a designated instrument. Input Arguments: Reals or Integers: Output: IC-CAP Reference File descriptor returned from HPIB_open(), target GPIB address, an optional scanf() format to pick up a real number. If the format is blank, “%lf” is used. Array of real numbers. 533 8 IC-CAP Functions Automatic Invocation: None Example PEL Statement: x = HPIB_read_reals(file_num, 16, "%lf\n") HPIB_readnum This function was obsoleted and replaced by “HPIB_read” on page 532. Reads a single real number from a designated instrument. Input Arguments: Reals or Integers: Output: File descriptor returned from HPIB_open(), target GPIB address, an optional scanf() format to pick up a real number. If the format is blank, “%lf” is used. a real number (the value 9.99998E+37 means an error occurred). Automatic Invocation: None Example PEL Statement: data = HPIB_readnum(file_num, 16, "") HPIB_readstr This function was obsoleted and replaced by “HPIB_read” on page 532. Reads a single character string from a designated instrument. Input Arguments: Reals or Integers: Output: 534 File descriptor returned from HPIB_open(), target GPIB address, an optional scanf() format to pick up a real number, a variable name that receives the character string. If the format is blank, “%[^\r\n]*” is used to exclude CR/LF. 0 for success, -1 for error. IC-CAP Reference 8 IC-CAP Functions Automatic Invocation: None Example PEL Statement: x = HPIB_readstr(file_num, 16, "%s\n", "IC-CAP_variable") HPIB_spoll Reads a status byte from a designated instrument. Input Arguments: Reals or Integers: Output: File descriptor returned from HPIB_open(), target GPIB address. status byte (real number) Automatic Invocation: None Example PEL Statement: status = HPIB_spoll(file_num, 16) HPIB_srq Tests if SRQ line of the bus is True or False. Input Arguments: Reals or Integers: File descriptor returned from HPIB_open(). 1 for True, 0 for False, −1 for error Output: Automatic Invocation: None Example PEL Statement: srq = HPIB_srq(file_num) HPIB_timeout Sets the GPIB timeout. Input Arguments: Reals or Integers: Output: File descriptor returned from HPIB_open(), timeout in seconds. 0 for success, −1 for error Automatic Invocation: None IC-CAP Reference 535 8 IC-CAP Functions Example PEL Statement: x = HPIB_timeout(file_num, 10) ! timeout on 10 sec HPIB_write This function was obsoleted and replaced by “HPIB_fwrite” on page 530. Sends a character string to a designated instrument. Input Arguments: Reals or Integers: Output: File descriptor returned from HPIB_open(), target GPIB address, a character string to be sent that allows normal C escapes. 0 for success, −1 for error Automatic Invocation: None Example PEL Statement: x = HPIB_write(file_num, 16, "*IDN?\n") HPMOS_process_pars Allows specification of initial values for the Agilent MOS process related parameters LD, RS, RSH, TOX, WD, and XJ. The drain resistance RD is set equal to the specified value of RS. Input Arguments: Data Sets: Lateral Diffusion, Source Resistance, Sheet Resistance, Oxide Thickness, Width Reduction Output: None Extracts: (not applicable) Automatic Invocation: By Extract menu function HPMOSDC_lin_large Standard extraction for the Agilent MOS model. Extracts classical parameters using Id versus Vg measured on a large device. 536 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: VTO, NSUB, UO, VNORM Automatic Invocation: By Extract menu function HPMOSDC_lin_narrow Standard extraction for the Agilent MOS model. Extracts width effect parameters using Id versus Vg measured on a narrow device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: WD, VWFF, WFF Automatic Invocation: By Extract menu function HPMOSDC_lin_short Standard extraction for the Agilent MOS model. Extracts length effect parameters using Id versus Vg measured on a short device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: LD, VDFF, LFF Automatic Invocation: By Extract menu function HPMOSDC_sat_short Standard extraction for the Agilent MOS model. Extracts saturation parameters using Id versus Vd measured on a short device. Input Arguments: Data Sets: IC-CAP Reference Gate V, Bulk V, Drain V, Drain I 537 8 IC-CAP Functions Output: None Extracts: ETRA, ECRIT, DESAT Automatic Invocation: By Extract menu function HPRoot_data_acqu Extraction function for acquiring data for the Agilent Root model. Adaptively takes data throughout the safe operating range of the device. Input Arguments: None Output: None Automatic Invocation: By Extract menu function HPRoot_FET Extraction function for generating the Agilent Root FET model. Input Arguments: None Output: None Extracts: Generates the model functions and look-up table. Automatic Invocation: By Extract menu function HPRoot_fet_acqu Extraction function for acquiring data for the Agilent Root FET model. Adaptively takes data throughout the safe operating range of the device. Input Arguments: Reals or Integers: Output: Power level, I_Brk, I_Fwd, Min Vd, Max Vd, Min Vg, Max Vg, Min step, Max step, Vp, Delta, Vdiode. Eps, Noise thresh, SMU Compl None Automatic Invocation: By Extract menu function 538 IC-CAP Reference IC-CAP Functions 8 HPRoot_FET_t Extraction function for generating the Agilent Root FET model. Input Arguments: Reals or Integers: Extracts: vd_start, vg_start, t_dispersion Generates the model function and look-up table Automatic Invocation: By Extract menu function HPRoot_Id Produces array of data that contains the drain current values at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Idh Produces array of data that contains the high frequency current values at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Ig Produces array of data that contains the gate current values at measured bias points for Agilent Root FET model. IC-CAP Reference Input Arguments: None Output: Array of real numbers; size determined by setup 539 8 IC-CAP Functions Automatic Invocation: None HPRoot_initial Initializes plots displayed with the Agilent Root FET model. Input Arguments: None Output: None Automatic Invocation: By Extract menu function HPRoot_mos_acqu Extraction function for acquiring data for the Agilent Root MOSFET model. Adaptively takes data throughout the safe operating range of the device. Input Arguments: Reals or Integers: Power level, I Breakdown, Min Vd, Max Vd, Min Vg, Max Vg, Min step, Max step, Vth, Delta, Eps, Noise thresh, SMU Compl Automatic Invocation: By Extract menu function HPRoot_mos_para Calculates Z matrix from S parameter input and extracts the parasitic elements for the Agilent Root MOS model. Input Arguments: Data Sets: S param, Freq Strings/Pars/Vars: Mode ( Z / EXTR ) Output: 540 Matrix array, size determined by inputs IC-CAP Reference 8 IC-CAP Functions HPRoot_MOSFET Extraction function for generating the Agilent Root FET model. Input Arguments: Reals or Integers: Extracts: vd_start, vg_start, t_dispersion Generates the model function and look-up table Automatic Invocation: By Extract menu function HPRoot_n Extracts the ideality parameter for the Agilent Root FET and Agilent Root Diode models. Input Arguments: Data Sets: V, N array Reals or Integers: LowBound V, HighBound V, Max Output: None Extracts: N Automatic Invocation: None HPRoot_parasitic Measures the parasitic elements of a device for the Agilent Root FET model. Input Arguments: None Output: None Extracts: The parasitic resistors Rs, Rd, and Rg, and the parasitic inductors Ls_tot, Ld_tot, and Lg_tot. Automatic Invocation: By Extract menu function IC-CAP Reference 541 8 IC-CAP Functions HPRoot_para_cal Calculates the parasitic elements of a device for the Agilent Root FET and Agilent Root MOS models. Input Arguments: Strings/Pars/Vars: Extracts: Mode ( Mesfet / Mosfet) Rg, Rs, Rd, Lg_tot, Ls_tot, Ld_tot Automatic Invocation: None HPRoot_Qd Produces array of data that contains the drain charge values at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Qg Produces array of data that contains the gate charge values at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Vd Produces array of data that contains the drain voltage values of the bias distribution of the whole operating range of the device for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None 542 IC-CAP Reference IC-CAP Functions 8 HPRoot_Vg Produces array of data that contains the gate voltage values of the bias distribution of the whole operating range of the device for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_wr Reads measured parasitic data and extracted frequency and calculates parasitic resistances, inductances and computes the intrinsic matrix Zp and Yp for linear AC de-embedding. Input Arguments: Data Sets: trings/Pars/Vars: Freq, S param, IG, ID, VG, VD S Mode ( s / p ) HPRoot_Y11i Produces array of data that contains the imaginary part of Y11 at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Y11r Produces array of data that contains the real part of Y11 at measured bias points for Agilent Root FET model. IC-CAP Reference Input Arguments: None Output: Array of real numbers; size determined by setup 543 8 IC-CAP Functions Automatic Invocation: None HPRoot_Y12i Produces array of data that contains the imaginary part of Y12 at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Y12r Produces array of data that contains the real part of Y12 at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Y21i Produces array of data that contains the imaginary part of Y21 at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Y21r Produces array of data that contains the real part of Y21 at measured bias points for Agilent Root FET model. Input Arguments: 544 None IC-CAP Reference IC-CAP Functions Output: 8 Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Y22i Produces array of data that contains the imaginary part of Y22 at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPRoot_Y22r Produces array of data that contains the real part of Y22 at measured bias points for Agilent Root FET model. Input Arguments: None Output: Array of real numbers; size determined by setup Automatic Invocation: None HPTFT_param This function is obsolete. The dielectric constant of oxide film in the Agilent A-Si:H TFT model is calculated. Input Arguments: Data Sets: Output: EPSFM The value of EPSFM Automatic Invocation: None IC-CAP Reference 545 8 IC-CAP Functions HPTFTCV_model_cgd This function is obsolete. Agilent A-Si:H TFT Gate to Drain Capacitance model. Calculates Cgd from voltages. Input Arguments: Data Sets: Output: Drain V, Gate V, Source V Gate to Drain C Automatic Invocation: None HPTFTCV_model_cgs This function is obsolete. Agilent A-Si:H TFT Gate to Source Capacitance model. Calculates Cgs from voltages. Input Arguments: Data Sets: Output: Drain V, Gate V, Source V Gate to Source C Automatic Invocation: None HPTFTDC_model_id This function is obsolete. Agilent A-Si:H TFT DC model. Calculates Id from voltages. Input Arguments: Data Sets: Output: Drain V, Gate V, Source V Drain I Automatic Invocation: None HPTFTDC_lin This function is obsolete. Standard extraction for the Agilent a-Si TFT model. Extracts linear region parameters using Id versus Vg measured on a-Si TFT device. 546 IC-CAP Reference IC-CAP Functions 8 Input Arguments: Data Sets: Drain V, Gate V, Source V, Drain I Output: None Extracts: VTO, UO, PHI, THETA, NFS, GO Automatic Invocation: By Extract menu function HPTFTDC_sat This function is obsolete. Standard extraction for the Agilent A-Si:H TFT model. Extracts saturation region parameters using Id versus Vd measured on a-Si:H TFT device. Input Arguments: Data Sets: Drain V, Gate V, Source V, Drain I Output: None Extracts: VMAX, ETA Automatic Invocation: By Extract menu function icdb_add_comment the opened file. Writes an arbitrary comment string to Syntax x=icdb_add_comment(strVal) Where strVal is an arbitrary string. The return value (x) is undefined. icdb_close Closes a file that has been opened with icdb_open. Syntax x=icdb_close() Where The return value (x) is not defined. IC-CAP Reference 547 8 IC-CAP Functions icdb_export_data Exports the measured or simulated data from the specified setup to the opened file. Header information containing current information about the values of the registered sweep parameters is automatically appended to the file. Syntax x=icdb_export_data(setupName,dataType) Where setupName is a string giving a proper path to the setup that contains data to export. dataType exports simulated data if dataType is "S". Exports measured data for any other value, but "M" recommended. The return value (x) is undefined. icdb_get_sweep_value Returns the current value of the specified user sweep at any point in the export loop. Syntax curVal=icdb_get_sweep_value(index,swpName) Where index is the point number requested swpName is the name of the registered sweep icdb_open Opens a file for exporting measured data in IC-CAP's data management file format (.mdm). Syntax x=icdb_open(filename) Where filename 548 is a string pointing at the MDM file to be opened. IC-CAP Reference 8 IC-CAP Functions The return value (x) is not defined. icdb_register_con_sweep Creates a CON type sweep of an arbitrary parameter in the exported file. Intended primarily to create sweeps of parameters that cannot be swept during a measurement. Returns the total number of points in all the registered sweeps. Syntax numPts=icdb_register_lin_sweep(conValue,swpName) Where conValue is the constant value to use for this con sweep swpName is the name of the 'User Input' as it will appear in the MDM file, or how it will be referenced when reading the MDM back in icdb_register_lin_sweep Creates a LIN type sweep of an arbitrary parameter in the exported file. Intended primarily to create sweeps of parameters that cannot be swept during a measurement. Returns the total number of points in all the registered sweeps. Syntax numPts=icdb_register_lin_sweep(swpOrder,start,stop, numSwpPts,swpName) Where IC-CAP Reference swpOrder is the sweep order for the registered sweep start is the start value for the linear sweep stop is the stopping value for the linear sweep numSwpPts is the number of points for this sweep swpName is the name of the 'User Input' as it will appear in the MDM file, or how it will be referenced when reading the MDM back in 549 8 IC-CAP Functions icdb_register_list_sweep Creates a LIST type sweep of an arbitrary parameter in the exported file. Intended primarily to create sweeps of parameters that cannot be swept during a measurement. Returns the total number of points in all the registered sweeps. Syntax numPts=icdb_register_list_sweep(swpOrder,swpName, arrayName) Where swpOrder is the sweep order for the registered sweep swpName is the name of the 'User Input' as it will appear in the MDM file, or how it will be referenced when reading the MDM back in arrayName is a string naming a variable in a Variable table that has been set to an ICCAP_ARRAY[]. This array declares the points that will be used for the list sweep. icdb_register_lsync_sweep Creates an LSYNC type sweep of an arbitrary parameter in the exported file. Intended primarily to create sweeps of parameters that cannot be swept during a measurement. Returns the total number of points in all registered sweeps. Syntax numPts=icdb_register_list_sweep(swpName,masterSweepName, arrayName) Where swpName is the name of the 'User Input' as it will appear in the MDM file, or how it will be referenced when reading the MDM back in. masterSweepName is the name of a previously registered sweep to which this sweep will be synchronized. 550 IC-CAP Reference IC-CAP Functions arrayName 8 is a string naming a variable in a Variable table that has been set to an ICCAP_ARRAY[]. This array declares the points that will be used for the list sweep. This array should have the same number of points as the already registered Master Sweep. icdbf_add_comment opened file. Writes an arbitrary comment string to the Syntax x=icdbf_add_comment(fNum,strVal) Where fNum is the number returned from an icdbf_open() call. strVal is an arbitrary string. The return value (x) is undefined. icdbf_close Closes a file that has been opened with icdbf_open. Syntax x=icdbf_close(fNum) Where fNum is the number returned from an icdbf_open() call. The return value (x) is not defined. icdbf_export_data Exports the measured or simulated data from the specified setup to the opened file. Header information containing current information about the values of the registered sweep parameters is automatically appended to the file. Syntax IC-CAP Reference 551 8 IC-CAP Functions x=icdbf_export_data(fNum,setupName,dataType) Where fNum is the number returned from an icdbf_open() call. setupName is a string giving a proper path to the setup that contains data to export. dataType exports simulated data if dataType is "S". Exports measured data for any other value, but "M" recommended. The return value (x) is undefined. icdbf_get_sweep_value Returns the current value of the specified user sweep at any point in the export loop. Syntax curVal=icdbf_get_sweep_value(fNum,index,swpName) Where fNum is the number returned from an icdbf_open() call. index is the point number requested swpName is the name of the registered sweep icdbf_open Opens a file for exporting measured data in IC-CAP's data management file format (.mdm). Syntax fNum=icdbf_open(filename) Where filename is a string pointing at the MDM file to be opened. The return value (fNum) is a unique number associated with this file. This number is valid during the current run of PEL or until icdbf_close is called. 552 IC-CAP Reference 8 IC-CAP Functions icdbf_register_con_sweep Creates a CON type sweep of an arbitrary parameter in the exported file. Intended primarily to create sweeps of parameters that cannot be swept during a measurement. Returns the total number of points in all the registered sweeps. Syntax numPts=icdbf_register_lin_sweep(fNum,conValue,swpName) Where fNum is the number returned from an icdbf_open() call. conValue is the constant value to use for this con sweep swpName is the name of the 'User Input' as it will appear in the MDM file, or how it will be referenced when reading the MDM back in icdbf_register_lin_sweep Creates a LIN type sweep of an arbitrary parameter in the exported file. Intended primarily to create sweeps of parameters that cannot be swept during a measurement. Returns the total number of points in all the registered sweeps. Syntax numPts=icdbf_register_lin_sweep(fNum,swpOrder,start,stop, numSwpPts,swpName) Where IC-CAP Reference fNum is the number returned from an icdbf_open() call. swpOrder is the sweep order for the registered sweep start is the start value for the linear sweep stop is the stopping value for the linear sweep numSwpPts is the number of points for this sweep 553 8 IC-CAP Functions swpName is the name of the 'User Input' as it will appear in the MDM file, or how it will be referenced when reading the MDM back in icdbf_register_list_sweep Creates a LIST type sweep of an arbitrary parameter in the exported file. Intended primarily to create sweeps of parameters that cannot be swept during a measurement. Returns the total number of points in all the registered sweeps. Syntax numPts=icdb_register_list_sweep(fNum,swpOrder,swpName,arr ayName) Where fNum is the number returned from an icdbf_open() call. swpOrder is the sweep order for the registered sweep swpName is the name of the 'User Input' as it will appear in the MDM file, or how it will be referenced when reading the MDM back in arrayName is a string naming a variable in a Variable table that has been set to an ICCAP_ARRAY[]. This array declares the points that will be used for the list sweep. icdbf_register_lsync_sweep Creates an LSYNC type sweep of an arbitrary parameter in the exported file. Intended primarily to create sweeps of parameters that cannot be swept during a measurement. Returns the total number of points in all the registered sweeps. Syntax numPts=icdbf_register_list_sweep(fNum,swpName, masterSweepName,arrayName) Where 554 IC-CAP Reference 8 IC-CAP Functions fNum is the number returned from an icdbf_open() call. swpName is the name of the 'User Input' as it will appear in the MDM file, or how it will be referenced when reading the MDM back in. masterSweepName is the name of a previously registered sweep to which this sweep will be synchronized. arrayName is a string naming a variable in a Variable table that has been set to an ICCAP_ARRAY[]. This array declares the points that will be used for the list sweep. This array should have the same number of points as the already registered Master Sweep. ICMSarray Returns an array result from an IC-CAP Macro algorithm to the IC-MS result array during test execution. This function is used internally by IC-MS and should never be called directly by the user. Input Arguments: Data Sets: Array Result Reals or Integers: Array Size, Result Data Index Output: None Automatic Invocation: None ICMSchar Returns a single character result from an IC-CAP Macro algorithm to the IC-MS result array during test execution. This function is used internally by IC-MS and should never be called directly by the user. Input Arguments: Reals or Integers: IC-CAP Reference Result Data Index 555 8 IC-CAP Functions Strings/Pars/Vars: Output: Character Result None Automatic Invocation: None ICMSint Returns an integer result from an IC-CAP Macro algorithm to the IC-MS result array during test execution. This function is used internally by IC-MS and should never be called directly by the user. Input Arguments: Reals or Integers: Output: Integer Result, Result Data Index None Automatic Invocation: None ICMSpin Used in an IC-CAP Macro to determine the matrix connections of the device under test. ICMSpin returns the matrix pin number that corresponds to a specified terminal index on the device. This function only returns valid data when IC-MS test execution is running. Refer to the IC-MS User’s Manual for more information on using ICMSpin. Input Arguments: Reals or Integers: Output: Terminal Index Matrix pin number corresponding to the specified device terminal index Automatic Invocation: None Example PEL Statement: pin_num = ICMSpin(1) ICMSreal Returns a floating point result from an IC-CAP Macro algorithm to the IC-MS result array during test execution. This function is used internally by IC-MS and should never be called directly by the user. 556 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Reals or Integers: Output: Real Result, Result Data Index None Automatic Invocation: None ICMSstr Returns a character string result from an IC-CAP Macro algorithm to the IC-MS result array during test execution. This function is used internally by IC-MS and should never be called directly by the user. Input Arguments: Result Data Index: Output: String Result None Automatic Invocation: None icstat_activate Activates a deactivated row or column in the PARAMETERS spreadsheet. Synopsis: icstat_activate(<Number>, <Mode>) Arguments: Number: Row or column number to be activated Mode: “ROW” or “COLUMN” Example: retVal = icstat_activate(4, "ROW") return icstat_analysis Emulates the Analysis command on the Analysis menu. This function generates the “active data” that is, data devoid of the attribute, deactivated, filtered and constant values column. Displays the results in the ANALYSIS spreadsheet. Synopsis: IC-CAP Reference icstat_analysis() 557 8 IC-CAP Functions Arguments: NONE Example: retVal = icstat_analysis() return icstat_attribute_2_parameter Changes the Attribute column to a Parameters column in the PARAMETERS spreadsheet. Synopsis: icstat_attribute_2_parameter (<Number>) Arguments: Number: attribute column number to be changed to parameter type Example: retVal = icstat_attribute_2_parameter(4) return icstat_clear Clears rows or columns in the PARAMETERS spreadsheet. Synopsis: icstat_clear(<Start>, <Number>, <Mode>) Arguments: Start Row/Column number Row or column from which to clear Number of rows/columns Number of rows/columns to be cleared Mode: “ROW” or “COLUMN” Example (clears 4 rows from the 4th row onward): retVal = icstat_clear(4, 4, "ROW") return icstat_close_sdf_file Synopsis: Closes the SDF file. icstat_close_sdf_file(<Filename>) Arguments: 558 IC-CAP Reference 8 IC-CAP Functions Filename: Name of the SDF file to close. Example: retVal = icstat_close_sdf_file ("/tmp/examples/icstat/bsim3.sdf") return icstat_correlation Emulates the Correlation command on the Analysis menu. This function generates the correlation matrix from the data in the PARAMETERS spreadsheet. Displays the results in the CORRELATION spreadsheet. Synopsis: icstat_correlation() Argument: NONE Example: retVal = icstat_correlation() return icstat_deactivate Deactivates an activated row or column in the PARAMETERS spreadsheet. Synopsis: icstat_deactivate(<Number>, <Mode>) Input Arguments: Number: Row or column number to be deactivated Mode: “ROW” or “COLUMN” Example: retVal = icstat_deactivate(4, "ROW") return icstat_delete Deletes rows or columns in the PARAMETERS spreadsheet. Synopsis: icstat_delete(<Start>, <Number>, <Mode>) Arguments: IC-CAP Reference 559 8 IC-CAP Functions Start Row/Column number Row or column from which to delete Number of rows/columns Number of rows/columns to be deleted Mode: “ROW” or “COLUMN” Example (deletes 4 rows from the 4th row onward): retVal = icstat_delete(4, 4, "ROW") return icstat_equations Emulates the Equations command on the Analysis menu. This function either generates the equations from the factors or the parameters. The results are displayed in the respective spreadsheets: FACTOR EQUATIONS or PARAMETER EQUATIONS. Synopsis: icstat_equations(<Type>) Arguments: Type: Either FACTORS or DOMINANT Example: retVal = icstat_equations("FACTORS") return icstat_exit Exits the Statistical Analysis program. Synopsis: icstat_exit() Arguments: None Example: retVal = icstat_exit() return icstat_factor_analysis Emulates the Factor Analysis command on the Analysis menu. This function performs the factor analysis. The results are displayed in the FACTOR LOADINGS and PARAMETER VARIANCE spreadsheets. 560 IC-CAP Reference 8 IC-CAP Functions Synopsis: icstat_factor_analysis(<Number-of-f actors>, <Method-index>, <Rotation-Index>, <Maximum Iterations>, <Maximum Steps>, <Convergence Iteration>, <Convergence - 2nd derivative> Arguments: Number of factors: Number of factors Method Index: 0 = Principal Component 1 = Principal Factor 2 = Unweighted Least Squares Rotation Index: 0 = Varimax 1 = Quartimax 2 = Equamax 3 = None Maximum Iterations: Maximum number of iterations (default = 30) Maximum Steps: Maximum number of steps (default = 8) Convergence Iteration: Convergence criterion iterations (default = 0.0001) Convergence 2nd derivative Convergence criterion 2nd derivative (default = 0.1) Example: retVal = icstat_factor_analysis(8, 0, 0, 30, 8, 0.0001, 0.1) return icstat_from_partable Updates the PARAMETERS spreadsheet with values from the Parameters table. If a particular spreadsheet parameter is not found in the Parameters table or the Parameters table parameter is not found in the spreadsheet, then the value is not updated. Synopsis: IC-CAP Reference icstat_from_partable(<Number>, <Path>, <From Parameter Table>) 561 8 IC-CAP Functions Arguments: Row Number: Row number to get the data from Path: The name of the model or DUT from which you want to get parameters. Specify <“model_name”> to get parameters from the Model Parameters table; specify <“model_name/DUT_name”> to get parameters from the DUT Parameters table. (To specify the current DUT, “.” is sufficient.) From: Specify 1 of the following parameter tables from which to get the data: “MODEL PARAMETERS”, “DUT PARAMETERS“ If left blank, “MODEL PARAMETERS” is used. Example: retVal = icstat_from_partable(2, "/CGaas1", "MODEL PARAMETERS") return icstat_get_attribute_columns Returns an array of attribute column numbers in the PARAMETERS spreadsheet. Synopsis: icstat_get_attribute_columns(<input -array>) Arguments: Input: Array containing the values to be returned Example: arrSize = icstat_num_attributes() complex colArr[arrSize] retArr = icstat_get_attribute_columns(colArr) PRINT retArr 562 IC-CAP Reference 8 IC-CAP Functions icstat_get_cell Returns the values in the cell. If the cell contains text, a 0 is returned. Note: To get cells with text, use the icstat_get_text_cell function. To get values from a large number of cells, use icstat_get_column or icstat_get_row. Synopsis: icstat_get_cell(<row-number>, <column-number>, <Spreadsheet-name>) Arguments: Row Number: Integer Column Number: Integer Spreadsheet Name: One of the Spreadsheet Names Spreadsheet Names: PARAMETERS, ANALYSIS, STATSUMM, CORRELATION, FACTOR LOADINGS, PARAMETER VARIANCE, FACTOR EQUATIONS, PARAMETER EQUATIONS, PARAMETRIC, NON PARAMETRIC Example: rCell = icstat_get_cell(8, 8, "PARAMETERS") PRINT rCell return icstat_get_column Returns the values in the column. If the cell contains text, a 0 is returned. Typically the first column for any spreadsheet is of string type. For the PARAMETERS spreadsheet, the values returned include the deactivated and filtered cells. Synopsis: icstat_get_column(<Input-array>, <Column number>, <Spreadsheet Name>) Arguments: IC-CAP Reference Input: Array for the returned value Column Number: Integer Spreadsheet Name: One of the Spreadsheet Names 563 8 IC-CAP Functions Spreadsheet Names: PARAMETERS, ANALYSIS, STATSUMM, CORRELATION, FACTOR LOADINGS, PARAMETER VARIANCE, FACTOR EQUATIONS, PARAMETER EQUATIONS, PARAMETRIC, NON PARAMETRIC Example: arrSize = icstat_num_rows("PARAMETERS") complex colArr[arrSize] retArr = icstat_get_column(colArr, 7, "PARAMETERS") PRINT retArr icstat_get_deactivated Returns an array of deactivated rows or columns in the PARAMETERS spreadsheet. Synopsis: icstat_get_deactivated(<input-array> , <Mode>) Arguments: Input: Array containing the values to be returned Mode: “ROW” or “COLUMN” Example: arrSize = icstat_num_deactivated("ROW") complex rowArr[arrSize] retArr = icstat_get_deactivated(rowArr, "ROW") PRINT retArr icstat_get_filtered_rows Returns an array of filtered rows in the PARAMETERS spreadsheet. Synopsis: icstat_get_filtered_rows (<input-array>) Arguments: Input: 564 Array containing the values to be returned IC-CAP Reference 8 IC-CAP Functions Example: arrSize = icstat_num_filtered() complex rowArr[arrSize] retArr = icstat_get_filtered_rows(rowArr) PRINT retArr icstat_get_row Returns the values in the row. If any cells contain text, a 0 is returned. Typically the first column for any spreadsheet contain labels, that is, text. For the PARAMETERS spreadsheet, the first several columns could be attribute parameters that is, text. The function excludes the cells in these columns, and returns only real values. Synopsis: icstat_get_row(<Input-array>, <Number>, <Spreadsheet Name>) Arguments: Input: Array for the returned value Row Number Integer Spreadsheet Name: One of the Spreadsheet Names Spreadsheet Names: PARAMETERS, ANALYSIS, STATSUMM, CORRELATION, FACTOR LOADINGS, PARAMETER VARIANCE, FACTOR EQUATIONS, PARAMETER EQUATIONS, PARAMETRIC, NON PARAMETRIC Example: iNumAttribs = icstat_num_attributes() iNumCols = icstat_num_columns("PARAMETERS") iNumCells = iNumCols - iNumAttribs complex rowArr[iNumCells] retArr = icstat_get_row(rowArr, 4, "PARAMETERS") PRINT retArr icstat_get_text_cell Gets the text in the specified cell and sets the referenced variable with the text. Synopsis: IC-CAP Reference icstat_get_text_cell(<Row-Number>, <Column-Number>, <Spreadsheet Name>, <Variable Name>) 565 8 IC-CAP Functions Arguments: Row Number Integer Column Number: Integer Spreadsheet Name: One of the Spreadsheet Names Variable Name: Variable name from the variable table Spreadsheet Names: PARAMETERS, ANALYSIS, STATSUMM, CORRELATION, FACTOR LOADINGS, PARAMETER VARIANCE, FACTOR EQUATIONS, PARAMETER EQUATIONS, PARAMETRIC, NON PARAMETRIC Example: sString = "Hi, I am a string" dummy = icstat_set_text_cell(2, 1, sString) dummy = icstat_get_text_cell(2, 2, "PARAMETERS", "CELLVAL") PRINT CELLVAL return icstat_insert Insert rows or columns in the PARAMETERS spreadsheet. Synopsis: icstat_insert(<Start>, <Number>, <Mode>) Arguments: Start Row/Column number Row or column from which to insert Number of rows/columns Number of rows/columns to be inserted Mode “ROW” or “COLUMN” Example (inserts 4 rows from the 4th row onward): retVal = icstat_insert(4, 4, "ROW") return icstat_nonparametric_models analysis function. 566 Emulates the non-parametric IC-CAP Reference 8 IC-CAP Functions Synopsis: icstat_nonparametric_models(<B oundary Points>, <% Enclosed>, <Diversity Oversampling>, <Density Estimator %>, <Distance Metric>) Arguments: Number of Boundary Points: Number of boundary models (integer) Percent Enclosed: Integer Diversity Oversampling: Real number Density Estimator %: Integer Distance Metric: “EUCLIDEAN” or “L_1” or “L_INFINITY” Example: retVal = icstat_open() retVal = icstat_open_sdf_file ("/tmp/examples/icstat/bsim3.sdf") retVal = icstat_nonparametric_models(8, 80, 2, 98, "EUCLIDEAN") return icstat_num_attributes Returns the number of attribute columns in the PARAMETERS spreadsheet. Synopsis: icstat_num_attributes() Argument: None Example: iNumAttrCols = icstat_num_attributes() PRINT iNumAttrCols icstat_num_columns Returns the number of columns in the spreadsheet. For the PARAMETERS spreadsheet, that includes the attribute and deactivated columns. Synopsis: IC-CAP Reference icstat_num_columns(<Spreadsheet -name>) 567 8 IC-CAP Functions Argument: Spreadsheet Name: Spreadsheet Names: One of the Spreadsheet Names PARAMETERS, ANALYSIS, STATSUMM, CORRELATION, FACTOR LOADINGS, PARAMETER VARIANCE, FACTOR EQUATIONS, PARAMETER EQUATIONS, PARAMETRIC, NON PARAMETRIC Example: iNumCols = icstat_num_columns("PARAMETERS") PRINT iNumCols icstat_num_deactivated Returns the number of deactivated rows or columns in the PARAMETERS spreadsheet. Synopsis: icstat_num_deactivated(<mode>) Argument: Mode: “ROW” or “COLUMN” Example: iNumDeactRows = icstat_num_deactivated("ROW") PRINT iNumDeactRows icstat_num_filtered Returns the number of filtered rows in the PARAMETERS spreadsheet. Synopsis: icstat_num_filtered(<mode>) Argument: None Example: iNumFilteredRows = icstat_num_filtered() PRINT iNumFilteredRows icstat_num_rows Returns the number of rows in the spreadsheet, excluding the Label row (which is usually R1). For the PARAMETERS spreadsheet, it includes the filtered and deactivated rows. 568 IC-CAP Reference 8 IC-CAP Functions Synopsis: icstat_num_rows(<Spreadsheet -name>) Argument: Spreadsheet Name: Spreadsheet Names: One of the Spreadsheet Names PARAMETERS, ANALYSIS, STATSUMM, CORRELATION, FACTOR LOADINGS, PARAMETER VARIANCE, FACTOR EQUATIONS, PARAMETER EQUATIONS, PARAMETRIC, NON PARAMETRIC Example: iNumRows = icstat_num_rows("PARAMETERS") PRINT iNumRows icstat_open Opens the Statistical Analysis window. Synopsis: icstat_open() Argument: None Example: retVal = icstat_open() return icstat_open_sdf_file Synopsis: Opens the SDF file. icstat_open_sdf_file(<Filename>) Arguments: Filename: name of the SDF file to open. Example: retVal = icstat_open_sdf_file ("/tmp/examples/icstat/bsim3.sdf") return icstat_parameter_2_attribute Changes the Parameters column to an Attribute column in the PARAMETERS spreadsheet. IC-CAP Reference 569 8 IC-CAP Functions Synopsis: Argument: icstat_parameter_2_attribute (<Number>) parameters column number to be changed to attribute type Example: retVal = icstat_parameter_2_attribute(4) return icstat_parametric_models Emulates the Parametric Models command on the Analysis menu. This function either performs the Monte Carlo, corner or boundary modeling analysis. The results are displayed in the PARAMETRIC spreadsheet. Synopsis: icstat_parametric_models(<Number Models/Sigma>, <Type>) Arguments: # Models/Sigma: If Monte Carlo analysis, the value represents the number of Models. If CORNER or BOUNDARY, the value is the +/-sigma. Type: One of MONTE CARLO, CORNER or BOUNDARY Example: retVal = icstat_parametric_models(200, "MONTE CARLO") return icstat_plot_graph Emulates the Plot Graph command on the Graph menu. For the HISTOGRAM or CDF, multiple graphs can be plotted with a single call. For the scatter plot, only 1 graph can be plotted. The scatter plot requires the column numbers of 2 parameters that are to be plotted. Synopsis: 570 icstat_plot_graph IC-CAP Reference 8 IC-CAP Functions Arguments: Input: Array of column numbers to plot Spreadsheet Name: One of the Spreadsheet Names Plot Type: HISTOGRAM, CDF or SCATTER Spreadsheet Names: PARAMETERS, PARAMETRIC Example: complex colArr[2] colArr[0] = 7 colArr[1] = 9 retVal = icstat_plot_graph(colArr, "PARAMETERS", "SCATTER") retVal = icstat_plot_graph(colArr, "PARAMETERS", "HISTOGRAM") retVal = icstat_plot_graph(colArr, "PARAMETERS", "CDF") return icstat_save_sdf_file Saves the data in the PARAMETERS, CORRELATION, FACTOR LOADINGS, PARAMETER VARIANCE, FACTOR EQUATIONS and PARAMETER EQUATIONS analysis spreadsheets to the named SDF file. Synopsis: icstat_save_sdf_file(<Filename>, <Options>) Arguments: Filename: Name of the SDF file to save the data. Options: comma separated value TRUE|FALSE for the spreadsheets. For example: TRUE, TRUE, FALSE, FALSE, FALSE, FALSE Example: retVal = icstat_open() sFileName = "/tmp/examples/icstat/bsim3.sdf" retVal = icstat_open_sdf_file(sFileName) retVal = icstat_save_sdf_file(sFileName, "TRUE, FALSE, FALSE, FALSE, FALSE, FALSE") retVal = icstat_close() return IC-CAP Reference 571 8 IC-CAP Functions icstat_set_cell Sets the value of the particular cell in the PARAMETERS spreadsheet. Note: To set values in a large number of cells, use icstat_set_column or icstat_set_row. Synopsis: icstat_set_cell(<number>, <row-number>, <column-number>) Arguments: Input: Value to set Row Number: Integer Column Number: Integer Example: rVal = 0.6 dummy = icstat_set_cell(rVal, 8, 8) return icstat_set_column Updates the real values in the particular column of the PARAMETERS spreadsheet with new values. The first row (R1), which is usually the label row, is not updated. Synopsis: icstat_set_column(<Input-array>, <Column number>, <Mode>) Arguments: Input: Array containing the values to be set Column Number: Integer Mode: Mode for updating the spreadsheet column “INSERT” inserts a new column “OVERWRITE” overwrites the existing values Example: arrSize = icstat_num_rows("PARAMETERS") complex colArr[arrSize] retArr = icstat_get_column(colArr, 9, "PARAMETERS") dummy = icstat_set_column(retArr, 8, "OVERWRITE") return 572 IC-CAP Reference 8 IC-CAP Functions icstat_set_param_column_labels Updates the PARAMETERS spreadsheet column labels with parameter names from the Parameters table. Synopsis: icstat_set_param_column_labels( <Path>, <From Parameter Table>) Arguments: Path: The name of the model or DUT from which you want to get parameter names. Specify <“model_name”> to get parameters from the Model Parameters table; specify <“model_name/DUT_name”> to get parameters from the DUT Parameters table. (To specify the current DUT, “.” is sufficient.) From: Specify 1 of the following parameter tables from which to get the data: “MODEL PARAMETERS”, “DUT PARAMETERS“. If left blank, “MODEL PARAMETERS” is used. Example: retVal = icstat_set_param_column_labels("/CGaas1", "MODEL PARAMETERS") return icstat_set_row Updates the real values in the specified row of the PARAMETERS spreadsheet with new values. The cells in the attribute columns (the first several columns), which typically contain text, are not updated. To update the cells in the attribute columns, use the icstat_set_text_cell function. Synopsis: IC-CAP Reference icstat_set_row(<Input-array>, <Number>, <Mode>) 573 8 IC-CAP Functions Arguments: Input: Array containing the values to be set Row Number: Integer Mode: Mode for updating the spreadsheet row “INSERT” inserts a new row “OVERWRITE” overwrites the existing values Example: iNumAttribs = icstat_num_attributes() iNumCols = icstat_num_columns("PARAMETERS") iNumCells = iNumCols - iNumAttribs complex rowArr[iNumCells] retArr = icstat_get_row(rowArr, 4, "PARAMETERS") PRINT retArr ! set the 5th row dummy = icstat_set_row(retArr, 4, "INSERT") return icstat_set_text_cell Sets the particular cell in the PARAMETERS spreadsheet with the text in the PARAMETERS spreadsheet. Synopsis: icstat_set_text_cell(<Row-Number>, <Column-Number>, <Text>) Arguments: Row Number: Integer Column Number: Integer Text: Value to be set in the cell Example: sString = "Hi, I am a string" retVal = icstat_set_text_cell(2, 1, sString) retVal = icstat_get_text_cell(2, 2, "PARAMETERS", "CELLVAL") PRINT CELLVAL return 574 IC-CAP Reference 8 IC-CAP Functions icstat_stat_summary Emulates the Statistical Summary command on the Analysis menu. This function generates the statistical summary from the data in the PARAMETERS spreadsheet. Displays the results in the STATSUMM spreadsheet. Synopsis: icstat_stat_summary() Argument: None Example: retVal = icstat_stat_summary() return icstat_to_partable Updates the Parameters table with the corresponding parameter value from the spreadsheet. If a particular spreadsheet parameter is not found in the Parameters table or the Parameters table parameter is not found in the spreadsheet, then the value is not updated. Synopsis: icstat_to_partable(<Row_Number>, <Path>, <From Spreadsheet Name>, <To Parameter Table>) Arguments: IC-CAP Reference Row Number: Row number to get the data from Path: The name of the model or DUT you want to update. Specify <“model_name”> to update the Model Parameters table; specify <“model_name/DUT_name”> to update the DUT Parameters table. (To specify the current DUT, “.” is sufficient.) From: Specify 1 of the following parameter tables from which to get the data: PARAMETERS, ANALYSIS, PARAMETRIC, NON PARAMETRIC 575 8 IC-CAP Functions To: Specify 1 of the following parameter tables to update: “MODEL PARAMETERS”, “DUT PARAMETERS” Example: retVal = icstat_to_partable(4, "/CGaas1", "PARAMETERS", "MODEL PARAMETERS") return icstat_write_to_status_window Writes the input message to the Statistical Analysis Status window. Synopsis: icstat_write_to_status_window (<Text>) Arguments: Message Text: Text to write to the Statistical Analysis Status window. Example: sString = "Setting row number 1" retVal = icstat_write_to_status_window(sString) return integral0 Returns an integral of the given Y data set against the X data set using a simple trapezoid algorithm. The Y data set should not cross the zero point. If the Y data set has multiple curves, use integral3. Defined in userc.c. Input Arguments: Data Sets: Output: X Data, Y Data Single real Automatic Invocation: On Data Set Input Change integral3 Returns an integral of the given Y data set against the X data set using a simple trapezoid algorithm. Each curve is reported separately in the Output array. A zero cross is allowed by interpolation. Defined in userc.c. 576 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Data Sets: Output: X Data, Y Data Real array Automatic Invocation: On Data Set Input Change JUNCAP Philips JUNCAP (Junction Capacitance) Model. Calculates the currents and capacitances from voltages. Input Arguments: Data Sets: Anode V, Cathode V Strings/Pars/Vars: Output ( I / IB / IS / IG / C / CB / CS / CG / Q / QB / QS / QG ) Output: Array of complex, size determined by inputs Extracts: N/A JUNCAP_TR Allows the reference temperature of the model TR in the JUNCAP model to be modified. K707_init Keithley 707 Switch Matrix function. Initialize the 707 matrix. Do not use this function with the 708a matrix. Syntax int ret = K707_init(MatrixGPIBAddr) Where MatrixGPIBAddr is the GPIB address of the matrix Examples: ret = K707_init(6) // Init matrix at address 6 K708a_init Keithley 708a Switch Matrix function. Initialize the 708a matrix. Do not use this function with the 707 matrix. Syntax int ret = K708a_init(MatrixGPIBAddr) IC-CAP Reference 577 8 IC-CAP Functions Where MatrixGPIBAddr is the GPIB address of the matrix Examples: ret = K708a_init(6) // Init matrix at address 6 K70X_clear_setup Keithley 707 Switch Matrix function. Clears setup (opens all relays). Syntax int ret = K70X_clear_setup(MatrixGPIBAddr, Setup) Where MatrixGPIBAddr is the GPIB address of the matrix Setup: setup to be cleared (all crosspoints are opened) SetUp can be a memory setup or the actual relays configuration 0 <= SetUp < 100. Examples: ret = K70X_clear_setup(6, 0) open all relays in the actual matrix configuration ret = K70X_clear_setup(6, 1) open all relays in the memory setup number 2 K70X_close_crosspoints Keithley 707 Switch Matrix function. Closes crosspoints in the matrix. Syntax int ret = K70X_close_crosspoints(MatrixGPIBAddr, CrosspointList) Where MatrixGPIBAddr is the GPIB address of the matrix CrosspointList: List of the crosspoint to be close (string). Example: ret = K70X_close_crosspoints(6, “A1,C12”) opens the crosspoints specified in the list in the current edited setup specified by the K70X_edit_setup function. 578 IC-CAP Reference 8 IC-CAP Functions K70X_config_trigger Keithley 707 Switch Matrix function. Configures trigger. Syntax int ret = K70X_config_trigger(MatrixGPIBAddr, TriggerEdge, TriggerSource) Where MatrixGPIBAddr is the GPIB address of the matrix. TriggerEdge: “+” or “-” TriggerSource: Possible configurations: “TALK” “GET” “X” “EXT” “MAN” Example: ret = K70X_config_trigger(6, “+”, “EXT”) sets the switch matrix to execute when receiving a positive edge from an external trigger. See 70X manual for a more detailed explanation about triggering the matrix. K70X_connect_sequence Keithley 707 Switch Matrix function. Sets the connection rule and the row connection sequence. Syntax int ret = K70X_connect_sequence(MatrixGPIBAddr, ConnectionRule, RowConnectionSequence) Where MatrixGPIBAddr is the GPIB address of the matrix ConnectionRule: Break before Make “BM” or “MB” RowConnectionSequence: byte row enable. Ex.: “11110011” Example: ret = K70X_connect_sequence(6,“BM”,“11110011”) K70X_copy_setup Keithley 707 Switch Matrix function. Copy setup into a new memory or actual location. Syntax int ret = K70X_copy_setup(MatrixGPIBAddr, Source, Destination) IC-CAP Reference 579 8 IC-CAP Functions Where MatrixGPIBAddr is the GPIB address of the matrix Source: Setup to be copied from. Destination: Setup to be copied to. Example: ret = K70X_copy_setup(6, 3, 0) copies the memory setup 3 into the setup 0 (actual matrix configuration). In other words, it executes setup 3. K70X_debug Keithley 707 Switch Matrix function. Sets debug flag on or off. When the debug mode is on, the functions will print debug information in the Warning/Error window Syntax int ret = K70X_debug(Debugflag) Where DebugFlag: 1/0 (Default is 0) K70X_delete_setup Keithley 707 Switch Matrix function. Deletes setup from memory. Syntax int ret = K70X_delete_setup(MatrixGPIBAddr, MemSetup) Where MatrixGPIBAddr is the GPIB address of the matrix MemSetup: memory setup to be deleted. 1< MemSetup < 100 Example: ret = K70X_delete_setup(6, 3) deletes memory setup number 3. 580 IC-CAP Reference 8 IC-CAP Functions K70X_edit_setup Keithley 707 Switch Matrix function. Sets the setup number to be edited with the following close and open commands. Note that setup number 0 represents the matrix actual configuration while Setup 1 to 100 represents memory setups. Syntax int ret = K70X_edit_setup(MatrixGPIBAddr, SetUp) Where MatrixGPIBAddr is the GPIB address of the matrix SetUp: Number of the setup to edit with the next close and open commands. Example: ret = K70X_edit_setup(6, 1) sets to edit the memory setup number 1. K70X_init_interface Keithley 708a and 707 Switch Matrix function. Initialize the interface card or lan. It must be executed prior to any other Keithley transform. Syntax int ret = K70X_init_interface(InterfaceName) Where InterfaceName is the hardware interface. Examples: ret = K70X_init_interface(“hpib”) ret = K70X_init_interface(“gpib0”) ret = K70X_init_interface(“lan[xx.xx.xx.xx]:hpib”) K70X_open_crosspoints Keithley 707 Switch Matrix function. Opens crosspoints in the matrix. Syntax int ret = K70X_open_crosspoints(MatrixGPIBAddr, CrosspointList) Where IC-CAP Reference 581 8 IC-CAP Functions MatrixGPIBAddr is the GPIB address of the matrix CrosspointList: List of the crosspoint to be open (string). Example: ret = K70X_open_crosspoints(6, “A1,C12,D1”) opens the crosspoints specified in the list in the current edited setup specified by the K70X_edit_setup function. K70X_trigger_disable Disables trigger. Keithley 707 Switch Matrix function. Syntax int ret = K70X_trigger_disable(MatrixGPIBAddr) Where MatrixGPIBAddr is the GPIB address of the matrix. Example: ret = K70X_trigger_disable(6) K70X_trigger_enable Enables trigger. Keithley 707 Switch Matrix function. Syntax int ret = K70X_trigger_enable(MatrixGPIBAddr) Where MatrixGPIBAddr is the GPIB address of the matrix. Example: ret = K70X_trigger_enable(6) linfit Fits a line to a specified curve (step) in a data set (X versus Y). Returns a 3 point data set that defines slope, intercept and regression coefficient. The index of steps starts at 0. If the OVERRIDE_LIMITS variable is TRUE, the limits can be specified manually with the X_LOW and X_HIGH variables, which can be set from the Plot menu. (Use the fit_line function to enable plotting of the data set, rather than the slope and intercept.) 582 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Data Sets: X Data, Y Data Reals or Integers: Step Number (0 is first) Output: Array of 2 points: slope then intercept Automatic Invocation: None Example PEL Statement: fit_data = linfit(vc,ic.m,0) LINKarray Returns an array result from an IC-CAP Macro algorithm to an IPC Link program during linked mode execution. This function is used internally by IPC Link programs and should never be called directly when using IC-CAP interactively. Input Arguments: Data Sets: Array Result Reals or Integers: Array Size, Result Data Index Output: None Automatic Invocation: None LINKchar Returns a single character result from an IC-CAP Macro algorithm to an IPC Link program during linked mode execution. This function is used internally by IPC Link programs and should never be called directly when using IC-CAP interactively. Input Arguments: Reals or Integers: Result Data Index Strings/Pars/Vars: Character Result Output: None Automatic Invocation: None IC-CAP Reference 583 8 IC-CAP Functions LINKint Returns an integer result from an IC-CAP Macro algorithm to an IPC Link program during linked mode execution. This function is used internally by IPC Link programs and should never be called directly when using IC-CAP interactively. Input Arguments: Reals or Integers: Output: Integer Result, Result Data Index None Automatic Invocation: None LINKpin Used in an IC-CAP Macro to determine the matrix connections of the device under test. LINKpin returns the matrix pin number that corresponds to a specified terminal index on the device. This function only returns valid data when an IPC Link program has provided a pin mapping. Input Arguments: Reals or Integers: Output: Terminal Index Matrix pin number corresponding to the specified device terminal index Automatic Invocation: None Example PEL Statement: pin_num = LINKpin(1) LINKreal Returns a floating point result from an IC-CAP Macro algorithm to an IPC Link program during linked mode execution. This function is used internally by IPC Link programs and should never be called directly when using IC-CAP interactively. Input Arguments: Reals or Integers: Output: 584 Real Result, Result Data Index None IC-CAP Reference 8 IC-CAP Functions Automatic Invocation: None LINKstr Used to return a character string result from an IC-CAP Macro algorithm to an IPC Link program during linked mode execution. This function is used internally by IPC Link programs and should never be called directly when using IC-CAP interactively. Input Arguments: Result Data Index: Output: String Result None Automatic Invocation: None log Natural logarithm. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change log10 Base 10 logarithm. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change IC-CAP Reference 585 8 IC-CAP Functions lookup_par Enables you to access the value of a parameter referenced by a string. A second argument may be specified that is a variable to receive any error string normally going to a red error box. Example — looking up value for model parameter: x=lookup_par("/npn.IS") Example — looking up value for DUT parameter: x=lookup_par(“/NPN/dc.rgate”) Example — checking existence of parameter: x=lookup_par("nonexistantparam",errstr) if errstr<>"" then print errstr lookup_var Enables you to access the value of a variable referenced by a string. A second argument may be specified that is a variable to receive any error string normally going to a red error box. Example — looking up value for model variable: x=lookup_var("/npn/SIMULATOR") Example — looking up value for DUT variable: x=lookup_var(“/NPN/dc/TEMP”) Example — looking up value for Setup variable: x=lookup_var(“/NPN/dc/fgummel/Vdmax”) Example — checking existence of variable: x=lookup_var("nonexistantvar",errstr) if errstr<>"" then print errstr mean Calculates the arithmetic mean of a data set. Returns a single value. Adequate for a real or complex data set, but if a data set of matrices is received, only the 1,1 data is considered. A data set specification like S.21 is adequate, since this is a data set of complex numbers. Input Arguments: Data Sets: Output: Input 1 Single real or complex number Automatic Invocation: On Data Set Input Change 586 IC-CAP Reference 8 IC-CAP Functions mem_diag This function is reserved for factory use; it is used in memory utilization regression tests, as part of the IC-CAP quality assurance process. Output: A 12-point data set containing memory utilization statistics Automatic Invocation: None MEXTRAM_stoc Mextram model version: 504 This function calculates capacitance data from S-parameter data, allowing base-collector and base-emitter capacitance to be calculated from network analyzer measurements. The output of this function can be used in place of actual capacitance data to extract capacitance-related parameters. Input Arguments: FREQ data Frequency S data s-parameter data (de-embedded) Node (C/E/S) Code to indicate type of extraction: E base-emitter capacitance C base-collector capacitance S substrate-collector capacitance Output: Capacitance versus frequency data Extracts: Nothing MM9 Calculates Id, Is or Ib from voltages. Input Arguments: IC-CAP Reference Data Sets: Drain V, Gate V, Bulk V, Source V Strings/Pars/Vars: Output ( D / S / B ) Output: Drain I / Source I / Bulk I - array of complex, size determined by inputs Extracts: None 587 8 IC-CAP Functions MM9_COPY Copies an input array to a measured or simulated output dataset. Input Arguments: Data Sets: Copy from ( Dataset Name) Strings/Pars/Vars: Copy to (Dataset Name) M or S Output: MM9_DATA extraction. None Enables printing of the data measured for quick Input Arguments: “” or “<filename>” Example: x = MM9_DATA(““) or x = MM9_DATA(“mm9_print“) If no argument is supplied, the data will be printed to the Status window; if a filename is supplied, the data will be appended to that file. MM9_GEOMPAR Updates the simulated values of the miniset parameters in the setups extract/par_vs_L, extract/par_vs_W and extract/par_vs_R in the MOS Model 9. MM9_GEOMSCAL Determines a first guess for the maxiset parameters of a MOS Model 9 by regression. MM9_KEEP Accepts an input array and copies it directly to the transform output. Input Arguments: Data Sets: Output: 588 Keep array (Dataset name) Array of complex, size determined by inputs IC-CAP Reference 8 IC-CAP Functions MM9_LIN_EXT MOS Model 9. Extracts the linear region parameters for the Input Arguments: None Extracts: VTO, KO, K, VSBX, BET, THE1, THE2 MM9_SAT_EXT Extracts the saturation region parameters for the MOS Model 9. Input Arguments: None Extracts: THE3, GAM1, ETADS, ALP, VP MM9_SAVE_SPARS Saves the MOS Model 9 parameters of a single device (miniset) to a file. MM9_SETUP Allows you to specify the setups for the MOS Model 9 parameter extraction. MM9_STH_EXT Extracts the subthreshold region parameters for the MOS Model 9. Input Arguments: None Extracts: GAMOO, MO, ZET1, VSBT MM9_TEMPPAR Updates the simulated values of the miniset parameters in the setups extract/par_vs_T in the MOS Model 9. MM9_TEMPSCAL Determines a first guess for the maxiset temperature parameters of a MOS Model 9 by regression. MM9_WEAVAL_EXT Extracts the weak avalanche region (substrate current) parameters for the MOS Model 9. IC-CAP Reference 589 8 IC-CAP Functions Input Arguments: None Extracts: A1, A2, A3 MOS_process_pars Allows you to specify initial values for the MOS process related parameters LD, RS, RSH, TOX, WD, and XJ. The drain resistance RD is set equal to the specified value of RS. Input Arguments: Data Sets: Lateral Diffusion, Source Resistance, Sheet Resistance, Oxide Thickness, Width Reduction, Junction Depth Output: None Extracts: (not applicable) Automatic Invocation: By Extract menu function MOSCV_total_cap Extracts the total PN junction capacitance parameters from the bottom and sidewall. Requires C-V measurement on 2 different geometries. The first measurement should be on a device in which the bottom capacitance dominates. The second measurement should be on a device in which the sidewall capacitance dominates. Input Arguments: Data Sets: Cap 1, Cap 2, Junction V Reals or Integers: Cap 1 Area, Cap 1 Perim, Cap 2 Area, Cap 2 Perim Output: None Extracts: CJ, MJ, CJSW, MJSW, PB Automatic Invocation: By Extract menu function MOSCVmodCBD Calculates the Bulk-Drain junction capacitance according to the UCB MOS model. 590 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Data Sets: Output: Junction V Array of complex; size determined by inputs Automatic Invocation: None MOSCVmodCBS Calculates the Bulk-Source junction capacitance according to the UCB MOS model. Input Arguments: Data Sets: Output: Junction V Array of complex; size determined by inputs Automatic Invocation: None MOSDC_lev2_lin_large Standard extraction for the UCB MOS model. Extracts classical Level 2 parameters, using Id versus Vg data from a large device. Initializes the parameter NFS for later optimization. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: VTO, NSUB, UO, UEXP, VMAX Automatic Invocation: By Extract menu function MOSDC_lev2_lin_narrow Standard extraction for the UCB MOS model. Extracts Level 2 width parameters, using Id versus Vg data from a narrow device. Input Arguments: Data Sets: Output: IC-CAP Reference Gate V, Bulk V, Drain V, Drain I None 591 8 IC-CAP Functions Extracts: WD, DELTA Automatic Invocation: By Extract menu function MOSDC_lev2_lin_short Standard extraction for the UCB MOS model. Extracts Level 2 length effect parameters, using Id versus Vg data from a short-channel device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: XJ, LD Automatic Invocation: By Extract menu function MOSDC_lev2_sat_short Standard extraction for the UCB MOS model. Extracts Level 2 saturation parameters, using Id versus Vd data from a short-channel device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: VMAX, NEFF Automatic Invocation: By Extract menu function MOSDC_lev3_lin_large Standard extraction for the UCB MOS Level 3 model. Extracts classical Level 3 parameters, using Id versus Vg data from a large device. Initializes the parameter NFS for later optimization. Input Arguments: Data Sets: 592 Gate V, Bulk V, Drain V, Drain I Output: None Extracts: VTO, NSUB, UO, THETA, VMAX IC-CAP Reference 8 IC-CAP Functions Automatic Invocation: By Extract menu function MOSDC_lev3_lin_narrow Standard extraction for the UCB MOS Level 3 model. Extracts Level 3 width parameters, using Id versus Vg data from a narrow device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: WD, DELTA Automatic Invocation: By Extract menu function MOSDC_lev3_lin_short Standard extraction for the UCB MOS Level 3 model. Extracts Level 3 length effect parameters, using Id versus Vg data from a short device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: RS, RD, LD, XJ Automatic Invocation: By Extract menu function MOSDC_lev3_sat_short Standard extraction for the UCB MOS Level 3 model. Extracts Level 3 saturation parameters, using Id versus Vd data from a short device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: VMAX, KAPPA, ETA Automatic Invocation: By Extract menu function IC-CAP Reference 593 8 IC-CAP Functions MOSDC_lev6_lin_large Standard extraction for the HSPICE MOS Level 6 model. Extracts classical Level 6 parameters, using Id versus Vg data from a large device. Initializes the parameter NFS for later optimization. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: PHI, VT, LGAMMA, GAMMA, VBO, LAMBDA, UB, NFS Automatic Invocation: By Extract menu function MOSDC_lev6_lin_narrow Standard extraction for the HSPICE MOS Level 6 model. Extracts Level 6 width parameters, using Id versus Vg data from a narrow device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: NWM, WDEL, DELTA Automatic Invocation: By Extract menu function MOSDC_lev6_lin_short Standard extraction for the HSPICE MOS Level 6 model. Extracts Level 6 length effect parameters, using Id versus Vg data from a short device. Input Arguments: Data Sets: Gate V, Bulk V, Drain V, Drain I Output: None Extracts: SCM, XJ, LDEL Automatic Invocation: By Extract menu function 594 IC-CAP Reference 8 IC-CAP Functions MOSmodel Simple, level 1 UCB MOS model. Calculates Id from voltages. Input Arguments: Data Sets: Output: Drain V, Gate V, Bulk V, Source V Array of complex; size determined by inputs Automatic Invocation: None MOSmodel2 Complete UCB MOS model, containing levels 1, 2, and 3. Calculates Id from voltages. Input Arguments: Data Sets: Output: Drain V, Gate V, Bulk V, Source V Array of complex; size determined by inputs Automatic Invocation: None MXT_cbc Mextram model version: 504 This function calculates the total base-collector depletion capacitance Cbc vs. bias given vbc. Inputs: VBC: Output: base-collector voltage calculated total base-collector capacitance. See Philips Report NL-UR 2001/801, section 2.5.2 for more details. MXT_cbe Mextram model version: 504 This function calculates the total base-emitter depletion capacitance Cbe vs. bias given vbe. IC-CAP Reference 595 8 IC-CAP Functions Inputs: VBE: base-emitter voltage Output: calculated total base-emitter depletion capacitance. See Philips Report NL-UR 2001/801, section 2.5.1 for more details. MXT_cj0 Mextram model version: 504 This function extracts the zero-bias junction capacitance, Cje0, Cjc0 or Cjs0 depending on which Output mode is selected: E/C/S. The total bias range needs to include V = 0 V, but it is not necessary that one of the Vj value is indeed zero. See Philips Report NL-UR 2001/801, sections 2.5.1-2.5.3 for more details. MXT_csc Mextram model version: 504 This function calculates the total substrate-collector depletion capacitance Csc vs. bias given vsc. Inputs: VSC: Output: substrate-collector voltage calculated total substrate-collector depletion capacitance. See Philips Report NL-UR 2001/801, section 2.5.3 for more details. MXT_forward_hfe Mextram model version: 504 This function calculates hfe given veb,vcb and ic.m. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0 the transform will use the measured collector current to determine the upper limit for extracting the parameters: BF, IBF and MLF. This limit is determined by the onset of 596 IC-CAP Reference 8 IC-CAP Functions high-injection. The function is used in the dc_gummel/Forward setup to extract the non ideal base current parameters IBF, MLF and the forward current gain BF. Inputs: VEB: emitter-base voltage. VCB: collector-base voltage (it should be constant) IC: measured collector current Output: forward current gain Ic//Ib See Philips Report NL-UR 2001/801, section 2.5.8 for more details. MXT_forward_ic Mextram model version: 504 This function calculates ic given veb and vcb. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0 this transform will also require ic.m as an input. The transform uses the measured collector current to determine the upper limit for extracting the parameter: IS. This limit is set by the onset of high-injection. The function is used to extract IS in the setup dc_gummel/Forward. Inputs: IC-CAP Reference VEB: emitter-base voltage. VCB: collector-base voltage (this should be constant in a forward gummel plot ) IC: measured collector current (used for auto-ranging) Output: calculated ideal forward collector current (DO NOT include series resistances, high injection, quasi-sat etc.) 597 8 IC-CAP Functions See Philips Report NL-UR 2001/801, section 2.5.7 for more details. MXT_forward_vbe Mextram model version: 504 This function calculates vbe given vcb, ic.m and ib.m. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0, the transform will also require veb (ve-vb) as an input. The transform is used to optimize RE in the setup dc_gummel/Forward. Inputs: IC: measured collector current. IB: measured base current. VEB: external measured Veb (used for auto-ranging only) Output: external voltage Vbe. See Philips Report NL-UR 2001/801, section 2.5.9 for more details. MXT_ft Mextram model version: 504 This function calculates the cut-off frequency fT as a function of Ic, Vbe and Vce. The function is used to extract the transit time parameters as well as several other high current parameters. Inputs: IC: measured collector current. VBE: base-emitter voltage. VCE: collector-emitter voltage. Output: calculated fT. See Philips Report NL-UR 2001/801, section 2.6 for more details. 598 IC-CAP Reference IC-CAP Functions MXT_hard_sat_isub 8 Mextram model version: 504 This function calculates the substrate current in hard saturation. It is used in the dedicated setup dc_paras/Rc_active to extract the parameter RCC. Inputs: VBC: base-collector voltage. IC: measured collector current. IB: measured base current. Output: calculated substrate current in hard saturation. See Philips Report NL-UR 2001/801, section 2.5.10 for more details. MXT_ic_vce Mextram model version: 504 This function calculates the collector current or the base emitter voltage (depending on the selected Output) as function of the voltage difference Vce and the base current Ib. Ic is used to correct for series resistances. Vbe and Is are used for setting initial values in the calculation and for auto-ranging. NO TE Auto-ranging is always ON for this function, regardless of the value of the variable MXT_AUTO_RANGE. The function is used to extract the model variable RTH (thermal resistance) and several other parameters in combination with the MXT_ft transform. RTH along with Ic and Vce are used to calculate a new simulation temperature. To remove RTH’s influence on the simulation temperature, set RTH to zero. IC-CAP Reference 599 8 IC-CAP Functions Inputs: VCE: collector-emitter voltage. IB: measured base current. IC: measured collector current. VBE: base-emitter voltage. ISUB: measured substrate current. Output [i/v]: choice of collector current (i) or base-emitter voltage (v) Avalanche [y/n]: Yes/No flag. Output: calculated collector current or base-emitter voltage. See Philips Report NL-UR 2001/801, section 2.6 for more details. MXT_I0 Mextram model version: 504 This function extracts either IE0, IC0, or IB0 depending on which Output mode is selected: E/C/B. The function requires a terminal current as input. This transform uses the array of current data Idata and takes the first value at index 0. The I0 value can be used in the forward-Early and reverse-Early measurements to get a first estimate of the current offset. The subsequent optimizations, which require either IE0, IB0 or IC0, provide more robust results. Sometimes the optimizer will have trouble converging to a proper solution if these currents are too far from their final values. Inputs: Idata: dataset with current data Choice of outputs: E/C/B Output: 600 Sets the value of the model variables IE0,IC0 or IB0 IC-CAP Reference 8 IC-CAP Functions See Philips Report NL-UR 2001/801, section 2.5.4-2.5.6 for more details. MXT_jun_cap Mextram model version: 504 This function calculates Cbe, Cbc, or Csc vs junction voltage given vbe, vbc, or vsc. This function combines the functionalities of the 3 functions: MXT_cbe, MXT_cbc, MXT_csc. Input Arguments: VJUN junction voltage: vbe, vbc, or vsc OUTPUT: E/C/S Code to indicate which junction to calculate E (default) Cbe: requires vbe as VJUN input C Cbc: requires vbc as VJUN input S Csc: requires vsc as VJUN input Output: MXT_reverse_currents junction capacitance vs junction voltage data Mextram model version: 504 Selecting Output=B calculates ib given vbc, vbe and ie. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0, the transform will use the measured emitter current to determine the lower limit for extracting the parameters: XEXT and IKS. This limit is set by the onset of high-injection. Selecting Output=S calculates is given vbc, vbe and ie. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0, the transform will use the measured emitter current to determine the lower limit for extracting the parameters: XEXT and IKS. This limit is set by the onset of high-injection. Selecting Output=E calculates ie given vbc, vbe and ie. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0, the transform will use the measured emitter current to IC-CAP Reference 601 8 IC-CAP Functions determine the lower limit for extracting the parameters: XEXT and IKS. This limit is set by the onset of high-injection. Inputs: VBC: base-collector voltage. VBE: base-emitter voltage. IE: measured emitter current (for auto-ranging only) Output [E/B/S]: select: E for emitter current B for base current S for substrate current Output: calculated reverse current (emitter/base or substrate). See Philips Report NL-UR 2001/801, section 2.6.7 for more details. MXT_reverse_hfc Mextram model version: 504 This function calculates HFC (ie/ib) given veb, vcb and ie.m. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0, the transform uses the measured emitter current to determine the upper limit for extracting the parameter BR, IBR, VLR. This limit is set by the onset of high-injection. This transform has an additional input: substrate (y/n). This is used to calculate the reverse beta with or without the addition of the substrate current. Inputs: 602 VCB: collector-base voltage. VEB: emitter-base voltage. IE: measured emitter current (for auto-ranging only) I Substrate [Y/N]: yes or no field. IC-CAP Reference 8 IC-CAP Functions Output: calculated reverse current gain Hfc= Ie//Ib = Ie/(Iex+Ib3+Isub) See Philips Report NL-UR 2001/801, section 2.5.12 for more details. MXT_reverse_hfc_sub Mextram model version: 504 This function calculates the substrate to emitter current gain: HFCsub (-ie/is) given veb and vcb. The function is used in the setup dc_gummel/Reverse to extract the parameter ISS. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0, the transform will require 2 additional inputs: emitter and substrate currents (ie) & (is). The transform uses the measured emitter & substrate currents to determine the upper limit for extracting the parameter ISS. This limit is set by the onset of high-injection in both the emitter and substrate currents. Inputs: VEB: emitter-base voltage. VCB: collector-base voltage. IE: measured emitter current IS: measured substrate current. Output: calculated substrate to emitter current gain Ie//Isub See Philips Report NL-UR 2001/801, section 2.5.11 for more details. MXT_reverse_isub Mextram model version: 504 This function calculates the substrate current for low reverse conditions. It can be used to extract the parameter ISS, however Philips recommends another method (see section 2.5.11). IC-CAP Reference 603 8 IC-CAP Functions Inputs: VBC: base-collector voltage (positive as transistor reverse biased) IS: measured Is (used for auto-ranging only) Output: calculated substrate current Isub = ISS*(exp(Bbc/VT)-1) where VT is the thermal voltage. See Philips Report NL-UR 2001/801, section 2.5.11 for more details. MXT_show_parms Mextram model version: 504 This function prints all the Mextram parameters at the actual ambient temperature set by the variable TEMP. The functions will use these parameters in their calculations. See Philips Report NL-UR 2001/801, section 5.1.1 for more details. mxt_smooth This function is obsolete. This function performs a smoothing function on the data. Input Arguments: Y Data unitless Smooth Points number of points on either side of data point to be use for smoothing. 0 = disable Smooth Iter number of iterations that smoothing algorithm is performed on data. 0 = disable Output: 604 Smoothed data. IC-CAP Reference 8 IC-CAP Functions MXT_veaf_ib Mextram model version: 504 This function calculates the base current in a forward early measurement. It is used in the setup dc_early_avl/Fwd_early to extract the avalanche parameters VAVL and WAVL. Inputs: VCB: collector-base voltage. IC: measured collector current. the function uses the model variable IB0 Output: calculated base current See Philips Report NL-UR 2001/801, section 2.5.4 for more details. MXT_veaf_ic Mextram model version: 504 This function calculates forward current ic given vcb, veb and the model variable IC0. When the MODEL variable MXT_AUTO_RANGE is set to the value 1.0, the transform will require one additional input: base current ib. The transform uses the measured base current to determine the onset of weak avalanche breakdown. This sets the upper limit of the optimization, opt_Veaf. Inputs: VCB: collector-base voltage. VEB: emitter-base voltage (this should be constant). IB: measured base current, used for autorange only. the function uses the model variable IC0 Output: IC-CAP Reference calculated collector current Ic (transistor forward bias) 605 8 IC-CAP Functions See Philips Report NL-UR 2001/801, section 2.5.6 for more details. MXT_vear_ie Mextram model version: 504 This function calculates ie when the base emitter junction is reversed biased, and the base collector junction is forward biased. Vcb is assumed to be constant. The function is used in the setup dc_early_avl/Rev_early to extract the parameter VER. Inputs: VEB: emitter-base voltage. VCB: collector-base voltage (it should be constant and > 0). the function uses the model variable IE0. Output: emitter current Ie (transistor reverse biased) See Philips Report NL-UR 2001/801, section 2.5.5 for more details. MXT_VEF Mextram model version: 504 This function calculates a starting value for the parameter VEF. The Model Parameter list is updated and the extracted value is printed in the status window. To extract VEF, run this transform first and then optimization opt_VEF in the setup dc_early_avl/Fwd_early. Input Argument: VCB: collector-base voltage. IC: measured collector current See Philips Report NL-UR 2001/801, section 2.5.6 for more details. 606 IC-CAP Reference IC-CAP Functions MXT_VER 8 Mextram model version: 504 This function calculates a starting value for the parameter VER. The Model Parameter list is updated and the extracted value is printed in the status window. To extract VER, run this transform first and then optimization opt_VER in the setup dc_early_avl/Rev_early. Input Argument: VCB: collector-base voltage. IC: measured collector current See Philips Report NL-UR 2001/801, section 2.5.5 for more details. mxt3t_cbc This function is obsolete. This function calculates Cbc verses base collector junction voltage. Input Arguments: Vbc Vbc Voltage (V) Output: mxt3t_cbe Cbc This function is obsolete. This function calculates Cbe verses base emitter junction voltage. Input Arguments: Vbe Output: IC-CAP Reference Vbe Voltage (V) Cbe 607 8 IC-CAP Functions mxt3t_cj0 This function is obsolete. This function extracts the zero-bias junction capacitance, Cje0, or Cjc0 depending on which Output mode is selected: E/C/S. Input Arguments: Junction Voltage V Junction Capacitance C Junction: E, C Output: mxt3t_ft_ic Cje or Cjc depending on Junction argument This function is obsolete. This function calculates FT given Ic, Vbe, and Vce. NO TE This function does not describe Ft when quasi saturation kicks in. Use mxt3t_ft_ic_new instead. Input Arguments: Ic Collector Current (A) Vbe Base Emitter Voltage (V) Vce Vce Voltage (V) Output: mxt3t_ft_ic_new Ft This function is obsolete. This function calculates FT given Ic, Vbe, and Vce. NO TE 608 This new function now includes quasi but not heavy saturation. IC-CAP Reference 8 IC-CAP Functions Input Arguments: Ic Collector Current (A) Vbe Base Emitter Voltage (V) Vce Vce Voltage (V) Output: mxt3t_fwd_early_ib Ft This function is obsolete. This function calculates the fwd early base current for a 3 terminal device given Vcb and Ic. Input Arguments: Vcb Vcb Voltage (V) ic Ic current (A) Output: mxt3t_fwd_early_ic Forward Early base current. This function is obsolete. This function calculates the fwd early collector current for a 3 terminal device given Vbe and Vbc. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Output: mxt3t_fwd_gummel_hfe Forward Early collector current. This function is obsolete. This function calculates forward gummel HFE for a 3 terminal device given Vbe, Vbc, and Ic. The HFE limit input limits HFE to the value entered. This is used to limit HFE in the region outside of the function's applicable range. IC-CAP Reference 609 8 IC-CAP Functions Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ic Collector Current (A) HFE Limit Maximum HFE to be displayed. Output: mxt3t_fwd_gummel_ib Forward Gummel HFE This function is obsolete. This function calculates the forward gummel base current for a 3 terminal device given Vbe, Vbc, and Ic. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ic Collector Current (A) Output: mxt3t_fwd_gummel_ic Forward Gummel Base current. This function is obsolete. This function calculates forward gummel collector current for a 3 terminal device given Vbe, Vbc. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Output: mxt3t_fwd_gummel_vbe Forward Gummel Collector current. This function is obsolete. This function calculates forward gummel base-emitter voltage for a 3 terminal device given Ib and Ic. 610 IC-CAP Reference 8 IC-CAP Functions Input Arguments: ib Base current (A) Ic Collector Current (A) Output: mxt3t_i0 Forward Gummel Vbe. This function is obsolete. This function extracts either IE0, IC0 or IB0 depending on which Output mode is selected: E/C/B. The function requires a terminal current as input. This transform was written to make the subsequent optimizations, which require either IE0, IB0 or IC0, more robust. Sometimes the optimizer would have trouble converging to a proper solution if these currents were too far from their final values. Input Arguments: I Data (A) Output: E, C, B Output: mxt3t_linear_range IE0, IC0, IB0 depending on Output Argument This function is obsolete. This function calculates the 2nd derivative of a dataset. It enables the user to see where the data is linear. This is useful in determining the valid range of mextram functions. Input Arguments: IC-CAP Reference Y Data unitless X Data unitless (must be uniform steps) Smooth Points number of points on either side of data point to be use for smoothing. 0 = disable 611 8 IC-CAP Functions Smooth Iter number of iterations that smoothing algorithm is performed on data. 0 = disable Log Data ? Log the data before the smoothing or derivative functions are applied Output: mxt3t_output_ic 2nd derivative of the Y Data. This function is obsolete. This function calculates collector current output characteristics given Vce, Ic, Ib, and Vb. It is intended to model the quasi-saturation region of the transistor. Input Arguments: Vce Vce Voltage (V) Ic Collector Current (A) Ib Base Current (A) Vb Base Voltage (V) Output: mxt3t_output_vbe Collector Current This function is obsolete. This function calculates base-emitter voltage Vce, Ic, Ib, and Vb. It is used to estimate the thermal resistance of the device. Input Arguments: Vce Vce Voltage (V) Ic Collector Current (A) Ib Base Current (A) Vb Base Voltage (V) Output: 612 Base Emitter Voltage IC-CAP Reference 8 IC-CAP Functions mxt3t_rev_early_ie This function is obsolete. This function calculates the reverse early emitter current for a 3 terminal device given Vbe and Vbc. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Output: Reverse Early emitter current. mxt3t_rev_early_qb0_guess This function is obsolete. This function calculates QBO based on the following formula: QBO = IE0*(1-XCJE)*CJE*(dvbe/die @ vbe=0) The function requires ie and vbe as inputs and the model parameters mex.CJE, mex.XCJE and the model variable IE0. This transform was written for 2 reasons: (1) the optimization used to determine its final value can get lost if the initial value is way off; (2) The value of QBO is used to determine the initial values of other parameters. Therefore, the more accurate the value of QBO the more accurate these other parameters will be. Input Arguments: Vbe Vbe Voltage (V) Ie Emitter Current (A) Output: mxt3t_rev_gummel_hfc QB0 This function is obsolete. This function calculates the reverse gummel HFC for a 3 terminal device given Vbe, Vbc, and Ie. IC-CAP Reference 613 8 IC-CAP Functions Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ie Emitter Current (A) Output: Reverse Gummel HFC. mxt3t_rev_gummel_ib This function is obsolete. This function calculates the reverse gummel base current for a 3 terminal device given Vbe, Vbc, and Ie. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ie Emitter Current (A) Output: Reverse Gummel Base current. mxt3t_rev_gummel_ie This function is obsolete. This function calculates the reverse gummel emitter current for a 3 terminal device given Vbe, Vbc, and Ie. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ie Emitter Current (A) Output: mxt4t_cbc Reverse Gummel Emitter current. This function is obsolete. This function calculates Cbc verses base collector junction voltage. 614 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Vbc Vbc Voltage (V) Output: mxt4t_cbe Cbc This function is obsolete. This function calculates Cbe verses base emitter junction voltage. Input Arguments: Vbe Vbe Voltage (V) Output: mxt4t_cj0 Cbe This function is obsolete. This function extracts the zero-bias junction capacitance, Cje0, Cjc0 or Cjs0 depending on which Output mode is selected: E/C/S. Input Arguments: Junction Voltage V Junction Capacitance C Junction: E, C, S Output: mxt4t_csc Cje, Cjc, or Cjs depending on Junction argument This function is obsolete. This function calculates Csc verses collector junction voltage. Input Arguments: Vsc Output: IC-CAP Reference Vsc Voltage (V) Csc 615 8 IC-CAP Functions mxt4t_ft_ic This function is obsolete. This function calculates FT given Ic, Vbe, and Vce. NO TE This function does not describe Ft when quasi saturation kicks in. Use mxt4t_ft_ic_new instead. Input Arguments: Ic Collector Current (A) Vbe Base Emitter Voltage (V) Vce Vce Voltage (V) Output: mxt4t_ft_ic_new Ft This function is obsolete. This function calculates FT given Ic, Vbe, and Vce. NO TE This new function now includes quasi but not heavy saturation. Input Arguments: Ic Collector Current (A) Vbe Base Emitter Voltage (V) Vce Vce Voltage (V) Output: mxt4t_fwd_early_ib Ft This function is obsolete. This function calculates the fwd early base current for a 4 terminal device given Vcb and Ic. 616 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Vcb Vcb Voltage (V) ic Ic current (A) Output: mxt4t_fwd_early_ic Forward Early base current. This function is obsolete. This function calculates the fwd early collector current for a 4 terminal device given Vbe and Vbc. Input Arguments: Vbe Vbe Voltage (V Vbc Vbc Voltage (V) Output: mxt4t_fwd_gummel_hfe Forward Early collector current. This function is obsolete. This function calculates forward gummel HFE for a 4 terminal device given Vbe, Vbc, and Ic. The HFE limit input limits HFE to the value entered. This is used to limit HFE in the region outside of the function's applicable range. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ic Collector Current (A) HFE Limit Maximum HFE to be displayed. Output: mxt4t_fwd_gummel_ib Forward Gummel HFE This function is obsolete. This function calculates the forward gummel base current for a 4 terminal device given Vbe, Vbc, and Ic. IC-CAP Reference 617 8 IC-CAP Functions Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ic Collector Current (A) Output: Forward Gummel Base current. mxt4t_fwd_gummel_ic This function is obsolete. This function calculates forward gummel collector current for a 4 terminal device given Vbe and Vbc. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Output: Forward Gummel Collector current. mxt4t_fwd_gummel_vbe This function is obsolete. This function calculates forward gummel base-emitter voltage for a 4 terminal device given Ib and Ic. Input Arguments: ib Base current (A) Ic Collector Current (A) Output: mxt4t_i0 Forward Gummel Vbe. This function is obsolete. This function extracts either IE0, IC0 or IB0 depending on which Output mode is selected: E/C/B. The function requires a terminal current as input. This transform was written to make the subsequent optimizations, which require either IE0, IB0 or IC0, more robust. Sometimes the optimizer would have trouble converging to a proper solution if these currents were too far from their final values. 618 IC-CAP Reference 8 IC-CAP Functions Input Arguments: I Data (A) Output: E, C, B Output: IE0, IC0, IB0 depending on Output Argument mxt4t_linear_range This function is obsolete. This function calculates the 2nd derivative of a dataset. It enables the user to see where the data is linear. This is useful in determining the valid range of mextram functions. Input Arguments: Y Data unitless X Data unitless (must be uniform steps) Smooth Points number of points on either side of data point to be use for smoothing. 0 = disable Smooth Iter number of iterations that smoothing algorithm is performed on data. 0 = disable Log Data ? Log the data before the smoothing or derivative functions are applied Output: mxt4t_output_ic 2nd derivative of the Y Data. This function is obsolete. This function calculates collector current output characteristics given Vce, Ic, Ib, and Vb. It is intended to model the quasi-saturation region of the transistor. IC-CAP Reference 619 8 IC-CAP Functions Input Arguments: Vce Vce Voltage (V) Ic Collector Current (A) Ib Base Current (A) Vb Base Voltage (V) Output: mxt4t_output_vbe Collector Current This function is obsolete. This function calculates base-emitter voltage Vce, Ic, Ib, and Vb. It is used to estimate the thermal resistance of the device. Input Arguments: Vce Vce Voltage (V) Ic Collector Current (A) Ib Base Current (A) Vb Base Voltage (V) Output: mxt4t_rev_early_ie Base Emitter Voltage This function is obsolete. This function calculates the reverse early emitter current for a 4 terminal device given Vbe and Vbc. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Output: mxt4t_rev_early_qb0_guess Reverse Early emitter current. This function is obsolete. This function calculates QBO based on the following formula: QBO = IE0*(1-XCJE)*CJE*(dvbe/die @ vbe=0) 620 IC-CAP Reference IC-CAP Functions 8 The function requires ie and vbe as inputs and the model parameters mex.CJE, mex.XCJE and the model variable IE0. This transform was written for 2 reasons: (1) the optimization used to determine its final value can get lost if the initial value is way off; (2) The value of QBO is used to determine the initial values of other parameters. Therefore, the more accurate the value of QBO the more accurate these other parameters will be. Input Arguments: Vbe Vbe Voltage (V) Ie Emitter Current (A) Output: mxt4t_rev_gummel_hfc QB0 This function is obsolete. This function calculates the reverse gummel HFC for a 4 terminal device given Vbe, Vbc, and Ie. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ic Emitter Current (A) Substrate (Y/N) Y -> Includes ibSub when Calculating hfc. N -> Excludes ibSub when Calculating hfc. Output: Reverse Gummel HFC. mxt4t_rev_gummel_hfc_sub This function is obsolete. This function calculates the HFC of the parasitic substrate transistor for a 4 terminal device given Vbe and Vbc. IC-CAP Reference 621 8 IC-CAP Functions Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Output: mxt4t_rev_gummel_ib Reverse Gummel substrate HFC. This function is obsolete. This function calculates the reverse gummel base current for a 4 terminal device given Vbe, Vbc, and Ie. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ie Emitter Current (A) Output: mxt4t_rev_gummel_ie Reverse Gummel Base current. This function is obsolete. This function calculates the reverse gummel emitter current for a 4 terminal device given Vbe, Vbc, and Ie. Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ie Emitter Current (A) Output: mxt4t_rev_gummel_is Reverse Gummel Emitter current. This function is obsolete. This function calculates the reverse gummel substrate current for a 4 terminal device given Vbe, Vbc, and Ie. 622 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Vbe Vbe Voltage (V) Vbc Vbc Voltage (V) Ie Emitter Current (A) Output: Reverse Gummel substrate current. NOISE_1f_bjt_1Hz For each noise trace this function calculates the 1 Hz intercept point by calculating the average noise in the specified frequency range. The frequency range can be specified by using the variables X_LOW and X_HIGH. If N is the number of noise traces, the function returns an output dataset of size N filled with the N intercept points (one for each trace). Inputs: Frequency: Frequency point dataset. Size: N*freqpoints. Noise at constant Vc: dataset containing the noise for the N traces. Size: N*freqpoints Output: Dataset filled with the N 1Hz interception points. Size: N. Examples: This transform is used during 1/f noise parameters extraction for bipolar devices. See model file examples/model_files/noise/1_f_toolkit/bjt_1f_noise.mdl The transform is used in the setup modeling/extract NOISE_1f_bjt_calc This function calculates the current noise density at the device output (collector) given the frequency range, the device current gain Beta, the base current and the parameters Af and Kf listed in the Parameters table. The Noise is calculated as follows: <Sic>= Kf * (ib^Af)/f * Beta^2 IC-CAP Reference 623 8 IC-CAP Functions If N is the number of traces (number of DC bias points) the inputs are defined as follows: Inputs: Beta: Dc current gain dataset. Size: N frequency: Frequency point dataset. Size: N*freqpoints. Base Current: Base current dataset. Size: N. Output: Dataset filled with the calculated noise. Size: N*freqpoints. Examples: This transform is used during 1/f noise parameters extraction for bipolar devices. See model file examples/model_files/noise/1_f_toolkit/bjt_1f_noise.mdl The transform is used in the setup modeling/extract NOISE_1f_bjt_extract This function extracts the parameters Af and Kf. If N is the number of noise traces at a given Vc, inputs and output are as follows: Inputs: 624 Beta: Dc current gain dataset. Size: N. Ic noise 1 Hz: 1 Hz intercept dataset. Size: N. Base Current: base current at each bias point. Size: N. Output: Return a dataset of size N with the calculated 1 Hz values using the extracted Af and Kf. Extracts: Af, Kf IC-CAP Reference IC-CAP Functions 8 Examples: This transform is used during 1/f noise parameters extraction for bipolar devices. See model file examples/model_files/noise/1_f_toolkit/bjt_1f_noise.mdl The transform is used in the setup modeling/extract NOISE_1f_force_bias This function forces a current or a voltage from the specified unit of a 4142B or 4156B/C. NO TE The instrument will continue to force the bias until the function NOISE_1f_stop_bias is called. Variables: GPIB Address: instrument address. Compliance: voltage or current compliance. Value: voltage or current value to be forced. Parameters: Bias source: specify DC Bias Source Type (4142/4156). GPIB Interface: interface name. Unit Slot (4142) or SMU (4156) Force Current (I) or Voltage (V). IC-CAP Reference 625 8 IC-CAP Functions Examples: ret = NOISE_1f_force_bias(29, 2, 25e-6, “4142”, “hpib”, “2”, “I”) this forces 25 µA of current from unit source on slot 2 of the 4142 at address 29. The interface name is “hpib” and the voltage compliance is 2 V. This transform is used during 1/f noise parameters extraction for bipolar and MOS devices. See model file examples/model_files/noise/1_f_toolkit/bjt_1f_noise.mdl The transform is used in the setup measure/Noise. It is called by the GUI interface function btMeasure located in the setup GuiDriver/MeasureNoise. NOISE_1f_get_Af This function returns the value of the parameter Af/AF/af stored in the parameter list. Syntax x = NOISE_1f_get_Af() NOISE_1f_get_Bf This function returns the value of the parameter Bf/BF/bf stored in the parameter list. Syntax x = NOISE_1f_get_Bf() NOISE_1f_get_Kf This function returns the value of the parameter Kf/KF/kf stored in the parameter list. Syntax x = NOISE_1f_get_Kf() NOISE_1f_get_Ef This function returns the value of the parameter Ef/EF/Ef stored in the parameter list. Syntax x = NOISE_1f_get_Ef() NOISE_1f_mos_1Hz For each noise trace this function calculates the 1 Hz intercept point by calculating the average noise in the specified frequency range. The frequency range can be specified by using the variables X_LOW and X_HIGH. If N is 626 IC-CAP Reference 8 IC-CAP Functions the number of noise traces, the function returns an output dataset of size N filled with the N intercept points (one for each trace). Inputs: Frequency: Frequency point dataset. Size: N*freqpoints. Noise at constant Vd: dataset containing the noise for the N traces. Size: N*freqpoints Output: Dataset filled with the N 1Hz interception points. Size: N. Examples: This transform is used during 1/f noise parameters extraction for MOS devices. See model file examples/model_files/noise/1_f_toolkit/mos_1f_noise.mdl The transform is used in the setup modeling/extract NOISE_1f_set_Af This function sets the value of the parameter Af/AF/af in the parameter list. Syntax NOISE_1f_set_Af(value) NOISE_1f_set_Bf This function sets the value of the parameter Bf/BF/bf in the parameter list. Syntax NOISE_1f_set_Bf(value) NOISE_1f_set_Ef This function sets the value of the parameter Ef/EF/ef in the parameter list. Syntax NOISE_1f_set_Ef(value) NOISE_1f_set_Kf This function sets the value of the parameter Kf/KF/kf in the parameter list. IC-CAP Reference 627 8 IC-CAP Functions Syntax NOISE_1f_set_Kf(value) NOISE_1f_stop_bias This function stops the bias from the specified DC source. It is used in conjunction with the NOISE_1f_force_bias. Variables: GPIB Address: instrument address. Parameters: Bias source: specify DC Bias Source Type (4142/4156). GPIB Interface: interface name. Unit Slot (4142) or SMU (4156). Examples: ret = NOISE_1f_force_bias(29, “4142”, “hpib”, “2”) the SMU unit at slot 2 of the 4142 at address 29 will stop any voltage or current bias. This transform is used during 1/f noise parameters extraction for bipolar and MOS devices. See model file examples/model_files/noise/1_f_toolkit/bjt_1f_noise.mdl The transform is used in the setup measure/Noise. It is called by the GUI interface function btMeasure located in the setup GuiDriver/MeasureNoise. Optimize The IC-CAP general purpose optimizer. Performs Levenberg-Marquardt optimization, random optimization, hybrid optimization, and sensitivity analysis. The optimizer is described in Chapter 7, “Optimizing,” in the User’s Guide. 628 Input Arguments: None Output: Levenberg-Marquardt: array of real, length 2 (RMS error, max error) Random or Hybrid: Array of real, length 1 (RMS error) IC-CAP Reference 8 IC-CAP Functions Sensitivity: Nx1 matrix of real numbers; size determined by inputs. Automatic Invocation: By Optimize menu function (or Extract menu function when the Extract Flag option is set to Yes) Package A utility function that can either “embed or de-embed” the effects of a package from S-parameter data provided as input. The resultant set of S-parameters is returned as a data set with the same frequency and bias conditions as the input S-parameter data set. : Usage Package(S_parameter_data_set, embed/dEEmbed_flag, Z1, D1, L1a, L1b, L1m, C1m, C1, C12, Z3, D3, L3, Z2, D2, L2a, L2b, L2m, C2m, C2) The package topology used here is a very simple series shunt representation of a component’s package. This package is more general purpose than EEfet3_package, EEbjt2_package, or EEmos1_package. Each port of this package has a transmission line that represents the package lead frame. Then a “T” network is defined on the input and output (port 1 and 2) that represents bond wires and can be used to model simple matching networks used in some pre-matched devices. This network is not included on the common lead. So working from the outside edge of the package’s input port (port 1) there is an ideal transmission line (Z1, D1), followed by the bonding/matching network. L1a + L1b represent the bond inductance of the input port. The inductance is split into 2 parts. In a pre-matched device L1a is the bond inductance from the lead frame of port 1 to the shunt matching capacitor (modeled by L1m, C1m). L1b would be the bond wire from the top of the matching capacitor to the gate/base of the transistor. C1, C12, and C2 are fringing capacitors that encircle the intrinsic device (usually small values 20-30ff). IC-CAP Reference 629 8 IC-CAP Functions In the case of a transistor with no pre-matching, L1m, C1m and L1b would be set to zero. The “common” node of the input matching capacitor C1m and the output matching capacitor C2m is where transmission line and bond inductance of the common lead join.The intrinsic S-parameters used as input/output are connected at the “internal” side of L1b, L2b and L3.The output port (port 2) is an exact duplication of the input port. The transmission line (Z2, D2) represents the lead frame. The output matching/ bonding network is modeled with L2a, L2b and L2m, C2m. All 3 of the transmission lines are ideal lines modeled with a characteristic impedance and length. The length is in units of meters. Because you must use the same values for each of these arguments in many places in the IC-CAP model file, this function is constructed to use model variables as arguments. First: create 1 variable, in the model variable table, for each of the function arguments (thus making it global to the entire model in use). Then use the variables each time the function is used. In this manner you can ensure that the same values are being used to embed the model as were extracted from measurements. The first argument is the data set upon which the function will operate. The second argument is a text string or variable containing a text string “embed” or “de-embed.” The function will operate on the input data set as indicated by the second argument. PEL example that de-embeds a package from a measurement (based on first defining the following variables in the system variable table): 630 flag = “deembed” Z1 = 50 D1 = 250e-6 L1a = 0.9e-9 L1b = 0 L1m = 0 C1m = 0 C1 = 20e-15 C12 = 20e-15 Z3 = 50 D3 = 0 L3 = 0.15e-9 Z2 = 25 D2 = 500e-6 L2a = 0.33e-9 IC-CAP Reference 8 IC-CAP Functions L2b = 0 L2m = 0 C2m = 0 s_intrinsic = Package(meas_spars, flag, Z1, D1, L1a, L1b, L1m, C1m, C1, C12, Z3, D3, L3, Z2, D2, L2a, L2b, L2m, C2m,) PB_abort mode. Karl Suss Prober function. Returns prober to local Input Arguments: None Output: Array of 3 values: output[0]= 0 if command succeeded, else returns error code. output[1]= Column of current die location, else returns -999.999 output[2]= Row of current die location, else returns -999.999 Example: result = PB_abort() PB_bincode Karl Suss Prober function. Sets the Bincode of the current die location. Input Arguments: Reals or Integers: Output: binvalue Single value output[0]= 0 if command succeeded, else returns error code. Example: result=PB_bincode(binvalue) PB_bindex Karl Suss Prober function. Sets the Bincode of the current die location, then steps (index) to the next testable die location (as defined by the pbench wafer map). Input Arguments: Reals or Integers: IC-CAP Reference bin value 631 8 IC-CAP Functions Output: Array of 3 values output[0]= 0 if command succeeded, else returns error code. output[1]= Column of new die location, else returns -999.999 output[2]= Row of new die location, else returns -999.999 Example: result=PB_bindex(binvalue) PB_bindex_cr Karl Suss Prober function. Sets the Bincode of the current die location, then moves the prober to the absolute column and row location specified. Input Arguments: Reals or Integers: Output: bin value, column value, row value Array of 3 values output[0]= 0 if command succeeded, else returns error code. output[1]= Column of new die location, else returns -999.999 output[2]= Row of new die location, else returns -999.999 Example: result=PB_bindex_cr(binvalue,column,row) PB_gindex_cr Karl Suss Prober function. Return the current die index location from the wafer map. Input Arguments: 632 None IC-CAP Reference 8 IC-CAP Functions Output: Array of 4 values output[0]= column (die) if command succeeded, else returns error code. output[1]= row (die) output[2]= X location (from home, absolute) output[3]= Y location (from home, absolute) Example: result=PB_gindex_cr() PB_gsite_xy Karl Suss Prober function. Return the x and y location (in tenths of microns) of the current subsite. Input Arguments: None Output: Array of 2 values output[0]= Subsite x value output[1]= Subsite y value Example: result=PB_gindex_xy() PB_index Karl Suss Prober function. Steps (index) to the next testable die location (as defined by the pbench wafer map). Input Arguments: None Output: Array of 3 values output[0]= 0 if command succeeded, else returns error code. output[1]= Column of new die location, else returns -999.999 output[2]= Row of new die location, else returns -999.999 Example: result = PB_index() IC-CAP Reference 633 8 IC-CAP Functions PB_index_cr Karl Suss Prober function. Moves the prober to the absolute column and row location specified. Input Arguments: Reals or Integer: Output: Column value, Row value Array of 3 values output[0]= 0 if command succeeded, else returns error code. output[1]= Column of new die location, else returns -999.999 output[2]= Row of new die location, else returns -999.999 Example: result=PB_index_cr(column,row) PB_msite_xy Karl Suss Prober function. Moves the prober to subsite location x, y (in tenths of microns). Input Arguments: Reals or Integer: Output: x value, y value Output: Array of 3 values output[0]= 0 if command succeeded, else returns error code. output[1]= Subsite x coordinate, else returns -999.999 output[2]= Subsite y coordinate, else returns -999.999 Example: result=PB_msite_xy(x,y) PBench_CMD Karl Suss Prober function. Sends a user-specified command to the prober. 634 IC-CAP Reference 8 IC-CAP Functions Input Arguments: String: Output: Arbitrary string name to identify calling function Suss Prober command output[0]= 0 if command succeeded, else returns error code. Example: result=PBench_CMD("Myfunction", "StepNextDie") Pdown Wafer prober function. Lowers the chuck of the wafer prober. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: None Output: Single number with exit status Automatic Invocation: None Phome Wafer prober function. Used for loading a wafer onto the chuck and moving it to the home position. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: None Output: Single number with exit status Automatic Invocation: None Pimove Wafer prober function. Moves the chuck a relative increment from its current position. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: Reals or Integers: Output: IC-CAP Reference X Delta, Y Delta Single number with exit status 635 8 IC-CAP Functions Automatic Invocation: None Pink Wafer prober function. Calls the inker function of the prober if it is supported. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: Reals or Integers: Output: Inker Num Single number with exit status Automatic Invocation: None Pmove Wafer prober function. Moves the chuck to an absolute position. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: Reals or Integers: Output: X Position, Y Position Single number with exit status Automatic Invocation: None PNCAPsimu Calculates P-N Junction capacitance versus voltage. Can be used as a quick simulation. The proper parameter names must be specified as inputs. Input Arguments: Data Sets: Junction V Reals or Integers: CJ Param, VJ Param, MJ Param Output: 636 Array of real numbers; size determined by inputs IC-CAP Reference 8 IC-CAP Functions Porig Wafer prober function. Defines the current X & Y position of the chuck. Must be called before calling the Pmove or Pimove functions. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: Reals or Integers: Output: X Origin, Y Origin Single number with exit status Automatic Invocation: None Ppos Wafer prober function. Returns the current X & Y position of the chuck. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: None Output: Array of 2 points: x and y Automatic Invocation: None Prober_debug Wafer prober function. Used to turn the debug and macro stop (on error) flags on and off. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: Reals or Integers: Output: Debug Flag, Stop Flag Single number with exit status Automatic Invocation: None Prober_init Wafer prober function. Initializes the prober for use. This function must be called before any other prober functions are used in the Macro. For more information regarding this function, refer to “External Prober User Functions” on page 155. IC-CAP Reference 637 8 IC-CAP Functions Input Arguments: Reals or Integers Bus Address, Orientation Strings/Pars/Vars Prober Type, Device File Output: Single number with exit status Automatic Invocation: None Prober_reset Wafer prober function. Sends a device clear command to the prober. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: None Output: Single number with exit status Automatic Invocation: None Prober_status Wafer prober function. Sends a query to the prober to obtain the Remote/Local control state and the edge sensor contact state. The prober should be initialized with Prober_init before this function. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: None Output: Array of 3 points: x and y and z Automatic Invocation: None Program or Program2 The Program2 function is the recommended way to define a program in IC-CAP's Parameter Extraction Language over the older Program function. Program2 provides improved function argument/parameter management and improves access to IC-CAP variables. Both Program and Program2 functions provide a text editor in which a program can be written in IC-CAP’s Parameter Extraction Language to carry out simple or complicated 638 IC-CAP Reference 8 IC-CAP Functions computations. When a RETURN statement is used, the computed results are available for use in Plots, other Transforms, and table elements throughout IC-CAP. Both functions can also execute most IC-CAP menu functions using an iccap_func call. Both functions also provides features enabling users to write custom extraction routines and assign new Model parameter values. Refer to Chapter 9, “Parameter Extraction Language,” in this manual, and to Chapter 9, “Using Transforms and Functions” in the User’s Guide, for more information. If GET_INT, GET_REAL, GET_STRING or LINPUT is used in a Program or Macro to pass parameters, all GET_INT statements should be located immediately at the start of the Program or Macro along with any other GET_INT, GET_REAL, GET_STRING or LINPUT statements. Once any other ICCAP_FUNC statement is invoked, the list of anticipated arguments is reset, thereby removing all the extra arguments from the calling ICCAP_FUNC statement. The Program2 function does not have these limitations. The statement GET_DATASET can be used to redirect passed Program2 function parameter dataset arguments to local variables of a Program2 function. GET_DATASET is not supported with Program or Macro functions—it is only currently supported with the Program2 function. If GET_INT, GET_REAL, GET_STRING or LINPUT statements are used in a Program or Macro to pass parameters, those input statements search the passed parameter list until they find a valid passed parameter argument of the expected type. In the Program2 function, the GET_DATASET, GET_INT, GET_REAL, GET_STRING or LINPUT statements will only try to evaluate the next available passed function parameter as a value of the expected type, and will error out if the next passed function parameter is not able to be evaluated as a value of the expected type. In the Program2 function, all variables are automatically treated as local variables unless those variables are first explicitly declared as global variables using the GLOBAL_VAR statement. Before using a variable from a variable table in IC-CAP Reference 639 8 IC-CAP Functions Program2, you should declare the variable as global with the GLOBAL_VAR statement. In Program and Macro functions, all variables can be resolved globally or locally without needing to explicitly specify which variables are global using the GLOBAL_VAR statement. Input Arguments: None (input statements and data are supplied interactively into a dedicated text editor) Output: Complex array or matrix array. Size and type depends on the arguments to a RETURN statement in program text. The size will be 1 if return data is returned by a RETURN_VALUE statement. In the absence of an appropriate RETURN statement there is no output data set. Extracts: Both functions permit the extraction of any combination of Model parameters, DUT parameters, and IC-CAP system variables. Automatic Invocation: For both functions, several possibilities exist • If a program uses the RETURN statement to generate a data set, and 1 of the data sets used within the program changes (due to a simulation, for example), then the program is automatically invoked, so that its returned data set is refreshed. • If a program assigns new values to Model or DUT parameters, then the program is considered an extraction function, and Automatic Invocation occurs when the Extract command is issued for the associated Setup or DUT. These rules are mutually exclusive, and the second one takes higher precedence. When neither rule is satisfied, no Automatic Invocation occurs. Some statements allow 640 IC-CAP Reference IC-CAP Functions 8 direct control over these rules, for example, UPDATE_MANUAL. For more information, refer to “Automatic Transform Execution" in the User’s Guide. Pscale Wafer prober function. Defines the X & Y stepping dimensions used by the Pmove and Pimove functions. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: Reals or Integers: Output: X Size [um], Y Size [um] Single number with exit status Automatic Invocation: None PSP_DC_vth Picks up one single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage vth. The setup is specified by the parameters path to vd, ... etc. This makes it easier to call the function with variable inputs inside the PEL programs. The 'Flag' variable is used to define certain conditions, for example, the extraction of vth for the large device that does not need to calculate all the early voltage values. Input Arguments: IC-CAP Reference 641 8 IC-CAP Functions Variables: Length (L) Total gate width (W) Number fingers (NF) Flag for extraction options flag: 1 Fixed Id(Vth) = Idref*L/W 2 Fixed Id(Vth) = Idref*NF* ((W/NF)-2*Delta_W)/ (L-2*Delta_L) Reference current Idref for extraction options Delta L (one side) Delta W (one side) # of curve Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: nothing) Parameters: path to setup vd vg vb id type id (M,S) version Output: Value vth or failure indicator Extracts: Vth (1e99 indicates error) PSP_check_par Checks whether a model parameter is in a predefined range. The range information for this parameters must be given in a variable in the referenced path. The range information is stored in a string in the following format: range_A0 642 >-1 0 10 | | | |___ | | |______ | |___________ |_______________ upper upper lower lower error condition ({operator(<,<=), value}{-)} optimization boundary optimization boundary error condition ({operator(>,>=), value}{-)} IC-CAP Reference 8 IC-CAP Functions Input Arguments: Variables: Actual value of parameter to check Parameters: Parameter name Path to parameter range definition Output: Flag for correct operation: 0: parameter is in specified range −1: parameter is outside specified range −2: error during function execution (e.g., variable 'range_xx' not found) PSP_DC_calc_bin_parameter Calculates from the input the four binning parameters P0, PL, PW and PP. If the calculation is done correctly, outputs[0] will return 0. Otherwise, outputs[0] will result in a negative number. In such a case, the error will be printed in detail in the output window. Input Arguments: IC-CAP Reference Inputs: Array with 4 parameters P1 .. P4 of the bin corners Array with 4 gate lengths L1 .. L4 of the bin corners Array with 4 gate widths W1 .. W4 of the bin corners Variables: PSP binning type Output: Array containing error condition and binning parameters outputs[0] = error condition (0=o.k., any other number indicates an error) outputs[1] = P0<par>, e.g. POVFB outputs[2] = PL<par>, e.g. PLVFB outputs[3] = PW<par>, e.g. PWVFB outputs[4] = PLW<par>, e.g. PLWVFB Extracts: Binning parameters P0<par>, PL<par>, PW<par>, PLW<par> 643 8 IC-CAP Functions PSP_set_opt Accepts a list of model parameters, separated by blanks and searches the range information for these parameters in the range_<PARAMETER> variables in the referenced path. After analyzing the range information for each parameter, the variables min_<PARAMETER> and max_<PARAMETER> in the local setup/DUT are set. These variables can be used as upper/lower limit in an optimizer call. The range information is stored in a string in the following format: range_A0 >-1 | | | |___ | | |______ | |___________ |_______________ 0 10 upper error condition ({operator(<,<=), value}{-)} upper optimization boundary lower optimization boundary lower error condition ({operator(>,>=), value}{-)} Input Arguments: Parameters: Output: Parameter names, separated by blanks Path to parameter range definition Flag for correct operation: 0: everything is ok -1: error during function execution (e.g., variable 'range_xx' not found) Example call in PEL: erg = PSP_set_opt("RDSW PRWG PRWB","Extraction_configuration/Boundaries") PTFTCV_cgd This function is obsolete. Standard extraction for the UCB p-Si TFT model. Extracts p-Si TFT gate-to-drain overlap capacitance and a transition parameter. Input Arguments: 644 IC-CAP Reference 8 IC-CAP Functions Data Sets: Gate-Drain V, Source-Drain V, Gate-Drain C Output: None Extracts: CGDO, ACGD Automatic Invocation: By Extract menu function PTFTCV_cgs This function is obsolete. Standard extraction for the UCB p-Si TFT model. Extracts p-Si TFT gate-to-source overlap capacitance and transition parameters. Input Arguments: Data Sets: Gate-Source V, Drain-Source V, Gate-Source C Output: None Extracts: CGSO, ACGS, VGTRANLC, VGTRANHC Automatic Invocation: By Extract menu function PTFTDC_lin This function is obsolete. Standard extraction for the p-Si TFT model. Extracts linear region parameters using Id versus Vg data measured on a p-Si TFT device. Input Arguments: Data Sets: Drain V, Gate V, Source V, Drain I Output: None Extracts: VTO, U0, U1, U2, U3, U4, SUBSLOPE, VOFF, THERMALI, VGTRANL, VGTRANH, GIDLA, GIDLB Automatic Invocation: By Extract menu function IC-CAP Reference 645 8 IC-CAP Functions PTFTDC_sat This function is obsolete. Standard extraction for the p-Si TFT model. Extracts saturation region parameters using Id versus Vd data measured on a p-Si TFT device. Input Arguments: Data Sets: Drain V, Gate V, Source V, Drain I Output: None Extracts: VMAX, L2, PHITA, S1, S2 Automatic Invocation: By Extract menu function Pup Wafer prober function. Moves up the chuck of the wafer prober. For more information regarding this function, refer to “External Prober User Functions” on page 155. Input Arguments: None Output: Single number with exit status Automatic Invocation: None rand_flat Returns a single random number generated for each call between 0.0 and 1.0 inclusive. Use rand_seed() to set a seed value. This is a 32-bit random number generator of Park and Miller with Bays-Durham shuffle to exclude serial correlations. The period is larger than 1E08. Input Arguments: None Output: Single real number Automatic Invocation: None Example: • Example PEL code: ! create 100 random numbers between ! lower bound and upper bound ! ex. 100 random real numbers from 1.0 to 10.0 646 IC-CAP Reference 8 IC-CAP Functions complex num[100] ! sets a varying random seed for all successive calls ! to rand_flat() x=rand_seed(val(system$("date +%s"))) lowerbound=1.0 upperbound=10.0 i=0 while i<100 num[i]=rand_flat()*(upperbound-lowerbound)+lowerbound i=i+1 endwhile • To view an example of the random functions used in a setup to generate random numbers, view the random_example.mdl example discussed in the User's Guide, Chapter 12, “Creating Graphic User Interfaces”, “Random Numbers (Example),” section. rand_gauss Returns a random number generated for each call that follows a normal distribution with the given mean and sigma values. Use rand_seed() to set a seed value. This is a 32-bit random number generator of Park and Miller with Bays-Durham shuffle to exclude serial correlations. The period is larger than 1E08. Input Arguments: Reals or Integers: Output: Mean, Sigma Single real number Automatic Invocation: None Example: • Example PEL code: ! ! ! ! Creates 100 random numbers within a gaussian distribution with a mean of approximately 5 and a standard deviation of approximately 1 complex num[100] ! sets a varying random seed for all successive calls ! to rand_gauss(…) x=rand_seed(val(system$("date +%s"))) i=0 while i<100 num[i]=rand_gauss(5,1) i=i+1 endwhile IC-CAP Reference 647 8 IC-CAP Functions • To view an example of the random functions used in a setup to generate random numbers, view the random_example.mdl example discussed in the User's Guide, Chapter 12, “Creating Graphic User Interfaces”, “Random Numbers (Example),” section. rand_seed Sets a seed for the internal random number generator that has the initial seed of 3300. The rand_seed(seed) function should be used to set the seed for the internal random number generator for all successive calls to the rand_flat() or rand_gauss() functions. This is a 32-bit random number generator of Park and Miller with Bays-Durham shuffle to exclude serial correlations. The period is larger than 1E08. Input Arguments: Reals or Integers: Output: Seed (must not be zero) None Automatic Invocation: None Example: • Using a specific/fixed seed value with rand_flat() or rand_gauss(). You can input a fixed seed value for the rand_seed(seed) function. For example: x=rand_seed(42) y1=rand_flat() or y1=rand_gauss(gaussMean, gaussSigma) y2=rand_flat() or y2=rand_gauss(gaussMean, gaussSigma) where y1 will equal a first random number and y2 will equal a second random number and y1 may not necessarily equal y2. If you set the same fixed seed value again and call rand_flat() or rand_gauss(gaussMean, gaussSigma) again. For example: x= rand_seed(42) y1=rand_flat() or y1=rand_gauss(gaussMean, gaussSigma) x= rand_seed(42) y2=rand_flat() or y2=rand_gauss(gaussMean, gaussSigma) 648 IC-CAP Reference 8 IC-CAP Functions where y1 == y2 since the seed was set to the same fixed seed before each call. Since rand_flat() or rand_gauss() return a single random number, each time you call rand_seed(42) beforehand you will get the same single random number. • Generating a varying seed value based on the current time with random(). Instead of using the same fixed seed number each time to generate a random number, another approach would be to create a varying real number seed out of the current time. For example: x = rand_seed(val(system$("date + %s"))) y1 = rand_flat() or y1 = rand_gauss(gaussMean, gaussSigma) y2 = rand_flat() or y2 = rand_gauss(gaussMean, gaussSigma) where y1 will equal a first random number and y2 will equal a second random number and y1 may not necessarily equal y2. If you were to call rand_seed(val(system$("date + %s"))) again later before another call to rand_flat() or rand_gauss(…) the random seed value would have been set differently each time so the calls to rand_flat() or rand_gauss() would still return different random values. x= rand_seed(val(system$("date + %s"))) y1=rand_flat() or y1=rand_gauss(gaussMean, gaussSigma) x= rand_seed(val(system$("date + %s"))) y2=rand_flat() or y2=rand_gauss(gaussMean, gaussSigma) where y1 will equal a first random number and y2 will equal a second random number and y1 may not necessarily equal y2. • To view an example of the random functions being used in a Setup to generate random numbers, view the random_example.mdl example discussed in the User's Guide, Chapter 12, “Creating Graphic User Interfaces”, “Random Numbers (Example),” section. random Creates a data set of random numbers with values between 0 and 1. This function is based on the underlying C code for srand48 and rand48. This function will return a dataset of 'N' numbers where N is the size defined by the IC-CAP Reference 649 8 IC-CAP Functions current Setup's input sweeps. This function is referred to data in an IC-CAP DUT Setup that includes a defined input set that evaluates to a specific number of points. Input Arguments: Reals or Integers: Output: Seed Array of real numbers; size determined by setup Automatic Invocation: On Data Set Input Change Example: • Using a specific/fixed seed value with random(seed). You can call the random(seed) function with a specific seed value. For example: random(49) Also, say that the IC-CAP DUT Setup in which you are calling the IC-CAP "random" function (transform is defined in your DUT Setup's "Extract / Optimize" tab) has 100 points in your DUT Setup's "Measure / Simulate" tab, then the result of running the random(seed) function will also evaluate to 100 numbers in the resulting random number dataset. However, each time you call the random(49) function, you'll get the same 100 random numbers because they're all starting with the same seed number (example random(49) has seed = 49). • Generating a varying seed value based on the current time with random(seed). Instead of using the same seed number all the time to generate a random number, another approach would be to create a varying real number seed out of the current time. For example: random(val(system$("date +%s"))) 650 IC-CAP Reference 8 IC-CAP Functions • To view an example of the random functions being used in a Setup to generate random numbers, view the random_example.mdl example discussed in the User's Guide, Chapter 12, “Creating Graphic User Interfaces”, “Random Numbers (Example),” section. RBBcalc Used in extraction of base resistance parameters for the UCB Bipolar model. Calculates RBB from corrected H11 measurements generated with the H11corr function described above. A circle fit is performed on the complex data to extrapolate the high frequency real axis intercepts. Input Arguments: Data Sets: Output: H11 Array of complex numbers; size determined by inputs Automatic Invocation: On Data Set Input Change Example PEL Statement: rbbcalc_data = RBBcalc(H11) RMSerror Calculates the RMS error between 2 data sets. The error of the second input is calculated with respect to the first input. Returns the error in percent or magnitude. Three formulations are available depending on the value of the third argument labeled % Err Flag. Input Arguments: Data Sets: Input 1, Input 2 Reals or Integers: % Err Flag Output: Single real number Automatic Invocation: On Data Set Input Change Example PEL Statement: percent_error = RMSerror(ic.m,ic.s,1) IC-CAP Reference 651 8 IC-CAP Functions If 0 is passed as the third argument, the absolute value of the difference between the two datasets is returned. N ∑ [ ( simi – measi ) 2 ] ⁄ N i=1 If 1 or 2 is passed as the third argument, a relative (or percent) error is calculated. For a value of 1, the error of the second input is calculated with respect to the first input for each point. If any values in the first dataset are 0, the function returns an error. N ∑ [ ( simi – measi ) ⁄ measi ] 2 ⁄N i=1 For a value of 2, the same formulation used by the Levenberg-Marquardt optimizer is used. This is also a relative (or percent) error calculation, but the formulation takes the error relative to the larger of the two data set values on a point by point basis. This formulation always returns a value. N ∑ [ ( ( simi – measi ) ⁄ max ( measi , simi ) ) 2 )] ⁄ N i=1 Where simi = the ith simulated data point measi = the ith measured data point N = the total number of data points sin Sine of an angle in radians. Input Arguments: Data Sets: Input 1 652 IC-CAP Reference 8 IC-CAP Functions Output: Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change sinh Hyperbolic sine. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change smooth3 Returns 3-point running average of the Input data set. End points of each curve are not affected. Defined in userc.c. Input Arguments: Data Sets: Output: Input Complex array or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change SPECSSpin Used in an IC-CAP Macro to determine the matrix connections of the device under test. ICMSpin returns the matrix pin number that corresponds to a specified terminal index on the device. This function only returns valid data when IC-MS test execution is running. Refer to the IC-MS User’s Manual for more information on using ICMSpin. Input Arguments: Reals or Integers: IC-CAP Reference Terminal Index 653 8 IC-CAP Functions Output: Matrix pin number corresponding to the specified device terminal index Automatic Invocation: None Example PEL Statement: pin_num = ICMSpin(1) sqrt Square root function. Note that sqrt(-1) correctly produces an imaginary result. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change SWM_debug Switching matrix function. Turns the debug flag on and off. For more information regarding this function, refer to “External Matrix Driver User Functions” on page 166. Input Arguments: Reals or Integers: Output: Debug Flag Single number with exit status Automatic Invocation: None SWM_init Switching matrix function. Initializes the switching matrix and clears all port and pin connections. This must be called before any other switching matrix functions are used in the Macro. For more information regarding this function, refer to “External Matrix Driver User Functions” on page 166. 654 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Reals or Integers: Block 1 Addr, Block 2 Addr Strings/Pars/Vars: Matrix Type, Device File Output: Single number with exit status Automatic Invocation: None tan Tangent of an angle in radians. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change tanh Hyperbolic tangent. Input Arguments: Data Sets: Output: Input 1 Complex number, matrix, complex array, or matrix array (depends on input argument) Automatic Invocation: On Data Set Input Change TARGET_DC_vth Picks up one single sweep curve of id=f(vg) of a specified setup and extracts the threshold voltage vth. The setup is specified by the parameters path to vd, and so on. This makes it easier to call the function with variable inputs inside the PEL programs. The Flag variable defines certain conditions, for example, the extraction of vth for the large, which does not need to calculate all the early voltages. IC-CAP Reference 655 8 IC-CAP Functions Input Arguments: Variable Length (L) Total gate width (W) Number fingers (NF) Flag for extraction options flag: 1 Fixed Id(Vth) = Idref*L/W 2 Fixed Id(Vth) = Idref*NF* ((W/NF)-2*Delta_W)/ (L-2*Delta_L) Reference current Idref for extraction options Delta L (one side) Delta W (one side) # of curve Type (1=NMOS, -1=PMOS) Debug (1: show internal states of the function 0: nothing) Parameters: path to setup vd vg vb id type id (M,S) version Output: Value vth or failure indicator Automatic Invocation: Vth (1e99 indicates error) tis_p_down HP 4071A wafer prober function. Lowers the chuck of the wafer prober. tis_p_home HP 4071A wafer prober function. Used for loading a wafer onto the chuck and moving it to the home position. tis_p_imove HP 4071A wafer prober function. Moves the chuck a relative increment from its current position. 656 IC-CAP Reference 8 IC-CAP Functions tis_p_ink HP 4071A wafer prober function. Calls the inker function of the prober if it is supported. tis_p_move HP 4071A wafer prober function. Moves the chuck to an absolute position. tis_p_orig HP 4071A wafer prober function. Defines the current X & Y position of the chuck. Must be called before calling the tis_p_move or tis_p_imove functions. tis_p_pos HP 4071A wafer prober function. Returns the current X & Y position of the chuck. tis_p_scale HP 4071A wafer prober function. Defines the X and Y stepping dimensions that are used by the tis_p_move and tis_p_imove functions. tis_p_up HP 4071A wafer prober function. Moves up the chuck of the wafer prober. tis_prober_get_ba Available. HP 4071A wafer prober function. No Help tis_prober_get_name Help Available. HP 4071A wafer prober function. No tis_prober_init HP 4071A wafer prober function. Initializes the prober for use. This function must be called before any other prober functions are used in the Macro. tis_prober_read_sysconfig No Help Available. HP 4071A wafer prober function. tis_prober_reset HP 4071A wafer prober function. Sends a device clear command to the prober. tis_prober_status HP 4071A wafer prober function. Sends a query to the prober to obtain the Remote/Local control state and the edge sensor contact state. The prober should be initialized with tis_prober_init before this function. IC-CAP Reference 657 8 IC-CAP Functions TRL_Cal Deembed the raw measured data using measured data of TRL (thru-reflect-line) calibration standards. The function calculates the error coefficients and returns the corrected S-parameters data. The reference plane is defined at the middle of the thru standard, or at the interface to the DUT when it is installed in the compatible carrier. Inputs: Freq Data: S data: Thru: Short: Line A: Line B: Line C: Freq 1 Trans: Freq 2 Trans: Output: Frequency Inputs Raw (uncalibrated) S-parameters measured S-parameters of the Thru standard measured S-parameters of the Short standard measured S-parameters of Line A standard measured S-parameters of Line B standard measured S-parameters of Line C standard transition frequency Line A to Line B transition frequency Line B to Line C Corrected (calibrated) S-parameters data TwoPort Converts the data in a data set from one 2-port parameter type (S, Y, H, Z, K, A) to another. Enter the name of the data set that is to be converted, the old 2-port type, and the new 2-port type. Use K for Cascaded Scattering Matrix and A for ABCD Matrix. Note: TWOPORT does not read TWOPORT_Z0 at execution time, only at measurement and simulation time. 658 IC-CAP Reference IC-CAP Functions 8 Input Arguments: Data Sets: Input Strings/Pars/Vars: From [SYHZKA], To [SYHZKA] Output: Matrix array; size determined by inputs Automatic Invocation: On Data Set Input Change Example PEL Statement: h_dataset = TwoPort(s_dataset,"S","H") TwoPort2 Same as TwoPort function except the characteristic impedance, Z0, is an input parameter. This allows execution-time conversion of 2-port data to a new Z0. Input Arguments: Data Sets: Input Reals or Integers: Z0 Strings/Pars/Vars: From (SYHZKA) To (SYHZKA) Output: Matrix array; size determined by inputs Automatic Invocation: On Data Set Input Change Example PEL Statement: h_dataset = TwoPort2(s_dataset,75,"S","H") USERC_avg_2 Averages 2 DC data sets, point-by-point. Provided as an example of a math function implemented in User C code. The source code is in $ICCAP_ROOT/src/userc.c. Input Arguments: Data Sets: Output: Data 1, Data 2 Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change IC-CAP Reference 659 8 IC-CAP Functions USERC_avg_3 Averages 3 DC data sets, point-by-point. Provided as an example of a math function implemented in User C code. The source code is in $ICCAP_ROOT/src/userc.c. Input Arguments: Data Sets: Output: Data 1, Data 2, Data 3 Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change USERC_close Closes an open file. See USERC_open for essential additional information about this function. Input Arguments: Reals or Integers: Output: File Descriptor (generated by earlier USERC_open call) 0 or -1 (-1 indicates an error) Automatic Invocation: None USERC_conjg Produces the conjugate of the input data set. This function is similar to the function named conjg, but is provided as an example of a User C math function manipulating complex numbers. The source code is in $ICCAP_ROOT/src/userc.c. Input Arguments: Data Sets: Output: Cplx DS Complex number or array of complex numbers; size determined by inputs Automatic Invocation: On Data Set Input Change 660 IC-CAP Reference 8 IC-CAP Functions USERC_data_w_check Returns a complex number designated by a name, row, and column. Example of C library function data_w_check() in userc.c. Input Arguments: Reals or Integers: Output: Row, Col, Index, Data Set name, Type A single complex number. Automatic Invocation: None USERC_get_object_name If the variable name exists, returns the name of the calling Transform or Macro. Note that the leading / in the name is not returned. Syntax USERC_get_object_name(<varname>) Where <varname> is a string naming a variable in the variable table within the scope of the caller. This variable returns the names of the calling Transform or Macro. Examples: If macro /npn/tester contains the following line: x=USERC_get_object_name("objname") And if objname is in the Model Variables or system variables, then it returns npn/tester. If Transform /npn/dc/fgummel/tester contains the following line: x=USERC_get_object_name("xformName") And if xformName exists in the Setup Variables, DUT Variables, Model Variables, or System Variables, then it returns npn/dc/fgummel/tester. IC-CAP Reference 661 8 IC-CAP Functions USERC_init_param Demonstrates in C code how to assign a value to a model parameter, a DUT parameter, or an IC-CAP system variable. Demonstrates use of the User C utility function named set_par_or_var(). The source code is in the set_param function in $ICCAP_ROOT/src/userc.c. Input Arguments: Reals or Integers: New Value Strings/Pars/Vars: Parameter to set (this should be the name of a model parameter, a DUT parameter, or an IC-CAP system variable) Output: None Extracts: N/A Automatic Invocation: By Extract menu function USERC_num_of_points Returns the number of points for a given sweep. Example of C library function get_num_of_points() in userc.c. Input Arguments: Reals or Integers: Output: Sweep order, Sweep path A positive real number, or -1 for error. Automatic Invocation: None Example PEL Statement: nop = USERC_num_of_points(1, "") ! A blank path is current Setup USERC_open Accesses a disk file for reading, writing or both. For instrument control, use HPIB_open() and related HPIB functions. This function can be used in conjunction with USERC_readnum, USERC_readstr, USERC_read_reals, USERC_seek, USERC_tell, USERC_write, and USERC_close to perform I/O operations. A more complete description of these functions and examples of their use in performing I/O 662 IC-CAP Reference 8 IC-CAP Functions operations with disk files are available in Appendix H, “User C Functions.” The source code for these functions is provided in $ICCAP_ROOT/src/userc_io.c. Input Arguments: Strings/Pars/Vars: Output: Filename, Access Mode -1 on failure, or else a positive integer file designator that you should save to use with the other User C I/O functions mentioned in the description. Automatic Invocation: None Example PEL Statement: file_num = USERC_open("datafile","r") ! read access USERC_read_reals Opens a file, reads and returns an array of real numbers, and closes the file. For additional information about this function, see Appendix H, “User C Functions.” Input Arguments: Strings/Pars/Vars: Output: Filename Array of real numbers, with size determined by the Setup Automatic Invocation: None Example PEL Statement: data_array = USERC_read_reals("datafile") USERC_readnum Reads 1 real number from an open file, 1.0E6, for example. See USERC_open for essential additional information about this function. IC-CAP Reference 663 8 IC-CAP Functions Input Arguments: Reals or Integers: File Descriptor (generated by earlier USERC_open call), Device File Flag Strings/Pars/Vars: Scanf Format Output: a real number (the value 9.99998E+37 means an error occurred) Automatic Invocation: None Example PEL Statement: VTO = USERC_readnum(file_num,0,"VTO = %lf") USERC_readstr Reads a string from an open file and sets the specified IC-CAP variable equal to it. See USERC_open for essential additional information about this function. Input Arguments: Reals or Integers: File Descriptor (generated by earlier USERC_open call), Device File Flag (use 1 if reading from an instrument driver device file, 0 if reading from an ASCII file) Strings/Pars/Vars: Scanf Format, Var Name Output: 0 on success, or -1 on failure Automatic Invocation: None Example PEL Statement: ! read and set SIMULATOR name from a file read_result = USERC_readstr(file_num,0,"%s", IC-CAP_variable) USERC_seek Goes to a particular byte offset in an open file. See USERC_open for essential additional information about this function. 664 IC-CAP Reference IC-CAP Functions 8 Input Arguments: Reals or Integers: Output: File Descriptor (generated by earlier USERC_open call), Offset Value, Offset Type 0 on success, or -1 on failure Automatic Invocation: None USERC_set_param Sets the parameter specified by the second argument to the value of the first argument. Input Arguments: Data Sets: None Reals or Integers: Value of the parameter Strings/Pars/Vars: Name of the parameter to set Output: None Automatic Invocation: MANUAL Example PEL Statement: x = USERC_set_param(100,NPN,BF) USERC_set_param_quiet set the value of a parameter or variable referenced by a string. Unlike USERC_set_param(), this version makes no output to the status window. Example PEL Statement: x=USERC_set_param_quiet(1e-15,"/npn/IS") USERC_size Returns the array size of the data set whose name is given by a string. Input Arguments: Strings/Pars/Vars: Output: Data Set name A positive real number. Automatic Invocation: None IC-CAP Reference 665 8 IC-CAP Functions Example PEL Statement: data_size = USERC_size("id") USERC_sweep_mode with sweep order N. Returns the sweep mode for the input Usage: x=USERC_sweep_mode(N, <path>) Returns: 0 for V 1 for I 2 for T 3 for F 4 for P 5 for U 6 for W Extracts: Example C library function of get_sweep_mode() in userc.c. Use USERC_num_of_points() to check the existence of a sweep. USERC_sweep_name Returns a sweep name through a variable. Example C library function of get_sweep_name() in userc.c. Use USERC_num_of_points() to check the existence of a sweep. Input Arguments: Strings/Pars/Vars: Output: Sweep order, Sweep path, Variable name 0 for success, -1 for error Automatic Invocation: None Example PEL Statement: x = USERC_sweep_name(1, "/npn/dc/fearly", "first_sweep") USERC_sweep_start Returns a sweep start value. Example C library function of get_sweep_start() in userc.c. Use USERC_num_of_points() to check the existence of a sweep. 666 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Strings/Pars/Vars: Output: Sweep order, Sweep path 0 for error Automatic Invocation: None Example PEL Statement: x = USERC_sweep_start(1, "/npn/dc/fearly") USERC_sweep_stepsize Returns a (LIN) sweep step value. Example C library function of get_sweep_stepsize() in userc.c. Use USERC_num_of_points() to check the existence of a sweep. Input Arguments: Strings/Pars/Vars: Output: Sweep order, Sweep path 0 for error Automatic Invocation: None Example PEL Statement: x = USERC_sweep_stepsize(1, "/npn/dc/fearly") USERC_sweep_stop Returns a sweep stop value. Example C library function of get_sweep_stop() in userc.c. Use USERC_num_of_points() to check the existence of a sweep. Input Arguments: Strings/Pars/Vars: Output: Sweep order, Sweep path 0 for error. Automatic Invocation: None Example PEL Statement: x = USERC_sweep_stop(1, "") ! within current Setup USERC_system Demonstrates the invocation of an operating system command from User C code. IC-CAP Reference 667 8 IC-CAP Functions Input Arguments: Strings/Pars/Vars: Output: operating system command Single number with exit status of the operating system command Automatic Invocation: None USERC_tell Tells current byte offset in an open file. See USERC_open for essential additional information about this function. Input Arguments: Reals or Integers: Output: File Descriptor (generated by earlier USERC_open call) −1 on error, or else current byte offset into file Automatic Invocation: None USERC_transpose Returns a data set of matrices, in which each of the input data set’s matrices has been transposed. Provided as an example of a matrix math function implemented in User C code. The source code is in $ICCAP_ROOT/src/userc.c. Input Arguments: Data Sets: Output: Matrix DS Matrix or matrix array; size determined by inputs Automatic Invocation: On Data Set Input Change USERC_write Prints any string expression into an open file, in ASCII. (To convert a number to a string expression, refer to the VAL$ function described in the “Built-in Functions” on page 712. Refer to USERC_open for additional essential information about this function.) 668 IC-CAP Reference 8 IC-CAP Functions Input Arguments: Reals or Integers: File Descriptor (generated by USERC_open call), Device File Flag Strings/Pars/Vars: String to Write Output: 0 or −1 (−1 indicates an error) Automatic Invocation: None Example PEL Statement: write_result = USERC_write(file_num,0,"VTO="&VAL$(VTO)) variance Calculates the statistical variance of a data set. Adequate for a real or complex data set, but if a data set of matrices is received, only the 1,1 data is considered. A data set specification like S.21 is adequate, since this is a data set of complex numbers. Input Arguments: Data Sets: Output: Input 1 Single real or complex number Automatic Invocation: On Data Set Input Change VBIC_ac_solver Given the 4 terminal voltages, solves for 2-port network parameters. VE and VS are assumed to be 0. Input Arguments: VC (Collector Voltage) VB (Base Voltage) FREQ (Cut-off Frequency]) Output {FT|BETA|Y|H|Z|S} Output code specifying current gain, or parameters. This code should be placed in the Output field. Outputs: IC-CAP Reference 669 8 IC-CAP Functions The output depends on the code set in the Output field: Code Output FT Current gain cutoff frequency BETA Current gain Y The 2-port network y-parameters H The 2-port network h-parameters Z The 2-port network z-parameters S The 2-port network s-parameters VBIC_avc Calculates avalanche collector voltage (AVC1) based on the model parameter PC. a AVC1 = ------------------------b ( 1 – PC ) Where For an NPN, a = 7.05E05 cm-1 and b = 1.23E06 V/cm For a PNP, a = 1.58E06 cm-1 and b = 2.04E06 V/cm PC = b-c grading coefficient Input Arguments: None Output: Model parameter AVC1 VBIC_cbc Calculates the depletion capacitance versus bias. Input Arguments: VBC Output: 670 Base-Collector Voltage Depletion base-collector capacitance based on the VBIC formulation: SPICE model for AJC ≤ 0 and single-piece smooth model for AJC > 0. IC-CAP Reference 8 IC-CAP Functions VBIC_cbe Calculates the depletion capacitance versus bias. Input Arguments: VBE Output: Base-Emitter Voltage Depletion base-emitter capacitance based on the VBIC formulation: SPICE model for AJC ≤ 0 and single-piece smooth model for AJC > 0. VBIC_cj0 Calculates (extracts) the junction zero-bias capacitance. Input Arguments: VJ Junction voltage CJ Capacitance Output: E/C/S Junction {E|C|S} for CJE, CJC, or CJCP Output: The zero-bias junction capacitance stored in CJE, CJC, or CJCP. VBIC_clean_data This routine looks at each data point and scans ahead by the number of points specified by the input argument IN A ROW. If the data does not monotonically increase for the number of data points specified by IN A ROW, then zero is written to the output array. If the data does monotonically increase for the number of data points specified by IN A ROW, then from that data point onward, the INPUT DATA is written directly to the output (result) array. Input Arguments: INPUT DATA IN A ROW IC-CAP Reference 671 8 IC-CAP Functions Output: VBIC_csc Either the INPUT DATA or zero values. Calculates the depletion capacitance versus bias. Input Arguments: VSC Output: (Substrate-Collector Voltage) Depletion collector-substrate capacitance based on the VBIC formulation: SPICE model for AJC ≤ 0 and single-piece smooth model for AJC>0. VBIC_dc_approx This function calculates Ic, Ib, beta, intrinsic and extrinsic base-emitter voltage, and base charge for a bipolar transistor, using the terminal voltages Ve, Vb, and Vc as inputs. Vs is assumed to be 0. The first parameter should be set to the output of interest, which defaults to Ic. This approximate solution does not take quasi-saturation effects into account. Input Arguments: VC Collector Voltage VB Base Voltage VE Emitter Voltage Output:IC|IB|BETA|VBEI|VBEX|QB Set this field to the output of interest Output: 672 The output depends on the setting of the Output field. Code Output IC Collector current IB Base current BETA Current gain IC-CAP Reference IC-CAP Functions VBEI Intrinsic base-emitter voltage VBEX Extrinsic base-emitter voltage QB Base charge 8 VBIC_dci_solver This function calculates Ic, Vb, Ie, Is, or beta for a bipolar transistor, using the terminal voltages Ve, Vc, and Vs and Ib as inputs. The first parameter should be set to the output of interest, which defaults to Ic. Input Arguments: VC Collector Voltage IB Base Current VE Emitter Voltage VS Substrate Voltage Output: IC|VB|IE|IS|BETA Set this field to the output of interest. Output: The output depends on the code set in the Output field. Code Output IC Collector current VB Base voltage IE Emitter current IS Substrate current BETA Current gain VBIC_dcv_solver This function calculates Ic, Ib, Ie, Is, or beta for a bipolar transistor, using the terminal voltages Ve, Vb, Vc, and Vs as inputs. The first parameter should be set to the output of interest, which defaults to Ic. Input Arguments: VC IC-CAP Reference Collector Voltage 673 8 IC-CAP Functions VB Base Voltage VE Emitter Voltage VS Substrate Voltage Output: IC|IB|IE|IS|BETA Set this field to the output of interest. Output: The output depends on the code set in the Output field: Code Output IC Collector current VB Base voltage IE Emitter current IS Substrate current BETA Current gain VBIC_fg_currents Given the 4 terminal voltages, calculates parameters related to forward current. Input Arguments: 674 Data Sets: VC Collector Voltage VB Base Voltage VE Emitter Voltage VS Substrate Voltage IC Collector Current IB Base Current Parameters: The parameter indicates the region where the transform will limit its simulated output. VBIC_AUTO_RANGE must be set to 1. IS|NF Calculate over the region dominated by NF IBEI|NEI Calculate over the region dominated by NEI IC-CAP Reference 8 IC-CAP Functions IBEN|NEN Calculate over the region dominated by NEN IKF Calculate over the region dominated by IKF Output: {IB|B|IC|C|IE|E|IS|S} Code to indicate which current to output. Output: A subset of the current where zeros replace any range where data was not extracted (based on the auto-ranging algorithm). The output depends on the code set in the Output field: Code Output IB|B Base current IC|C Collector current IE|E Emitter current IS|S Substrate current Extracts: VBIC_ibci_nci Nothing Calculates the parameters IBCI and NCI. Input Arguments: VB Base Voltage VC Collector Voltage IB Base Current Output: NCI at each bias point (unaveraged). Extracts: IBCI, NCI VBIC_ibei_nei IC-CAP Reference Calculates the parameters IBEI and NEI. 675 8 IC-CAP Functions Input Arguments: VB Base Voltage VE Emitter Voltage IB Base Current Output: NEI at each bias point (unaveraged). Extracts: IBEI, NEI VBIC_ikf Calculates the parameter IKF. Input Arguments: VB Base Voltage VE Emitter Voltage IC Collector Current IB Base Current Output: IKF at each bias point Extracts: IKF (maximum value in range, 0.1 indicates failed extraction). VBIC_ikr Calculates the parameter IKR. Input Arguments: VB Base Voltage VC Collector Voltage IE Emitter Current IB Base Current Output: Reverse beta versus bias. Extracts: IKR (maximum value in range, 0.1 indicates failed extraction). VBIC_is_nf 676 Calculates the parameters IS and NF. IC-CAP Reference 8 IC-CAP Functions Input Arguments: VB Base Voltage VE Emitter Voltage IC Collector Current Output: NF versus bias with 0’s where out of auto-range. Extracts: IS, NF (average values in range). VBIC_isp_nfp Calculates the parameters ISP and NFP. Input Arguments: VB Base Voltage VC Collector Voltage IS Substrate Current Output: NFP versus bias with 0’s where out of auto-range. Extracts: ISP, NFP (average values in range). VBIC_nr Calculates the parameter NR. Input Arguments: VB Base Voltage VC Collector Voltage IE Emitter Current Output: NR versus bias with 0’s where out of auto-range. Extracts: NR (average value in range). VBIC_qcdepl Calculates depletion charge or capacitance based on VBIC formulation using SPICE model for A ≤ 0 and single-piece, smooth model for A > 0. IC-CAP Reference 677 8 IC-CAP Functions Input Arguments: Junction V Junction voltage P Param Built-in potential M Param Grading coefficient F Param Fwd bias depletion capacitance limit A Param Smoothing factor Mode : {Q|C} Charge or capacitance Output: Charge or capacitance versus bias. Extracts: Nothing VBIC_rcx Calculates RCX. Input Arguments: VB Base Voltage VE Emitter Voltage IC Collector Current IS Substrate Current IB Base Current Output: RCX versus bias with 0’s where out of auto-range. Extracts: RCX (maximum value in auto-range, if failed, value of 60 set). VBIC_rg_currents Given the 4 terminal voltages, calculates reverse currents. Input Arguments: 678 VC Collector Voltage VB Base Voltage VE Emitter Voltage IC-CAP Reference 8 IC-CAP Functions VS Substrate Voltage IE Emitter Current IB Base Current IS Substrate Current Parameters The parameter indicates the region where the transform will limit its simulated output. VBIC_AUTO_RANGE must be set to 1. IS|NR Calculate over the region dominated by NR IBCI|NCI Calculate over the region dominated by NCI IBCN|NCN Calculate over the region dominated by NCN IKR Calculate over the region dominated by IKR ISP|NFP Calculate over the region dominated by NFP IKP Calculate over the region dominated by IKP Output: {IB|B|IC|C|IE|E|IS|S} Code to indicate which current to output. Output: A subset of the current where zeros replace any range where data was not extracted (based on the auto-ranging algorithm). The output depends on the code set in the Output field: IC-CAP Reference Code Output IB|B Base current IC|C Collector current IE|E Emitter current IS|S Substrate current 679 8 IC-CAP Functions Extracts: Nothing. VBIC_stoc This function calculates capacitance data from S-parameter data, allowing base-collector and base-emitter capacitance to be calculated from network analyzer measurements. The output of this function can be used in place of actual capacitance data to extract capacitance-related parameters. Input Arguments: FREQ data Frequency S data S-parameter data (de-embedded) Node (C/E/S) Code to indicate type of extraction: E base-emitter capacitance C base-collector capacitance S substrate-collector capacitance Output: Capacitance versus frequency data Extracts: Nothing VBIC_vef_ver Calculates the forward and reverse early voltages given the collector, base, and emitter voltages in the forward and reverse modes, as well as the collector current in the forward mode and the emitter current in the reverse mode. The algorithm is based on the method described in “SPICE Early Modeling” by C. McAndrew & L. Nagel, BCTM 94, p. 144. Input Arguments: 680 Forward VC Collector Voltage Forward VB Base Voltage Forward VE Emitter Voltage Forward IC Collector Current Reverse VE Emitter Voltage Reverse VB Base Voltage Reverse VC Collector Voltage IC-CAP Reference 8 IC-CAP Functions Reverse IE Emitter Current Forward IB Base Current Output: VEF versus bias with 0’s where out of auto-range. Extracts: VEF, VER (average values in auto-range). Wait Switching matrix function. Used to pause for a specified number of seconds to accomplish dry switching. Refer to Chapter 2, “MOSFET Characterization,” in the IC-CAP Nonlinear Device Models, Volume 1 manual for more information. Input Arguments: Reals or Integers: Output: Period [sec] Single number with exit status Automatic Invocation: None wirexfX A wire function. Wire functions permit optimization of time-domain measurements in the X and Y dimensions. Time-domain measurements involve effects specifically related to the Y axis (voltage or current level) or the X axis (when a pulse occurs). Because X-axis data is typically the forced data set, it cannot normally be optimized. This makes it very difficult to optimize measured and simulated pulses that do not start with some amount of overlap in time. To solve this problem, the data can be transformed to create an independent X data set that can be optimized together with the Y data set. There are 2 ways of doing this. • Generate the set of X values that would result if the Y values were evenly spaced. The wirexfX provides this data. The complementary wirexfY function provides the set of Y values that would result from evenly spaced X values, which is the default case. IC-CAP Reference 681 8 IC-CAP Functions • Generate the sets of X and Y values that would result if the X and Y axes are normalized and the curve is divided into segments of equal length. The wirexfXY and wirexfYX functions provide this data. This function calculates variably spaced X values for evenly spaced Y values. Input Arguments: Data Sets: Output: X Data, Y Data Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change wirexfXY One of the wire functions that permit optimization of time domain measurements in the X and Y dimensions; for more details, refer to the wirexfX function. This function calculates the X data set produced when the X and Y axes are normalized and the curve is divided into segments of equal length. This function should be used in conjunction with wirexfYX during an optimization. Input Arguments: Data Sets: Output: X Data, Y Data Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change wirexfY One of the wire functions that permit optimization of time domain measurements in the X and Y dimensions; for more details, refer to the wirexfX function. This function calculates the Y data set when X values are evenly spaced. This function is supplied for completeness because Y data sets are normally collected in this manner. Input Arguments: Data Sets: 682 X Data, Y Data IC-CAP Reference 8 IC-CAP Functions Output: Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change wirexfYX One of the wire functions that permit optimization of time domain measurements in the X and Y dimensions; for more details, refer to the wirexfX function. This function calculates the Y data set produced when the X and Y axes are normalized and the curve is divided into segments of equal length. This function should be used in conjunction with wirexfXY during an optimization. Input Arguments: Data Sets: Output: X Data, Y Data Array of real numbers; size determined by inputs Automatic Invocation: On Data Set Input Change IC-CAP Reference 683 8 684 IC-CAP Functions IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 9 Parameter Extraction Language Fundamental Concepts 686 Expressions 745 IC-CAP’s Parameter Extraction Language can be used to create new functions. This language is modeled on Rocky Mountain BASIC (rmb), the name adopted for HP BASIC or Workstation BASIC when HP introduced it on HP-UX. IC-CAP implements a subset that can aid in controlling the system and performing computations. This chapter describes the syntax and operation of this interpreter. It is responsible for several IC-CAP system features: • Numerical expressions in most editors in the system • Transforms using the Program2 or Program function • Macros that a Model can use Agilent Technologies 685 9 Parameter Extraction Language Fundamental Concepts The interpreter within IC-CAP can execute programs made up of statements that consist of keywords and expressions. Expressions are constructed from functions, identifiers, and operators. You enter these statements in the text editor that appears when you select Program2 or Program as the function name in the Extract/Optimize folder, or when you open the Macros folder (refer to Chapter 11, “Creating and Running Macros,” in the IC-CAP User’s Guide). The same interpreter is used to evaluate the expressions entered in various tables providing a consistent syntax throughout the system. Strictly speaking, the expressions appearing in tables are not statements. Keywords Keywords are reserved by the Parameter Extraction Language. A keyword can be one of the reserved words required for a statement, such as PRINT. It can also be a built-in function or a built-in constant. For keyword descriptions, refer to “Built-in Functions” on page 712 and “Built-In Constants” on page 744. Keywords are entered in all uppercase or all lowercase, but not upper and lower case. For example, to call the built-in function MAX: MAX(ic) or max(ic) Although the functions in IC-CAP’s Function List can be invoked, those functions, such as RMSerror, are not language keywords. To be used in a Program, expression, or Macro, these functions must be spelled exactly as shown in the Function List. Identifiers Identifiers are Parameter Extraction Language variable names; they have the following properties: • Identifiers can be of mixed case. 686 IC-CAP Reference 9 Parameter Extraction Language • An identifier can be any length. • An identifier starts with an alphabetic character or an underscore character ( _ ). It can include alphanumeric characters and underscore characters thereafter. Four notable exceptions to this are: • A subcircuit parameter, like npn.BF, is a legitimate identifier; a period (.) is allowed in this case. • A data set, like npn/dc/fgummel/ic is a legitimate identifier; a slash (/) is allowed in this case. • The notations ../ and ../.. are allowed to indicate relative paths in the currently executing macro or transform for dataset access. • In Programs and Macros, local variable names (identifiers) can end with a trailing dollar sign ($). Included for the convenience of BASIC programmers when using string variables, the only effect is that the program is easier to read. An example is: Hi$="hello world" Numeric Precision You can control numeric precision by setting the variables WORKING_PRECISION and/or PARAMETER_PRECISION or by using the PEL function val$(). • PARAMETER_PRECISION This variable controls the precision of parameters stored in the Model or DUT Parameters table, as well as the precision of parameters passed to a simulator. • WORKING_PRECISION This variable controls the precision of numeric values when converted to text, but affects only those parts of a model for which the variable is defined. Depending on when and where the conversion occurs, precision can be actually lost or simply hidden. This conversion occurs in the following situations: any time the function val$() is called; the PRINT statement is used; a numeric value is IC-CAP Reference 687 9 Parameter Extraction Language assigned to a variable in the IC-CAP Variable Table; a number is displayed to the screen (e.g., in an input/output/plot definition or tabular data) or saved to a file. (Because all variables in the IC-CAP Variable Table are text by definition, assigning a numeric value to such a variable will implicitly call the val$() function.) Although the numbers are truncated for display purposes according to the WORKING_PRECISION variable, IC-CAP uses the untruncated numbers for calculations until the file is saved. After the truncated numbers are saved in a file then reread, the truncated numbers are used in calculations. For example, if you type 1.23456 into an input field, 1.235 is displayed. However, 1.23456 is used for calculation. After the file is saved and reread, 1.235 is not only displayed but also used for calculations. When you change the WORKING_PRECISION variable, the change is only apparent with subsequently edited or redisplayed fields. The value of the WORKING_PRECISION variable applies to the precision of the Start/Stop/Stepsize fields of inputs, though not all instrumentation can support such resolution. Using higher precision involving these fields should be done with caution. The range of values is 6 through 17. The default is 6. Controlling precision through val$() calls The function val$() has an optional second argument that can be used to control numeric precision. For example, the statement y=val$(x,12) will convert the number x to a string using up to 12 significant digits if required. Use this form of val$() when the current value of WORKING_PRECISION is acceptable for most of the work at hand, but greater control is required for isolated instances. In those instances, the second argument of val$() can be used to override the current working precision. 688 IC-CAP Reference 9 Parameter Extraction Language The examples that follow show how the output varies based on whether or not the WORKING_PRECISION variable is defined, and how the WORKING_PRECISION variable, when defined, is overridden by using val$(). NO TE When doing comparisons on real numbers, you may see unexpected results (PEL printouts are rounded, although full precision is used internally). Using the new WORKING_PRECISION variable or the val$(xxx,y) function, you can verify the actual value. For example, consider the following PEL clause: x=0.39999999999 IF x < 0.4 THEN PRINT x;“is less than 0.4” END IF Since x=0.39999999999, the IF clause will be entered but it will print 0.4 is less than 0.4. To verify the actual value, change the x in the print statement to val$(x,15) . The output will then show 0.39999999999 is less than 0.4. PRINT val$(x,15);“is less than 0.4 Example, Scenario 1 This scenario shows the usefulness of the new argument in the val$() function. Conditions: No WORKING_PRECISION variable is declared within current scope; var1, and var2 are variables in the Variable table within the current scope. PEL x=0.1234567890123 ! implicit val$() used behind the scenes uses var1=x ! default working precision (6 digits) var2=val$(x,9) ! explicit val$() specifying 9 digits of precision y=0+var1 ! implicit val() used on var1 to make numeric again z=0+var2 ! implicit val() used on var1 to make numeric again print “Default precision x=”,x ! default working precision used print “Default precision y=”,y ! default working precision used print “Default precision z=”,z ! default working precision used print “var1=”,var1 ! no conversion--var1 already text print “var2=”,var2 ! no conversion--var2 already text print “High precision x=”,val$(x,9) ! explicit working precision print “High precision y=”,val$(y,9) ! explicit working precision print “High precision z=”,val$(z,9) ! explicit working precision IC-CAP Reference 689 9 Parameter Extraction Language Output Default precision x= Default precision y= Default precision z= var1= var2= High precision x= High precision y= High precision z= 0.1235 0.1235 0.1235 0.1235 0.123456789 0.123456789 0.1235 0.123456789 Notice that y lost precision because var1 lost precision, however it is clear from the High precision lines that more information is available for x and z even though printing at the default precision did not reveal it. Example, Scenario 2 This Scenario uses the same code as Scenario 1, except that the default working precision has been increased via the WORKING_PRECISION variable. Conditions: WORKING_PRECISION variable in the current scope is set to 12; var1 and var2 are variables in the Variable Table within the current scope. PEL x=0.1234567890123 var1=x var2=val$(x,9) y=0+var1 z=0+var2 print print print print print print print print ! ! ! ! ! implicit val$() used behind the scenes uses current working precision (12 digits) explicit val$() specifying 9 digits of precision implicit val() used on var1 to make numeric again implicit val() used on var1 to make numeric again “Default precision x=”,x ! “Default precision y=”,y ! “Default precision z=”,z ! “var1=”,var1 ! “var2=”,var2 ! “High precision x=”,val$(x,9) “High precision y=”,val$(y,9) “High precision z=”,val$(z,9) current working precision used current working precision used current working precision used no conversion--var1 already text no conversion--var2 already text ! explicit working precision ! explicit working precision ! explicit working precision Output Default precision x= Default precision y= Default precision z= var1= var2= High precision x= High precision y= High precision z= 690 0.123456789012 0.123456789012 0.123456789 0.123456789012 0.123456789 0.123456789 0.123456789 0.123456789 IC-CAP Reference Parameter Extraction Language 9 In this case, notice that the overriding val$() assignments actually lower the default precision since the default has been set to 12 digits via the WORKING_PRECISION variable. Statements This section describes how to write statements that make up Programs and Macros. The information in this section is not required to use expressions in the editor tables within IC-CAP. Rules for Constructing Statements As in BASIC, statements are generally contained in a single line of input. On the other hand, a quoted string can be as many lines long as needed and can contain CR-LFs (carriage return-line feeds). Statements can be arbitrarily complex, and can use parentheses and white space to clarify precedence and improve readability. Keywords must be all uppercase or all lowercase characters. Calls to functions in IC-CAP’s Function List must be spelled exactly as they are in the Function List. Use an exclamation mark (!) to comment out a line or any part of a line. Available Statements and Commands The following statements are taken from HP BASIC. They are sensitive to the use of CR-LF, and must be written as shown. For example, the ELSE keyword should be followed by nothing on the same line, although a comment (starting with ! ) could follow it. In this section, the abbreviation expr denotes an expression. Expressions are described in “Expressions” on page 745. The abbreviation boolean_expr denotes a boolean expression, generally 0 or 1 (1, as well as any non-zero value, is considered TRUE). For more information, refer to “Boolean Expressions” on page 747. IC-CAP Reference 691 9 Parameter Extraction Language IF THEN with a single statement IF boolean_expr THEN statement IF THEN with multiple statements IF boolean_expr THEN statement1 . . . statementN END IF IF THEN ELSE statement IF boolean_expr THEN statement1 . . . statementN ELSE statement1 . . . statementN END IF WHILE statement WHILE boolean_expr statement1 . . . statementN END WHILE GET_DATASET statement GET_DATASET prompt_string, variable_name GET_DATASET prompt_string, default_string, variable_name GET_DATASET is currently only supported by the Program2 function. An error occurs if used with a Program function or Macro. GET_DATASET can redirect a Program2 dataset or array parameter argument into a named variable. The prompt_string and optional default_string parameters are currently unused and ignored. The variable_name argument is a variable that receives the redirected Program2 parameter argument. The named variable can be a variable local to the Program2 function. After the GET_DATASET statement finishes, it returns a dataset to the named variable. Currently the named variable can not represent a global variable or variable from an IC-CAP variable table. 692 IC-CAP Reference 9 Parameter Extraction Language Example Program2 function transform using GET_DATASET: sub_prog { PRINT "enter sub_prog" ! re-direct a dataset parameter argument passed into this ! function into local variable loc_x GET_DATASET "", loc_x PRINT "loc_x == " PRINT loc_x PRINT "leave sub_prog" RETURN } Example: ! create a small dataset x COMPLEX x[5] i = 0 WHILE i < sizeof(x) x[i] = i+2 + j*(i+1) i=i+1 ENDWHILE ! pass a small dataset x to the Program2 function sub_prog iccap_func("sub_prog", "Execute", x) Output: enter sub_prog loc_x == Point Index R:measured 0 (1,1) 2.000000E+000 1 (1,1) 3.000000E+000 2 (1,1) 4.000000E+000 3 (1,1) 5.000000E+000 4 (1,1) 6.000000E+000 Point Index R:simulated 0 (1,1) 2.000000E+000 1 (1,1) 3.000000E+000 2 (1,1) 4.000000E+000 3 (1,1) 5.000000E+000 4 (1,1) 6.000000E+000 I:measured 1.000000E+000 2.000000E+000 3.000000E+000 4.000000E+000 5.000000E+000 I:simulated 1.000000E+000 2.000000E+000 3.000000E+000 4.000000E+000 5.000000E+000 leave sub_prog GET_INT statement GET_INT prompt_string, variable_name GET_INT prompt_string, default_string, variable_name Uses a dialog box to request an integer input from the user, prompting with prompt_string, which should be a quoted string, an identifier, or an expression treated as an integer. Where applicable, default_string provides the user with a default answer, enabling the user to simply select OK and avoid typing any data. The prompt_string can be any valid IC-CAP Reference 693 9 Parameter Extraction Language string expression. The default_string can be any valid string expression representing an integer. The variable_name argument is a variable that receives the user's response. The variable can be an IC-CAP system variable, or a variable local to Program, Program2, or Macro. After the GET_INT statement finishes, it returns an integer value to the named variable. If the named variable is a global variable, the integer value will be stored in the variable table. The GET_INT dialog box contains 2 buttons: CANCEL and OK. Choose CANCEL to terminate Program, Program2, or Macro immediately. If GET_INT is used in a Program or Macro to pass parameters, all GET_INT statements should be located immediately at the start of the Program or Macro along with any other GET_INT, GET_REAL, GET_STRING or LINPUT statements. Once any other ICCAP_FUNC statement is invoked, the list of arguments is reset, thereby removing all the extra arguments from the calling ICCAP_FUNC statement. Program2 does not have this limitation. If GET_INT is used in a Program or Macro to pass parameters, the GET_INT statement searches the passed parameter list until it finds a valid passed integer parameter argument. In the Program2 function, the GET_INT statement will only try to evaluate the next available passed function parameter as an integer value, and will error out if the next passed function parameter can not be evaluated as an integer value. GET_REAL statement GET_REAL prompt_string, variable_name GET_REAL prompt_string, default_string, variable_name Uses a dialog box to request a real input from the user, prompting with prompt_string, which should be a quoted string, an identifier, or an expression treated as a real value. Where applicable, default_string provides the user with a default answer, enabling the user to simply select OK and avoid typing any data. The prompt_string can be any valid string expression. The default_string can be any valid string expression representing a real value. The variable_name argument is a variable that receives the user's response. The 694 IC-CAP Reference Parameter Extraction Language 9 variable can be an IC-CAP system variable, or a variable local to Program, Program2, or Macro. After the GET_REAL statement finishes, it returns a real value to the named variable. If the named variable is a global variable, the string value will be stored in the variable table. The GET_REAL dialog box contains 2 buttons: CANCEL and OK. Choose CANCEL to terminate Program, Program2, or Macro immediately. If GET_REAL is used in a Program or Macro to pass parameters, all GET_REAL statements should be located immediately at the start of the Program or Macro along with any other GET_INT, GET_REAL, GET_STRING or LINPUT statements. Once any other ICCAP_FUNC statement is invoked, the list of arguments is reset, thereby removing all the extra arguments from the calling ICCAP_FUNC statement. Program2 does not have this limitation. If GET_REAL is used in a Program or Macro to pass parameters, the GET_REAL statement searches the passed parameter list until it finds a valid passed real parameter argument. In the Program2 function, the GET_REAL statement will only try to evaluate the next available passed function parameter as a real value, and will error out if the next passed function parameter can not be evaluated as a real value. GET_STRING statement: See “LINPUT or GET_STRING statement” on page 697. GET_STRING is simply an alternate name for the LINPUT command. The new name is consistent with GET_INT, GET_REAL, and GET_DATASET. GLOBAL_VAR statement GLOBAL_VAR <variable_name> Declares a variable as a global variable in a program. This statement is most useful for the Program2 function, because the Program2 function treats all variables as local variables unless those variables are first explicitly declared as global variables using the GLOBAL_VAR statement. In the Program IC-CAP Reference 695 9 Parameter Extraction Language function, all variables can be resolved globally or locally without needing to explicitly specify which variables are global using the GLOBAL_VAR statement. The variable_name should refer to an IC-CAP variable in a variable table. Before using a variable from a variable table in Program2, you should declare the variable as global with GLOBAL_VAR. An error will occur if an IC-CAP variable could not be found. GLOBAL_VAR varX y=varX RETURN y ICCAP_FIND_CHILDREN statement ICCAP_FIND_CHILDREN “/”,“Model”,loadedModels Sets a variable to be the list of names of a particular child type of an IC-CAP object. This turns the variable loadedModels from a variable table into an ICCAP_ARRAY containing elements that are the names of the currently loaded models. Use the sizef() command to determine the size of the array. Refer to the following table for valid names for the second argument given the type of the first argument. First Argument References Second Argument may be / Model any GUI Item Table or any GUI Item GUI Item NO TE 696 any model DUT any DUT Setup Any Setup Input, Output, Transform, or Plot You should use sizeof() instead of size() because if no objects of the requested type are found, a null string ("") is returned instead of an ICCAP_ARRAY[0]. Since size() returns 1 for a null string, you would first test the result to make sure it is not a null string before using the size() command to determine the number of entries. The sizeof() function returns 0 for a variable that is not an ICCAP_ARRAY[]. IC-CAP Reference 9 Parameter Extraction Language ICCAP_FUNC statement ICCAP_FUNC (object_name, menu_function_name, dialog_answer1, ...) Used primarily in macros for automating the operation of IC-CAP. NO TE The ICCAP_FUNC statement replaced the MENU_FUNC statement in release 5.0. For backward compatibility, macros containing the MENU_FUNC statement will still work, but new macros should be written using the ICCAP_FUNC statement. For an example on using the ICCAP_FUNC statement, refer to Chapter 11, “Creating and Running Macros,” in the IC-CAP User’s Guide. LINPUT or GET_STRING statement LINPUT prompt_string, variable_name LINPUT prompt_string, default_string, variable_name GET_STRING prompt_string, variable_name GET_STRING prompt_string, default_string, variable_name Uses a dialog box to request a string input from the user, prompting with prompt_string, which should be a quoted string, an identifier, or an expression treated as a string. Where applicable, default_string provides the user with a default answer, enabling the user to simply select OK and avoid typing any data. Like prompt_string, the default_string can be any valid string expression. The variable_name argument is a variable that receives the user’s response. The variable can be an IC-CAP system variable, or a variable local to the Program, Program2, or Macro. After the LINPUT or GET_STRING statement finishes, it returns a string to the named variable. This will either be the null string (""), or a string defining the text that would be typed in the LINPUT or GET_STRING dialog box. If the named variable is a global variable, the string value will be stored in the variable table. To interpret the results as a number, you must use val(). The LINPUT or GET_STRING dialog box contains 2 buttons: CANCEL and OK. Choose CANCEL to terminate Program, Program2, or Macro immediately. IC-CAP Reference 697 9 Parameter Extraction Language If LINPUT or GET_STRING is used in a Program or Macro to pass parameters, all LINPUT or GET_STRING statements should be located immediately at the start of the Program or Macro along with any other GET_INT, GET_REAL, GET_STRING or LINPUT statements. Once any other ICCAP_FUNC statement is invoked, the list of arguments is reset, thereby removing all the extra arguments from the calling ICCAP_FUNC statement. Program2 does not have this limitation. PRINT statement PRINT expr Writes an ASCII printout of the given expression to the Status window or location specified by a preceding PRINTER IS statement. As in HP BASIC, several arguments can be used, and these can be separated by a semicolon (;), comma (,), or a period (.). The semicolon separator results in no spacing between printed arguments, while the comma separator results in a tab character. When printing multiple arguments, the ampersand (&) operator and the VAL$ function may be useful. Refer to “Built-in Functions” on page 712 and “Expressions” on page 745. PRINTER IS statement PRINTER IS <string> Specifies where subsequent PRINT statements write. String specifies a path and filename for subsequent PRINT statements. A special token CRT specifies that subsequent PRINT statements write to the Status window. For example: PRINTER IS “/tmp/tmpfile” PRINT “This text is going to tmpfile” PRINTER IS CRT PRINT "This text is going to the status window” RETURN statement RETURN [expr] Copies a data set expression into the local storage of the Transform, making the data available to Plots or other Transforms that may reference it. In both Program and Program2, it can be used to store data by including the 698 IC-CAP Reference 9 Parameter Extraction Language optional argument. In a Macro, no argument can be present. In both cases, Program, Program2, or Macro terminates after this statement is executed. For example: Id = IS * exp(vd / NF / vt) RETURN Id RETURN_VALUE statement RETURN_VALUE expr Interprets expr as a single real value. If expr is a dataset, the first value will be returned. If expr is a variable, it will interpret the value as a real value. If the variable is an ICCAP_ARRAY, it will interpret the string as a number, returning the dimension of the ICCAP_ARRAY, not the first value of the array. RETURN_VALUE copies a real value from an expression into the local storage of the Transform, making the data available to Plots or other Transforms that may reference it. Both Program and Program2 terminates after this statement is executed. Use RETURN_VALUE when only a single return value is required. This will avoid IC-CAP increasing the size of the return value to the size of the setup. The RETURN_VALUE statement's returned dataset will be size 1, whereas the RETURN statement's return dataset size will be determined by the size of the setup. RETURN_VALUE is unsupported with Macros. For example: Id = 23.44 RETURN_VALUE Id TUNER statement TUNER pname, min, initValue, max, linLogScale, cbStyle, cbName where: pname: IC-CAP Reference is a string (or variable array, refer to the section “Using Variable arrays”) containing the name of the variable or parameter you want automatically adjusted each time the tuner is adjusted. 699 9 Parameter Extraction Language min: is a number (or variable array, refer to the section “Using Variable arrays”) that specifies the minimum end of the tuner scale. initValue: initValue is a number (or variable array, refer to the section “Using Variable arrays”) that specifies the initial position of the slider. max: is a number (or variable array, refer to the section “Using Variable arrays”) that specifies the maximum end of the tuner scale linLogScale: is a number (or variable array, refer to the section “Using Variable arrays”) that specifies whether the tuner will have a log scale or not. cbStyle: is a number (1 or 0) that specifies whether or not the callback is called continuously as the slider moves (while the user has the mouse button pressed) or only when the slider motion is complete (when the user releases the mouse button). 1 Specifies continuous callbacks; 0 specifies endpoint callbacks. cbName: is a string that specifies a Macro or Transform in the same manner you would refer to a macro or transform using a ICCAP_FUNC statement. This Function will be called as indicated by cbStyle. For example, you may have a macro named cb in model m1 and you could specify this macro absolutely with “/m1/cb” or relatively by “cb” from any macro within m1. SLIDER statement SLIDER pname, min, initValue, max, OKFlag, retVal where: 700 IC-CAP Reference 9 Parameter Extraction Language pname: is a string (or variable array, refer to the section “Using Variable arrays”) containing the name of the variable or parameter you want automatically adjusted each time the tuner is adjusted. min: is a number (or variable array, refer to the section “Using Variable arrays”) that specifies the minimum end of the tuner scale. initValue: initValue is a number (or variable array, refer to the section “Using Variable arrays”) that specifies the initial position of the slider. max: is a number (or variable array, refer to the section “Using Variable arrays”) that specifies the maximum end of the tuner scale okFlag is an expression. 0 means return as soon as the slider is adjusted; nonzero means return only when user clicks OK. retVal If more than one slider is specified, using arrays, retVal returns the index of the modified slider and the new value is automatically updated to the initValue array. If only one slider is specified via means other than variable arrays, retVal returns the new value of the slider. Using Variable Arrays To specify multiple parameters or variables for tuning, you can use variable arrays. The arguments pname, min, initValue, and max must all be variable arrays of the same dimension. (A variable array is defined by setting the value of any variable in a variable table to ICCAP_ARRAY[dim] where dim is the dimension of the array.) For example, if names, mins, maxs, and currs were all variable arrays of dimension 4, and names was an array of param names and mins was an array of min values, etc, the statement IC-CAP Reference 701 9 Parameter Extraction Language TUNER names,mins,currs,maxs,0,1,"mycallback" would invoke a TUNER with 4 sliders on it, one for each parameter in the names array. NO TE Clicking OK on the tuner returns control to the Macro; clicking CANCEL on the tuner aborts the macro currently running. You can set and access n-dimensional variable arrays. If you set the arrays a=ICCAP_ARRAY[2] a[0]=ICCAP_ARRAY[2] you can then access and set a[0][1] in PEL. UPDATE_EXPLICIT, UPDATE_MANUAL, UPDATE_AUTO, UPDATE_EXTRACT, and UPDATE_OPTIMIZE statements Tell IC-CAP when to automatically run a Program. These statements do not affect the Program, as can be seen in the following examples: UPDATE_EXPLICIT UPDATE_MANUAL UPDATE_AUTO UPDATE_OPTIMIZE UPDATE_EXTRACT NO TE 702 !suppress all auto-execution of the !transform !suppress all auto-execution of the !transform except during an optimization !auto-execute the transform if a data set !input changes !auto-execute upon selection of the !Optimize menu function !auto-execute upon selection of the !Extract menu function UPDATE_MANUAL will auto-execute a transform during an optimization only if it is a dependency on the simulated target of the optimization. IC-CAP Reference 9 Parameter Extraction Language Use only 1 statement per Program and place the statement first in the Program. They have no effect in a macro because macros are never automatically executed by IC-CAP. For more information about the automatic execution of Programs, refer to “Automatic Transform Execution” in the User’s Guide. COMPLEX statement COMPLEX <array_name>.<type>.<matrix_dimensions>[size_expr] Declares a temporary variable as an array. The individual points of such an array can be manipulated, after which the RETURN statement can be used to save the contents. The array_name and size_expr arguments must be provided. The type specifier and matrix_dimensions specifier are optional. The matrix_dimensions can be either literal or an expression in ( ) up to 9999. Only a square matrix is currently supported. The following examples demonstrate the various forms that the COMPLEX statement can take. For information on understanding the use of the M, S, and B specifiers, refer to “Measured, Simulated, and Common Data” in the IC-CAP User’s Guide. (These specifiers identify whether space is allocated for measured, simulated, both measured and simulated, or for data to be considered common.) “Data Types” on page 708 explains the M, S, and B specifiers. The matrix dimensions specifier should be equal to 22 for 2-port data. For DC data sets it is simplest to omit it; this results in a default value of 11 (1x1 data) suitable for DC, CV, TDR and other non-2-port data sets. COMPLEX tmp_array[30+5] ! Common data; 35 complex points; !indexed 0 to 34 COMPLEX tmp_array.M[35] ! Measured data COMPLEX tmp_array.S[35] ! Simulated data COMPLEX tmp_array.B[35] ! Both measured and simulated data ! is allocated COMPLEX t_arr.22[30+5] ! Common data; 35 2x2 (i.e. 2-port) !points COMPLEX t_arr.M.22[35] ! Measured data; 35 2x2 points COMPLEX t_arr.S.22[35] ! Simulated data; 35 2x2 points COMPLEX t_arr.B.22[35] ! Both measured and simulated data is ! allocated COMPLEX t_arr.B.1212[35] ! 12x12 matrix COMPLEX t_arr.B.(r*10+c)[35] ! r, c up to 9x9 COMPLEX t_arr.B.(r*100+c)[35] ! r, c up to 99x99 IC-CAP Reference 703 9 Parameter Extraction Language After an array is declared using COMPLEX, all elements have a value of 0. Refer to “Assignment” on page 704 for a description of how to modify elements within the array. Examples of data set access are provided in “Data Types” on page 708. Those examples also apply to accessing the temporary arrays declared by COMPLEX and the points within them. The COMPLEX statement is not always necessary when working with arrays. In many cases, assignment and other operations can be done implicitly on an array-wide basis. For example, the following statements produce the average of two 2-port S-parameter data sets: x = (S1+S2) / 2 RETURN x ! or, simply, RETURN (S1+S2) / 2 When individual points in the array require differing and non-trivial manipulations (thus making it necessary to assign to them on a point-wise basis), use the COMPLEX statement. Typical applications are filtering noise from data or producing a new data set that contains only a subset of another data set. Assignment Assignment is an important statement for complicated computations that require temporary variables or perform extractions. An assignment statement consists of a simple identifier on the left, an = sign, and any allowed expression to the right. It is possible to declare temporary arrays (using COMPLEX) and to assign values to individual points within these arrays. NO TE A single equal sign (=) is used to indicate assignment; a double equal sign (==) is used to test for equality. HP BASIC uses = for both. The valid forms for assignment are as follows: tempvar = <any expression> <Model parameter> = <REAL expression> <DUT parameter> = <REAL expression> 704 IC-CAP Reference 9 Parameter Extraction Language <IC-CAP system variable> = <REAL expression> <tmp_array>.<type>.<row_and_column>[index_expr] = <REAL or COMPLEX expression> In the last case, some fields are optional. The following examples show every legitimate case and demonstrate all valid forms of assignment. IC-CAP Reference BF = ic[0]//ib[0] Assigns the bjt Model parameter BF to the ratio of 2 points (ic[0] and ib[0]). AREA = 1.2 Assigns (in a bjt Model) a value to the DUT parameter AREA. npn2.BF = 100 Assigns a value to the Model parameter npn2.BF, if the current Model possesses such a parameter. Failing that, it assigns a value to a BF parameter in another Model named npn2. npn2/dc.AREA = 100 Assigns a value to the DUT parameter AREA, within the DC DUT of a Model named npn2. TNOM = 25 TNOM is generally defined as an IC-CAP system variable. Here it is assigned a value of 25. x=4 Declares x a temporary variable and assigns an integer. Recommended for loop counters. The maximum integer that you can set is 2147483647 (MAXINT). If you attempt to assign an integer in excess of MAXINT, unreported overflow errors will occur and the actual integer assigned will not be the value you attempted to assign. If you wish to use numbers larger than MAXINT, specify using a .0 at the end of the number (see x = 4.0) or use engineering notation. 705 9 706 Parameter Extraction Language x = 4.0 Declares x a temporary variable and assigns a double precision floating point number. Not recommended for loop counters due to roundoff errors. x = ic//ib Declares x a temporary variable and assigns it to the ratio of the 2 data sets (ic and ib). Refer to “Expressions” on page 745 for an explanation of the double slash (//). x = S.21 Declares x a temporary variable and assigns to it all the 21 (forward transmission) data within a 2-port data set named S. x = S.M.21 Declares x a temporary variable and assigns to it all the measured 21 (forward transmission) data within a 2-port data set named S. x = ic or x = ic.m or x = ic.s Declares x a temporary variable and assigns to it the data within an Output named ic. If ic only has measured data, only measured data is assigned to x. If ic only has simulated data, only simulated data is assigned to x. If ic has both measured and simulated data, both are assigned to x. If x is not the correct size for the requested data, x resizes to accommodate the data on the right side. IC-CAP Reference 9 Parameter Extraction Language IC-CAP Reference x.m = ic or x.m = ic.s or x.m = ic.m If x has never been assigned or was assigned some value other than a temporary dataset, adding .m to left side has no effect. See x=ic, x=ic.s, x=ic.m. If x was previously defined as a temporary dataset, assigns to its measured array the data within an output named ic. If ic contains just simulated data or if the right side is ic.s, x receives just the simulated data in its measured array. If ic contains common or measured data or if the right side is ic.m, x receives that data in its measured array. If x contains preexisting simulated data, that simulated data is not changed. If x is not the correct size for the requested data, an error occurs. x.s = ic or x.s = ic.s or x.s = ic.m If x has never been assigned or was assigned some value other than a temporary dataset, adding .s to left side has no effect. See x=ic, x=ic.s, x=ic.m. If x was previously defined as a temporary dataset, assigns to its simulated array the data within an output named ic. If ic contains just simulated data or if the right side is ic.s, x receives just the simulated data in its simulated array. If ic contains common or measured data or if the right side is ic.m, x receives that data in its simulated array. If x contains preexisting measured data, that measured data is not changed. If x is not the correct size for the requested data, an error occurs. 707 9 Parameter Extraction Language The following statements demonstrate assignment to points in temporary arrays. They require prior use of the COMPLEX statement to declare the temporary array appearing to the left of the equal sign (=). An array index i is assumed in each case to be an integer or integer expression. It should have a value between 0 and size-1, where size was established in a COMPLEX statement. tmp_array.M[i] = 2+2 ! Measured data point assigned value of ! 4 tmp_array.S[i] = 2+2 ! Simulated data point assigned value ! of 4 tmp_array.B[i] = 2+2 ! Measured and simulated data points ! are BOTH assigned tmp_array_x[i] = 2+2 ! Common or measured data point ! assigned value of 4 tmparr.M.21[i] = 2+j5 ! Measured ’21’ data point receives ! complex tmparr.S.21[i] = 7+20 ! Simulated ’21’ data point receives ! real tmparr.B.21[i] = 2+j5 ! Measured and simulated ’21’ data ! points are BOTH assigned tmparr_x.21[i] = 2+j5 ! Common or measured ’21’ data point ! receives complex The following assignment statements are not valid: COMPLEX x.m[size(beta.m)] x.m = beta.m ! left-side expression must be simple ! identifier, or individual point S = S + S where S is an existing IC-CAP data set. You cannot overwrite an existing data set in this manner. (However, you could establish an IC-CAP data set with identical data using RETURN S+S .) tmp_array[i] = S[i] ! not valid if S[i] is non-scalar (for ! example, 2-port data) Data Types This section describes the primitive data types supported in expressions, Programs, and Macros. These types of data represent the simplest possible expressions. Because IC-CAP automatically assigns data types, it is not necessary to declare a data type for a variable. Thus, to declare and initialize a temporary variable in a Program Transform or Macro, assign a value to it. For example, entering tempvarx = S.m.21[3] automatically makes tempvarx a complex entity (S is assumed to be 2-port data). The variable tempvarx is known 708 IC-CAP Reference 9 Parameter Extraction Language only to the Transform program being defined and is discarded when the program finishes. IC-CAP recognizes and operates on the following data types: real (or double) For example: 2.0, 2e-6, and 2.0k. complex Engineering and scientific notation are accepted in any mix. For example: 2+j2, 2+j*2, and 2.05meg-j1.0e6. pure imaginary j*2, j2, j, and j*1meg. matrix The expression S.M[0] is a matrix example if S is 2-port data. Model and DUT Parameters These are scalar real numbers. When IC-CAP encounters such an identifier (BF for example), it searches for a match in the following order until one is found: 1 DUT level parameter 2 Model level parameter 3 Setup level parameter 4 DUT level variable 5 Model level variable 6 System level variable 7 Datasets Model parameters can be used in, or assigned to, expressions. For example: BF = 100 x = 2 * BF npn1.BF = 100 !BF in another Model npn1/dc.AREA=1 !AREA in another DUT IC-CAP variables Refer to Model Parameters for a description of how IC-CAP resolves the meaning of symbol names. Like Model Parameters, system variables can be used in, or assigned to, expressions. They have one enhanced capability not shared by the parameters—a string can be assigned to them. For example, EXTR_MODEL="opamp" IC-CAP Reference 709 9 Parameter Extraction Language Do not attempt to enter an expression when editing an IC-CAP system variable table. This will not be evaluated when you later reference the variable. If the system variable is used in a numeric expression, it is safest to enter only a single number in the system variable table. To obtain the text contents of a system variable, use the following: VAL$(EXTR_MODEL) where EXTR_MODEL is a system variable. data set Arrays of matrices of complex numbers. In the most complex case (2-port S-parameter measured and simulated data), data sets hold an array of measured matrices and an array of simulated matrices. (Refer to “Measured, Simulated, and Common Data" in the IC-CAP User’s Guide.) IC-CAP entities considered to be data sets are Inputs, Outputs, and Transforms. The syntax for accessing all or part of a data set is described in the following paragraphs. Temporary arrays, such as those declared by the COMPLEX statement, can also be accessed using the syntax in the examples. In the following examples of data set access, S denotes an existing data set of 2-port data; IC denotes an existing DC data set. Both data sets are type B (both)—they contain measured and simulated data. NO TE 710 These examples are valid for reading data in a temporary array in a Program or Macro, and for reading data in an IC-CAP data set. However, choices are more limited when assigning to (writing to) temporary arrays; also, no assignment can be done directly into IC-CAP data sets (outside of the RETURN statement). For details regarding assignment statement, refer to “Assignment” on page 704. IC.M Produces a data set containing only measured data. IC.S Produces a data set containing only simulated data. M (measured), S (simulated), and B(both) act as keywords and can be specified in either uppercase or lowercase. IC-CAP Reference 9 Parameter Extraction Language IC.B or IC Produces a data set containing both measured and simulated data. S[2] or S.M[2] Produces a matrix of measured data. It is the third matrix in S.M, the first being S[0]. An expression can be substituted for 2. In the first case, the system selects measured data by default. Since 2 selects the third matrix, 0 would select the first matrix. This is consistent with HP BASIC, in which OPTION BASE 0 is the default when accessing array elements. The last matrix in S.M can be accessed with the built-in function SIZE: S[size(S)-1]. Results are undefined if you attempt to use indices that are negative or are beyond the end of the data set. IC[0] or IC.M[0] Produces a real number that is the first point in IC’s measured data. An expression can be substituted for 0. Note: Omitting the .M extension (IC[0]) defaults to measured data only, NOT both measured and simulated data. S.s[2] Produces a matrix of simulated data that is the third point (the first is S.s[0]). An expression can be substituted for 2. S.21 S.0201 S.9181 S.(row*10+column) S.(row*100+column) Produces a measured and simulated data set with complex data. The term .21 specifies that the data at row 2, column 1 is to be extracted from data set S (this would be the data corresponding to the forward transfer coefficient). The term .21 can be expressed either literally or by an expression in parentheses ( ) up to 9999. (Note that S.21 and S.0201 are equivalent.) For data sets with more than 9 rows or columns, use the 4-digit row-column specification, for example, S.9902 (row 99, column 2). IC-CAP Reference 711 9 Parameter Extraction Language S.21[0] Produces a complex number. M (measured) is assumed by default. The result is the data for row 2, column 1 of S’s first measured data matrix. An expression can be substituted for 0. S.S.21[2] Produces the same result as above, but for simulated rather than measured data. IC-CAP also has some limited string manipulation capabilities. The following are examples of the string type (note the 2 alternatives for including quotation marks in a string): "hello world" "IC-CAP says ’hello world’ " ’IC-CAP says "hello world" ’ The following is an example of a string used in a statement: PRINT "hello world" Assign to x as follows: x = "hello" and x will be of type string. Built-in Functions The functions described in this section are built into the Parameter Extraction Language. They can be entered in all uppercase or all lowercase, as in HP BASIC. Some are duplicated in the IC-CAP Function List, like log. Some functions were built in for efficiency with scalar data (the Function List has functions designed to operate best on data sets). Other built-in functions are for programming convenience, such as size and system$. NO TE 712 A function applied to a data set, unless otherwise noted, generates a new data set in which the specified function has been applied to every point. However, the functions max, min, and size each return single numbers only. IC-CAP Reference 9 Parameter Extraction Language abs Absolute value of a single real number or magnitude of a complex number. array_copy(x,yout) Returns 0 if the ICCAP_ARRAY x is copied successfully to the ICCAP_ARRAY yout. For example: abc="ICCAP_ARRAY[6]" abc[0]="foo" abc[1]=1.235 abc[2]=2.33 abc[3]="foo" abc[4]=3 abc[5]=-10.23919 ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} fgh="ICCAP_ARRAY[1]" fgh[0]="hello" ! fgh = {"hello"} print array_equal_str(abc, fgh) print array_copy(abc, fgh) ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} ! fgh = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_equal_str(abc, fgh) Output: 0 0 1 Example: fgh="ICCAP_ARRAY[2]" fgh[0]="ICCAP_ARRAY[3]" fgh[0][0]="foo" fgh[0][1]=1.235 fgh[0][2]=2.33 fgh[1]="ICCAP_ARRAY[2]" fgh[1][0]=0 fgh[1][1]= "ICCAP_ARRAY[4]" fgh[1][1][0]="fee" fgh[1][1][1]=-10.23919 fgh[1][1][2]=3 fgh[1][1][3]="foo" array_copy(abc, fgh) Result: abc="ICCAP_ARRAY[2]" abc[0]="ICCAP_ARRAY[3]" IC-CAP Reference 713 9 Parameter Extraction Language abc[0][0]="foo" abc[0][1]=1.235 abc[0][2]=2.33 abc[1]="ICCAP_ARRAY[2]" abc[1][0]=0 abc[1][1]= "ICCAP_ARRAY[4]" abc[1][1][0]="fee" abc[1][1][1]=-10.23919 abc[1][1][2]=3 abc[1][1][3]="foo" Example: array_copy(abc[1], fgh) Result: fgh="ICCAP_ARRAY[2]" fgh[0]=0 fgh[1]= "ICCAP_ARRAY[4]" fgh[1][0]="fee" fgh[1][1]=-10.23919 fgh[1][2]=3 fgh[1][3]="foo" Example: array_copy(abc[0], fgh[1][3]) Result: fgh="ICCAP_ARRAY[2]" fgh[0]=0 fgh[1]= "ICCAP_ARRAY[4]" fgh[1][0]="fee" fgh[1][1]=-10.23919 fgh[1][2]=3 fgh[1][3]="ICCAP_ARRAY[3]" abc[1][3][0]="foo" abc[1][3][1]=1.235 abc[1][3][2]=2.33 array_equal_num(x,y[,prec]) Returns 1 if the ICCAP_ARRAY x elements have the same double values as the corresponding elements of ICCAP_ARRAY y. Returns 0 if the ICCAP_ARRAY x and ICCAP_ARRAY y are not equivalent. The 3rd optional argument prec can be used to specify the double precision to compare the input arrays x and y with when determining their equivalency. For example: abc="ICCAP_ARRAY[4]" abc[0]=-4.23321 abc[1]=1.235 abc[2]=21 abc[3]=-10.23919 ! abc = {-4.23321, 1.235, 21, -10.23919} abc2="ICCAP_ARRAY[5]" 714 IC-CAP Reference Parameter Extraction Language 9 abc2[0]=-4.23321 abc2[1]=1.235 abc2[2]=21 abc2[3]=-10.23919 abc2[4]=0.3422 ! abc = {-4.23321, 1.235, 21, -10.23919, 0.3422} abc3="ICCAP_ARRAY[4]" abc3[0]=-4.23321 abc3[1]=1.235 abc3[2]=21 abc3[3]=-10.24 ! abc3 = {-4.23321, 1.235, 21, -10.24} print print print print array_equal_num(abc, array_equal_num(abc, array_equal_num(abc, array_equal_num(abc2, abc2, abc3, abc3, abc3, 3) 2) 5) 3) Output: 0 1 0 0 array_equal_str(x,y) Returns 1 if the ICCAP_ARRAY x elements have the same string values as the corresponding elements of ICCAP_ARRAY y. Returns 0 if the ICCAP_ARRAY x and ICCAP_ARRAY y are not equivalent. For example: abc="ICCAP_ARRAY[4]" abc[0]="foo" abc[1]=1.235 abc[2]="foo2" abc[3]=-10.23919 ! abc = {"foo", 1.235, "foo2", -10.23919} abc2="ICCAP_ARRAY[5]" abc2[0]="foo" abc2[1]=1.235 abc2[2]="foo2" abc2[3]=-10.23919 abc2[4]="foo3" ! abc2 = {"foo", 1.235, "foo2", -10.23919, "foo3"} abc3="ICCAP_ARRAY[4]" abc3[0]="foo" abc3[1]=1.235 abc3[2]="foo2" abc3[3]=-10.23919 ! abc3 = {"foo", 1.235, "foo2", -10.23919} IC-CAP Reference 715 9 Parameter Extraction Language print array_equal_str(abc, abc2) print array_equal_str(abc, abc3) print array_equal_str(abc2, abc3) Output: 0 1 0 array_insert_at(x,y [,pos]) Returns 0 if successful and ICCAP_ARRAY x will be modified to include the data y inserted into the data array at the optional 3rd argument integer index pos. If the 3rd argument pos is not specified, the data y will be appended to the end of the ICCAP_ARRAY data array x. For example: abc="ICCAP_ARRAY[5]" abc[0]=1 abc[1]=2 abc[2]=3 abc[3]=3 abc[4]=12 print ! abc print ! abc print ! abc print ! abc print ! abc array_insert_at(abc,55,6) = {1,2,3,3,12} array_insert_at(abc,43,5) = {1,2,3,3,12,43} array_insert_at(abc,23.33,0) = {23.33,1,2,3,3,12,43} array_insert_at(abc,-55.34) = {23.33,1,2,3,3,12,43, -55.34} array_insert_at(abc,"foo",2) = {23.33,1,"foo",2,3,3,12, 43,-55.34} Output: -1 0 0 0 0 array_remove_all(x,y[,prec]) Returns 0 if the value y is found and removed in the array x. Returns -1 if unsuccessful. The ICCAP_ARRAY x will be updated to no longer contain all elements found in the array with the value y. If value y is a double value, then the optional 3rd argument prec can be used to set what precision the function will use to search for the double value y in the array x. For example: abc="ICCAP_ARRAY[6]" abc[0]="foo" 716 IC-CAP Reference Parameter Extraction Language 9 abc[1]=1.235 abc[2]=2.33 abc[3]="foo" abc[4]=3 abc[5]=-10.23919 ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_all(abc, "unknown" ) ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_all(abc, "5") ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_all(abc, "3") ! abc = {"foo", 1.235, 2.33, "foo", -10.23919} print array_remove_all(abc, 2.33) ! abc = {"foo", 1.235, "foo", -10.23919} print array_remove_all(abc, -10.239, 3) ! abc = {"foo", 1.235, "foo"} print array_remove_all(abc, "foo") ! abc = {1.235} Output: -1 -1 0 0 0 0 array_remove_at(x,pos) Returns 0 if successful and the dataset, complex 1x1 array, or ICCAP_ARRAY x with the data removed from the data array at argument integer index pos. For example: abc="ICCAP_ARRAY[4]" abc[0]=1 abc[1]=2 abc[2]="foo" abc[3]=3 ! abc = {1, 2, foo, 3} print array_remove_at(abc, 2) ! abc = {1, 2, 3} print array_remove_at(abc, 1) ! abc = {1, 3} print array_remove_at(abc, 0) ! abc = {3} print array_remove_at(abc, 0) ! abc = "" ! abc is no longer an ICCAP_ARRAY IC-CAP Reference 717 9 Parameter Extraction Language Output: 0 0 0 0 array_remove_first(x,y[,prec]) Returns the integer position of the first occurrence of value y that is found in the array x and removed, or returns -1 if unsuccessful. The ICCAP_ARRAY x will be updated to no longer contain the first element found in the array to contain the value y on return. If value y is a double value, then the optional 3rd argument prec can be used to set what precision the function will use to search for the double value y in the array x for removal. For example: abc="ICCAP_ARRAY[6]" abc[0]="foo" abc[1]=1.235 abc[2]=2.33 abc[3]="foo" abc[4]=3 abc[5]=-10.23919 ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_first(abc, "unknown" ) ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_first(abc, "5") ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_first(abc, "3") ! abc = {"foo", 1.235, 2.33, "foo", -10.23919} print array_remove_first(abc, 2.33) ! abc = {"foo", 1.235, "foo", -10.23919} print array_remove_first(abc, -10.239, 3) ! abc = {"foo", 1.235, "foo"} print array_remove_first(abc, "foo") ! abc = {1.235, "foo"} Output: -1 -1 4 2 3 0 718 IC-CAP Reference Parameter Extraction Language 9 array_remove_last(x,y[,prec]) Returns the integer position of the last occurrence of value y that is found in the array x and removed, or returns -1 if unsuccessful. The ICCAP_ARRAY x will be updated to no longer contain the last element found in the array to contain the value y on return. If value y is a double value, then the optional 3rd argument prec can be used to set what precision the function will use to search for the double value y in the array x for removal. For example: abc="ICCAP_ARRAY[6]" abc[0]="foo" abc[1]=1.235 abc[2]=2.33 abc[3]="foo" abc[4]=3 abc[5]=-10.23919 ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_last(abc, "unknown" ) ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_last(abc, "5") ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print array_remove_last(abc, "3") ! abc = {"foo", 1.235, 2.33, "foo", -10.23919} print array_remove_last(abc, 2.33) ! abc = {"foo", 1.235, "foo", -10.23919} print array_remove_last(abc, -10.239, 3) ! abc = {"foo", 1.235, "foo"} print array_remove_last(abc, "foo") ! abc = {"foo", 1.235} Output: -1 -1 4 2 3 2 array_reorder (x,idxarr) Given an ICCAP_ARRAY x of values and an ICCAP_ARRAY idxarr of indices, this function reorders the elements of the ICCAP_ARRAY x using the array of indices idxarr. Returns 0 if array was successfully reordered. For example: IC-CAP Reference 719 9 Parameter Extraction Language abc="ICCAP_ARRAY[4]" abc[0]=-4.23321 abc[1]=1.235 abc[2]=21 abc[3]=-10.23919 ! abc = {-4.23321, 1.235, 21, -10.23919} idxabc="ICCAP_ARRAY[4]" idxabc[0]=2 idxabc[1]=3 idxabc[2]=0 idxabc[3]=1 print array_reorder(abc, idxabc) ! abc = {21, -10.23919, -4.23321, 1.235} Output: 0 array_rsort_num (x, prec[, idxArr]) Given an ICCAP_ARRAY x and no 3rd optional argument idxArr, this function will sort the ICCAP_ARRAY x in descending order using the given double precision, specified by the 2nd argument prec. The precision will be used to compare the array elements' double values during the sorting operation. If the 3rd optional argument idxArr is specified, then the ICCAP_ARRAY x will not be sorted but instead the function will return idxArr as an ICCAP_ARRAY with an array of sorted indices. Returns 0 if successful. For example: abc="ICCAP_ARRAY[4]" abc[0]=-4.23321 abc[1]=1.235 abc[2]=21 abc[3]=-10.23919 ! abc = {-4.23321, 1.235, 21, -10.23919} print array_rsort_num(abc, 5) ! abc = {21, 1.2345, -4.23321, -10.23919} abc2="ICCAP_ARRAY[4]" abc2[0]=-4.23321 abc2[1]=1.235 abc2[2]=21 abc2[3]=-10.23919 ! abc2 = {-4.23321, 1.235, 21, -10.23919} idxabc2="" ! idxabc2 = 720 IC-CAP Reference 9 Parameter Extraction Language print array_rsort_num(abc2, 5, idxabc2) ! abc2 = {-4.23321, 1.235, 21, -10.23919} ! idxabc2 = {2, 1, 0, 3} Output: 0 0 array_rsort_str (x[, idxArr]) Given an ICCAP_ARRAY x and no 2nd optional argument idxArr, this function sorts the ICCAP_ARRAY x in descending order comparing the array elements' string values. If the optional 2nd argument idxArr is specified, then the ICCAP_ARRAY x will not be sorted but instead the function returns idxArr as an ICCAP_ARRAY with an array of sorted indices. Returns 0 if successful. For example: abc="ICCAP_ARRAY[4]" abc[0]="foo" abc[1]="fee" abc[2]="foo2" abc[3]="faa" ! abc = {"foo", "fee", "foo2", "faa"} print array_rsort_str(abc) ! abc = {"foo2", "foo", "fee", "faa"} abc2="ICCAP_ARRAY[4]" abc2[0]="foo" abc2[1]="fee" abc2[2]="foo2" abc2[3]="faa" ! abc2 = {"foo", "fee", "foo2", "faa"} idxabc2="" ! idxabc2 = print array_rsort_str(abc2, idxabc2) ! abc2 = {"foo", "fee", "foo2", "faa"} ! idxabc2 = {2, 0, 1, 3} Output: 0 0 IC-CAP Reference 721 9 Parameter Extraction Language array_sort_num (x, prec[, idxArr]) Given an ICCAP_ARRAY x and no 3rd optional argument idxArr, this function sorts the ICCAP_ARRAY x in ascending order using the given double precision, specified by the 2nd argument prec. The precision will be used to compare the array elements' double values during the sorting operation. If the 3rd optional argument idxArr is specified, then the ICCAP_ARRAY x will not be sorted but instead the function returns idxArr as an ICCAP_ARRAY with an array of sorted indices. Returns 0 if successful. For example: abc="ICCAP_ARRAY[4]" abc[0]=-4.23321 abc[1]=1.235 abc[2]=21 abc[3]=-10.23919 ! abc = {-4.23321, 1.235, 21, -10.23919} print array_sort_num(abc, 5) ! abc = {-10.23919, -4.23321, 1.2345, 21} abc2="ICCAP_ARRAY[4]" abc2[0]=-4.23321 abc2[1]=1.235 abc2[2]=21 abc2[3]=-10.23919 ! abc2 = {-4.23321, 1.235, 21, -10.23919} idxabc2="" ! idxabc2 = print array_sort_num(abc2, 5, idxabc2) ! abc2 = {-4.23321, 1.235, 21, -10.23919} ! idxabc2 = {3, 0, 1, 2} Output: 0 0 array_sort_str (x[, idxArr]) Given an ICCAP_ARRAY x and no 2nd optional argument idxArr, this function sorts the ICCAP_ARRAY x in ascending order comparing the array elements' string values. If the optional 2nd argument idxArr is specified, then the ICCAP_ARRAY x will not be sorted but instead the function returns idxArr as an ICCAP_ARRAY with an array of sorted indices. Returns 0 if successful. For example: 722 IC-CAP Reference 9 Parameter Extraction Language abc="ICCAP_ARRAY[4]" abc[0]="foo" abc[1]="fee" abc[2]="foo2" abc[3]="faa" ! abc = {"foo", "fee", "foo2", "faa"} print array_sort_str(abc) ! abc = {"faa", "fee", "foo", "foo2"} abc2="ICCAP_ARRAY[4]" abc2[0]="foo" abc2[1]="fee" abc2[2]="foo2" abc2[3]="faa" ! abc2 = {"foo", "fee", "foo2", "faa"} idxabc2="" ! idxabc2 = print array_sort_str(abc2, idxabc2) ! abc2 = {"foo", "fee", "foo2", "faa"} ! idxabc2 = {3, 1, 0, 2} Output: 0 0 ascii$ Converts ascii-coded characters into literal characters as entered into a text box. chr$(x) Converts the integer x to its equivalent ASCII string character. colsof(x) Returns an integer number of columns in a matrix, complex array of matrix data, or a data set x. For example: complex def[4] complex ghi.55[4] print colsof(def) print colsof(ghi) Output: 1 5 IC-CAP Reference 723 9 Parameter Extraction Language complex_equal(x,y [,prec]) Returns 1 if the complex_array or dataset x elements have the same complex values as the corresponding elements of complex array or dataset y. Returns 0 if x and y are not equivalent. Use the 3rd optional argument prec to specify double precision when comparing the x and y data arrays. For example: complex def[5] def[0]=-3.23 def[1]=1.000 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 complex jkl[5] jkl[0]=-3.23+j*6 jkl[1]=1.000+j*2 jkl[2]=3+j*5 jkl[3]=2.3+j*1 jkl[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 6.000000E+000 2.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 x=complex_copy(def) print complex_equal(def, x) print complex_equal(def, jkl) Output: 1 0 complex_insert_at(x,y [,pos]) Returns a new complex array or dataset with the data y inserted into a copy of the dataset or complex array x. If pos, the optional 3rd argument integer position is specified, the data y will be inserted at the index in the copy of the dataset or complex array specified by the x that is returned. If the 3rd argument pos is not specified, the data y will be appended to the end of the returned copy of the data set or complex array x. Only 1x1 matrix complex array data or datasets are supported. 724 IC-CAP Reference Parameter Extraction Language 9 The complex array or dataset x will not be modified by this function. For example: complex def[2] def[0]=1.000 def[1]=2.3+j*1 !Point Index R:common ! 0 (1,1) 1.000000E+000 ! 1 (1,1) 2.300000E+000 I:common 0.000000E+000 1.000000E+000 x=complex_insert_at(def, 3+j*5, 1) !Point Index R:common ! 0 (1,1) 1.000000E+000 ! 1 (1,1) 3.000000E+000 ! 2 (1,1) 2.300000E+000 I:common 0.000000E+000 5.000000E+000 1.000000E+000 y=complex_insert_at(x, 443.55) !Point Index R:common ! 0 (1,1) 1.000000E+000 ! 1 (1,1) 3.000000E+000 ! 2 (1,1) 2.300000E+000 ! 3 (1,1) 4.435500E+002 I:common 0.000000E+000 5.000000E+000 1.000000E+000 0.000000E+000 z=complex_insert_at(y, "-3.23", 0) !Point Index R:common ! 0 (1,1) -3.230000E+000 ! 1 (1,1) 1.000000E+000 ! 2 (1,1) 3.000000E+000 ! 3 (1,1) 2.300000E+000 ! 4 (1,1) 4.435500E+002 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 0.000000E+000 complex_remove_all(x,y[,prec]) Returns a copy of the dataset or complex array x with all occurrences of real value y removed, or returns just a copy of the dataset or complex array x if value y was not found. If value y is a double value, then the optional 3rd argument prec can be used to set what precision the function will use to search for the double value y in the magnitude real data of the complex array or dataset x. For example: complex def[5] def[0]=-3.23 def[1]=1.000 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 IC-CAP Reference Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 725 9 Parameter Extraction Language x=complex_remove_all(def, 3+j*5) !Point ! 0 ! 1 ! 2 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 2.300000E+000 I:common 0.000000E+000 0.000000E+000 1.000000E+000 y=complex_remove_all(x, -3.23, 3) !Point Index ! 0 (1,1) ! 1 (1,1) R:common 1.000000E+000 2.300000E+000 I:common 0.000000E+000 1.000000E+000 z=complex_remove_all(y, "2.3") !Point Index ! 0 (1,1) R:common 1.000000E+000 I:common 0.000000E+000 complex_remove_at(x,pos) Returns a copy of the dataset or complex array x with the data removed at position x in the dataset or complex array. Only 1x1 matrix complex array data or datasets are supported. The complex array or dataset x will not be modified by this function. For example: complex def[4] def[0]=-3.23 def[1]=1.000 def[2]=3+j*5 def[3]=2.3+j*1 !Point ! 0 ! 1 ! 2 ! 3 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 x=complex_remove_at(def, 0) !Point ! 0 ! 1 ! 2 Index (1,1) (1,1) (1,1) R:common 1.000000E+000 3.000000E+000 2.300000E+000 I:common 0.000000E+000 5.000000E+000 1.000000E+000 y=complex_remove_at(x, 2) !Point Index ! 0 (1,1) ! 1 (1,1) R:common 1.000000E+000 3.000000E+000 I:common 0.000000E+000 5.000000E+000 z=complex_remove_at(y, 0) !Point Index ! 1 (1,1) 726 R:common 3.000000E+000 I:common 5.000000E+000 IC-CAP Reference Parameter Extraction Language 9 complex_remove_first(x,y[,prec]) Returns a copy of the dataset or complex array x with the first occurrence of real value y removed, or returns just a copy of the dataset or complex array x if value y was not found. If value y is a double value, then the optional 3rd argument prec can be used to set what precision the function will use to search for the double value y in the magnitude real data of the complex array or dataset x. For example: complex def[5] def[0]=-3.23 def[1]=1.000 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 x=complex_remove_first(def, 3+j*5) !Point ! 0 ! 1 ! 2 ! 3 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 1.000000E+000 5.000000E+000 y=complex_remove_first(x, -3.23, 3) !Point ! 0 ! 1 ! 2 Index (1,1) (1,1) (1,1) R:common 1.000000E+000 2.300000E+000 3.000000E+000 I:common 0.000000E+000 1.000000E+000 5.000000E+000 z=complex_remove_first(y, "2.3") !Point Index ! 0 (1,1) ! 1 (1,1) R:common 1.000000E+000 3.000000E+000 I:common 0.000000E+000 5.000000E+000 a=complex_remove_first(z, 3) !Point Index ! 0 (1,1) R:common 1.000000E+000 I:common 0.000000E+000 complex_remove_last(x,y[,prec]) Returns a copy of the dataset or complex array x with the last occurrence of real value y removed, or returns just a copy of the dataset or complex array x if value y was not found. If value y is a double value, then the optional 3rd argument prec can be used IC-CAP Reference 727 9 Parameter Extraction Language to set what precision the function will use to search for the double value y in the magnitude real data of the complex array or dataset x. For example: complex def[5] def[0]=-3.23 def[1]=1.000 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 x=complex_remove_last(def, 3+j*5) !Point ! 0 ! 1 ! 2 ! 3 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 y=complex_remove_last(x, -3.23, 3) !Point ! 0 ! 1 ! 2 Index (1,1) (1,1) (1,1) R:common 1.000000E+000 3.000000E+000 2.300000E+000 I:common 0.000000E+000 5.000000E+000 1.000000E+000 z=complex_remove_last(y, "2.3") !Point Index ! 0 (1,1) ! 1 (1,1) R:common 1.000000E+000 3.000000E+000 I:common 0.000000E+000 5.000000E+000 a=complex_remove_last(z, 3) !Point Index ! 0 (1,1) R:common 1.000000E+000 I:common 0.000000E+000 complex_reorder (x,idxarr) Given a complex array or dataset x and an ICCAP_ARRAY idxarr of indices, this function creates a copy of the dataset or complex array x and reorder the elements of the copied data array using the array of indices idxarr, and then returns that reordered copy of the data array x. For example: complex def[5] def[0]=-3.23 def[1]=1.000 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 728 IC-CAP Reference Parameter Extraction Language !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 9 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 idxdef="ICCAP_ARRAY[5]" idxdef[0]=4 idxdef[1]=3 idxdef[2]=0 idxdef[3]=2 idxdef[4]=1 x=complex_reorder(def, idxdef) !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) -3.230000E+000 (1,1) 3.000000E+000 (1,1) 1.000000E+000 I:common 5.000000E+000 1.000000E+000 0.000000E+000 5.000000E+000 0.000000E+000 complex_rsort (x,prec[,idxArr]) Given a complex array or dataset x, this function creates a copy of the dataset or complex array x, then sorts the elements in descending order, and then returns the sorted copy. The 2nd argument prec is used to specify the double precision to use when comparing elements during the sorting of the data array elements. The 3rd optional argument idxArr if specified, will be returned as an ICCAP_ARRAY of sorted integer indices. For example: complex def[5] def[0]=1.000 def[1]=-3.23 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) 1.000000E+000 (1,1) -3.230000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 x=complex_rsort(def,4) !Point ! 0 ! 1 ! 2 ! 3 ! 4 IC-CAP Reference Index R:common (1,1) 3.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 1.000000E+000 (1,1) -3.230000E+000 I:common 5.000000E+000 5.000000E+000 1.000000E+000 0.000000E+000 0.000000E+000 729 9 Parameter Extraction Language idxdef="" y=complex_rsort(def, 4, idxdef) !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) 3.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 1.000000E+000 (1,1) -3.230000E+000 I:common 5.000000E+000 5.000000E+000 1.000000E+000 0.000000E+000 0.000000E+000 ! idxdef = {2,4,3,0,1} complex_sort (x,prec[,idxArr]) Given a complex array or dataset x, this function creates a copy of the dataset or complex array x, and sort the elements in ascending order, and then returns that sorted copy of the complex array or dataset x. The 2nd argument prec is used to specify the double precision to use when comparing elements during the sorting of the data array elements. The 3rd optional argument idxArr, if specified, will be returned as an ICCAP_ARRAY of sorted integer indices. For example: complex def[5] def[0]=1.000 def[1]=-3.23 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) 1.000000E+000 (1,1) -3.230000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 x=complex_sort(def,4) !Point ! 0 ! 1 ! 2 ! 3 ! 4 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 1.000000E+000 5.000000E+000 5.000000E+000 idxdef="" y=complex_sort(def, 4, idxdef) !Point ! 0 ! 1 ! 2 ! 3 ! 4 730 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 1.000000E+000 5.000000E+000 5.000000E+000 IC-CAP Reference 9 Parameter Extraction Language ! idxdef = {1, 0, 3, 2, 4} dataset Enables you to access the dataset referred to by a string. A second argument may be specified which is a variable to receive any error string normally going to a red error box. exp e is raised to the power specified by the argument. fix_path$ Guarantees a path appropriate for the current architecture. fix_path$(<path>) Returns a string based on the passed in <path>, which is either a filename or a directory. The returned string will be the same filename or directory converted to the local architecture. On UNIX, this converts Windows directory separators '\' to UNIX directory separators '/'. On the PC, it does the opposite and also takes care of any cygwin path dependencies. Since IC-CAP uses the cygwin shell to execute the PEL system() and system$() commands, certain calls have cygwin dependencies. For example, print system$(“echo $HOME”) may return something like /cygdrive/d/users/icuser, which does not have the Windows feel. Therefore, you may want to rewrite the PEL as follows: print fix_path$(system$(“echo $HOME”)) which returns d:\users\icuser using the above example. imag Extracts the imaginary part of a data set, matrix, or complex number. IC-CAP Reference 731 9 Parameter Extraction Language imaginary Extracts the imaginary part of a data set, matrix, or complex number. index_of(x,y,pos[,prec]) Returns the integer index of the first element found starting at position pos that has the same value as y in the ICCAP_ARRAY, dataset, or complex array x. If no elements are found in the data array x, then -1 is returned. The 2nd argument y can be a string or a double value. If value y is a double value, then the optional 4th argument prec can be used to set what precision the function will use to search for the element with the same double value y in the ICCAP_ARRAY, dataset, or complex array x. For example: abc="ICCAP_ARRAY[6]" abc[0]="foo" abc[1]=1.235 abc[2]=2.33 abc[3]="foo" abc[4]=3 abc[5]=-10.23919 ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print print print print print print print "ICCAP_ARRAY output:" index_of(abc, "unknown", 0) index_of(abc, 3, 0) index_of(abc, 3, 5) index_of(abc, -10.24, 0, 3) index_of(abc, "foo", 0) index_of(abc, "foo", 1) complex def[5] def[0]=-3.23 def[1]=1.000 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 print print print print print 732 Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 "Complex array output:" index_of(def, "2.3", 4) index_of(def, "2.3", 0) index_of(def, 3, 0, 4) index_of(def, 3, 3, 4) IC-CAP Reference Parameter Extraction Language 9 Output: ICCAP_ARRAY output: -1 4 -1 5 0 3 Complex array output: -1 3 2 4 last_index_of(x,y[,prec]) Returns the integer index of the last element that has the same value as y in the ICCAP_ARRAY, dataset, or complex array x. If no elements are found in the data array x, then -1 is returned. The 2nd argument y can be a string or a double value. If value y is a double value, then the optional 3rd argument prec can be used to set what precision the function will use to search for the element with the same double value y in the ICCAP_ARRAY, dataset, or complex array x. For example: abc="ICCAP_ARRAY[6]" abc[0]="foo" abc[1]=1.235 abc[2]=2.33 abc[3]="foo" abc[4]=3 abc[5]=-10.23919 ! abc = {"foo", 1.235, 2.33, "foo", 3, -10.23919} print print print print print "ICCAP_ARRAY output:" last_index_of(abc, "unknown") last_index_of(abc, 3) last_index_of(abc, -10.24, 3) last_index_of(abc, "foo") complex def[5] def[0]=-3.23 def[1]=1.000 def[2]=3+j*5 def[3]=2.3+j*1 def[4]=3+j*5 !Point ! 0 ! 1 ! 2 ! 3 ! 4 IC-CAP Reference Index R:common (1,1) -3.230000E+000 (1,1) 1.000000E+000 (1,1) 3.000000E+000 (1,1) 2.300000E+000 (1,1) 3.000000E+000 I:common 0.000000E+000 0.000000E+000 5.000000E+000 1.000000E+000 5.000000E+000 733 9 Parameter Extraction Language print print print print print "Complex array output:" last_index_of(def, 35.355, 4) last_index_of(def, "2.3") last_index_of(def, 3.0, 4) last_index_of(def, "3.00") Output: ICCAP_ARRAY output: -1 4 5 3 Complex array output: -1 3 4 4 log Computes log base e. log10 or lgt Computes log base 10. lookup_instr_table_val or lookup_instr_table_val_eval Enables you to access the value of a field in an instrument options table. The first argument is the path to the table. The second argument is the field in the table (see “Set Table Field Value” on page 970 for syntax to specify the field name). An optional third argument may be specified which is a variable to receive any error string normally going to a red error box. lookup_instr_table_val returns NUMPTS if NUMPTS is a variable in # of Points. lookup_instr_table_val_eval returns 100 (presuming NUMPTS evaluates to 100). lookup_obj_attribute Enables you to access the state or attributes of a plot. The first argument is the object and the second argument is the keyword. The syntax is: X=lookup_obj_attribute("<Object>","Keyword") 734 IC-CAP Reference 9 Parameter Extraction Language For a Multiplot, specify the plot number in brackets after the object: X=lookup_obj_attribute("<Object>[N]", "Keyword") For example: X=lookup_obj_attribute("/my_model/ my_dut/my_setup/my_multiplot/ Multiplot[1],"UserSelectedRegion") This example returns the coordinates of the white box that the user drew on the second plot (index=1) of the Multiplot my_multiplot. The following table lists supported keywords. IC-CAP Reference Object Keyword Return Value model POWindowOpen Int flag 0/1 plot POEnable Int flag 0/1 plot ErrorEnable Int flag 0/1 plot IsErrorRelative Int 1 is error is relative, 0 if error is absolute plot ErrorRegion Data set array of 5 points X1,x2,y1,y2, color Color always returns 3 (green) plot UserRegion/<Name> Data set array of 5 points X1,x2,y1,y2, color plot PORegionNumber Number of Plot Optimizer regions plot PORegion[N] Dataset array of 4 points X1,x2,y1,y2 plot UserSelectedRegion (white box) Dataset array of 6 points Returns the coordinate of the white box: X1,x1,y1,y2,z1,z2 Where z1,z2 are the coordinates with respect to the Y2 axis 735 9 Parameter Extraction Language Object Keyword Return Value plot UserSelectedPoint Dataset array of 3 points • selected point in the dataset • selected trace (0-8 with 8 being the Y2 trace) • selected type: 0 (transform) 1(measured) 2 (simulated) plot GraphicMouseState Returns 2 if a white box is selected plot XAxisDisplayType -1 (Unknown) 0 (Linear), 1(Log) or 2 (dB) plot YAxisDisplayType -1 (Unknown) 0 (Linear), 1(Log) or 2 (dB) plot Y2AxisDisplayType -1 (Unknown) 0 (Linear), 1(Log) or 2 (dB) Multiplot only SelectedPlot Returns selected plot lookup_par Enables you to access the value of a parameter referenced by a string. A second argument may be specified which is a variable to receive any error string normally going to a red error box. lookup_table_val or lookup_table_val_eval Enables you to access the value of a field in an input, output, plot, parameter, or optimizer table. The first argument is the path to the table. The second argument is the field in the table (see “Set Table Field Value” on page 970 for syntax to specify the field name). An optional third argument may be specified which is a variable to receive any error string normally going to a red error box. lookup_table_val returns NUMPTS if NUMPTS is a variable in # of Points. lookup_table_val_eval returns 100 (presuming NUMPTS evaluates to 100). 736 IC-CAP Reference 9 Parameter Extraction Language lookup_var Enables you to access the value of a variable referenced by a string. A second argument may be specified which is a variable to receive any error string normally going to a red error box. lwc$(x) Returns the lower case version of the string x. For example: print lwc$("Hello") Output: hello mag or magnitude Computes the magnitude for a complex number, or for each complex number in a matrix, data set, or data set of matrices. max Takes any number of arguments, as in HP BASIC. The argument list can be a mixture of scalars and data sets, and the function returns the maximum value found in any of them. This always returns a single real number, and only the real parts are considered. If matrices are received, only the 1,1 points are considered. mdata(expr) Returns the measured part of the argument expr. min Behaves like max, but returns the minimum value. ph or phase Computes the phase angle in radians for a complex number, or for each complex number in a matrix, data set, or data set of matrices. IC-CAP Reference 737 9 Parameter Extraction Language real Extracts the real part of a data set, matrix, or complex number. rowsof(x) Returns an integer number of rows in a matrix, complex array of matrix data, or a data set x. For example: complex def[4] complex ghi.55[4] print rowsof(def) print rowsof(ghi) Output: 1 5 sdata(expr) Returns the simulated part of the argument expr. size Returns the number of points in a data set, which is an integer. sizeof(x) Returns an integer number of elements in a variable ICCAP_ARRAY, or a complex array of data, or a data set. Returns 0 if x doesn't represent a data array or if the data array is empty or both. For example: abc="ICCAP_ARRAY[5]" abc[0]=1 abc[1]=2 abc[2]=3 abc[3]=3 abc[4]=12 complex def[4] def[0]=1.000 def[1]=1+j*1 def[2]=5 def[3]=6 complex ghi.55[3] x=1.354529 print sizeof(abc) 738 IC-CAP Reference Parameter Extraction Language 9 print sizeof(def) print sizeof(ghi) print sizeof(x) Output: 5 4 3 0 sqrt Square root function. Complex and negative quantities produce correct complex or imaginary results. strlen(x) Returns the number of characters in the string x. For example: print strlen("Hello") Output: 5 strpos(x,y) Returns the index of the first occurrence of substring str2 found in string str1. An optional third argument may be specified which is an integer starting position that should be greater than or equal to 1. The starting position can be used to specify the starting index within the string str1 to start searching for substring str2. For example: print print print print print print strpos("Hello","ell") strpos("Hello","He") strpos("Hello","dog") strpos("Hello","l",1) strpos("Hello","l",4) strpos("Hello","l",5) Output: 2 1 0 3 4 0 IC-CAP Reference 739 9 Parameter Extraction Language strrpos(str1,str2 [,endpos]) Returns the index of the last occurrence of substring str2 found in string str1. An optional third argument may be specified which is an integer end position that should be greater than or equal to 1. The end position can be used to specify the last index within the string str1 to search for the last occurrence of substring str2, using the search range of index 1 to endpos. For example: print print print print print print strrpos("Hello","ell") strrpos("Hello","He") strrpos("Hello","dog") strrpos("Hello","l",1) strrpos("Hello","l",4) strrpos("Hello","l",5) Output: 2 1 0 0 4 4 substr$(x,start,stop) Extracts the substring from the start index to the stop index from the string x. The value “1” refers to the first character in the string. If stop is omitted, substr$ returns the string from start to the end of the string. For example: x="Hello" print substr$(x,4) print substr$(x,2,4) Output: lo ell sys_path$ Guarantees a path appropriate for passing to the system$() or system() command. 740 IC-CAP Reference 9 Parameter Extraction Language sys_path$(<path>) Returns a string based on the passed in <path>, which is either a filename or a directory. The returned string will be the same filename or directory converted to the proper format for the system$() or system() function. Since IC-CAP uses the cygwin shell to process the PEL system$ and system calls, PC style paths may not work properly when passed as arguments to system functions. For example, if the user’s response to LINPUT “Enter a filename”,path print system$(“ls -al “ & path) is: foobar — the code functions properly. /tmp/foobar — the code functions properly because IC-CAP insures /tmp and /var/tmp exist in the system call environment. d:foobar — the code does not function properly. However, the following rewrite LINPUT “Enter a filename”,path print system$(“ls -al “ & sys_path$(path)) insures that the system$() call actually sees /cygdrive/d/foobar even when the user types d:foobar. system Accepts a string argument, which is a shell command to invoke. You can employ all valid shell I/O redirection and other shell syntax within the string argument. It returns an integer, which is the exit status of the shell. If the shell command generates output, it is printed in the terminal window from which the IC-CAP program was started; refer to system$. On the PC, if a syntax error appears, turn on screen debug for additional information. IC-CAP Reference 741 9 Parameter Extraction Language system Accepts a string argument, which is a shell command to invoke. You can employ all valid shell I/O redirection and other shell syntax within the string argument. It returns an integer, which is the exit status of the shell. If the shell command generates output, it is printed in the terminal window from which the IC-CAP program was started; refer to system$. On the PC, if a syntax error appears, turn on screen debug for additional information. system$ Similar to system; it captures the command’s output, instead of letting it go to the terminal window. Instead of returning an integer, it returns the output that the shell command generated. For example: my_date$ = system$("date") ! get date com$="echo "&my_date$&"|cut -c 5-7" month$ = system$(com$) ! substring 5-7 On the PC, if a syntax error appears, turn on screen debug for additional information. trim$(x,chars) Where x is a string and chars is a string containing characters to be trimmed from x. This function trims the unwanted characters from the beginning and end of the string. The parameter for chars is optional. If chars is omitted, the default is to remove spaces from the beginning and end of the string. For example: x=" stuff here " print trim$(x) y="////stuff here__//__//" print trim$(y) print trim$(y,"/_") Output: stuff here ////stuff here__//__// stiff here 742 IC-CAP Reference 9 Parameter Extraction Language upc$(x) Returns the string x with all upper case characters. For example: print upc$("Hello") Output: HELLO val Generates a number, given a string representation of a simple (not expression) integer, floating point, or complex number. For example: linput "give a number",x$ x = val(x$) val$ Generates a string, given a numeric expression. In conjunction with the & operator (string concatenation), it can be useful for formatting. The optional second argument can either be an integer or a string. • If no optional argument is given, the conversion uses the %g printf conversion (see printf() man page for details). The number is converted with WORKING_PRECISION digits of precision. If WORKING_PRECISION is not set, 6 digits are used. • If the second argument is an integer, then the integer is interpreted as the number of digits of precision to use in a %g printf() conversion (see printf() man page for details). • If the second argument is %nnICFMT where nn are optional integers, then the number is converted to a string according to IC-CAP default conversion routine, which uses unit multipliers (e.g., 1.23e-12 is converted to 1.23p). The optional nn specifies the number of digits of precision. If nn is less than 4, it is clamped to 4. If nn is omitted, then WORKING_PRECISION digits are used, if WORKING_PRECISION is not defined, 4 digits will be used. IC-CAP Reference 743 9 Parameter Extraction Language • If the second argument is any other string, it should contain exactly one of %e, %E, %g, %G, or %f. See the printf() man page for optional modifiers to these formats that specify the number of digits and spacing. Examples: x=1.23456789e-12 print val$(x,"%ICFMT") ! 1.235p (Assuming WORKING_PRECISION not set) print val$(x,"%1ICFMT")! 1.235p (clamped to 4) print val$(x,"%8ICFMT") ! 1.2345679p (8 digits total) print val$(x,"abc %ICFMT") ! abc ICFMT (‘abc ’ on Linux) (uses printf syntax) print val$(x,"%e") ! 1.234568e-012 (printf format ignores WORKING_PRECISION) print val$(x,"%.3e") ! 1.235e-012 (specify 3 digits after decimal) print val$(x,"The number is %+12.4g.") !The number is +1.235e-012. (12 positions for entire number and +) print val$(x) ! 1.23457E-012 (6 digits of precision by default) print val$(x,7) ! 1.234568E-012 NO TE Real and complex scalars and data sets are accepted by all functions with the following exceptions: system, system$, and val expect to receive string data, and val$ expects a scalar number. Built-In Constants Several constants are recognized. Like statement names and built-in function names, these are reserved words (for example, you should not attempt to name a variable pi). The recognized constants are: PI or pi 2PI or 2pi J or j (square root of -1) 744 IC-CAP Reference 9 Parameter Extraction Language Expressions As explained in the Data Types section, each type of data can be considered a simple expression. The primitive data types can make up more complex expressions by applying functions (such as log, or operators such as + ). In this section, expr denotes an expression; string_expr denotes a string expression. (expr) expr + expr expr - expr expr * expr Parentheses force precedence and group expressions. expr / expr expr//expr IC-CAP objects, including data sets, can be named using a slash (/). These same data sets can be used as arguments in a divide operation. To ensure the slash is understood as the divide operator, surround it with white space, or enter a double slash (//). If the slash is followed by a digit, divide is also understood, because a data set name in IC-CAP cannot start with a digit. The expression (ic)/(ib) is an example of another technique. expr ^ expr expr ** expr These operators express exponentiation, and are equivalents. string_expr & string_expr As in HP BASIC, this operator performs string concatenation. log(expr) IC-CAP Reference Performs a natural log function. For more information, refer to “Built-in Functions” on page 712 and “Calls to the Function Library” on page 749. 745 9 Parameter Extraction Language To complete a computation, most operations make reasonable attempts to promote certain operands. For example, ib + 2e-6 promotes the scalar number 2e-6 to be a data set that, in turn, can be added to the data set ib. For most arithmetic operations performed on a data set, the function or operator is applied point-by-point, producing a data set. The behavior of individual functions in this regard is clarified in their individual descriptions in “Built-in Functions” on page 712. There are some limitations in the usage of the 5 basic arithmetic operators in working with data sets. For example: • If ic is a data set, re-write 3//ic as 3*ic^ -1. • The expression ic^ib is not supported when both operands are data sets. • None of the binary operators * / + - ^ support an operation between a matrix and a data set. The arithmetic in Programs is generally a complex floating point. Therefore, it is possible to see unexpected residue from integer or real arithmetic. For example: print (0+j)^2 may produce -1+j*1.22461E-16 rather than -1+j*0 This is due to finite precision in the library function that handles exponentiation of complex quantities. Because complex arithmetic is used, success can occur where a function would be expected to fail in real arithmetic. For example acsh(.5) yields 0+j*1.05 The complex arithmetic provides a wider domain of valid inputs, but in cases where a real input should produce a real output, the complex arithmetic is indistinguishable from real arithmetic. 746 IC-CAP Reference 9 Parameter Extraction Language CAU TI O N Using the binary operators + and - (which have a higher precedence when used with the j notation) will produce unexpected results. -1+j2 == -1-j*2 (-1)+j2 == -1+j*2 Boolean Expressions The expressions in this section can be used in the branching constructs (IF, IF...ENDIF, and WHILE...ENDWHILE), or can be used to generate the quantities 0 and 1. The abbreviation bool_expr denotes a boolean expression. NO TE There is a distinction between the = operator (used for assignment) and the == operator. BASIC uses = for both assignment and comparison. In some circumstances, == may not behave as expected. For example, if you repeatedly increment the quantity 0.3 by the amount 0.025, the results may be slightly less (in the 15th decimal place) than the expected sequence of values: 0.325, 0.350, ... , 0.4. Under these circumstances, == may yield FALSE unexpectedly. This is an inherent problem of expressing decimal numbers in binary floating point format. expr == expr This operator tests for equality and can be used with string, integer, double, complex, and matrix types. expr <> expr This operator tests for inequality and can be used with string, integer, double, complex, and matrix types. expr > expr <= expr IC-CAP Reference expr >= expr expr < expr expr 747 9 Parameter Extraction Language These operators designate the standard comparison operation found in BASIC languages and can be used with integers, doubles, and complex quantities. With complex quantities, imaginary parts are discarded. (You can apply the mag function to each quantity to compare magnitudes of complex quantities.) bool_expr AND bool_expr bool_expr OR bool_expr NOT boolean_expr Any non-zero integer, double, or complex number is considered TRUE. For example: IF 2 THEN PRINT ’hi’ ! this always prints A string with length >0 is TRUE. For example: IF "Hello world" THEN PRINT "HI TO YOU TOO" prints the second expression in the string HI TO YOU TOO Operators Precedence The following is a list of operators in decreasing order of precedence. Operators listed on the same line have equal precedence. () [] ^ ** + − Function calls, and array indexing, respectively Exponentiation & == <> < <= > >= The ampersand (&) is for string concatenation Comparison operators NOT AND OR = 748 Assignment IC-CAP Reference Parameter Extraction Language 9 For example, it is TRUE that: -2^4 == -16 because the precedence of ^ exceeds that of − . Calls to the Function Library Any function in IC-CAP’s Function Browser can be called, such as sin, cos, and RMSerror. This greatly expands the availability of functions in expressions, Programs, and Macros. Some examples are: x = sin(pi/4) ! x takes on the value .707... x = linfit(ic,vc,0) ! x becomes a temporary data set with 2 points print x[0] , x[1] ! slope and intercept are printed To review the arguments used in a function, refer to Chapter 8, “IC-CAP Functions,” or create a stand-alone transform that uses the desired function and look at the resulting transform editor. For details on this procedure, refer to the section “Defining Transforms” in the User’s Guide. To call the library function in a Program, Macro, or table element, supply arguments in the same order shown in the editor. The functions may expect some data set arguments, some real number arguments, and some strings or Model or DUT parameter names. Expressions can be used for the data set arguments and real number arguments. For the parameter names, use actual parameter names, IC-CAP system variable names, or quoted strings, string variables, or string expressions. If a function requires a string as a flag or switch of some sort, quote it. Otherwise the system thinks you are referring to an identifier such as a Model parameter, a system variable, or a temporary variable in a Program or Macro. The following example might clarify this point: ! ! x x S Y x IC-CAP Reference TwoPort requires strings as second and third arguments string argument dictates what type conversion to do = TwoPort(S_out,"S","Y") ! this is OK = TwoPort(S_out,S,Y) ! this is not, although... = "S" ! initialize local variables S and Y = "Y" = TwoPort(S_out,S,Y) ! now this is OK 749 9 Parameter Extraction Language This point is mentioned because the quotation marks are not necessary if you use TwoPort as the function in a simple stand-alone Transform. The only other function that is like TwoPort in this regard is USERC_system, which requires a string to use as an operating system command. Spell calls to functions contained in IC-CAP’s Function List must be spelled exactly as in the Function List. The result from a call to a function in the library is usually a data set. For example: x = linfit(vc:log(ic.m),0) ! get slope and intercept for log(ic.m) print x[0] ! print the slope of log(ic.m) On the other hand, there are 2 cases in which the result of a library function is a single number or matrix, and not a data set. This makes library function calls more convenient, or usable within expressions in table elements. For example: x = sin(pi/4) x = mean(ic.s) ! x is now .70711 ... ! x is the average current value in ic.s In the first example, sin is a function that can sometimes return a data set, if a data set is provided. In this example though, the input is a scalar number. Therefore, the system initializes x with a scalar number. A number of other functions behave like sin in this respect. They can be identified in the IC-CAP Functions List, because the Output of these functions is said to be a single number or an array, dependent on the Input Arguments. In the second example, mean receives a data set as input. However, by definition it always produces a scalar, so x is initialized as a single number, and not a data set. A call to the variance, correlation, or RMSerror functions also produces a single number, and not a data set. Some library functions, particularly extractions, yield null data sets; they do not appear to generate data, but they set parameters to new values. 750 IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 10 File Structure and Format File Structure 752 This chapter describes the format of the IC-CAP .mdl file and associated files that can be written to and read from the system. When read into the system, these files restore IC-CAP to a previously saved state. Knowledge of the design of these files allows advanced users to perform many creative modifications to an IC-CAP configuration. Agilent Technologies 751 10 File Structure and Format File Structure All files used by IC-CAP are stored in an ASCII format that can be accessed by standard HP-UX tools and editors. IC-CAP Model files have a user-defined name; the extension is assigned by the system. The following table lists the file types and extensions. Table 73 IC-CAP File Types and Extensions File Type Extension File Type Extension Dataset .ds Data management .mdm Hardware .hdw Setup .set Model .mdl Input .inp Circuit .cir Output .out Model Parameters .mps Transform .xfm Macro .mac Plot .plt DUT .dut Instrument Options .iot DUT Parameters .dps Variables Table .vat Test Circuit .tci Input .inp Statistical data .sdf The .mdl file is a combination of the file types listed below it. If all Models currently loaded are saved together, they are put in a single .mdl file. The complete Model file contains a circuit description, a model parameter set, Macros, and DUT descriptions. The DUT description in turn contains a DUT parameter set, a Test Circuit, and Setups. The Setups contain Inputs, Outputs, Transforms, and Plots. The hardware description is global to IC-CAP and is not a part of a Model file. It can be saved in a .hdw file. It is also found in the .icconfig file in the user’s home directory. In 752 IC-CAP Reference File Structure and Format 10 addition to the hardware description, this file contains values of system variables, and status information for windows that are directly available from the Main Menu. The individual major sections of the complete Model file begin with the word LINK followed by the type (for example, Model or DUT) and a name. The supporting information under this defines the appropriate configuration for IC-CAP. The hierarchy of related items in each file is defined by sets of braces { }. A major section title is followed by an open brace { and continues until the complementary closing brace }. Within a section there are several key words that indicate the function of the associated information. When a single key word is on a line, the associated information is on the lines below. For some key words, their associated information is in fields to the right only, while for others, associated information is in fields to the right and lines below. These key words are summarized in the following table. When editing an IC-CAP Model file, key words and braces must be in the correct locations for the file to be correctly read into IC-CAP. Editing the file with a text editor can be quite productive in some areas. When developing large Program Transforms or Macros, you may find it more convenient to create these with an editor outside of IC-CAP and read them in. When doing this, begin each line of text in your Program Transform or Macro with the pound sign (#). Table 74 IC-CAP Reference Key words in the IC-CAP File Structures Key Word Definition LINK major IC-CAP building block applic application window that can be opened by IC-CAP subapp title within an application TABLE collection of user-modifiable elements 753 10 File Structure and Format Table 74 Key words in the IC-CAP File Structures (continued) Key Word Definition element user-programmable field (input box) HYPTABLE table that is dynamically configured by IC-CAP BLKEDIT block editor text follows (note: leading space in text) CNTABLE connection table—not currently used in IC-CAP PSTABLE parameter set table param model parameter name and value data configuration data follows belonging to the LINK item dataset collection of numerical data datasize dimensional information for a dataset type MEASured, SIMUlated, or COMMON data points to follow point individual data value—index, row, column, real value, imaginary value list this item is dependent on the owning LINK item member the owning LINK item is dependent on this item Example File The following truncated Model file illustrates the structure described. Comments enclosed in angle brackets < > describe the file contents; they are not part of the actual IC-CAP file. Variable Tables or lines that start with applic or subapp are optional. It is not necessary for these lines to be present for a file to be successfully read by IC-CAP. 754 IC-CAP Reference File Structure and Format 10 { PSTABLE "Parameter Table" { } } } Link DAT "idvd" <DAT is internal name for Setup> { LINK MODEL "diode" <first line of an IC-CAP .mdl file> { applic "Edit" 1 83 194 <main model window is open & at pixels 83,194> subapp "dset_tile" 1 < DUT-Se tup tile is open> TABLE "Variable Table" <Variable Table for Model "diode"> { element 0 "Name" "SIMULATOR" element 0 "Value" "spice2" element 1 "Name" "" element 1 "Value" "" } LINK CIRC "Circuit" <circuit description starts here> { applic "Edit" 0 12 328 subapp "Circuit" 1 data { circuitdeck { D1 1 = A 2 = C DIODE <all lines in circuit have a leading space> .MODEL DIODE D + IS = 1E-14 + N = 1.0 } } } <circuit description ends here> Link PS "Parameter Set" { applic "Edit" 0 7 137 subapp "Parameter Table" 1 data { PSTABLE "Parameter Table" { param IS 10.01f param N 999.7m } } } Link DUT "dc" { applic "Edit" 0 -1 -1 <DUT editor is closed, has not been opened yet> applic "Edit Variables" 0 -1 -1 subapp "setup_list" 1 Link TCIRC "Test Circuit" { subapp "Test Circuit" 0 data { IC-CAP Reference 755 10 File Structure and Format circuitdeck { } <end test circuit deck> } <end data section> } <end Test Circuit> Link DPS "Device Parameter Set" { subapp "Parameter Table" 1 data applic "Edit" 0 382 136 <Setup "idvd" is closed> applic "Instrument Options" 0 -1 -1 <instrument options table not opened yet> applic "Edit Variables" 0 -1 -1 <variables editor not opened yet> subapp "SWEEP" 1 subapp "OUT" 1 subapp "XFORM" 1 subapp "PLOT" 1 subapp "Instrument Table List" 1 subapp "Variable Table" 1 Link SWEEP "va" <Input sweep specification starts here> { applic "Display Data" 0 -1 -1 subapp "Edit Sweep Info" 1 subapp "Display Data" 1 data { HYPTABLE "Edit Sweep Info" <start of dynamic table definition> { element "Mode" "V" element "Sweep Type" "LIN" } HYPTABLE "Edit Sweep Mode Def" { element "+ Node" "A" element "- Node" "GROUND" element "Unit" "SMU1" element "Compliance" " 100.0m" } HYPTABLE "Edit Sweep Def" { element "Sweep Order" "1" element "Start" " 300.0m" element "Stop" " 1.000 " element "# of Points" "29" element "Step Size" " 25.00m" } } <end of dynamic table definition> list XFORM "extract" <Transform "extract" is dependent on this Input> list PLOT "i_vs_v" <Plot has similar dependency> } <Input specification "va" ends here> <repeat of similar Input not shown> Link OUT "ia" <Output specification starts here> { < file contents here similar to Input case & not shown> dataset <start of measured and simulated data> { datasize BOTH 29 1 1 <key: type #-of-points #-of-rows #-of-columns> type MEAS <measured data> <key: index row column real imaginary> point 0 1 1 1.09023e-09 0 <data point 0 has single value real number> point 1 1 1 2.86573e-09 0 <note: s-parameters would have 4 values per point> point 2 1 1 7.53339e-09 0 <corresponding to s11 s12 s21 and s22 756 IC-CAP Reference File Structure and Format 10 point 3 1 1 1.98044e-08 0 <would be complex (real & imag) values> point 4 1 1 5.20644e-08 0 <other data points not shown> type SIMU <simulated data> point 0 1 1 1.09513e-09 0 point 1 1 1 2.87943e-09 0 <other data points not shown - same number as MEAS> } } list XFORM "optim_is_n" <Transform "optim_is_n" is dependent upon this Output> list PLOT "i_vs_v" <Plot has similar dependency> } Link XFORM "extract" <extraction Transform starts here> { data { HYPTABLE "Link Transform" { element "Function" "Program" } BLKEDIT "Program Body" <prog body starts here - note leading space> { ! Program Transform to extract IS, N, RS ! from forward diode I-V characteristics ! ! Note: print statements go to the ! window used to start IC-CAP print "Example Program Transform to extract DC Diode Parameters" index = 0 ! array index ! ! pick 2 low current points for IS & N ! to be extracted from v1 = va[index] ! 1st voltage step WHILE v1 < 0.4 ! get first data index = index + 1 ! point pair v1 = va[index] END WHILE i1 = ia[index] < more program exists but is not shown> print "... end of program Transform extraction ..." } dataset { datasize COMMON 29 1 1 <key: type #-of-points #-of-rows #-of-columns> type COMMON <COMMON specification means that the same data is > point 0 1 1 0 0 <used to represent measured & simulated data. > point 1 1 1 0 0 <However, the data space is not used by this > point 2 1 1 0 0 <transform, which calculates parameter values only> <more points not shown> } } member SWEEP "va" <this Transform is dependent on Input "va"> member OUT "ia" <this Transform is dependent on Output "ia"> } IC-CAP Reference 757 10 File Structure and Format Link PLOT "i_vs_v" <Plot definition starts here> { applic "Display Plot" 0 5 435 <Plot window is closed, but located at pixels 5,435> applic "Display Data" 0 -1 -1 <data window has never been opened> subapp "Edit plot Info" 0 subapp "Display Data" 1 data { plotsize 11960 8970 <Plot size is 11960x8970 (in 1/100 mm)> HYPTABLE "Edit plot Info" { element "Report Type" "XY GRAPH" } HYPTABLE "Edit Plot Def" { element "X Data" "va" element "Y Data 0" "ia" element "Y Data 1" "" element "Y Data 2" "" element "Y Data 3" "" element "Y Data 4" "" element "Header" "" element "Footer" "" element "X Axis Type" "LINEAR" element "Y Axis Type" "LINEAR" element "Y2 Axis Type" "LINEAR" element "Y2 Data" "" } } member INPUT "va" member OUT "ia" } data <data section for Setup - instrument options table information> { TABLE "HP4141.7.23" <HP4141 DC parameter measurement instrument> { element 0 "Use User Sweep" "No" element 0 "Hold Time[0-650s]" " 0.000 " element 0 "Delay Time[0-6.5s]" " 0.000 " element 0 "Integ Time" "S" } TABLE "HP4275.7.10" { element 0 "Hold Time[0-650]" " 0.000 " element 0 "Delay Time[0-650]" " 0.000 " element 0 "High Res" "No" element 0 "Meas Freq (KHz)" "10" } } } } } <end of complete Model file> 758 IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 11 Variables Several variable names are reserved by IC-CAP and cannot be used for user-defined variables. You can assign values to reserved variables and define your own variables at several different levels: • Globally • Model • DUT • Setup These levels can be viewed as a hierarchy where variables at lower levels inherit their values from variables at some level above them. You define global variables through the IC-CAP/Main window. These variables apply to all Models, DUTs, and Setups unless you explicitly set the variables differently at the Model, DUT, or Setup level. You define Model, DUT, and Setup variables through the Model window: • Model variables apply to all DUTs and Setups of that Model unless you explicitly set the variables differently for individual DUTs and/or Setups. • DUT variables apply to all Setups of that DUT unless you explicitly set the variables differently for individual Setups. • Setup variables apply only to that Setup. Agilent Technologies 759 11 Variables CAU TI O N Table 75 The maximum string length for a variable table is 15 K characters. Exceeding this limit may cause a core file to be generated when saving or reading a file. Plot Characteristics Variable Description ANNOTATE_AUTO Sets a flag to enable or disable automatic annotation update upon data changes. Default is No. ANNOTATE_CSET Sets a Starbase character set to be used for annotation texts. Default value is determined by /usr/lib/starbase/defaults. ANNOTATE_FILE Sets a file name from which a plot reads in an annotation text. Default is no file to read. ANNOTATE_MACRO Sets a macro name that is executed by a Plot for generating an annotation text. Default is no macro to execute. ANNOTATE_PLOTS Obsolete in IC-CAP 2006. Now to enable or disable annotation on a plot, use the Plot Options dialog box. See “Setting Plot Options” in the User’s Guide. CDF_ERROR_FIT Can be set to TRUE or FALSE. TRUE will draw the Gaussian curve fitted to the Cumulative plot. Default is TRUE. CHECK_PLOT_MATCH Lets IC-CAP check if a given XY pair belongs to the same Setup. If No, potentially mismatched XY pair can be shown in a tabular format with Display Data. Default is Yes. DASH_DOT Sets the number of data points at which a simulated line changes from a dashed to a dotted line. Used in Plot. Default value is 32. DYNAMIC_MULTIPLOT_MODE Sets the location where the manual scaling setting is saved for a Multiplot. If set to FALSE, the manual scaling setting for each subplot in a Multiplot is saved with the Multiplot, allowing different scaling to be saved for the same plot if opened as a single plot or on one or more Multiplot. If set to TRUE, the manual scaling setting for each subplot in a Mulitplot is saved with the subplot. In this mode, no matter where the plot is opened (as a single plot or on one or more Multiplots), it will use the same scaling information. However, if the same subplot appears on multiple Multiplots, or in multiple positions of the same Multiplot, then the settings for only the last subplot closed is saved. Default is FALSE. 760 IC-CAP Reference 11 Variables Table 75 Plot Characteristics (continued) Variable Description FIX_PLOT_SIZE If Yes, Plot windows open using the size specified by GWINDX and GWINDY. If No, they open using the last displayed size. Default is No. GWIND_WHITE Obsolete in IC-CAP 2006. Now to set the background color of plots, use the Plot Options dialog box. See “Setting Plot Options” in the User’s Guide. GWINDX Sets the initial Plot window horizontal size in 1/100mm. Used in Plot. Default value is 12500. GWINDY Sets the initial Plot window vertical size in 1/100mm. Used in Plot. Default value is 9000. HISTOGRAM_NUM_BINS Number of bins in the histogram plot. Default is 10. HISTOGRAM_NORMALIZATION Can be set to either TRUE or FALSE. Setting it to TRUE will normalize the histogram. Default is TRUE. HISTOGRAM_GAUSSIAN_FIT Can be set to either TRUE or FALSE. Setting it to TRUE will draw the Gaussian curve fitted to the histogram. Default is TRUE. IGNORE_PLOT_LOC If Yes, Plot windows open using the X windows system configuration. If No, they open using the last displayed location. Default is No. MINLOG Can be set to a real value. Defines the value to be used in a LOG plot, if data point value is zero or negative. Default is 10e-18. OFFSCREEN_PLOT_LINE_WIDTH Same as PLOT_LINE_WIDTH, except has no effect when the plot is drawn to the screen. It does have effect when plotting to a file or sending to a printer. OFFSCREEN_PLOT_TRACE_LINE_WIDTH Same as PLOT_TRACE_LINE_WIDTH, except has no effect when the plot is drawn to the screen. It does have effect when plotting to a file or sending to a printer. PLOT_LINE_WIDTH Sets the line thickness used when drawing a plot grid and annotation. Note: use PLOT_TRACE_LINE_WIDTH to set trace widths on a plot. Default is 1. PLOT_TRACE_LINE Sets whether trace line is drawn or not. If defined as Yes, the trace lines are drawn. If defined as No, the trace lines will not be drawn, and instead markers will be drawn. Default is Yes. PLOT_TRACE_LINE_WIDTH Sets the line thickness used when drawing the traces of a plot. Note: use PLOT_TRACE_LINE to set line thickness for grid and annotation. Default is 1. RETAIN_PLOT When Yes and Auto Scale is off, plot is not erased when updated to allow overlay of curves if the X server has backing store capability. Default is No. IC-CAP Reference 761 11 Variables Table 75 Plot Characteristics (continued) Variable Description RI_GRAPH_SYMMETRY When defined as Yes, the plot title is displayed. If defined as No, the plot title is not displayed. Default is Yes. SCATTER_CONTOURS Can be set to either TRUE or FALSE. Setting it to TRUE will draw the contours. Default is TRUE. SCATTER_NUM_SEGMENTS The number of segments with which to draw the contours. Default is 1500. SHOW_GRID When No, plot eliminates XY grids and leaves tics. Default is Yes. SHOW_PLOT_TITLE Obsolete in IC-CAP 2006. Now to show or hide the plot title, use the Plot Options dialog box. See “Setting Plot Options” in the User’s Guide. USE_PLOT_LOOKUP Lets IC-CAP perform auto-lookup of X data from each Y data. Another way to disable auto-lookup is to use an arbitrary expression for an X data. Default is Yes. Table 76 Plot Optimizer Variable Description AUTOSET_COEFF Sets the coefficient value used to calculate the Plot Optimizer's Min and Max parameter values. Min and Max parameter values are calculated as follows: if (value > 0) Min = value/coeff Max = value × coeff if (value < 0) Min = value × coeff Max = value/coeff if (value ==0) Min = -coeff Max = +coeff Default is 5. OPT_PARTABLE_SHOW_MODEL_ONLY If set to Yes, displays the model parameters in the parameter list shown in the parameter table tab of Plot Optimizer and normal Optimizer transforms. If set to No, displays all the model and DUT parameters found in the enable plots paths. Default is Yes for the Plot Optimizer and No for the Extract/Optimize folder. 762 IC-CAP Reference 11 Variables Table 76 Plot Optimizer (continued) Variable Description OPT_PARTABLE_SHOW_PARS If set to Yes, displays all parameters, except model parameters, in the parameter list in the Plot Optimizer and Extract/Optimize folder. If set to No, hides the parameters. Default is Yes. OPT_PARTABLE_SHOW_VARS If set to Yes, displays all variables in the parameter list in the Plot Optimizer and Extract/Optimize folder. If set to No, hides the variables. Default is Yes. PLOTOPT_USE_YAXES_TYPE Sets whether the Plot Optimizer algorithm can use the LOG10() and DB() functions to insert the trace equations into the Plot Optimizer. If defined as Yes (Default), the Plot Optimizer algorithm uses the LOG10() function when the Y Axis Type is LOG10 and the DB() function when the Y Axis Type is DB. If defined as No, the Plot Optimizer algorithm does not use the LOG10() and DB() functions regardless of the Axis Type. Default is Yes. PLOTOPT_AUTOCONFIG_WARNING Sets whether autoconfigure issues a warning to the Status window when one or more traces could not be autoconfigured. If defined as Yes (Default), a warning is issued when one or more traces could not be autoconfigured. If defined as No, no warning is issued when autoconfigure fails. Default is Yes. Table 77 Calibration Variable Description CAL_OPEN_C Obsoleted and replaced by CAL_OPEN_C0. CAL_OPEN_C0 CAL_OPEN_C1 CAL_OPEN_C2 Sets the open capacitance of an Open standard in farads that is used with Software Calibration. The combined value Copen applies to both port 1 and 2. A second-order polynomial represents its frequency dependence. Default value is 0. Copen = C0 + C1 * F + C2 * F^2 CAL_Z0 Obsoleted and replaced by TWOPORT_Z0. IC-CAP Reference 763 11 Variables Table 78 UI Options Variable Description DUT_TREE_COLS Controls the width of the tree list in the DUTs-Setups folder. The variable controls the folder in the scope of the variable table where it is defined. The variable’s value sets the list’s width in number of columns. MACRO_LIST_COLS Controls the width of the Select Macro list in the Macros folder. The variable controls the folder in the scope of the variable table where it is defined. The variable’s value sets the list’s width in number of columns. MAXIMUM_LIST_LENGTH The maximum number of value fields allowed for an input where LIST is the Sweep Type and a variable is used to specify ‘# of Values.’ If a constant is used to specify ‘# of Values,’ MAXIMUM_LIST_LENGTH is ignored. Default is 15. MEAS_SIM_LIST_COLS Controls the width of the Input/Output Finder list in the Measure/Simulate folder. The variable, SHOW_INPUT_OUTPUT_FINDER, must be enabled to control the list width. The variable controls the folder in the scope of the variable table where it is defined. The variable’s value sets the list’s width in number of columns. PARAMETER_PRECISION Specifies the number of digits used when displaying parameter values in the Parameters table and when sending the values to a simulator. Default is 4. PLOT_LIST_COLS Controls the width of the Plot Finder list in the Plots folder. The variable controls the folder in the scope of the variable table where it is defined. The variable’s value sets the list’s width in number of columns. RETAIN_DATA When Yes, data from a Setup is retained if a sweep limit changes but the number of points remains the same. Default is No, which causes the data to be zeroed. RETAIN_SIMU A simulator run in piped mode is normally stopped if a new simulator is selected. If Yes, the old simulator is kept running, which will speed up simulations if there is frequent switching between simulators. Default is No. SHOW_INPUT_OUTPUT_FINDER When Yes, enables the Input/Output Finder list in the Measure/Simulate folder. If you enable this variable or change its value after viewing the folder, you must close, then re-open the model for the change to take effect. Default is No. 764 IC-CAP Reference 11 Variables Table 78 UI Options (continued) Variable Description WORKING_PRECISION Controls the precision of numeric values when converted to text. This precision setting affects only those parts of a model for which the variable is defined. Although all math in IC-CAP is performed using double precision, precision may be lost when a number is converted to text. This conversion occurs in the following situations: any time the function val$() is called; the PRINT statement is used; a numeric value is assigned to a variable in the IC-CAP Variable Table. Because all variables in the IC-CAP Variable Table are text by definition, assigning a numeric value to such a variable will implicitly call val$(). Range of values: 6 through 29. Default is 6. Note: While settings above 17 are allowed, they seldom show any affect. XFORM_LIST_COLS Controls the width of the Select Transform list in the Extract/Optimize folder. The variable controls the folder in the scope of the variable table where it is defined. The variable’s value sets the list’s width in number of columns GUI_PAGE_SUPRESS_SUMMARY Normally, IC-CAP displays a short summary of each GUI Item on the GUI Items pages. To suppress this summary and display only the item name (for a cleaner look to the page), set this variable to anything but 0, F, FALSE, N, NO, or blank. Table 79 PEL Variable Description ICCAP_MAXIMUM_CALL_CHAIN Sets the maximum number of transforms/macros (written in PEL) that can be called (via iccap_func()) without returning. This limit may be set to protect automations under development from infinitely recurring by accident. Without this limit, such infinite recursions will cause IC-CAP to consume all the memory available in your system and then crash. The default value is 0 which means to permit any number of calls. IC-CAP Reference 765 11 Variables Table 80 Measurement Options Variable Description 8510_MAXFREQ The 8510 driver checks that the maximum frequency of the instrument is not exceeded. Use this variable to override the built-in value and specify the desired maximum frequency to be checked. BYPASS_CV_CAL When set to NO (Default), CV measurements using an HP/Agilent 42XX CV or LCR Meter will request user to calibrate the instrument. After a successful calibration, this step is bypassed on all subsequent measurements. If set to YES, the calibration step is always bypassed. CAUTION: Setting variable to YES assumes the instrument has already been calibrated. Use YES for measurement automation. CV_FREQ Sets the frequency in Hz at which CV simulation is performed. Default value is 1MEG (Hz). HPIB_READ_STRING Gets the results of a Read String operation in the GPIB Analyzer. IGNORE_8510_RF_UNLOCK When defined as Yes IC-CAP ignores a temporary and benign RF UNLOCK error from the 8510. INST_START_ADDR Specifies the start address for instrument searching during Rebuild (active list). This value should be an integer between 0 and 31, inclusively. When there is a printer, plotter, or prober on the same GPIB with measurement instruments, set INST_START_ADDR greater than any one of those non-instruments to avoid the identification process. Default is 0. INST_END_ADDR Specifies the ending address for instrument searching during Rebuild (active list). This value should be greater than the INST_START_ADDR value and less than 31. LCR_RST_MEM LCR_RST_MEM_<unit> Sets the reset instrument state for the 4284, 4285, and E4980A instruments. To specify a particular unit, set LCR_RST_MEM_<unit> (e.g., LCR_RST_MEM_CM). IC-CAP drivers reset instruments to known states prior to configuring them for the current measurement. The 4284, 4284, and E4980 send the *RST command, which resets the instruments to a known factory state. However, this default state (1V, 1KHz signal) may cause damage to certain devices between the time the $RST is requested and the time the requested signal level is set. If LCR_RST_MEM or LCR_RST_MEM_<unit> is set, the 4284, 4285, and E4980A instruments will use the value of the variable to set the instrument state. For example, if set to 1, the driver will recall instrument state 1 instead of *RST. For additional information, see the example model file in misc/prepare_CV_Meter.mdl. MAX_SETUP_POINTS Specifies the maximum number of points to be permitted within a setup. Default value is 50000. 766 IC-CAP Reference 11 Variables Table 80 Measurement Options (continued) Variable Description MDS_MEASURE_FAST Flag reserved for use by the HPRoot model extraction in the High-Frequency IC-CAP software. Default is No. MEASURE_FAST When Yes, IC-CAP will attempt to minimize instrument re-initialization during repeated measurements on the same Setup. Refer to Speeding Up Repetitive Measurements in the Measurement chapter. Default is No. NO_ZEROING When Yes, IC-CAP will avoid a preliminary step of zeroing DC and other signal sources at the beginning of measurements. Refer to MEASURE_FAST. Default is No. PARALLEL_INPUT_UNITS_OK Overrides a warning when multiple units share a single input node. Default value is No, to issue a warning. PRE_5_8510_FIRMWARE For HP 8510B Network Analyzers with firmware revisions prior to HP8510B.05.00: Dec 5, 1988 only. Declaring this variable prevents certain commands (DETENORB--set detector to normal bandwidth, and EXTTOFF--external triggr off) from being sent to the NWA. These commands are not supported in the above-referenced firmware and sending such commands causes a measurement failure. Declare this variable to prevent the failure. No value assignment required. 8510_MAXFREQ Table 81 The 8510 driver checks that the maximum frequency of the instrument is not exceeded. Use this variable to override the built-in value and specify desired maximum frequency to be checked. HP85124 Measurement Options Variable Description These variables are used to modify the source tuning process. Source tuning is specified with an entry in the options table. Source tuning process varies the supply voltage to compensate for I*R drop in getting to the device under test. p1_step_size IC-CAP Reference Type = REAL, Default = 0.0 This variable sets a fixed step size for newton iterations when tuning the source voltage for port 1. Default is an auto step size, determined from dvm noise floor. 767 11 Variables Table 81 HP85124 Measurement Options Variable Description p2_step_size Type = REAL, Default = 0.0 This variable sets a fixed step size for newton iterations when tuning the source voltage for port 2. Default is an auto step size, determined from dvm noise floor. p1_step_scale Type = REAL, Default = 1.0 This variable sets a scale factor to modify the auto step size in newton iterations when tuning the source voltage for port 1. The auto step size is multiplied by this value. p2_step_scale Type = REAL, Default = 1.0 This variable sets a scale factor to modify the auto step size in newton iterations when tuning the source voltage for port 2. The auto step size is multiplied by this value. p1_tune_error Type = REAL, Default = 0.0 This variable sets a fixed error goal for tuning the source voltage for port 1 instead of the default auto ranged error which is determined from the dvm noise floor. p2_tune_error Type = REAL, Default = 0.0 This variable sets a fixed error goal for tuning the source voltage for port 2 instead of the default auto ranged error which is determined from the dvm noise floor. p1_error_scale Type = REAL, Default = 1.0 This variable sets a scale factor to modify the auto ranged error goal for tuning the source voltage for port 1 The auto ranged error goal is multiplied by this value. p2_error_scale Type = REAL, Default = 1.0 This variable sets a scale factor to modify the auto ranged error goal for tuning the source voltage for port 2 The auto ranged error goal is multiplied by this value. max_newton_iters Type = INT, Default = 6 This variable sets the maximum number of newton iterations to complete before quitting the source tuning process. pulse_rise_time Type = REAL, Default = 0.2E-6 This variable specifies the average rise time for the pulse. This is used in determining if the measurement delay results in a measurement in the pulse. If the measurement for source tuning is not in the pulse then the resulting voltage will be very high. pulse_fall_time Type = REAL, Default = 0.2E-6 This variable specifies the average fall time for the pulse. This is used in determining if the measurement delay results in a measurement in the pulse. If the measurement for source tuning is not in the pulse then the resulting voltage will be very high. These variables can be used to initiate printing of data to the status window. This data is useful in troubleshooting measurement problems and data accuracy questions. 768 IC-CAP Reference 11 Variables Table 81 HP85124 Measurement Options Variable Description show_tuning Type = INT, Default = 0, Values 0 or 1 When set to 1 measured values, tuning error, and next value to be tries are displayed for the source tuning process. These values are printed the status window. show_samples Type = INT, Default = 0, Values 0 or 1 When set to 1 all the dvm or adc measurements are displayed in the status window. show_stats Type = INT, Default = 0, Values 0 or 1 When set to 1 statistical information about the measured data is displayed. Data includes mean , min, and max. Data is displayed in the status window. show_current_range Type = INT, Default = 0, Values 0 or 1 When set to 1 the present current range is displayed to the status window when the measurement begins and any time the range changes. show_voltage_range Type = INT, Default = 0, Values 0 or 1 When set to 1 the present voltage range is displayed to the status window when the measurement begins and any time the range changes. These variables are used to over-ride the offsets defined in the hp85124.cal file. p1_meas_offset Type = REAL, Default = value in hp85124.cal This variable will over-ride the input_measurement_offset variable in the hp85124.cal file. This variable adjusts the delay for the port 1 voltage measurement. p2_meas_offset Type = REAL, Default = value in hp85124.cal This variable will over-ride the output_measurement_offset variable in the hp85124.cal file. This variable adjusts the delay for the port 2 voltage measurement. p1_meas_i_offset Type = REAL, Default = value in hp85124.cal This variable will over-ride the input_current_measurement_offset variable in the hp85124.cal file. This variable adjusts the delay for the port 1 current measurement. This offset is relative the voltage measurement. p2_meas_i_offset Type = REAL, Default = value in hp85124.cal This variable will over-ride the output_current_measurement_offset variable in the hp85124.cal file. This variable adjusts the delay for the port 2 current measurement. This offset is relative the voltage measurement. These variables are used to over-ride the instrument types specified in the hp85124.cfg file. p1_v_type IC-CAP Reference Type = STRING, Default = value in hp85124.cfg This variable over-rides the value of dmm_vin in the hp85124.cfg file. This will also over-ride the automatic change for risetime mode. The default is to use the hp3458 dvm for slow mode and the internal adc (K49 only) for fast mode. 769 11 Variables Table 81 HP85124 Measurement Options Variable Description p1_i_type Type = STRING, Default = value in hp85124.cfg This variable over-rides the value of dmm_iin in the hp85124.cfg file. This will also over-ride the automatic change for risetime mode. The default is to use the hp3458 dvm for slow mode and the internal adc (K49 only) for fast mode. p2_v_type Type = STRING, Default = value in hp85124.cfg This variable over-rides the value of dmm_vout in the hp85124.cfg file. This will also over-ride the automatic change for risetime mode. The default is to use the hp3458 dvm for slow mode and the internal adc (K49 only) for fast mode. p2_i_type Type = STRING, Default = value in hp85124.cfg This variable over-rides the value of dmm_iout in the hp85124.cfg file. This will also over-ride the automatic change for risetime mode. The default is to use the hp3458 dvm for slow mode and the internal adc (K49 only) for fast mode. These variables are used to make changes in the default settings used for the hp3458 dmms dvm_terminals Type = CHAR, Default = R, Values = R or F This variable will change which set of terminals the dmm will read. The choice is R for rear and F for front. dvm_trigger_mode Type = CHAR, Default = E, Values = E or I This variable will change the trigger mode of the dmm. E for external and I for internal. dvm_aperture Type = REAL, Default = 1E-6 This variable changes the value of the aperture for DCV mode of the dmms. dvm_track_hold Type = INT, Default = 1, Values 0 or 1 This variable sets either track and hold mode (DSDC) or integrated mode (DCV). dvm_auto_zero Type = STRING, Default = ONCE, Values = OFF, ON, or ONCE This variable sets the auto zero mode on the dmms. allow_internal Type = INT , Default = 0, Values = 1/0 This variable allows the dmm to take more samplings within the same pulse during time domain pulse profile measurements if the time interval is less than 20us. 770 IC-CAP Reference 11 Variables Table 82 General Extraction Options Variable Description EXTR_DUT Used internally in extractions. When a circuit or test circuit has been defined, set this variable to the name of the DUT whose parameters are either extracted or used by the IC-CAP device extraction functions. EXTR_MODEL Used internally in extractions. When a circuit has been defined, set this variable to the name of the model whose parameters are either extracted or used by the IC-CAP device extraction functions. POLARITY Specifies the device polarity of the device to be extracted. Allowed values for bipolar devices are NPN or PNP. Default is NPN for bipolar devices. Allowed values for MOS devices are NMOS or PMOS. Default is NMOS for MOS devices. WORKING_PRECISION Controls the precision of numeric values when converted to text. This precision setting affects only those parts of a model for which the variable is defined. (Converting to text is done when: the function val$() is called; the PRINT statement is used; a numeric value is assigned to a variable in the IC-CAP Variable Table.) Range of values: 6 and higher. Default is 6. Note: While settings above 17 are allowed, a double precision number cannot be expressed to this precision. Table 83 General Simulation Options Variable Description DEFAULT_SIMU Sets the default simulator name. Used in Utilities. MAX_DC_SWEEPS Specifies the maximum number of DC sweeps for a simulation. Default is simulator-dependent. MAX_SETUP_POINTS Specifies the maximum number of points to be permitted within a setup. Default value is 50000. OPEN_RES Specifies the resistance value that is automatically connected to all floating nodes in the circuit. This is available for all simulators with links to IC-CAP. When this variable is not specified, a zero amp current source is connected to the node. PARAMETER_PRECISION Specifies the number of digits used when displaying parameter values in the Parameters table and when sending the values to a simulator. Default is 4. IC-CAP Reference 771 11 Variables Table 83 General Simulation Options (continued) Variable Description SIMULATOR Specifies the simulator name to be used in all simulations performed under the level in which this variable is defined. The name must be a valid simulator; otherwise, the currently selected simulator is used. Default is the currently selected simulator. SIM_USE_UPPER_CASE_PARAMS By default parameters are entered into the Parameters table with the same capitalization as entered in the circuit page. (The hpeesofsim simulator is an exception.) If set to 'F', 'N', 'FALSE','No' or '0' the default behavior will result. Any other setting will force the parameters in the Parameters table to be represented in upper case according to the following rules: • If the parameter was declared with $dpar, $mpar, or $xpar, capitalization is not affected. • If the parameter contains a period, only the part of the parameter after the last period is upper case. • If the parameter does not contain a period, the entire parameter is upper case. If USE_OLD_CASE_PARM_RULE is set to anything other than 'F', 'N', 'FALSE','No' or '0' (case insensitive), this setting follows different rules. See USE_OLD_CASE_PARM_RULE. This setting affects all simulators but may be overridden by HPEESOFSIM_USE_LOWER_CASE_PARAMS and HPEESOFSIM_USE_MIXED_CASE_PARAMS for the hpeesofsim simulator. SIM_USE_LOWER_CASE_PARAMS By default parameters are entered into the Parameters table with the same capitalization as entered in the circuit page. (The hpeesofsim simulator is an exception.) If set to 'F', 'N', 'FALSE','No' or '0' the default behavior will result. Any other setting will force the parameters in the Parameters table to be represented in lower case according to the following rules: • If the parameter was declared with $dpar, $mpar, or $xpar, capitalization is not affected. • If the parameter contains a period, only the part of the parameter after the last period is lower case. • If the parameter does not contain a period, the entire parameter is lower case. If USE_OLD_CASE_PARM_RULE is set to anything other than 'F', 'N', 'FALSE','No' or '0' (case insensitive), this setting follows different rules. See USE_OLD_CASE_PARM_RULE. This setting affects all simulators but may be overridden by HPEESOFSIM_USE_LOWER_CASE_PARAMS and HPEESOFSIM_USE_MIXED_CASE_PARAMS for the hpeesofsim simulator. 772 IC-CAP Reference Variables Table 83 11 General Simulation Options (continued) Variable Description TEMP Temperature at which simulations are performed. When performing an optimization to extract model parameters, TEMP and TNOM should be set to the same value so that simulations during optimization are performed at TNOM. Default value is simulator-dependent. TNOM Temperature at which the model parameters are extracted. TNOM must be defined in order to guarantee consistency between simulation and extraction. Default value is 27 when performing an extraction, and is simulator dependent when performing a simulation. TWOPORT_C Sets a DC decouple capacitance value when a 2-port circuit is generated from a circuit for 2-port simulation. Default is 100 farad. TWOPORT_L Sets an AC decouple inductance value when a 2-port circuit is generated from a circuit for 2-port simulation. Default is 100 henry. TWOPORT_Z0 Sets a characteristic impedance value for 2-port circuit that is used in AC extractions, TwoPort function, and Software calibration. Default is 50 ohm. USE_OLD_CASE_PARM_RULE If set to anything other than 'F', 'N', 'FALSE','No' or '0' (case insensitive), this setting changes the rules for SIM_USE_UPPER_CASE_PARAMS, SIM_USE_LOWER_CASE_PARAMS, HPEESOFSIM_USE_LOWER_CASE_PARAMS, and HPEESOFSIM_USE_MIXED_CASE_PARAMS to the following: • If the parameter was declared with $dpar, $mpar, or $xpar, the case is changed for the entire parameter name according to the case variable. • If the parameter contains a period, only the part of the parameter after the last period is changed according to the case variable. • If the parameter does not contain a period and the parameter is named for an instance, the case is unchanged. • If the parameter does not contain a period and the parameter is named for a parameter on a model, the case is changed according to the case variable. For example, rtest 1 2 50 Parameter rtest is named for the instance in SPICE, so case is not changed according to the case variable. model x NPN alpha=4 Parameter alpha is named for a model parameter, so case is changed according to the case variable. IC-CAP Reference 773 11 Variables NO TE Table 84 When using the ADS simulator (hpeesofsim), there is no way to set the temperature just for Noise analysis. Therefore, the analysis will be done at the circuit temperature. hpeesofsim Options Variable Description BANDWIDTH Bandwidth for noise analysis. Default = 1 Hz. HPEESOFSIM_HB_OPTIONS A string that contains the analysis options used in an ADS Harmonic Balance simulation. No default. HPEESOFSIM_OPTIONS A string which contains the analysis options used in an hpeesofsim simulation. No default. HPEESOFSIM_TRAN_OPTIONS A string that contains the analysis options used in an ADS Transient simulation. No default. HPEESOFSIM_USE_LOWER_CASE_PARAMS This setting affects only the hpeesofsim simulator. By default parameters are converted to all uppercase. If set to 'F', 'N', 'FALSE','No' or '0' the default behavior will result. Any other setting will force the parameters in the Parameters table to be represented in lower case according to the following rules: • If the parameter was declared with $dpar, $mpar, or $xpar, capitalization is not affected. • If the parameter contains a period, only the part of the parameter after the last period is lower case. • If the parameter does not contain a period, the entire parameter is lower case. If USE_OLD_CASE_PARM_RULE is set to anything other than 'F', 'N', 'FALSE','No' or '0' (case insensitive), this setting follows different rules. See USE_OLD_CASE_PARM_RULE. 774 IC-CAP Reference Variables Table 84 11 hpeesofsim Options Variable Description HPEESOFSIM_USE_MIXED_CASE_PARAMS This setting affects only the hpeesofsim simulator. By default parameters are converted to all uppercase. If set to ’F’, ’N’, ’FALSE’,’No’ or ’0’ the default behavior will result. Any other setting will force the parameters in the Parameters table to be represented with the same case as they appear in the Circuit page according to the following rules: • If the parameter was declared with $dpar, $mpar, or $xpar, capitalization is not affected. • If the parameter contains a period, only the part of the parameter after the last period is the same case as they appear in the Circuit page. • If the parameter does not contain a period, the entire parameter is the same case as they appear in the Circuit page. If USE_OLD_CASE_PARM_RULE is set to anything other than 'F', 'N', 'FALSE','No' or '0' (case insensitive), this setting follows different rules. See USE_OLD_CASE_PARM_RULE. INCLUDEPORTNOISE Includes the port noise in noise voltage and currents. Default = Yes. NOISETEMP Circuit temperature (Kelvin) for noise analysis. Default = 290. MAX_PARALLEL_SIMULATOR Specifies the maximum number of simultaneous hpeesofsim simulators that can be run. Default value is 3. Table 85 MNS Options Variable Description BANDWIDTH Bandwidth for noise analysis. Default = 1 Hz. INCLUDEPORTNOISE Includes the port noise in noise voltage and currents. Default = Yes. MNS_OPTIONS String that contains the analysis options used in an MNS simulation. No default. MNS_HB_OPTIONS A string that contains the analysis options used in an MNS Harmonic Balance simulation. No default. MNS_TRAN_OPTIONS A string that contains the analysis options used in an MNS Transient simulation. No default. NOISETEMP Circuit temperature (Kelvin) for noise analysis. Default = 290. IC-CAP Reference 775 11 Variables Table 86 Mextram Extraction Options Variable Description MXT_AUTO_RANGE Type = INT , Default = 0, Values = 1/0 This variable selects auto range capabilities for MEXTRAM parameter extraction. It is usually defined at model or setup level MXT_AUTO_SMOOTH Type = INT , Default = 0, Values = 1/0 This variable select smoothing on the measured data before applying the auto range algorithms during MEXTRAM parameter extraction. It is usually not required unless the data is rather noisy. It is usually defined at model or setup level. Table 87 ELDO Options Variable Description ELDO_VERSION Specifies the version of ELDO being used in the simulation. This information is necessary because the syntax used to call ELDO depends on the version number. If this variable is not specified, IC-CAP will use the version specified in the environment variable eldover, if it exists. Default is v4.2.1. Table 88 Saber Options Variable Description SABER_ALTER A command string that appears in the Saber command file to modify simulation-related variables in Saber. Multiple commands are separated by semi-colon. SABER_DC_OPTIONS String that contains the DC operating point options used in a SABER simulation. Multiple options are separated by commas. SABER_OPTIONS String that contains the analysis options used in a SABER simulation. Multiple options are separated by commas. USE_ALTER Specifies whether or not the alter command should be used in a SABER simulation. Default is Yes. SABER_VERSION Specifies the version of SABER being used in the simulation. This information is needed if you are using a version earlier than 4.3 (syntax for DC log sweeps is different) or 5.0 (output files have different names). Default is 5.0. USE_DCIP_COM Specifies whether or not the dcip and dcep commands should be used in a SABER simulation to speed up LIST and LOG sweeps. Valid entries are Yes and No. Default is Yes. 776 IC-CAP Reference 11 Variables Table 88 Saber Options Variable Description USE_SABER_COM Specifies whether or not the 'saber' command to load a new netlist without restarting the simulator should be used in a SABER simulation. Valid entries are Yes and No. Default is No. Table 89 HSPICE Options Variable Description HSPICE_NODE_STRLEN When netlisting the sources and analysis statements for HSPICE simulations, node names are truncated to 3 characters by default. You can control the number of characters for node names by setting HSPICE_NODE_STRLEN to 3, 4, 5, 6, or 7. If you set the value to less than 3, the minumin value of 3 will be used. If you set the value to larger than 7, the maximum value of 7 will be used. HSPICE_VERSION Specifies the version of HSPICE being used in the simulation. Default is h93a. Other possible values are h92 and h9007. Table 90 Print/Plot Options Variable Description DRIVER Obsolete DUMP_CMND Sets the graphics dump command to a printer. Used in Plots. Default value on HP is pcltrans -e3 | lp -oraw, and is xpr -device ps | lpr on Sun. DUMP_DPI Obsolete DUMP_WHITE Obsolete PAPER Sets paper size as either A4 or A3 for graphics output. Used in Plot. Default value is A4, which is also good for US letter size. PLOT_CMND Sets the HPGL plotting command. Default value on HP is cat > HPGL, and is not applicable on Sun. PLOT_SCALE_FACTOR Sets the scale factor used in conjunction with iccap_func Dump Via Server. Default value is 1.0. PRINT_CMND Sets the text output command to a printer. Used in several windows. Default is lp. IC-CAP Reference 777 11 Variables Table 91 Factory Diagnostics Variable Description IC_DIAG_FLAGS Reserved for factory diagnostics. Table 92 Curtice Extraction Options Variable Description CONSTANT_TAU When Yes, the AC extraction will extract the internal time delay in the Curtice GaAs MESFET represented by the model parameter TAU. This model parameter forces the model to use a constant delay time. When not defined the parameter A5 is extracted that represents a variable time delay as a function of VDS. Default is No. LINEAR_CGD When Yes, the AC extraction for the Curtice GaAs MESFET will extract a value for a linear gate-to-drain capacitance represented by the model parameter CGD. When not defined the only capacitance extracted is the non-linear junction capacitance CGDO. Default is No. LINEAR_CGS When Yes, the AC extraction for the Curtice GaAs MESFET will extract a value for a linear gate-to-source capacitance represented by the model parameter CGS. When not defined the only capacitance extracted is the non-linear junction capacitance CGSO. Default is No. Table 93 BJT High Freq Extraction Options Variable Description SCALEITF ITF multiplier for the decoupled extraction in the BJTAC_high_freq extraction function. The decoupled extraction is called when the coupled extraction fails. Default value is 1.0. SCALETF TF multiplier for the decoupled extraction in the BJTAC_high_freq extraction function. The decoupled extraction is called when the coupled extraction fails. Default value is 1.0. SCALEVTF VTF multiplier for the decoupled extraction in the BJTAC_high_freq extraction function. The decoupled extraction is called when the coupled extraction fails. Default value is 1.0. SCALEXTF XTF multiplier for the decoupled extraction in the BJTAC_high_freq extraction function. The decoupled extraction is called when the coupled extraction fails. Default value is 1.0. MAXRB Specifies the maximum value of the RB and RBM parameters for the extraction. Default is 5K. 778 IC-CAP Reference 11 Variables Table 94 UCB MOS Extraction Options Variable Description WD Used in the UCB MOSFET LEVEL 2 and 3 model characterizations to represent the channel width reduction parameter. This parameter is not defined in the UCB models but has been added to many proprietary versions of the models. Default is 0. Table 95 X_HIGH/Y_HIGH Options Variable Description OVERRIDE_LIMITS When Yes, user can manually specify limits for certain bipolar and GaAs extractions with the X_LOW and X_HIGH variables. Default is No. X_HIGH, X_LOW Plots can interactively set these values to the X values of a rescale rectangle. Y_HIGH, Y_LOW Plots can interactively set these values to the Y values of a rescale rectangle. Table 96 Data Management Options Variable Description MDM_AUTO_PRECISION This variable is obsolete in version 5.3. See MDM_REL_ERROR and MDM_ZERO_TOL. MDM_EXPORT_COMMENT Specifies the text to be added as comment at the top of the MDM file when exporting data. The text can include an embedded variable as val$(var-name), pre-defined program variables DATE, NEWLINE, TAB, MODEL, DUT, SETUP. Some examples are: MDM_STD_COM - Today’s date : $DATE MDM_EXPORT_COMMENT - val$(MDM_STD_COM) MDM_EXPORT_COMMENT - MDM file exported on $DATE MDM_EXPORT_COMMENT - Date: $DATE $SETUP L=val$(L) W=val$(W) where W and L are Model, DUT or Setup parameters/variables. MDM_EXPORT_COMMENT_FILE Specifies the Data Manager comment file to be used when exporting data to an MDM file. The contents of the comment file are pre-pended to the MDM file MDM_EXPORT_XFORM_DATA Setting this value to TRUE, will export all the transform(s) data (or those transforms specified by MDM_XFORM_LIST) in the setup to the MDM data-file. This variable is automatically set to TRUE when you select the checkbox 'Export Transforms' in the Export Data dialog. Default is FALSE. See MDM_XFORM_LIST. IC-CAP Reference 779 11 Variables Table 96 Data Management Options Variable Description MDM_FILE_PATH Specifies the Data Management file name path. MDM_FILE_NAME Specifies the Data Management file name. MDM_HEADER_VERBOSE Specifies if the header of the MDM file includes comments describing each field. Default is FALSE. MDM_PRECISION This variable is obsolete in version 5.3. See MDM_REL_ERROR and MDM_ZERO_TOL. MDM_REL_ERROR When IC-CAP reads values from an MDM file, it tries to match requested input values with data in the MDM. If the data does not exist in the MDM file, importing the data is not advised. However, due to roundoff errors, a tolerance must be assumed. IC-CAP uses the formula MDM_REL_ERROR > (req - mdm)/req as its acceptance test. Default value is 1E-10 This value should rarely need to be adjusted, and can be adjusted for an individual Input. By assigning a value to MDM_REL_ERROR_<name> (where <name> is the name of the Input to which the tolerance is to be applied), specific control is possible. MDM_VALUES_LIST Specifies a space or comma separated list of Parameter or Variable names. The values of these Parameters/Variables are written to the MDM file. When an MDM file with values stored in it is imported or used to auto-create a setup, these Parameters/Variables are automatically reset to the values stored in the MDM. However, if a Parameter or Variable no longer exists in the scope of the setup being imported to, a variable will be created for that value in the Setup Variables Table. 780 IC-CAP Reference 11 Variables Table 96 Data Management Options Variable Description MDM_XFORM_LIST Specifies a comma separated list of transform names that will be exported when this setup is exported. By using this variable, you may specify a subset of all transforms for export. In addition you may specify the mode, nodes, and other data. Each transform entry in the comma separated list will appear in the MDM file as an output. The actual values of each output type are shown below: Mode ------V,N,U I C,G T S,H,Z,K,A,Y Values ----------------------------------------------------------<Name> <Mode> <+ Node> <- Node> <Unit> <Type> <Name> <Mode> <To Node> <From Node> <Unit> <Type> <Name> <Mode> <High Node> <Low Node> <Unit> <Type> <Name> <Mode> <Node> <Pulse Param> <Unit> <Type> <Name> <Mode> <Port 1> <Port 2> <AC Ground> <Unit> <Type> Examples: MDM_XFORM_LIST = calc_ic I C E, calc_ib I B E SMU2 MDM_XFORM_LIST = Hcalc H, beta Note, only the transform name is required. You may include as many extra entries per transform as desired. This variable is only referenced if MDM_EXPORT_XFORM_DATA is true. See MDM_EXPORT_XFORM_DATA. MDM_ZERO_TOL IC-CAP Reference When IC-CAP reads values from an MDM file, it tries to match requested Input values with data in the MDM. If the data does not exist in the MDM file, importing the data is not advised. However, due to roundoff errors, a tolerance must be assumed. IC-CAP uses the formula MDM_ZERO_TOL > (req - mdm) | req == 0 or mdm == 0 as its acceptance test. Default value is 1E-30. This value should rarely need to be adjusted, and can be adjusted for an individual Inputs. By assigning a value to MDM_ZERO_TOL_<name> (where <name> is the name of the Input to which the tolerance is to be applied), specific control is possible. 781 11 Variables 782 IC-CAP Reference Agilent 85190A IC-CAP 2008 Reference 12 GPIB Analyzer Menu Commands 784 Macro Files 784 The GPIB analyzer offers basic capabilities for communicating with instruments via the GPIB. It can be used to debug an instrument driver or to manually set an instrument to a certain state not supported by IC-CAP. The analyzer commands are found on the Tools menu in the Hardware Setup window; the output is displayed in the Status panel near the bottom of the window. Agilent Technologies 783 12 GPIB Analyzer Menu Commands Each of the menu items available in the Hardware Setup Window is described in online help. Macro Files GPIB analyzer requests can be combined and placed in a macro file that can be executed at any time. NO TE IC-CAP macros for IC-CAP Models are different from macro files interpreted by the GPIB analyzer. The GPIB analyzer’s ability to interpret a file containing a series of requests is valuable for: • Prototyping an instrument driver for testing a series of commands and checking instrument responses. (The GPIB analyzer macro facility includes some capabilities that are not available in interactive use, such as serial polling until a particular bit is set in the response, or delaying for a fixed number of seconds.) • Repeatedly manually executing a sequence of GPIB analyzer commands. Macro File Example This section provides an example of a acceptable GPIB analyzer macro file. The syntax of each line is very simple and the system can readily distinguish comments from commands. Note that expressions, accepted in IC-CAP macros, are not accepted here; most arguments are treated literally. These commands are typed in a text file using any text editor, for example, vi. 784 IC-CAP Reference GPIB Analyzer 12 The Macros submenu (from the Tools menu) provides 2 macro commands: choose Specify to provide the name of the file to be read and executed; then, choose Execute. If changes are made to the file, it is necessary only to save the changes and again select Execute. $c This is a small GPIB Analyzer macro file; this line is a comment $a 17 active address = 17 $c send request for instrument ID string: ID\n $r read answer back $p print it to the Status window $c now send a string to reset the instrument: RST\n $w 2 wait 2 seconds after sending RST to instrument $c The following ’$m’ com