Andreas Morhammer
Dipl.-Ing.
Publications

Biography

Andreas Morhammer was born in Vienna, Austria in 1984. He received the degree of Diplomingenieur in "technical mathematics in computer science" from the Technische Universität Wien in 2011. He also began working as a software developer for real-time video analysis and signal processing systems in 2004, which became his main focus following graduation. Three years later, after a total of ten years in the industry, he returned to Technische Universität Wien to pursue a PhD.

ViennaUtils - Code Unification and Dependency Simplification for Semiconductor Device

The Vienna* project (see Fig. 1) comprises several open source C++ libraries and applications that deal with a wide range of tasks that are central to modeling electronic devices such as manipulating mathematical expressions, meshing two- and three-dimensional geometries, and providing different discretization schemes and solvers for the resulting systems of linear equations. While these tasks are very diverse, the Vienna*-libraries typically share their deployment environment as well as many common requirements that arise on the level of implementation, therefore, handling such commonalities well leads to substantial synergy effects.
A case in point is support for file formats in simulation platforms. Among other things, the success of simulation platforms hinges on their ability to interface with external tools, which in turn is typically a function of their support of various file formats. Given two software packages that both require the same functionality, the question emerges where to put common code as to avoid unnatural or impractical dependencies between the two packages.
This issue recently resurfaced when comparing carrier energy distributions calculated by Sentaurus Device, a commercial device simulator by Synopsis, with those of ViennaSHE, an open source device simulator in Vienna*. Both codes deterministically solve the Boltzmann Transport Equation using Spherical Harmonics Expansion. The simulation setup was specified in the DFISE file format and had to be parsed so that ViennaSHE could process the mesh of the simulated device, the applied bias at the contacts, material parameters, etc. Likewise, ViennaGrid, another Vienna*-library, also stood to profit from the ability to convert DFISE meshes to its own data format.
ViennaUtils, a new library in the Vienna* project, deals with this problem by gathering, unifying and optimizing shared software components, thereby providing the usual benefits of refactoring and library use: code unification and generalization reduce overall code size and documentation effort, while increasing modularity, hence improving maintainability, future productivity, and performance. In particular, ViennaUtils avoids any compatibility issues that previously arose from using external libraries by ensuring support for all relevant platforms, from Microsoft Windows desktop computers to Unix-based supercomputers.

Fig. 1: An illustration of a subset of Vienna* libraries and applications that range from providing core functionality to entire device and process simulation. Libraries on lower layers provide functionality to entities that are higher up in the hierarchy. ViennaUtils serves as the new bottommost layer.