Metal Templates, Routes, & Bondpads¶
Metal Template¶
-
class
picwriter.components.
MetalTemplate
(bend_radius=0, width=20.0, clad_width=20.0, resist=u'+', fab=u'ETCH', metal_layer=11, metal_datatype=0, clad_layer=12, clad_datatype=0)¶ Template for electrical wires that contains some standard information about the fabrication process and metal wire.
- Keyword Args:
- bend_radius (float): Radius of curvature for bends in the metal route. Defaults to zero.
- width (float): Width of the metal route as shown on the mask. Defaults to 20.
- clad_width (float): Width of the cladding (region next to route, mainly used for positive-type photoresists + etching, or negative-type and liftoff). Defaults to 20.
- resist (string): Must be either ‘+’ or ‘-‘. Specifies the type of photoresist used. Defaults to ‘+’.
- fab (string): If ‘ETCH’, then keeps resist as is, otherwise changes it from ‘+’ to ‘-‘ (or vice versa). This is mainly used to reverse the type of mask used if the fabrication type is ‘LIFTOFF’. Defaults to ‘ETCH’.
- metal_layer (int): Layer type used for metal route. Defaults to 11.
- metal_datatype (int): Data type used for metal route. Defaults to 0.
- clad_layer (int): Layer type used for cladding. Defaults to 12.
- clad_datatype (int): Data type used for cladding. Defaults to 0.
Metal Routes¶
-
class
picwriter.components.
MetalRoute
(trace, mt)¶ Standard MetalRoute Cell class.
- Args:
- trace (list): List of coordinates used to generate the route (such as ‘[(x1,y1), (x2,y2), …]’). For now, all trace points must specify 90 degree turns.
- mt (MetalTemplate): MetalTemplate object
- Members:
- portlist (dict): Dictionary with the relevant port information
- Portlist format:
- portlist[‘input’] = {‘port’: (x1,y1), ‘direction’: ‘dir1’}
- portlist[‘output’] = {‘port’: (x2, y2), ‘direction’: ‘dir2’}
Where in the above (x1,y1) are the first elements of ‘trace’, (x2, y2) are the last elements of ‘trace’, and ‘dir1’, ‘dir2’ are of type ‘NORTH’, ‘WEST’, ‘SOUTH’, ‘EAST’.
Bondpads¶
-
class
picwriter.components.
Bondpad
(mt, length=150, width=100, port=(0, 0), direction=u'EAST')¶ Standard Bondpad Cell class.
- Args:
- mt (MetalTemplate): WaveguideTemplate object
- Keyword Args:
- length (float): Length of the bondpad. Defaults to 150
- width (float): Width of the bondpad. Defaults to 100
- port (tuple): Cartesian coordinate of the input port. Defaults to (0,0).
- direction (string): Direction that the taper will point towards, must be of type ‘NORTH’, ‘WEST’, ‘SOUTH’, ‘EAST’. Defaults to ‘EAST’.
- Members:
- portlist (dict): Dictionary with the relevant port information
- Portlist format:
- portlist[‘output’] = {‘port’: (x1, y1), ‘direction’: ‘dir’}
Where in the above (x1,y1) is the same as the ‘port’ input, and ‘dir’ is the same as ‘direction’ input of type ‘NORTH’, ‘WEST’, ‘SOUTH’, ‘EAST’.
The above was generated with:
top = gdspy.Cell("top")
mt = MetalTemplate(bend_radius=0, resist='+', fab="ETCH")
mt1=MetalRoute([(0,0), (0,250), (100,250), (100,500), (400,500)], mt)
bp1 = Bondpad(mt, **mt1.portlist["output"])
bp2 = Bondpad(mt, **mt1.portlist["input"])
tk.add(top, bp1)
tk.add(top, bp2)
tk.add(top, mt1)