IoColumn¶
i3.IoColumn
is used to place components on top of each other and connect them to some input/output (I/O) on the side
(typically grating couplers or edge couplers). The adapter decides how devices are routed and which I/O to use.
The most frequently used adapter is the IoFibcoup adapter.
After instantiating an i3.IoColumn
, use the methods add
,
add_align
, add_blocktitle
and so on, to add components to the column. Those methods are documented below.
- class ipkiss3.all.IoColumn(*args, **kwargs)¶
PCell used to place devices or circuits on top of each other and connect them to grating couplers on the side.
- Parameters
- adapter: IoBlockAdapter
The Adapter PCell class that will be used to generate the blocks when a component is added to the column.
- max_n_o_lines: ( tuple2 and number > 0 ), *None allowed*
Maximum number of lines that this IoColumn may contain. To check whether ‘quota’ has been exceeded, use is_full(). If set to ‘None’, no maximum is set.
- blocks: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’> and Block
The sub-blocks
- name: String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters
The unique name of the pcell
Views
- Layout = <class 'ipkiss3.pcell.blocks.iocolumn.IoColumn.Layout'>¶
- add(contents, absolute_offset=None, relative_offset=None, adapter=None, transformation=None, **adapter_kwargs)¶
add
will take a PCell objectcontents
, and wrap it in theadapter
class to create anIoBlock
that will then be added to theIoColumn
.- Parameters
- contents: PCell object or PCell View object
The PCell object that will be wrapped by the adapter class to create a block
- absolute_offset: Coord2, (x,y) tuple or ‘None’
The absolute offset of the contents relative to the x-center of the column, and the y-position on the West side. If None is specified (default), the contents is aligned such that the ports are centered and the first West port is y-aligned with the current West y-position of the column.
- relative_offset: Coord2, (x,y) tuple or ‘None’
The relative offset to the position where the contents were placed with absolute_offset.
- adapter: PCell class of the type IoBlockAdapter
This class will be used when creating new blocks and takes care of the routing + I/O. The contents will be passed as a parameter to the adapter. If
None
is specified, the default adapter class of the IoColumn will be used (which is defined in the technology).- transformation: Transformation object
Transformation that will be applied to the contents when it is added to the adapter. By default, it will not be transformed.
- **adapter_kwargs:
All other keyword arguments will be passed on to the adapter when it is created. This includes PCell parameters such as
trace_template
, but also Layout parameters such asoffset
. the actual set of parameters depends on the type of adapter.
- add_blocktitle(text, center_clearout=(0.0, 0.0), edge_clearout=(0.0, 0.0), process=<Process WG>, purpose=<Purpose DFTXT>, name=None)¶
Periodically places text using the available space (uses PolygonText).
- add_align(west_east_offset=0.0, trace_template=<WireWaveguideTemplate PCellTemplate 'WIRE_WG_TEMPLATE'>, adapter=None)¶
Adds an alignment waveguide.
- add_emptyline_east(N_lines=1)¶
Adds spacers at the east side.
- add_emptyline_west(N_lines=1)¶
Adds spacers at the west side.
- add_emptyline(N_lines=(1, 1))¶
Adds spacers to the west (N_lines[0]) and to the east (N_lines[1]).
- straighten()¶
Add spacers to ensure that the block is straight.