From 866ee9bd817f6b55cd179fd00bc7728f83e2bcbf Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 21 Mar 2021 23:27:42 +0100 Subject: [PATCH] DRC: tiling mode with global transformation, debug + tested --- src/db/db/dbRecursiveShapeIterator.cc | 2 ++ .../dbRecursiveShapeIteratorTests.cc | 10 ++++++ src/drc/unit_tests/drcSimpleTests.cc | 5 +++ testdata/drc/drcSimpleTests_33.drc | 34 ++++++++++++++++++ testdata/drc/drcSimpleTests_33.gds | Bin 0 -> 764 bytes testdata/drc/drcSimpleTests_au33d.gds | Bin 0 -> 10166 bytes 6 files changed, 51 insertions(+) create mode 100644 testdata/drc/drcSimpleTests_33.drc create mode 100644 testdata/drc/drcSimpleTests_33.gds create mode 100644 testdata/drc/drcSimpleTests_au33d.gds diff --git a/src/db/db/dbRecursiveShapeIterator.cc b/src/db/db/dbRecursiveShapeIterator.cc index 7cb884550..075752113 100644 --- a/src/db/db/dbRecursiveShapeIterator.cc +++ b/src/db/db/dbRecursiveShapeIterator.cc @@ -593,6 +593,8 @@ RecursiveShapeIterator::bbox () const } } + box = box.transformed (m_global_trans); + if (m_region != box_type::world ()) { box &= m_region; } diff --git a/src/db/unit_tests/dbRecursiveShapeIteratorTests.cc b/src/db/unit_tests/dbRecursiveShapeIteratorTests.cc index 2f5577c58..cd9829ce7 100644 --- a/src/db/unit_tests/dbRecursiveShapeIteratorTests.cc +++ b/src/db/unit_tests/dbRecursiveShapeIteratorTests.cc @@ -107,6 +107,16 @@ TEST(1) std::string x; + db::RecursiveShapeIterator i0s (g, c0, 0); + x = collect(i0s, g); + EXPECT_EQ (x, "[$1](0,100;1000,1200)/[$2](0,100;1000,1200)/[$3](100,0;1100,1100)/[$4](1200,0;2200,1100)/[$4](-1200,0;-100,1000)"); + EXPECT_EQ (i0s.bbox ().to_string (), "(-1200,0;2200,1200)"); + + i0s.set_global_trans (db::ICplxTrans (2.0)); + x = collect(i0s, g); + EXPECT_EQ (x, "[$1](0,200;2000,2400)/[$2](0,200;2000,2400)/[$3](200,0;2200,2200)/[$4](2400,0;4400,2200)/[$4](-2400,0;-200,2000)"); + EXPECT_EQ (i0s.bbox ().to_string (), "(-2400,0;4400,2400)"); + db::RecursiveShapeIterator i1 (g, c0, 0, db::Box (0, 0, 100, 100)); x = collect(i1, g); EXPECT_EQ (x, "[$1](0,100;1000,1200)/[$2](0,100;1000,1200)/[$3](100,0;1100,1100)"); diff --git a/src/drc/unit_tests/drcSimpleTests.cc b/src/drc/unit_tests/drcSimpleTests.cc index b1923f9cc..55627e7a9 100644 --- a/src/drc/unit_tests/drcSimpleTests.cc +++ b/src/drc/unit_tests/drcSimpleTests.cc @@ -1188,3 +1188,8 @@ TEST(32d_globalTransformationWithClip) run_test (_this, "32", true); } +TEST(33_globalTransformationWithTiles) +{ + run_test (_this, "33", true); +} + diff --git a/testdata/drc/drcSimpleTests_33.drc b/testdata/drc/drcSimpleTests_33.drc new file mode 100644 index 000000000..3e16fbb64 --- /dev/null +++ b/testdata/drc/drcSimpleTests_33.drc @@ -0,0 +1,34 @@ + +source $drc_test_source +target $drc_test_target + +tiles(10.um) + +global_transform(magnify(2.0), shift(10.um, 20.um)) + +# The actual DRC test + +l1 = input(1, 0) +l2 = input(2, 0) + +l1.output(1, 0) +l2.output(2, 0) + +l1.merged.output(10, 0) +l1.sized(100.nm).output(11, 0) +l2.sized(100.nm).output(12, 0) + +# reset +global_transform + +l1 = input(1, 0) +l2 = input(2, 0) + + +l1.output(101, 0) +l2.output(102, 0) + +l1.merged.output(110, 0) +l1.sized(100.nm).output(111, 0) +l2.sized(100.nm).output(112, 0) + diff --git a/testdata/drc/drcSimpleTests_33.gds b/testdata/drc/drcSimpleTests_33.gds new file mode 100644 index 0000000000000000000000000000000000000000..735cbfe7cbf537ea3557dfceada52a2ade966de4 GIT binary patch literal 764 zcmah{Jxc>Y5Pi3Iw|C~le3+=nHG*KFpoI_x3FHGzV#J_Vi1;IH1PcpW`*fzT(;r}A zk=ojyV4+}XVUgnSoZZdlR*SgH-MgFFnK!dluMK%uX2;T-T@0FByS=tIVPm|ACw^G2)PZ4y%o@QbSIOx}*;?~JTPW-)wx$s&6u zaO;obTIn=keI=*=;q*BV4||F+Rn+`4%Q&OtOaqD6pJNa^5L}{Hv8vY+er}r z(#2|C`Tl6JBD#!TfyRg$dIOFlg^kg~ZffvL!}$lGQUU~417PheL2V~AkA0OC&_4Q5L(2Bm>{$(p|gKf0U_R02t+v>i7iH9FDyJO|5Jr6$r zz$1VC?d7k2bN)+nFFrnHL#q*$Nx@c%PYV9b9QP{JPm2gJxrI znqAuzF^UzUQxQU z=%;4p3;8^|*igDN^;4(D!H*A0&+5m=d?9t?6Qw)T{M4y&@Z*Ehv-+9i@v)feE2FV* zMCs0U{=WL$?AEz?+w*fyJ{UCHX${{!X7=EmnW#8tHQw!U4mIAu=Q)k5KjEip<)RHS z`dydJ7QC8o%r|`LSkKv1r|~mBlb?>8!6QD{&T|c=J9|}g)Bm}#@NuC_SqmA9X_N#xF|G>Sy1*{B-P}*M?*Nh|-%H<$aL%}We}6hiUT#s5x7mRM@m7Pp z)p#z-=j=6pRad(X=GA`7w(9KVuja??Mjl9B%|r7-XP%Jpxcx-=viWff>a)jt&z=*d zJA2Kqs*f1r;ZrY!UzF}l{lw#^2J(y2ovB~9HTB{brFY%p+BY}nPdxc``-{?@#r*6a zypVd?AEI<;>L(sQ_2L($J5xXL_~{#dQMxnr^R~oKz4%4xU2oAP{bPT>G1#0p_BZKYhkS-|>sm zv;O0wPf*{UMCo1qTT|b=yQ*(7GiHA~<=BGLe?}^yQP`Weq z<0F=RhfkF5O#Q^;f97!bMd{Ae|KdXUsh9ksbZ6=(p8T&I55FkgS@g3H@IvZkABobP zsh@cK)Qew~?o9o}%V-Ee&H7xr+%L1C!RR^j$f4SO#Sp3KYiD^h0?SB z=`%jZ!f70(?znkFSulqagXv2S;j9!Y0bGGYQGT!iv*+0D=_`%Qo z`}l!|@7{>kPMXZ7Qobq}078h%l_ zvzVWHsZ({24MzP?dRD)DkbQ_xR38ibvD!cQ*k_P^_mHopC_USM)cwvKQU8_Ms9%)s zEY?qtStrQ)JwMb?dbWS@>BG9=7o|JX{HznPtQ&q&dbWP}s1s5*eo=Z?{ZG~Ri+?}s zbZ)$5w%6~KweElHMsV--n|gcR@>T2hDPQXcJTKhiIq!R-p>$`#-|2khHJb%D95!2V z)l8J`0g1oUdG9%m6MjZqaaB4j`6CzcvRkmr?`M2I z{M68X3rhF#lKf`6t(Y%gt>E-(AdsSc6f9j@xLFrlj^grTQ2YlS# zLFu`lo)HiEkYAMUEc7qdpE&a4Bfls;^ApRNf%KjHqI74PUuO;<`9-YYR{mr+ysb9t0hrfsCEmS?P;+D)qfug=kjCw-lVJDm?t#(Mg{cc|92Z(2Ic{KSWU!&_$fMd@AZ z*p=Vx?o;7szW7DycQ5^wWSO7y!u)q%4!Z|(1zN7y^=~?~sKjK&ie5_AU zdhTa^h==rz{GxPcVf|wLi6cKg@{7_lKY6#-`RP0PMd{8oKXKZJ