blob: fca9eeeb95ca75e36dc1663d1b40d5c40dcfc046 [file] [log] [blame]
import csv
import os
from klayout.lay import LayoutView
from klayout.lay import LayerPropertiesNode
colors = [
0x2f4f4f,
0x556b2f,
0x8b4513,
0x6b8e23,
0x2e8b57,
0x228b22,
0x800000,
0x708090,
0x483d8b,
0xbc8f8f,
0xbdb76b,
0xcd853f,
0x4682b4,
0x000080,
0x9acd32,
0x20b2aa,
0xcd5c5c,
0x32cd32,
0xdaa520,
0x7f007f,
0x8fbc8f,
0x9932cc,
0xff0000,
0xff8c00,
0xffd700,
0xc71585,
0x0000cd,
0x00ff00,
0x00fa9a,
0xe9967a,
0xdc143c,
0x00ffff,
0x00bfff,
0x0000ff,
0xa020f0,
0xadff2f,
0xb0c4de,
0xff7f50,
0xff00ff,
0xdb7093,
0xffff54,
0x6495ed,
0xdda0dd,
0x90ee90,
0x7b68ee,
0xf5deb3,
0xafeeee,
0xee82ee,
0x7fffd4,
0xff69b4,
0xffc0cb,
]
def parse_layer_info():
dict = {}
layer_map = os.path.join(os.path.dirname(
__file__), '../sky90fd.layermap.csv')
with open(layer_map, newline='') as csvfile:
layer_map_reader = csv.reader(csvfile, delimiter=',', quotechar='|')
next(layer_map_reader)
for row in layer_map_reader:
layer_name = row[0]
layer_datatype = row[2]
key = (layer_name, layer_datatype)
if key in dict:
dict[key].append(row)
else:
dict[key] = [row]
return dict
def create_klayout_hierachy(layout_view):
dict = parse_layer_info()
i = 0
for ((layer_name, layer_number), layers) in dict.items():
current_color = colors[i % len(colors)]
brightness = 50 * (i // len(colors))
layout_view_end = layout_view.end_layers()
parent_layer = LayerPropertiesNode()
parent_layer.name = "{} - {}".format(layer_number, layer_name)
parent_layer.source = "{}/*@*".format(layer_number)
j = 3
for layer in layers:
child_layer = LayerPropertiesNode()
child_layer.name = "{}.{}".format(layer[0], layer[1])
child_layer.source_layer = int(layer[2])
child_layer.source_datatype = int(layer[3])
child_layer.fill_color = current_color
child_layer.dither_pattern = j
if len(layer) == 6:
child_layer.fill_color = int(layer[4], base=16)
child_layer.dither_pattern = int(layer[5])
parent_layer.add_child(child_layer)
j = j + 1
layout_view.insert_layer(layout_view_end, parent_layer)
i = i + 1
def main():
editable = True
layout_view = LayoutView(editable)
create_klayout_hierachy(layout_view)
layout_view.save_layer_props("sky90fd.lyp")
if __name__ == "__main__":
main()