The S2016A release has introduced some major changes in DEVICE. The product now offers two solvers to the users, a CHARGE transport solver which is the original ‘Device’ solver from the previous releases and a brand new HEAT transport solver. Accommodating two solvers has resulted in some changes in the model tree which has resulted in some changes in how users will write a script for the CHARGE solver. This can create some incompatibility issues when users try to run a script file from an older version of DEVICE.
Most of the commands from the old solver have been carried over to the new CHARGE solver. For example, the setcontact command has been replaced by the setbc commands but the setcontact command will still work in the CHARGE solver. The same goes for the run and addmesh commands which have been modified to become run(“CHARGE”) and addchargemesh but the old commands will still work.
The change in the model tree has however introduced some change in the scripting that needs to be addressed before an old script can be used in the new DEVICE.
- The first change is that the ‘electrical’ solver region is now called ‘CHARGE’ instead of ‘Device region’. As a result, any script command referring to the ‘Device region’ object should be updated to call the ‘CHARGE’ object. For example,
set(“Device region”, “x span”, 5e-6); will become set(“CHARGE”, “x span”, 5e-6);
- Another big change is that the simulation objects (mesh constraints, monitors, doping objects, sources) are now all children of the CHARGE solver region. When setting them up or getting results from them, the name should reflect this change. For example, to get the bandstructure from a monitor named ‘band’, the script command,
A = getresult(“band”, “bandstructure”); will become A = getresult(“CHARGE::band”, “bandstructure”);