6. The Raith_positionlist class

Class overview: Raith_positionlist

Properties (public)

Raith_positionlist.library

Raith_library object containing all structures

Raith_positionlist.csf_path

Path of GDSII library on Raith computer

Raith_positionlist.WF

Writefield dimensions

Raith_positionlist.chipUV

Size of rectangular chip (specimen)

Raith_positionlist.poslist

Struture array of positionlist entries

Methods

Raith_positionlist.append()

Append Raith_structure object to positionlist

Raith_positionlist.plot()

Plot entire positionlist as filled polygons

Raith_positionlist.plotedges()

Plot entire positionlist as unfilled polygons

Raith_positionlist.plotWA()

Plot working areas of all structures in positionlist

Raith_positionlist.plotWF()

Plot first writefields of all structures in positionlist

Raith_positionlist.centre()

Centre current positionlist entries on chip

Raith_positionlist.shift()

Shift current positionlist entries on chip

Raith_positionlist.writepls()

Output Raith positionlist (.pls) file

class Raith_positionlist

A Raith_positionlist object defines a positionlist: a sequential list of instructions to write a structure defined in a GDSII hierarchy at a certain position on the chip. The Raith_positionlist.writepls() method outputs a Raith positionlist (.pls) file which can be used by the Raith NanoSuite software without any additional modification. As an aid to chip layout, the structures, working areas, and writefields of the entire positionlist can be plotted.

6.1. Properties

Raith_positionlist.library

Raith_library object containing all structures to be referenced in positionlist.

Raith_positionlist.csf_path

Full path of GDSII hierarchy (.csf/.gds) file, as found on the Raith tool computer.

Raith_positionlist.WF

Writefield size; 1 × 2 vector [sizeu sizev] (μm).

Raith_positionlist.chipUV

Size of rectangular chip; 1 × 2 vector [sizeu sizev] (mm).

Raith_positionlist.poslist

Structure array of positionlist entries, containing fields name, uv_c, DF, WA, and layers; see Raith_positionlist.append() for a description of these fields.

6.2. Constructor

Constructor:

P=Raith_positionlist(library,csf_path,WF,chipUV)

Arguments:
  • libraryRaith_library object containing all structures to be placed in positionlist

  • csf_path – Full path of GDSII hierarchy file, as found on Raith tool computer (character array)

  • WF – Writefield size; 1 × 2 vector [sizeu sizev] (μm)

  • chipUV – Size of rectangular chip; 1 × 2 vector [sizeu sizev] (mm)

Note

By default, all properties are checked for correctness (typing, allowed values, size) before being assigned, whether the Raith_positionlist object is created with a constructor or these four properties are amended individually.

Example

Given the Raith_structure object S defined in §4.2:

% Racetrack resonator defined in Raith_structure object S
lbl=Raith_structure('radius_label',Raith_element('text',0,[0 0],2,0,[1 0],'3 um',1.5));
L=Raith_library('resonators',[S lbl]);
% Postionlist for a 5 mm x 5 mm chip, 100 µm writefield
P=Raith_positionlist(L,'F:\Raith\resonators.csf',[100 100],[5 5]);

6.3. Methods

Raith_positionlist.append(name, uv_c, DF, WA[, layers])

Append Raith_structure object to positionlist.

Arguments:
  • name – Character array specifying Raith_structure object name (as found in GDSII library)

  • uv_c – Centre of first writefield of structure; 1 × 2 vector [uc vc] (mm)

  • DF – Overall dose factor scaling applied to entire structure

  • WA – Working area of structure; 1 × 4 vector [umin vmin umax vmax] (µm)

  • layers – Vector of layers to expose [optional]; defaults to all layers present in structure elements

Returns:

None

Note

The units of the arguments reflect how they are stored in the positionlist: uv_c is in mm and WA is in μm. The working area coordinates are defined with respect to the origin of the Raith_structure object. As in the Raith NanoSuite software, the bottom-left corners of the working area and the writefield are aligned; as such, uv_c specifies a point half a writefield width above and to the right of the bottom-left corner of the working area. One design paradigm which simplifies the positioning of structures contained in a single writefield is to define them centred on the origin, then specify a working area—also centred on the origin—which is the same size as the writefield (see following Example). In this case, uv_c will correspond to the origin of the structure.

Example

Given the Raith_library and Raith_positionlist objects L and P, respectively, defined in the above Constructor section:

% Write a racetrack resonator and label near the top-left corner of the chip (100 µm WF)
P.append('racetrack',[1 4],1,[-50 -50 50 50]);
P.append('radius_label',[1 3.996],1,[-50 -50 50 50]);
Raith_positionlist.plot()

Plot all structures in positionlist with default Raith dose factor colouring, with chip outline. Elements are displayed as filled polygons, where applicable ('polygon'; 'path' with non-zero data.w; 'arc', 'circle', and 'ellipse' with empty data.w; 'text'). All elements in the structure are plotted, regardless of data.layer value. The full hierarchy of structures including 'sref' or 'aref' elements is displayed if all structures being referenced are present in the library contained in the Raith_positionlist object.

Arguments:

None

Returns:

None

Note

Calling Raith_positionlist.plot() sets the axis scaling to equal; all plotted objects therefore appear with correct, uniform scaling. The axes are in units of µm.

Example

Given the Raith_positionlist object P defined in the above Raith_positionlist.append() Example:

P.plot;  % Structures are too small to see at this scale
axis([990 1010 3990 4010]);  % Zoom to structures
_images/RP_plot.svg

Fig. 6.1 Positionlist plotted using the Raith_positionlist.plot() method

Raith_positionlist.plotedges()

Plot outlines of all structures in positionlist with default Raith dose factor colouring, with chip outline. Elements are displayed as unfilled polygons, where applicable ('polygon'; 'path' with non-zero data.w; 'arc', 'circle', and 'ellipse' with empty data.w; 'text'). All elements in the structure are plotted, regardless of data.layer value. The full hierarchy of structures including 'sref' or 'aref' elements is displayed if all structures being referenced are present in the library contained in the Raith_positionlist object.

Arguments:

None

Returns:

None

Note

Calling Raith_positionlist.plotedges() sets the axis scaling to equal; all plotted objects therefore appear with correct, uniform scaling. The axes are in units of µm.

Example

Given the Raith_positionlist object P defined in the above Raith_positionlist.append() Example:

P.plotedges;  % Structures are too small to see at this scale
axis([990 1010 3990 4010]);  % Zoom to structures
_images/RP_plotedges.svg

Fig. 6.2 Positionlist plotted using the Raith_positionlist.plotedges() method

Raith_positionlist.plotWA()

Plot working area of all structures in positionlist in dotted blue lines, with chip outline.

Arguments:

None

Returns:

None

Note

Calling Raith_positionlist.plotWA() sets the axis scaling to equal; all working areas therefore appear with correct, uniform scaling.

Example

To illustrate the alignment of working areas and writefields, this example specifies working areas which are smaller than the writefield. Assume the Raith_library and Raith_positionlist objects L and P, respectively, are defined as in §6.2; to preserve the relative alignment of the racetrack and the label, uv_c must be changed to accommodate the difference in WA:

P.append('racetrack',[1 4],1,[-10 -10 20 10]);
P.append('radius_label',[0.99 4.001],1,[-20 -5 10 5]);
P.plot; % Plot structures
P.plotWA; % Plot working areas
axis([935 985 3945 3975]); % Zoom to structures
_images/RP_plotWA.svg

Fig. 6.3 Working areas in positionlist plotted using the Raith_positionlist.plotWA() method

Raith_positionlist.plotWF()

Plot writefields of all structures in positionlist in dotted green lines, with chip outline; writefield centres are marked with a + sign.

Arguments:

None

Returns:

None

Note

Calling Raith_positionlist.plotWF() sets the axis scaling to equal; all writefields therefore appear with correct, uniform scaling.

Example

Given all objects defined in the above Raith_positionlist.plotWA() Example:

P.plot;  % Plot structures
P.plotWA;  % Plot working areas
P.plotWF;  % Plot writefields
axis([940 1050 3950 4055]);  % Zoom to structures
_images/RP_plotWF.svg

Fig. 6.4 Working areas in positionlist plotted using the Raith_positionlist.plotWA() method

Raith_positionlist.centre([mbyn])

Centre current positionlist entries on the chip, preserving relative spacing, with the option of matrix-copying them.

Arguments:

mbyn – Number of rows and columns of the matrix of sub-chips [optional]; 1 × 2 vector [m n]

Returns:

None

Note

If called with no argument, the current positionlist entries are shifted such that the overall pattern (as defined by the working areas) are centred both vertically and horizontally on the chip. If called with the optional mbyn argument, the chip is divided into an m-by-n matrix of equal-sized rectangular sub-chips, and the positionlist entries are centred as described above in each sub-chip. In either case, the poslist property is overwritten; there is no built-in way of undoing this operation.

Example

Given the Raith_positionlist object defined in the above Raith_positionlist.plotWA() Example:

P.plotWF;  % Before centring
P.centre;
P.plotWF;  % After centring
P.centre([4 5]);
P.plotWF;  % After matrix-copying
_images/RP_centre.svg

Fig. 6.5 Position of writefields (a) before centring, (b) after issuing P.centre, and (c) after issuing P.centre([4 5])

Raith_positionlist.shift(uv_sh)

Shift current positionlist entries on the chip, preserving relative spacing.

Arguments:

uv_sh – Relative shift of the new positionlist entries with respect to their current positions (mm); 1 × 2 vector [ush vsh] (mm)

Returns:

None

Note

The poslist property is overwritten when Raith_positionlist.shift() is invoked; there is no built-in way of undoing this operation.

Example

Given the Raith_positionlist object defined in the above Raith_positionlist.plotWA() Example:

P.plotWF; % Before shifting
P.shift([1 -2]);
P.plotWF; % After shifting
_images/RP_shift.svg

Fig. 6.6 Position of writefields (a) before shifting, (b) after issuing P.shift([1 -2])

Raith_positionlist.writepls([filepath])

Write positionlist to file.

Arguments:

filepath – Full path of positionlist file to be written, including .pls extension [optional]

Returns:

None

Note

If called without argument, a Raith_library.name.pls file is written to the current directory.

Example

Given the Raith_positionlist object defined in the above Raith_positionlist.plotWA() Example:

>> P.writepls;

Writing /Users/Public/Documents/resonators.pls...
Positionlist resonators.pls successfully written.