How to Import and Simulate DC IV and S-parameters Pulsed Data with IC-CAP

Blog Post created by rtinti Employee on Feb 10, 2020

Pulsed measured data are key to investigate and model important effects such as thermal, trapping/memory. Due to self-heating, using a Pulsed System is sometimes the only way to measure large RF power devices. Pulsed IV data are often represented by multi-curve data in which each curve has a different number of points and the values of the independent variable (i.e the first-order sweep, typically Vd) may also vary at each curve. This data is often called non-rectangular and stored in a table-like format. Until now, it has been challenging to manage non-rectangular data within IC-CAP and even more so, to simulate it. In this article, I’ll discuss new features released in IC-CAP 2020 Update 2.0 that greatly facilitate importing and simulating table-like data.

A PDF version of this article is attached along with an IC-CAP example project.


A classic example of a non-rectangular data structure is obtained when measuring the steady-state (i.e. non-pulsed) Id vs. Vd, Vg characteristics of a FET device using power compliance to avoid damaging the device. In this case, each curve will typically have a different number of points with curves in the high-voltage / low-current regions extending to higher drain voltages than those that intersect the high-power regions. To add complexity, sometimes the Vd points may not be equally spaced to provide more resolution in the low-voltage region.


Figure 1: Example of non-rectangular data (DC IV Non-pulsed with power compliance)


Figure 2: IC-CAP classic IV Setup storing rectangular data

DC IV data measured with a Pulsed System are similar to the characteristics measured with power compliance.  Each curve could have a different number of points and because of the system losses, the Vd points may not be in a regular grid and their values may change in each curve. Some systems can adjust or tune the bias at each point so that the actual Vd at the device port matches the desired Vd by using a software algorithm. This slows down the measurement, but it results in a more regular plot where all curves share the same Vd values.


The traditional IC-CAP Setup for Id vs. Vd, Vg is shown in Fig. 2 and uses Inputs of Sweep Type: “Linear” where Vd and Vg are the first and second-order sweeps, respectively.  This setup creates a regular rectangular grid and does not align with Pulsed IV measured data.  Alternatively, one could use a ‘LIST’ sweep to represent all the Vd values and while this list would allow one to define arbitrary values for each curve since the entire Vd would be a 1st order sweep, all the values in the list would be simulated for each Vg value. This would result in a redundant number of bias points simulated and would require data to be manipulated before they can be displayed.


A solution to our non-rectangular data problem is to use a combination of LIST and LSYNC Inputs to represent table-like data to be simulated on a row basis.  In tabular data, each column represents an Input or an Output and each row represents an independent simulated bias point. IC-CAP does not directly support an Input sweep of type ‘TABLE’ however, table-like simulations can be achieved by using LIST and LSYNC.


In the latest release, IC-CAP 2020 Update 2.0, LIST/LSYNC Inputs have been enhanced to support direct simulation of I/V table-like data, including temperature and instance parameter information. In this paper, I will first discuss how to import pulsed data into IC-CAP, then I will discuss how to simulate it.


Importing and displaying Pulsed Data into IC-CAP


IC-CAP 2020 update 2.0 includes a new Python module called ‘pivimport’. This module allows the import of two types of data files:

  • Maury/AMCAD DC/Pulsed measurement data file. (.mes)
  • Maury/AMCAD S-parameter measurement data file (.mps)

I will not discuss the details of the .mes and .mps formats here. Both files include blocks of data, each representing a DC or an S-parameter curve at different Vg (.mes) or different Vg and Vd (.mps) values so the file reader needs to be able to parse the bias information, create LIST and LSYNC Inputs accordingly and finally read the data into the Outputs. If you are curious about the implementation, please see the open-source pivimport.py file.

An example MDL file, PIV_IMPORT_Example_FET.mdl is provided under the directory:



Figure 3: Example of Python transform importing (.mes) data

In the example project, there are two DUT’s: dev_p and dev_iv. Here, we will consider the dev_iv, which uses the latest improved implementation of LSYNC shipped with IC-CAP 2020 Update 2.0.

To load .mes file, run the transform test_import_mes. 

At the prompt, select the .mes file. Data will be loaded in the current setup. Copy and paste the transform into your project to be able to load data into another project Setup or simply provide a different destination Setup (dest_setup in line 7 above) as first argument.


Figure 4: Input / Output page after importing a .mes file (DC IV pulsed data)


In the transform, note that the new Python module pivimport is imported on line 1. After loading, the Inputs / Outputs page should look like Fig. 4.

Note how the combined use of LIST and LSYNC Inputs creates a table-like structure. The vd_pulse Input is of type LIST. Think of it as the master column or the first column of the table. Inputs of type LSYNC are ‘linked’ to the master vd_pulse and represent the other columns in the table. You can have many LSYNC (additional columns in the table) but there is only one master LIST. LSYNC may be of type V/I or P (Parameter). Type P may represent entries like temperature, width, length, etc. If necessary, Inputs of type ‘CONST’ are also allowed and they represent columns in the table in which each cell has a constant value.



Figure 5: Using Curve Data and switching the legend on and showing the marker information


Each curve populates a section of the table. In this case, rows representing a single curve will have the same values for vg_pulse (this is how IC-CAP knows how to correctly display the curves). In fact, there are a couple of ways to display the plot.  In the first method shown on the left in figure 5, we use “Curve Data”. By setting Curve Data to vg_pulse, we tell IC-CAP that vg_pulse is to be used as a 2nd order sweep.  When its value changes, the IC-CAP graphic engine knows that it needs to start a new curve. Note also how both legend and the marker info display work well.

The second method is somewhat more powerful, especially if you have more than two LSYNC and a third-order sweep (i.e. several columns in the table).  This method uses the new plot_vs() function. See Figure 6 and note the definition of ‘Y data 0’.


Figure 6: Using plot_vs() to define the trace


Importing S-parameter data follows a similar procedure. Maury’s .mps files are essentially touchstone files that include bias information in the header of each frequency block. Since the tabular format only refers to the bias points, the IC-CAP importer requires each frequency block to have the same number and values of frequency points.


Figure 7: Typical S-parameter Setup imported from .mps files


In the example file, use the transform in the setup dev_iv/piv_iv_spar_mps to import .mps file. After importing the setup should look like Fig. 7.

The frequency is the first order sweep and is a LIST Input since frequency may not be a linear sweep in the file. The bias is implemented as tabular data using the LIST/LSYNC. At simulation time, the frequency sweep is executed for each row of the tabular data, representing a single bias point.


As mentioned earlier, the new pivimport.py module is installed into the $ICCAP_ROOT/lib/iccap/python/icutils directory. It is open-source and can be easily viewed to see how the import algorithm is implemented and to use as a starting example to import other types of table-like file formats. To support the tabular nature of the data, simulations are run row-by-row.


Simulating Tabular and Pulsed Data in IC-CAP


Once LIST/LSYNC Inputs have been created as explained in the previous section, IC-CAP 2020 Update 2.0 can correctly simulate the data. At this time, the new LSYNC I/V/S feature is supported with ADS (including spmodeads and hspicemodeads netlist syntax modes) and ELDO.

If the tabular data were measured under steady-state conditions (e.g. power compliance measurements, Maury/AMCAD DC IV characteristics, etc.) then no further considerations are necessary when the model self-heating model is turned on. Providing that RTH has been extracted, the simulation will automatically consider the effect of self-heating.

On the other hand, if the measured data are from Pulsed IV or Pulsed S-parameters measurements, then further considerations are necessary. Let’s discuss the Pulsed IV case first. We will assume that data are quasi-isothermal, i.e. were measured using narrow pulses (e.g. 500ns or less) and that the temperature increase is negligible during the pulse. Also, the pulse period is long enough so that there is no significant temperature change over time. Typically, this condition is satisfied if the duty cycle is 1/1000.

If the device does not show any trapping/memory effects or the quiescent bias point is Vg=Vd=0 (no trapping effects are excited at quiescent) then a simple way to simulate is to turn off self-heating. This can easily be achieved by setting RTH=0 in the Model Parameter Table and executing a classic DC simulation.

If the device has memory effects, like modern GaN devices, modeling engineers will typically perform Pulsed IV measurements at different quiescent points to study the effect of traps and extract the related model parameters. In this case, we cannot use standard DC simulations, but rather we need to extract the Pulsed IV characteristics from transient simulations, just like in a real Pulsed System. For each bias point, a pulsed transient simulation is run, and one value is sampled within the id pulse. The sampled current values are then combined to re-construct the IV characteristics. This type of simulation is not natively supported by ADS and since it comprises of many transient simulations, it is more time-consuming than a regular DC simulation.

This is where the power and flexibility of IC-CAP can greatly help.

The DUT Circuit is shown in Fig. 8. A 4-terminal GaN device is defined at the Model circuit level using an ASM-HEMT model card (not shown here). At the DUT level, we define a sub-circuit that includes voltage sources at the drain and gate terminals. These sources use the erf_pulse() function in ADS which defines a pulse waveform in the transient simulation. The parameters governing the pulse (e.g. quiescent and pulse levels, pulse delay and width) are defined as parameters of the sub-circuit


 Figure 8: DUT Circuit for Pulsed IV simulation in the time domain


The Measure / Simulate page tab is shown in Figure 9. The Input time which defines the transient simulation and the time interval. The constant Inputs vg_qu and vd_qu define the Vg and Vd quiescent point (-3.3, 28) and the LIST/LSYNC Inputs define the Vg and Vd pulse levels. These are typically imported from measured data.

Running this simulation is only the first step required to obtain the Pulsed IV characteristics. In fact, this simulation Setup will output as many ig and id waveforms as the number of bias points (243 in the example). Fig. 10 shows the id.s waveform as a function of time. Just as in a real Pulse Measurement System, to create the IV characteristics, we need to sample each waveform at a specific time delay; not too early so that the current level is not affected by the turn-on transient, but also not too late otherwise, self-heating may start to affect the current level. It is important to observe that the waveform measured by the system may look different due to the presence of additional parasitics (e.g. cables, connectors, etc.)Note the two auxiliary Inputs vg_aux and vd_aux. They define two voltage sources and have no effect; however, they are necessary so that IC-CAP can read the current flowing through the G and D nodes. The Outputs id and ig monitor the currents and finally, if the model supports self-heating, one can read the temperature node. If you turn on self-heating, make sure that you have a reasonable value for CTH, otherwise, the transistor will heat-up instantaneously during the short pulse and follow the instantaneous dissipated power.


Figure 9: Inputs / Outputs configuration to simulate Pulsed IV characteristics

If no trapping is present, i.e. the quiescent bias point is (0,0) one can use pulsed data to extract CTH by comparing measured and simulated data of different pulse widths and sampling points.  In a typical III-V device, the slope of the current along the pulse can be used to determine the thermal capacitance and resistance. In Figure 10, note the slight negative slope during the pulse at high currents due to self-heating.


Figure 10: Simulation of Pulsed IV Characteristics


If the RTH and CTH have been previously extracted, and you are investigating trapping, then use the same simulation time delay as used in the measurement.

In the Extract / Optimize page, the transforms id_vs_vd and ig_vs_vd sample the waveforms and return the current dataset to be used for display purposes as shown in Figure 11. These are relatively simple to implement and are provided in the attached example project.


Figure 11: Simulation of Pulsed IV Characteristics


If the model includes trapping, you will obtain different Pulsed IV characteristics depending on the quiescent point and can use these curves to extract the related model parameters. At the time of this writing, investigation on the trapping model used in this example, the CMC standard ASM-HEMT model for GaN devices, is still under undergoing.  Therefore, we are currently not able to display pulsed IV curves showing different trapping states.


Finally, a word on simulating Pulsed S-parameters. Unfortunately, a full simulation of Pulsed S-parameters using a combination of time-domain and S-parameters is not possible since no commercial simulator supports this analysis combination. Typically, Pulsed S-parameter measured data are compared to S-parameter simulation with no self-heating. If the device has memory effects, use only data measured at (0,0) quiescent point to minimize trapping effects.


To study the effect of trapping on RF behavior and validate the model, one should compare results from large-signal Harmonic Balance (HB) simulations to waveforms from active load-pull measurements such as those measured by the Keysight Nonlinear Vector Analyzer.


Note: The attached example requires IC-CAP 2020 Update 2.1 scheduled to be released in May 2020 due to a change in the python library directory structure.

If you are running IC-CAP 2020 Update 2, simply replace the line:

from icutil import pivimport


import pivimport

in the Python transform used to import .mes and .mps file.