Extracting pinch-off and threshold voltages in quantum transistors

Many times I needed to extract threshold voltages from experimental results. I remember in my PhD days, this was quite a debate, and we could generally agree there is no optimum way of doing it. The problem mostly lied in that you are not exactly sure in which part of the plot the current starts to flow, or the channel is depleted. In room temperature transistors, this was mainly due to the intermediate region of thermal population of the bands. In quantum transistors, we are playing in the low temperature field and most of the time dopants are thought to be frozen.

What is really certain is that all voltages that you compare against will need to be extracted using the same method.

Since what we are interested in is changes in the curvature of the plot, we expect to play around with derivatives a lot. But for this, there is the extra problem that experimental results can be very noisy. Once you take the derivative, you introduce further noise, that goes even worse in the second derivative (see figure below).

Characteristics of a transistor with 2 pinch-off positions in the classical regime. First derivative (blue plot) shows pronounced amount of noise.

If you are using Originlab, it’s quite easy to play around as it also has some smoothing capabilities. I used to do that a lot in my PhD, but nowadays I am going through a more open source phase. One software I am aware of is SciDAVis. I haven’t tried it yet, but it mentions in the manual that noisy data will need to be smoothed out before findind their derivatives and it has its own routines for that.

If you are following the programming road like me, it becomes really fast way to do all this after loading all data in Python. Then we can do a lot of batch work and plot publication-ready graphs. Further to this, I was surprised to find out how easy it is to smooth out a curve.The idea is to use a running window. You take the weighted average of a ‘window’ in the plot, whose length you decide yourself. This can be done using convolution.

numpy.convolve(data, np.ones(ww)/ww, mode='valid')

This routine takes the values in ‘data’ and overlaps it with running window of width ‘ww’. That is done by multiplying each element by a corresponding coefficient and then add up the results. Then, finally, you decide what to do with the edges using the ‘mode’ parameter. There will probably be some edge effects there, so if the pinch-off voltage is close to the edge, you might have problems detecting it, but you might still be able to correct for this by fixing the window of convolution. I usually pad the edges with the same values as the first/last element. This allows me to keep all arrays the same length.

Finally, you can take the first (or even second derivative after re-smoothing) using the routine of your choice. In my case, a simple numpy.gradient() did it. You can see the final result in the figure below.

Current (laft axis) and derivative (right axis)

You can see that the routine produces much clearer results for the derivatives, and you just need to decide where you want to take the pinch off. Generally, this is a very robust method that for my data it succedded detecting the pinch-off voltages in more than 90% of the cases, but it is affected a lot by the width of the running window, the padding and all things related to the smoothing process. For more accurate results, the trend is to use methods from what has been astablished as the ‘Machine Learning’ toolbox, but this I leave for a different post.

Feel free to share your own method in the comments if you like.

1 thought on “Extracting pinch-off and threshold voltages in quantum transistors

  1. Pingback: Automating device data analysis | The nanoelectronics buff

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s