Write Field Import – TXT Format Specification

To download this documentation as a PDF, click here.

Introduction


Write fields can be imported directly into Beamfox Proximity using a text file with a .txt extension. This document explains the format used to generate write fields and alignment markers in such a file.

A file consists of a number of statements separated by new lines. A statement can either define one or more write fields, the global marks, or a single local mark. Each statement consists of the statement type command followed by a number of arguments separated by comma:

COMMAND, argument_1, argument_2, ...

Spaces and empty lines in the file are ignored. At least one write field must be defined for the file to be valid.

For advanced users


The content in this section is not strictly necessary for understanding the basic functionality of the format, and can therefore be skipped at the readers discretion. It can, however, provide valuable insights for users with more advanced use cases.

Splitting of geometries into write fields

Before running proximity effect correction, Beamfox Proximity will first check for geometries that lie either fully or partially outside of any write fields. Geometries that are partially outside are split at the edge of the write field, after which all geometries that lie outside of any write fields are discarded.

During proximity effect correction, Beamfox Proximity will fracture all geometries based on dose, user settings, and existing fractures. The resulting geometries are then assigned to write fields.

The geometries will be assigned to the first write field in which the geometry can be entirely contained. The first write field depends on the writing order, which is determined by the order in the write field file. For arrays, the write fields are written one row at a time. If a geometry cannot be fully contained within a single write field, the geometry will be split at edge of the first write field. The two parts of the newly-split geometries are both considered new geometries, and go through the same process again. This process continues until all geometries have been assigned to write fields.

Autofill fields capture and split geometries similarly to write fields.

For write fields with multi-pass enabled, a geometry will only be captured by the resulting effective write field. In other words, a geometry will only be captured if it is placed within the area that is overlapped by all multi-pass passes.

Virtual and physical write fields

It is possible to use write fields in Beamfox Proximity (virtual write fields) that are smaller than the actual write fields used by the e-beam system (physical write fields). This can potentially improve the quality and fidelty of the exposure, as this ensures writing will only occur in the central part of the physical write field, which reduces errors caused by defocus and astigmatism. The physical write field size is assumed to be the largest write field size specified. The number of dots is read from the same statement where the physical write field size is declared – all other number of dots declarations are ignored.

Multi-pass mode

Geometries in the design that cross the interface between separate write fields are susceptible to stitching errors, caused by small offsets being introduced when the e-beam system moves from one write field to the next. This effect can be minimized at the expense of a slightly increased writing time by using multi-pass mode.

In multi-pass mode, geometries are written multiple times using a fraction of the dose with a slight offset each time. More specifically, the geometries are written passes number of times with a dose of 1 / passes. The offset between each pass is defined by a displacement distance of shift, and an angle of \phi_0 + \frac{2n + 1}{N}\pi relative to the x-axis, where n is the pass id running from 0 to N - 1 , \phi = rotation, and N = passes.

Note: Beamfox Proximity will display the effective write field instead of all the individual multi-pass write fields. This results in a virtual write field that is smaller than the specified size.

Write Field Statements


A write field statement can either define a single write field or an array of write fields. The write field statement commands are CHIP, MCHIP, ARRAY, MARRAY, SARRAY, and MSARRAY.

For arrays, the primary and secondary array vectors are used to define array direction. The primary array vector specifies displacement between columns, and the secondary array vector specifies the displacement between rows. The primary and secondary array vectors cannot be parallel.

CHIP

Defines a single write field. The signature of the statement is:

CHIP, x, y, size, dots

NameTypeConditionsDescription
xrealThe x-coordinate of the center of the write field.
yrealThe y-coordinate of the center of the write field.
sizerealsize > 0The width of the write field in micrometers.
dotsintegerdots > 0The number of dots along each axis of the write field.

Example:

CHIP, 259.9, 255, 500, 1000000

See example CHIP.txt for a full example.

MCHIP

Defines a single multi-pass write field. The signature of the statement is:

MCHIP, x, y, size, dots, passes, shift, rotation

NameTypeConditionsDescription
xrealThe x-coordinate of the center of the write field.
yrealThe y-coordinate of the center of the write field.
sizerealsize > 0The width of the write field in micrometers.
dotsintegerdots > 0The number of dots along each axis of the write field.
passesintegerpasses > 1The number of write fields to use for multi-passing.
shiftrealshift > 0The distance to displace each write field in micrometers.
rotationrealThe offset angle of the displacement direction.

Example:

MCHIP, 259.9, 255, 500, 1000000, 3, 100, 0

See example MCHIP.txt for a full example.

ARRAY

Defines an array of write fields. The signature of the statement is:

ARRAY, columns, rows, x, y, size, dots, ax, ay, bx, by

NameTypeConditionsDescription
columnsintegercolumns > 0The number of columns in the array.
rowsintegerrows > 0The number of rows in the array.
xrealThe x-coordinate of the center of the first write field.
yrealThe y-coordinate of the center of the first write field.
sizerealsize > 0The width of the write field in micrometers.
dotsintegerdots > 0The number of dots along each axis of the write field.
axrealThe x-component of the primary array vector.
ayrealThe y-component of the primary array vector.
bxrealThe x-component of the secondary array vector.
byrealThe y-component of the secondary array vector.

Example:

ARRAY, 2, 2, 259.9, 255, 500, 1000000, 200, 200, 0, 400

See example ARRAY.txt for a full example.

MARRAY

Defines an array of multi-pass write fields. The signature of the statement is:

MARRAY, columns, rows, x, y, size, dots, ax, ay, bx, by, passes, shift, rotation

NameTypeConditionsDescription
columnsintegercolumns > 0The number of columns in the array.
rowsintegerrows > 0The number of rows in the array.
xrealThe x-coordinate of the center of the first write field.
yrealThe y-coordinate of the center of the first write field.
sizerealsize > 0The width of the write field in micrometers.
dotsintegerdots > 0The number of dots along each axis of the write field.
axrealThe x-component of the primary array vector.
ayrealThe y-component of the primary array vector.
bxrealThe x-component of the secondary array vector.
byrealThe y-component of the secondary array vector.
passesintegerpasses > 1The number of write fields to use for multi-passing.
shiftrealshift > 0The distance to displace each write field in micrometers.
rotationrealThe offset angle of the displacement direction.

Example:

MARRAY, 2, 2, 259.9, 255, 500, 1000000, 200, 200, 0, 400, 3, 100, 0

See example MARRAY.txt for a full example.

SARRAY

Defines a grid of write fields where the write fields’ edges touch, starting from the lower left to upper right. The signature of the statement is:

SARRAY, columns, rows, x, y, size, dots

NameTypeConditionsDescription
columnsintegercolumns > 0The number of columns in the array.
rowsintegerrows > 0The number of rows in the array.
xrealThe x-coordinate of the center of the bottom left write field
yrealThe y-coordinate of the center of the bottom left write field
sizerealsize > 0The width of the write field in micrometers.
dotsintegerdots > 0The number of dots along each axis of the write field.

Example:

SARRAY, 2, 2, 259.9, 255, 500, 1000000

See example SARRAY.txt for a full example.

MSARRAY

Defines a grid of multi-pass write fields where the edges of the effective write fields touch, starting from the lower left to upper right. The signature of the statement is:

MSARRAY, columns, rows, x, y, size, dots, passes, shift, rotation

NameTypeConditionsDescription
columnsintegercolumns > 0The number of columns in the array.
rowsintegerrows > 0The number of rows in the array.
xrealThe x-coordinate of the center of the bottom left write field
yrealThe y-coordinate of the center of the bottom left write field
sizerealsize > 0The width of the write field in micrometers.
dotsintegerdots > 0The number of dots along each axis of the write field.
passesintegerpasses > 1The number of write fields to use for multi-passing.
shiftrealshift > 0The distance to displace each write field.
rotationrealThe offset angle of the displacement direction.

Example:

MSARRAY, 2, 2, 259.9, 255, 500, 1000000, 3, 100, 0

See example MSARRAY.txt for a full example.

Global Mark Statements


A global mark statement defines all the global markers of the chip.

Only one global mark statement is allowed per file.

A global mark statement can define 1-4 points.

MARK1

Defines a single global mark. The signature of the statement is:

MARK1, x, y

NameTypeConditionsDescription
xrealThe x-coordinate of the mark.
yrealThe y-coordinate of the mark.

Example:

MARK1, -40.1, -45

See example MARK1.txt for a full example.

MARK2

Defines two global marks. The signature of the statement is:

MARK2, x0, y0, x1, y1

NameTypeConditionsDescription
x0realThe x-coordinate of the first mark.
y0realThe y-coordinate of the first mark.
x1realThe x-coordinate of the second mark.
y1realThe y-coordinate of the second mark.

MARK3

Defines three global marks. The signature of the statement is:

MARK3, x0, y0, x1, y1, x2, y2

NameTypeConditionsDescription
x0realThe x-coordinate of the first mark.
y0realThe y-coordinate of the first mark.
x1realThe x-coordinate of the second mark.
y1realThe y-coordinate of the second mark.
x2realThe x-coordinate of the third mark.
y2realThe y-coordinate of the third mark.

MARK4

Defines four global marks. The signature of the statement is:

MARK3, x0, y0, x1, y1, x2, y2, x3, y3

NameTypeConditionsDescription
x0realThe x-coordinate of the first mark.
y0realThe y-coordinate of the first mark.
x1realThe x-coordinate of the second mark.
y1realThe y-coordinate of the second mark.
x2realThe x-coordinate of the third mark.
y2realThe y-coordinate of the third mark.
x3realThe x-coordinate of the fourth mark.
y3realThe y-coordinate of the fourth mark.

Example:

MARK4, -40.1, -45, -40.1, 555, 559.9, 555, 559.9, -45

See example MARK4.txt for a full example.

Local Mark Statement


A local mark statement defines the location of a local marker.

One marker is defined per statement and there is no limit on the number of statements.

MARKL

Defines a local marker. The signature of the statement is:

MARKL, x, y

NameTypeConditionsDescription
xrealThe x-coordinate of the mark.
yrealThe y-coordinate of the mark.

Example:

MARKL, 559.9, 555

See example MARKL.txt for a full example.

Examples


CHIP.txt

Create a write field with center in (259.9, 255), width 500 micrometers, and 1 million dots.

CHIP, 259.9, 255, 500, 1000000

MCHIP.txt

Create a multi-pass write field with center in (259.9, 255), width 500 micrometers, and 1 million dots. The write field will be written with three passes, a displacement of 100 micrometers, and no rotation offset.

MCHIP, 259.9, 255, 500, 1000000, 3, 100, 0

ARRAY.txt

Create a 2 x 2 array of write fields, with the first write field’s center in (259.9, 255). Each write field has a width of 500 micrometers and 1 million dots. Each column will be shifted by (200, 200) micrometers, and each row will be shifted by (0, 400) micrometers.

ARRAY, 2, 2, 259.9, 255, 500, 1000000, 200, 200, 0, 400

MARRAY.txt

Create a 2 x 2 array of multi-pass write fields, with the first write field’s center in (259.9, 255). Each write field has a width of 500 micrometers and 1 million dots. Each column will be shifted by (200, 200) micrometers, and each row will be shifted by (0, 400) micrometers.. Each write field will be written with three passes, a displacement of 100 micrometers, and no rotation.

MARRAY, 2, 2, 259.9, 255, 500, 1000000, 200, 200, 0, 400, 3, 100, 0

SARRAY.txt

Create a 2 x 2 array of write fields in a grid, starting from a write field in the lower left corner with center in (259.9, 255). Each write field has a width of 500 micrometers and 1 million dots.

SARRAY, 2, 2, 259.9, 255, 500, 1000000

MSARRAY.txt

Create a 2 x 2 array of multi-pass write fields in a grid, starting from a write field in the lower left corner with center in (259.9, 255). Each write field has a width of 500 micrometers and 1 million dots. Each write field will be written with three passes, a displacement of 100 micrometers, and no rotation.

MSARRAY, 2, 2, 259.9, 255, 500, 1000000, 3, 100, 0

MARK1.txt

Define a single global mark with coordinates (-40.1, -45).

CHIP, 259.9, 255, 500, 1000000
MARK1, -40.1, -45

MARK4.txt

Define four global marks with coordinates of (-40.1, -45), (-40.1, 555), (555.9, 555) and (559.9, -45), respectively.

CHIP, 259.9, 255, 500, 1000000
MARK4, -40.1, -45, -40.1, 555, 559.9, 555, 559.9, -45

MARKL.txt

Define two local markers with coordinates (-40.1, -45) and (559.9, 555), respectively, using two separate local mark statements.

CHIP, 259.9, 255, 500, 1000000
MARKL, -40.1, -45
MARKL, 559.9, 555

To download this documentation as a PDF, click here.