dummy_fill_layout

ipkiss3.all.dummy_fill_layout(layout, fill_cell, target=None, ignore=None, density=0.5, design_buffer=10, edge_buffer=10)

Applies a rectangular dummy fill to a layout to achieve a specified local density.

Parameters:
layout: Layout | LayoutView | PCell

A Layout, LayoutView or PCell to apply dummy filling to.

fill_cell: Box

The basic element (tile) used for filling. Only Boxes are supported. The layer of this Box, determines the layer on which the dummy elements are drawn.

target: Layer, optional, default=None

A layer which defines the bounding area of the filling operation. If None, the entire layout will be filled.

ignore: list[Layer], optional, default=None

List of layers to exclude/ignore during the fill operation. Elements on these layers will not be taken into account.

density: float, optional

Target density (0.0 to 1.0). Determines the pitch of the fill pattern.

design_buffer: float, optional, default=10

Keep-out distance (buffer) around existing design features where no dummy elements will be placed.

edge_buffer: float, optional, default=10

Keep-out distance (buffer) around outer perimeter.

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 MyCell(i3.PCell):
>>>     class Layout(i3.LayoutView):
>>>         def generate(self, layout):
>>>             layout += i3.place_and_route(
>>>                 insts={"dut": pdk.MZModulator().Layout()},
>>>                 specs=[i3.Place("dut", (0, 0))],
>>>             )
>>>             box = i3.Box(layer=pdk.TECH.PPLAYER.M1, box_size=(5, 5))
>>>             fill_elements = i3.dummy_fill_layout(layout, fill_cell=box, design_buffer=20)
>>>             layout += fill_elements
>>>             return layout
>>>
>>> MyCell().Layout().visualize()