<@U073W5ECDQ9> is there any method to automaticall...
# ihp-sg13g2
k
@Andreas Krinke is there any method to automatically fix the off-grid errors? I found 'snap' and 'snapped' but I do not know how it performs.
a
I think
snap
is exactly what you are looking for:
Copy code
met1 = source.input("16/0")
met1.snap(1000).output("16/0")
This will snap all polygons on the layer.
👍 1
o
how can i use this function? is it python? what do i need to import? or is there an example?
k
Copy code
Activ = source.input("1/0")
Activ_pin = source.input("1/2")
Activ_mask = source.input("1/20")
Activ_filler = source.input("1/22")
Activ_nofill = source.input("1/23")
BiWind = source.input("3/0")
GatPoly = source.input("5/0")
GatPoly_pin = source.input("5/2")
GatPoly_filler = source.input("5/22")
GatPoly_nofill = source.input("5/23")
Cont = source.input("6/0")
nSD = source.input("7/0")
nSD_block = source.input("7/21")
Metal1 = source.input("8/0")
Metal1_pin = source.input("8/2")
Metal1_filler = source.input("8/22")
Metal1_nofill = source.input("8/23")
Metal1_slit = source.input("8/24")
Passiv = source.input("9/0")
Metal2 = source.input("10/0")
Metal2_pin = source.input("10/2")
Metal2_filler = source.input("10/22")
Metal2_nofill = source.input("10/23")
Metal2_slit = source.input("10/24")
BasPoly = source.input("13/0")
pSD = source.input("14/0")
DigiBnd = source.input("16/0")
Via1 = source.input("19/0")
RES = source.input("24/0")
SRAM = source.input("25/0")
TRANS = source.input("26/0")
IND = source.input("27/0")
SalBlock = source.input("28/0")
Via2 = source.input("29/0")
Metal3 = source.input("30/0")
Metal3_pin = source.input("30/2")
Metal3_filler = source.input("30/22")
Metal3_nofill = source.input("30/23")
Metal3_slit = source.input("30/24")
NWell = source.input("31/0")
NWell_pin = source.input("31/2")
nBuLay = source.input("32/0")
nBuLay_block = source.input("32/21")
EmWind = source.input("33/0")
DeepCo = source.input("35/0")
MIM = source.input("36/0")
EdgeSeal = source.input("39/0")
dfpad = source.input("41/0")
dfpad_pillar = source.input("41/35")
dfpad_sbump = source.input("41/36")
ThickGateOx = source.input("44/0")
PWell = source.input("46/0")
PWell_block = source.input("46/21")
Via3 = source.input("49/0")
Metal4 = source.input("50/0")
Metal4_pin = source.input("50/2")
Metal4_filler = source.input("50/22")
Metal4_nofill = source.input("50/23")
Metal4_slit = source.input("50/24")
EmPoly = source.input("55/0")
DigiSub = source.input("60/0")
TEXT_0 = source.labels("63/0")
Via4 = source.input("66/0")
Metal5 = source.input("67/0")
Metal5_pin = source.input("67/2")
Metal5_filler = source.input("67/22")
Metal5_nofill = source.input("67/23")
Metal5_slit = source.input("67/24")
Polimide = source.input("98/0")
Recog = source.input("99/0")
Recog_esd = source.input("99/30")
Recog_diode = source.input("99/31")
Recog_tsv = source.input("99/32")
EXTBlock = source.input("111/0")
TopVia1 = source.input("125/0")
TopMetal1 = source.input("126/0")
TopMetal1_pin = source.input("126/2")
TopMetal1_filler = source.input("126/22")
TopMetal1_nofill = source.input("126/23")
TopMetal1_slit = source.input("126/24")
PolyRes = source.input("128/0")
Vmim = source.input("129/0")
TopVia2 = source.input("133/0")
TopMetal2 = source.input("134/0")
TopMetal2_pin = source.input("134/2")
TopMetal2_filler = source.input("134/22")
TopMetal2_nofill = source.input("134/23")
TopMetal2_slit = source.input("134/24")
ColWind = source.input("139/0")
RFMEM = source.input("147/0")
DeepVia = source.input("152/0")
LBE = source.input("157/0")
NoMetFiller = source.input("160/0")

  


GatPoly.snap(5).output("5/0")

Metal1.snap(5).output("8/0")
Metal2.snap(5).output("10/0")
Metal3.snap(5).output("30/0")
Metal4.snap(5).output("50/0")
Metal5.snap(5).output("67/0")
TopMetal1.snap(5).output("126/0")
TopMetal2.snap(5).output("134/0")

Via1.snap(5).output("19/0")
Via2.snap(5).output("29/0")
Via3.snap(5).output("49/0")
Via4.snap(5).output("66/0")
TopVia1.snap(5).output("125/0")
TopVia2.snap(5).output("133/0")

Vmim.snap(5).output("129/0")
MIM.snap(5).output("36/0")

Activ.snap(5).output("1/0")
Cont.snap(5).output("6/0")
nSD.snap(5).output("7/0")
pSD.snap(5).output("14/0")
NWell.snap(5).output("31/0")
ThickGateOx.snap(5).output("44/0")
just choose layers of your interest and run as macro
o
it tells me "NameError: undefined local variable or method `source' for main:Object (eval)1in `<main>'"
it seems go to a .lym file...
ok now the long DRC to look it it worked 🙂
k
good to hear
o
i did upload it. the file its much bigger, so i had to .zip it.
thanks for Your help!
k
Ok let me check
I will have to rename top cell name
it is too long
I set it to
mmW_detector
so please update it and commit again to have consistency
also change the filename to
FMD_QNC_mmW_detector.gds.gz