| #!/usr/bin/env python3 |
| # Copyright 2020-2022 Efabless Corporation |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import os |
| import click |
| import subprocess |
| |
| |
| @click.command("open_design") |
| @click.option( |
| "-l", |
| "--input-lef", |
| default=os.getenv("MERGED_LEF"), |
| help="Input merged technology/cells LEF file", |
| ) |
| @click.option( |
| "-P", |
| "--pdk-root", |
| default=os.getenv("PDK_ROOT"), |
| required=not os.getenv("PDK_ROOT"), |
| help="PDK Root", |
| ) |
| @click.option("-p", "--pdk", default="sky130A", help="Name of the PDK") |
| @click.argument("input_def") |
| def open_design(input_lef, pdk_root, pdk, input_def): |
| """ |
| Opens a design in Klayout. |
| """ |
| dir = os.path.dirname(__file__) |
| klayout_script_path = os.path.join(dir, "open_design.py") |
| env = os.environ.copy() |
| |
| env["EXPLICITLY_LISTED_LEFS"] = input_lef |
| env["PDK_ROOT"] = pdk_root |
| env["PDK"] = pdk |
| env["LAYOUT"] = input_def |
| |
| subprocess.check_call( |
| [ |
| "klayout", |
| "-rm", |
| klayout_script_path, |
| ], |
| env=env, |
| ) |
| |
| |
| if __name__ == "__main__": |
| open_design() |