Source code for gdsfactory.components.wafer

from __future__ import annotations

import gdsfactory as gf
from gdsfactory.components.die import die
from gdsfactory.typings import Component, ComponentFactory

_cols_200mm_wafer = (2, 6, 6, 8, 8, 6, 6, 2)


[docs] @gf.cell def wafer( reticle: ComponentFactory = die, cols: tuple[int, ...] = _cols_200mm_wafer, xspacing: float | None = None, yspacing: float | None = None, die_name_col_row: bool = False, ) -> Component: """Returns complete wafer. Useful for mask aligner steps. Args: reticle: spec for each wafer reticle. cols: how many columns per row. xspacing: optional spacing, defaults to reticle.xsize. yspacing: optional spacing, defaults to reticle.ysize. die_name_col_row: if True, die name is row_col, otherwise is a number """ c = gf.Component() die = reticle() xspacing = xspacing or die.xsize yspacing = yspacing or die.ysize i = 1 for col in range(len(cols)): for row in range(cols[col]): die_name = f"{col+1}_{row+1}" if die_name_col_row else str(i) die = reticle(die_name=die_name) c.add_ref(die).movex((row - cols[col] / 2) * xspacing).movey(col * yspacing) i += 1 return c
if __name__ == "__main__": c = wafer(die_name_col_row=True) c.show()