The Vienna Process Simulator
ViennaPS is a header-only C++, OpenMP-parallelized process simulation library, focusing on all types of processing challenges for micro- and nanoelectronics. At its core is the Level Set framework ViennaLS allows to store an implicit description of material surfaces and interfaces using a signed distance function in using a hierarchical run-length-encoded data structure from ViennaHRLE. Physical models are enabled through Monte Carlo ray tracing with the flux calculation library ViennaRay. This allows to supports several physical etching and deposition models, essential for the understanding of process-induced phenomena in micro- and nanoelectronics, such as dry plasma and anisotropic wet etching, chemical vapor deposition (CVD), and several adaptable deposition models. The framework also allows to study volume problems such as plasma-induced damage, ion implantation, and diffusion.
Within the ViennaPS framework, models for process emulation and geometry manipulation are also implemented. This includes the ability to generate a fast empirical model based on physics-based simulations or experiments using advanced algorithms, including machine learning. In addition, geometrical algorithms such as boolean operations and chemical mechanical planarization have been implemented.
ViennaLS is a header-only C++ level set library developed for high performance topography simulations. The main design goals are simplicity and efficiency, tailored towards scientific simulations. ViennaLS can also be used for visualization applications, although this is not the main design target.
ViennaRay is a flux calculation library for topography simulations, based in Intel's ray tracing kernel Embree. It is designed to provide efficient and high-performance ray tracing, while maintaining a simple and easy-to-use interface. ViennaRay was developed and optimized for use in conjunction with ViennaLS, which provides the necessary geometry representation. It is however possible to use this as a standalone library, with self-designed geometries.
ViennaHRLE is a header-only C++ library for storing sparse spatial data efficiently. In the worst case, traversing the entire data structure is achieved in O(N), where N is the number of data points stored in the structure. Random access is achieved in O(log(N)).
Release packages can be found at: github.com/ViennaTools/ViennaPS/releases/tag/1.0.0
The development repositories can be found at: github.com/ViennaTools