|
Biography
Josef Weinbub studied electrical engineering and microelectronics at the Technische Universität Wien, where he received a bachelor's and a master's degree (Diplomingenieur) in 2009. He completed his doctoral degree on frameworks for micro- and nanoelectronics device simulation under the supervision of Professor Siegfried Selberherr in the beginning of 2014. He is continuing his research as a postdoctoral researcher, where his scientific interests are in the field of scientific computing, with a special focus on algorithms and datastructures, modern programming techniques, software frameworks, and high-performance computing.
ViennaMini — The Flexible Device Simulation Framework
A device simulator consists of several software components required for computing the electrical characteristics of a given device, all of which consist of a mesh and additional physical information, like a doping profile. For instance, a material database is required to provide the material parameters used for the mathematical models. The interplay between the different software components usually gives rise to tightly interwoven, i.e., monolithic, implementations, resulting in inflexible simulation platforms. Changes to the implementation, such as switching linear solver backends, are thus usually cumbersome and require significant implementation efforts. This fact puts pressure on the software design to provide a flexible long-term solution. Interfacing the simulator with library-centric software design-based libraries merits special consideration due to the significantly increased level of reusability provided by the already available functionality.
ViennaMini is a free open source software-based device simulation framework, specifically tackling the previously indicated requirements and challenges for a device simulation framework. The implementation makes extensive use of the free open source Vienna* library collection, thus uses synergy effects introduced by library-centric software design. Therefore, the actual device simulation tool, named ViennaMini, merely interfaces with these libraries and can thus focus on higher-level issues, such as orchestrating the simulations. This fact represents the major motivation for applying library-centric software design in the first place, and thus ViennaMini can be seen as a beneficiary of such an approach.
Fig. 1 shows the individual components of ViennaMini. The core of the simulator is its expandable modeling facility, providing specific simulation setups, such as the basic semiconductor equations and related additional models. This mechanism uses the ViennaMath library to setup partial differential equations, and forwards it, along with other information, such as solver parameters, to the ViennaFVM library, taking care of the assembly and solution process.
The device class stores a ViennaGrid mesh object in its state and allows for the storing and accessing of additional meta information, such as the segment roles. A segment role associates device-specific parts to a segment, like contact, oxide, or semiconductor. Also, an expandable device template class hierarchy enables the generation of devices, which can be directly used for simulations. Among the currently implemented device templates are a two-dimensional pn-junction diode and a three-dimensional capacitor. The set of templates can be further extended by implementing additional devices, which adhere to the device template interface imposed by the corresponding virtual class hierarchy.
The developed approach offers a high level of reusability, flexibility, usability, maintainability, and expandability. ViennaMini thus acts as a modern and long-term simulation platform to end users and advanced users. Simultaneously, developers can continuously advance the simulation tool with minimum effort, ultimately enabling such a tool to stay at the forefront of research.
Fig. 1: The currently available components of ViennaMini. The central simulator orchestrates the individual components, forming the actual simulation application. Blue components indicate exchange layers, whereas grey components relate to the actual kernels, such as pugixml. Note that additional kernels can be added, for instance, additional discretizations such as the finite element method provided by ViennaFEM.