The etch() Method
Contents
The etch()
Method#
The etch()
method is one of the basic methods for describing a process.
It is called on a mask data object. The basic use case is:
l1 = layer("1/0")
substrate = bulk()
mask(l1).etch(0.3, into='substrate')
output("1/0", substrate)
This simple case removes material from the substrate and leaves a hole where the mask is drawn..
The etch()
method has up to two positional arguments and a couple of
options which have to be put after the arguments in the usual Python
keyword notation name=value
:
etch(height, lateral=0, option=value, ...)
The height
argument is mandatory and specifies the depth of the etch.
The lateral
parameter specifies the lateral extension (underetch).
The lateral extension is optional and defaults to 0. The lateral
extension can be negative. In that case, the profile will be aligned
with the mask at the top. Otherwise it is aligned at the bottom.
There are several options:
Option |
Value |
---|---|
|
The profile mode. Can be
'square' (default), 'round' ,and
'octagon' . |
|
The taper angle. This option specifies tapered mode and cannot be
combined with
mode . |
|
Adjusts the profile by shifting it to the interior of the figure.
Positive values will reduce the line width by twice the value.
|
|
A material or an array of materials into which the etch is
performed. This specification is mandatory.
|
|
A material or an array of materials which form the selective
material of the etch. The etch will happen only where this
material interfaces with air and pass through this material
(hence the name).
|
|
Applies the etching at the given depth below the surface. This
option allows to create cavities. It specifies the vertical
displacement of the etch seed and there may be more applications
for this feature.
|
mode
, taper
and bias
#
The effect of the mode and bias interaction is best illustrated with some examples.
The initial layout is always this in all following examples:
The first example if the effect of the plain etch with a thickness of 0.3 um. It will remove a rectangular part at the mask:
etch(0.3, into=substrate)
The next example illustrates the effect of a lateral extension on a square profile. The 0.1 um extension will remove material left and right of the main trench:
etch(0.3, 0.1, into=substrate)
In 'round'
mode, the material will be removed with an elliptical
profile. The vertical axis will be 0.3 um, the horizontal 0.1 um
representing the lateral extension. The trench will become bigger
than the mask by the lateral extension at the bottom:
etch(0.3, 0.1, mode='round', into=substrate)
To avoid overetch, a negative lateral extension can be specified, resulting in a alignment of patch and mask at the top:
etch(0.3, -0.1, mode='round', into=substrate)
Another mode is 'octagon'
which is basically a coarse approximation
of the ellipse and computationally less expensive:
etch(0.3, 0.1, mode='octagon', into=substrate)
A bias value can be specified to fine-tune the position of the top edge of the trench. A positive bias value will shrink the figure:
etch(0.3, 0.1, mode='round', bias=0.05, into=substrate)
A special profile can be specified with the taper
option. This option
specifies a taper angle and a conical trench will be created. The taper
angle will be the sidewall angle of the trench. This option cannot be
combined with mode
and the lateral extension should be omitted. It can
be combined with bias
however:
etch(0.3, taper=10, into=substrate)
etch(0.3, taper=10, bias=-0.1, into=substrate)
Step etch profile#
The following image shows the etch profile of a 30° slope and a vertical step by an etch in round mode with thickness of 0.3 um and lateral extension of 0.1 um. The sidewall of the step will be removed with a thickness of 0.1 um corresponding to the lateral extension.
The solid gray line shows the profile before the etch:
etch(0.3, 0.1, mode='round', into=substrate)
through
- selective etch#
Normally the etch will happen only at the interface between air and
the into
material, as the following example demonstrates:
# Prepare input layers
m1 = layer("1/0")
m2 = layer("2/0")
substrate = bulk()
# Grow a stop layer
stop = mask(m2).grow(0.05, into=substrate)
# Grow with mask m1, but only where there is a substrate surface
mask(m1).etch(0.3, 0.1, mode='round', into=substrate)
# output the material data to the target layout
output("0/0", substrate)
output("2/0", stop)
With the following input:
This script will produce the following result:
The blue material will prevent etching as it blocks the air/substrate
interface. The through
option reverses that scheme: giving this
stop
material as an argument to through
will make the etch happen
at places where this material interfaces with air:
# Prepare input layers
m1 = layer("1/0")
m2 = layer("2/0")
substrate = bulk()
# Grow a stop layer
stop = mask(m2).grow(0.05, into=substrate)
# Grow with mask m1, but only where there is a substrate surface
mask(m1).etch(0.3, 0.1, mode='round', into=substrate, through=stop)
# output the material data to the target layout
output("0/0", substrate)
output("2/0", stop)
This script will produce the following result:
buried
- vertically displaced etch#
This option shifts the seed of the etch operation into the material. Without this option, the etch will start at the surface. If a positive value is given, the etch starts below the surface in a depth given by this value. The etch will proceed upwards and downwards with the given features. In the extreme case (below the surface by more than the etch depth), this feature creates cavities:
# Prepare input layers
m1 = layer("1/0")
m2 = layer("2/0")
substrate = bulk()
# Grow with mask m1 into the substrate
mask(m1).etch(0.3, 0.1, mode='round', into=substrate, buried=0.4)
# output the material data to the target layout
output("0/0", substrate)
With the following input:
This script will produce the following result: