3D anisotropic/isotropic wet etching simulation for single-crystal (100) silicon
Open the simulator or download the example DXF mask file:
▶ Launch Simulator
The example DXF (SiEtchTestmm.dxf) contains a substrate outline on layer
0 and several mask patterns — including axis-aligned rectangles and a 45°-rotated
diamond — on layer mask, all in millimeters.
Fig. 1 Simulator interface: parameter panel (left), Etch mask pattern or etched 3D shape (right).
This tool simulates the three-dimensional etch profile produced when a patterned (100)-oriented single-crystal silicon wafer is immersed in a wet chemical etchant. Given a mask layout (DXF), an etchant type and concentration, a temperature, and an etch time, the simulator computes and renders the resulting 3D cavity shape interactively in the browser — no installation required.
Wafer orientation convention used throughout: the X-axis is parallel to the [110] crystal direction (i.e. aligned with the primary flat of a standard (100) wafer). The Y-axis is [1̅10]. All mask coordinates in the DXF file should follow this convention.
The simulation engine is based on the continuous cellular automata method described in:
Zhu, Z. and Liu, C. (2000). "Simulation of anisotropic crystalline etching using a continuous cellular automata algorithm." CMES: Computer Modeling in Engineering & Sciences, 1(1), pp. 11–19.
The silicon substrate is represented as a 3-D array of voxels. Each voxel carries a continuous mass variable M ∈ [0, 1], where 1 = intact silicon and 0 = fully etched. Only voxels at the silicon–etchant interface (the active surface) are processed at each time step; interior and masked voxels are skipped, keeping computation efficient.
At every time step each active voxel inspects its four tetrahedral neighbors (following the diamond-cubic silicon lattice) and is classified as one of three surface types:
| Neighbor pattern | Surface type | Etch rate used |
|---|---|---|
| 2 etched, 2 solid | {100} | R100 — fastest |
| 1 etched, 1 solid, 2 surface | {110} | R110 |
| 1 etched, 3 solid | {111} | R111 — near zero (etch stop) |
The mass of a voxel is reduced by rate × dt / GRID_RES each step.
When M reaches 0 the voxel is removed and its neighbors are promoted to the active surface.
This allows the {111} etch-stop planes to form naturally without any hard-coded geometry.
Because the CA neighbor vectors are defined in the crystal [100]/[010]/[001] frame, the mask input is internally rotated +45° into crystal coordinates before the simulation runs, and the resulting height-field mesh is rotated −45° back for display. The substrate outline and mask layer rendered on screen always match the original CAD coordinates.
HNA (HF + HNO₃ + CH₃COOH) etches silicon isotropically. In this mode all surface types receive the same etch rate, producing hemispherical undercut profiles. Published etch-rate data for HNA is only reliable near room temperature, so the temperature selector is restricted to 15–30 °C for this etchant.
The window is split into a left panel (inputs) and a right viewport (graphics).
| Section | Key points |
|---|---|
| Photomask Pattern |
Upload a DXF file or click Load Demo Pattern to use a built-in test layout.
Choose Positive (polyline interior = masked) or
Negative (polyline interior = exposed silicon).
The 2D Preview button switches the viewport to a top-down mask view
with pan and zoom.
The DXF coordinate unit is auto-detected from $INSUNITS; if absent,
select the correct unit manually from the dropdown.
|
| Etchant | Choose TMAH, KOH, or HNA. Enter concentration (wt%) and temperature. Temperature range is limited to 15–30 °C for HNA. |
| Etch Rates (editable table) | Shows interpolated etch rates (µm/min) for {100}, {110}, and {111} planes at several concentration/temperature combinations from the literature. Values are editable — useful for calibrating to your own process data. Switch between etchant tabs to inspect or edit rates for each chemistry. |
| Etch Time | Slider, 1–800 minutes. |
| Simulation | Click START Simulation to run. A progress bar shows CA stepping. The grid resolution (GRID_RES) is chosen automatically to keep the voxel count near 20 million; if a finer grid is used, the resolution remains at the 2 µm base; if the domain or etch depth is large the step is coarsened and a notice is shown. |
Save your mask file as DXF R2000 (AutoCAD 2000) or later. The file must contain closed polylines on two specific layers:
| Layer name | Contents | Usage |
|---|---|---|
0 |
One closed rectangle defining the silicon substrate boundary | Sets the simulation domain. The largest-area polygon on this layer is used. |
mask |
One or more closed polylines defining the mask pattern | Positive or negative, depending on the Pattern Type selection. |
The recommended coordinate unit is millimeters (set $INSUNITS = 4
in the DXF header, which most CAD tools do automatically when saving in mm).
Other units (µm, cm, m, inch) are also supported via the unit dropdown; the
$INSUNITS header value is read first and the dropdown is set accordingly,
with a warning if the header is absent.
Polylines that are neither LWPOLYLINE nor POLYLINE entities, and any entities on layers
other than 0 and mask, are ignored.
Default etch-rate values in the editable tables are taken from published literature (Tabata 1992, Seidel 1990, Zubel 2001 for TMAH/KOH; manufacturer data for HNA) and interpolated bilinearly in concentration and temperature. Values for intermediate concentrations/temperatures not listed in the table are obtained by bilinear interpolation between the nearest entries.
| Etchant | Typical use | Selectivity R₁₀₀:R₁₁₀:R₁₁₁ | Temperature range |
|---|---|---|---|
| TMAH | CMOS-compatible, no metal contamination | ~1 : 1.8 : 0.02 | 60–90 °C |
| KOH | High etch rate, most common | ~1 : 2 : 0.01 | 50–90 °C |
| HNA | Isotropic; rounded cavities | 1 : 1 : 1 | 15–30 °C |
0
and mask openings on layer mask, saved in mm (R2000 format).
Alternatively, click Load Demo Pattern to start immediately.
Simulator built with Three.js (r128) for 3D rendering and a custom continuous-CA engine in plain JavaScript. DXF parsing handles LWPOLYLINE and POLYLINE entities. Default etch-rate data from open literature; all values are editable in the UI.