blob: 4d45b0e76f038ba155668119a718f2b7702a5b7d [file] [log] [blame]
####################################################################################################
##
###################################################################################################
import pya
import os
import glob
layout = pya.Layout()
layout.dbu = 0.001
wrapper_path = os.path.join(os.path.abspath(".."), "test_integrate", "caravel.gds")
layout.read(wrapper_path)
output_layout_path = os.path.join(os.path.abspath(".."), "test_integrate", "analog_rf_wrapper_gen.gds")
gds_files = glob.glob(os.path.join("*", )
wrapper_top_cell = "caravel"
## TODO: Find cell by name in a better way from klayout. layout.cell_by_name(Name)
TOP= None
for tc in layout.top_cells():
if tc.name == wrapper_top_cell:
TOP = tc
break
print("## Integrating GDS files: ", gds_files)
start_point = (10, 20)
block_space = 20
x = start_point[0]
y = start_point[1]
for f in gds_files:
layout.read(f)
for tc in layout.top_cells():
# we don't want to insert the topcell itself
if (tc.name != wrapper_top_cell):
print("## Adding " + tc.name)
cell_index = tc.cell_index()
cbbx = tc.bbox()
ll = cbbx.p1
ur = cbbx.p2
h = cbbx.height()
x -= ll.x
y -= ll.y + h
new_instance=pya.CellInstArray(cell_index, pya.Trans(pya.Point(x, y)))
TOP.insert(new_instance)
y += block_space
layout.write(output_layout_path)