From 876a3c1b221e29191e50531ab5c9dec80763fe93 Mon Sep 17 00:00:00 2001 From: Andreas Westerwick <westerwick@pconas.de> Date: Sun, 11 Aug 2019 20:19:08 +0200 Subject: [PATCH] parallel processing --- Tools/python/split_layers.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/Tools/python/split_layers.py b/Tools/python/split_layers.py index 58557cc..c1172d9 100755 --- a/Tools/python/split_layers.py +++ b/Tools/python/split_layers.py @@ -4,6 +4,9 @@ import sys import os import gdspy +import multiprocessing +from joblib import Parallel, delayed + orig_box_width=10. orig_box_spacing=10. @@ -126,17 +129,8 @@ 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() - - for layername in layer_mapping: - 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") + num_cores = multiprocessing.cpu_count() - 2 + Parallel(n_jobs=num_cores, verbose=50)(delayed(split_task)(p11,p12,p21,p22,cell,layername)for layername in layer_mapping) except Exception as e: print("Can't do this:"+e) @@ -144,6 +138,20 @@ def generate_gds_file(layout_path,cellname): if '-s' in sys.argv: 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") -- GitLab