Electrical Wire

Picazzo contains a simple electrical wire template, which can be used to include simple electrical wires in your circuit.

ElectricalWireTemplate

class picazzo3.traces.electrical_wire.ElectricalWireTemplate(*args, **kwargs)
Parameters:

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

Views

Layout
Parameters:

grids_per_unit: optional

Number of grid cells per design unit

process: ProcessLayer, optional

process for the wire

purpose: PatternPurpose, optional

drawing purpose for the wire

units_per_grid: optional

Ratio of grid cell and design unit

view_name: str, optional

The name of the view

windows: List with type restriction, allowed types: <class ‘ipkiss3.pcell.trace.window.window._TraceWindow’>, optional

List of Trace Windows that know how to draw themselves relative to the shape of the Trace

width: float and number > 0, optional

Width of the electrical trace

layer: __Layer__, optional

pin_shape: Shape, optional

shape to be used for the pins

trace_template_for_ports: _TraceTemplate.Layout, optional

Trace template to be used for the ports. Default = this template

control_shape_layer: __Layer__, optional

layer on which the control shape is drawn

draw_control_shape: optional

draws the control shape on top of the waveguide

grid: float and number > 0, optional

design grid. Extracted by default from TECH.METRICS.GRID

unit: float and number > 0, optional

design unit. Extracted by default from TECH.METRICS.UNIT

Examples

"""
In a lot of simple cases you can just use the default wire template
that is specified in the technology file.
"""
from technologies import silicon_photonics
from ipkiss3.pcell.wiring import ElectricalWire

# This uses the default trace template defined in the tech file
wire = ElectricalWire()
layout = wire.Layout(shape=[(0, 0), (50, 50)])
layout.visualize()
../../../_images/index-1.png
"""
It's also possible to specify a custom process to draw the wire.
"""
from technologies import silicon_photonics
from ipkiss3.pcell.wiring import ElectricalWire
from picazzo3.traces.electrical_wire import ElectricalWireTemplate
from ipkiss.process import ProcessLayer

etpl = ElectricalWireTemplate()
my_process = ProcessLayer('My Special Process', 'MSP')
etpl_layout = etpl.Layout(process=my_process)

# This uses the default trace template defined in the tech file
wire = ElectricalWire(trace_template=etpl)
layout = wire.Layout(shape=[(0, 0), (50, 50)])
layout.visualize()
../../../_images/index-2.png
"""
If the default wire template is not sufficient, you can always create
your own template. In this example we show how to create a template with
a non-default width.
"""
from technologies import silicon_photonics
from ipkiss3.pcell.wiring import ElectricalWire
from picazzo3.traces.electrical_wire import ElectricalWireTemplate

etpl = ElectricalWireTemplate()
etpl_layout = etpl.Layout(width=4.0)

# This uses the default trace template defined in the tech file
wire = ElectricalWire(trace_template=etpl)
layout = wire.Layout(shape=[(0, 0), (50, 50)])
layout.visualize()
../../../_images/index-3.png