Modified the compositor once again so that the original caravel project gets read in as a subcell and points to the GDS created by "make ship"; then the fill patterns and the seal ring are placed as siblings in the same top level cell.
diff --git a/scripts/compositor.py b/scripts/compositor.py index 6e0d67b..8882bb8 100755 --- a/scripts/compositor.py +++ b/scripts/compositor.py
@@ -99,19 +99,20 @@ with open(magpath + '/compose_final.tcl', 'w') as ofile: print('#!/bin/env wish', file=ofile) print('drc off', file=ofile) - # print('gds read ../gds/user_project_wrapper', file=ofile) - # print('load ' + project + ' -dereference', file=ofile) - print('gds readonly true', file=ofile) - print('gds rescale false', file=ofile) - print('gds read ../gds/caravel', file=ofile) + + # Read project from .mag but set GDS properties so that it points + # to the GDS file created by "make ship". + print('load ' + project + ' -dereference', file=ofile) + print('property GDS_FILE ../gds/' + project + '.gds', file=ofile) + print('property GDS_START 0', file=ofile) print('select top cell', file=ofile) + print('set bbox [box values]', file=ofile) # Ceate a cell to represent the generated fill. There are # no magic layers corresponding to the fill shape data, and # it's gigabytes anyway, so we don't want to deal with any # actual data. So it's just a placeholder. - print('set bbox [box values]', file=ofile) print('load ' + project_with_id + '_fill_pattern', file=ofile) print('snap internal', file=ofile) print('box values {*}$bbox', file=ofile) @@ -120,9 +121,11 @@ print('property GDS_START 0', file=ofile) print('property FIXED_BBOX "$bbox"', file=ofile) - # Now go back to the project top level and place the fill cell. - print('load ' + project, file=ofile) - print('select top cell', file=ofile) + # Create a new project top level and place the fill cell. + print('load ' + project_with_id + ' -quiet', file=ofile) + print('box size 0 0', file=ofile) + print('box position 6um 6um', file=ofile) + print('getcell ' + project + ' child 0 0', file=ofile) print('getcell ' + project_with_id + '_fill_pattern child 0 0', file=ofile) # Move existing origin to (6um, 6um) for seal ring placement