Ports Reference
Ports are locations on the layout where connections are made. Each port has a name and a location. In IPKISS there are optical ports for the connection of optical waveguides or fibers or electrical ports for the connection with electrical wires.
class MyPCell(i3.PCell):
class Layout(i3.LayoutView):
def _generate_ports(self, ports):
ports += i3.OpticalPort(name="in", position=(0.0,0.0), angle=180.0)
ports += i3.OpticalPort(name="out1", position=(8.0,3.0), angle=0.0)
ports += i3.OpticalPort(name="out2", position=(8.0,-3.0), angle=0.0)
return ports
Optical Ports
In-plane Port in the Optical Domain |
|
Out-of-plane Port in the Optical Domain |
Property type for storing an OpticalPort |
Electrical Ports
Port in the electrical domain. |
Property type for storing an ElectricalPort |
Create Ports
When creating a circuit, you can use i3.expose_ports
to easily expose the ports of the instances.
class MyPCell(i3.PCell):
class Layout(i3.LayoutView):
def _generate_instances(self, insts):
insts += i3.SRef(reference=self.wg, name='wg1')
insts += i3.SRef(reference=self.wg, name='wg2', position=(30, 0))
return insts
def _generate_ports(self, ports):
ports += i3.expose_ports(self.instances, {
'wg1:in': 'in',
'wg2:out': 'out',
})
return ports
Expose ports of a list of instances by copying and renaming the instance-ports specified in the port name map. |