1. Introduction

The Raith_GDSII toolbox provides a simple, versatile, and scriptable means of generating patterns for Raith electron-beam lithography (EBL) and focused ion beam (FIB) tools using MATLAB. It can also be used to generate standard GDSII files for photomask fabrication or direct-write laser lithography applications.

Although relatively simple structures may be generated directly within the Raith NanoSuite software via the GDSII editing tools in the Design panel, this interface becomes cumbersome for complicated structures comprising many elements, or for arrays of structures with subtle variations in geometry. GDSII files can be scripted using third-party libraries,[1] but beam dose information and Raith-specific elements (e.g., curved elements such as arcs, circles, ellipses; FBMS paths and circles) are generally not supported.[2] Scripted generation of patterns using the ASCII-based .asc or .elm formats is possible,[3] but these files must be manually loaded into a GDSII hierarchy file in the Raith software; the GDSII file is backed up after each .asc/.elm file is added to the library, which can yield unacceptably long load-times if there are many structures to add.

To circumvent these issues, the Raith_GDSII toolbox may be used to generate both the GDSII hierarchy and positionlist files directly within MATLAB, with full support for Raith curved and FBMS elements. The relevant objects may be manipulated using standard MATLAB functionality, making scripting easy. Furthermore, patterns may be plotted using the standard Raith dose factor colourmap—from individual low-level elements to entire positionlists—to aid in visualisation and error-checking during the design process.

1.1. The Raith_GDSII classes

There are four MATLAB classes in the Raith_GDSII toolbox: Raith_element, Raith_structure, Raith_library, and Raith_positionlist. The first three classes reflect the structure of the GDSII stream format and are used to generate the GDSII library containing the structures referenced in the positionlist:

Raith_element

Used to define unnamed, low-level GDSII pattern elements. The following element types are supported:

polygon:

A closed, filled polygon. 'polygon' elements are fractured into trapezoids by the Raith NanoSuite software before writing.

path:

A path of connected line segments. 'path' elements may be either single-pixel lines or have a non-zero width.

dot:

A single-pixel dot, or series thereof.

arc:

A segment of a circular or elliptical path (Raith curved element). 'arc' elements may be single-pixel lines, have a non-zero width, or be filled (i.e., a circular or elliptical segment).

circle:

A circle or disc (Raith curved element). 'circle' elements may be single-pixel lines, have a non-zero width, or be filled (i.e., a disc).

ellipse:

An ellipse or elliptical disc (Raith curved element). 'ellipse' elements may be single-pixel lines, have a non-zero width, or be filled (i.e., an elliptical disc).

text:

A line of text rendered as simple polygons.[4]

fbmspath:

A path of connected line segments and/or circular arcs, exposed using the Raith “fixed beam moving stage” (FBMS) mode, also known as traxx. 'fbmspath' elements may be either single-pixel lines or have a non-zero width.

fbmscircle:

A circle exposed using FBMS mode. 'fbmscircle' elements may be either single-pixel lines or have a non-zero width.

sref:

A structure reference. 'sref' elements refer to named Raith_structure objects, and may optionally apply transformations (magnification, rotation, reflection across the u axis).[5]

aref:

An array reference. 'aref' elements generate a rectangular array of named Raith_structure objects, and may optionally apply transformations (magnification, rotation, reflection across the u axis).[5] [6]

Elements of type 'arc', 'circle', and 'ellipse' are implemented as Raith curved elements: exposure is via a curved beam path which in general consists of concentric ellipses, rather than being fractured into trapezoids.

Raith_structure

Used to define named structures, comprising collections of Raith_element objects.

Raith_library

Used to define a GDSII library, comprising a collection of uniquely named Raith_structure objects, and to write a Raith-readable GDSII hierarchy (.csf) file. Exporting to standard GDSII format (.gds), readable by non-Raith GDSII viewers/editors, is also supported.

Raith_positionlist

Used to define a positionlist, comprising chip-level references to Raith_structure objects in a Raith_library, and to write a Raith-readable positionlist (.pls) file.

1.2. Software use and bug reporting

Use of the Raith_GDSII toolbox is subject to the terms of the Mozilla Public License, v. 2.0.

The latest version of the Raith_GDSII toolbox may be downloaded from its GitHub repository.

Please send comments, bug reports, and future update suggestions to Aaron Hryciw at ahryciw@ualberta.ca.

1.3. Citing Raith_GDSII

Please cite the Raith_GDSII MATLAB toolbox in any publication for which you found it useful by including the text “The Raith_GDSII MATLAB toolbox is maintained at the University of Alberta nanoFAB Centre; it is available at github.com/ahryciw/Raith_GDSII.” in a footnote or endnote, as appropriate.

1.4. Installation

To install the Raith_GDSII toolbox, simply place the four Raith_GDSII class definitions in the src directory (Raith_element.m, Raith_structure.m, Raith_library.m, and Raith_positionlist.m) in a folder on your MATLAB path. A full description of the these classes is contained in §§ 36. To get started, however, the following section outlines a typical (albeit brief) workflow.