Overview#
Introduction#
The LAYout with Gridded Object 2 (laygo2) package is a comprehensive framework for IC layout generation, written in the Python programming language. Its primary objects are to:
Automate and streamline the layout generation process, promoting reuse and efficiency.
Enable Parametrized layout generation, allowing for greater flexibility and customization.
Provide support for advanced technologies suc as FinFET, ensuring compatibility with the latest CMOS fabrication processes.
Implement dynamic template-and-grid-based layout generation, facilitating the rapid and effective creation of layouts.
laygo2 builds upon the capabilities of its predecessor, laygo, which was orignally developed as one of layout generation engines in the Berkeley Analog Generator2 (BAG2) platform.
Quick trial#
For step-by-step instructions on how to install the software and generate simple structures, refer to the Trial page.
API documentation#
For an in-depth understanding of the laygo2 software architecture and componenets, refer to the latest API reference. This reference provides a comprehensive overview of the package’s functions, modules, and classes, allowing users to effectively utilize the full range of laygo2’s capabilities.
Typical design flow#
The following steps outline the standard procedure for constructing a generator code for a custom layout using the laygo2 package:
Load the necessary technology parameters, primitive templates, and grids from the laygo2_tech module.
Check laygo2_tech.load_templates() and laygo2_tech.load_grids() for further details.
Generate instances from the loaded templates.
Check Template.generate() for further details.
Perform placement of the generated instances.
Check Design.place() for further details.
Route wires and vias between the instances’ terminals.
Check Design.route(), Design.route_via_track(), and RoutingMeshTemplate for further details.
Create Pins for interfaces with other building blocks.
Check Design.pin() for further details.
Export the completed design in the desired format.
Check interface.skill.export(), interface.skillbridge.export(), interface.bag.export(), interface.gdspy.export(), interface.magic.export(), and interface.mpl.export() for further details.
(Optional) Save the design as a new template for future reuse.
Check interface.yaml.export_template() for details.
Technology setup#
See the Tech Setup section for detailed instructions on setting up the technology configurations.
List of developers#
See the README file in the Github repository for a complete list of developers and contributors to the project.
License#
laygo2 is distributed under the BSD 3-Clause License.