xbase.layout.mos.placement.compact

This module contains transistor row placement methods and data structures.

Module Contents

Classes

RowPlaceSpecs

Information needed to compute placement of transistor rows.

PlaceFun

Functions

place_rows_compact(...)

_get_row_place_specs(→ Sequence[RowPlaceSpecs])

For each MOSRowSpecs, construct MOSRowInfo and RowPlaceSpecs

_place_mirror(→ Tuple[int, int])

Extend the current extention such that it can be mirrored

_place_rows(...)

Used by place_rows_compact to place rows after getting RowPlaceSpecs for all rows.

_calc_vm_dy(→ int)

_update_y_conn(→ int)

xbase.layout.mos.placement.compact.place_rows_compact(tr_manager: bag.layout.routing.base.TrackManager, tech_cls: xbase.layout.mos.tech.MOSTech, specs_list: Sequence[xbase.layout.mos.data.MOSRowSpecs], tot_height_min: int, tile_blk_h: int, bot_mirror: bool, top_mirror: bool, global_options: bag.util.immutable.Param) Tuple[bag.util.immutable.ImmutableList[xbase.layout.mos.data.RowPlaceInfo], List[Tuple[xbase.layout.wires.WireGraph, xbase.layout.wires.WireGraph]]][source]
class xbase.layout.mos.placement.compact.RowPlaceSpecs(row_specs: xbase.layout.mos.data.MOSRowSpecs, row_info: xbase.layout.mos.data.MOSRowInfo, bot_conn_y_table: Mapping[xbase.layout.enum.MOSWireType, Tuple[int, int]], top_conn_y_table: Mapping[xbase.layout.enum.MOSWireType, Tuple[int, int]], bot_ext_info: xbase.layout.mos.data.RowExtInfo, top_ext_info: xbase.layout.mos.data.RowExtInfo, mid_conn_y_table: Optional[Mapping[xbase.layout.enum.MOSWireType, Tuple[int, int]]] = None)[source]

Information needed to compute placement of transistor rows.

row_specs: xbase.layout.mos.data.MOSRowSpecs[source]
row_info: xbase.layout.mos.data.MOSRowInfo[source]
bot_conn_y_table: bag.util.immutable.ImmutableSortedDict[xbase.layout.enum.MOSWireType, Tuple[int, int]][source]
top_conn_y_table: bag.util.immutable.ImmutableSortedDict[xbase.layout.enum.MOSWireType, Tuple[int, int]][source]
bot_ext_info: xbase.layout.mos.data.RowExtInfo[source]
top_ext_info: xbase.layout.mos.data.RowExtInfo[source]
mid_conn_y_table: Optional[bag.util.immutable.ImmutableSortedDict[xbase.layout.enum.MOSWireType, Tuple[int, int]]][source]
class xbase.layout.mos.placement.compact.PlaceFun(vm_layer: int, grid: bag.layout.routing.grid.RoutingGrid, table: Dict[str, int], mode: pybag.enum.RoundMode)[source]
__call__(ptype: str, tr_w: int, idx: bag.util.math.HalfInt) bag.util.math.HalfInt[source]
xbase.layout.mos.placement.compact._get_row_place_specs(tcls: xbase.layout.mos.tech.MOSTech, specs_list: Sequence[xbase.layout.mos.data.MOSRowSpecs], global_options: bag.util.immutable.Param) Sequence[RowPlaceSpecs][source]

For each MOSRowSpecs, construct MOSRowInfo and RowPlaceSpecs

xbase.layout.mos.placement.compact._place_mirror(tech_cls: xbase.layout.mos.tech.MOSTech, ext_info: xbase.layout.mos.data.RowExtInfo, ycur: int, ignore_vm_sp_le: bool = False) Tuple[int, int][source]

Extend the current extention such that it can be mirrored

xbase.layout.mos.placement.compact._place_rows(tr_manager: bag.layout.routing.base.TrackManager, tech_cls: xbase.layout.mos.tech.MOSTech, pspecs_list: Sequence[RowPlaceSpecs], tot_height_min: int, tot_height_pitch: int, bot_mirror: bool, top_mirror: bool, hm_shift: Union[int, bag.util.math.HalfInt] = 0, max_iter: int = 100) Tuple[bag.util.immutable.ImmutableList[xbase.layout.mos.data.RowPlaceInfo], List[Tuple[xbase.layout.wires.WireGraph, xbase.layout.wires.WireGraph]]][source]

Used by place_rows_compact to place rows after getting RowPlaceSpecs for all rows.

Parameters:
  • tr_manager (TrackManager) – the track manager of the MOSBase.

  • tech_cls (MOSTech) – the technology specific class for drawing layout

  • pspecs_list (Sequence[RowPlaceSpecs]) – list of RowPlaceSpecs. See _get_row_place_specs for construction details

  • tot_height_min (int) – Minimum cell height, set by e.g. desired heigher metal tracks.

  • tot_height_pitch (int) – Quantize the cell height to this dimension. Typically a tile height.

  • bot_mirror (bool) – True to satisfy mirror placement constraint on the bottom edge.

  • top_mirror (bool) – True to satisfy mirror placement constraint on the top edge.

  • hm_shift (Union[int, HalfInt]) – Optional vertical track shift for the bottom (0th) row.

  • max_iter

    Maximum number of iterations to try to fix the cell bottom - active bottom extension

    to fit the bottom tracks.

xbase.layout.mos.placement.compact._calc_vm_dy(grid: bag.layout.routing.grid.RoutingGrid, row_info: xbase.layout.mos.data.MOSRowInfo, bot_wg: xbase.layout.wires.WireGraph, bot_conn_y_table: Mapping[xbase.layout.enum.MOSWireType, Tuple[int, int]], vm_layer: int, ycur: int, ytop_conn_prev: int, conn_sp_le: int) int[source]
xbase.layout.mos.placement.compact._update_y_conn(grid: bag.layout.routing.grid.RoutingGrid, row_info: xbase.layout.mos.data.MOSRowInfo, conn_layer: int, ycur: int, bnd_table: Mapping[str, List[Tuple[bag.util.math.HalfInt, int]]], yval: int, is_top: bool) int[source]