dummy_fill_layout
- ipkiss3.all.dummy_fill_layout(layout, filling=None, target_layer=<ipkiss3.technology.TechValue object>)
Applies a dummy fill to a layout based on filler spefications.
Provide multiple Filler objects in filling for multiple fill passes on different layer sets.
- Parameters:
- layout: Layout | LayoutView | PCell
A Layout, LayoutView or PCell to apply dummy filling to.
- filling: Sequence[Filler] | None, optional, default=None
A sequence of Filler objects. If not specified, it is created from TECH.DUMMY_FILLING.FILLERS or an error is raised if the PDK does not specify it. TECH.DUMMY_FILLING.FILLERS must be a list of dicts, each dict specifying a set of Filler attributes.
- target_layer: Layer | tuple[int, int] | None, optional, default=TECH.DUMMY_FILLING.TARGET_LAYER
A layer which defines the bounding area of the filling operation. If not specified, a default value from the PDK is used (TECH.DUMMY_FILLING.TARGET_LAYER) or None (entire layout) is used if the PDK does not specify it.
- Returns:
- dummy_filled_layout: Layout
A Layout data container which contains only the dummy instances, which are ARefs. You are supposed to add this to the layout in a generate method of a PCell
Examples
>>> import ipkiss3.all as i3 >>> import si_fab.all as pdk >>> >>> class MyCellComplexFill(i3.PCell): >>> class Layout(i3.LayoutView): >>> def generate(self, layout): >>> layout = i3.place_and_route( >>> layout=layout, >>> specs=[i3.Inst("dut", pdk.MZModulator().Layout()), i3.Place("dut", (0, 0))], >>> ) >>> fill_spec = i3.Filler( >>> cell=i3.Box(layer=pdk.TECH.PPLAYER.M1, box_size=(5, 5)), >>> design_buffer=20.0, >>> tile_buffer=1.0, >>> edge_buffer=2.0, >>> ) >>> fill_elements = i3.dummy_fill_layout(layout, filling=[fill_spec]) >>> layout += fill_elements >>> return layout >>> >>> MyCellComplexFill().Layout().visualize()