diff --git a/src/db/db/dbDeepRegion.cc b/src/db/db/dbDeepRegion.cc index f38d94228..b76dc34ef 100644 --- a/src/db/db/dbDeepRegion.cc +++ b/src/db/db/dbDeepRegion.cc @@ -1648,6 +1648,7 @@ DeepRegion::run_check (db::edge_relation_type rel, bool different_polygons, cons bool other_is_merged = true; bool needs_merged_primary = different_polygons || options.needs_merged (); +needs_merged_primary = true; // @@@ bool primary_is_merged = ! merged_semantics () || needs_merged_primary || is_merged (); if (other == subject_regionptr ()) { diff --git a/src/db/db/dbHash.h b/src/db/db/dbHash.h index 9ed98ae0b..19913d2c0 100644 --- a/src/db/db/dbHash.h +++ b/src/db/db/dbHash.h @@ -253,7 +253,8 @@ namespace std h = hfunc_coord (o.end_ext (), h); h = hfunc_coord (o.width (), h); // NOTE: using too many points for the hash function just slows down the code. - unsigned int n = 20; + // @@@ unsigned int n = 20; + unsigned int n = std::numeric_limits::max (); // @@@ for (typename db::path::iterator p = o.begin (); p != o.end (); ++p) { if (--n == 0) { h = hfunc (o.points (), h); @@ -288,7 +289,8 @@ namespace std size_t hfunc (const db::polygon_contour &o, size_t h) { // NOTE: using too many points for the hash function just slows down the code. - unsigned int n = 20; + // @@@ unsigned int n = 20; + unsigned int n = std::numeric_limits::max (); // @@@ for (typename db::polygon_contour::simple_iterator i = o.begin (); i != o.end (); ++i) { if (--n == 0) { h = hfunc (o.size (), h); @@ -324,7 +326,8 @@ namespace std { h = hfunc (o.hull (), h); // NOTE: using too many points for the hash function just slows down the code. - unsigned int n = 20; + // @@@ unsigned int n = 20; + unsigned int n = std::numeric_limits::max (); // @@@ for (size_t i = 0; i < o.holes (); ++i) { if (--n == 0) { h = hfunc (o.holes (), h); diff --git a/src/db/db/dbHierProcessor.cc b/src/db/db/dbHierProcessor.cc index fc96f6cd9..1afbff8ca 100644 --- a/src/db/db/dbHierProcessor.cc +++ b/src/db/db/dbHierProcessor.cc @@ -342,11 +342,11 @@ template local_processor_cell_context & local_processor_cell_context::operator= (const local_processor_cell_context &other) { - if (this != &other) { - m_propagated = other.m_propagated; - m_drops = other.m_drops; - } - return *this; + if (this != &other) { + m_propagated = other.m_propagated; + m_drops = other.m_drops; + } + return *this; } template @@ -1221,6 +1221,7 @@ private: db::box_convert inst_bc (*mp_subject_layout, m_subject_layer); db::Box rbox = db::box_convert () (ref); +// @@@ make member of receiver? db::shape_reference_translator_with_trans rt (mp_subject_layout); for (db::CellInstArray::iterator n = inst->begin_touching (safe_box_enlarged (rbox, dist - 1, dist - 1), inst_bc); ! n.at_end (); ++n) { diff --git a/src/db/db/dbRegionLocalOperations.cc b/src/db/db/dbRegionLocalOperations.cc index cd4f9ea1c..4be8ca7a1 100644 --- a/src/db/db/dbRegionLocalOperations.cc +++ b/src/db/db/dbRegionLocalOperations.cc @@ -250,7 +250,7 @@ check_local_operation::do_compute_local (db::Layout *layout, const shape size_t n = 0; - if (m_is_merged) { + if (m_is_merged || (interactions.size () == 1 && interactions.subject_shape (interactions.begin ()->first).is_box ())) { for (typename shape_interactions::iterator i = interactions.begin (); i != interactions.end (); ++i) { const TS &subject = interactions.subject_shape (i->first); @@ -355,7 +355,7 @@ check_local_operation::do_compute_local (db::Layout *layout, const shape size_t n = 0; - if (m_is_merged) { + if (m_is_merged || (interactions.size () == 1 && ids.empty () && interactions.subject_shape (interactions.begin ()->first).is_box ())) { for (typename shape_interactions::iterator i = interactions.begin (); i != interactions.end (); ++i) { // we can't directly insert because TS may be != TI