Source code for gdsfactory.components.add_fiducials
from __future__ import annotations
import warnings
import gdsfactory as gf
from gdsfactory.component import Component
from gdsfactory.components.pad import pad_array
from gdsfactory.typings import ComponentSpec, Coordinates, Float2
[docs]
@gf.cell
def add_fiducials(
component: ComponentSpec = pad_array,
gap: float = 50,
left: ComponentSpec | None = "cross",
right: ComponentSpec | None = "cross",
top: ComponentSpec | None = None,
bottom: ComponentSpec | None = None,
offset: Float2 = (0, 0),
**kwargs,
) -> Component:
"""Return component with fiducials.
Args:
component: component to add to the new component.
gap: from component to fiducial edge.
left: optional left fiducial.
right: optional right fiducial.
top: optional top fiducial.
bottom: optional bottom fiducial.
offset: component offset coordinate (x, y).
kwargs: fiducial settings.
"""
warnings.warn(
"add_fiducials is deprecated and will be removed it soon. Copy it into your code if you want to keep using it",
DeprecationWarning,
)
c = Component()
component = gf.get_component(component, **kwargs)
r = c << component
r.move(offset)
if left:
x1 = c << gf.get_component(left)
x1.xmax = r.xmin - gap
c.add_ports(x1.ports, prefix="l")
if right:
x2 = c << gf.get_component(right)
x2.xmin = r.xmax + gap
c.add_ports(x2.ports, prefix="r")
if top:
y1 = c << gf.get_component(top)
y1.ymin = r.ymax + gap
c.add_ports(y1.ports, prefix="t")
if bottom:
y2 = c << gf.get_component(bottom)
y2.ymax = r.ymin - gap
c.add_ports(y2.ports, prefix="b")
c.add_ports(r.ports)
c.copy_child_info(component)
return c
[docs]
@gf.cell
def add_fiducials_offsets(
component: ComponentSpec = pad_array,
fiducial: ComponentSpec = "cross",
offsets: Coordinates = ((0, 100), (0, -100)),
) -> Component:
"""Returns new component with fiducials from a list of offsets.
Args:
component: add reference to component to the new Component.
fiducial: function to return fiducial.
offsets: list of offsets.
"""
warnings.warn(
"add_fiducials_offsets is deprecated and will be removed it soon. Copy it into your code if you want to keep using it",
DeprecationWarning,
)
c = Component()
component = gf.get_component(component)
fiducial = gf.get_component(fiducial)
r = c << component
c.add_ports(r.ports)
c.copy_child_info(component)
for offset in offsets:
f = c << fiducial
f.move(offset)
return c
if __name__ == "__main__":
from gdsfactory.generic_tech import get_generic_pdk
PDK = get_generic_pdk()
PDK.activate()
# c = add_fiducials(top='cross')
c = add_fiducials_offsets()
c.show(show_ports=True)