XView: a program to visualize 3D semiconductor or MEMS process cross-sections

Note: This website might be reported as unsafe by some browsers. This site is plain HTML without scripts. No personal data or cookies are collected and no ads.


Process cross sections for semiconductor or MEMS fabrication can be difficult to draw by hand in 2D and even more so in 3D. The layout can have many overlapping mask layers that can stack up in a complicated way. There can be different film thicknesses, taper angles, and etch biases. Photo lithography generally introduces corning rounding which again is hard to visualize. XView can considerable shorten the time to draw such cross sections. The images it produces can be used for finding issues with the process or for training, process transfer, or other purposes.


Download the latest version (windows x64 only) dated 1/28/2024: download XView 1.4.0.

Note on security warnings: since it contains a windows installer .msi file which can be directly executed to install XView, browsers might give a security warning. To allow the download, for example in Edge click the 3 dots to the right of the warning and some more instructions to trust the download. Also after executing the .msi file another security warning is given and possibly after first time execution as well. The main new features are:

  1. The process file command specification have been updated to version 2 which introduces material "types" and some other smaller changes. The older version of the process file can still be read and processed. Material types simplify the etch logic and better allows certain issues with the process to become apparent. For example, if a film stack contains two metal layers with layer names M1 and M2 with both copper as material, they do not have to be separately added as etch targets in the patterning command. During deposition M1 and M2 are both defined as of a certain identical material type (for example CU here shorthand for copper). During patterning, material type CU is given as an etch target material type, so both M1 and M2 are etched without the need to specify M1 and M2 individually as material targets.
  2. The process text for a pattern command now is more clear on which materials are etched.
  3. In the process file, the dimensions for the cross section rectangle, patterning bias, and photo resolution, can now be given in nm by the newly introduced -use_nm argument of the gen/settings command.
  4. In the process file, the deposition and coating commands now have an added argument -scolor which can specify standard so-called X11 color strings (e.g. the string darkblue). The user now does not need to convert the color first to the RGB format. The old -color argument specifying the color RGB bytes can still be used.

Note: As mentioned above, browsers can give security warnings when downloading the above. You need to give some additional permissions to download it (for example in Edge tell it do keep the download by pressing the 3 dots next to the download) This software or website does not collect personal information of any kind and just does what it says. Only, might you register the software, your email address has to be entered in the program which is tied to a registration code.

For questions or registration of this software please contact info@boscorp.nl.

The basic idea

This program is for semiconductor or related engineers that do not want to spend a lot of time drawing process cross sections by hand. The 3D layers are built with process steps given in a custom process file with process commands introduced below. The mask layout for patterning steps is loaded from a standard GDS layout file.

Besides for use for semiconductor and MEMS design and fabrication, this software can be relevant for all manufacturing technologies that use thin film coating/deposition followed by photo lithography and etch to build nano- or micro devices.

The process file specifies the process steps and mask layers used in building the thin film stack. Layers can be deposited, coated, and patterned with a photo mask from a GDS layout. For deposition, step coverage can be specified. For example, the step coverage for CVD or evaporation process is larger than for PVD processes. For coating steps, a degree of planarization can be specified. For patterning steps, photo and etch bias, taper angle, and effects due to photo lithography resolutions can be specified. Also multiple etch target material types can be given. A release process step, commonly used in MEMS, removes a target layer even if fully covered by another layer.

The process file needs to specify the cell name and the location (coordinates) of the target cross section rectangle inside a GDS layout. The GDS layout has to be loaded first. The size of the cross section rectangle needs to be reasonable chosen. If much larger than the device sizes (an extreme zoomed out view) features that are too small can not be visualized. If the cross section rectangle is much smaller than the device sizes and process biases and resolutions (an extreme zoomed in view). For example, if a patterning step has a CD bias of 5 um but the cross section width is 2 um, nothing meaningful can be seen.

An example GDS layout for a very small and simple hypothetical FinFET transistor (created KLayout) could look as follows:

The source GDS file of this example can be downloaded here: Layout Example. Even for such a very simple layout with only a few mask layers the resulting layer stack after fabrication still difficult to visualize. Generally, many more mask steps are involved. After running this through XView with this mask layout and with the example process file in the below, the cross section comes out as follows:

The process file is a text (*.txt) file with processing commands that specify the process step. It also gives some relevant settings like the GDS cell name from which the cross section is to be taken.

How to run XView?

  1. Create a working folder and place your process *.txt file in it. The commands in the process file and their syntax are given below with an example process file.
  2. Run XView and load the GDS file through menu "Load GDS":

    centered image

  3. Run the process file through menu "Run Process":

    centered image

  4. This will start the process simulation. If no errors in the process file, the render window will show the process cross sections after each process step. The console window will display relevant information including possible errors found in the process file. You can fix these by updating the process file and run it again. If large grid sizes were specified in the process file, the process execution can take some time and use up significant memory but the simulation has better precision. For initial runs on a process, a smaller grid size with 400 columns can be specified and something around 1200 for final cross sections.
  5. When the process simulation is done you can navigate with the arrow keys through the cross sections after each process step.

    centered image

  6. If you're okay with the image previews you can save them as high resolution images by selecting the "Save images" menu. The images have a better resolution than the preview images in the render window. The image files will be placed in a newly created folder inside the working folder in which the process file is located. The name of the folder is automatically created using the process file and the date and time of creation added to it.

Commands Reference Version 2

This section describes the syntax and use of commands in the process file version 2 (updated 1/25/2024).

Empty lines and lines starting with a # are ignored and can be used for comments or commenting out lines. Otherwise a line in the process file should start with a command identifier followed by arguments that start with a '-'. Some argument are mandatory and some are optional only. Below are all the command identifiers that can be used with their arguments. Arguments can follow the command identifier in arbitrary order. Arguments listed between square brackets [...] are optional.

The settings command

Specifies general settings. For example

   settings -version 2 -N 800 -cam 25

specifies that version 2 of the command spec of this section are followed, 800 columns in the grid, and a camera angle of 25 degrees. The settings command has to be the first command in the process file. All arguments are listed here:

-version Specifies the version of the process file. It is followed by a positive integer > 0 indicating the version of the process command specification used.
-N Specifies the number of columns used for the process simulation. It is followed by a whole number from 100 to 2000. The number of columns can be up to 2000 but the simulation can take long and requires increasingly more memory. Around 1000 to 1200 columns already gives reasonable quality at faster simulation times and less memory use. For faster test execution runs, for example 400 columns can be used.
-cam Specifies the camera angle with respect to the horizontal in degrees. It is followed by a whole number from 0 to 40. Zero degrees is equivalent to a front view.
[-use_nm] If present, specifies that nm units are used for all dimensions in the process file. These include the cross section rectangle dimensions, the patterning bias, and photo resolution. If not present, these dimensions are given in micron units. Units for film thicknesses for deposition, coating, and etch depth are always nm.
[-map] If present, specifies that a height map is shown. The height map gives the heights of the cross section in locations across the top layer of the stack, relative to the top of the substrate. Note: that showing the height map when the photo mask feature sizes are much smaller than the cross section rectangle width is not meaningful.
[-legend] If present, specifies that a layer legend with the material names is included to the left of the cross section..

The gds command

Specifies the GDS cell name the cross section is taken from. The GDS file has to be preloaded first as described in the section above. For example

   gds -cell TOP

specifies TOP as the cell name to use. It has one argument:

-cell Specifies the cell name in the GDS database loaded. It is followed by a string without spaces. The cut command introduced below will further specify the target rectangle inside this cell.

The location command

Specifies the target rectangle of the cross section. This is the cut command in older version which is still allowed. It has the following arguments:

-x Specifies the bottom left x coordinate in um or nm (see the -use_nm argument in the settings command above). It is followed by an integer or decimal number.
-y Specifies the bottom left y coordinate in um or nm (see the -use_nm argument in the settings command above). It is followed by a integer or decimal number.
-dx Specifies the width in um or nm (see the -use_nm argument in the settings command above). It is followed by an integer or decimal number. Note that both a width much smaller (extreme zoom-out) or much larger (extreme zoom-in) than the typical mask feature size and lead to poor visualization. This is discussed in the notes section below.
-dy Specifies the height in um or nm (see the -use_nm argument in the settings command above). It is followed by an integer or decimal number. The height has to be between 25% and 100% of the cross section width. Starting with version 2, dy is automatically adjusted if outside this range.

The deposition command

Specifies a deposition step. Just dep instead of deposition is also allowed. For example

   deposition -name ILD -type SIO2 -sc 0.5 -scolor blue

deposits a dielectric layer with name ILD. The thickness is 500 nm with step coverage 50% of the film thickness, so about 250 nm. The material type is SIO2. The material color is the X11 color blue. Later during patterning, SIO2 can be given as a etch target. Its arguments are:

-name Specifies the name of the material deposited. It is followed by a string without spaces. It needs to be a unique name not used before by another layer in the process file.
-type Specifies the type of material being deposited in this layer. In generally will refer to the chemical composition like SIN or PI but it's up to the user. It is followed by a string without spaces. The type name can be the same as a material name of this layer or another layer (different name space). It can be same type name as a material deposited earlier. For example, if the layer stack has two metal layers of the same atomic species.
-thickness Specifies the thickness of the material deposited in nm. It is followed by a single whole or decimal number.
[-sc] Specifies the step coverage of the deposition as fraction of the film thickness. It is followed by a decimal number from 0.0 (default) to 1.0.
-color Specifies the layer color in the RGBL format. It must be followed by 4 integers. The first three specify the R, G, and B values from 0 to 255. The fourth from 0 to 100 specifies a brightness percentage from 0 to 100. Note that if this argument is not given the -scolor argument (below) is mandatory.
-scolor Specifies the layer color. It is followed by a string (no spaces allowed) specifying a X11 standard color (see X11 color). Note that if this argument is not given, the -color argument (above) is mandatory.
[-alpha] Specifies the transparency of the layer color. It is followed by a decimal number from 0.0 (completely transparent) to 1.0 (completely opaque which is also the default).

The coating command

Specifies a coating step for example spin coating or slit coating. Also just coa is allowed instead of coating. For example

   coating -name SAC -type PI -dop 0.5 -scolor cyan

is a coating step with thickness 1000 nm and a degree of planarization of 50%. A dop of 100% would result in a perfectly flat surface (but be careful the film thickness is sufficient to cover the layer topography if desired). The material type here is called PI indicating a polyimide. The layer color in the rendering is the X11 color cyan. As for deposition, later during patterning, PI can be given as one of the etch targets. Its arguments are

-name As the -name argument of the deposition command.
-type As the -type argument of the deposition command.
-thickness As the -thickness argument of the deposition command.
[-dop] Specifies the degree of planarization of the coating step. It is followed by a decimal number from 0.0 (no planarization) to 1.0 (100% planarization which is also the default). A degree of planarization of 1.0 will result in a flat film regardless of the underlying topography while 0.0 will result in a conformal film.
-scolor As the -scolor argument of the deposition command.
-color As the -color argument of the deposition command.
[-alpha] As the -alpha argument of the deposition command.

The pattern command

Specifies a patterning step consisting of photo lithography and etch. For example

   pattern -mask_name M1 -type 1 -id 3 -res 1.5 -bias 0.5 -taper 45 -targets MO1 MO2

specifies the mask name as M1 with a dark type photo mask. The GDS layer is number 3. The photo resolution is 3 um and patterning bias is 0.5 um (or both nm in nm units are specified in the settings command). The taper angle is 45 degrees and layers with material types MO1 and MO2 are etch target. The material types MO1 and MO2 need to be defined earlier in the process file as a material type of a layer or layers. Its arguments are

-mask_name Specifies the name of the mask used. It is followed by a string without spaces. Mask names are in a different name space from material names and material types.
-id Specifies the mask layer number from the GDS file. It is followed by an positive integer generally from 0 to 255.
-type Specifies if the mask type is clear or dark. It is followed by an integer number 0 (clear) or 1 (dark). This argument is mandatory if the -mask_name argument is used.
-res Specifies the resolution of the photo tool for this mask step in um or nm (see the -use_nm argument in the settings command above). It is followed by a decimal number. For example for an I line stepper used to make TFTs in the display industry this could be 1.5 um. A value of 0.0 um means that the photo patterning follows exactly the mask.
[-bias] Specifies the combined photo and etch bias of this mask step in um or nm (see the -use_nm argument in the settings command above). It is followed by a decimal number. The default value is 0.0 um.
[-taper] Specifies the taper angle in of the mask step in degrees. It is followed by an integer. The angle must be greater than 0 and less or equal to 90. The default value is 45 degrees.
[-depth] Specifies the maximum etch depth in nm. It is followed by a whole number or a decimal number. The default is no maximum etch depth.
-targets Specifies the etch targets. It is followed by a list of strings (each without space) separated by a space. The strings need to be material types defined above as the -type argument of deposition or coating.

The release command

Specifies a release etch process step. For example

   release -target SAC

removes the layer with material name SAC entirely, even if completely covered by another layer. It is assumed there is a release pathway through which this isotropic etch can reach the target material. Note that the release command needs a material name as target rather than a material type.

-target Specifies the release etch target material. It is followed by a string without a space. It needs to be a layer material name defined earlier by deposition or coating steps.

The stop command

Specifies the process execution to stop at that point. All following commands in the process file are skipped. This is useful if you want to stop execution somewhere halfway in the process.

Common Issues

An improper width of the cross section, specified by the -dx argument of the cut command, relative to the mask feature sizes, can lead to unexpected results. This can happen when the width is too small or too large. The first is analogous too watching a bitmap image zoomed into the size of a few pixels only. If, for example, the patterning bias of a step is 2 um but the cross section width is 1 um only, meaningless results will follow.

A cross section width becomes too large when the width divided by the number of columns N is larger than the size of the smallest mask features. If this happens, polygons that represent small mask feature could be dropped during extraction, for which a warning is given in the console output window. This can be mitigated by decreasing the width or increasing N (if possible).

A cross section width becomes too small if it is smaller than the mask feature sizes, etch biases and photo resolutions. To prevent that situation, a error will result if the largest patterning bias or photo resolution is larger than 25% of the cross section width. This can be fixed by increasing the cross section width. Or in cases it could be a typo in the bias or resolution of a patterning step.

A common problem is that the cross section location is entered incorrectly, and unintentionally an area outside a GDS cell is selected. No error will be given, but the result is just a featureless stack of blanket layers.

CD Bias and Taper Angle

The geometry of the -bias and -taper arguments in the pattern command is as follows:

Example Process File

The below is an example XView process file with most of commands introduced in the previous section. Together with the layout example it should produce the cross section example above.


   # This process file is according to the version 2 process file command spec
   # Camera angle is at 40 degrees
   # Show the layer legend
   # Units are in nm
   # 800 columns
   settings -version 2 -cam 40 -legend -use_nm -N 800

   # The GDS file with this cell name needs to be pre loaded by XView
   gds -cell TOP

   # CUT LOCATION (Note: nm units in this case "-use_nm 1" was specified above)
   location -x -7.0 -y -15.0 -dx 115.0 -dy 80.0


   # Thickness is 1.1 nm
   # Step coverage of 50%
   # The X11 color is yellow)
   deposition -name OX -type SIO2 -thickness 1.1 -sc 0.5 -scolor yellow

   # SOURCE/DRAIN deposition
   # The material type is MO which is used as the pattern target below
   deposition -name SD -type MO -thickness 5.5 -sc 1.0 -scolor lightskyblue

   # SOURCE/DRAIN patterning
   # Photo resolution is 2.0 nm and the total patterning bias is 0.25 nm
   # The only etch target is the MO material type deposited above
   pattern -mask_name SD -id 0 -type 1 -res 2.0 -bias 0.25 -taper 90 -targets MO

   # GATE INSULATOR deposition
   # Here the -color argument is used to specify the color
   deposition -name GI -type SIO2 -thickness 1.1 -sc 1.0 -color 255 255 0 50

   # GATE METAL deposition and patterning
   deposition -name GM -type MO -thickness 1.1 -sc 1.0 -scolor darkgreen
   pattern -mask_name GM -id 3 -type 1 -res 2.0 -bias 0.25 -taper 90 -targets MO