diff --git a/documentation.py b/documentation.py index c8e590e..fe4a24d 100644 --- a/documentation.py +++ b/documentation.py @@ -2,6 +2,9 @@ import logging import re import subprocess import os +import glob +import gdstk +import cairosvg # documentation @@ -57,3 +60,13 @@ def create_pdf(yaml): p = subprocess.run(pdf_cmd, shell=True) if p.returncode != 0: logging.error("pdf command failed") + + +def create_svg(args): + gds = glob.glob(os.path.join(args.run_dir, 'results/final/gds/*gds')) + library = gdstk.read_gds(gds[0]) + top_cells = library.top_level() + top_cells[0].write_svg('gds_render.svg') + + if args.create_png: + cairosvg.svg2png(url='gds_render.svg', write_to='gds_render.png') diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b46c6ee --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +gdstk +cairosvg +requests +yaml diff --git a/tt_tool.py b/tt_tool.py index 86935e9..3b50487 100755 --- a/tt_tool.py +++ b/tt_tool.py @@ -24,6 +24,8 @@ if __name__ == '__main__': # documentation parser.add_argument('--create-project-pdf', help="create a single page PDF", action="store_const", const=True) + parser.add_argument('--create-svg', help="create a svg of the GDS layout", action="store_const", const=True) + parser.add_argument('--create-png', help="create a png of the GDS layout", action="store_const", const=True) # configure parser.add_argument('--create-user-config', help="create the user_config.tcl file with top module and source files", action="store_const", const=True) @@ -67,5 +69,8 @@ if __name__ == '__main__': elif args.create_project_pdf: documentation.create_pdf(project_yaml) + elif args.create_svg or args.create_png: + documentation.create_svg(args) + else: parser.print_help()