blob: bc25433ad830d1bdee00f6868d1a349c30f86f9a [file] [log] [blame]
########################################################################################################################
# Copyright 2022 Mabrains Company LLC
#
# Licensed under the LGPL v2.1 License (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##
########################################################################################################################
##
# This file is authored by:
# - <Mina Maksimous> <mina_maksimous@mabrains.com>
##
########################################################################################################################
import pandas as pd
import pya
import os
# print(os.system('pwd'))
lay_csv_map = os.path.join(os.path.dirname(os.path.realpath(__file__)),"gds_layers.csv")
lay_df = pd.read_csv(lay_csv_map)
# print(lay_df)
nsdm_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "nsdm") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
psdm_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "psdm") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
diff_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "diff") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
poly_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "poly") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
licon_lay_str = lay_df.loc[
(lay_df["Layer name"] == "licon1") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[0]
npc_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "npc") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
li_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "li1") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
mcon_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "mcon") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
met1_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met1") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
tap_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "tap") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
nwell_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "nwell") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
dnwell_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "dnwell") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
via_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "via") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
met2_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met2") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
met3_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met3") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
met4_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met4") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
met5_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met5") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
via2_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "via2") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
via3_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "via3") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
via2_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "via2") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
via3_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "via3") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
via4_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "via4") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
urpm_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "urpm") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
poly_res_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "poly") & (lay_df["Purpose"].str.contains("resistor")), "GDS layer:datatype"].values[
0]
prbndry_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "prBndry") & (lay_df["Purpose"].str.contains("boundary")), "GDS layer:datatype"].values[
0]
poly_label_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "poly") & (lay_df["Purpose"].str.contains("label")), "GDS layer:datatype"].values[
0]
met1_label_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met1") & (lay_df["Purpose"].str.contains("label")), "GDS layer:datatype"].values[
0]
me1_pin_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met1") & (lay_df["Purpose"].str.contains("pin")), "GDS layer:datatype"].values[
0]
met2_label_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met2") & (lay_df["Purpose"].str.contains("label")), "GDS layer:datatype"].values[
0]
met4_label_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met4") & (lay_df["Purpose"].str.contains("label")), "GDS layer:datatype"].values[
0]
met5_label_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "met5") & (lay_df["Purpose"].str.contains("label")), "GDS layer:datatype"].values[
0]
l_capm_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "capm") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
l_cap2m_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "cap2m") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
l_hvntm_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "hvntm") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
l_hvi_lay_str = \
lay_df.loc[(lay_df["Layer name"] == "hvi") & (lay_df["Purpose"].str.contains("drawing")), "GDS layer:datatype"].values[
0]
# print(diff_lay_str)
diff_lay_num = int(diff_lay_str.split(":")[0])
diff_lay_dt = int(diff_lay_str.split(":")[1])
poly_lay_num = int(poly_lay_str.split(":")[0])
poly_lay_dt = int(poly_lay_str.split(":")[1])
licon_lay_num = int(licon_lay_str.split(":")[0])
licon_lay_dt = int(licon_lay_str.split(":")[1])
nsdm_lay_num = int(nsdm_lay_str.split(":")[0])
nsdm_lay_dt = int(nsdm_lay_str.split(":")[1])
psdm_lay_num = int(psdm_lay_str.split(":")[0])
psdm_lay_dt = int(psdm_lay_str.split(":")[1])
npc_lay_num = int(npc_lay_str.split(":")[0])
npc_lay_dt = int(npc_lay_str.split(":")[1])
li_lay_num = int(li_lay_str.split(":")[0])
li_lay_dt = int(li_lay_str.split(":")[1])
mcon_lay_num = int(mcon_lay_str.split(":")[0])
mcon_lay_dt = int(mcon_lay_str.split(":")[1])
met1_lay_num = int(met1_lay_str.split(":")[0])
met1_lay_dt = int(met1_lay_str.split(":")[1])
tap_lay_num = int(tap_lay_str.split(":")[0])
tap_lay_dt = int(tap_lay_str.split(":")[1])
nwell_lay_num = int(nwell_lay_str.split(":")[0])
nwell_lay_dt = int(nwell_lay_str.split(":")[1])
dnwell_lay_num = int(dnwell_lay_str.split(":")[0])
dnwell_lay_dt = int(dnwell_lay_str.split(":")[1])
via_lay_num = int(via_lay_str.split(":")[0])
via_lay_dt = int(via_lay_str.split(":")[1])
met2_lay_num = int(met2_lay_str.split(":")[0])
met2_lay_dt = int(met2_lay_str.split(":")[1])
met3_lay_num = int(met3_lay_str.split(":")[0])
met3_lay_dt = int(met3_lay_str.split(":")[1])
met4_lay_num = int(met4_lay_str.split(":")[0])
met4_lay_dt = int(met4_lay_str.split(":")[1])
met5_lay_num = int(met5_lay_str.split(":")[0])
met5_lay_dt = int(met5_lay_str.split(":")[1])
via2_lay_num = int(via2_lay_str.split(":")[0])
via2_lay_dt = int(via2_lay_str.split(":")[1])
via3_lay_num = int(via3_lay_str.split(":")[0])
via3_lay_dt = int(via3_lay_str.split(":")[1])
via4_lay_num = int(via4_lay_str.split(":")[0])
via4_lay_dt = int(via4_lay_str.split(":")[1])
urpm_lay_num = int(urpm_lay_str.split(":")[0])
urpm_lay_dt = int(urpm_lay_str.split(":")[1])
poly_res_lay_num = int(poly_res_lay_str.split(":")[0])
poly_res_lay_dt = int(poly_res_lay_str.split(":")[1])
prbndry_lay_num = int(prbndry_lay_str.split(":")[0])
prbndry_lay_dt = int(prbndry_lay_str.split(":")[1])
poly_label_lay_num = int(poly_label_lay_str.split(":")[0])
poly_label_lay_dt = int(poly_label_lay_str.split(":")[1])
met1_label_lay_num = int(met1_label_lay_str.split(":")[0])
met1_label_lay_dt = int(met1_label_lay_str.split(":")[1])
met1_pin_lay_num = int(me1_pin_lay_str.split(":")[0])
met1_pin_lay_dt = int(me1_pin_lay_str.split(":")[1])
met2_label_lay_num = int(met2_label_lay_str.split(":")[0])
met2_label_lay_dt = int(met2_label_lay_str.split(":")[1])
met4_label_lay_num = int(met4_label_lay_str.split(":")[0])
met4_label_lay_dt = int(met4_label_lay_str.split(":")[1])
met5_label_lay_num = int(met5_label_lay_str.split(":")[0])
met5_label_lay_dt = int(met5_label_lay_str.split(":")[1])
capm_lay_num = int(l_capm_lay_str.split(":")[0])
capm_lay_dt = int(l_capm_lay_str.split(":")[1])
cap2m_lay_num = int(l_cap2m_lay_str.split(":")[0])
cap2m_lay_dt = int(l_cap2m_lay_str.split(":")[1])
hvntm_lay_num = int(l_hvntm_lay_str.split(":")[0])
hvntm_lay_dt = int(l_hvntm_lay_str.split(":")[1])
hvi_lay_num = int(l_hvi_lay_str.split(":")[0])
hvi_lay_dt = int(l_hvi_lay_str.split(":")[1])