A LabVIEW Template for Building DLTS Systems with the MFIA

July 27, 2021 by Roberto Foddis

This blog post describes how to get started with writing a LabVIEW™ code to control the MFIA Impedance Analyzer for DLTS measurements. It also includes ideas for independent code for the control of a third-party temperature controller.

Deep level transient spectroscopy (DLTS) is a powerful and commonly used technique to investigate the concentration and carrier binding energy of defects in semiconductors. The technique involves measuring capacitance transients at different temperatures. The semiconductor junction is initially reverse biased to deplete the bulk of mobile charge carriers; subsequently, the reverse bias voltage is briefly set to zero by a positive voltage pulse and the empty traps are filled. Following the positive voltage pulse, the junction is again reverse biased, charges are gradually emitted and cause a change in capacitance.

On the market you can find several DLTS turnkey solutions, typically tailored to specific test recipes, and standalone measurement devices (such as the Boonton 7200 that has been discontinued though). DLTS solutions are in high demand because of new and emerging semiconductor materials that need to be tested. A custom DLTS system can provide flexibility and enable new modes of DLTS. The MFIA can form the heart of such a system.

The three basic building blocks of a custom DLTS system are:

  1. A function generator to apply the bias voltage pulse train to the material under test.
  2. An impedance analyzer to record the transient of the capacitance signal.
  3. A cryostat and a programmable temperature controller to set the right thermal conditions.

The MFIA covers the second point; the first point is also covered, as the LabOne® software's Threshold Unit generates the square wave with a defined offset and frequency and routes this analog waveform to the Aux Input (see Figure 1). This signal is added to the AC test signal for measuring the resulting capacitance transient waveform. This blog post addresses point 3, so that you can add the necessary third-party products to the overall system.

MFIA configuration

Figure 1: The MFIA with the MFITF fixture. A short BNC cable connects Aux Output 1 to Aux Input 1.

The LabVIEW Code Template

The LabVIEW template discussed here provides a good start, as most of the code is developed and you only need to develop the temperature controller program with the third-party protocol.


  • LabVIEW Full or Professional License, v. 2009 or superior
  • Zurich Instruments LabOne LabVIEW API's latest version
  • The MFIA and a BNC cable
  • A fixture to connect your DUT to the MFIA
  • A third-party temperature controller connected to a PC

The MFIA Impedance Analyzer can generate the excitation signal at a specific temperature and then acquire the capacitance transient; this process is repeated several times depending on a few parameters. Hence we can separate the "measurement code" from the "temperature code". These two LabVIEW VIs run in parallel exchanging data through a set of global variables (see Figure 2).

Figure 2: Global Variables are used to send and retrieve data from the two VIs. (Click to zoom)

The LabVIEW Project (see Figure 3) contains the following components:

  • The DLTS Acquisition (Main).vi
  • The DLTS Temperature Controller.vi
  • The DLTS Global.vi (global variable)
  • 6 subVIs
LabVIEW Project

Figure 3: The LabVIEW Project with all of its components.

Let's have a look at these components in details. The DLTS Acquisition (Main).vi (see Figure 4) is the core of the project. A sequence of steps can represent how it works:

  1. Enter the parameters of the DLTS system (including the MFIA Serial Code).
  2. The DLTS Temperature Controller.vi applies the Start Temperature value.
  3. When the temperature is stable, the Main.vi acquires a Capacitance transient waveform and saves it to the disk.
  4. The DLTS Temperature Controller.vi adds the Increment to the previous Temperature value and then comes back to step 3.
  5. When the Temperature value is equal to End Temperature, stop the VIs.

Figure 4: The front panel of DLTS Acquisition (Main).vi contains all parameters needed to control the entire system. It also shows the graph of the impedance measurements and a table with all data. (Click to zoom)

With the Internal Generator switch you can decide whether to use MFIA to generate the Bias Pulse Train (as suggested in this blog post) or use a third-party function generator (to have a lower rise/fall time of the pulses). When the Automatic DAQ switch is ON, Capacitance measurements are performed automatically after the new Temperature value is reached; when it's OFF, you'll need to press a button on the front panel to start a new Capacitance measurement. The DLTS Temperature Controller.vi (see Figure 5) contains a simulated code and must be replaced with the real-world software that manages the protocol of a third-party temperature controller.

DLTS Temperature Controller

Figure 5: This VI contains the code to manage the third-party temperature controller (to be filled in by the user).

All subVIs contain specific codes to simplify the block diagram of the Main VI. For example, DLTS Acquisition Parameters.vi (see Figure 6) includes all LabOne parameters that define the acquisition process (trigger, grid mode, number of point, number of averages) and that can be modified according to the specific DLTS system.

Figure 6: This block diagram shows the array of commands that will be sent to the LabOne Data Server to configure the acquisition process. (Click to zoom)

The DLTS Global.vi is a global variable (i.e., it can be shared by several parallel VIs) that collects the numeric and boolean parameters indicated in Figure 2. It allows the Main.vi to communicate (in and out) with the Temperature Controller.vi, separating the MFIA code from the code related to a third-party intrument.

Current limitations of this project

  • The template has not yet been tested with a real-world DLTS experimental setup.
  • The code works only with MFIA Impedance Analyzer.
  • The project doesn’t include any DLTS analysis on the measurements (several algorithms could be implemented). In LabVIEW you can add easily any processing code you prefer (even by incorporating Python or MATLAB).
  • View this software as a "template": it isn't a turnkey solution.
  • This software is written in LabVIEW source code and so can be customized.


With this LabVIEW project you can start developing your custom DLTS system without having to start from scratch, having most of MFIA code not only written and editable, but also independent from the code to be developed for the third-party temperature controller. If you are interested in using this code for your experiment, please write to roberto.foddis@zhinst.com. I will be happy to share this code to get you started on your own LabVIEW-controlled DLTS setup based on the MFIA.