diff --git a/Tools/python/split_layers.py b/Tools/python/split_layers.py index f5c067287b725549d1b34d8f08f04ce5e9c48e3e..584d8f7b54e2f21f4d6cfd7b4e0c54f38b109972 100755 --- a/Tools/python/split_layers.py +++ b/Tools/python/split_layers.py @@ -129,8 +129,21 @@ def generate_gds_file(layout_path,cellname): cell=cell.add(gdspy.Rectangle(p11, p12, 1)) cell=cell.add(gdspy.Rectangle(p21, p22, 1)) cell=cell.flatten() - num_cores = multiprocessing.cpu_count() - Parallel(n_jobs=max(1,num_cores-2), verbose=50)(delayed(split_task)(p11,p12,p21,p22,cell,layername)for layername in layer_mapping) + + assertflat=0 + for layername in layer_mapping: + print(layername) + ncell=gdspy.Cell(layername) + thelayers=layer_mapping[layername] + for element in cell.polygons: + assert 1 == max(assertflat,len(element.polygons)) + if element.layers[0] in thelayers: ncell.add(element) + ncell=ncell.add(gdspy.Rectangle(p11, p12, 1)) + ncell=ncell.add(gdspy.Rectangle(p21, p22, 1)) + ncell=ncell.flatten(single_layer=1,single_datatype=1) + newgdsii=gdspy.GdsLibrary("mask_"+layername) + newgdsii.add(ncell) + newgdsii.write_gds(layout_path+"/gds/mask_"+layername+".gds") except Exception as e: print("Can't do this:"+e) @@ -139,19 +152,6 @@ def generate_gds_file(layout_path,cellname): gdspy.LayoutViewer() -def split_task(p11,p12,p21,p22,cell,layername): - ncell=cell.copy(layername,deep_copy=True) - thelayers=layer_mapping[layername] - ncell=ncell.remove_polygons(lambda pts, layer, datatype: layer not in thelayers) - ncell=ncell.add(gdspy.Rectangle(p11, p12, 1)) - ncell=ncell.add(gdspy.Rectangle(p21, p22, 1)) - ncell=ncell.flatten(single_layer=1,single_datatype=1) - newgdsii=gdspy.GdsLibrary("mask_"+layername) - newgdsii.add(ncell) - newgdsii.write_gds(layout_path+"/gds/mask_"+layername+".gds") - print(layername) - - def show_help(): print("-n cellname:\tname of the cell to export") print("-l:\t\tswitch to render library cells because default is layout cells")