From 33a3a1579140c13e417cabe7a1853d2c45826ef6 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Wed, 7 Aug 2024 00:26:10 +0200 Subject: [PATCH] Bugfix: 'netter' function in DRC wasn't working as described - it raised an error --- src/drc/drc/built-in-macros/_drc_engine.rb | 2 +- src/drc/unit_tests/drcSimpleTests.cc | 10 +++++ testdata/drc/drcSimpleTests_71.drc | 41 +++++++++++++++++++++ testdata/drc/drcSimpleTests_71.gds | Bin 0 -> 1212 bytes testdata/drc/drcSimpleTests_au71.gds | Bin 0 -> 6004 bytes testdata/drc/drcSimpleTests_au71d.gds | Bin 0 -> 4418 bytes 6 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 testdata/drc/drcSimpleTests_71.drc create mode 100644 testdata/drc/drcSimpleTests_71.gds create mode 100644 testdata/drc/drcSimpleTests_au71.gds create mode 100644 testdata/drc/drcSimpleTests_au71d.gds diff --git a/src/drc/drc/built-in-macros/_drc_engine.rb b/src/drc/drc/built-in-macros/_drc_engine.rb index bcf27580b..176bf9aaa 100644 --- a/src/drc/drc/built-in-macros/_drc_engine.rb +++ b/src/drc/drc/built-in-macros/_drc_engine.rb @@ -2308,7 +2308,7 @@ CODE def netter self._context("netter") do - DRC::DRCNetter::new + DRC::DRCNetter::new(self) end end diff --git a/src/drc/unit_tests/drcSimpleTests.cc b/src/drc/unit_tests/drcSimpleTests.cc index a561ad241..31ae49654 100644 --- a/src/drc/unit_tests/drcSimpleTests.cc +++ b/src/drc/unit_tests/drcSimpleTests.cc @@ -1568,6 +1568,16 @@ TEST(70d_props) run_test (_this, "70", true); } +TEST(71_netter) +{ + run_test (_this, "71", false); +} + +TEST(71d_netter) +{ + run_test (_this, "71", true); +} + TEST(80_deep_with_mag_width) { run_test (_this, "80", true); diff --git a/testdata/drc/drcSimpleTests_71.drc b/testdata/drc/drcSimpleTests_71.drc new file mode 100644 index 000000000..e5d6dbf65 --- /dev/null +++ b/testdata/drc/drcSimpleTests_71.drc @@ -0,0 +1,41 @@ + +# Moved implementation + +source($drc_test_source) +target($drc_test_target) + +if $drc_test_deep + deep +end + +l1 = input(1, 0) +l2 = input(2, 0) +l3 = input(3, 0) + +# dump to output + +l1.output(1, 0) +l2.output(2, 0) +l3.output(3, 0) + +ctx1 = netter +ctx1.connect(l1, l2) + +connect(l1, l3) + +l1.nets.output(100, 0) +begin + l2.nets.output(101, 0) + raise "internal error - l2 was not used in connectivity" +rescue => ex +end +l3.nets.output(102, 0) + +l1.nets(ctx1).output(110, 0) +l2.nets(ctx1).output(111, 0) +begin + l3.nets(ctx1).output(112, 0) + raise "internal error - l3 was not used in connectivity" +rescue => ex +end + diff --git a/testdata/drc/drcSimpleTests_71.gds b/testdata/drc/drcSimpleTests_71.gds new file mode 100644 index 0000000000000000000000000000000000000000..d2cac040afc722c40d2ce3d05f1cf8f65c2ef715 GIT binary patch literal 1212 zcma)5yG{a85IuJvvkR^dgkUr@8cGry6SXlyXpAHpLqVu4EGaDc01E9WO>8Vo`~?eZ zLup}U`~XS{YuA~3cVQ*FA_*M!&YYRK=gfj&SshfA<&ELP15iLU`5(STt&;{&vfZQl z?f&WO)8w%Ey!&w9ZKL95^N6SpI6gqj78Gd3;_9_En|~7@x6cnFAjU+Bjc0P5QJvUDCmhrwM z{NxC2DZY77aT{Gm`RLr@4WMc!H_a`tXWWt5)X?18V0^Ao_e$fteUm3!FFaAtV0`{J z-yWDedti9tnees$yggAov%eY|zHsC#ei)3;XZ<5*_zj+SQFfYDN;ng3o1MCCO}%aG lf_(wxCo^2y0m>ghjJZpoSOpA*VR!(D;*9!6{GK}wegJw{l{^3d literal 0 HcmV?d00001 diff --git a/testdata/drc/drcSimpleTests_au71.gds b/testdata/drc/drcSimpleTests_au71.gds new file mode 100644 index 0000000000000000000000000000000000000000..389d5ccac2f2de5d43babec62ca13e36ad2540de GIT binary patch literal 6004 zcmb_gJ!o7<5T1K?_wGqL%d&NrVxvL{uk%5`QT$g3Tc~h|z{aQ$!bOUZ$~a93E>ffr zMgbQp14-e+;MRpPE{suOLJAiuQiPDwg{t5pW$<~vot^ii)7v*sk>U8{+5NuVot>SX zeH2p^ZO}q1>g`iPJtCT;tHr-5iQ=^{R)_}e?(+4YE`9milXq8EUwr!Lm(6ur=mvOk zyngc*Q70jaPejzBcsgSJ;Y^#TcXu>;{|At$wL_FFDXQIJ=Trs1dtdr>?+Y)!rl|HX zzr7{>+FQcwtSPEJ%x~>TKg=CJ_Mu0$hxzn7d&2*~pZH4nK(#Ygt{;7(m(n-)ou7lZ zb9*HpT>XI$KPaj_#P2*6J`gk5cvG9T5Ar2J5_wAMZ)xH=WzdI0q z_iy26sP;ja-%Etw+Y^3K8zLzy3mZWs?#AoEOi0r0k$) zD%dk`*snXaz6!88chq@0z&`rAF>}rv|6^><8U^-*#A)R3srX|=YjTorE6%nl;uUd) zQvyWBK|Cn3-9>OvW#FQoBLgbfbrZ{tJ^h{AC+fe=k$p$7GaAQ6Z{%7a&%Ai%c-;rj zC(efW=s;v0(${70y`n$+nLi7<6_J2dNgM@7s$gR^obku^vVG`Yu3{H(gSKxIO}@)< z>Ju)1{vuMu-p;17$Fu2ZG`bA$Idq=mjYMVhb+NKB-VE`1MAzgn-WW=iRH$^u^so=m z&2ET&$+($)k<5C=o6oF=c^Ph^MtX*usga)ENP0sls-4lSXRKV!dWb{)1u8+ap5~_- zH0v2FZL^-S@;2)kD{-?P_5u|o5IGHdqNsL8vmQA5gHA=IZPx2N6+IyIa0e)29N%u% zGgjheJ!54a()-5e(>uu1r+3+B&joRA=f3BB>~Zpy*cGQ95X~=h{`QFTjmlI}br>z< zyO-+eUC#Hv=JS9abY{2J?$E54=MUkl4p3gi4$XR#5BVBlKLD|A_)AgkjAlI-|Nlt* zW1Um$vR+{1?TltU%nLd?Pv~G?s_WZBdiRR=Ywo}D*-Vzq{wwKe?gbt(|CaP>@~+m8 z=Jg&!{w>Y#81ipP?-=rLNzcU}=P_WiRNiCcH{YK5FTLOjsA4@<(rcP8>-3uD%k;DG z{F>&=I=!a#XSx)gU(@=|qSvIpOFyrlpVo0&*D0!VxddQ>l7<2!QpU2X8{U2Fl z$e%74@x{u$Ulj*LCvM1l0*EhaXwT5|n4ga~9=|%CyT1`@c<}td9UtQhpCD>8*EGBm7TL<$ zmo=?lR#l-159&1W_c~3opKGe4F&zHpV-hibBTBamsPc}Svnm=>J(B-WfP`@Iy|I^^+^IKTze2wf1>M4u`|n*gr?i za;LAgpWc=AdT#g+Ka|JmYwg=FWjzpaf!~VYar%+=SdVpxBm7WQIb+d&tvG4(^GhXR z>Z7vKdFgwnA5~E$z7y!k65k1QWQp$tIV|3&ZK1^-!=DCoZsGQL|AF$Cc z_%I(7Ro;Xz+7Uh=cx=5zDW&Oe=-iiP=E$;baSL=pV~o19?q literal 0 HcmV?d00001