The segments and boundaries for which tunneling is calculated must be registered in the tunnel string located in the Phys section of the input deck. This can be performed in several ways. The first possibility is to state the segment and its boundaries manually like in the following example:
Phys { tunnel = "GateInsulator,Semiconductor_GateInsulator,GateInsulator_Gate"; +GateInsulator { Electron { tunnel = "FNPure"; } } }Here, tunneling is turned on in the segment GateInsulator for the boundaries to the segments Semiconductor and Gate. Additionally, a tunneling model must be given for the respective segment. In the example above the model FNPure is used for electrons in the GateInsulator section, while hole tunneling is neglected.
In most cases tunneling will have to be evaluated for boundaries which are very close. If they are nearer than any other two non-adjacent boundaries of the considered segment, the function addNearestInterfaces can be used to find the respective tunneling boundaries:
Phys { tunnel = addNearestInterfaces("Device", "GateInsulator"); +GateInsulator { Electron { tunnel = "FNPure"; } } }
Note that for all models, the electron and hole tunneling mechanisms can be stated separately. All tunneling models share a keyword consistent which can be used to turn self-consistent simulation on or off. If it is set to no, the additional electron and hole current is ignored in the continuity equation. This can be of use if only the order of magnitude of the tunneling current is of interest, since convergence is usually better when the continuity equation remains unchanged.
A. Gehring: Simulation of Tunneling in Semiconductor Devices