6. The Raith_positionlist class
Class overview: Raith_positionlist
Properties (public) |
|
---|---|
|
|
Path of GDSII library on Raith computer |
|
Writefield dimensions |
|
Size of rectangular chip (specimen) |
|
Struture array of positionlist entries |
Methods |
|
---|---|
Append |
|
Plot entire positionlist as filled polygons |
|
Plot entire positionlist as unfilled polygons |
|
Plot working areas of all structures in positionlist |
|
Plot first writefields of all structures in positionlist |
|
Centre current positionlist entries on chip |
|
Shift current positionlist entries on chip |
|
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:
library –
Raith_library
object containing all structures to be placed in positionlistcsf_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
andRaith_positionlist
objectsL
andP
, 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-zerodata.w
;'arc'
,'circle'
, and'ellipse'
with emptydata.w
;'text'
). All elements in the structure are plotted, regardless ofdata.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 theRaith_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
objectP
defined in the aboveRaith_positionlist.append()
Example:P.plot; % Structures are too small to see at this scale axis([990 1010 3990 4010]); % Zoom to structures
- 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-zerodata.w
;'arc'
,'circle'
, and'ellipse'
with emptydata.w
;'text'
). All elements in the structure are plotted, regardless ofdata.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 theRaith_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
objectP
defined in the aboveRaith_positionlist.append()
Example:P.plotedges; % Structures are too small to see at this scale axis([990 1010 3990 4010]); % Zoom to structures
- 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
andRaith_positionlist
objectsL
andP
, 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
- 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
- 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 aboveRaith_positionlist.plotWA()
Example:P.plotWF; % Before centring P.centre; P.plotWF; % After centring P.centre([4 5]); P.plotWF; % After matrix-copying
- 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 whenRaith_positionlist.shift()
is invoked; there is no built-in way of undoing this operation.Example
Given the
Raith_positionlist
object defined in the aboveRaith_positionlist.plotWA()
Example:P.plotWF; % Before shifting P.shift([1 -2]); P.plotWF; % After shifting
- 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 aboveRaith_positionlist.plotWA()
Example:>> P.writepls; Writing /Users/Public/Documents/resonators.pls... Positionlist resonators.pls successfully written.