diff --git a/src/drc/drc/built-in-macros/_drc_netter.rb b/src/drc/drc/built-in-macros/_drc_netter.rb index 99823336b5..1985cc67cc 100644 --- a/src/drc/drc/built-in-macros/_drc_netter.rb +++ b/src/drc/drc/built-in-macros/_drc_netter.rb @@ -702,7 +702,8 @@ def _make_data @l2n = RBA::LayoutToNetlist::new(@engine._dss) else layout = @engine.source.layout - @l2n = RBA::LayoutToNetlist::new(layout.top_cell.name, layout.dbu) + cell_name = @engine.source.cell_name + @l2n = RBA::LayoutToNetlist::new(cell_name, layout.dbu) end @l2n.name = "DRC" diff --git a/src/drc/unit_tests/drcSimpleTests.cc b/src/drc/unit_tests/drcSimpleTests.cc index 62d6201680..4fcba65e64 100644 --- a/src/drc/unit_tests/drcSimpleTests.cc +++ b/src/drc/unit_tests/drcSimpleTests.cc @@ -1617,3 +1617,39 @@ TEST(89_deep_with_mag_cop_size_aniso) run_test (_this, "89", true); } +TEST(90_issue1594_dual_top) +{ + std::string rs = tl::testdata (); + rs += "/drc/issue_1594.drc"; + + std::string input = tl::testdata (); + input += "/drc/issue_1594.gds"; + + std::string au = tl::testdata (); + au += "/drc/issue_1594_au.cir"; + + std::string output = this->tmp_file ("tmp.cir"); + + { + // Set some variables + lym::Macro config; + config.set_text (tl::sprintf ( + "$drc_force_gc = true\n" + "$drc_test_source = '%s'\n" + "$drc_test_target = '%s'\n" + , input, output) + ); + config.set_interpreter (lym::Macro::Ruby); + EXPECT_EQ (config.run (), 0); + } + + lym::Macro drc; + drc.load_from (rs); + EXPECT_EQ (drc.run (), 0); + + // verify + + CHECKPOINT (); + compare_netlists (_this, output, au); +} + diff --git a/testdata/drc/issue_1594.drc b/testdata/drc/issue_1594.drc new file mode 100644 index 0000000000..63d7ea7dce --- /dev/null +++ b/testdata/drc/issue_1594.drc @@ -0,0 +1,15 @@ +source($drc_test_source, "TOP1") + +# This is just a smoke test without actual devices + +l1 = input(1, 0) +l2 = input(2, 0) +l3 = input(3, 0) + +connect(l1, l2) +connect(l2, l3) + +writer = RBA::NetlistSpiceWriter::new + +netlist.write($drc_test_target, writer, "netlist") + diff --git a/testdata/drc/issue_1594.gds b/testdata/drc/issue_1594.gds new file mode 100644 index 0000000000..fa9036ee39 Binary files /dev/null and b/testdata/drc/issue_1594.gds differ diff --git a/testdata/drc/issue_1594_au.cir b/testdata/drc/issue_1594_au.cir new file mode 100644 index 0000000000..ea8030c0a7 --- /dev/null +++ b/testdata/drc/issue_1594_au.cir @@ -0,0 +1,5 @@ +* netlist + +* cell TOP1 +.SUBCKT TOP1 +.ENDS TOP1