diff --git a/_modules/kqcircuits/chips/chip.html b/_modules/kqcircuits/chips/chip.html index 48a9e8e98..6e0f19ffe 100644 --- a/_modules/kqcircuits/chips/chip.html +++ b/_modules/kqcircuits/chips/chip.html @@ -943,14 +943,13 @@
from kqcircuits.test_structures.stripes_test import StripesTest
from kqcircuits.util.groundgrid import make_grid
from kqcircuits.elements.tsvs.tsv import Tsv
-from kqcircuits.elements.flip_chip_connectors.flip_chip_connector_dc import FlipChipConnectorDc
-from kqcircuits.elements.flip_chip_connectors.flip_chip_connector_rf import FlipChipConnectorRf
+from kqcircuits.elements.flip_chip_connectors.flip_chip_connector import FlipChipConnector
[docs]
@add_parameters_from(Tsv, "tsv_type")
-@add_parameters_from(FlipChipConnectorRf, "connector_type")
+@add_parameters_from(FlipChipConnector, "bump_type")
@add_parameter(ChipFrame, "box", hidden=True)
@add_parameters_from(
ChipFrame,
@@ -1359,6 +1358,11 @@ Source code for kqcircuits.chips.chip
return self.make_grid_locations(bump_box, delta_x=self.bump_grid_spacing, delta_y=self.bump_grid_spacing)
+ @classmethod
+ def _get_ground_bump_element(cls):
+ """Return the element which will be used for the ground bumps"""
+ return FlipChipConnector
+
def _produce_ground_bumps(self, faces=[0, 1]): # pylint: disable=dangerous-default-value
"""Produces a grid of indium bumps between given faces.
@@ -1373,7 +1377,7 @@ Source code for kqcircuits.chips.chip
existing_bump_count = existing_bump_region.merged().count()
# Specify bump element, filter regions, and locations
- bump = self.add_element(FlipChipConnectorDc, face_ids=[self.face_ids[face] for face in faces])
+ bump = self.add_element(self._get_ground_bump_element(), face_ids=[self.face_ids[face] for face in faces])
shape_layers = [("underbump_metallization", face) for face in faces]
filter_regions = self.get_filter_regions(
[("ground_grid_avoidance", face, 0) for face in faces]
diff --git a/_modules/kqcircuits/elements/flip_chip_connectors/flip_chip_connector.html b/_modules/kqcircuits/elements/flip_chip_connectors/flip_chip_connector.html
index e5c43f906..04e06ce89 100644
--- a/_modules/kqcircuits/elements/flip_chip_connectors/flip_chip_connector.html
+++ b/_modules/kqcircuits/elements/flip_chip_connectors/flip_chip_connector.html
@@ -920,9 +920,9 @@ Source code for kqcircuits.elements.flip_chip_connectors.flip_chip_connector
# and organizations (meetiqm.com/iqm-organization-contributor-license-agreement).
from kqcircuits.elements.element import Element
-from kqcircuits.util.geometry_helper import circle_polygon
from kqcircuits.util.parameters import Param, pdt
-from kqcircuits.defaults import default_bump_parameters
+from kqcircuits.defaults import default_bump_type, default_bump_parameters
+from kqcircuits.elements.flip_chip_connectors import connector_type_choices
@@ -934,25 +934,19 @@ Source code for kqcircuits.elements.flip_chip_connectors.flip_chip_connector
Origin is at the geometric center.
"""
+ default_type = default_bump_type
ubm_diameter = Param(
pdt.TypeDouble, "Under-bump metalization diameter", default_bump_parameters["under_bump_diameter"], unit="μm"
)
bump_diameter = Param(pdt.TypeDouble, "Bump diameter", default_bump_parameters["bump_diameter"], unit="μm")
+ bump_type = Param(pdt.TypeString, "Bump type", default_bump_type, choices=connector_type_choices)
-
-[docs]
- def create_bump_connector(self):
- ubm_shape = circle_polygon(self.ubm_diameter / 2, self.n)
- self.cell.shapes(self.get_layer("underbump_metallization", 0)).insert(ubm_shape)
- self.cell.shapes(self.get_layer("underbump_metallization", 1)).insert(ubm_shape)
-
- avoidance_shape = circle_polygon(self.ubm_diameter / 2 + self.margin, self.n)
- self.cell.shapes(self.get_layer("ground_grid_avoidance", 0)).insert(avoidance_shape)
- self.cell.shapes(self.get_layer("ground_grid_avoidance", 1)).insert(avoidance_shape)
-
- bump_shape = circle_polygon(self.bump_diameter / 2, self.n)
- self.cell.shapes(self.get_layer("indium_bump", 0)).insert(bump_shape) # bottom In bump
- self.cell.shapes(self.get_layer("indium_bump", 1)).insert(bump_shape) # top In bump
+
+[docs]
+ @classmethod
+ def create(cls, layout, library=None, bump_type=None, **parameters):
+ """Create a bump cell in layout."""
+ return cls.create_subtype(layout, library, bump_type, **parameters)[0]
diff --git a/_modules/kqcircuits/elements/flip_chip_connectors/flip_chip_connector_dc.html b/_modules/kqcircuits/elements/flip_chip_connectors/flip_chip_connector_dc.html
index a2cfe686e..481bb87c6 100644
--- a/_modules/kqcircuits/elements/flip_chip_connectors/flip_chip_connector_dc.html
+++ b/_modules/kqcircuits/elements/flip_chip_connectors/flip_chip_connector_dc.html
@@ -921,6 +921,7 @@ Source code for kqcircuits.elements.flip_chip_connectors.flip_chip_connector
from kqcircuits.elements.flip_chip_connectors.flip_chip_connector import FlipChipConnector
+from kqcircuits.util.geometry_helper import circle_polygon
@@ -934,7 +935,18 @@ Source code for kqcircuits.elements.flip_chip_connectors.flip_chip_connector
+
+ ubm_shape = circle_polygon(self.ubm_diameter / 2, self.n)
+ self.cell.shapes(self.get_layer("underbump_metallization", 0)).insert(ubm_shape)
+ self.cell.shapes(self.get_layer("underbump_metallization", 1)).insert(ubm_shape)
+
+ avoidance_shape = circle_polygon(self.ubm_diameter / 2 + self.margin, self.n)
+ self.cell.shapes(self.get_layer("ground_grid_avoidance", 0)).insert(avoidance_shape)
+ self.cell.shapes(self.get_layer("ground_grid_avoidance", 1)).insert(avoidance_shape)
+
+ bump_shape = circle_polygon(self.bump_diameter / 2, self.n)
+ self.cell.shapes(self.get_layer("indium_bump", 0)).insert(bump_shape) # bottom In bump
+ self.cell.shapes(self.get_layer("indium_bump", 1)).insert(bump_shape) # top In bump
marker_types (List) - Marker type for each chip corner, clockwise starting from lower left, default=['Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard']
chip_dicing_in_base_metal (Boolean) - Insert chip dicing lines in base metal addition, default=False
box (Shape) - Bounding box of the chip frame, default=(0,0;10000,10000)
connector_type (String) - Connector type, default=Coax
, choices=['Single', 'GSG', 'Coax']
bump_type (String) - Bump type, default=Flip Chip Connector Dc
, choices=['Flip Chip Connector Dc']
tsv_type (String) - TSV type, default=Tsv Standard
, choices=['Tsv Standard', 'Tsv Ellipse']
etch_opposite_face_margin (Double) - Margin of the opposite face etch shape, default=5
, unit=μm
ubm_diameter (Double) - Under-bump metalization diameter, default=40
, unit=μm
bump_diameter (Double) - Bump diameter, default=25
, unit=μm
bump_type (String) - Bump type, default=Flip Chip Connector Dc
, choices=['Flip Chip Connector Dc']
airbridge_type (String) - Airbridge type, default=Airbridge Multi Face
, choices=['Airbridge Multi Face']
Connector between matching faces of two chips.
The connector makes a galvanic contact between the flipped over top chip and the bottom chip. Origin is at the geometric center.
- PCell parameters:ubm_diameter (Double) - Under-bump metalization diameter, default=40
, unit=μm
bump_diameter (Double) - Bump diameter, default=25
, unit=μm
bump_type (String) - Bump type, default=Flip Chip Connector Dc
, choices=['Flip Chip Connector Dc']
Bases: FlipChipConnector
Bases: Element
PCell declaration for an inter-chip rf connector.
Flip chip connector with two coplanar waveguide connections and different ground bump configurations. The input port is on the first face and on the left. The output port is on the second face and rotated as chosen.
-Single
: the bump connects the two sides
GSG
: ground-signal-ground indium bumps
Coax
: signal transmitting bump is surrounded by four ground bumps
connector_type (String) - Connector type, default=Coax
, choices=['Single', 'GSG', 'Coax']
inter_bump_distance (Double) - Distance between In bumps, default=100
, unit=μm
output_rotation (Double) - Rotation of output port w.r.t. input port, default=180
, unit=degrees
connector_a (Double) - Conductor width at the connector area, default=40
, unit=μm
connector_b (Double) - Gap width at the connector area, default=40
, unit=μm
round_connector (Boolean) - Use round connector shape, default=False
n_center_bumps (Int) - Number of center bumps in series, default=1
bump_type (String) - Bump type, default=Flip Chip Connector Dc
, choices=['Flip Chip Connector Dc']
a2 (Double) - Non-physical value ‘-1’ means that the default size ‘a’ is used., default=-1
, unit=μm
b2 (Double) - Non-physical value ‘-1’ means that the default size ‘b’ is used., default=-1
, unit=μm
include_bumps (Boolean) - Include bumps, default=True
ubm_diameter (Double) - Under-bump metalization diameter, default=40
, unit=μm
bump_diameter (Double) - Bump diameter, default=25
, unit=μm
bump_type (String) - Bump type, default=Flip Chip Connector Dc
, choices=['Flip Chip Connector Dc']
opposing_face_id_groups (List) - Opposing face ID groups (list of lists), default=[['1t1', '2b1']]
etch_opposite_face (Boolean) - Etch avoidance shaped gap on the opposite face too, default=False
etch_opposite_face_margin (Double) - Margin of the opposite face etch shape, default=5
, unit=μm
ubm_diameter (Double) - Under-bump metalization diameter, default=40
, unit=μm
bump_diameter (Double) - Bump diameter, default=25
, unit=μm
connector_type (String) - Connector type, default=Coax
, choices=['Single', 'GSG', 'Coax']
inter_bump_distance (Double) - Distance between In bumps, default=100
, unit=μm
output_rotation (Double) - Rotation of output port w.r.t. input port, default=180
, unit=degrees
connector_a (Double) - Conductor width at the connector area, default=40
, unit=μm
connector_b (Double) - Gap width at the connector area, default=40
, unit=μm
round_connector (Boolean) - Use round connector shape, default=False
n_center_bumps (Int) - Number of center bumps in series, default=1
bump_type (String) - Bump type, default=Flip Chip Connector Dc
, choices=['Flip Chip Connector Dc']
a2 (Double) - Non-physical value ‘-1’ means that the default size ‘a’ is used., default=-1
, unit=μm
b2 (Double) - Non-physical value ‘-1’ means that the default size ‘b’ is used., default=-1
, unit=μm
term1 (Double) - Termination length start, default=0
, unit=μm