From df1efa802bab49f715886080515d40e21efdd5ba Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sat, 21 Jan 2023 15:55:05 +0100 Subject: [PATCH] WIP: some bug fixes, unit tests updated --- src/db/db/gsiDeclDbNetlist.cc | 5 +++-- src/drc/drc/built-in-macros/_drc_source.rb | 5 +++-- testdata/drc/drcGenericTests_au8.gds | Bin 2554 -> 2682 bytes testdata/drc/drcGenericTests_au8d.gds | Bin 2158 -> 2286 bytes 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/db/db/gsiDeclDbNetlist.cc b/src/db/db/gsiDeclDbNetlist.cc index 4ecc0e002..c083786ac 100644 --- a/src/db/db/gsiDeclDbNetlist.cc +++ b/src/db/db/gsiDeclDbNetlist.cc @@ -1455,10 +1455,11 @@ nets_by_name_const_from_netlist (const db::Netlist *netlist, const std::string & tl::GlobPattern glob (name_pattern); glob.set_case_sensitive (netlist->is_case_sensitive ()); for (auto c = netlist->begin_circuits (); c != netlist->end_circuits (); ++c) { + bool is_top = (c->begin_parents () == c->end_parents ()); for (auto n = c->begin_nets (); n != c->end_nets (); ++n) { const db::Net *net = n.operator-> (); - // NOTE: we only pick root nets (pin_count == 0) - if (net->pin_count () == 0 && glob.match (net->name ())) { + // NOTE: we only pick root nets (pin_count == 0 or in top cell) + if ((is_top || net->pin_count () == 0) && glob.match (net->name ())) { res.push_back (net); } } diff --git a/src/drc/drc/built-in-macros/_drc_source.rb b/src/drc/drc/built-in-macros/_drc_source.rb index 6cade1e21..ba1b8a457 100644 --- a/src/drc/drc/built-in-macros/_drc_source.rb +++ b/src/drc/drc/built-in-macros/_drc_source.rb @@ -351,7 +351,7 @@ CODE @layout_var.cells(cell_filter).each do |cell| cell.shapes(tmp).insert(cell.bbox) end - layer = DRCLayer::new(@engine, @engine._cmd(@engine, :_input, @layout_var, @cell.cell_index, [tmp], @sel, @box, @clip, @overlapping, RBA::Shapes::SAll, @global_trans, RBA::Region)) + layer = DRCLayer::new(@engine, @engine._cmd(@engine, :_input, @layout_var, @cell.cell_index, [tmp], @sel, @box, @clip, @overlapping, RBA::Shapes::SAll, @global_trans, [], RBA::Region)) else layer = input layer.insert((RBA::DBox::from_ibox(@cell.bbox) * @layout.dbu).transformed(@global_trans)) @@ -555,7 +555,8 @@ CODE def make_layer layers = [] - DRCLayer::new(@engine, @engine._cmd(@engine, :_input, @layout_var, @cell.cell_index, layers, @sel, @box, @clip, @overlapping, RBA::Shapes::SAll, @global_trans, RBA::Region)) + prop_selectors = [] + DRCLayer::new(@engine, @engine._cmd(@engine, :_input, @layout_var, @cell.cell_index, layers, @sel, @box, @clip, @overlapping, RBA::Shapes::SAll, @global_trans, prop_selectors, RBA::Region)) end # %DRC% diff --git a/testdata/drc/drcGenericTests_au8.gds b/testdata/drc/drcGenericTests_au8.gds index ce06f30ffbf503187df13c45bd7b8a220ba4d30d..805de75925fe467775f3dbeae35df3b562c0ac3f 100644 GIT binary patch delta 193 zcmew*{7WQ?fsKKQDS|{L4=vr&au{L4=vr&au{L4=vr&auYtg delta 178 zcmaDS_)Z{-fsKKQDS|{L4=vr&au