Directional Etching
#include <psDirectionalEtching.hpp>
The Directional Etching Model simulates anisotropic material removal in semiconductor fabrication processes. It models etching where material removal occurs preferentially in a specified direction, influenced by both directional and isotropic velocity components.
// namespace viennaps
DirectionalEtching(const std::array<NumericType, 3> &direction,
NumericType directionalVelocity = 1.,
NumericType isotropicVelocity = 0.,
const Material mask = Material::Mask,
bool calculateVisibility = true)
DirectionalEtching(const Vec3D<NumericType> &direction,
NumericType directionalVelocity,
NumericType isotropicVelocity = 0.,
const std::vector<Material> &maskMaterials =
std::vector<Material>{Material::Mask},
bool calculateVisibility = true)
DirectionalEtching(const RateSet &rateSet)
Parameter | Description | Type |
---|---|---|
direction | Direction vector for directional etching. | std::array<NumericType, 3> |
directionalVelocity | (Optional) Velocity for directional etching. | NumericType |
isotropicVelocity | (Optional) Isotropic velocity for etching. Default is set to 0. | NumericType |
mask | (Optional) Material used as a mask. Default is set to Material::Mask . | Material |
calculateVisibility | (Optional) Determines whether etching is limited by visibility constraints. Default is set to true . | bool |
A specialized direction can also specified using a RateSet
with the following parameters:
Parameter | Type | Description |
---|---|---|
direction | Vec3D<NumericType> | The preferred etching direction. |
directionalVelocity | NumericType | The etch rate along the specified direction. |
isotropicVelocity | NumericType | Velocity applied isotropically. |
maskMaterials | std::vector<Material> | List of materials used as a mask. |
calculateVisibility | bool | Determines whether etching is limited by visibility constraints. |
Example usage:
C++
// namespace viennaps
RateSet<NumericType> rateSet;
rateSet.direction = Vec3D<NumericType>{0., 0., 1.};
rateSet.directionalVelocity = -1.;
rateSet.isotropicVelocity = 0.;
rateSet.maskMaterials = {Material::Si, Material::SiO2};
rateSet.calculateVisibility = true;
auto model = SmartPointer<DirectionalEtching<NumericType, D>>(rateSet);
Python
rateSet = vps.RateSet()
rateSet.direction = [0., 0., 1.]
rateSet.directionalVelocity = -1.
rateSet.isotropicVelocity = 0.
rateSet.maskMaterials = [vps.Material.Si, vps.Material.SiO2]
rateSet.calculateVisibility = True
model = vps.DirectionalEtching(rateSet)