Merge remote-tracking branch 'origin/master' into master-mac-qt6

This commit is contained in:
Kazunari Sekigawa 2022-07-08 18:41:24 +09:00
commit 9cd0017d0d
13 changed files with 71 additions and 24 deletions

View File

@ -1530,8 +1530,10 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
db::DPoint pt = snap1 (p, m_obj_snap && tpl.snap ()).second; db::DPoint pt = snap1 (p, m_obj_snap && tpl.snap ()).second;
// begin the transaction // begin the transaction
tl_assert (! manager ()->transacting ()); if (manager ()) {
manager ()->transaction (tl::to_string (tr ("Create ruler"))); tl_assert (! manager ()->transacting ());
manager ()->transaction (tl::to_string (tr ("Create ruler")));
}
m_current = ant::Object (pt, pt, 0, tpl); m_current = ant::Object (pt, pt, 0, tpl);
show_message (); show_message ();
@ -1539,7 +1541,9 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
insert_ruler (m_current, true); insert_ruler (m_current, true);
// end the transaction // end the transaction
manager ()->commit (); if (manager ()) {
manager ()->commit ();
}
} else if (tpl.mode () == ant::Template::RulerAutoMetric) { } else if (tpl.mode () == ant::Template::RulerAutoMetric) {
@ -1567,8 +1571,10 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
if (ee.any) { if (ee.any) {
// begin the transaction // begin the transaction
tl_assert (! manager ()->transacting ()); if (manager ()) {
manager ()->transaction (tl::to_string (tr ("Create ruler"))); tl_assert (! manager ()->transacting ());
manager ()->transaction (tl::to_string (tr ("Create ruler")));
}
m_current = ant::Object (ee.first, ee.second, 0, tpl); m_current = ant::Object (ee.first, ee.second, 0, tpl);
show_message (); show_message ();
@ -1576,7 +1582,9 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
insert_ruler (m_current, true); insert_ruler (m_current, true);
// end the transaction // end the transaction
manager ()->commit (); if (manager ()) {
manager ()->commit ();
}
} }
@ -1603,8 +1611,10 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
// create the ruler object // create the ruler object
// begin the transaction // begin the transaction
tl_assert (! manager ()->transacting ()); if (manager ()) {
manager ()->transaction (tl::to_string (tr ("Create ruler"))); tl_assert (! manager ()->transacting ());
manager ()->transaction (tl::to_string (tr ("Create ruler")));
}
show_message (); show_message ();
@ -1615,7 +1625,9 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
clear_transient_selection (); clear_transient_selection ();
// end the transaction // end the transaction
manager ()->commit (); if (manager ()) {
manager ()->commit ();
}
} }
@ -2256,9 +2268,13 @@ Service::menu_activated (const std::string &symbol)
if (symbol == "ant::clear_all_rulers_internal") { if (symbol == "ant::clear_all_rulers_internal") {
clear_rulers (); clear_rulers ();
} else if (symbol == "ant::clear_all_rulers") { } else if (symbol == "ant::clear_all_rulers") {
manager ()->transaction (tl::to_string (tr ("Clear all rulers"))); if (manager ()) {
manager ()->transaction (tl::to_string (tr ("Clear all rulers")));
}
clear_rulers (); clear_rulers ();
manager ()->commit (); if (manager ()) {
manager ()->commit ();
}
} else { } else {
lay::Plugin::menu_activated (symbol); lay::Plugin::menu_activated (symbol);
} }

View File

@ -82,7 +82,7 @@ void FlatEdges::invalidate_cache ()
void FlatEdges::init () void FlatEdges::init ()
{ {
m_is_merged = true; m_is_merged = false;
m_merged_edges_valid = false; m_merged_edges_valid = false;
} }
@ -321,9 +321,7 @@ const db::RecursiveShapeIterator *FlatEdges::iter () const
void void
FlatEdges::do_insert (const db::Edge &edge) FlatEdges::do_insert (const db::Edge &edge)
{ {
if (! empty ()) { m_is_merged = empty ();
m_is_merged = false;
}
mp_edges->insert (edge); mp_edges->insert (edge);
invalidate_cache (); invalidate_cache ();

View File

@ -82,7 +82,7 @@ void FlatRegion::invalidate_cache ()
void FlatRegion::init () void FlatRegion::init ()
{ {
m_is_merged = true; m_is_merged = false;
m_merged_polygons_valid = false; m_merged_polygons_valid = false;
} }

View File

@ -270,7 +270,7 @@ OriginalLayerEdges::less (const Edges &other) const
void void
OriginalLayerEdges::init () OriginalLayerEdges::init ()
{ {
m_is_merged = true; m_is_merged = false;
m_merged_edges_valid = false; m_merged_edges_valid = false;
} }

View File

@ -382,7 +382,7 @@ OriginalLayerRegion::less (const Region &other) const
void void
OriginalLayerRegion::init () OriginalLayerRegion::init ()
{ {
m_is_merged = true; m_is_merged = false;
m_merged_polygons_valid = false; m_merged_polygons_valid = false;
} }

View File

@ -260,7 +260,7 @@ static const db::Net *net_for_terminal_by_name_const (const db::Device *device,
} }
} }
static const db::Net *net_for_terminal_by_name (db::Device *device, const std::string &name) static db::Net *net_for_terminal_by_name (db::Device *device, const std::string &name)
{ {
if (! device->device_class () || ! device->device_class ()->has_terminal_with_name (name)) { if (! device->device_class () || ! device->device_class ()->has_terminal_with_name (name)) {
return 0; return 0;
@ -2832,7 +2832,7 @@ Class<db::NetlistSpiceReader> db_NetlistSpiceReader (db_NetlistReader, "db", "Ne
"Use the SPICE reader like this:\n" "Use the SPICE reader like this:\n"
"\n" "\n"
"@code\n" "@code\n"
"writer = RBA::NetlistSpiceReader::new\n" "reader = RBA::NetlistSpiceReader::new\n"
"netlist = RBA::Netlist::new\n" "netlist = RBA::Netlist::new\n"
"netlist.read(path, reader)\n" "netlist.read(path, reader)\n"
"@/code\n" "@/code\n"

View File

@ -1318,3 +1318,13 @@ TEST(54_issue1011)
run_test (_this, "54", false); run_test (_this, "54", false);
} }
TEST(55_drccount)
{
run_test (_this, "55", false);
}
TEST(55d_drccount)
{
run_test (_this, "55", true);
}

View File

@ -98,13 +98,16 @@ connect_global(ptie, "SUBSTRATE")
# ------------------------------------------------------------------- # -------------------------------------------------------------------
# Netlist and compare # Netlist and compare
# Netlist normalization # Netlist extraction
netlist.simplify netlist
# Hierarchy alignment (flatten out unmatched cells) # Hierarchy alignment (flatten out unmatched cells, specifically device cells)
align align
# Netlist vs. netlist # Netlist normalization and device combination
netlist.simplify
# Netlist vs. netlist check
compare compare
</text> </text>
</klayout-macro> </klayout-macro>

20
testdata/drc/drcSimpleTests_55.drc vendored Normal file
View File

@ -0,0 +1,20 @@
source $drc_test_source
target $drc_test_target
if $drc_test_deep
deep
end
licon = input(66, 44)
licon.output(66, 44)
licon_cluster = licon.sized(0.2).sized(-0.2)
single = licon_cluster.drc(secondary(licon).count == 1)
single.sized(0.1).output(100, 0)
single = licon_cluster.drc(if_any(secondary(licon).count == 1))
single.sized(0.1).output(101, 0)

BIN
testdata/drc/drcSimpleTests_55.gds vendored Normal file

Binary file not shown.

BIN
testdata/drc/drcSimpleTests_55d.gds vendored Normal file

Binary file not shown.

BIN
testdata/drc/drcSimpleTests_au55.gds vendored Normal file

Binary file not shown.

BIN
testdata/drc/drcSimpleTests_au55d.gds vendored Normal file

Binary file not shown.