The ViennaPS software library ties all of the above mentioned tools together and aims to provide a straight-forward and simple to use interface to users without requiring in-depth knowledge of the mathematical concepts and
numerical intricacies of the underlying simulation tools. It contains the necessary interfacing code to connect the different software libraries as well as a comprehensive process modelling interface and intuitive analysis tools.
In order to allow for the greatest possible flexibility, the entire simulation domain is encompassed within the psDomain class, which contains one LS for each material and one single cell set (CS) for storing the volume
data of all materials. When the modelling framework is used to simulate a process, the entire domain is passed, so each model may either use the LS surface, the CS volume data, or both as needed to describe the changes
introduced by the process. This modelling framework is the heart of the ViennaPS library and is discussed in detail in the following.
4.5.1 Modelling Framework
In order to allow for a full description of a semiconductor fabrication process, several steps are required to form a comprehensive chemical model, as discussed in Section 3.2.
These steps are highlighted in Fig. 3.1, where the first step of modelling the molecular transport in the gas phase is carried out by the ViennaRay library using the
user-defined particle type. The resulting particle flux can then be applied to find the surface coverage by modelling the molecular interactions with the surface, which is encompassed in a surface model in the presented library. The
final step of modelling the chemical reactions of molecules on the surface results in the etch or growth rates and is also incorporated in the surface model. This surface model thus defines how the surface will advance, given the
incoming particle fluxes and the chemical properties of the substrate, as described in Section 3.2.4 and Section 3.2.5. If surface coverages are needed in order to find the final surface rates and thus the velocities for LS advection, they have to be calculated inside the surface model.
Additionally, in order to simulate volume processes, a volume model may be implemented, which can access the LS and CS data structures to generate a velocity field for LS advection from the stored data. After advection, the CS
is updated using the new level set values, adding or removing cells accordingly. The software design and interplay of different objects in the modelling framework is visualised in Fig. 4.14.
Therefore, all the information about the process is encompassed in the class psProcessModel, as it includes all the particle type information required for ray tracing, the surface model, as well as the volume model
describing chemical processes inside the material. This class may also be used as a base class for the definition of process models for specific chemistries, where all particle types, the surface model, and the volume model may be
defined inside the derived class rather than setting them using objects defined elsewhere. This design gives software developers greater flexibility for the implementation of specific chemical models, while still providing the
possibility of mixing predefined particles types with surface and volume models using the psProcessModel class directly.
Additionally, each part of the model, or the entire model itself, does not have to be known at compile time, so they can be compiled and integrated in the simulator separately, avoiding the recompilation of the entire library when a
new model is introduced. Furthermore, the fact that models must not be known at compile time means that the library is suitable to be packaged for interpreted languages, such as Python. Especially Python is widely used in the
scientific community due to its intuitive design and wide range of easily accessible scientific tools. Therefore, the ViennaPS library can benefit greatly from being easily accessible to the scientific community as a
Python package.
The flexible design of the ViennaPS modelling framework allows for the implementation of many different process models building upon numerous numerical concepts and computational techniques. Many common
processes of interest can be simulated or emulated with ease without requiring in-depth knowledge of the underlying numerical methods used for the simulation. In the next chapter several process models developed within the
ViennaPS framework are presented. The modelling approaches and input parameters are discussed in detail and the resulting geometries are compared to expected analytical results and experimental measurements.