Source code for gdsfactory.components.pad_gsg

"""High speed GSG pads."""

from __future__ import annotations

from functools import partial

import gdsfactory as gf
from gdsfactory.components.pad import pad as pad_function
from gdsfactory.components.rectangle import rectangle
from gdsfactory.typings import ComponentSpec, Float2, LayerSpec

rectangle_m3 = partial(rectangle, layer="MTOP")


[docs] @gf.cell def pad_gsg_short( via_stack: ComponentSpec = rectangle_m3, size: Float2 = (22, 7), layer_metal: LayerSpec = "MTOP", metal_spacing: float = 5.0, short: bool = True, pad: ComponentSpec = pad_function, pad_spacing: float = 150, ) -> gf.Component: """Returns high speed GSG pads for calibrating the RF probes. Args: via_stack: where the RF pads connect to. size: for the via_stack. layer_metal: for the short. metal_spacing: in um. short: if False returns an open. pad: function for pad. pad_spacing: in um. """ c = gf.Component() via = gf.get_component(via_stack, size=size) gnd_top = c << via if short: short = c << rectangle(size=size, layer=layer_metal) gnd_bot = c << via gnd_bot.ymax = via.ymin gnd_top.ymin = via.ymax gnd_top.movex(-metal_spacing) gnd_bot.movex(-metal_spacing) pads = c << gf.components.array(pad, columns=1, rows=3, spacing=(0, pad_spacing)) pads.xmin = via.xmax + 50 pads.y = 0 c << gf.routing.route_quad( gnd_bot.ports["e4"], pads.ports["e1_1_1"], layer=layer_metal ) c << gf.routing.route_quad( gnd_top.ports["e2"], pads.ports["e1_3_1"], layer=layer_metal ) c << gf.routing.route_quad(via.ports["e3"], pads.ports["e1_2_1"], layer=layer_metal) return c
pad_gsg_open = partial(pad_gsg_short, short=False) if __name__ == "__main__": # c = pad_array_double() c = pad_gsg_short() # c = pad_gsg_open() c.show(show_ports=True)