Coverage for qpdk / cells / launcher.py: 100%
19 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-14 10:27 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-14 10:27 +0000
1"""Launcher component for RF applications.
3This module provides a launcher component for RF wirebonding and probe testing.
4The launcher consists of a straight section connected to a tapered section,
5transitioning from a large cross-section suitable for probing to a smaller
6cross-section for circuit integration.
7"""
9from __future__ import annotations
11from functools import partial
13import gdsfactory as gf
14from gdsfactory.component import Component
15from gdsfactory.components import straight
16from gdsfactory.typings import CrossSectionSpec
18from qpdk.cells.waveguides import taper_cross_section
19from qpdk.tech import LAYER, coplanar_waveguide, launcher_cross_section_big
21LAUNCHER_CROSS_SECTION_BIG = launcher_cross_section_big
22LAUNCHER_CROSS_SECTION_SMALL = partial(coplanar_waveguide, etch_layer=LAYER.M1_ETCH)
25@gf.cell
26def launcher(
27 straight_length: float = 200.0,
28 taper_length: float = 100.0,
29 cross_section_big: CrossSectionSpec = LAUNCHER_CROSS_SECTION_BIG,
30 cross_section_small: CrossSectionSpec = "cpw",
31) -> Component:
32 """Generate an RF launcher pad for wirebonding or probe testing.
34 Creates a launcher component consisting of a straight section with large
35 cross-section connected to a tapered transition down to a smaller cross-section.
36 This design facilitates RF signal access through probes or wirebonds while
37 maintaining good impedance matching.
39 The default dimensions are taken from :cite:`tuokkolaMethodsAchieveNearmillisecond2025`.
41 Args:
42 straight_length: Length of the straight, wirebond landing area, section in µm.
43 taper_length: Length of the taper section in µm.
44 cross_section_big: Cross-section specification for the large end
45 of the launcher (probe/wirebond interface).
46 cross_section_small: Cross-section specification for the small end
47 of the launcher (circuit interface).
49 Returns:
50 Component: A gdsfactory component containing the complete launcher
51 geometry with one output port ("o1") at the small end.
52 """
53 c = Component()
55 # Add the straight section (large cross-section for probe access)
56 straight_ref = c << straight(
57 length=straight_length, cross_section=cross_section_big
58 )
60 # Add the tapered transition section
61 taper_ref = c << taper_cross_section(
62 length=taper_length,
63 cross_section1=cross_section_big,
64 cross_section2=cross_section_small,
65 linear=True,
66 )
68 # Connect the taper to the straight section
69 taper_ref.connect("o1", straight_ref.ports["o2"])
71 # Add output port at the small end for circuit connection
72 c.add_port(port=taper_ref.ports["o2"], name="o1", cross_section=cross_section_small)
74 # Add a port at the large end for reference and simulation purposes
75 c.add_port(
76 port=straight_ref.ports["o1"],
77 name="waveport",
78 cross_section=cross_section_big,
79 )
81 return c
84if __name__ == "__main__":
85 # Example usage and testing
86 from qpdk import PDK
88 PDK.activate()
90 # Create and display a launcher with default parameters
91 c = launcher()
92 c.show()