dummy_fill_layout_box
- ipkiss3.all.dummy_fill_layout_box(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 | tuple[int, int], optional, default=None
A layer which defines the bounding area of the filling operation.
- ignore: list[Layer | tuple[int, int]], 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, default=0.5
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( >>> layout=layout, >>> specs=[i3.Inst("dut", pdk.MZModulator().Layout()), i3.Place("dut", (0, 0))], >>> ) >>> box = i3.Box(layer=pdk.TECH.PPLAYER.M1, box_size=(5, 5)) >>> fill_elements = i3.dummy_fill_layout_box(layout, fill_cell=box, design_buffer=20) >>> layout += fill_elements >>> return layout >>> >>> MyCell().Layout().visualize()