From bed82733e620ac9d55cd591dc2eef0495c0e690d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sun, 31 Jan 2021 19:21:00 +0100 Subject: [PATCH] Fixed #709. (#714) --- src/db/db/dbNetlistCompare.cc | 2 + src/lvs/unit_tests/lvsSimpleTests.cc | 6 + testdata/lvs/empty_subcells.cir | 25 ++++ testdata/lvs/empty_subcells.gds | Bin 0 -> 1276 bytes testdata/lvs/empty_subcells.lvs | 21 ++++ testdata/lvs/empty_subcells.lvsdb | 167 +++++++++++++++++++++++++++ testdata/lvs/empty_subcells_sch.cir | 12 ++ 7 files changed, 233 insertions(+) create mode 100644 testdata/lvs/empty_subcells.cir create mode 100644 testdata/lvs/empty_subcells.gds create mode 100644 testdata/lvs/empty_subcells.lvs create mode 100644 testdata/lvs/empty_subcells.lvsdb create mode 100644 testdata/lvs/empty_subcells_sch.cir diff --git a/src/db/db/dbNetlistCompare.cc b/src/db/db/dbNetlistCompare.cc index c9103b7c7..5c63f95c7 100644 --- a/src/db/db/dbNetlistCompare.cc +++ b/src/db/db/dbNetlistCompare.cc @@ -4145,6 +4145,8 @@ NetlistComparer::do_subcircuit_assignment (const db::Circuit *c1, const db::NetG ++nscm; if (scc.equals (scm->second, std::make_pair (sc.operator-> (), sc_cat))) { found = true; + } else { + ++scm; } } diff --git a/src/lvs/unit_tests/lvsSimpleTests.cc b/src/lvs/unit_tests/lvsSimpleTests.cc index 44ee2133e..f82345c11 100644 --- a/src/lvs/unit_tests/lvsSimpleTests.cc +++ b/src/lvs/unit_tests/lvsSimpleTests.cc @@ -187,3 +187,9 @@ TEST(21_split_gate) run_test (_this, "nand2_split_gate", "nand2_split_gate.oas"); } +// empty gds +TEST(23_issue709) +{ + run_test (_this, "empty_subcells", "empty_subcells.gds"); +} + diff --git a/testdata/lvs/empty_subcells.cir b/testdata/lvs/empty_subcells.cir new file mode 100644 index 000000000..8c16d33c2 --- /dev/null +++ b/testdata/lvs/empty_subcells.cir @@ -0,0 +1,25 @@ +* Extracted by KLayout + +* cell empty_subcells +.SUBCKT empty_subcells +* cell instance $1 r0 *1 0,0 +X$1 1 2 blockB +* cell instance $2 r0 *1 310,0 +X$2 1 2 blockA +.ENDS empty_subcells + +* cell blockB +* pin V +* pin W +.SUBCKT blockB 1 2 +* net 1 V +* net 2 W +.ENDS blockB + +* cell blockA +* pin A +* pin B +.SUBCKT blockA 1 2 +* net 1 A +* net 2 B +.ENDS blockA diff --git a/testdata/lvs/empty_subcells.gds b/testdata/lvs/empty_subcells.gds new file mode 100644 index 0000000000000000000000000000000000000000..1db25bd36319041e8d876ec6461fd75f9ae9a651 GIT binary patch literal 1276 zcmc(fze)o^5XQgVTqfa&A%@`JklI496NEH(ML@7frD7vQQyKq26twjLEUhhk1bqeZ zMJxq7E5(_;9o!=r6D&NK`9%q7Z@y{jt#7ZYm_Z*ZKgn@P)urY zN4xg)e)sr#gJ$t(E+*;?P7jU}L}h?xEDE5ihd$#_+M{ zS3Iw(`8eY%S^ZDYoYbdzgEDBz@Vc^GOdG6nR9s(|yy}7$DdEaeeQLTTG&>gd{*ilj zSI(crhg%NS?>)ztFplZh1N2{qL~HJ_i