The 2023 list of quantum device simulation


With all this fuss about quantum things, I think it’s high time I updated the list of simulators post I did some years ago. I am completely remaking this post, instead of adding to the previous, because now things are more clear to me and to the community at large where each subdomain lies. Since this will be a list from my own experience, feel free to contact me with the software that you would like to see added in this list.

Also, it’s a list for technologies that can host Quantum Information carriers based on solid state device types, that is: semiconducting, superconducting, or even photonic. That is, with the possibility of inclusion of materials science and effects like topological. It is not about trapped ions and optical lattices, although apparently, you can do that too with Wannier functions, a method I will mention here.


In any type of solid state simulation, the materials play a fundamental role. However, we don’t always have to do some quantum mechanics simulation for different materials in order to do a simulation of the final device. This is because many of the effects get ‘wrapped up’ in simple variables, or do not affect the performance of the device.

Continue reading

The Finite Elements Method convergence survival guide

Ok, people, let’s face it. Many of us had no idea about the maths behind Finite Elements Method (FEM) simulations when we initially started using them. And most of us have felt that horrible feeling when we repeatedly saw the message ‘No convergence’ instead of a nice output. What is horrible about it is that, unless you or your group develops the software, you probably have no idea where to start looking for fixing the problem.

I heard from a lot of people in my field (electronics) that they have felt discouraged with FEM and did not even want to touch it. But I’m here to tell you that there is hope! I decided to write this guide after almost 10 years of using this type of software (on and off), first for nanoelectonics and then for semiconducting quantum technologies. It might be that the issue is actually more important in the latter, because of the differences in magnitude (or the scale of things) between classical and quantum effects (yes, not everything is quantum in quantum TCAD). But this is a user’s and not developer’s guide, so I will also keep it math-and code-free.

Continue reading

Transport and trapping in oxides using Sentaurus TCAD

Charge transport and trapping in the oxides interests many people, when it comes to device engineering, for different reasons. One of them is the variety of device configurations that can exist using thin film oxides.

During my PhD, I worked a lot with simulating such trapping mehanisms using the TCAD software Synopsys Sentaurus. Of course, the main issue with this kind of work was whether it was producing meaningful results. While this can be tested only using experimental output, in order to comare the results of the simulator with the theory, I was using some Mathematica scripts that I am attaching at the end of this post.

This model, is what Sentaurus uses to model transport and trapping in the oxide, and while many calculations can be double checked with the script, some others are impossible, as to derive them solely from the bias applied to the device, would require extensive analytical modelling. Such thing, of course, would be hard if the device is three-dimensional, unless you are willing to write your own code that solves the Drift-Diffusion (DD) equation using the Finite Elements Method.

Instead, I chose to trust the solution of the DD coming from the software, and only test the equations of charge trapping using the values of current and electron density from specific points in the oxide. This was both for current and diffusion enabled trapping, as well as the state transition functionality for the creation of new traps in the oxides (as for example after stress is applied).

DDTrapping calculates the occupational probability and the trapped harge density given constants asĀ  well as model parameters from the simulator, taken at a specific location in the device.

StateTransitions similarly calculates the probability of the defect being in a specific state as well as the state transition rates.

Sentaurus mesh Sano randomizer intricacies

This is part of my thesis. I thought it is useful to put it here.

While working with Synopsys Sentaurus mesh, I encountered a bug in its randomizer when using the Sano method. This bug manifests as large positive threshold voltage shifts in n-channel MOSFETs, as shown below:


This is due to a large difference in the level of doping introduced after the randomizer. Specifically, while the Boron Active Concentration which I randomize produces the desired results, the Net Active concentration changes from a value of -4.6×1018 to -9.4×1017 cm-3.

I overcame this issue by creating a dataex script that introduced a difference in the NetActive concentration dataset values at each mesh element. I then fitted this difference so as the Uniform profile device became the nominal. This is not the best solution to the problem, however, the results that I produced where very close to the Impedance Field Randomization Method, with only some differences that are justified by the theory of the Sano method.

This bug persisted for the cases of Doping assignment using the NGP and CIC methods, while I only randomized the Boron Active concentration. Arsenic randomization produced zero atoms for some reason. I am not sure if this is because the concentration was very low, or something else strange. The version I have used for this is K-2015.06.

Change material type in Sentaurus TCAD

There are times when I wish someone showed me an easier way to do something and this is one of them: At some point I had to change the material type in my model after creating the structure in Sentaurus process. To do this I spent quite some time looking for tricks and hacks in the manuals. From this I created my little method. As it turns out there are easier ways to do it which I found from a solvnet example a few months later. Here I will show you both methods.

For both methods you need to make sure the new material you want is in the database, if not, then this creates it in Sentaurus process:

mater add name= alt.matername=

Furthermore, it needs to be added in the datexcodes.txt file and its properties defined in the parameter file sdevice.par.

Continue reading