2. Release Notes

2.1. Introduction

DEVSIM download and installation instructions are located in Installation. The following sections list bug fixes and enhancements over time. Contact information is listed in Contact.

2.2. Release 1.4.11

The devsim.element_pair_from_edge_model() command is available to calculate element edge components averaged onto each node of the element edge. This makes it possible to create an edge weighting scheme different from those used in devsim.element_from_edge_model(). The examples examples/diode/laux2d.py (2D) and examples/diode/laux3d.py (3D) compare the built-in implementations of these commands with equivalent implementations written in Python

Fixed issue where command option names where not always shown in the documentation.

The platform specific notes now clarify that any version of Python 3 (3.6 or higher) is supported.

  • linux.txt

  • windows.txt

  • macos.txt

2.3. Release 1.4.10

Fixed crash when evaluating element edge model in 3D.

Fixed potential error using devsim.delete_node_model() and similar deletion commands.

2.4. Release 1.4.9

Support for loading mesh files containing element edge data.

2.5. Release 1.4.8

In transient mode, the convergence test was flawed so that the charge_error was the only convergence check required for convergence. The software now ensures all convergence criteria are met.

2.6. Release 1.4.7

2.6.1. Models

In the simple physics models, the sign for time-derivative terms was wrong for the electron and hole continuity equations. This affects small-signal and noise simulations. The example at examples/diode/ssac_diode.py was updated to reflect the change.

2.6.2. Platforms

Fix build script issue for Apple macOS on Travis CI, updated the compiler to g++-9.

Update Centos 6 build from devtoolset-6 to devtoolset-8.

2.7. Release 1.4.6

2.7.1. Version Information

Parameter info can be queried for getting version information. The file testing/info.py contains an example.

python info.py
{'copyright': 'Copyright © 2009-2020 DEVSIM LLC', 'direct_solver': 'mkl_pardiso', 'extended_precision': True, 'license': 'Apache License, Version 2.0', 'version': '1.4.6', 'website': 'https://devsim.org'}

2.7.2. Extended Precision

The example examples/diode/gmsh_diode3d_float128.py provides an example where extended precision is enabled.

2.7.3. Python Formatting

The Python scripts in the examples and testing directories have been reformatted to be more consistent with language standards.

2.7.4. Platforms

Microsoft Windows 10 is supported and is now compiled using Microsoft Visual Studio 2019.

Microsoft Windows 7 is no longer supported, as Microsoft has dropped support as of January 14, 2020.

2.7.5. External Meshing

Support for reading meshes from Genius Device Simulator has been completely removed from DEVSIM.

2.8. Release 1.4.5

An MSYS2/Mingw-w64 build is available for 64-bit Microsoft Windows. This build, labeled devsim_msys_v1.4.5, enables the use of the 128-bit floating point precision already available on the Apple macOS and Linux platforms.

2.9. Release 1.4.4

2.9.1. Bug Fixes

An intermittent crash on Microsoft Windows 10 was occuring at the end of the program. It is now fixed.

2.9.2. Documentation

A file named CHANGES.md is now distributed with DEVSIM, detailing changes to the program.

2.9.3. Internal changes

  • Regression system script refactored to Python

  • Refactored threading code using C++11 function

  • Refactored timing functions for verbose mode using C++11 functions

  • Refactored FPE detection code to C++11 standard

2.11. Release 1.4.2

In this release there are the following improvements.

  • Errors due to floating point exceptions and failed matrix factorization are not fatal.

  • The Apple macOS release fixes runtime issues with macOS 10.13 (High Sierra).

  • The provided binary releases utilize more libraries from Anaconda.

2.12. Release 1.4.1

2.12.1. Math Functions

The cosh, sinh, tanh, are now available math functions. Please see Table 10.2. In addition, all of the functions in the table, except for Fermi and inverse Fermi functions, are evaluate in extended precision mode. This mode may be enabled using the parameters discussed in Extended Precision.

2.12.2. Element Model Memory Leak

A large memory leak was occurring during the evaluation of element edge models created with devsim.element_from_edge_model(). It is now fixed and memory usage is now stable when these models are evaluated.

2.12.3. Python 3 API Memory Leak

A small memory leak could occur when devsim functions where called, or when data was returned. These reference counting issues are now fixed.

2.13. Release 1.4.0

The devsim.custom_equation() and devsim.register_function() commands take Python functions, instead of the a string with the function name.

The following commands are available to store data on edges and element edges:

2.14. Release 1.3.0

2.14.1. Python 3 Examples

All of the Tcl regression tests in the testing directory have been converted to Python 3. These tests serve as examples for features that were previously only tested using Tcl scripting.

2.14.2. Tcl Support Deprecated

Tcl support is deprecated and will be removed in a future release of the software.

2.14.3. Binary Releases Scripting Languages

Python 3 is now the only scripting language in the releases available from:

https://github.com/devsim/devsim/releases Math Library

The Microsoft Windows version now uses Intel MKL Pardiso for direct matrix factorization. Both Linux and Apple macOS have been using Intel MKL Pardiso since November 1, 2015. Binary releases for all operating systems use BLAS/LAPACK routines from Intel Math Kernel Library.

2.15. Release 1.2.0

DEVSIM releases have better support for Python 3. Using the stable ABI, the software is able to run newer Python 3 releases, without rebuilding the software.

Support for Python 2.7 has been removed.

The banner has been removed when the DEVSIM module is imported.

The symdiff python module is now part of the DEVSIM release. This module has additional features not available using the devsim.symdiff() command from DEVSIM. By first setting the PYTHONPATH variable to the lib directory in the DEVSIM distribution, symdiff is loaded by using

import symdiff

Documentation is available in the doc directory of this distribution. Examples are available in the examples/symdiff directory.

2.16. Release 1.1.0

The Bernoulli function, \(B(x)\),

\[B \left( x \right) = \frac{x}{\mathrm{e}^x - 1}\]

and its derivative,

\[dBdx \left( x \right) = \frac{\mathrm{e}^x - 1 - x \mathrm{e}^x}{\left(\mathrm{e}^x - 1\right)^2}\]

have been refactored. They are used to calculate electron and hole current densities using the Scharfetter-Gummel method [SG69].

The Bernoulli function has numerical issues when \(x\) approaches 0 and requires special evaluation. In this release, DEVSIM, takes advantage of C++11 math library functions for evaluating the denominator.

In addition, these functions are evaluated with extended precision, when this mode is enabled in the simulator. This mode is described in Extended Precision and controlling parameters are in Parameters controlling program behavior..

Users should expect that simulation results should change in the number of solver iterations and small differences in simulation results. This and other functions are listed in Predefined Functions..

2.17. Release 1.0.0

2.17.1. Documentation

The formatting of the PDF and online documentation has been improved. Also significant changes have been made to the way DEVSIM is called from Python.

2.17.2. Version

Due to the numerous changes in the Python API, the version number has been updated to having a major revision of 1. We adopt the semantic version numbering presented at https://semver.org. The version number can be accessed through the Python interface using the devsim.__version__ variable.

2.17.3. Operating Systems

The Microsoft Windows 32-bit operating system is now supported in addition to the platforms listed in Supported platforms.

2.17.4. Python Support

DEVSIM is now loaded as a shared library from any compatible Python interpreter. Previously, DEVSIM binaries contained an embedded Python interpreter. The following versions of Python are supported in this release

  • 2.7

  • 3.6

  • 3.7

By first setting the PYTHONPATH variable to the lib directory in the DEVSIM distribution, devsim is loaded by using

import devsim

from Python. Previous releases of devsim used the ds module, the manual will be updated to reflect the change in module name.

Many of the examples in the distribution rely on the python_packages module, which is available by using:

import devsim.python_packages

The default version of Python for use in scripts is Python 3.7. Scripts written for earlier versions of Python 3 should work. Python 2.7 is deprecated for future development.

Anaconda Python 3.7 is the recommended distribution and is available from https://continuum.io. The Intel Math Kernel Library is required for the official DEVSIM releases. These may be installed in Anaconda using the following command:

conda install mkl

On the Microsoft Windows platform, the following packages should also be installed:

conda install sqlite zlib

Some of the examples and tests also use numpy, which is available using:

conda install numpy

Please see User Interface and Installation for more information.

2.17.5. GMSH Support

Gmsh has announced a new version of their mesh format 4.0. DEVSIM currently supports the previous version, 2.2. To load a file from Gmsh, it is now necessary to either:

A future release of DEVSIM will provide this capability.

2.17.6. CGNS Support

Support for loading CGNS files is deprecated, and is no longer part of the official releases. Please see Using an external mesher for more information about importing meshes from other tools.

2.18. July 20, 2018

2.18.1. Documentation

The documentation has a new license, which is described in Copyright. The source files are now available for download from: https://github.com/devsim/devsim_documentation.

2.18.2. Python 3 Support

Python 3 executable, devsim_py3 is now supplied in addition to standard Python 2 executable, devsim.

2.18.3. Element Information

The devsim.get_element_node_list() retrieves a list of nodes for every element on a region, contact, or interface.

2.18.4. Interface Boundary Condition

The type=hybrid option is now available for the devsim.interface_equation() command. Please see Interface equation assembly for information about boundary conditions.

2.18.5. Interace Equation Coupling

The name0, and name1 options are now available for the devsim.interface_equation() command. They make it possible to couple dissimilar equation names across regions.

2.18.6. Interface and Contact Surface Area

Contact surface area is no longer included in SurfaceArea node model. It is now placed in ContactSurfaceArea. These are listed in Table 4.1.

2.18.7. Bug Fixes

2.18.8. Extended Precision

The following new parameters are available:

  • extended_solver, extended precision matrix for Newton and linear solver

  • extended_model, extended precision model evaluation

  • extended_equation, extended precision equation assembly

When compiled with 128-bit extended precision support, these options enable calculations to be performed with higher precision. Default geometric models, are also calculated with extended precision.

devsim.set_parameter(name = "extended_solver", value=True)
devsim.set_parameter(name = "extended_model", value=True)
devsim.set_parameter(name = "extended_equation", value=True)

Currently, the Linux and gcc-based Apple macOS versions have extended precision support.

2.19. May 15, 2017

2.19.1. Platforms

  • The Ubuntu 16.04 (LTS) platform is now supported.

  • The Ubuntu 12.04 (LTS), Centos 5 (Red Hat 5 compatible) platforms are no longer supported. These platforms are no longer supported by their vendors.

  • Apple macOS compiled with flat_namespace to allow substitution of dynamically linked libraries.

  • Microsoft Windows 7 is compiled using Microsoft Visual Studio 2017.

2.19.2. Binary Releases

  • Releases available from https://github.com/devsim/devsim/releases.

  • Centos 6 released is linked against the Intel Math Kernel Library.

  • Microsoft Windows 7 release is linked against the Intel Math Kernel Library

  • Apple macOS can optionally use the Intel Math Kernel Library.

  • Anaconda Python 2.7 is the recommended distribution.

  • Please see release notes for more information.

2.19.3. Bug Fixes

  • 3D element edge derivatives were not being evaluated correctly

  • 3D equation model evaluation for element edge models

2.19.4. Enhancements

  • Build scripts are provided to build on various platforms.

  • DEVSIM mesh format stores elements, instead of just nodes, for contact and interfaces

  • The devsim.create_gmsh_mesh() command can be used to create a device from a provided list of elements.

2.19.5. Example Availability

2.20. February 6, 2016

DEVSIM is now covered by the Apache License, Version 2.0 [ApacheSoftwareFoundation]. Please see the NOTICE and LICENSE file for more information.

2.21. November 24, 2015

2.21.1. Python Help

The Python interpreter now has documentation for each command, derived from the documentation in the manual. For example, help for the devsim.solve() can be found using:


2.21.2. Manual Updates

The manual has been updated so that commands are easier to find in the index. Every command now has a short description. Cross references have been fixed. The date has been added to the front page.

2.22. November 1, 2015

2.22.1. Convergence Info

The devsim.solve() now supports the info option. The solve command will then return convergence information.

2.22.2. Python Interpreter Changes

The way DEVSIM commands are loaded into the devsim module has been changed. It is now possible to see the full list of DEVSIM commands by typing


in the Python interpreter.

2.22.3. Platform Improvements and Binary Availability

Many improvements have been made in the way binaries are generated for the Linux, Apple macOS, and Microsoft Windows platforms.

For Linux (see linux.txt):

  • Create Centos 5, (Red Hat Enterprise Linux 5 compatible) build

  • Build uses Intel Math Kernel Library math libraries (community edition)

  • Build uses any compatible Python 2.7, including Anaconda

  • Build compatible with newer Linux distributions.

For Apple macOS (see macos.txt):

  • Uses the system Python 2.7 on macOS 10.10 (Yosemite)

  • Provide instructions to use Anaconda Python

For Microsoft Windows (see windows.txt):

  • Uses any compatible Python 2.7, including Anaconda

  • Build uses Intel Math Kernel Library Community Edition

Binary releases are available for these platforms at https://devsim.org.

2.24. August 10, 2015

The devsim.create_contact_from_interface() may be used to create a contact at the location of an interface. This is useful when contact boundary conditions are needed for a region connected to the interface.

2.25. July 16, 2015

The devsim.set_node_value() was not properly setting the value. This issue is now resolved.

2.26. June 7, 2015

The devsim.equation() now suppports the edge_volume_model. This makes it possible to integrate edge quantities properly so that it is integrated with respect to the volume on nodes of the edge. To set the node volumes for integration, it is necessary to define a model for the node volumes on both nodes of the edge. For example:

devsim.edge_model(device="device", region="region", name="EdgeNodeVolume",
set_parameter(name="edge_node0_volume_model", value="EdgeNodeVolume")
set_parameter(name="edge_node1_volume_model", value="EdgeNodeVolume")

For the cylindrical coordinate system in 2D, please see Cylindrical Coordinate Systems.

macOS 10.10 (Yosemite) is now supported. Regression results in the source distribution are for a 2014 Macbook Pro i7 running this operating system.

2.27. October 4, 2014

2.27.1. Platform Availability

The software is now supported on the Microsoft Windows. Please see Supported platforms for more information.

2.28. December 25, 2013

2.28.1. Binary Availability

Binary versions of the DEVSIM software are available for download from http://sourceforge.net/projects/devsim. Current versions available are for

  • macOS 10.10 (Yosemite)

  • Red Hat Enterprise Linux 6

  • Ubuntu 12.04 (LTS)

Please see Installation for more information.

2.28.2. Platforms

macOS 10.10 (Yosemite) is now supported. Support for 32 bit is no longer supported on this platform, since the operating system is only released as 64 bit.

Regression data will no longer be maintained in the source code repository for 32 bit versions of Ubuntu 12.04 (LTS) and Red Hat Enterprise Linux 6. Building and running on these platforms will still be supported.

2.28.3. Source code improvements

The source code has been improved to compile on macOS 10.10 (Yosemite) and to comply with C++11 language standards. Some of the structure of the project has been reorganized. These changes to the infrastructure will help to keep the program maintainable and useable into the future.

2.29. September 8, 2013

2.29.1. Convergence

If the simulation is diverging for 5 or more iterations, the simulation stops.

2.29.2. Bernoulli Function Derivative Evaluation

The dBdx math function has been improved to reduce overflow.

2.29.3. Default Edge Model

The edge_index is now a default edge models created on a region Table 4.2.

2.30. August 14, 2013

2.30.1. SYMDIFF functions

The vec_max and vec_min functions have been added to the SYMDIFF parser (Table 10.2). The vec_sum function replaces sum.

2.30.2. Default Node Models

The coordinate_index and node_index are now part of the default node models created on a region (Table 4.1}).

2.30.3. Set Node Value

It is now possible to use the devsim.set_node_value() to set a uniform value or indexed value on a node model.

2.30.4. Fix Edge Average Model

Fixed issue with devsim.edge_average_model() during serialization to the DEVSIM format.

2.31. July 29, 2013

2.31.1. DEVSIM is open source

DEVSIM is now an open source project and is available from https://github.com/devsim/devsim. License information may be found in DEVSIM License. If you would like to participate in this project or need support, please contact us using the information in Contact. Installation instructions may be found in Installation.

2.31.2. Build

The Tcl interpreter version of DEVSIM is now called devsim_tcl, and is located in /src/main/ of the build directory. Please see the INSTALL file for more information.

2.31.3. Contact Material

Contacts now require a material setting (e.g. metal). This is for informational purposes. Contact models still look up parameter values based on the region they are located.

2.31.4. External Meshing

Please see Using an external mesher for more information about importing meshes from other tools.

Genius Mesh Import DEVSIM can now read meshes written from Genius Device Simulator. Support is no longer available in recent versions releases.

Gmsh Mesh Import DEVSIM reads version 2.1 and 2.2 meshes from Gmsh. Version 2.0 is no longer supported. Please see Gmsh for more information.

2.31.5. Math Functions

The acosh, asinh, atanh, are now available math functions. Please see Table 10.2.

2.31.6. Test directory structure

Platform specific results are stored in a hierarchical fashion.