DRC: deep mode region input does not flatten the layout on clip

This commit is contained in:
Matthias Koefferlein 2021-03-21 23:54:13 +01:00
parent 866ee9bd81
commit 1ae109f90d
3 changed files with 11 additions and 4 deletions

View File

@ -534,9 +534,12 @@ ClippingHierarchyBuilderShapeReceiver::insert_clipped (const db::Box &box, const
if (complex_region) {
for (db::RecursiveShapeReceiver::box_tree_type::overlapping_iterator cr = complex_region->begin_overlapping (bb, db::box_convert<db::Box> ()); ! cr.at_end (); ++cr) {
mp_pipe->push (*cr & bb, trans, world, 0, target);
db::Box bc = *cr & bb;
if (! bc.empty ()) {
mp_pipe->push (bc, trans, world, 0, target);
}
}
} else {
} else if (! bb.empty ()) {
mp_pipe->push (bb, trans, world, 0, target);
}
}

View File

@ -2536,8 +2536,12 @@ CODE
end
# clip if a box is specified
if box && clip && (cls == RBA::Region || cls == RBA::Edge)
r &= RBA::Region::new(box)
# TODO: the whole clip thing could be a part of the Region constructor
if cls == RBA::Region && clip && box
# HACK: deep regions will always clip in the constructor, so skip this
if ! @deep
r &= RBA::Region::new(box)
end
end
end

Binary file not shown.