API Reference#
LAYout with Gridded Object 2 (laygo2) is an open-source project that offers libraries for automating the creation of custom circuit layouts, which satisfy design rules, performance and area efficiency in advanced CMOS processes. laygo2 aims to 1) streamline the layout design process through automation, while 2) provide rich parameterization capability and 3) compability with cutting-edge technologies such as FinFET, making it easier for circuit/mask designers to enhance their design productivity.
laygo2 is implemented with a comprehensive collection of layout object classes and methods, written in the Python programmanging language, rending it suitible for code-based layout generation.
laygo2 is composed of the following subpackages, each serving a distinct purpose:
laygo2.object: houses the core object classes, responsible for defining physical layout structures and design hierarchies.
laygo2.interface: implements the interfaces to external data structures and EDA tools (yaml, skill, BAG, GDS, matplotlib and others).
laygo2.util: provides a range of utility functions for internal use.
For further information regarding the subpackages and modules in laygo, please refer the provided link:
- laygo2.object package
- laygo2.object.physical module
- PhysicalObject class
PhysicalObjectPhysicalObject.__init__()PhysicalObject._get_xy()PhysicalObject._set_xy()PhysicalObject._update_pointers()PhysicalObject.summarize()PhysicalObject._xyPhysicalObject.bboxPhysicalObject.bottomPhysicalObject.bottom_leftPhysicalObject.bottom_rightPhysicalObject.centerPhysicalObject.leftPhysicalObject.masterPhysicalObject.namePhysicalObject.paramsPhysicalObject.pointersPhysicalObject.rightPhysicalObject.topPhysicalObject.top_leftPhysicalObject.top_rightPhysicalObject.xy
- IterablePhysicalObject class
IterablePhysicalObjectIterablePhysicalObject.__init__()IterablePhysicalObject._get_xy()IterablePhysicalObject._set_xy()IterablePhysicalObject._update_elements()IterablePhysicalObject._update_pointers()IterablePhysicalObject.ndenumerate()IterablePhysicalObject.summarize()IterablePhysicalObject._xyIterablePhysicalObject.bboxIterablePhysicalObject.bottomIterablePhysicalObject.bottom_leftIterablePhysicalObject.bottom_rightIterablePhysicalObject.centerIterablePhysicalObject.elementsIterablePhysicalObject.leftIterablePhysicalObject.masterIterablePhysicalObject.nameIterablePhysicalObject.paramsIterablePhysicalObject.pointersIterablePhysicalObject.rightIterablePhysicalObject.shapeIterablePhysicalObject.topIterablePhysicalObject.top_leftIterablePhysicalObject.top_rightIterablePhysicalObject.xy
- PhysicalObjectGroup class
PhysicalObjectGroupPhysicalObjectGroup.__init__()PhysicalObjectGroup._get_xy()PhysicalObjectGroup._set_xy()PhysicalObjectGroup._update_elements()PhysicalObjectGroup._update_pointers()PhysicalObjectGroup.ndenumerate()PhysicalObjectGroup.summarize()PhysicalObjectGroup._xyPhysicalObjectGroup.bboxPhysicalObjectGroup.bottomPhysicalObjectGroup.bottom_leftPhysicalObjectGroup.bottom_rightPhysicalObjectGroup.centerPhysicalObjectGroup.elementsPhysicalObjectGroup.leftPhysicalObjectGroup.masterPhysicalObjectGroup.namePhysicalObjectGroup.paramsPhysicalObjectGroup.pointersPhysicalObjectGroup.rightPhysicalObjectGroup.shapePhysicalObjectGroup.topPhysicalObjectGroup.top_leftPhysicalObjectGroup.top_rightPhysicalObjectGroup.xy
- Rect class
RectRect.__init__()Rect._get_xy()Rect._set_xy()Rect._update_pointers()Rect.align()Rect.summarize()Rect._xyRect.bboxRect.bottomRect.bottom_leftRect.bottom_rightRect.centerRect.colorRect.heightRect.height_vecRect.hextensionRect.layerRect.leftRect.masterRect.nameRect.netnameRect.paramsRect.pointersRect.rightRect.sizeRect.topRect.top_leftRect.top_rightRect.vextensionRect.widthRect.width_vecRect.xy
- Path class
PathPath.__init__()Path._get_xy()Path._set_xy()Path._update_pointers()Path.summarize()Path._xyPath.bboxPath.bottomPath.bottom_leftPath.bottom_rightPath.centerPath.extensionPath.layerPath.leftPath.masterPath.namePath.netnamePath.paramsPath.pointersPath.rightPath.topPath.top_leftPath.top_rightPath.widthPath.xy
- Pin class
PinPin.__init__()Pin._get_xy()Pin._set_xy()Pin._update_elements()Pin._update_pointers()Pin.export_to_dict()Pin.ndenumerate()Pin.summarize()Pin._xyPin.bboxPin.bottomPin.bottom_leftPin.bottom_rightPin.centerPin.elementsPin.heightPin.height_vecPin.layerPin.leftPin.masterPin.namePin.netnamePin.paramsPin.pointersPin.rightPin.shapePin.sizePin.topPin.top_leftPin.top_rightPin.widthPin.width_vecPin.xy
- Text class
TextText.__init__()Text._get_xy()Text._set_xy()Text._update_pointers()Text.summarize()Text._xyText.bboxText.bottomText.bottom_leftText.bottom_rightText.centerText.layerText.leftText.masterText.nameText.paramsText.pointersText.rightText.textText.topText.top_leftText.top_rightText.xy
- Instance class
InstanceInstance.__init__()Instance._get_xy()Instance._set_xy()Instance._update_elements()Instance._update_pins()Instance._update_pointers()Instance.get_p()Instance.get_pitch()Instance.get_spacing()Instance.ndenumerate()Instance.set_p()Instance.set_pitch()Instance.set_spacing()Instance.summarize()Instance.update_netname()Instance._pitchInstance._xyInstance.bboxInstance.bottomInstance.bottom_leftInstance.bottom_rightInstance.cellnameInstance.centerInstance.elementsInstance.heightInstance.height_vecInstance.leftInstance.libnameInstance.masterInstance.nameInstance.pInstance.paramsInstance.pinsInstance.pitchInstance.pointersInstance.rightInstance.shapeInstance.sizeInstance.spacingInstance.topInstance.top_leftInstance.top_rightInstance.transformInstance.unit_sizeInstance.viewnameInstance.widthInstance.width_vecInstance.xyInstance.xy0Instance.xy1
- VirtualInstance class
VirtualInstanceVirtualInstance.__init__()VirtualInstance._get_xy()VirtualInstance._set_xy()VirtualInstance._update_elements()VirtualInstance._update_pins()VirtualInstance._update_pointers()VirtualInstance.get_element_position()VirtualInstance.get_p()VirtualInstance.get_pitch()VirtualInstance.get_spacing()VirtualInstance.ndenumerate()VirtualInstance.set_p()VirtualInstance.set_pitch()VirtualInstance.set_spacing()VirtualInstance.summarize()VirtualInstance.update_netname()VirtualInstance._pitchVirtualInstance._xyVirtualInstance.bboxVirtualInstance.bottomVirtualInstance.bottom_leftVirtualInstance.bottom_rightVirtualInstance.cellnameVirtualInstance.centerVirtualInstance.elementsVirtualInstance.heightVirtualInstance.height_vecVirtualInstance.leftVirtualInstance.libnameVirtualInstance.masterVirtualInstance.nameVirtualInstance.native_elementsVirtualInstance.pVirtualInstance.paramsVirtualInstance.pinsVirtualInstance.pitchVirtualInstance.pointersVirtualInstance.rightVirtualInstance.shapeVirtualInstance.sizeVirtualInstance.spacingVirtualInstance.topVirtualInstance.top_leftVirtualInstance.top_rightVirtualInstance.transformVirtualInstance.unit_sizeVirtualInstance.viewnameVirtualInstance.widthVirtualInstance.width_vecVirtualInstance.xyVirtualInstance.xy0VirtualInstance.xy1
- PhysicalObject class
- laygo2.object.template module
- Template class
- NativeInstanceTemplate class
NativeInstanceTemplateNativeInstanceTemplate.__init__()NativeInstanceTemplate.bbox()NativeInstanceTemplate.export_to_dict()NativeInstanceTemplate.generate()NativeInstanceTemplate.height()NativeInstanceTemplate.pins()NativeInstanceTemplate.size()NativeInstanceTemplate.summarize()NativeInstanceTemplate.width()NativeInstanceTemplate._abc_implNativeInstanceTemplate._bboxNativeInstanceTemplate._pinsNativeInstanceTemplate.cellnameNativeInstanceTemplate.libnameNativeInstanceTemplate.name
- ParameterizedInstanceTemplate class
ParameterizedInstanceTemplateParameterizedInstanceTemplate.__init__()ParameterizedInstanceTemplate.bbox()ParameterizedInstanceTemplate.generate()ParameterizedInstanceTemplate.height()ParameterizedInstanceTemplate.pins()ParameterizedInstanceTemplate.size()ParameterizedInstanceTemplate.summarize()ParameterizedInstanceTemplate.width()ParameterizedInstanceTemplate._abc_implParameterizedInstanceTemplate._bboxParameterizedInstanceTemplate._pinsParameterizedInstanceTemplate.cellnameParameterizedInstanceTemplate.libnameParameterizedInstanceTemplate.name
- UserDefinedTemplate class
UserDefinedTemplateUserDefinedTemplate.__init__()UserDefinedTemplate.bbox()UserDefinedTemplate.generate()UserDefinedTemplate.height()UserDefinedTemplate.pins()UserDefinedTemplate.size()UserDefinedTemplate.summarize()UserDefinedTemplate.width()UserDefinedTemplate._abc_implUserDefinedTemplate._bboxUserDefinedTemplate._generateUserDefinedTemplate._pinsUserDefinedTemplate.name
- routing module
- RoutingMeshTemplate class
RoutingMeshTemplateRoutingMeshTemplate.__init__()RoutingMeshTemplate.add_node()RoutingMeshTemplate.add_track()RoutingMeshTemplate.bbox()RoutingMeshTemplate.generate()RoutingMeshTemplate.height()RoutingMeshTemplate.pins()RoutingMeshTemplate.size()RoutingMeshTemplate.summarize()RoutingMeshTemplate.width()RoutingMeshTemplate._abc_implRoutingMeshTemplate.gridRoutingMeshTemplate.nameRoutingMeshTemplate.nodesRoutingMeshTemplate.tracks
- RoutingMeshTemplate class
- laygo2.object.grid module
- Core methods
- CircularMapping class
CircularMappingCircularMapping.dtypeCircularMapping.__init__()CircularMapping.append()CircularMapping.concatenate()CircularMapping.copy()CircularMapping.flip()CircularMapping.get_elements()CircularMapping.set_elements()CircularMapping.summarize()CircularMapping._elementsCircularMapping.elementsCircularMapping.shape
- CircularMappingArray class
CircularMappingArrayCircularMappingArray.dtypeCircularMappingArray.__init__()CircularMappingArray.append()CircularMappingArray.concatenate()CircularMappingArray.copy()CircularMappingArray.flip()CircularMappingArray.get_elements()CircularMappingArray.set_elements()CircularMappingArray.summarize()CircularMappingArray._elementsCircularMappingArray.elementsCircularMappingArray.shape
- _AbsToPhyGridConverter class
- _PhyToAbsGridConverter class
- OneDimGrid class
OneDimGridOneDimGrid.dtypeOneDimGrid.__init__()OneDimGrid.append()OneDimGrid.concatenate()OneDimGrid.copy()OneDimGrid.export_to_dict()OneDimGrid.flip()OneDimGrid.get_elements()OneDimGrid.set_elements()OneDimGrid.summarize()OneDimGrid._elementsOneDimGrid.abs2phyOneDimGrid.elementsOneDimGrid.nameOneDimGrid.phy2absOneDimGrid.rangeOneDimGrid.shapeOneDimGrid.width
- Grid class
GridGrid.__init__()Grid._get_hgrid()Grid._get_vgrid()Grid._set_hgrid()Grid._set_vgrid()Grid.bbox()Grid.bottom()Grid.bottom_left()Grid.bottom_right()Grid.center()Grid.copy()Grid.crossing()Grid.get_range()Grid.height_vec()Grid.hflip()Grid.hstack()Grid.left()Grid.overlap()Grid.right()Grid.set_range()Grid.summarize()Grid.top()Grid.top_left()Grid.top_right()Grid.union()Grid.vflip()Grid.vstack()Grid.width_vec()Grid._xyGrid.abs2phyGrid.elementsGrid.hGrid.heightGrid.hgridGrid.mGrid.mnGrid.nGrid.nameGrid.phy2absGrid.rangeGrid.shapeGrid.vGrid.vgridGrid.widthGrid.xGrid.xyGrid.y
- PlacementGrid class
PlacementGridPlacementGrid.__init__()PlacementGrid._get_hgrid()PlacementGrid._get_vgrid()PlacementGrid._set_hgrid()PlacementGrid._set_vgrid()PlacementGrid.bbox()PlacementGrid.bottom()PlacementGrid.bottom_left()PlacementGrid.bottom_right()PlacementGrid.center()PlacementGrid.copy()PlacementGrid.crossing()PlacementGrid.get_range()PlacementGrid.height_vec()PlacementGrid.hflip()PlacementGrid.hstack()PlacementGrid.left()PlacementGrid.overlap()PlacementGrid.place()PlacementGrid.right()PlacementGrid.set_range()PlacementGrid.summarize()PlacementGrid.top()PlacementGrid.top_left()PlacementGrid.top_right()PlacementGrid.union()PlacementGrid.vflip()PlacementGrid.vstack()PlacementGrid.width_vec()PlacementGrid._xyPlacementGrid.abs2phyPlacementGrid.elementsPlacementGrid.hPlacementGrid.heightPlacementGrid.hgridPlacementGrid.mPlacementGrid.mnPlacementGrid.nPlacementGrid.namePlacementGrid.phy2absPlacementGrid.rangePlacementGrid.shapePlacementGrid.typePlacementGrid.vPlacementGrid.vgridPlacementGrid.widthPlacementGrid.xPlacementGrid.xyPlacementGrid.y
- RoutingGrid class
RoutingGridRoutingGrid.__init__()RoutingGrid._get_hgrid()RoutingGrid._get_vgrid()RoutingGrid._set_hgrid()RoutingGrid._set_vgrid()RoutingGrid.bbox()RoutingGrid.bottom()RoutingGrid.bottom_left()RoutingGrid.bottom_right()RoutingGrid.center()RoutingGrid.copy()RoutingGrid.crossing()RoutingGrid.get_range()RoutingGrid.height_vec()RoutingGrid.hflip()RoutingGrid.hstack()RoutingGrid.left()RoutingGrid.overlap()RoutingGrid.pin()RoutingGrid.right()RoutingGrid.route()RoutingGrid.route_via_track()RoutingGrid.set_range()RoutingGrid.summarize()RoutingGrid.top()RoutingGrid.top_left()RoutingGrid.top_right()RoutingGrid.union()RoutingGrid.vflip()RoutingGrid.via()RoutingGrid.vstack()RoutingGrid.width_vec()RoutingGrid._xyRoutingGrid.abs2phyRoutingGrid.elementsRoutingGrid.hRoutingGrid.heightRoutingGrid.hextensionRoutingGrid.hextension0RoutingGrid.hgridRoutingGrid.hlayerRoutingGrid.hwidthRoutingGrid.mRoutingGrid.mnRoutingGrid.nRoutingGrid.nameRoutingGrid.phy2absRoutingGrid.pin_hlayerRoutingGrid.pin_vlayerRoutingGrid.primary_gridRoutingGrid.rangeRoutingGrid.shapeRoutingGrid.typeRoutingGrid.vRoutingGrid.vextensionRoutingGrid.vextension0RoutingGrid.vgridRoutingGrid.viamapRoutingGrid.vlayerRoutingGrid.vwidthRoutingGrid.widthRoutingGrid.xRoutingGrid.xcolorRoutingGrid.xyRoutingGrid.yRoutingGrid.ycolor
- laygo2.object.database module
- BaseDatabase class
- Library class
- Design class
- append() method
- place() method
- route() method
- route_via_track() method
- via() method
- pin() method
- export_to_template() method
DesignDesign.__init__()Design.append()Design.export_to_template()Design.get_cellname()Design.get_i()Design.get_libname()Design.get_matched_rects_by_layer()Design.get_p()Design.get_r()Design.get_vi()Design.items()Design.keys()Design.pin()Design.place()Design.route()Design.route_via_track()Design.set_cellname()Design.set_i()Design.set_libname()Design.set_p()Design.set_r()Design.set_vi()Design.summarize()Design.via()Design.bboxDesign.cellnameDesign.elementsDesign.iDesign.instancesDesign.libnameDesign.nameDesign.noname_indexDesign.pDesign.paramsDesign.pathsDesign.pinsDesign.rDesign.rectsDesign.textsDesign.viDesign.virtual_instances
- laygo2.object.physical module
- laygo2.interface package
- laygo2.util package