xbase.layout.mos.tech

This module defines abstract analog mosfet template classes.

Module Contents

Classes

MOSTech

An abstract class for drawing transistor related layout.

Functions

_get_end_block_info(→ Tuple[int, int])

xbase.layout.mos.tech._get_end_block_info(h_ext: int, h_end_min: int, blk_h: int) Tuple[int, int][source]
class xbase.layout.mos.tech.MOSTech(tech_info: bag.layout.tech.TechInfo, lch: int, arr_options: Mapping[str, Any])[source]

Bases: abc.ABC

An abstract class for drawing transistor related layout.

This class defines various methods use to draw layouts used by MOSBase.

Parameters:
  • tech_info (TechInfo) – the TechInfo object.

  • lch (int) – the channel length.

  • arr_options (Mapping[str, Any]) – process-specific options for the transistor array.

abstract property blk_h_pitch: int[source]
abstract property end_h_min: int[source]
abstract property min_sep_col: int[source]
abstract property sub_sep_col: int[source]

column separation needed between transistor/substrate and substrate/substrate.

This is guaranteed to be even.

Type:

int

property gr_sub_sep_col: int[source]

column separation needed between guard ring substrate and inner substrate.

Type:

int

abstract property min_sub_col: int[source]
abstract property gr_edge_col: int[source]
abstract property abut_mode: xbase.layout.enum.MOSAbutMode[source]
abstract property can_draw_double_gate: bool[source]
property has_double_guard_ring: bool[source]
property lch: int[source]
property arr_options: Mapping[str, Any][source]
property tech_info: bag.layout.tech.TechInfo[source]
property mos_config: Dict[str, Any][source]
property conn_layer: int[source]
property sub_w_default: int[source]
property w_range: Tuple[int, int][source]
property w_resolution: int[source]
property sd_pitch: int[source]
abstract can_short_adj_tracks(conn_layer: int) bool[source]
can_abut_mos(row_info: xbase.layout.mos.data.MOSRowInfo) bool[source]
can_extend_ds_conn(g_side: bool, threshold: str) bool[source]
abstract get_track_specs(conn_layer: int, top_layer: int) List[bag.layout.routing.grid.TrackSpec][source]
abstract get_edge_width(mos_arr_width: int, blk_pitch: int) int[source]
abstract get_mos_row_info(conn_layer: int, specs: xbase.layout.mos.data.MOSRowSpecs, bot_mos_type: xbase.layout.enum.MOSType, top_mos_type: xbase.layout.enum.MOSType, global_options: bag.util.immutable.Param) xbase.layout.mos.data.MOSRowInfo[source]
abstract get_ext_width_info(bot_row_ext_info: xbase.layout.mos.data.RowExtInfo, top_row_ext_info: xbase.layout.mos.data.RowExtInfo, ignore_vm_sp_le: bool = False) xbase.layout.mos.data.ExtWidthInfo[source]
abstract get_extension_regions(bot_info: xbase.layout.mos.data.RowExtInfo, top_info: xbase.layout.mos.data.RowExtInfo, height: int) Tuple[xbase.layout.enum.MOSCutMode, int, int][source]
abstract get_mos_conn_info(row_info: xbase.layout.mos.data.MOSRowInfo, conn_layer: int, seg: int, w: int, stack: int, g_on_s: bool, options: bag.util.immutable.Param) xbase.layout.mos.data.MOSLayInfo[source]
abstract get_mos_abut_info(row_info: xbase.layout.mos.data.MOSRowInfo, edgel: xbase.layout.mos.data.MOSEdgeInfo, edger: xbase.layout.mos.data.MOSEdgeInfo) xbase.layout.data.LayoutInfo[source]
abstract get_mos_tap_info(row_info: xbase.layout.mos.data.MOSRowInfo, conn_layer: int, seg: int, options: bag.util.immutable.Param) xbase.layout.mos.data.MOSLayInfo[source]
abstract get_mos_space_info(row_info: xbase.layout.mos.data.MOSRowInfo, num_cols: int, left_info: xbase.layout.mos.data.MOSEdgeInfo, right_info: xbase.layout.mos.data.MOSEdgeInfo) xbase.layout.mos.data.MOSLayInfo[source]
abstract get_mos_ext_info(num_cols: int, blk_h: int, bot_einfo: xbase.layout.mos.data.RowExtInfo, top_einfo: xbase.layout.mos.data.RowExtInfo, gr_info: Tuple[int, int]) xbase.layout.mos.data.ExtEndLayInfo[source]
abstract get_mos_ext_gr_info(num_cols: int, edge_cols: int, blk_h: int, bot_einfo: xbase.layout.mos.data.RowExtInfo, top_einfo: xbase.layout.mos.data.RowExtInfo, sub_type: xbase.layout.enum.MOSType, einfo: xbase.layout.mos.data.MOSEdgeInfo) xbase.layout.mos.data.ExtEndLayInfo[source]
abstract get_ext_geometries(re_bot: xbase.layout.mos.data.RowExtInfo, re_top: xbase.layout.mos.data.RowExtInfo, be_bot: bag.util.immutable.ImmutableList[xbase.layout.mos.data.BlkExtInfo], be_top: bag.util.immutable.ImmutableList[xbase.layout.mos.data.BlkExtInfo], cut_mode: xbase.layout.enum.MOSCutMode, bot_exty: int, top_exty: int, dx: int, dy: int, w_edge: int) xbase.layout.data.LayoutInfo[source]
abstract get_mos_end_info(blk_h: int, num_cols: int, einfo: xbase.layout.mos.data.RowExtInfo) xbase.layout.mos.data.ExtEndLayInfo[source]
abstract get_mos_row_edge_info(blk_w: int, rinfo: xbase.layout.mos.data.MOSRowInfo, einfo: xbase.layout.mos.data.MOSEdgeInfo) xbase.layout.data.LayoutInfo[source]
abstract get_mos_ext_edge_info(blk_w: int, einfo: xbase.layout.mos.data.MOSEdgeInfo) xbase.layout.data.LayoutInfo[source]
abstract get_mos_corner_info(blk_w: int, blk_h: int, einfo: xbase.layout.mos.data.MOSEdgeInfo) xbase.layout.data.CornerLayInfo[source]
get_mos_base_end_info(bot_rpinfo: xbase.layout.mos.data.RowPlaceInfo, top_rpinfo: xbase.layout.mos.data.RowPlaceInfo, bot_flip: bool, top_flip: bool, blk_pitch: int) xbase.layout.mos.data.MOSBaseEndInfo[source]
get_segments_from_em(conn_layer: int, idc: float = 0, iac_rms: float = 0, iac_peak: float = 0, even: bool = False, **kwargs: Any) int[source]