From 94232e3138d67e460fc85dbe98d01d05cac7b502 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 21:14:23 +0000 Subject: [PATCH 01/17] Bump pypa/cibuildwheel from 2.16.2 to 2.16.5 Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.16.2 to 2.16.5. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.16.2...v2.16.5) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d547472b0..3e03a81dd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,7 +52,7 @@ jobs: HOST_CCACHE_DIR="$(ccache -k cache_dir)" mkdir -p $HOST_CCACHE_DIR - name: Build wheels # check https://cibuildwheel.readthedocs.io/en/stable/setup/#github-actions - uses: pypa/cibuildwheel@v2.16.2 + uses: pypa/cibuildwheel@v2.16.5 # to supply options, put them in 'env', like: # env: # CIBW_SOME_OPTION: value From 1b0917cda0244de9e2ed5c76f740403f6cb50f60 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 21:14:31 +0000 Subject: [PATCH 02/17] Bump styfle/cancel-workflow-action from 0.12.0 to 0.12.1 Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.12.0 to 0.12.1. - [Release notes](https://github.com/styfle/cancel-workflow-action/releases) - [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.12.0...0.12.1) --- updated-dependencies: - dependency-name: styfle/cancel-workflow-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d547472b0..cea584e44 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,7 +37,7 @@ jobs: large-packages: false # not working currently - uses: hmarr/debug-action@v2 - name: Cancel Workflow Action - uses: styfle/cancel-workflow-action@0.12.0 + uses: styfle/cancel-workflow-action@0.12.1 - uses: actions/checkout@v4 - name: ccache uses: hendrikmuhs/ccache-action@v1.2 From 65e41aa270971610dd16b54efe415db31c9e0b68 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Sun, 4 Feb 2024 15:58:37 +0100 Subject: [PATCH 03/17] Fix tabbing order in "Editor Options / Instance / Array Instance" UI. Currently, in the Array Instance sub-UI that appears when inserting a new array instance, trying to use the "tab" key to move through the entry widgets results in going through them in a strange order (column step x, column step y, row step y, row step x, dimension columns, dimension rows). This patch declares the correct tabbing order for the widgets. --- src/edt/edt/EditorOptionsInst.ui | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/edt/edt/EditorOptionsInst.ui b/src/edt/edt/EditorOptionsInst.ui index 86b3e2c56..5d5c8a5aa 100644 --- a/src/edt/edt/EditorOptionsInst.ui +++ b/src/edt/edt/EditorOptionsInst.ui @@ -548,6 +548,23 @@
layWidgets.h
+ + scrollArea + lib_cbx + browse_pb + cell_le + place_origin_cb + scale_le + angle_le + mirror_cbx + array_grp + rows_le + columns_le + row_x_le + row_y_le + column_x_le + column_y_le + From 2be4066856375c5ddb5b82c061dbf3f19a54b1fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sun, 11 Feb 2024 10:27:53 +0100 Subject: [PATCH 04/17] Fixed issue #1610: leaking reference in Python debugger (#1618) Co-authored-by: Matthias Koefferlein --- src/pya/pya/pya.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pya/pya/pya.cc b/src/pya/pya/pya.cc index 09cb9f754..81ed9633b 100644 --- a/src/pya/pya/pya.cc +++ b/src/pya/pya/pya.cc @@ -103,6 +103,7 @@ public: PythonStackTraceProvider (PyFrameObject *frame, const std::string &scope) : m_scope (scope) { + PythonRef frame_object_ref; while (frame != NULL) { #if PY_VERSION_HEX >= 0x030A0000 @@ -123,6 +124,8 @@ public: #if PY_VERSION_HEX >= 0x030A0000 frame = PyFrame_GetBack(frame); + // PyFrame_GetBack returns a strong reference, hence we need to make sure it is released + frame_object_ref = (PyObject *) frame; #else frame = frame->f_back; #endif From 5de32c357ffe5484b1f1b70b02d70128041c4ff2 Mon Sep 17 00:00:00 2001 From: Joaquin Matres <4514346+joamatab@users.noreply.github.com> Date: Sun, 11 Feb 2024 01:31:50 -0800 Subject: [PATCH 05/17] allow build klayout for debian (#1617) --- scripts/makedeb.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/makedeb.sh b/scripts/makedeb.sh index bcc8c8a48..b2befb82c 100755 --- a/scripts/makedeb.sh +++ b/scripts/makedeb.sh @@ -20,6 +20,10 @@ buildopts= # TODO: derive this list automatically? case $target in + +debian12) + depends="python3-dev, libc6-dev, libgcc-s1, libgit2-1.5, libqt6core5compat6, libqt6designer6, libqt6gui6, libqt6multimedia6, libqt6multimediaquick6, libqt6network6, libqt6printsupport6, libqt6sql6, libqt6svg6, libqt6widgets6, libqt6xml6, libruby3.1, libstdc++6, zlib1g" + ;; ubuntu16) depends="libqt4-designer (>= 4.8.6), libqt4-xml (>= 4.8.6), libqt4-sql (>= 4.8.6), libqt4-network (>= 4.8.6), libqtcore4 (>= 4.8.6), libqtgui4 (>= 4.8.6), zlib1g (>= 1.2.8), libgit2-24 (>= 0.24.0), libruby2.3 (>= 2.3.1), python3 (>= 3.5.1), libpython3.5 (>= 3.5.1), libstdc++6 (>= 4.6.3), libc6 (>= 2.15)" # No HTTPS support - that is somewhat useless @@ -63,7 +67,7 @@ libdir="usr/lib/klayout" rm -rf $bininstdir # do the actual build -./build.sh -j2 \ +./build.sh -j$(nproc) \ -bin $bininstdir \ -build $builddir \ -rpath /$libdir \ From df59641cad17b9f96ff14c3053928c84740335f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sun, 11 Feb 2024 10:32:56 +0100 Subject: [PATCH 06/17] Issue 1609 (#1613) * Fixed issue #1609 (Cell.read doesn't read LayoutMetaInfo) This also includes some more functions: - Layout#merge_meta_info, Layout#copy_meta_info - Layout#clear_all_meta_info - Cell#merge_meta_info, Cell#copy_meta_info In addition, meta info is merged when importing a layout from another file (Layout/Import -> Other Layouts into current). * Meta info support in layout diff (for testing), implemented meta info merge for GDS and OASIS readers with special conflict resolution modes * Undo support for meta info - this way we do not loose meta info when we delete a cell and undo --------- Co-authored-by: Matthias Koefferlein --- src/db/db/dbCommonReader.cc | 24 ++- src/db/db/dbCommonReader.h | 4 +- src/db/db/dbLayout.cc | 178 +++++++++++++++++- src/db/db/dbLayout.h | 49 +++++ src/db/db/dbLayoutDiff.cc | 72 +++++++ src/db/db/dbLayoutDiff.h | 5 + src/db/db/dbLayoutUtils.cc | 3 + src/db/db/dbTestSupport.cc | 1 + src/db/db/dbTestSupport.h | 3 +- src/db/db/gsiDeclDbCell.cc | 32 ++++ src/db/db/gsiDeclDbLayout.cc | 42 +++++ src/db/db/gsiDeclDbLayoutDiff.cc | 64 +++++-- src/db/unit_tests/dbLayoutDiffTests.cc | 56 ++++++ .../{dbGDS2Reader.cc => dbGDS2ReaderTests.cc} | 8 +- .../{dbGDS2Writer.cc => dbGDS2WriterTests.cc} | 0 .../streamers/gds2/unit_tests/unit_tests.pro | 4 +- testdata/gds/collect_add_au.gds | Bin 12990 -> 13406 bytes testdata/gds/collect_added.gds | Bin 4990 -> 5086 bytes testdata/gds/collect_basic.gds | Bin 9360 -> 8878 bytes testdata/gds/collect_overwrite_au.gds | Bin 8008 -> 8424 bytes testdata/gds/collect_rename_au.gds | Bin 13248 -> 13822 bytes testdata/gds/collect_skip_au.gds | Bin 9598 -> 10010 bytes testdata/ruby/dbLayoutTests2.rb | 173 +++++++++++++++++ 23 files changed, 689 insertions(+), 29 deletions(-) rename src/plugins/streamers/gds2/unit_tests/{dbGDS2Reader.cc => dbGDS2ReaderTests.cc} (98%) rename src/plugins/streamers/gds2/unit_tests/{dbGDS2Writer.cc => dbGDS2WriterTests.cc} (100%) diff --git a/src/db/db/dbCommonReader.cc b/src/db/db/dbCommonReader.cc index 64eb1d85f..e40b88694 100644 --- a/src/db/db/dbCommonReader.cc +++ b/src/db/db/dbCommonReader.cc @@ -160,7 +160,7 @@ CommonReaderBase::rename_cell (db::Layout &layout, size_t id, const std::string // Both cells already exist and are not identical: merge ID-declared cell into the name-declared one layout.force_update (); - merge_cell (layout, iname->second.second, iid->second.second); + merge_cell (layout, iname->second.second, iid->second.second, true); iid->second.second = iname->second.second; } @@ -235,7 +235,7 @@ CommonReaderBase::cell_for_instance (db::Layout &layout, const std::string &cn) } void -CommonReaderBase::merge_cell (db::Layout &layout, db::cell_index_type target_cell_index, db::cell_index_type src_cell_index) const +CommonReaderBase::merge_cell (db::Layout &layout, db::cell_index_type target_cell_index, db::cell_index_type src_cell_index, bool with_meta) const { const db::Cell &src_cell = layout.cell (src_cell_index); db::Cell &target_cell = layout.cell (target_cell_index); @@ -249,11 +249,11 @@ CommonReaderBase::merge_cell (db::Layout &layout, db::cell_index_type target_cel } } - merge_cell_without_instances (layout, target_cell_index, src_cell_index); + merge_cell_without_instances (layout, target_cell_index, src_cell_index, with_meta); } void -CommonReaderBase::merge_cell_without_instances (db::Layout &layout, db::cell_index_type target_cell_index, db::cell_index_type src_cell_index) const +CommonReaderBase::merge_cell_without_instances (db::Layout &layout, db::cell_index_type target_cell_index, db::cell_index_type src_cell_index, bool with_meta) const { const db::Cell &src_cell = layout.cell (src_cell_index); db::Cell &target_cell = layout.cell (target_cell_index); @@ -268,6 +268,16 @@ CommonReaderBase::merge_cell_without_instances (db::Layout &layout, db::cell_ind // replace all instances of the new cell with the original one layout.replace_instances_of (src_cell.cell_index (), target_cell.cell_index ()); + // merge meta info + if (with_meta) { + auto ib = layout.begin_meta (src_cell.cell_index ()); + auto ie = layout.end_meta (src_cell.cell_index ()); + for (auto i = ib; i != ie; ++i) { + layout.add_meta_info (target_cell.cell_index (), i->first, i->second); + } + } + layout.clear_meta (src_cell.cell_index ()); + // finally delete the new cell layout.delete_cell (src_cell.cell_index ()); } @@ -371,7 +381,7 @@ CommonReaderBase::finish (db::Layout &layout) layout.cell (ci_org).clear_shapes (); - merge_cell (layout, ci_org, ci_new); + merge_cell (layout, ci_org, ci_new, true); } else if (m_cc_resolution == SkipNewCell && ! layout.cell (ci_org).is_ghost_cell ()) { @@ -379,11 +389,11 @@ CommonReaderBase::finish (db::Layout &layout) layout.cell (ci_new).clear_shapes (); // NOTE: ignore instances -> this saves us a layout update - merge_cell_without_instances (layout, ci_org, ci_new); + merge_cell_without_instances (layout, ci_org, ci_new, false); } else { - merge_cell (layout, ci_org, ci_new); + merge_cell (layout, ci_org, ci_new, m_cc_resolution != SkipNewCell); } diff --git a/src/db/db/dbCommonReader.h b/src/db/db/dbCommonReader.h index 45afd6cc5..90e98d339 100644 --- a/src/db/db/dbCommonReader.h +++ b/src/db/db/dbCommonReader.h @@ -242,12 +242,12 @@ protected: /** * @brief Merge (and delete) the src_cell into target_cell */ - void merge_cell (db::Layout &layout, db::cell_index_type target_cell_index, db::cell_index_type src_cell_index) const; + void merge_cell (db::Layout &layout, db::cell_index_type target_cell_index, db::cell_index_type src_cell_index, bool with_meta) const; /** * @brief Merge (and delete) the src_cell into target_cell without instances */ - void merge_cell_without_instances (db::Layout &layout, db::cell_index_type target_cell_index, db::cell_index_type src_cell_index) const; + void merge_cell_without_instances (db::Layout &layout, db::cell_index_type target_cell_index, db::cell_index_type src_cell_index, bool with_meta) const; /** * @brief Gets the layer name map diff --git a/src/db/db/dbLayout.cc b/src/db/db/dbLayout.cc index 8ab1e8717..4e29d27ef 100644 --- a/src/db/db/dbLayout.cc +++ b/src/db/db/dbLayout.cc @@ -257,6 +257,83 @@ private: bool m_insert; }; +struct SetLayoutMetaInfoOp + : public LayoutOp +{ + SetLayoutMetaInfoOp (db::Layout::meta_info_name_id_type name_id, const db::MetaInfo *f, const db::MetaInfo *t) + : m_name_id (name_id), m_has_from (f != 0), m_has_to (t != 0) + { + if (f) { + m_from = *f; + } + if (t) { + m_to = *t; + } + } + + virtual void redo (db::Layout *layout) const + { + if (! m_has_to) { + layout->remove_meta_info (m_name_id); + } else { + layout->add_meta_info (m_name_id, m_to); + } + } + + virtual void undo (db::Layout *layout) const + { + if (! m_has_from) { + layout->remove_meta_info (m_name_id); + } else { + layout->add_meta_info (m_name_id, m_from); + } + } + +private: + db::Layout::meta_info_name_id_type m_name_id; + bool m_has_from, m_has_to; + db::MetaInfo m_from, m_to; +}; + +struct SetCellMetaInfoOp + : public LayoutOp +{ + SetCellMetaInfoOp (db::cell_index_type ci, db::Layout::meta_info_name_id_type name_id, const db::MetaInfo *f, const db::MetaInfo *t) + : m_ci (ci), m_name_id (name_id), m_has_from (f != 0), m_has_to (t != 0) + { + if (f) { + m_from = *f; + } + if (t) { + m_to = *t; + } + } + + virtual void redo (db::Layout *layout) const + { + if (! m_has_to) { + layout->remove_meta_info (m_ci, m_name_id); + } else { + layout->add_meta_info (m_ci, m_name_id, m_to); + } + } + + virtual void undo (db::Layout *layout) const + { + if (! m_has_from) { + layout->remove_meta_info (m_ci, m_name_id); + } else { + layout->add_meta_info (m_ci, m_name_id, m_from); + } + } + +private: + db::cell_index_type m_ci; + db::Layout::meta_info_name_id_type m_name_id; + bool m_has_from, m_has_to; + db::MetaInfo m_from, m_to; +}; + // ----------------------------------------------------------------- // Implementation of the ProxyContextInfo class @@ -848,6 +925,9 @@ Layout::delete_cells (const std::set &cells_to_delete) // cell child objects that must remain. for (std::set::const_iterator c = cells_to_delete.begin (); c != cells_to_delete.end (); ++c) { + // supports undo + clear_meta (*c); + if (manager () && manager ()->transacting ()) { // note the "take" method - this takes out the cell @@ -917,9 +997,12 @@ Layout::delete_cell (cell_index_type id) // a backup container for the cell. This is necessary since the ID's within manager are given to // cell child objects that must remain. + // supports undo + clear_meta (id); + if (manager () && manager ()->transacting ()) { - // not the "take" method - this takes out the cell + // note the "take" method - this takes out the cell std::string cn (cell_name (id)); manager ()->queue (this, new NewRemoveCellOp (id, cn, true /*remove*/, take_cell (id))); @@ -1869,18 +1952,36 @@ Layout::meta_info_name_id (const std::string &name) const void Layout::clear_meta () { + if (manager () && manager ()->transacting ()) { + for (auto i = m_meta_info.begin (); i != m_meta_info.end (); ++i) { + manager ()->queue (this, new SetLayoutMetaInfoOp (i->first, &i->second, 0)); + } + } + m_meta_info.clear (); } void Layout::add_meta_info (meta_info_name_id_type name_id, const MetaInfo &i) { + if (manager () && manager ()->transacting ()) { + auto e = m_meta_info.find (name_id); + manager ()->queue (this, new SetLayoutMetaInfoOp (name_id, e != m_meta_info.end () ? &e->second : 0, &i)); + } + m_meta_info[name_id] = i; } void Layout::remove_meta_info (meta_info_name_id_type name_id) { + if (manager () && manager ()->transacting ()) { + auto e = m_meta_info.find (name_id); + if (e != m_meta_info.end ()) { + manager ()->queue (this, new SetLayoutMetaInfoOp (name_id, &e->second, 0)); + } + } + m_meta_info.erase (name_id); } @@ -1901,12 +2002,41 @@ Layout::has_meta_info (meta_info_name_id_type name_id) const void Layout::clear_meta (db::cell_index_type ci) { + if (manager () && manager ()->transacting ()) { + auto ib = begin_meta (ci); + auto ie = end_meta (ci); + for (auto i = ib; i != ie; ++i) { + manager ()->queue (this, new SetCellMetaInfoOp (ci, i->first, &i->second, 0)); + } + } + m_meta_info_by_cell.erase (ci); } +void +Layout::clear_all_meta () +{ + clear_meta (); + while (! m_meta_info_by_cell.empty ()) { + clear_meta (m_meta_info_by_cell.begin ()->first); + } +} + void Layout::add_meta_info (db::cell_index_type ci, meta_info_name_id_type name_id, const MetaInfo &i) { + if (manager () && manager ()->transacting ()) { + const MetaInfo *from = 0; + auto c = m_meta_info_by_cell.find (ci); + if (c != m_meta_info_by_cell.end ()) { + auto e = c->second.find (name_id); + if (e != c->second.end ()) { + from = &e->second; + } + } + manager ()->queue (this, new SetCellMetaInfoOp (ci, name_id, from, &i)); + } + m_meta_info_by_cell[ci][name_id] = i; } @@ -1914,6 +2044,18 @@ void Layout::remove_meta_info (db::cell_index_type ci, meta_info_name_id_type name_id) { auto c = m_meta_info_by_cell.find (ci); + + if (manager () && manager ()->transacting ()) { + const MetaInfo *from = 0; + if (c != m_meta_info_by_cell.end ()) { + auto e = c->second.find (name_id); + if (e != c->second.end ()) { + from = &e->second; + } + } + manager ()->queue (this, new SetCellMetaInfoOp (ci, name_id, from, 0)); + } + if (c != m_meta_info_by_cell.end ()) { c->second.erase (name_id); } @@ -1945,6 +2087,40 @@ Layout::has_meta_info (db::cell_index_type ci, meta_info_name_id_type name_id) c } } +void +Layout::merge_meta_info (const db::Layout &other) +{ + for (auto mi = other.begin_meta (); mi != other.end_meta (); ++mi) { + add_meta_info (other.meta_info_name (mi->first), mi->second); + } +} + +void +Layout::merge_meta_info (db::cell_index_type into_cell, const db::Layout &other, db::cell_index_type other_cell) +{ + auto mi_begin = other.begin_meta (other_cell); + auto mi_end = other.end_meta (other_cell); + for (auto mi = mi_begin; mi != mi_end; ++mi) { + add_meta_info (into_cell, other.meta_info_name (mi->first), mi->second); + } +} + +void +Layout::merge_meta_info (const db::Layout &other, const db::CellMapping &cm) +{ + for (auto i = cm.begin (); i != cm.end (); ++i) { + merge_meta_info (i->second, other, i->first); + } +} + +void +Layout::copy_meta_info (const db::Layout &other, const db::CellMapping &cm) +{ + for (auto i = cm.begin (); i != cm.end (); ++i) { + copy_meta_info (i->second, other, i->first); + } +} + void Layout::swap_layers (unsigned int a, unsigned int b) { diff --git a/src/db/db/dbLayout.h b/src/db/db/dbLayout.h index 7d2598da6..59a4ad19f 100644 --- a/src/db/db/dbLayout.h +++ b/src/db/db/dbLayout.h @@ -1993,6 +1993,11 @@ public: */ void clear_meta (db::cell_index_type ci); + /** + * @brief Clears all meta information (cells and layout) + */ + void clear_all_meta (); + /** * @brief Adds meta information for a given cell * The given meta information object is to the meta information list for the given cell. @@ -2021,6 +2026,50 @@ public: } } + /** + * @brief Merges meta information from the other layout into self + * This applies to the layout-only meta information. Same keys get overwritten, new ones are added. + */ + void merge_meta_info (const db::Layout &other); + + /** + * @brief Copies meta information from the other layout into self + * This applies to the layout-only meta information. All keys are replaced. + */ + void copy_meta_info (const db::Layout &other) + { + clear_meta (); + merge_meta_info (other); + } + + /** + * @brief Merges meta information from the other cell into the target cell from sel. + * This applies to the cell-specific meta information. Same keys get overwritten, new ones are added. + */ + void merge_meta_info (db::cell_index_type into_cell, const db::Layout &other, db::cell_index_type other_cell); + + /** + * @brief Copies meta information from the other cell into the target cell from sel. + * This applies to the cell-specific meta information. All keys are replaced. + */ + void copy_meta_info (db::cell_index_type into_cell, const db::Layout &other, db::cell_index_type other_cell) + { + clear_meta (into_cell); + merge_meta_info (into_cell, other, other_cell); + } + + /** + * @brief Merges meta information from the other cell into the target cell from sel using the given cell mapping. + * The cell mapping specifies which meta information to merge from which cell into which cell. + */ + void merge_meta_info (const db::Layout &other, const db::CellMapping &cm); + + /** + * @brief Copies meta information from the other cell into the target cell from sel using the given cell mapping. + * The cell mapping specifies which meta information to copy from which cell into which cell. + */ + void copy_meta_info (const db::Layout &other, const db::CellMapping &cm); + /** * @brief Gets a value indicating whether a meta info with the given name is present for the given cell */ diff --git a/src/db/db/dbLayoutDiff.cc b/src/db/db/dbLayoutDiff.cc index bc35d4c62..b52e71b02 100644 --- a/src/db/db/dbLayoutDiff.cc +++ b/src/db/db/dbLayoutDiff.cc @@ -702,6 +702,29 @@ do_compare_layouts (const db::Layout &a, const db::Cell *top_a, const db::Layout r.dbu_differs (a.dbu (), b.dbu ()); } + if ((flags & layout_diff::f_with_meta) != 0) { + std::map > mi; + for (auto i = a.begin_meta (); i != a.end_meta (); ++i) { + if (i->second.persisted) { + mi [a.meta_info_name (i->first)].first = i->second.value; + } + } + for (auto i = b.begin_meta (); i != b.end_meta (); ++i) { + if (i->second.persisted) { + mi [b.meta_info_name (i->first)].second = i->second.value; + } + } + for (auto i = mi.begin (); i != mi.end (); ++i) { + if (i->second.first != i->second.second) { + differs = true; + if (flags & layout_diff::f_silent) { + return false; + } + r.layout_meta_info_differs (i->first, i->second.first, i->second.second); + } + } + } + bool verbose = (flags & layout_diff::f_verbose); bool no_duplicates = (flags & layout_diff::f_ignore_duplicates); @@ -928,6 +951,33 @@ do_compare_layouts (const db::Layout &a, const db::Cell *top_a, const db::Layout r.begin_cell (common_cells [cci], common_cells_a [cci], common_cells_b [cci]); + if ((flags & layout_diff::f_with_meta) != 0) { + std::map > mi; + auto ib = a.begin_meta (common_cells_a [cci]); + auto ie = a.end_meta (common_cells_a [cci]); + for (auto i = ib; i != ie; ++i) { + if (i->second.persisted) { + mi [a.meta_info_name (i->first)].first = i->second.value; + } + } + ib = b.begin_meta (common_cells_b [cci]); + ie = b.end_meta (common_cells_b [cci]); + for (auto i = ib; i != ie; ++i) { + if (i->second.persisted) { + mi [b.meta_info_name (i->first)].second = i->second.value; + } + } + for (auto i = mi.begin (); i != mi.end (); ++i) { + if (i->second.first != i->second.second) { + differs = true; + if (flags & layout_diff::f_silent) { + return false; + } + r.cell_meta_info_differs (i->first, i->second.first, i->second.second); + } + } + } + if (!verbose && cell_a->bbox () != cell_b->bbox ()) { differs = true; if (flags & layout_diff::f_silent) { @@ -1215,6 +1265,7 @@ public: } void dbu_differs (double dbu_a, double dbu_b); + void layout_meta_info_differs (const std::string &name, const tl::Variant &a, const tl::Variant &b); void layer_in_a_only (const db::LayerProperties &la); void layer_in_b_only (const db::LayerProperties &lb); void layer_name_differs (const db::LayerProperties &la, const db::LayerProperties &lb); @@ -1222,6 +1273,7 @@ public: void cell_in_b_only (const std::string &cellname, db::cell_index_type ci); void cell_name_differs (const std::string &cellname_a, db::cell_index_type cia, const std::string &cellname_b, db::cell_index_type cib); void begin_cell (const std::string &cellname, db::cell_index_type cia, db::cell_index_type cib); + void cell_meta_info_differs (const std::string &name, const tl::Variant &a, const tl::Variant &b); void bbox_differs (const db::Box &ba, const db::Box &bb); void begin_inst_differences (); void instances_in_a (const std::vector &insts_a, const std::vector &cell_names, const db::PropertiesRepository &props); @@ -1384,6 +1436,16 @@ PrintingDifferenceReceiver::dbu_differs (double dbu_a, double dbu_b) } } +void +PrintingDifferenceReceiver::layout_meta_info_differs (const std::string &name, const tl::Variant &a, const tl::Variant &b) +{ + try { + enough (tl::error) << "Global meta info differs - [" << name << "]: " << a << " vs. " << b; + } catch (tl::CancelException &) { + // ignore cancel exceptions + } +} + void PrintingDifferenceReceiver::layer_in_a_only (const db::LayerProperties &la) { @@ -1461,6 +1523,16 @@ PrintingDifferenceReceiver::begin_cell (const std::string &cellname, db::cell_in m_cellname = cellname; } +void +PrintingDifferenceReceiver::cell_meta_info_differs (const std::string &name, const tl::Variant &a, const tl::Variant &b) +{ + try { + enough (tl::error) << "Meta info differs in cell " << m_cellname << " - [" << name << "]: " << a << " vs. " << b; + } catch (tl::CancelException &) { + // ignore cancel exceptions + } +} + void PrintingDifferenceReceiver::begin_inst_differences () { diff --git a/src/db/db/dbLayoutDiff.h b/src/db/db/dbLayoutDiff.h index ce39f5988..223ddd4f4 100644 --- a/src/db/db/dbLayoutDiff.h +++ b/src/db/db/dbLayoutDiff.h @@ -56,6 +56,9 @@ const unsigned int f_no_text_orientation = 0x02; // Ignore properties const unsigned int f_no_properties = 0x04; +// With meta info +const unsigned int f_with_meta = 0x08; + // Do not compare layer names const unsigned int f_no_layer_names = 0x10; @@ -94,6 +97,7 @@ public: virtual ~DifferenceReceiver () { } virtual void dbu_differs (double /*dbu_a*/, double /*dbu_b*/) { } + virtual void layout_meta_info_differs (const std::string & /*name*/, const tl::Variant & /*value_a*/, const tl::Variant & /*value_b*/) { } virtual void layer_in_a_only (const db::LayerProperties & /*la*/) { } virtual void layer_in_b_only (const db::LayerProperties & /*lb*/) { } virtual void layer_name_differs (const db::LayerProperties & /*la*/, const db::LayerProperties & /*lb*/) { } @@ -102,6 +106,7 @@ public: virtual void cell_in_b_only (const std::string & /*cellname*/, db::cell_index_type /*ci*/) { } virtual void bbox_differs (const db::Box & /*ba*/, const db::Box & /*bb*/) { } virtual void begin_cell (const std::string & /*cellname*/, db::cell_index_type /*cia*/, db::cell_index_type /*cib*/) { } + virtual void cell_meta_info_differs (const std::string & /*name*/, const tl::Variant & /*value_a*/, const tl::Variant & /*value_b*/) { } virtual void begin_inst_differences () { } virtual void instances_in_a (const std::vector & /*insts_a*/, const std::vector & /*cell_names*/, const db::PropertiesRepository & /*props*/) { } virtual void instances_in_b (const std::vector & /*insts_b*/, const std::vector & /*cell_names*/, const db::PropertiesRepository & /*props*/) { } diff --git a/src/db/db/dbLayoutUtils.cc b/src/db/db/dbLayoutUtils.cc index 1c4a7e0d1..2fe5174fb 100644 --- a/src/db/db/dbLayoutUtils.cc +++ b/src/db/db/dbLayoutUtils.cc @@ -252,6 +252,9 @@ merge_layouts (db::Layout &target, const db::Cell &source_cell = source.cell (*c); db::Cell &target_cell = target.cell (target_cell_index); + // merge meta info + target.merge_meta_info (target_cell_index, source, *c); + // NOTE: this implementation employs the safe but cumbersome "local transformation" feature. // This means, all cells are transformed according to the given transformation and their // references are transformed to account for that effect. This will lead to somewhat strange diff --git a/src/db/db/dbTestSupport.cc b/src/db/db/dbTestSupport.cc index c93757909..871e66396 100644 --- a/src/db/db/dbTestSupport.cc +++ b/src/db/db/dbTestSupport.cc @@ -139,6 +139,7 @@ void compare_layouts (tl::TestBase *_this, const db::Layout &layout, const std:: (n > 0 ? db::layout_diff::f_silent : db::layout_diff::f_verbose) | ((norm & AsPolygons) != 0 ? db::layout_diff::f_boxes_as_polygons + db::layout_diff::f_paths_as_polygons : 0) | ((norm & WithArrays) != 0 ? 0 : db::layout_diff::f_flatten_array_insts) + | ((norm & WithMeta) == 0 ? 0 : db::layout_diff::f_with_meta) /*| db::layout_diff::f_no_text_details | db::layout_diff::f_no_text_orientation*/ , tolerance, 100 /*max diff lines*/); if (equal && n > 0) { diff --git a/src/db/db/dbTestSupport.h b/src/db/db/dbTestSupport.h index 4963b2ec4..5369a6e90 100644 --- a/src/db/db/dbTestSupport.h +++ b/src/db/db/dbTestSupport.h @@ -58,7 +58,8 @@ enum NormalizationMode NormFileMask = 7, // bits the extract for file mode NoContext = 8, // write tmp file without context AsPolygons = 16, // paths and boxes are treated as polygons - WithArrays = 32 // do not flatten arrays + WithArrays = 32, // do not flatten arrays + WithMeta = 64 // with meta info }; /** diff --git a/src/db/db/gsiDeclDbCell.cc b/src/db/db/gsiDeclDbCell.cc index 4a65a4a91..fc32fa381 100644 --- a/src/db/db/gsiDeclDbCell.cc +++ b/src/db/db/gsiDeclDbCell.cc @@ -1004,6 +1004,22 @@ static void cell_add_meta_info (db::Cell *cell, const MetaInfo &mi) } } +static void cell_merge_meta_info (db::Cell *cell, const db::Cell *source) +{ + if (! source || ! cell->layout () || ! source->layout ()) { + return; + } + cell->layout ()->merge_meta_info (cell->cell_index (), *source->layout (), source->cell_index ()); +} + +static void cell_copy_meta_info (db::Cell *cell, const db::Cell *source) +{ + if (! source || ! cell->layout () || ! source->layout ()) { + return; + } + cell->layout ()->copy_meta_info (cell->cell_index (), *source->layout (), source->cell_index ()); +} + static const tl::Variant &cell_meta_info_value (db::Cell *cell, const std::string &name) { if (! cell->layout ()) { @@ -1755,6 +1771,7 @@ read_options (db::Cell *cell, const std::string &path, const db::LoadLayoutOptio db::CellMapping cm; std::vector new_cells = cm.create_single_mapping_full (*cell->layout (), cell->cell_index (), tmp, *tmp.begin_top_down ()); cell->move_tree_shapes (tmp.cell (*tmp.begin_top_down ()), cm); + cell->layout ()->merge_meta_info (tmp, cm); return new_cells; } @@ -1834,6 +1851,21 @@ Class decl_Cell ("db", "Cell", "\n" "This method has been introduced in version 0.28.8." ) + + gsi::method_ext ("merge_meta_info", &cell_merge_meta_info, gsi::arg ("other"), + "@brief Merges the meta information from the other cell into this cell\n" + "See \\LayoutMetaInfo for details about cells and meta information.\n" + "Existing keys in this cell will be overwritten by the respective values from the other cell.\n" + "New keys will be added.\n" + "\n" + "This method has been introduced in version 0.28.16." + ) + + gsi::method_ext ("copy_meta_info", &cell_copy_meta_info, gsi::arg ("other"), + "@brief Copies the meta information from the other cell into this cell\n" + "See \\LayoutMetaInfo for details about cells and meta information.\n" + "The meta information from this cell will be replaced by the meta information from the other cell.\n" + "\n" + "This method has been introduced in version 0.28.16." + ) + gsi::method_ext ("clear_meta_info", &cell_clear_meta_info, "@brief Clears the meta information of the cell\n" "See \\LayoutMetaInfo for details about cells and meta information.\n" diff --git a/src/db/db/gsiDeclDbLayout.cc b/src/db/db/gsiDeclDbLayout.cc index d85fe3687..db8c78233 100644 --- a/src/db/db/gsiDeclDbLayout.cc +++ b/src/db/db/gsiDeclDbLayout.cc @@ -1105,12 +1105,54 @@ Class decl_Layout ("db", "Layout", "\n" "This method has been introduced in version 0.25." ) + + gsi::method ("merge_meta_info", static_cast (&db::Layout::merge_meta_info), gsi::arg ("other"), + "@brief Merges the meta information from the other layout into this layout\n" + "See \\LayoutMetaInfo for details about cells and meta information.\n" + "Existing keys in this layout will be overwritten by the respective values from the other layout.\n" + "New keys will be added.\n" + "\n" + "This method has been introduced in version 0.28.16." + ) + + gsi::method ("merge_meta_info", static_cast (&db::Layout::merge_meta_info), gsi::arg ("other"), gsi::arg ("cm"), + "@brief Merges the meta information from the other layout into this layout for the cells given by the cell mapping\n" + "See \\LayoutMetaInfo for details about cells and meta information.\n" + "This method will use the source/target cell pairs from the cell mapping object and merge the meta information " + "from each source cell from the 'other' layout into the mapped cell inside self.\n" + "This method can be used with '\\copy_tree_shapes' and similar to copy meta information in addition to the shapes.\n" + "Existing cell-specific keys in this layout will be overwritten by the respective values from the other layout.\n" + "New keys will be added.\n" + "\n" + "This method has been introduced in version 0.28.16." + ) + + gsi::method ("copy_meta_info", static_cast (&db::Layout::copy_meta_info), gsi::arg ("other"), + "@brief Copies the meta information from the other layout into this layout\n" + "See \\LayoutMetaInfo for details about cells and meta information.\n" + "The meta information from this layout will be replaced by the meta information from the other layout.\n" + "\n" + "This method has been introduced in version 0.28.16." + ) + + gsi::method ("copy_meta_info", static_cast (&db::Layout::copy_meta_info), gsi::arg ("other"), gsi::arg ("cm"), + "@brief Copies the meta information from the other layout into this layout for the cells given by the cell mapping\n" + "See \\LayoutMetaInfo for details about cells and meta information.\n" + "This method will use the source/target cell pairs from the cell mapping object and merge the meta information " + "from each source cell from the 'other' layout into the mapped cell inside self.\n" + "This method can be used with '\\copy_tree_shapes' and similar to copy meta information in addition to the shapes.\n" + "All cell-specific keys in this layout will be replaced by the respective values from the other layout.\n" + "\n" + "This method has been introduced in version 0.28.16." + ) + gsi::method ("clear_meta_info", static_cast (&db::Layout::clear_meta), "@brief Clears the meta information of the layout\n" "See \\LayoutMetaInfo for details about layouts and meta information." "\n" "This method has been introduced in version 0.28.8." ) + + gsi::method ("clear_all_meta_info", static_cast (&db::Layout::clear_all_meta), + "@brief Clears all meta information of the layout (cell specific and global)\n" + "See \\LayoutMetaInfo for details about layouts and meta information." + "\n" + "This method has been introduced in version 0.28.16." + ) + gsi::method ("remove_meta_info", static_cast (&db::Layout::remove_meta_info), gsi::arg ("name"), "@brief Removes meta information from the layout\n" "See \\LayoutMetaInfo for details about layouts and meta information." diff --git a/src/db/db/gsiDeclDbLayoutDiff.cc b/src/db/db/gsiDeclDbLayoutDiff.cc index 84ac3217e..3e8098750 100644 --- a/src/db/db/gsiDeclDbLayoutDiff.cc +++ b/src/db/db/gsiDeclDbLayoutDiff.cc @@ -90,6 +90,11 @@ public: dbu_differs_event (dbu_a, dbu_b); } + virtual void layout_meta_info_differs (const std::string &name, const tl::Variant &value_a, const tl::Variant &value_b) + { + layout_meta_info_differs_event (name, value_a, value_b); + } + virtual void layer_in_a_only (const db::LayerProperties &la) { layer_in_a_only_event (la); @@ -132,6 +137,11 @@ public: begin_cell_event (mp_cell_a, mp_cell_b); } + virtual void cell_meta_info_differs (const std::string &name, const tl::Variant &value_a, const tl::Variant &value_b) + { + cell_meta_info_differs_event (name, value_a, value_b); + } + virtual void begin_inst_differences () { begin_inst_differences_event (); @@ -343,6 +353,7 @@ public: } tl::event dbu_differs_event; + tl::event layout_meta_info_differs_event; tl::event layer_in_a_only_event; tl::event layer_in_b_only_event; tl::event layer_name_differs_event; @@ -351,6 +362,7 @@ public: tl::event cell_in_b_only_event; tl::event bbox_differs_event; tl::event begin_cell_event; + tl::event cell_meta_info_differs_event; tl::Event begin_inst_differences_event; tl::event instance_in_a_only_event; tl::event instance_in_b_only_event; @@ -409,6 +421,10 @@ static unsigned int f_no_properties () { return db::layout_diff::f_no_properties; } +static unsigned int f_with_meta () { + return db::layout_diff::f_with_meta; +} + static unsigned int f_no_layer_names () { return db::layout_diff::f_no_layer_names; } @@ -450,7 +466,7 @@ gsi::Class decl_LayoutDiff ("db", "LayoutDiff", "full compare.\n" "\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::constant ("IgnoreDuplicates", &f_ignore_duplicates, "@brief Ignore duplicate instances or shapes\n" @@ -462,17 +478,25 @@ gsi::Class decl_LayoutDiff ("db", "LayoutDiff", gsi::constant ("NoTextOrientation", &f_no_text_orientation, "@brief Ignore text orientation\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::constant ("NoProperties", &f_no_properties, "@brief Ignore properties\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." + ) + + gsi::constant ("WithMetaInfo", &f_with_meta, + "@brief Ignore meta info\n" + "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " + "combined with other constants to form a flag set. If present, this option tells the compare algorithm " + "to include persisted meta info in the compare.\n" + "\n" + "This flag has been introduced in version 0.28.16." ) + gsi::constant ("NoLayerNames", &f_no_layer_names, "@brief Do not compare layer names\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::constant ("Verbose", &f_verbose, "@brief Enables verbose mode (gives details about the differences)\n" @@ -480,22 +504,22 @@ gsi::Class decl_LayoutDiff ("db", "LayoutDiff", "See the event descriptions for details about the differences in verbose and non-verbose mode.\n" "\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::constant ("BoxesAsPolygons", &f_boxes_as_polygons, "@brief Compare boxes to polygons\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::constant ("FlattenArrayInsts", &f_flatten_array_insts, "@brief Compare array instances instance by instance\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::constant ("PathsAsPolygons", &f_paths_as_polygons, "@brief Compare paths to polygons\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::constant ("SmartCellMapping", &f_smart_cell_mapping, "@brief Derive smart cell mapping instead of name mapping (available only if top cells are specified)\n" @@ -503,7 +527,7 @@ gsi::Class decl_LayoutDiff ("db", "LayoutDiff", "cells are compared (with \\LayoutDiff#compare with cells instead of layout objects).\n" "\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set.\n" + "combined with other constants to form a flag set.\n" ) + gsi::constant ("DontSummarizeMissingLayers", &f_dont_summarize_missing_layers, "@brief Don't summarize missing layers\n" @@ -511,12 +535,12 @@ gsi::Class decl_LayoutDiff ("db", "LayoutDiff", "layer will be reported as difference.\n" "\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::constant ("NoTextDetails", &f_no_text_details, "@brief Ignore text details (font, size, presentation)\n" "This constant can be used for the flags parameter of \\compare_layouts and \\compare_cells. It can be " - "compared with other constants to form a flag set." + "combined with other constants to form a flag set." ) + gsi::method ("compare", &LayoutDiff::compare_layouts, gsi::arg("a"), @@ -593,6 +617,14 @@ gsi::Class decl_LayoutDiff ("db", "LayoutDiff", gsi::event ("on_dbu_differs", &LayoutDiff::dbu_differs_event, gsi::arg ("dbu_a"), gsi::arg ("dbu_b"), "@brief This signal indicates a difference in the database units of the layouts\n" ) + + gsi::event ("on_layout_meta_info_differs", &LayoutDiff::layout_meta_info_differs_event, gsi::arg ("name"), gsi::arg ("a"), gsi::arg ("b"), + "@brief This signal indicates that global meta info differs\n" + "Meta information is only compared when \\WithMetaInfo is added to the compare flags.\n" + "'a' and 'b' are the values for the first and second layout. 'nil' is passed to these values to indicate " + "missing meta information on one side.\n" + "\n" + "This event has been added in version 0.28.16." + ) + gsi::event ("on_layer_in_a_only", &LayoutDiff::layer_in_a_only_event, gsi::arg ("a"), "@brief This signal indicates a layer that is present only in the first layout\n" ) + @@ -619,9 +651,17 @@ gsi::Class decl_LayoutDiff ("db", "LayoutDiff", "In verbose mode detailed events will be issued indicating the differences.\n" ) + gsi::event ("on_begin_cell", &LayoutDiff::begin_cell_event, gsi::arg ("ca"), gsi::arg ("cb"), - "@brief This signal initiates the sequence of events for a cell pair\n" + "@brief This signal indicates the sequence of events for a cell pair\n" "All cell specific events happen between \\begin_cell_event and \\end_cell_event signals." ) + + gsi::event ("on_cell_meta_info_differs", &LayoutDiff::cell_meta_info_differs_event, gsi::arg ("name"), gsi::arg ("a"), gsi::arg ("b"), + "@brief This signal indicates that meta info between the current cells differs\n" + "Meta information is only compared when \\WithMetaInfo is added to the compare flags.\n" + "'a' and 'b' are the values for the first and second layout. 'nil' is passed to these values to indicate " + "missing meta information on one side.\n" + "\n" + "This event has been added in version 0.28.16." + ) + gsi::event ("on_begin_inst_differences", &LayoutDiff::begin_inst_differences_event, "@brief This signal indicates differences in the cell instances\n" "In verbose mode (see \\Verbose) more events will follow that indicate the instances that are present only " diff --git a/src/db/unit_tests/dbLayoutDiffTests.cc b/src/db/unit_tests/dbLayoutDiffTests.cc index 87ef5f1ba..6fb0d413b 100644 --- a/src/db/unit_tests/dbLayoutDiffTests.cc +++ b/src/db/unit_tests/dbLayoutDiffTests.cc @@ -38,6 +38,7 @@ public: std::string text () const { return m_os.str (); } void clear () { m_os.str (std::string ()); } void dbu_differs (double dbu_a, double dbu_b); + void layout_meta_info_differs (const std::string &, const tl::Variant &, const tl::Variant &); void layer_in_a_only (const db::LayerProperties &la); void layer_in_b_only (const db::LayerProperties &lb); void layer_name_differs (const db::LayerProperties &la, const db::LayerProperties &lb); @@ -45,6 +46,7 @@ public: void cell_in_b_only (const std::string &cellname, db::cell_index_type ci); void cell_name_differs (const std::string &cellname_a, db::cell_index_type cia, const std::string &cellname_b, db::cell_index_type cib); void begin_cell (const std::string &cellname, db::cell_index_type cia, db::cell_index_type cib); + void cell_meta_info_differs (const std::string &, const tl::Variant &, const tl::Variant &); void bbox_differs (const db::Box &ba, const db::Box &bb); void begin_inst_differences (); void instances_in_a (const std::vector &insts_a, const std::vector &cell_names, const db::PropertiesRepository &props); @@ -155,6 +157,12 @@ TestDifferenceReceiver::dbu_differs (double dbu_a, double dbu_b) m_os << "layout_diff: database units differ " << dbu_a << " vs. " << dbu_b << std::endl; } +void +TestDifferenceReceiver::layout_meta_info_differs (const std::string &name, const tl::Variant &va, const tl::Variant &vb) +{ + m_os << "layout_diff: global meta info differs " << name << ": " << va.to_string () << " vs. " << vb.to_string () << std::endl; +} + void TestDifferenceReceiver::layer_in_a_only (const db::LayerProperties &la) { @@ -204,6 +212,12 @@ TestDifferenceReceiver::begin_cell (const std::string &cellname, db::cell_index_ m_cellname = cellname; } +void +TestDifferenceReceiver::cell_meta_info_differs (const std::string &name, const tl::Variant &va, const tl::Variant &vb) +{ + m_os << "layout_diff: cell meta info differs for cell " << m_cellname << " - " << name << ": " << va.to_string () << " vs. " << vb.to_string () << std::endl; +} + void TestDifferenceReceiver::begin_inst_differences () { @@ -1704,4 +1718,46 @@ TEST(8) ); } +// meta info +TEST(9) +{ + db::Layout a; + db::cell_index_type caa = a.add_cell ("A"); + db::cell_index_type cab = a.add_cell ("B"); + db::Layout b; + db::cell_index_type cba = b.add_cell ("A"); + db::cell_index_type cbb = b.add_cell ("B"); + + a.add_meta_info ("x", db::MetaInfo ("", 17.0, true)); + a.add_meta_info ("y", db::MetaInfo ("", -1.0, false)); // not persisted + a.add_meta_info ("z", db::MetaInfo ("", -1.0, true)); + a.add_meta_info (caa, "a1", db::MetaInfo ("", "a", true)); + a.add_meta_info (caa, "a2", db::MetaInfo ("", 42, false)); // not persisted + a.add_meta_info (caa, "a3", db::MetaInfo ("", 41, true)); + a.add_meta_info (cab, "b1", db::MetaInfo ("", "b", true)); + a.add_meta_info (cab, "b2", db::MetaInfo ("", 3, false)); // not persisted + a.add_meta_info (cab, "b3", db::MetaInfo ("", "q", true)); + + b.add_meta_info ("x", db::MetaInfo ("", 21.0, true)); + b.add_meta_info ("y", db::MetaInfo ("", -1.0, true)); + b.add_meta_info (cba, "a1", db::MetaInfo ("", "aa", true)); + b.add_meta_info (cba, "a2", db::MetaInfo ("", 42, true)); + b.add_meta_info (cbb, "b1", db::MetaInfo ("", "bb", true)); + b.add_meta_info (cbb, "b2", db::MetaInfo ("", 3, true)); + + TestDifferenceReceiver r; + bool eq = db::compare_layouts (a, b, db::layout_diff::f_verbose | db::layout_diff::f_with_meta, 0, r); + EXPECT_EQ (eq, false); + EXPECT_EQ (r.text (), + "layout_diff: global meta info differs x: 17 vs. 21\n" + "layout_diff: global meta info differs y: nil vs. -1\n" + "layout_diff: global meta info differs z: -1 vs. nil\n" + "layout_diff: cell meta info differs for cell A - a1: a vs. aa\n" + "layout_diff: cell meta info differs for cell A - a2: nil vs. 42\n" + "layout_diff: cell meta info differs for cell A - a3: 41 vs. nil\n" + "layout_diff: cell meta info differs for cell B - b1: b vs. bb\n" + "layout_diff: cell meta info differs for cell B - b2: nil vs. 3\n" + "layout_diff: cell meta info differs for cell B - b3: q vs. nil\n" + ); +} diff --git a/src/plugins/streamers/gds2/unit_tests/dbGDS2Reader.cc b/src/plugins/streamers/gds2/unit_tests/dbGDS2ReaderTests.cc similarity index 98% rename from src/plugins/streamers/gds2/unit_tests/dbGDS2Reader.cc rename to src/plugins/streamers/gds2/unit_tests/dbGDS2ReaderTests.cc index 4e3774736..c503bab0a 100644 --- a/src/plugins/streamers/gds2/unit_tests/dbGDS2Reader.cc +++ b/src/plugins/streamers/gds2/unit_tests/dbGDS2ReaderTests.cc @@ -538,7 +538,7 @@ TEST(4_CollectModeRename) } std::string fn_au (tl::testdata () + "/gds/collect_rename_au.gds"); - db::compare_layouts (_this, layout, fn_au, db::WriteGDS2, 1); + db::compare_layouts (_this, layout, fn_au, db::NormalizationMode (db::WriteGDS2 | db::WithMeta), 1); } TEST(4_CollectModeRenameWithGhost) @@ -634,7 +634,7 @@ TEST(4_CollectModeOverwrite) } std::string fn_au (tl::testdata () + "/gds/collect_overwrite_au.gds"); - db::compare_layouts (_this, layout, fn_au, db::WriteGDS2, 1); + db::compare_layouts (_this, layout, fn_au, db::NormalizationMode (db::WriteGDS2 | db::WithMeta), 1); } TEST(4_CollectModeSkip) @@ -658,7 +658,7 @@ TEST(4_CollectModeSkip) } std::string fn_au (tl::testdata () + "/gds/collect_skip_au.gds"); - db::compare_layouts (_this, layout, fn_au, db::WriteGDS2, 1); + db::compare_layouts (_this, layout, fn_au, db::NormalizationMode (db::WriteGDS2 | db::WithMeta), 1); } TEST(4_CollectModeAdd) @@ -682,7 +682,7 @@ TEST(4_CollectModeAdd) } std::string fn_au (tl::testdata () + "/gds/collect_add_au.gds"); - db::compare_layouts (_this, layout, fn_au, db::WriteGDS2, 1); + db::compare_layouts (_this, layout, fn_au, db::NormalizationMode (db::WriteGDS2 | db::WithMeta), 1); } // border case with multiple padding 0 for SNAME and STRING records diff --git a/src/plugins/streamers/gds2/unit_tests/dbGDS2Writer.cc b/src/plugins/streamers/gds2/unit_tests/dbGDS2WriterTests.cc similarity index 100% rename from src/plugins/streamers/gds2/unit_tests/dbGDS2Writer.cc rename to src/plugins/streamers/gds2/unit_tests/dbGDS2WriterTests.cc diff --git a/src/plugins/streamers/gds2/unit_tests/unit_tests.pro b/src/plugins/streamers/gds2/unit_tests/unit_tests.pro index cc5d39a61..396a6273e 100644 --- a/src/plugins/streamers/gds2/unit_tests/unit_tests.pro +++ b/src/plugins/streamers/gds2/unit_tests/unit_tests.pro @@ -6,8 +6,8 @@ TARGET = gds2_tests include($$PWD/../../../../lib_ut.pri) SOURCES = \ - dbGDS2Reader.cc \ - dbGDS2Writer.cc \ + dbGDS2ReaderTests.cc \ + dbGDS2WriterTests.cc INCLUDEPATH += $$LAY_INC $$TL_INC $$DB_INC $$GSI_INC $$PWD/../db_plugin $$PWD/../../../common DEPENDPATH += $$LAY_INC $$TL_INC $$DB_INC $$GSI_INC $$PWD/../db_plugin $$PWD/../../../common diff --git a/testdata/gds/collect_add_au.gds b/testdata/gds/collect_add_au.gds index ca0206610f735d387d7be8c495ec574f7d97e7bd..ec52fb206812965fa59b229753e871bc520c7aa4 100644 GIT binary patch literal 13406 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 diff --git a/testdata/gds/collect_added.gds b/testdata/gds/collect_added.gds index e4882b6d8354f758abd8171d00e5d3c2dcc31d6d..2e366a6a0f34b1d5d6c07e515570949492679cde 100644 GIT binary patch literal 5086 zcmeHL&ref95T5s1mRbuzB*u^)Odym-0_BH@CN(Ko6JiApB!a)10tK3sVrZk7c=Y1U zlNUXBF!3KS#)Bsh#y^FV@!-jL@SEA)_LWDa5KJ`bCVjK-&Ca}U_nY0BS5oAhJHLnV(xs zFD+(g=Wfj7mVzN7)!`DZoqQeY3gFsYQx{!w==_knm0nB@Zf)=6$KuJD$Qb-VOVn$$ z8^!IFToG#B8H-Wy3{fyl6z*1xsDFYYo_Di#Cv^^~g_(3FljITNv4gtsY_O8wt-#rB z^PY%|9Nfxn#FKq}qcZX|_3+4I`C)FgP!dH#qY5)-XmU^TJMrXQkypn?68FXKl(s9B z9_4q+`FL_YS1jj66QU^Ft#6kq*-~x`x>&igmgRecqg~_RCjgQVE2aJA*VnVf#|$qq zJgRZD)ii4W!kWY-u?f~RtHx$h+XOtCO>Hx!HLljI`seHDHCrj<%3`6%6JtdrC8u-c z!Ya7f$H&w$_(-K%7wWBc$`k zG1$OibyBBQiw%=KA|{)UBG(>0pPwKjt$c16;r%hcFy>zB;;Ka|OTmZG5Nz%A$0|3hY&B^sTU60f**^7Dmr~!l zpCHzVtfZH?x4)n0W_L+KweR8OI&AgHQ3p_qrVg`Bb$gx5!`nkPpBu zkO~qY6!{r)3D3V82^4~kCC2a!suHN3AwAA9b}}RQt;ADTy zhDdY`o@SU(O5N7E<=}6VW_;K<9QUzV^s%`wo&+gavr?D?TUCiZ#~3pxvBrIlLo3lW z?I=hmt4JNQV=96a@gxn>MmeuLH(6Uo%4^M%;}2`jF~w;4UgZ86a-8vuI4*e>-1K{z zK@5IUsk(2+`frtHe1!Bl;hXb6zt;{q|FAac`q-^M!)0yo)r~V3F)kTeSTj4hs!_cT zIEh5trr!%YW~_QEY&WyQK(btqq`qSIAOV{V-q(GPK~%F6XNr^`^&x8#F*$*2lKolX zf9IRyn6o?olX6fc>{(^Rg^%w;R!)1z8K&a`e2RyzO^FGQZ)loeu&K9A*tc1xP5gP@ s);L~5ziRQRG22!NCmtc^71HGKRmjD0& literal 4990 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 literal 9360 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 WC$V#csaF) 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 literal 13248 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 diff --git a/testdata/ruby/dbLayoutTests2.rb b/testdata/ruby/dbLayoutTests2.rb index b5dbb9a50..bf5349645 100644 --- a/testdata/ruby/dbLayoutTests2.rb +++ b/testdata/ruby/dbLayoutTests2.rb @@ -23,6 +23,10 @@ end load("test_prologue.rb") +def mi2s(obj) + obj.each_meta_info.collect { |mi| mi.name + ":" + mi.value.to_s }.sort.join(";") +end + class DBLayoutTests2_TestClass < TestBase # LayerInfo @@ -1253,6 +1257,175 @@ class DBLayoutTests2_TestClass < TestBase end + # Cell#read and meta info (issue #1609) + def test_16 + + tmp = File::join($ut_testtmp, "test16.gds") + + ly1 = RBA::Layout::new + a = ly1.create_cell("A") + b = ly1.create_cell("B") + a.insert(RBA::DCellInstArray::new(b, RBA::Trans::new)) + + a.add_meta_info(RBA::LayoutMetaInfo::new("am1", 42.0, "", true)) + a.add_meta_info(RBA::LayoutMetaInfo::new("am2", "u", "", true)) + assert_equal(mi2s(a), "am1:42.0;am2:u") + + b.add_meta_info(RBA::LayoutMetaInfo::new("bm1", 17, "", true)) + assert_equal(mi2s(b), "bm1:17") + + ly1.add_meta_info(RBA::LayoutMetaInfo::new("lm1", -2.0, "", true)) + ly1.add_meta_info(RBA::LayoutMetaInfo::new("lm2", "v", "", true)) + assert_equal(mi2s(ly1), "lm1:-2.0;lm2:v") + + ly1.write(tmp) + + ly2 = RBA::Layout::new + top = ly2.create_cell("TOP") + a = ly2.create_cell("A") + c = ly2.create_cell("C") + top.insert(RBA::DCellInstArray::new(a, RBA::Trans::new)) + a.insert(RBA::DCellInstArray::new(c, RBA::Trans::new)) + + top.add_meta_info(RBA::LayoutMetaInfo::new("topm1", "abc")) + assert_equal(mi2s(top), "topm1:abc") + a.add_meta_info(RBA::LayoutMetaInfo::new("am1", "a number")) + a.add_meta_info(RBA::LayoutMetaInfo::new("am3", 0)) + assert_equal(mi2s(a), "am1:a number;am3:0") + c.add_meta_info(RBA::LayoutMetaInfo::new("cm1", 3)) + assert_equal(mi2s(c), "cm1:3") + + ly2.add_meta_info(RBA::LayoutMetaInfo::new("lm1", 5)) + assert_equal(mi2s(ly2), "lm1:5") + + a.read(tmp) + # not modified + assert_equal(mi2s(ly2), "lm1:5") + # merged + assert_equal(mi2s(a), "am1:42.0;am2:u;am3:0") + # not modified + assert_equal(mi2s(c), "cm1:3") + + b2 = ly2.cell("B") + # imported + assert_equal(mi2s(b2), "bm1:17") + + puts "done." + + end + + # Layout, meta info diverse + def test_17 + + manager = RBA::Manager::new + + ly = RBA::Layout::new(manager) + a = ly.create_cell("A") + + manager.transaction("trans") + ly.add_meta_info(RBA::LayoutMetaInfo::new("lm1", 17)) + a.add_meta_info(RBA::LayoutMetaInfo::new("am1", "u")) + manager.commit + + assert_equal(mi2s(ly), "lm1:17") + assert_equal(mi2s(a), "am1:u") + + manager.undo + assert_equal(mi2s(ly), "") + assert_equal(mi2s(a), "") + + manager.redo + assert_equal(mi2s(ly), "lm1:17") + assert_equal(mi2s(a), "am1:u") + + manager.transaction("trans") + ly.add_meta_info(RBA::LayoutMetaInfo::new("lm1", 117)) + a.add_meta_info(RBA::LayoutMetaInfo::new("am1", "v")) + manager.commit + + assert_equal(mi2s(ly), "lm1:117") + assert_equal(mi2s(a), "am1:v") + + manager.undo + assert_equal(mi2s(ly), "lm1:17") + assert_equal(mi2s(a), "am1:u") + + manager.redo + assert_equal(mi2s(ly), "lm1:117") + assert_equal(mi2s(a), "am1:v") + + manager.undo + assert_equal(mi2s(ly), "lm1:17") + assert_equal(mi2s(a), "am1:u") + + manager.transaction("trans") + ly.remove_meta_info("lm1") + a.remove_meta_info("am1") + a.remove_meta_info("doesnotexist") + manager.commit + + assert_equal(mi2s(ly), "") + assert_equal(mi2s(a), "") + + manager.undo + assert_equal(mi2s(ly), "lm1:17") + assert_equal(mi2s(a), "am1:u") + + manager.transaction("trans") + ly.clear_all_meta_info + manager.commit + + assert_equal(mi2s(ly), "") + assert_equal(mi2s(a), "") + + manager.undo + assert_equal(mi2s(ly), "lm1:17") + assert_equal(mi2s(a), "am1:u") + + manager.redo + assert_equal(mi2s(ly), "") + assert_equal(mi2s(a), "") + + ly2 = RBA::Layout::new + ly.add_meta_info(RBA::LayoutMetaInfo::new("lm1", 17)) + ly2.add_meta_info(RBA::LayoutMetaInfo::new("lm2", 42)) + assert_equal(mi2s(ly), "lm1:17") + ly.merge_meta_info(ly2) + assert_equal(mi2s(ly), "lm1:17;lm2:42") + ly.copy_meta_info(ly2) + assert_equal(mi2s(ly), "lm2:42") + + a = ly.create_cell("A") + a.add_meta_info(RBA::LayoutMetaInfo::new("am1", "u")) + b = ly2.create_cell("B") + b.add_meta_info(RBA::LayoutMetaInfo::new("bm1", "v")) + + assert_equal(mi2s(a), "am1:u") + a.merge_meta_info(b) + assert_equal(mi2s(a), "am1:u;bm1:v") + a.copy_meta_info(b) + assert_equal(mi2s(a), "bm1:v") + + ly = RBA::Layout::new + ly2 = RBA::Layout::new + + a = ly.create_cell("A") + a.add_meta_info(RBA::LayoutMetaInfo::new("am1", "u")) + ly2.create_cell("X") + b = ly2.create_cell("B") + b.add_meta_info(RBA::LayoutMetaInfo::new("bm1", "v")) + + cm = RBA::CellMapping::new + cm.map(b.cell_index, a.cell_index) + + assert_equal(mi2s(a), "am1:u") + ly.merge_meta_info(ly2, cm) + assert_equal(mi2s(a), "am1:u;bm1:v") + ly.copy_meta_info(ly2, cm) + assert_equal(mi2s(a), "bm1:v") + + end + end load("test_epilogue.rb") From f37e37340ca9246d9b91f2690717da945cd450ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sun, 11 Feb 2024 10:34:21 +0100 Subject: [PATCH 07/17] Issue 1608 (#1615) * Fixed issue #1608 (Device extractor error shape) * New test data * Add-on: pressing Esc on the netlist or marker browser clears markers * Updated test data --------- Co-authored-by: Matthias Koefferlein --- src/db/db/dbNetlistDeviceExtractor.cc | 26 ++++++- src/layui/layui/layBrowser.cc | 10 +++ src/layui/layui/layBrowser.h | 1 + src/lvs/unit_tests/lvsSimpleTests.cc | 20 +++-- src/lvs/unit_tests/lvsTests.cc | 2 +- testdata/lvs/custom_resistors.cir | 18 +++++ testdata/lvs/custom_resistors.gds | Bin 0 -> 1878 bytes testdata/lvs/custom_resistors.l2n.1 | 103 ++++++++++++++++++++++++++ testdata/lvs/custom_resistors.l2n.2 | 103 ++++++++++++++++++++++++++ testdata/lvs/custom_resistors.lvs | 86 +++++++++++++++++++++ 10 files changed, 358 insertions(+), 11 deletions(-) create mode 100644 testdata/lvs/custom_resistors.cir create mode 100644 testdata/lvs/custom_resistors.gds create mode 100644 testdata/lvs/custom_resistors.l2n.1 create mode 100644 testdata/lvs/custom_resistors.l2n.2 create mode 100644 testdata/lvs/custom_resistors.lvs diff --git a/src/db/db/dbNetlistDeviceExtractor.cc b/src/db/db/dbNetlistDeviceExtractor.cc index 6e4bc6ae2..00cbe62a5 100644 --- a/src/db/db/dbNetlistDeviceExtractor.cc +++ b/src/db/db/dbNetlistDeviceExtractor.cc @@ -287,19 +287,37 @@ void NetlistDeviceExtractor::extract_without_initialize (db::Layout &layout, db: extractor_cache_type::const_iterator ec = extractor_cache.find (layer_geometry); if (ec == extractor_cache.end ()) { + log_entry_list log_entries; + m_log_entries.swap (log_entries); + // do the actual device extraction extract_devices (layer_geometry); // push the new devices to the layout push_new_devices (disp); - ExtractorCacheValueType &ecv = extractor_cache [layer_geometry]; - ecv.disp = disp; + if (m_log_entries.empty ()) { + + // cache unless log entries are produced + ExtractorCacheValueType &ecv = extractor_cache [layer_geometry]; + ecv.disp = disp; + + for (std::map >::const_iterator d = m_new_devices.begin (); d != m_new_devices.end (); ++d) { + ecv.devices.push_back (d->second.first); + } + + } else { + + // transform the marker geometries from the log entries to match the device + db::DVector disp_dbu = db::CplxTrans (dbu ()) * disp; + for (auto l = m_log_entries.begin (); l != m_log_entries.end (); ++l) { + l->set_geometry (l->geometry ().moved (disp_dbu)); + } - for (std::map >::const_iterator d = m_new_devices.begin (); d != m_new_devices.end (); ++d) { - ecv.devices.push_back (d->second.first); } + m_log_entries.splice (m_log_entries.begin (), log_entries); + m_new_devices.clear (); } else { diff --git a/src/layui/layui/layBrowser.cc b/src/layui/layui/layBrowser.cc index e47e56525..edfbf4a26 100644 --- a/src/layui/layui/layBrowser.cc +++ b/src/layui/layui/layBrowser.cc @@ -95,6 +95,16 @@ Browser::accept () } } +void +Browser::reject () +{ + if (active ()) { + m_active = false; + deactivated (); + QDialog::reject (); + } +} + } #endif diff --git a/src/layui/layui/layBrowser.h b/src/layui/layui/layBrowser.h index 03416ce20..30edb4199 100644 --- a/src/layui/layui/layBrowser.h +++ b/src/layui/layui/layBrowser.h @@ -138,6 +138,7 @@ private: void closeEvent (QCloseEvent *); void accept (); + void reject (); }; } diff --git a/src/lvs/unit_tests/lvsSimpleTests.cc b/src/lvs/unit_tests/lvsSimpleTests.cc index cde9e8f7f..d82d5d56d 100644 --- a/src/lvs/unit_tests/lvsSimpleTests.cc +++ b/src/lvs/unit_tests/lvsSimpleTests.cc @@ -28,7 +28,7 @@ #include "lymMacro.h" #include "tlFileUtils.h" -void run_test (tl::TestBase *_this, const std::string &suffix, const std::string &layout, bool with_l2n = false, const std::string &top = std::string (), bool change_case = false) +void run_test (tl::TestBase *_this, const std::string &suffix, const std::string &layout, bool with_l2n = false, bool with_lvs = true, const std::string &top = std::string (), bool change_case = false) { std::string rs = tl::testdata (); rs += "/lvs/" + suffix + ".lvs"; @@ -70,7 +70,9 @@ void run_test (tl::TestBase *_this, const std::string &suffix, const std::string lvs.load_from (rs); EXPECT_EQ (lvs.run (), 0); - _this->compare_text_files (output_lvsdb, au_lvsdb); + if (with_lvs) { + _this->compare_text_files (output_lvsdb, au_lvsdb); + } _this->compare_text_files (output_cir, au_cir); if (with_l2n) { _this->compare_text_files (output_l2n, au_l2n); @@ -121,14 +123,14 @@ TEST(6_simple_pin_swapping) { run_test (_this, "ringo_simple_pin_swapping", "ringo.gds"); // change case - run_test (_this, "ringo_simple_pin_swapping", "ringo.gds", false, std::string (), true); + run_test (_this, "ringo_simple_pin_swapping", "ringo.gds", false, true, std::string (), true); } TEST(7_net_and_circuit_equivalence) { run_test (_this, "ringo_simple_net_and_circuit_equivalence", "ringo_renamed.gds"); // change case - run_test (_this, "ringo_simple_net_and_circuit_equivalence", "ringo_renamed.gds", false, std::string (), true); + run_test (_this, "ringo_simple_net_and_circuit_equivalence", "ringo_renamed.gds", false, true, std::string (), true); } TEST(8_simplification) @@ -166,7 +168,7 @@ TEST(13_simple_ringo_device_subcircuits) { run_test (_this, "ringo_device_subcircuits", "ringo.gds"); // change case - run_test (_this, "ringo_device_subcircuits", "ringo.gds", false, std::string (), true); + run_test (_this, "ringo_device_subcircuits", "ringo.gds", false, true, std::string (), true); } TEST(14_simple_ringo_mixed_hierarchy) @@ -181,7 +183,7 @@ TEST(15_simple_dummy_device) TEST(16_floating) { - run_test (_this, "floating", "floating.gds", false, "TOP"); + run_test (_this, "floating", "floating.gds", false, true, "TOP"); } TEST(17_layout_variants) @@ -287,3 +289,9 @@ TEST(31_MustConnect2) run_test (_this, "must_connect2", "must_connect2.gds"); } +// issue 1609 +TEST(40_DeviceExtractorErrors) +{ + run_test (_this, "custom_resistors", "custom_resistors.gds", true, false /*no LVS*/); +} + diff --git a/src/lvs/unit_tests/lvsTests.cc b/src/lvs/unit_tests/lvsTests.cc index 40de5d859..616b561e2 100644 --- a/src/lvs/unit_tests/lvsTests.cc +++ b/src/lvs/unit_tests/lvsTests.cc @@ -165,7 +165,7 @@ TEST(20_private) TEST(21_private) { - run_test (_this, "test_21.lylvs", "test_21.cir.gz", "test_21.gds.gz", true, "test_21_3.lvsdb"); + run_test (_this, "test_21.lylvs", "test_21.cir.gz", "test_21.gds.gz", true, "test_21_4.lvsdb"); } // issue #1021 diff --git a/testdata/lvs/custom_resistors.cir b/testdata/lvs/custom_resistors.cir new file mode 100644 index 000000000..f49736e76 --- /dev/null +++ b/testdata/lvs/custom_resistors.cir @@ -0,0 +1,18 @@ + +* cell TOP +.SUBCKT TOP +* cell instance $1 r180 *1 2,2.6 +X$1 6 1 A +* cell instance $2 r0 *1 2.2,1 +X$2 6 5 A +* device instance $1 r0 *1 0.8,0.75 RPP1 +R$1 2 1 0.555555555556 RPP1 +.ENDS TOP + +* cell A +* pin +* pin +.SUBCKT A 1 2 +* device instance $1 r0 *1 -0.2,0.4 RPP1 +R$1 1 2 1.25 RPP1 +.ENDS A diff --git a/testdata/lvs/custom_resistors.gds b/testdata/lvs/custom_resistors.gds new file mode 100644 index 0000000000000000000000000000000000000000..df4b2d40057e222f093cbf4c38b015d1fe934d13 GIT binary patch literal 1878 zcmai!v1=4T7{%Yt?#>+{iKko@t_Ud(3qjCAZ2}1r5CtWq5DP1@u(GtWve7D)2!e=> zkSc|Ub&8NG_&20VB^Fi|uJ6t4mz}*h=N9>0-tL<>^UXH{59c0YQn94d@)9c$@t z44uDsXA>Bg_4>x^8+Q*s|Gahk+trWnAMIdL=Y8J$4WJqVe#v18e%S%IGAf&7oi+)jlzuZy&_I>Ifb?avy>lfC{+FRWtO%KfY z`7YVN@)dWLk1?}<=knt|(fB0pe`I$5*3$Xo8tear{tsn?}DnPUDz9 z@3d?E$`NheM$_lz%cmSsxvHPh^qKtLY14^NpNO;jXZlS4^!(*2Fkp|0>c4v2(R4Dc zf6vcKg?v%@#jlRc4G)?6d#6=BR`10g9(>?fE1XYD)5(lK++^{lJ*M|1<9>GxH!yYH XA{l?o4Yv&EA;0pCrkkI)MOEQ1OLHE* literal 0 HcmV?d00001 diff --git a/testdata/lvs/custom_resistors.l2n.1 b/testdata/lvs/custom_resistors.l2n.1 new file mode 100644 index 000000000..1047b4c0a --- /dev/null +++ b/testdata/lvs/custom_resistors.l2n.1 @@ -0,0 +1,103 @@ +#%l2n-klayout +W(TOP) +U(0.001) +L(l4 '15/0') +L(l3 '16/0') +L(l1) +C(l4 l4 l3 l1) +C(l3 l4 l3) +C(l1 l4 l1) +H(E B('Resistor shape does not touch marker border in exactly two places') C(TOP) X('device-extract') Q('(0.8,0.75;0.8,1.15;1,1.15;1,0.75)')) +H(E B('Resistor shape does not touch marker border in exactly two places') C(TOP) X('device-extract') Q('(0,0.75;0,1.15;0.2,1.15;0.2,0.75)')) +H(E B('Resistor shape does not touch marker border in exactly two places') C(A) X('device-extract') Q('(0.85,-0.4;0.85,-0.2;1.25,-0.2;1.25,-0.4)')) +K(RPP1 RES) +D(D$RPP1 RPP1 + T(A + R(l1 (0 400) (200 300)) + ) + T(B + R(l1 (0 1200) (200 250)) + ) +) +D(D$RPP1$1 RPP1 + T(A + R(l1 (0 0) (250 200)) + ) + T(B + R(l1 (750 0) (250 200)) + ) +) +X(A + R((-200 -450) (1750 1350)) + N(1 + R(l4 (-150 450) (100 100)) + R(l3 (-150 -150) (200 500)) + R(l1 (-200 -500) (250 200)) + ) + N(2 + R(l4 (650 450) (100 100)) + R(l4 (-100 -900) (100 100)) + R(l3 (-150 200) (200 650)) + R(l3 (-200 -1000) (200 500)) + R(l1 (-250 300) (250 200)) + R(l1 (-200 -1000) (250 200)) + ) + N(3 + R(l4 (1450 -350) (100 100)) + ) + P(1) + P(2) + D(1 D$RPP1$1 + Y(-200 400) + E(R 1.25) + E(L 0.5) + E(W 0.2) + E(A 0.1) + E(P 1.4) + T(A 1) + T(B 2) + ) +) +X(TOP + R((-50 450) (3800 2600)) + N(1 + R(l4 (850 2050) (100 100)) + R(l3 (-150 -150) (500 200)) + R(l1 (-500 -250) (200 250)) + ) + N(2 + R(l4 (850 1250) (100 100)) + R(l4 (-100 -100) (100 100)) + R(l4 (-900 -100) (100 100)) + R(l3 (200 -150) (650 200)) + R(l3 (-1000 -200) (500 200)) + R(l1 (300 -250) (200 300)) + R(l1 (-1000 -300) (200 250)) + ) + N(3 + R(l4 (50 450) (100 100)) + ) + N(4 + R(l4 (850 450) (100 100)) + ) + N(5) + N(6) + D(1 D$RPP1 + Y(800 750) + E(R 0.555555555556) + E(L 0.333333333333) + E(W 0.3) + E(A 0.1) + E(P 1.26666666667) + T(A 2) + T(B 1) + ) + X(1 A O(180) Y(2000 2600) + P(0 6) + P(1 1) + ) + X(2 A Y(2200 1000) + P(0 6) + P(1 5) + ) +) diff --git a/testdata/lvs/custom_resistors.l2n.2 b/testdata/lvs/custom_resistors.l2n.2 new file mode 100644 index 000000000..17deb7617 --- /dev/null +++ b/testdata/lvs/custom_resistors.l2n.2 @@ -0,0 +1,103 @@ +#%l2n-klayout +W(TOP) +U(0.001) +L(l4 '15/0') +L(l3 '16/0') +L(l1) +C(l4 l4 l3 l1) +C(l3 l4 l3) +C(l1 l4 l1) +H(E B('Resistor shape does not touch marker border in exactly two places') C(TOP) X('device-extract') Q('(0,0.75;0,1.15;0.2,1.15;0.2,0.75)')) +H(E B('Resistor shape does not touch marker border in exactly two places') C(TOP) X('device-extract') Q('(0.8,0.75;0.8,1.15;1,1.15;1,0.75)')) +H(E B('Resistor shape does not touch marker border in exactly two places') C(A) X('device-extract') Q('(0.85,-0.4;0.85,-0.2;1.25,-0.2;1.25,-0.4)')) +K(RPP1 RES) +D(D$RPP1 RPP1 + T(A + R(l1 (0 400) (200 300)) + ) + T(B + R(l1 (0 1200) (200 250)) + ) +) +D(D$RPP1$1 RPP1 + T(A + R(l1 (0 0) (250 200)) + ) + T(B + R(l1 (750 0) (250 200)) + ) +) +X(A + R((-200 -450) (1750 1350)) + N(1 + R(l4 (-150 450) (100 100)) + R(l3 (-150 -150) (200 500)) + R(l1 (-200 -500) (250 200)) + ) + N(2 + R(l4 (650 450) (100 100)) + R(l4 (-100 -900) (100 100)) + R(l3 (-150 200) (200 650)) + R(l3 (-200 -1000) (200 500)) + R(l1 (-250 300) (250 200)) + R(l1 (-200 -1000) (250 200)) + ) + N(3 + R(l4 (1450 -350) (100 100)) + ) + P(1) + P(2) + D(1 D$RPP1$1 + Y(-200 400) + E(R 1.25) + E(L 0.5) + E(W 0.2) + E(A 0.1) + E(P 1.4) + T(A 1) + T(B 2) + ) +) +X(TOP + R((-50 450) (3800 2600)) + N(1 + R(l4 (850 2050) (100 100)) + R(l3 (-150 -150) (500 200)) + R(l1 (-500 -250) (200 250)) + ) + N(2 + R(l4 (850 1250) (100 100)) + R(l4 (-100 -100) (100 100)) + R(l4 (-900 -100) (100 100)) + R(l3 (200 -150) (650 200)) + R(l3 (-1000 -200) (500 200)) + R(l1 (300 -250) (200 300)) + R(l1 (-1000 -300) (200 250)) + ) + N(3 + R(l4 (50 450) (100 100)) + ) + N(4 + R(l4 (850 450) (100 100)) + ) + N(5) + N(6) + D(1 D$RPP1 + Y(800 750) + E(R 0.555555555556) + E(L 0.333333333333) + E(W 0.3) + E(A 0.1) + E(P 1.26666666667) + T(A 2) + T(B 1) + ) + X(1 A O(180) Y(2000 2600) + P(0 6) + P(1 1) + ) + X(2 A Y(2200 1000) + P(0 6) + P(1 5) + ) +) diff --git a/testdata/lvs/custom_resistors.lvs b/testdata/lvs/custom_resistors.lvs new file mode 100644 index 000000000..78072f645 --- /dev/null +++ b/testdata/lvs/custom_resistors.lvs @@ -0,0 +1,86 @@ + +source($lvs_test_source, "TOP") + +report_netlist($lvs_test_target_l2n) +target_netlist($lvs_test_target_cir) + +deep + +# ------------------------------------------------------------------- +# Layers + +poly_dg = input(13, 0) +cont = input(15, 0) +met1_dg = input(16, 0) +sblk = input(34, 0) +rp_1 = sblk & poly_dg +p1trm = poly_dg - rp_1 + +class ResistorExtractor < RBA::GenericDeviceExtractor + + def initialize(name, sheet_rho) + self.name = name + @sheet_rho = sheet_rho + end + + def setup + define_layer("C", "Conductor") + define_layer("R", "Resistor") + register_device_class(RBA::DeviceClassResistor::new) + end + + def get_connectivity(layout, layers) + # this "connectivity" forms the shape clusters that make up the device + conn = RBA::Connectivity::new + conn.connect(layers[0], layers[1]) # collect touching contacts + conn.connect(layers[1], layers[1]) # combine resistor shapes into one area + conn + end + + def extract_devices(layer_geometry) + # layer_geometry provides the input layers in the order they are defined with "define_layer" + conductor = layer_geometry[0] + resistor = layer_geometry[1] + + resistor_regions = resistor.merged + + resistor_regions.each do |r| + terminals = conductor.interacting(RBA::Region::new(r)) + if terminals.size != 2 + error("Resistor shape does not touch marker border in exactly two places", r) + else + double_width = 0 + (terminals.edges & resistor.edges).merged.each do |e| + double_width += e.length + end + # A = L*W + # -> L = A/W + a = r.area*dbu*dbu + w = (double_width / 2.0)*dbu + l = a / w + + device = create_device + device.set_parameter(RBA::DeviceClassResistor::PARAM_R, @sheet_rho * l / w); + + device.set_parameter(RBA::DeviceClassResistor::PARAM_A, a) + device.set_parameter(RBA::DeviceClassResistor::PARAM_L, l) + device.set_parameter(RBA::DeviceClassResistor::PARAM_P, 2*l+2*w) + device.set_parameter(RBA::DeviceClassResistor::PARAM_W, w) + define_terminal(device, "A", "C", terminals[0]); + define_terminal(device, "B", "C", terminals[1]); + end + end + end +end + +extract_devices(ResistorExtractor::new("RPP1", 0.5), # intentionally wrong: 1565.15/5 + { "C" => p1trm, "R" => rp_1 }) + +connect(met1_dg, cont) +connect(p1trm, cont) + +begin + netlist +rescue => ex +end + From 8d4da8b3747d06e4798289a8cd6afed98664dc7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sun, 11 Feb 2024 10:35:36 +0100 Subject: [PATCH 08/17] Fixed issue #1603 (weird layout of parameters) (#1612) Also fixed a problem with icons that did not get hidden when visibility was changed. This fix needed some rework of the layout scheme of PCell parameter pages. Co-authored-by: Matthias Koefferlein --- src/edt/edt/edtPCellParametersPage.cc | 122 +++++++++++++++++++------- src/edt/edt/edtPCellParametersPage.h | 12 ++- 2 files changed, 97 insertions(+), 37 deletions(-) diff --git a/src/edt/edt/edtPCellParametersPage.cc b/src/edt/edt/edtPCellParametersPage.cc index a79b6a1d1..2e5488d2e 100644 --- a/src/edt/edt/edtPCellParametersPage.cc +++ b/src/edt/edt/edtPCellParametersPage.cc @@ -41,6 +41,8 @@ #include #include #include +#include +#include namespace edt { @@ -294,32 +296,32 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P mp_parameters_area = new QScrollArea (this); mp_parameters_area->setFrameShape (QFrame::NoFrame); + mp_parameters_area->setWidgetResizable (true); QGridLayout *frame_layout = dynamic_cast (QFrame::layout ()); frame_layout->addWidget (mp_parameters_area, 2, 0, 1, 1); frame_layout->setRowStretch (2, 1); - QFrame *fi = new QFrame (mp_parameters_area); - QWidget *inner_frame = fi; - fi->setFrameShape (QFrame::NoFrame); + mp_main_frame = new QFrame (mp_parameters_area); + mp_main_frame->setFrameShape (QFrame::NoFrame); setFrameShape (QFrame::NoFrame); - QGridLayout *inner_grid = new QGridLayout (inner_frame); - inner_frame->setLayout (inner_grid); + QGridLayout *main_grid = new QGridLayout (mp_main_frame); + mp_main_frame->setLayout (main_grid); if (m_dense) { - inner_grid->setContentsMargins (4, 4, 4, 4); - inner_grid->setHorizontalSpacing (6); - inner_grid->setVerticalSpacing (2); + main_grid->setContentsMargins (4, 4, 4, 4); + main_grid->setHorizontalSpacing (6); + main_grid->setVerticalSpacing (2); } - QWidget *main_frame = inner_frame; - QGridLayout *main_grid = inner_grid; - if (! mp_pcell_decl) { - mp_parameters_area->setWidget (main_frame); + mp_parameters_area->setWidget (mp_main_frame); update_current_parameters (); return; } + QWidget *inner_frame = mp_main_frame; + QGridLayout *inner_grid = main_grid; + int main_row = 0; int row = 0; std::string group_title; @@ -362,7 +364,8 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P if (! gt.empty ()) { // create a new group - QGroupBox *gb = new QGroupBox (main_frame); + QGroupBox *gb = new QGroupBox (mp_main_frame); + mp_groups.push_back (gb); gb->setTitle (tl::to_qstring (gt)); main_grid->addWidget (gb, main_row, 0, 1, 3); @@ -382,7 +385,7 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P // back to the main group inner_grid = main_grid; - inner_frame = main_frame; + inner_frame = mp_main_frame; row = main_row; } @@ -427,6 +430,9 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P hb->setContentsMargins (0, 0, 0, 0); f->setLayout (hb); f->setFrameShape (QFrame::NoFrame); + QSizePolicy sp = f->sizePolicy (); + sp.setHorizontalStretch (1); + f->setSizePolicy (sp); QLineEdit *le = new QLineEdit (f); hb->addWidget (le); @@ -434,9 +440,13 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P le->setObjectName (tl::to_qstring (p->get_name ())); m_widgets.push_back (le); - QLabel *ul = new QLabel (f); - hb->addWidget (ul, 1); - ul->setText (tl::to_qstring (p->get_unit ())); + if (! p->get_unit ().empty ()) { + QLabel *ul = new QLabel (f); + hb->addWidget (ul, 1); + ul->setText (tl::to_qstring (p->get_unit ())); + } + + hb->addStretch (1); inner_grid->addWidget (f, row, 2); m_all_widgets.back ().push_back (f); @@ -450,7 +460,10 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P QPushButton *pb = new QPushButton (inner_frame); pb->setObjectName (tl::to_qstring (p->get_name ())); pb->setText (tl::to_qstring (description)); - pb->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Preferred); + QSizePolicy sp = pb->sizePolicy (); + sp.setHorizontalPolicy (QSizePolicy::Fixed); + sp.setHorizontalStretch (1); + pb->setSizePolicy (sp); m_widgets.push_back (pb); inner_grid->addWidget (pb, row, 2); @@ -466,6 +479,9 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P { QLineEdit *le = new QLineEdit (inner_frame); le->setObjectName (tl::to_qstring (p->get_name ())); + QSizePolicy sp = le->sizePolicy (); + sp.setHorizontalStretch (1); + le->setSizePolicy (sp); m_widgets.push_back (le); inner_grid->addWidget (le, row, 2); m_all_widgets.back ().push_back (le); @@ -476,13 +492,29 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P case db::PCellParameterDeclaration::t_layer: { - lay::LayerSelectionComboBox *ly = new lay::LayerSelectionComboBox (inner_frame); + QFrame *f = new QFrame (inner_frame); + QHBoxLayout *hb = new QHBoxLayout (f); + hb->setContentsMargins (0, 0, 0, 0); + f->setLayout (hb); + f->setFrameShape (QFrame::NoFrame); + QSizePolicy sp = f->sizePolicy (); + sp.setHorizontalStretch (1); + f->setSizePolicy (sp); + + lay::LayerSelectionComboBox *ly = new lay::LayerSelectionComboBox (f); + hb->addWidget (ly); ly->set_no_layer_available (true); ly->set_view (mp_view, m_cv_index, true /*all layers*/); ly->setObjectName (tl::to_qstring (p->get_name ())); + sp = ly->sizePolicy (); + sp.setHorizontalPolicy (QSizePolicy::Fixed); + ly->setSizePolicy (sp); m_widgets.push_back (ly); - inner_grid->addWidget (ly, row, 2); - m_all_widgets.back ().push_back (ly); + + hb->addStretch (1); + + inner_grid->addWidget (f, row, 2); + m_all_widgets.back ().push_back (f); connect (ly, SIGNAL (activated (int)), this, SLOT (parameter_changed ())); } @@ -492,7 +524,9 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P { QCheckBox *cbx = new QCheckBox (inner_frame); // this makes the checkbox not stretch over the full width - better when navigating with tab - cbx->setSizePolicy (QSizePolicy (QSizePolicy::Fixed, QSizePolicy::Preferred)); + QSizePolicy sp = cbx->sizePolicy (); + sp.setHorizontalStretch (1); + cbx->setSizePolicy (sp); cbx->setObjectName (tl::to_qstring (p->get_name ())); m_widgets.push_back (cbx); inner_grid->addWidget (cbx, row, 2); @@ -509,8 +543,20 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P } else { - QComboBox *cb = new QComboBox (inner_frame); + QFrame *f = new QFrame (inner_frame); + QHBoxLayout *hb = new QHBoxLayout (f); + hb->setContentsMargins (0, 0, 0, 0); + f->setLayout (hb); + f->setFrameShape (QFrame::NoFrame); + QSizePolicy sp = f->sizePolicy (); + sp.setHorizontalStretch (1); + f->setSizePolicy (sp); + + QComboBox *cb = new QComboBox (f); + hb->addWidget (cb); cb->setObjectName (tl::to_qstring (p->get_name ())); + cb->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Preferred); + cb->setSizeAdjustPolicy (QComboBox::AdjustToContents); int i = 0; for (std::vector::const_iterator c = p->get_choices ().begin (); c != p->get_choices ().end (); ++c, ++i) { @@ -523,21 +569,25 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P connect (cb, SIGNAL (activated (int)), this, SLOT (parameter_changed ())); - cb->setMinimumContentsLength (30); - cb->setSizeAdjustPolicy (QComboBox::AdjustToMinimumContentsLengthWithIcon); m_widgets.push_back (cb); - inner_grid->addWidget (cb, row, 2); - m_all_widgets.back ().push_back (cb); + + hb->addStretch (1); + + inner_grid->addWidget (f, row, 2); + m_all_widgets.back ().push_back (f); } ++row; - if (inner_frame == main_frame) { + if (inner_frame == mp_main_frame) { ++main_row; } } + // adds some default buffer space + main_grid->setRowStretch (main_row, 1); + // initial callback try { @@ -556,8 +606,8 @@ PCellParametersPage::setup (lay::LayoutViewBase *view, int cv_index, const db::P update_widgets_from_states (m_states); - mp_parameters_area->setWidget (main_frame); - main_frame->show (); + mp_parameters_area->setWidget (mp_main_frame); + mp_main_frame->show (); update_current_parameters (); } @@ -944,15 +994,15 @@ PCellParametersPage::update_widgets_from_states (const db::ParameterStates &stat break; case db::ParameterState::InfoIcon: m_icon_widgets [i]->setPixmap (info); - m_icon_widgets [i]->show (); + m_icon_widgets [i]->setVisible (ps.is_visible ()); break; case db::ParameterState::WarningIcon: m_icon_widgets [i]->setPixmap (warning); - m_icon_widgets [i]->show (); + m_icon_widgets [i]->setVisible (ps.is_visible ()); break; case db::ParameterState::ErrorIcon: m_icon_widgets [i]->setPixmap (error); - m_icon_widgets [i]->show (); + m_icon_widgets [i]->setVisible (ps.is_visible ()); break; } @@ -961,6 +1011,12 @@ PCellParametersPage::update_widgets_from_states (const db::ParameterStates &stat } set_parameters_internal (states, lazy_evaluation ()); + + // QGridLayouts are bad in handling nested QFrame (or QGroupBox) with their own layouts, + // so we help a little here: + for (auto g = mp_groups.begin (); g != mp_groups.end (); ++g) { + (*g)->resize (QSize ((*g)->width (), (*g)->sizeHint ().height ())); + } } void diff --git a/src/edt/edt/edtPCellParametersPage.h b/src/edt/edt/edtPCellParametersPage.h index e16179dff..e6e501399 100644 --- a/src/edt/edt/edtPCellParametersPage.h +++ b/src/edt/edt/edtPCellParametersPage.h @@ -29,10 +29,12 @@ #include "tlDeferredExecution.h" #include -#include -#include -#include -#include + +class QGroupBox; +class QCheckBox; +class QLabel; +class QToolButton; +class QScrollArea; namespace lay { @@ -150,6 +152,8 @@ private slots: private: lay::Dispatcher *mp_dispatcher; QScrollArea *mp_parameters_area; + QFrame *mp_main_frame; + std::vector mp_groups; QLabel *mp_error_label; QLabel *mp_error_icon; QLabel *mp_changed_label; From 3ab442bfc0bf62ef5b06aecaffc9a97a6639fa4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sun, 11 Feb 2024 10:36:44 +0100 Subject: [PATCH 09/17] Fixed issue #1594 (#1596) Co-authored-by: Matthias Koefferlein --- src/drc/drc/built-in-macros/_drc_netter.rb | 3 +- src/drc/unit_tests/drcSimpleTests.cc | 36 +++++++++++++++++++++ testdata/drc/issue_1594.drc | 15 +++++++++ testdata/drc/issue_1594.gds | Bin 0 -> 804 bytes testdata/drc/issue_1594_au.cir | 5 +++ 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 testdata/drc/issue_1594.drc create mode 100644 testdata/drc/issue_1594.gds create mode 100644 testdata/drc/issue_1594_au.cir diff --git a/src/drc/drc/built-in-macros/_drc_netter.rb b/src/drc/drc/built-in-macros/_drc_netter.rb index 99823336b..1985cc67c 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 @@ module DRC @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 62d620168..4fcba65e6 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 000000000..63d7ea7dc --- /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 0000000000000000000000000000000000000000..fa9036ee393b17ffb977ea98d46467d370e60667 GIT binary patch literal 804 zcma)3u}Z^G6g_z_c?lY&N`)dB92^6piwH$*aS;VGbSRx29sCFvH%CE-Zu$usoW;>k zaC9sVrP%28z9cURrJ)@j=W*UW_nvbf6olv_u!Q>s3r%dnhpOJ;33YMS1)9=1?%W-o zzdetRPUF4d&at9EvfI-7sA?%G(FG{`E z^107YYdJyML!;ptt9n`0#LvrscKFn(W z#f#dunDYatJ4j#iTJM1 Date: Sun, 11 Feb 2024 10:37:47 +0100 Subject: [PATCH 10/17] Fixed issue #1592 (DXF reader issue) (#1595) Co-authored-by: Matthias Koefferlein --- .../streamers/dxf/db_plugin/dbDXFReader.cc | 24 +++++++++++++++--- .../dxf/unit_tests/dbDXFReaderTests.cc | 17 +++++++++++++ testdata/dxf/issue_1592.dxf.gz | Bin 0 -> 103320 bytes testdata/dxf/issue_1592a_au.oas.gz | Bin 0 -> 339190 bytes testdata/dxf/issue_1592b_au.oas.gz | Bin 0 -> 340257 bytes 5 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 testdata/dxf/issue_1592.dxf.gz create mode 100644 testdata/dxf/issue_1592a_au.oas.gz create mode 100644 testdata/dxf/issue_1592b_au.oas.gz diff --git a/src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc b/src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc index ec409cbf2..160fcf1cb 100644 --- a/src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc +++ b/src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc @@ -816,7 +816,9 @@ De Boor algorithm for NURBS static db::DPoint b_spline_point (double x, const std::vector > &control_points, int p, const std::vector &t, int &k) { - k = (int) (std::lower_bound (t.begin (), t.end (), x - 1e-6) - t.begin ()); + double eps = 1e-12 * (fabs (t.back ()) + fabs (t.front ())); + + k = (int) (std::lower_bound (t.begin (), t.end (), x - eps) - t.begin ()); --k; if (k < p) { k = p; @@ -882,6 +884,12 @@ spline_interpolate (std::list &curve_points, db::DPoint s1 = b_spline_point (t_start + 0.5 * dt, control_points, degree, knots, k1); db::DPoint s2 = b_spline_point (t_start + 1.5 * dt, control_points, degree, knots, k2); +if (s1.to_string () == "-2.60657790172,-1.78843428245") { + tl::info << "@@@ BANG!"; +} +if (s2.to_string () == "-2.60657790172,-1.78843428245") { + tl::info << "@@@ BANG!"; +} db::DVector p1 (s1, *current_curve_point); db::DVector p2 (*pm, s1); @@ -1740,6 +1748,7 @@ DXFReader::read_entities (db::Layout &layout, db::Cell &cell, const db::DVector std::string layer; unsigned int xy_flag = 0; int degree = 1; + int flags = 0; while ((g = read_group_code ()) != 0) { if (g == 8) { @@ -1763,9 +1772,9 @@ DXFReader::read_entities (db::Layout &layout, db::Cell &cell, const db::DVector } else if (g == 70) { - int flags = read_int32 (); - if (flags != 8 && flags != 12) { - warn ("Invalid SPLINE flag (code 70): " + tl::to_string (flags) + ". Only types 8 (non-rational) and 12 (rational) are supported currently."); + flags = read_int32 (); + if ((flags & 2) != 0) { + warn ("Invalid SPLINE flag (code 70): " + tl::to_string (flags) + ". Periodic splines not supported currently."); } } else if (g == 71) { @@ -1814,6 +1823,13 @@ DXFReader::read_entities (db::Layout &layout, db::Cell &cell, const db::DVector } } + } else if ((flags & 1) && m_polyline_mode == 2) { + + // create a polygon for the spline + db::DSimplePolygon p; + p.assign_hull (new_points.begin (), new_points.end (), tt); + cell.shapes (ll.second).insert (safe_from_double (p)); + } else { // create a path with width 0 for the spline diff --git a/src/plugins/streamers/dxf/unit_tests/dbDXFReaderTests.cc b/src/plugins/streamers/dxf/unit_tests/dbDXFReaderTests.cc index d38d5ed20..87ba522e7 100644 --- a/src/plugins/streamers/dxf/unit_tests/dbDXFReaderTests.cc +++ b/src/plugins/streamers/dxf/unit_tests/dbDXFReaderTests.cc @@ -536,3 +536,20 @@ TEST(35c) db::DXFReaderOptions opt; run_test_public (_this, "issue_1422c.dxf", "issue_1422c_au.gds.gz", opt); } + +// issue #1592, polyline mode 2 +TEST(36a) +{ + db::DXFReaderOptions opt; + opt.dbu = 1e-5; + opt.polyline_mode = 2; + run_test_public (_this, "issue_1592.dxf.gz", "issue_1592a_au.oas.gz", opt, true); +} + +// issue #1592 +TEST(36b) +{ + db::DXFReaderOptions opt; + opt.dbu = 1e-5; + run_test_public (_this, "issue_1592.dxf.gz", "issue_1592b_au.oas.gz", opt, true); +} diff --git a/testdata/dxf/issue_1592.dxf.gz b/testdata/dxf/issue_1592.dxf.gz new file mode 100644 index 0000000000000000000000000000000000000000..76ddf557dedfdfd130fa1660f225043ce26e23d8 GIT binary patch literal 103320 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

G; z!oLvv9$&wuf?)5+)sFf3m12B4VDSi=V72fL3$NZu&^>M!DA36#&Kx0$pz>^NVC#0n zpm4Aq^!Py}FbB8N{UxBCYU@iKF>)!0&5SgaNVv<*bP_2|*PDS18XihhRVKmOi8ScR zN3DCK1HAjx3~nSxhUc>Q0>o8Vd_iOVK8q2>zqlm>N7u5ZjB;u?e8s7h8CB(Idm5d? z1!O~s*&7&79y7;bBojh`U8isCUxdXHr32#0J4hzff5jSgT~wB~QctX0S2&fieZ?4? z`9qkyAh`@F#@ph@yCgtcyUeOM3M@8$!Y=gm?Ij1tdQP3+z3q7GC>0dTM^9w{r^YC@ zeRQ>ez+%xvZq!H;>L4yd7eyVD5ri$Bc5+uD)9}$K_TnURn%;O7cSZ+I#^ASlz*Vdu zNqn^vSI3*rBuAskY*D_;kuREhQ$gb6OqMTYy+-dT#RoYk&tH42z`m;T!gcM|_x?IK zj3l|EIZ|``?|ETf`drzM+-cG>N4scwHe0rgzFBOl(LZ5g@GhHgWU6dI^$d+e-jZ6d zZV(3DqG)m0la8zJlmT9`izOmaDjEpnr5ophv0SoWu1(V)Gu47C6b5Ny!l_cKSY~z*J-kdpr0l;NT3w$7;~wSEb}cGG04Iyl&C7AU+MM68C_nnlO z>v=ywIK4&h`ptdQRh);*81!)@l=a!<)E2A!_=g40x>UtbvAE#N#D-AN_uug#umq!g zx+K~woTJgOg3fB5m{iA!%9Yag9_L=cp7=yX+2$eA6Ld0i$*Dxna84`1*YQZmQ4zBx z3UhQ{VyW~+z=&duOBC>roNr6*;1Hq8)C-hIbiJqTXp8)*A|ESM zuQZ0O@`|V=1CjPSn0MTN@aU~54QEw^5nDqEN0hdZ##^#-d4D@(@r(@d2it?Gq&N#f!3k37%S~ZtowU$nRj)R5F)QQjZ9pM z2*y%{JZ@?W%Q+-!@p3?f?HWz=($vOF$BvoC-(T#>;7z{zPzG1MLdEyCh*U#fXHwk1 zko;o0XkDQ{_XnPLsWKeSf#^vemROD!d*rIqX zujt{!6cDuDdkT{$G^ip>BdN69k;g0k}KvjV=0)X(P|h!6njCpzM(!sJx;7GIVW`m%BO0Ai~NR zJ(`*Dx}Ym4P8lIzJMe?wM3Y$S2s4GYA)_CCGxkb!w}Z^RaGQ>HU+&ZPh1XWYB}S@?xQxEAg~C9J0Zt?^(nm02OsIt zyQYi#rK|@JxfeQ7{_O2=V~zifo+|#r873nbsIR z!^I!E8$^t?J^mzDmpPZmR5TYJA6|R5n}^A$xBJQRLm8g8;&1dw6$dSxU?x(zJvHyyK1Y7_B_Hv#KcLg9Ltc7XH^8=6_^g2;yQlsHC6M#^+33fa9F`< z(F^8!mWm_q+JQxh1K7g0on!A)aO^a~cgoat5X@BP2WdJMzT2r(_jZLkn~) ziv8~l?_M^=%ad`u@eB4f z8Mb$E;3d6^hw62<&I%H1&~=fG52yN|6s>~Vto)YsjdmoqN@nQ%{IIw}ju`4De(H3E zwR`%M6lE&~mtD{p50sa zK^Uq`BCuj~lBFhJ9cz-6g%*tJ3bxwHN7LQPBrCdqjF zyOeZCp{@}7CUy)XYs|IjSdO9X<-j-IgHZ}yCas9`M8`y379GrQk*-IBz}m23sl7%N zlrD<6iAzP1HmTyaUN0_osE7W|!>Yixwc;0bm)&BdkS(kA8!@4KlsPi^3cC~?_!bdI zsrNd@Nceff=fSXDVLq=>M z)=C@f568fh1~m28>s@fHH3>NWM1V4k~WprMThUc)>i&ctK|4MbTs`xyN2_@4@0kKpQnWiBhHI zM~sy^JgM|JD<_@|X0R+n3KbLo<}C3dLkQEySU>MjV#hV?#{w0F3A$Y%+f9%$q6?`p zTgdSK2Vw%$#;LMM&W$^p#xR4@u9eWzF8xvjb(nc6+E>)14tqD3&hpl52#Q$R2((Tr zt{r5wyZ9Q@xzluQqVG>Qix^ECdBb>Yo69kHzjM?T*p*r3v%GFqSSe@X*JZgF5bpaH z$b$7AO?c(cNU+L;cLt%H7u^J}+{T4_tQLm9M|;aRPgkcih7Gi>9s{4+g7te@;AN+B zwoR)WX9ZWHa^*y+*2cyC+8k`;%FK4~NCPM5{ER$c`(GSlh7NyGym*$&nZ(@!wBo6g z@gsv!DJEy2j~vFvQ(w5f?bbt}jh_4V3QlVSt;mYS?uvWTHZc*fNZmSe6)&awV&k=O zQ|vd)EKrfNgvR+%Km~-NTO!52qJplWtB47FMk3m%P-%Rkjoj8dhDFf=yPn1Dmc2c zkIM_0#|=ZOe=wT~E|^t+AOEO#Z-&hU8m1oS`OTdM-l++fxb}a^)UR^<(ANLu#ew1X z=(Ln>gEQ|A{fZeATNymu-6j9uvpb?zg9W)ezCEiVbSa-M_~T95rMd|=G59>3yk8oX z7bp-6wF@l69IMjpK`8eI`y-1b!(_5H`~9+xXO zIFAxLJKP=LUeL?$+xYV1dA<}zEcOQ*#U89+`>od#yC@S#PUH*i@U{rDZvS`y@vi&&m}sZGmk zh|Tpjst9In?qp8~&dj zhHr30$F9R9^42_C_wTN-9wIoXCUU2Bf)b^0?)tS8PwPcCUz-ZGODeuz8dN*NSC2gg{%CGg_&GI_DN;DZfNDJ=`BoG&G0r`DY zotW%a8i@T$WN*O`Lz33OLq#PTUi(9AJid`~w)p78&97N%=p;BQV!E}U;|NpU1TW(n zJ|&Y{kRJ_gPhW@-{kXJx@92w8ZCm#gg3XxCoF&DE6!lX9nu&VR7%fMHTp?n=k_J4T zcE}q6-$;wII9`rdbgtBqBQ~>GT-5<1i0d=8gk8q&{2H|ACrzN$spxsK#CJ`anKDPg zoE9?^)P(e(^hA~@rBj36U_nS!gNM0=rcRCEhweWISHFI{A^&yiGJ@(U^f8)YR9Z{$ zZ~=|4B$1G+(AsrwU4Q=d&50C4rnk@S`BM|=3NiGZ*ZuKDRc9bne*J1@37QIlE*UL7 zjAK~ablwdplPEnZ%Z9=dFMy$I%HYS-DT7Yvoed_)mM=p1k-Osu_sL2-)M(M;9t=I* zehRUHoNi~>KyOD~_SkT>inw#uaylL!4}`s+Mni->Au}gnMbb`p=!47Z)7b^H@WcMC z1Jv;9psMqBKf`FG%f{oY8+5IWJICiNWL)^M*arMCz$}#MeSrYoZd&!cdZ>zFJhAJ+ zvw@tIujcUGV%FJyxnIsW5%Rpa%V3U*jQZ$g)zfbY13sH{aTWZu!A-j2b=6h{zQ67vT?OAAkKR$|c%&6qbfjv7=-A1UaXC_opj!BFXc0I@^eALp+g1db+iAR2 z7R9orhkJxx_uK7`IXKB@#Wsg~85fg#N~@V4#C`6!tsDcVxNVeId#AWhl++J@?<7c` zU;o~jBDe>(35~8E`*nf~ls3vcvcR{vVIh-O?AV%DH6Q z6%nU%pi>yaK99vYV5kkLGT+r>HW+$<;ltBJA}zX8<`82)VMjU4@>mDj8%I4TcCqF9v!VI`4~p_>fmht8%<@ zDleXx!JdzIo)1%zw}%5KKD-$|yZkDswnN}-#>y$S^C|Gt;}bZmU#~;QNAHKy#m0%x z?M2Q-PY&NTsgJMH7RkXBruSKo0h5Pk`i#NT38_!;n%KBoy3(rWBV>RSazEmBdL^6h z`2dXWZliSkzGr_)85%Raqb!`KbZ~Qv=<{@0>~nwFB<$nE=5u9{+WAyP>T@>*&IAjg z{c?ex_vAnIU z-gh&G?2foyQ##%^Ya{hR52qN#xTGJ@3_NdQ418`6FW7(O=nwOMb}3%T-29_gW36VR zM3GMSBZaedPg|(CTm}@m(jrcYI!H;X`|(6dW%^IdbA4o zHQg9^LzbI%W~bnumYWPbn@I8!B%XTOfb9D^n{yKN4mbIT@ueb|bQf!ICD!!))>2}WtQmhPJ21B=$&sU$up^z!fgPylOkR9mVDs-m`!@lz?M8-fVn&Yi z`07sDc=Ewb2L642^_@xY?GbjE9ao<-_UE?HWK>}eZV6XO&a+(#&*rE7iC$T+B*g+a zGyJDZu#Maf^t52z&E8k2VnT6XYC-cH2#b&(>iM*x4EB6DOEK`i9TA4UVR}dUsI&JD z{II4h485Gof$XIK$iE8#Kc4R~3wzyPJp{y=l6Y_Yk{3iR7w}QrQNDj1$`oF>c;^Dy z1TO1NUBEkj$7Aq9aMMuv{#3S#eQfjPLl2$dwdgb_gf!C_A?@pFmgEJZyF+_k4^Ph4 z-uF!g(MBGZ%v)~F@ql#7RCnQv^*h;I)4e}6xqnOA zDS%PS=QFvZd@k^N|4}wacBT!Q2;4V%jGlrqq^z2q4`pLL zrQ@q>eu8H2NU-n^hXm{6?dBZOI{5IRmwu$V;{Dci8zDffN_^o~`S)y0glu0Ec~Dxy zJJo-hC?R>>KAZ}dCH$FNbj(Mi8L%nCv*z5F+7PN6&T>vVfbSU}x{RbrC{v=jO2^J z^xlYY;l=Er=Dw!Yj=S@x4Dop>yWxkSzAhR#)P6*m0GY0hfh6TqQ5`(#yi@m8$Obvt z)@}Z3HJFb$*ypJ)!-W(ADQ8|0_Oy&KENs|;+MeB#MyK%g*9inBag8&Mixz_`J9(o2 ztleIHt|!qghl+ki=0h4)B|Funzn?_a`u!VE^HTEr14T*ae8y!Tju$JjmqmY|&2a?d z{b&CBNrA@s-zh4W)Q*>h_;^iv&XN=ObbRhpk&eqNgdeW^oi2;ga%#Ppl8o}*`?rr2 z-SbCQcC%O7+hlDN76_-NGE6(it{3#K`>!vH@b~#xic4f?rgFAlHPs03w+odn-b-9< zk*A!+J$xSXV*PMcm_}V!!@Tx8#a7c`n$cLwm{Lr4CL`k`2dqoT5yo3f6Ouh~xMTO~ z620k%-+lc|^tu9rJ$UP?l(yg}*HBV0pZi&L$^wr6(wp#yyH&6I8Q>3oTrOUPEEhvh zU2-5*I|f8-QB3)?r0JU`Q;j9k=N}p;*8Cxlr&}F?P!a>%#Y)H{3fxCX@Rz646k!`Q zOnu?WJDkD?f;~w-&3Kd7{l!LHfpS^IuqR$&K;`;?Ls)#udMnw)YUj%#7 z6z$LTkl22NRcMhPlJ>%-j)fHmh6LKrLl@mof%lj>=GP8>BZNDUZyz!!QamV9-?Kvv zgUA9RXY6?uwX(o{y-g$c+jnj6P|`Y0^$qYfp6H7?lyu!w2a_`fZC0EVjU9O7(9#1| zVP5twNH<)+pMAGsS0UtP>rEo`J#Wr|W`0dRhS{TD0%K(eTf)mfJf4UOvibVbmNlx< z^W2<-s2Ii#N!SSi`g1)8^vHh5D!?m5>b-qBP6SCC5WcuIBY`sf$$@{Y^Yy_!8>fJP ztS~Y>Y}s>yN5>2g2pUl=GJ2%YbnfTEHMZBxAJ~c12;YtPb;Q1O`1EVgDNd+Qnl2|> z*)%$fPd;G$ExK=lWfMgdI{xb+0^2V@_SEyP|>Br%28EspArrS`|3qw9M`} z2p0isV~ulQx5VFk5iZa#(Dp>{Hg`#sa-M_gFN+a;*rWlGeHdzU@|(_w#aDv8vyg!{ zAhK->!kz!Zs5>4YezhBYK6GEOnzl4(W;(w|+xC!nucjATOz>KnG)KW`AJ0(cOV2Cg z<{%N0(5%|Lb^(AaZkWQ)xcQlurR?Kx*J$K#(v=Sx;=d3ixRA&5SI+oh58kZf!nRP< zjL=Uixp^+1m#o;H-(J%+ZoG8(yoF;-9g2mrUN|D1Xu&%ie3MddNYLQ}b0KkH^V~F8lZ^n8iNp=<8#DLl&eQ3mb>1%67P@f|GmLTivYoV{{DJdb%X8Op z{saElfshvmMJT$z#YjFR(bRfZoRps!knl4O@NCr-l5&=l+N|%1ZYkEDHOo0_%jSQT z-C$qTrrdJ1DKeVl+U_r+Bs{-`(2&Oz$Mb=hD?gK*^bR@H1*EFV3IxItAMc9SpQ}V2 zt8#NX`wSUp37y!iUy={=nUEi$3VNtjjSp%)fJ#R^Fy*f6PoET(P?+VzOu`N?#nBPP zg~D%kXt5PLWLCV`M26(H>LBHN;CJux7<#&3 zdz|ZXvGRNKac*qQZrcT&HAc%gQGz_l39Y+^^O}Pg;)jCDMcB`<3hhWH>kH$eid}sY zT*Hn0=G$dlf(7)C4L4P>`gqx)ui;e%%E(q~I&L?aau`f~TrWmdaWI_h53sg-f&%Zb zdF3ky9zsrhATWc(lgGDtwPfx2P%=W78^ye?wTy#45;@Zb_g_?aM8{n>KKBq{C3{u8 z1x(Z@J(2H=Iz$|+ub4`n+CF_<4El*Rz3aaWMrq2zKJr*~=BhtgE)XH^Z2GdYw5)~9 zb+Sx_)6wOS^A&Zg1|!9@q=2!6@1VH6D=0kg0Hc2dScyKJWmI`Xw;oP9?;Z~lp3Xsc zW#dg=9(joF54%lIr0w;>;qYeF z`-h@UjG}?p)AsVt>J#PH`@{Lm(U9>@*IfOc@1*tz+%`-)7_Yez?F*}f+aI3rY&yFJ z)o!x;rLy{^gdp>S!}F>4^Sk%+x7+j0v-3nBu`P{^%Gccq2%Q3ICNAeo?*IO_=SzTJ z|MRg(TwqA)A*m02$i4My4o-^uCI_0bROahJz@EQ&|g zgdb05%OT7pT*Y7yhvTt~8)Ci65qK3&L51{j5}!#=E%1>=0m+~T$xWl?kz1|-?{BS` zcC!1%lNBwS2S`EM&^8{BGJyd=~qc{@92D9tdhEG0(4??3WAm`aVH2~tA5+G(e{sER0lPP_ zI@D3FoO@Gzr6mk;f9UL7=@hPNiV^l(;htT(=)SofKJ(J!?Gy$t4Sa|`IXJmqzFTe` zz$*=Abke^i@qztY+3aBbEXDt(xbQ_f*!|SETTmE#G(QU?{Bvc( zlK-x8uRYm@>7I7=(up<2AW0>9?c;k&+#Iceh!ChS@tr5Vp-yG@p2RDHIk;>g==eUW zg&sOKUZO@h_PRZX@kNw1KI+y7XdM>h{94gx`^aXsqSoPIi8}&)`SH4}RO2i3auimj z$>+YQ*3HMs&8Ke#%6s6qZMT@*)vSb@ZkFBz_PWr0xNfq^rd@_ykM`6rt#-Oax?e1j z3LK#2Z=FN-B@bX`reEqHY_z7F?VhZ+E^%M|0Q#AJ2~<_b_zk&M6tsO<@-Y_{Vmglk zuW^dn6;aHTu3wPG#Cg*r6geoW+iCJ+`1H6O0~Yn8sj-@I%#WkVU-fHXbaS+cm50-3 zcgn(FL$>FqTu6O9k&+*mZ=mjW>Q6)Bq9qrKF;9Y-d0y8u+!lJb8%r3#B7OwrH@!1K z!5_AbrfTN6k-J!4XudZxM_d@e@CcQ9g-5FXYdF4(_) zQ8|292f6$e<~byep`{FqxVb}dQmjJ8aO2F=z5GP~D~7>mN$4r+JG3iIanY+&wbdMr zTT<}DW1G0`s4S(R?z(H8P9^CfWJ8bMJX&Z{$Y!0L&k)6BW_!!v%ecDa1zOjtK=OxmguDkb7H3mKx zqR4B|<}#=3oSkMFT?PtUR&PdLfd{!I5+74$?;;H0eDvb<*RRU?25t$xF+1;$F;=~w zrVM;k#low6AbSQ~cjM6g@}3i|K9b$?zOnMY>~dlf)OY2Yl?dR2=Jdn%^uyNl{r2?z z*7W1{^yAj_z4r9I*7T$H^rP1FgZA`;)^vjdvZdzSlh#i>1l|L>?!c_UVJ+6)u94g_ zWj`HBDltNI%fHBy>8%@W z`&pmY=FwW}wAhH)~eT$C0Y3m(rSLGWsXmlCgD=UV@9;ySF7*m zHhldpHE6@&y|+94$<)xI=gf$IGU5Mb8aD2%Iz~G5h>d~wCVmoc{AOXjc&=oKwEZ{z z^T>$o01tO${$ob#OoGo8>lj)&)!%lcBp`|dJWJ7bjl>&=eEkbfgLQ3*W|N@V=sgb| zSJYK!chse^+E(I5a9xFW!yZG%SZxUS@9ytr7QVR7if^Ro|K99_)5dDAZHnqDo-+0r zETP*qnIKi;a`3Hr-wa;a;Pca$l^`E}$qhaZbmPXx zpp53D<^WW|kaMh6K+q7y4Tqd|B(X5uroFDC?XK41( z=_$&U!VGlevXp7kP;TvztXb7K1k&nAUtDJ>*SAint8i~n9IM@*;o==B`>?e6oLCMd zb{%Ay%*gAVFqA)it$RKv&NP|nEID>DZ>5!grt*_$I!QGQ8hF z;=gL`F&v~P1OPcE+|TW|tpHt5UyaqyoR|apv4rSRu>t*W5CV(mlY5@2F}C}6#2acK zNb2h<*c=6WmRLJ$jeJc8kgBpw!T~b-|DgNO+GiO2o9@Gb`eFP4%^Q~SjL`o>_JzO| zKR#1Fe=v}J{)~*&qc>)tE$(M>cYi-tJN%d8IkhrPlKvt3^5@DeVb7(rsjGpiQWAY2 zt-F8d-T5DS*NbM~V({>>N7DqJT?z!a;i+*Z?6p=>$!BA=_#iII5mV!ZNCrz?YpLYr zfI1+3bdYWP9eZuXSq466_8C0mKms?A@bouf6etWel}g@PRT-;ovIhR}W(!M0png5; zXPiWK`~k>@{4Y&>M^Q2Z%_K~4vi}9qp!|QMS59vLs8gW+$7lKnxA2>#2?I{QwF$(J z2ls@m{~~)JU(fcx5Lm&BGzHQEFa8%T{~Kg8KI{OcdMKKK9=KD^6@Uiepf)J}(58ex zIcmu)-G2r9i0$ioE zRUhbjd;WhuG~SVwhH}GB{{IbpbN(EUo|ohNi7~MKjLLWR$ur(fqadxeMJ@mYUorqx zl$SF8Hvs(yRgKShX#Y3WFP?DmKjWhdq;(Xr?;R4=Js-0MAkG%i4Aj8CfLz?HV=YXbCT30}g_rymG`9701pxycR(*~5! zCu*c-iy$dzfsyY1Z~#y_xYEp(zyE_XYW3mUwT3!{2>=mB3#@~+Mu{c^EF;l&T7dL$ z-)uI@)EwX`M^}A5{VPlyjM}v9k~L}U0N&4~@Nclp*J}I=B1Qu$K=w10q1AQ#8(&g3 z{{jhjMgPB%_R;EZW$wSF>)@OLQ4?D74>Zk|SjQ@jGW7;{+D7bXC`T5@YF&cr4wn=7 z{)HU=fA$&Au&S`@!Ust`)2pd5zEkO6d}%-9Y}OgTRc+%lz8bQg3m!256|Bvkp~pXh zKrteeSzTXu*t2)_*b0&QIrtAWU7znUP#7)kZ{tot<62k7j-x*TT8%T=Ec^$$yZ{#f z3LF7U;Ubd3$eSG)pMX1>Bs(%)c^QXfwL_Uyv~# z9=!m2vxy%4AB(<%y2JWXfV=*zxtqJ<{`_AIB(e?QPygaWAcy~d5*gqD0BG?58UM}< z-{tQlf$bU)d$Yj`&)lPd2_Sw=WvRKJ08`mxpkxMQ=6_@&Q0x|9qRM9Y7yrx^R)BUE zf&VLjkP_-5|2LQucH=q&e@FKJSTM7pv6Iv!ar~T0zW$%yv^$o0U}XY53UMih-tE^Z R1Fy14g+=<_afV{P_&*BVB+CE* literal 0 HcmV?d00001 diff --git a/testdata/dxf/issue_1592a_au.oas.gz b/testdata/dxf/issue_1592a_au.oas.gz new file mode 100644 index 0000000000000000000000000000000000000000..61bce16f7e74014fad154b291f704ad5e85e8fda GIT binary patch literal 339190 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

{ad(y{JSbD{)7{tC1C@YeBt-Qi@)k$ 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 AZU6uP literal 0 HcmV?d00001 diff --git a/testdata/dxf/issue_1592b_au.oas.gz b/testdata/dxf/issue_1592b_au.oas.gz new file mode 100644 index 0000000000000000000000000000000000000000..a55226a2525873dc7c68a57feb08ba7bb4c6db48 GIT binary patch literal 340257 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

L>LSlS@olq1tK{Z%4 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

0gMAt_tD_@572^^SJ;Ke$)0Zhw9nV7A_JxnVe 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đOG54NVoj=~DQ`#5xvO($TMs|l_m zVkh8f_P}v?K-g3d56i*>=(+`oR`l?*COdljrKUKt^QACnFAQ?_Kq2Hp28sj(PM}eHPPr=~{MfVFX>;H)rzFu-OOC!a6^^jg?uz4bZg(WYkuIDnw@h2BKq`6RUov1Mgmxd zr0h@CGTw!iY=63g7*$0HugXCVD*H*N(oJ#-7^sHd%r-Dh;yj zQVXY566eIlEnI^*<%vb(ybfW69~T4!20@jumrPJCq>eVD2CNL&K{;@M#c%M%VyRl5 zr*hGL(n3aYo2FLbQ+F$Z^BZTk&l#8#_{#P}=##)t$zNe`4VvtR$@OT{XXXF3ecSod z&`-@j*vdip?~doIXSrVPo)LcCFx~WyZ))O?ZIcs!>Y1qjtZzc_tIk5(-j?8KSfxkXi@x^5rn0f*R zrtClhlUJgFNte*z!~ak|{eqz4mCGX6i{~V<=k~~a%kRl; z&+JsVmmE`;J^{b}+cpGFtpt{Tu36;y;pqI%`L~s!1s4^Og?rLUpSmpzF5WD)EvXS( zp4lyQE#JToW?v>uIctf&oFjN3_aR}fdh6KE{l29t$HK&!L z)06dUZbio4yr%RgdE<(+`9b-{g7KnTZzM8Lz2!)I{I*4~`rR;n>)imd{SRhj&mU^3 z^?xvDZQBn@X6|)?IPsfEN8T2d!!20G>p5@o^V!M``q_uB6rVppx03foI^wjb3)>;G zqmP9h=$gE&mAQTB%A5gmeRdOTcUB+wWM;eIeuh?DlcAU1)QBMl5`~qHC1%w)@hM);DZIga><`!T8%ho)hn(1BG0;P&4 z+p+ew%E_JIG)}euH>wORZq@WZRW4{(dxeAP!=kvVQPQon%W4&sX;FDUyP8$Yi7~?* z2jl0)=rUe4-OB5ts`z@UpWj3_3Wf-Su!`uXYLPL@jF{;X#7PgpX1X1A(E&I}+h93U z4y&02@G_mCjcEY=j2)D)%7K~nO&#m4R@R(;mSW{}Gh5?j&#hOS2TtV~XjYv<%F|Dx zCF(QSu=*T6sQH!X&$vPQ+K^w4LeKxTo7TQ|or7(K*cO;`m0Wz8tV6eFjuMA5yvzkn zH|M^(3_nWWOMELKFoIep%;9GJ!we&!77YU@+J}wuBB-C|z&$C~-l!@r=Tw6>b`>1J%v+lU`O6S;n@K9qc4g z&FLcI93SE3nu#&)C|;jR)+PKV+?(ZLRpoRt{kbKKJ>O5a6^v5dg-uko2XtihA5JyS zKQ;)5-wlWjMV(A}p^w#{Z)JP)jGVz71J{sk;nnh+$vAI-tm7G}L2iJubE8xjC$%+5 zD{Mi+uopOiO01GjqzDP`!~wcu@kXxgsZ>oa`b{vh@Qldz^X}rFf1jTcNPrz*T8F{S zzl{96dW!46CnmTwJLm?@9m+%=fEIE;)WR3F@cHGUB?2KT#6@YV9(+5@ToILskEM@F zZ>yqdTUCv!bINkfYGq^Qam8TvN<~@Ti8Nio+O)BE9!>52@WhmsPxnr){mY?Ab&bdt zKhPaRuGWLb&wra@|K#X2-TPZ+48FN#)|hYur(U>=(@1S0TB!Ymj=4iN(|5^c;T?WG z{|Ud5yFt*x-Y)23_6r87V*(v{PEdsZ(D;#)$7q$nP>xG5q~mmFyh( z;%Q~z^Ahm+AdwpL#2`M38;O?Gk{RzH;#iz$&g)$2%^O`d#>9ADwvOi{x``;!K-ftO z(NB)zbyOQ(Lfi2wtQ7HLqp$@VfW24%BY@n04;;qYp$-p1C+>&!xC?gSRWOe0VL4F( zokSco5`CbXXa}Q2BQTR5;3ca;2WbFt^1lY^n>y-`ZPata)T~N6%OGZ|B+KfgTS2+- z5ZI_!jex&uRacl&)frl=Iznkx`$(;74^g42!S$+rm{D~IHKy3eqPhevs{6pE+5lXt z$!=AiNA*)c)dHGSMi^3cLifBV9-bEqt}uq?ZLVjHiv zc!1-VG~;&35T;|=QzY((B}`QcrErw)1EX{^h|_j3NSCDWaX&q;mzMU@f^K?l7yU^W zy&iPXM?f2W6SUHsVJm$Kw$Kk#vQUFG(^pd1h}P4m&_;SCR!<+o{Pg`4_Th2S22Q_d zJufQSEa(;O7IlkGN_s`NWR=(%+zBqG%-63#t`w(bVyJ>t(C>Ye9{?}=z{@?@5g3zP zp@t-9sm|i-f}Y|X0-p~&TH-qlHq8(D!R_gZBjC4U-%)TnPk#)Y%}6$Y4a#IASR*x^ z1jhxzQ(!-5XcMwc;Msv}B^h$DpbBkn7RbmYf>>wh{5lIe4`>V@qXi;LuO zZD58Geh}leVir|5r8S}M10a?}$J#;rXO_&7`3_NtXognQ3zkds*bLGLmbW2x(3L`z zGlrINqiAn>8P%b7lYUJPQI%mN>X&x1x|R*l{%2iO$8(kB@Fq~jX)}T@cKNeSMCCFs z*}tTn8h*;knAI-anLdcyRbIlbEF&uwo#dFjj%sF&p;as+7H4X)7N!NOVtTPSJ%%;X zCfq=K@hH`vsH)!5w(Q=_xdC2@eZ;aA0b;X3uV9>sX=l`7{_(u zuGFD#N!8Z?UO=J0tc)L?3y^lKliNpGYoYZhXc~mx8^AihJ!c@hR60V8qMt9wlCIBh zn-Y^falzg#!1LnW6;W=g`jIF&2jt8sJcYEP8!BH*1K^kL0_D=zTO~-DitE^q@eyK)la0tGY8dWL z?dV}@4AuyB;HI#FT>nNN`}EsMa9#Y)uj0R*7Wcw^VlzBT_rjBO8`yzG!B*_YbFc)Q zg&A*(r(!IDOpvBP9U#*IG$w2{Xvn`tTJjE3+T2z2NcMSpBx@@(o_UpNSn^ml@YIbo z>(A@ww*Pp3VQ9f&O>*IVjh45QG^OC??INw@MzjL1274%mBuGZU@Uos>z6wN;O{5lC zNxI=}q6b_e^x!11Xg|T{Ucmjx349bejC;{N_%ONyufsOs zQEV+ZO?qE%lx=LqX*RU?7+zj z108P|40CO;i`x$Cxur-I*NcpC29a)#1Fh%uqLmyg7H9Wht?X*NnjOPOS#F|@l_Y+j z-3`Mg{(j9PABy2(vJ42y0IwWfHb!g&UBq@!Pt*W2aR7|rM?p7!8Z_ePfgQgL%J3VY zAG-@$v4@}zdjcx4HE;~w2z${jaEqW0-2)Bi0XT*nhEe1MY(-8(FLEAMBfr8?>;&e- zu3{bNL#zy4hu0&!Qr&ns)tzVYVQ>|%hj-b3*~NL`0;dl=;Aruk>80fEbS-&N<-&I> zN5EnBS9e%D87WK1Dw5>MI?>xOg5HE~>Nw`14q^j>!*oKhk}l2tRp8Ej!VBl_=Z@sw zW}EW%v3z;I(d~H`sG+<&D%!Ca*t9?xi@HQ z?q*gZ=R7-qJ@yY zwX*8Go09T^oubAGtA&P%cljNYF7qm zE>;V>C8f@m8cAuSB}>F4&*)S_!-h zln_-wN4#Yw_zq&8hbT>LR4BD^7T80iObX#kxxorlNA{pr(u38K6?g+_L-mRT)TY^yQh6IvDl0|D zC2q7-5g0?m9elsCRFqH*NbHJ;ye+L=nUn{(T`Ui;k`Gwp;q<)s%4j9E_pZI zAZunKQafuzGS0F}+Sp-n6(?9Qrs~XVS9iY9`gGrOrAys8{tRnwy(XNeRr?Ces-U=+ zZIT$+1CjtMEbU_StQO3{s>O_m6HF5;MG}!<6-6$u4OLcLHcfL_v*@z3B1{y{v1o(AnHjekY$!evKrSXaDCYtje6#9vcbTxjTYK6DaYIq$T1eZ}i zIFFWrQ|L=aQSm`^QVlw716;HozOfGec@6x>YFG+>fhMpLI=~YU0FOZkJOU{h0SRy) zl)`(!0`H{i<2Go5H$f-70fyi;Fb=N*6LJ~2kxQTnxd=Lu3m}1<12%FaQcA5x`lv@R zNZ*Do<|;I?&ckum2{^z$0A1-v(UFW_(4L%=NPEF*#4XtaJko7I&st`}GlPH*0rFD? z{4@()LN6kdK;z-AgnI5hpr5-Jcg;M7MyB3^wn-a-TY?3}v-(6|C52{S5w?JUU=&37 zb~w&!hYsEtZ097gBY4#CK)9&!7tK~6F^B=F>z zm?S^Qs^jZ9-MkpLj29-m2`$x}8hTDbOY4acol3q;2j0n~+$gIOA7Tw-K6VE-j(0;n z(E$g*Tl2(=#Pfy3t14s)G6T^ed>tZmvR(k@2ts3*pip;TT?O9b*6WPO)6FJ=< zwZ2sLC*8|qe|Emu_Eq(>(K+!9-GWlhAh(k!=QXEnXg6XeI}rmq01Rl#3quE*(lNA) zGn{E=HD>lxy3Beal2MJhGIYq8hMjmSM6@hw;M6S~5LGYmrB%=OscYx;^g!(?#MS~W ze#CbZ^qdAm4}kkT7+5?q)v2S^&jhC(?=-^`_My#-|wd!f7G)|-?MUt-mT*GyrUKLyxlA8*#kz4f(|e|xgr(r zrdw>lKFihwLw|EM!S1hZHsG6TvV-B`hBp!->zfW?>02TG&|4Aiz}sEyp?4aYHKu;p;%b6lAuPb-7?1*IOnq6~rS%5rd9*@fIy*5eP9)zl-Uf%RBf&P_q^L|G5dBh4w; z!7cFGcj9!plHy=!rc5Nreu3;nmxj@$7QuEH;U9pdncFa{<`&kFz8~*XKEx{&M~Q&^ zF)<`PLb@cskprRwlv{X*8sYDvL%d&U3wI4O!amG&vTiaB%m$W&KEg6l*H{(gDz=uW zVQcYI>U9ARf303BzBI0eBDUk*m;!oPja09Snf2DO%eE z#=(XZwXFq5NE7@8SmD1N@LwMIZ2V-KWtv298(JEE#!o77QOL=#}yQnWLW6=MQ9^~}gC zL*jwAeWD>r9JNXN&=JfGMlcg-0(lJ}=g;DggtLfgDgP-C0fiM`;lNi|Dg^ zk*4W=y-0PD6_{oDM|7}L}|Ndj&zgEMMf3C$k=Uzv~=bS@bb53Bv*@y6+SqF%r znFq*`8HcEm=|}0IX=j+o)Jv?;lzVK)+$u5^oD!!phoqf) zj0LIHcn`V;iJ)r{3;5IoKFLd)%is)$%PV?%($fyG7PiCnXlDu*$vVx5^nQ9senn+b zoKnV=hZL^#J!u2#9dbv;Hd!Qdi?kwpo5Yv1T^z}+5he2u3QYwk1+Kzh`3*&PdBF*5 zc%kCmT;qoalmj1Mlp9xUl$yS{D;oInhQRdoL!RZE8gAm-`|NNl@~Al3ifk_MT?5;s zO_#u4MZ*_2xJ@gL@GYMl5C%UyDIO?3&%`F|U`2}VvqFVu*nxtb9Bckc?s)DsZY1Xv z&y&5EUz)W=5YAX5G--YlcBbDG=~cJHA;m38QhrlvliiVpB@g67q9;=XIgccxp+Xdq6H;#<1fIaaQvr9)$^~g+V@>3!}YB%EBM#S zoa7hL+|CvD{O~881+kBkh1SEs`iF}BVC4N+7@8YFCpAUn*XPA%?#cH}J6zzJe5lZ|2VC0^EGF>83lcBvf3M=zv+p()))Yl194oX; zI#HmXdMMvLV{2aNoO?Oi1^csoi*IHIGOzJ^vUc;vvu|@O1I*+YhZJk5!efQwA&(krNC*&`&u z{~xX33marPAZIBTrU@8QD9X!T^5XL6E8t#OfnGu@&?{&p{ZMX9aV{?+yO@Ey(9u_9({Y84>a*+|aU-aX{A~SZYsFgZXRLvQ+uIfT!ird87rtXo1i7k$Yf-+zT!IOXxW75*qpM zlbqP!uH*(pSBdin4uT;o(rX5>He}EY!WTj5bB+VRxzv+W$t%t5;rh~@+)&y8r;o7` zk(6r;Q{#9OIfT232yVeccssNrZfHSDVI|T7j7ap4htmCj-l=N*%Q5BP*XxvBr@*x- zJ33!{*v#3#8NJ@jx#ryilw7%bQXd$DM#PJ`<(?u-q2t-mFzDKaxQxL27&wjK{D&>W z;7S!R7p_;-%6IS#$ST+i)&rG*P0IG)o5H5V>?-iLY8V1KK?kccT`%^#LEpct|MGuR zuCKDq-&v`?k@_*g`B5#zFp5~b=*Mrm2rJRX?qk(|YW=WzJ?Jb0E&td4{=SVJWpxo% z#E*YlynrGwO!nN&@87N_4q*n?FO+}T$?5jO6KWfFmT}%kU)ay?%y)7Ia)&vQ z>^817)5p{Df~1QZC4(F-6=6H60ah!OVB%DgHq%L}iB6CMbc`@Fop_LGz=jzc>R^>3 zU91SuvnMsN%RrJ{551gGB+jYFYPt3o9}2xMZ;`aVa!3|^0HD_51(FWpXWeEzPc zf7#v4?u^X>ujYcFM7>^EuR1I2SF9G5rJWENWRFEU$wBd$@Q%2fze{50UY7K;HcBh$ zQ&KPSo3sVpCu;`RWhYaeF@WxcCNsFUwDZ|(nN3e$%<^zIP%+L{DvZ>?5V8mMrTmau zq!tu1c-pSmC0MVxhxhk@tMi7xT%~cYc$`r_`3}E);!(k1(MF-a;Jz@Ldr>r&bzB_h ztzpV}yP0b4Nyf{$&a|*svN~8hS-s2&RzH26HAt;y50W+PLEx*eQ|klk|f_l3L`Xq@3AV?Bty+9uwUxE|IUC=vQu; zSf$=Gv2N+g4=SJC`hj!Wz9kzxJ3vsArPqAksdfT~Ittti#?ZvP4%|1_Lh9$VPy@44 z;c#X@6F3j*W?D{y_#ER$V` z^=HIMLq;pBTVv)qG#$d2dQ4(dSEY5NSF6TVW{pEtlGUW_$cZS-`2%S!g$eoKgb`WE zq_}i!a#S)nwO!mY-6yJ?X%e>0it|TjH}ERwR&cB4h1rJr<*d>94Rp(bLDI0Wl4vLc zn?5~${2CBbIs8Ug0vgd6Fl0Ays^=SI%~zp!9dKR%)oYV4Tj0TUz%qG*Y(#mC zb3~%%J%8}x4d7mnJlF$cMs$rHd64*fC3zVc`~9())Edl7?ZhgnV^}|V8EYmVVpZfO ze3&?ZHxuXaD&jsqjBg|w@q@(w)?=6P0QwAf(yp^Z#AA*H-^6pFhxipyr||IZNP-LQf9Q_cnPZf! z&oK%fWV_iHvum+y!U%Fn*bbi+M!-p7_F-Wi*e@)HcL-JJX5kpNRyamH5lqtV2@H&D zf=1SPfsb=sP|80b=o0P_lu9-V24v6pO>uYm=J+doUD9d3D)k^=ld*$en!TQ1o%e{> zG37dMc=}nMb=D!CZ|*jpbzw12m2i|COE^ppajqbxoa;yras+Kd8c<#Qk&I4RQF^uT zQffVOy`reg2D0817(j9_>3}pGE7JFyQ(ku%bY?{pcUIqTjdGu~7c+p=Hw7#>=HwY> zBx489l7CNNr*Fl|=x4A&>KSIE8gM`D5gs9r5MJa6;zZ6NrYJWUhaVvxcpd71cc5DM zFxn5DMV-)1R0};tyg@Q1mcS&?MZvZ+SCgoXZmxYC-bn-lYLL%%H1z8*Z$jyFKboc?w|XY+?(QO?xY>6FoHhe zVxO=C^ay)EhtL4E2z#L>p%JbTdf;kdc~p3GBBeqlI+`glF`O$d8;m= zXLTgG(hRy+Pv}A4TP-@^UfK1#Wx-hN2wfLjLzUw$NQXB^qx$PZV8xHgb9m?uI>|eyg4Zxc*`ajd)vdCd`HWje7Bt)eow>d zeZPxQ?*OHuu128bYMj8z7vU? zSXBfL!rEwp1%Ka8x_^H_IetIDH2!{-9r@pVt|bDFXGTfS`hwO8uxCd1Gq81b{{?Vq z$|2>#PWg-uxe|29J3*UV54Fg>P@~)o`{t>M#(64Q>AW!2H`mLknOn;mnls9_&arcQ zXZv}o*^_+htWu%j2UBj>cWnh-f1Q|G`lt5khR>>J41Hjjp`%8yN!l>h#pLxEzdg3ZIh+U;z=oQL|oTs$dJz*KVPN)aZ_<~csI&veZ zCjVt7KdmHJmXot|WQvC5pLS-tkOrs>jfM~2J}SUDN1537DKB#qy^67)K2DvZcSp&Q zgM2}^5nCBX{2;@Eonlm>ml;8D1HHJR7<~9eVLkY|lj_G>_+!+_RxtUl>IxYCb6nrsPmJ3P$Ua7W`5#K zcY^*@Jyensgqo9D;ZTABsf`~(0`f-G9;d>_W87G~%zzuEetcAHCb~rfgk5MMje>qs z%{S73Q2-V&0<&bu+Wh*$#?Pm(#Jw~6XsVgLWXnt!5uRC(*B2VGaN!tI zKdT#_oMnNu3EP1;evU0(Hmdl(UC|E86ne-n?}zO2Iye$H3cKQ(5o6pW5{PX<9kU$t z&`blN_P3c7gRpN^&5*Eq7uc7w&5kqZecs+ zr>W6eS_?8xMqn3N50}r`v9NdP!zHE3+mgBxZzVM;Dw2m~2afR7Ax*K54FKJX=bE>rb0K;`p{csBX*1|#Vg1G`~guP?FtRKm*^sk2{Y{`K0rHx z*HF9gVX6qPqu<7c>8G)3#(u1iu?Z_@K1Ms4*HLra16q%KD{WYDnjDLNP7Ea+B{~v| ziIy$kdW^3O9FjIJIm2jN*uWf)yNcJvZY26-XNWP$269i-CY5ya?BO|wzMWw2koY)< z#hu7=vN)<938%$(Fbiq4`XNV%7zv9uf7KzQM&j8@{#%m{c;$hnbl^739_oyKUI zZU@yf0$_NC6R4Q6Dke*XqYY#ni7!n5d6^dvAl;01qV>zrJohGGeBZSRRKDN-M~=}( z`0-)n=Vc4i=N;~1w~%+SUh)t&Mm|S%w6kapZ5!G`yMy%7jv-;%Mnps1ge$3|a6PpJ z?x5~LKI#lKLhXT6^kS%-ehXC7&wxhyKF~qm1bXTJ>XGaPI_W#7qehYqq7wL0p%yt5 z7M%0};{&P*eYXjHdn_Y_=rW>A zGTi~!rFo%_)Cd?zsRCok%PNzZ^+{j)5|4wigiVk&;WpF}e*_*;tVhg>t4N1@FFFzT z6s?Inh4sa5#tpI8@y?jNgeK-8(Iz`Ws$@m9HtA`aO1gpSEx0L~$h#w{$-OHJXWxiz z6rN+13)iv-ptVpRv<}KuW-!FU7H%WlP8>_OZ@sE{BUh7O-$mc~70 znd8>7>f^RCTjKUHdg4yd`{FK9BXRd=6LD*4D)}z5Tz-tGlwZTG@@H6$d+LssbV(vlJQ=6_93!1h_Squ}YZ=Eq=f zo;wWorw`>kjvL6?E2|eBpx22`P&J~aUombqT*)&M-PD4laEgundg*OzTcT; zc;B5Bp4TXEBdo{>;((T=o(GC}w2+)jb;Ap*a1AiwYT%5qBK@*@qbz2x7rKs1mnf{n$9xinZfbOi!pW zFENB#NEaF)YtSlMDcVm9BNnO`@kY693EhIU(p5-^J`9@}U9gMM2!|LZxH~3@cE^^Y z&bT_HMDBsz@~91R8>Cfufm#uzI`a9ga@u&@N=w`(V2`~3Y%v?4GTAA}FL?rWaL-_s z+zt2`=PcgKDT>DQO`Q6K-Q4me$5PBokET?o?Bbf!)^jHK&+#t78N6D!4p)gzVnd>* zXpeX=+9tVxG)f=Bos7$1gmDb$n7cq7b1mp%{$-50+`!6dVlf|gOG{ZdI6B@TzAmFE zO_j4V)$sYA6@8x`U17~SmfD%RC#{QfhCjl3z*jN13&yB(0w4K8V8xFLdypr>5pYB# zc})Ghp6&57eJM#*+HmiZ7&fd!I&VI%;=GZNx2k>#^Fr^{6dxJz~k*4436?g+_CC0dH-D$I{XQ4$uir3pC3OUhiH`dTH}4^@JF zP#D=x>d^J%grF#~NBmq-E_)Hz6}v8WOukuGp0HCg!g)&7bB|La++wPZca9b&*P%C` zzuxre7#RMv3(nnde+ z11W~6y4ArQ+)~iY`M#cA1_HPnxNt30gSSFDd=v^|wQ#h}upKiZ2F!(wqY7*4Y0HiK+DU43&6O@o?XXi&S<2x{19T{SrI2U8ay~-P%~i! zCPE3+#GeQ86)t?54VUakG^;jZEoXpqa^-*lBvom* zq>&ZJW)8mgVzz6=m6vbUt=xKucF`cTu}qLjS_8LB!%#@-gevIq_bcTIh22jX3jrFjpQAm*MGK0 zTL1Yv+2og7rRJ|Miwv^;Xs2u~I)Uu~ZM559Hf=V+f_TWfK}dDZXi^$BtVYUN)eef%g-6Wk*@1r5ZQ;00bM zJcsuRD{!4CI!#3fv0*Ulp>-z^;K`&C?+5xM4QZL9W4UiY{&(${K=;)0uP;tD)Pd{o zmd9;i>A3624Wt>oAtGiqT-gW0f|IC5d$obtiM&aA;i zca~AoD0fE7{-}#h?9=4?4f~(R_B2}q7 zQDaImHlB1B^CVuxs}fES{fhmhNxp*?VID)g&4=55jK1~S(np@b!1neeOX3iGP4}EW*VTb3=5b@ z&#zCPKAg4<)TBKEBdMpLrqoSv--;V}$MVDE&{ptV5Y~gOqNZh!qjLHIS-s*QF|hJ5 zHkrB~YD>EURO$ceNEe@u_WD@r4Q#UD88$rS6xum;BVw3#9qOBQ7?e(@)lWBo&gqR% z&-5<1bNT?%I6aISrcYvh)6|4@nuhF|s-lfeiO_UYLR4u%A6=90W{l+8nVmW1EJJpP z)syLBt1>D%*0dm}F{P1PUJf3afO!;b(Ljcb9of~AEiwaq2<`(9fINo9mR3aRwrTq1 zR=9NP)>fK+dy-OY_m zz-PJoOW+D_p1o66y6~E!CVn4x*Xbr;jS+-pt6F5`pj74oKB*q6k@}!9i52dU1mJRs z9T^Zukb1ETofH|dPSH?QA~fQ|LLJd4>?1V7da_4QLbD16X(Rj=s)b)kFXfNZeLOFt zhUa9CaVuHwxl`41_JGz|yP)xz`(gWx6G&j%Ez~k~Gwv-oNA!yyB6jg^G$Oi+x<#8Y zqv#AaC@jVu!sEDF_zdqB93i~ywfM#I1yMC#nEv%LKNdhnsWxKp-N3xoUrXO_kK&Kx zKg#^rF!J@X!t{A!6cNWO7S35RM-4p!TIeCr69;i4QGvHBE=y|_=R{@fD>NJVXp~h4jk9{82rB}q75$iA;lo>t!DO;y9nfW#ED7*kFHdko ziB7_n3A5?RUV2tAjoyg)I>dZryMXdN*UVAMgZE>#$k&StljmKkChEDj$X?D#S}A8E)yFf#@X%$y64~fQU>qJWUI{MWSu;izcu7lvr6Y>8)ykf$Spjvt{S@!bjsoIQF@~=-aEznMu z9e%(nLk_YnH;_MO6VLu3^m{_@OIpc6yX!dEo=zd z15ZLb;YzpyZiF|%J#aBR0zZdz$U~?GxeIk7H=rTpGNeJzK{e<}s1t2~M$r9GDYg@; z$F@Md*m`IJdk)O_1JHrr0weepU?9$dCgM04A`XH!WOWy^(g64dz|BNbu_P9BIog$osR8#YH$zX%CNH2T!hZ zZ|=l)*V8U`XO?3FNEn?&dQc;(gEWw}ur9yu4fDLV)qS%X-yEJ%w+9%%?%f93zZ`fe zlCPWRDkzQdN+u*4X^*HyS}st^I=F6GAIlOmK%b21B?n{cvEH~zs7t=8M`1_$;|KFv zA%Bhyc(O#^j9!4uDM%c@J2CBH*ph3=2$j-S6jk2FWt?Y^@^*s!GSQlXv>pmP{ zu1B2AJ&2ll66t1KLoAHPQT@9KZKdx+$3OmK-FyidJ z`;wiE3n?L@IIS7%pc%nFnvHvdHp)Fkt4i6&A5A&LbEO{T8q>~l2Gg#xYt!$sYTw!s z>wIUk)c)Q!k$%l_{@@2sIhK#kvD_aYVf24;lxjT%ZgL#$U^Bgc6MTxH+z9U?Bds7x z9Gat74}JIqvwd)g@Vs9{3%+}o3ch`h;eWH3txkVTIMYs&!PKoZW9nU+E9De5n!J;4 zN`6jnO}fDdB%Wrf6Zf-h2^H-2_+n1K;xT7beurBkzri!bUFF+jFAG{@E(=|=q7{^WA;*>!r5G`~HS+W@{*#iFfT$vOnC=4g$Qd!J5 z-}QiNpbfi^X&7f1rHlrKYTEXxs_D=3RewMD(Z~wv^5w_$o>z`h zbxVtBlS?lUJ+JP@&96N}!>?UInwA}bb<1}^14i)6SS4`6VJ7MlE7YjO#}7lAAxv`~syU0b^+VNFSalc*M^L8{ zF2971>R`=ov~LUC8AL*QSe0y-3?l|fIneVC$iEA{(+>H&pfeVr?}4uD04^_d zuL1;bLB$(DzyXRESe#({9Az^oo@s0a$EJAN!KobAIj}u_unU|{w0ppb*wJqf(wo1# zPE-G*i1d8F8@K&<9M%5w5*+x~P2l;Dr1=*;r;l69!`m5!jbdiFB+7WjwPQ_=K8bP%72@UK?xp)uCwn zxjJ#;U#gU@pE}a&e;CiG`A2!S!3T_=hA)GOKlL8OM%v&SJ63uMuD=2zU#a|H^5gpN zo3h$|G-eF_b0F3FAAR!3FZBt%zctA_i$G0GuL`Io6YGFmP`3e0aK=hNIkUG67-==H zb->nTEs!SVZ}rj{6uc4ffxlNWb+~S(CPrrlZLc5L0^{g7rxvkEsxi~2eo6Ct-O}+l zT4df=Z87?UW@fXZhuI$&WNKs8ET_!G3P|c%Cb5g<751_8f-uX&)3S|R6T6>X$F60y zu_Fu*yPH15uA;`-N}86_PZ&AvxQ%1OoE$yc!BHX}&L}j%34jsKTvbvFY)`V{-lRU- zWRiwyO4e|ilC2qy%Q~lom#Jo#EbmyLT3)&V^lb%QT3{>(WAojwl+Ow+X(||798T+9 z*g>e-19*tl1&8oPIEZ(FF#OE~nDQIN!8tK0(I$i0vKf*AtP~!=O5m|+9`V>TyLjT8 zk=)8}-8r3JF#2BD2O3wG_W{i^>j3Cq)b?W}HvChEtnOcGiRwRfLf_9_yw3mn*=@h| zF*<+mrVS~91J^~TDAKYHyspxMXHaj#J}{hc8nkh~YvcT@lk;mMqG&`C5}~)ad?{B% z|LdCtHQ>vrs{&odG4W)^T~Xb853`5Y+{+wxf=8rG3mZG6VfcObfX$)`#tm z8-jPs|Gr021s#lcq9+pk#HGYC`u!vqYeR~WcPKR|yq@L|?%)SRTX?PF4P2vSEhi`` zVmC{RStYXdOuuXs!xFQd9*o&b*<+8b?#T~R;u^Cmy zA4BZ%_h5hg4p^IT39=__gggmnK*`G&f%X+q;FTfZTxx{Jm)a52t9CTF1%&99EufC+ z+zcw2juPOY8<(ii$l`I>y{H!|S!e|I`SV{(6H}wF!Jbg2(BjYJ!B=a`CJo_qD zlXITdlzWzJ%R5W7<)6n}3NB%FQ*NQe&YW6g0A1XNE@=XsCcyiI6u~lhDi58_o6j49%fJ9!4#Ke|q+xaq zw|-VDx9*45Wb5DcDP|9-URmh^BX6`cgSt1%4}*cXb=9Esy}BL1v1YOixIYYQK;OrP z{|$XQ^wZ$yzHfYAPJG_+r;ar>e`#8+{%h}Rz28_DoBr1E{m2b4@UG=H=vtr)fbuL` z5L8N)AuvfRc?^^@wYTy1_ceEMJ=*-=eklA)e0N;oL~IpRM^i`9Ea>OE_yc@zN@sd= zVt2Yz(VGBhK$pMnj_pmanqq%5lwSSjV0_7&C9;9l zy9TdfSK}6<8(tz`7%L!Gvbp?4IDykdNpCiQSGE9ElpuuRV$ugcC;I585_`$V2|d`p z1Rs1O{+q4w5pY4_MK&mG_-T2FESA^OPsI%~*T!i%r(tkC57h<|a6*1kC8#0${ zugn?yNNQYgVXF7#O;bF}ujh}iYRI$O!JdySEnw&SrnBJb+m`d-=$qr4;Ul|2$sOpD z1(;SAr8h4`1Pp>5?XBz61|d6K|uJDkkV-aqW!ZSS@on z#?1`NG_2}rb@G;ienm}QFn%bfE1~Iws+Yqbb}s42>yIBQ=vMShtCW`)HpS}VB8*CT zBcon1Oz(}aq)#TaQH@Cf+E}uN)|OgD8q%FaIKzdjsD4mR`GA$`22rybfvgEga`7qX z7f2@{`otBWMZ6DGfAS2g{@@I0$hwZ2GxuZGj3-!4`YF6FZ3EGidWq;r*-rK(-ypk| z77I$36pMTdpNJdhU6&eWH^iuB7R60YJt?2ef2=6a-JVdLbvUsr{bbT)%E{!Wq{Ar_ z@!M0oBOQUEwU78?H;P7LU;!{Gj=Zt3N z1#WlYlULgdx4i29>3k`0{Crji{7UeA9dMR_J4#?&etVwdjoov#Z(p5Vwr1@t&nNq4 zy1zO#J@U=vsr^4(FHrt+EzhF_7jyhta3U)jFLz}$FW=4YUwM^hNxMh}(~gri+5xCG ziXidrAn|c4=P+<`_JZ-3HY0q(yA^mBcLpW8vyl19V^X+SNc1}hR@jh{!70(o-o!Vi{wq(r=E5bi|- zjCP@usuJo+jZldX3nGYHpoZ%O7GM<2RthxGFuw)v;SVD%d=+Nnn^~r`9L!#O@jtFe4&+#m8 z-R7v@*}(39_c+u3{$u*+nxmBc!}T=(M>hy#3wXeAwSlvwu>(9p_2JJ zIO6^MB=CQ>6Kc*o0!(=qK}7V!xagO0YQZ?Fut0PP^eF?K_qW`?W%px2Xb>BM)H8Yo ztuw3np+Xg}Z1xbRc1{o5IoHi$f=Z#W{t*#GJJ7^X)Z-~ zN^3$hSIG@=TDg9riF6a4qzMTkMkIukKuysRH-ROqI6RIZ5zmF2&?!x5{=h*nNRHJ3 zH`;Lv(t_dJ&=Ep+4&5XTx1h(c@BuJ^T5F=LbmFZL*7TO1n0&L1Y|Nz$sa7>|>fbQ)dS5RUOs>?4tSd_;O)E??-}3s{@G_5FvurZ{_2gxVABxBr98F@u zQ)i%4&`!W9hZD`%{7(A6d+6Wz=wI|mszF$y218$u0o}I+!{2TK6W_#?Py48DY6qy9 z;(~MqLvV-K0U5+Y(155Ct`YUXBSIZgFYH9Z0v%c}aHB(f17_y;VO_jBT*aHjYq;G+ zFQ%Q`(Il@gMrIB% zCkh7`W3&3`;n{x5H^)conCm4=e{-_ye{Z83l)y(+7lUymTnsEAnjD1cios*ltOSS1 zw%>2lt-oz#H~w;vH~FtK!XD;Yc!aSPuA%QE%u$rm4-x~Sn{2D-KHK;1{+Cp*KVDM) z@`YD4a~ob&$&M!Xh@T`|g-26Hc+XSnIj2&?%=KyY^h;?Y)AMV$g3F78uN+QPFKI~fFFcm4oOe7WPc`G)56TEmM%=_~5 zSu8@vl(9dU*#v%S1V8nm=b}#aoG~G6V3g);k~HQ#5%%TW;ZNq=;F@!4_PBYeG84 zcVJ=h1U@`9z$=}i=9@qBruD69O>cUuDx+qlCbMbjP-fqvwyeszmD%ALq3phb_MD+? zeXb^bAh#{4Hm_U}&YO@m=1+!X85B+F-wih8*6sxlGPL`_{*=L5a5CO)2M1$JYqru&AKaoD zKRiI{KYEDkKR$@*Ke>w-KivfzKf3^opQHXyZII=IKBV@8cC`Npa55Z6Ko{HP03$q8 z11J+Y4}&IY*&z^!t*r&-_~;MxCfW7^Lt4ph;LEHvfvViHZD6#(xdphUTQ-8KSuQnD z&vX25cwzs)JWD*^b-Y?K)toY#Z%*ybHKkQ$SEi3Mg}E!Nwoy>K#=+=%--Y_$tAo1Ut)tbv)4~nD)g!HZb1b25l{K^Wb>EcI73Mkq z*G66{U)r0jP8>l|F(_q)i|lX=O-d znhhRKZG-Al`+zF-x6Tx~A!U&-c?Ym2KLtZc=b^f!J@9biQ@AeiEHa$16|GCS6ZO?Y zm^J<>=2M)+4T^O{r~E9@IQJq~HTyKbZRTF##I&a(>y)FCj=cNQ-s}xA0~tGF2U54k z^(JkQx5eL+SH>Mtgc%KN72_1U6Rd}1335dOjwGPSA2&rgiugszi?m<^R1$>=s)#bT z3S<;HKp4@3gjaMaJ|KG*Z<6my7>_@b;H&_*HiG7LV8>>lm7YxM7FwK0mZQrSJKQg)JR`P-w6p6`lN z`ey9pOwQQAuAKRl**Nnqqi5y~`tZz4l&bI?%}{untSLNAG!>r0I}1-^y@lt{t{)E& zBR}3iCV$)mR6nVpu^$bn@5geY{>KPy@&^y2{s%pK;QKc2#6SFe-9P$;y1#qG6MwTy z+olgPDyJKmR(?I&3ugPk?7z!rvt%UykL_8@HDJjOq={WknAx?&fP9c0jtjHPXB!gw zX7nV~Of5~+<#!|wXGaoyGwexSse?&fN&4j8__pMsxKOexrZS~k(wfpE45aAzC8?d9 zy40x4q?$#euh%hsZ)mXkRbDW$DoE6=cCtLHn+1W@qtcPp!Ns;JFt~cu3fi+vR=INR zZ`6uMQoF@HsU|E$8nF@51)89*%pm`Dj({OZA#o1%ak3zu*Ubr%w!|*p_{-|ls#p3` z9399|R4`meN_Rpg1AkCY*!Bp@hjGUhNLvgBJy6M7;Mxzui>mg6_QmZPlkCSsmG{P0cB)pkuLpBj@v`y?rdNI3_`Ghshy2sKa9h0llcgx4JHp_={H_FGpI5My2 z^S$#cbG9jb8J87(ywmI!?p3yi^MKvPD&~wZwsUm!!<=&3d5(^_%c+Em$X;k2se?9= zEueyY5s_U&@CvY-O=is91WmgN)Yw{C0NpApNxSI>t%+*~Kvmkq+n{;+-T~lD zeE#?LjJ@CW7i{}hKj+fd{+F-($+>#Z7s{NSdG`Drxua7na$GalX4~gH%&c8-DZ}~F z!F2!9wP__QE~R)@ZBMqnb3M`c!PW%hr)L#aUpbaMC(Tn)qFyk~acII3-XEyB6xht)LFC z1uDEAbYacFinW6<>IN;S2b7|Hz=sTh8YBcJ!GFiV??d2sA5ei#payL~1M2?&yA374 z5QPSmf#1u)H+tZ6fJ|_i-742 zXzkFF7Vd3O+5o)}>b8K*M5z{>LK}ZO2d#~EwI%Kt8G7THEVS}*?BMcS^6uA8#ygi* zBpP47mK0iCk&oY{4Jj(P-_XxGp;vkym3Tsl747 z%=@wt&Ouo@?F2(b9bkm1?TjJ%I);z&nC@fVp!ebXut|J3rb9Nv8t}OWe95EBpf6`Y zQ=m>jl)~&9`cx}Dsa!1X6D8J(KAI33K&Q|R%t943B5*=&f&gR?nBWn<3+~{L!)AUp z(wW*pwxk4TEy)v9N0O4^ON=na5(3PT#l!NUg(V4-zmLDt@%z9l)`j7C!{QEkOF|FR zkT}3lB@NO?lKj*Vw-MFx%Ft?F0O{m4BO|SpTi5h&0XIKr-w9o41cN)FM|Gg29Bf|gFo3Je2Uk2zbiBSf!L(|d z!uaOKIQ!f8W!`s>Nla^=3P(TO$#2iyKw9z+5bFF3cp(2i)?Kh3b57Zf+NK^wjMFZ_ z+Ud6-<&1}5d`1x%ok<`3sT&&qPYY)Ht%c@Qf^MdL9T?@7sX?v4`$Z39{39o;`8_?y z_~sDTxU!D#cr_>py<`@-7r4Z(IYW~EnG;geG*wI}UmY9B8IM(F4aPar+vO#xm5P$3 zrHecZgNyZZ$6s>KvM;IqXS)_Si$SLfv?kTb+f&?egK2%SwV6XP+MGdIS-wwNJGE63 zoM9EaW{(M7^IHXjiMchGzL_M@tQ3qWws%H)hHSBg_562>GO6||A%nD~rpr{nl zi+g}ejJv=c_CqQJpk^EjGP(WC7;WsQu9!{0Gvg54KkY6OoU#j37F@thdC!Q}oL#g) z)+tJ#d7bV~f6P#)6|>q?HnYo;w{rZ6+qks}TX-e$8~6eF^Z(=MO`wyy*7yIl_nA1% z^BBlH&y({!v|6WHYwd8`-p;qv?d@%Q`@PezMnpu!h!GJHBSu6T(})-mF(M+yG{zLu zh%u%yr7>cpF~*q2i1~B>Yw@raoWnYM!@HmN^Q?7Po8P6lEAY#I61GpfShTTwFGylB zl0^~V2S%g^)=PQ?wRxtD&N0w&4Y+E6^Zz+(!2Xv*W8nC9V9DDlc1X@L4agl32Ri|S z!oKF9Z0`QwPAC8BFF#PGFZrorqTuEN2bFzHUrU+nRxssxhPm#W)A(3@@heT6ZE2=8*W2;Jg zV4OAuhG}NdN6Qb z1Wr~ok-LxvawpON-(N0WB^KZuoPm;%0~aiZOJNhrcA`uVr_7dC(Vj|HEo=qWc}_&9 zXoMd5ARI`tAiAVZ#3NIqQK=U-Nn>cMq!ybHcVG_j6xJ(h!1baYJSfx<69O0E6!a2N zzJ?OdR&n|>t=#T(7q30FnIB5_33}xoVN}*2Qb`SBt9V@8F6@*{@av>aykV&$%``ol z6q(U0iq16gT(i2Q-mfjpp1<{ClYdD-$(vg?g1w-SpDT2Lmrhen*kz~^?4~*de~``j z2YIapr?{cQpE#kSd+he&Eo^_uVOHyVKO}X1ctPU)_>Qpm(|!Ej&wt@Gd~uT1`nUZI z&zC!CRlk8tY)u5*A$5IVD{8p`);3%Pb~NY*3?xOUz_7PC zj8(-3@P+}r*~M|tENmk!%GA)B852|;JxYyId#FLOoob^rQ&ohMI)YiL-Kc@uifE|K zaFTR_VX`nnZU~b-pq=c1KC%sQlU}r*v}0D%h#Sc%yqfGIlw^Psrj3%<>`T z2U?a1go*e1h%Y8V@_cd~t(f&j^4qCH@V~XRQKXI*Lt2E1;R{;`MR#=j7MC3GWibujM2HpUI8 zlx@L=rB_gUl zO%!FJmUI=2l0Eq$s%yPj6nUvZqJD8)+PG?5=H3OmXV}$1HO)OgByO2w7nY(ue=%$VH9AKPh15@PMDRNB!3f5ukh?iLiTgX6i8JP?VD4al@U;?cJ zD$D>hmaw@wtzV81klrO z00(^|^wST+U;>qG((|}Vx}OMb0_SO(lkodg>ksgBj?MvZ7quRShb#II!YwmfE%4bK z+e!5HCeYf5?$!XyarAo)(4Rv0Dna}J{C=+I5Ij9IbOioZ(NqtQ7LOc<+j3QIxFs#t z3=c>fg76y0(+&?(Y}er!P;D?ke?06B7O)vUDEyo_9QLVgzb{_p2nVVbsKg<&4z8TU$Dr7u{{{K7gC%6JqQZnaUf)4 zn9xKtWBpho+D+@E#ArcERjDD>Umi}5R@N%w(?^r4W`$(2*=}j~e}bj9O`x-|dkd(~ zi)uh;wrMYHU#{5$tDZ}=^_ujFO+b^;{NI+$fq!&m2WJfOozq$cnhK||tJEga6kElP z0*Azt>yb8Og=B{Gv7~5nouZxD#p-4#*#q<@c8oT_9-*2zV`Lj=j55U;Bi!6>dQFyx zGM*iTVZH~{2n0@y=HK4vI=TvkMe5fv~j2A*f>LTRqT#=u>|vX zGinyJ(uWrKXn}>z)TzxN&T*+hJ+n;%l(aT2P*H03LocP#3g-_VhIi4x5qOSp9f22! zmc#G?I(iV6`^?ZzF>1jiVbp+e>gX0=VR|=%7^ilji`uflO≷r>p08FzoXpOz+${ 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 z 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 bK*>Q}LA^jh0{?#v2+02dZTLovi!lWNEqTGY literal 0 HcmV?d00001 From 97c746fbad3fb5ca0c360e3eb723801ef0012543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sun, 11 Feb 2024 10:38:53 +0100 Subject: [PATCH 11/17] Lefdef all should not map boundary (#1614) * As suggested by Stefan Thiede: LEF/DEF 'ALL' purpose should not match obs and fill * Updated unit tests --------- Co-authored-by: Matthias Koefferlein --- .../lefdef/db_plugin/dbLEFDEFImporter.cc | 2 +- .../lefdef/unit_tests/dbLEFDEFImportTests.cc | 6 +++--- testdata/lefdef/patternname/au.oas.gz | Bin 249 -> 336 bytes 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc index fc9df3080..5f0394057 100644 --- a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc +++ b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc @@ -1098,7 +1098,7 @@ LEFDEFReaderState::read_single_map_file (const std::string &path, std::map#ABzYG`5eJz00VSwa9=THW@RxpIbo3u8-FMx&cwkY!_O=u&ce^2 z#E|Nfd&Zip!9alZK#}7G=8oxtn>!o-oQMuwUH(6s<5m=ZPtSv8nj5S5O=li>aNt_@ z<-F}@65{lg+7|U~oWb_iX7T3OY3KVst!B>Hy7wnDCv!=DffB<4Mw7>4A5E`(F6O<+ z|KZDJem;hcUw^)QnelX{WJSTLg6Z zj7%GZKZyS1y2&YOsldqeL9|2oDCbWuQCnk1rXQ?7ST}NRhJUCcncx52cp?=sD$cS}#m!=Nh6P;OVFD=IP_3ucxQS zEYHlqgG&Oa!w6GC0jvYN1h**A30Mp>2I|2r#mgvaEziKnv_bfT=ufVjoT8Qrj7%Ry zJA{vN{^Sz1HD+Y`!TN)BBj-j=Zl*140#X9J41xz3nHokiU|;|Mw6XlpW&!{J-nDgL From db7b8d19a867b16436a6c5bc709d3c974f438089 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 11 Feb 2024 13:05:37 +0100 Subject: [PATCH 12/17] [consider merging] Removed some debug nonsense --- src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc b/src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc index 160fcf1cb..a5c4b81ed 100644 --- a/src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc +++ b/src/plugins/streamers/dxf/db_plugin/dbDXFReader.cc @@ -884,12 +884,6 @@ spline_interpolate (std::list &curve_points, db::DPoint s1 = b_spline_point (t_start + 0.5 * dt, control_points, degree, knots, k1); db::DPoint s2 = b_spline_point (t_start + 1.5 * dt, control_points, degree, knots, k2); -if (s1.to_string () == "-2.60657790172,-1.78843428245") { - tl::info << "@@@ BANG!"; -} -if (s2.to_string () == "-2.60657790172,-1.78843428245") { - tl::info << "@@@ BANG!"; -} db::DVector p1 (s1, *current_curve_point); db::DVector p2 (*pm, s1); From a1c08c0f89e1dbd5266dcad51087c0f6897e3b18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Mon, 12 Feb 2024 08:40:00 +0100 Subject: [PATCH 13/17] DRC switch to exclude the kissing corner configuration (and more) (#1600) * Some refactoring, introducing new configuration option for edge pair check core algorithm for zero distance handling. * Bugfix * Renaming for clarification of collinear edges vs. distance which is defined otherwise. * Implemented low-level option for collinear edge handling in Edges and Region * DRC integration of new features * Simple test for collinear mode feature * Updating documentation * Experiment: extending collinear mode towards 'zero distance' * DRC 'collinear mode' becomes 'zero distance mode' With this change, the default implementation for kissing corners is changed from collinear edges only to touching edges in general. The original mode can be restored by using: l1.space(600.nm, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(103, 0) * Adding test data * Fixed unit tests * Fixed unit test * Renamed new DRC options to: without_touching_corners and without_touching_edges as this is more consistent * Fixed GSI binding, so no internal error is thrown when generating the doc --------- Co-authored-by: Matthias Koefferlein --- scripts/drc_lvs_doc/create_drc_samples.rb | 70 ++++ src/db/db/dbAsIfFlatEdges.cc | 7 +- src/db/db/dbAsIfFlatRegion.cc | 14 +- src/db/db/dbCompoundOperation.cc | 24 +- src/db/db/dbDeepEdges.cc | 7 +- src/db/db/dbDeepRegion.cc | 14 +- src/db/db/dbEdgePairRelations.cc | 122 ++++-- src/db/db/dbEdgePairRelations.h | 134 +++++- src/db/db/dbEdgesDelegate.h | 63 --- src/db/db/dbRegionLocalOperations.h | 50 +-- src/db/db/dbRegionUtils.cc | 7 +- src/db/db/gsiDeclDbCompoundOperation.cc | 98 +++-- src/db/db/gsiDeclDbEdges.cc | 59 ++- src/db/db/gsiDeclDbRegion.cc | 128 ++++-- src/db/unit_tests/dbEdgePairRelationsTests.cc | 385 ++++++++++++++---- src/doc/doc/about/drc_ref_layer.xml | 67 ++- src/doc/doc/images/drc_separation12.png | Bin 0 -> 5998 bytes src/doc/doc/images/drc_separation13.png | Bin 0 -> 6282 bytes src/doc/doc/images/drc_separation14.png | Bin 0 -> 6284 bytes src/doc/doc/images/drc_width5.png | Bin 0 -> 6312 bytes src/doc/doc/images/drc_width6.png | Bin 0 -> 6525 bytes src/doc/docDRCLVSResources.qrc | 5 + .../built-in-macros/_drc_cop_integration.rb | 7 + src/drc/drc/built-in-macros/_drc_engine.rb | 12 + src/drc/drc/built-in-macros/_drc_layer.rb | 71 +++- src/drc/drc/built-in-macros/_drc_tags.rb | 10 + src/drc/unit_tests/drcSimpleTests.cc | 23 +- testdata/drc/drcSimpleTests_90.drc | 34 ++ testdata/drc/drcSimpleTests_90.gds | Bin 0 -> 618 bytes testdata/drc/drcSimpleTests_91.drc | 34 ++ testdata/drc/drcSimpleTests_91.gds | Bin 0 -> 6122 bytes testdata/drc/drcSimpleTests_au90.gds | Bin 0 -> 3818 bytes testdata/drc/drcSimpleTests_au90d.gds | Bin 0 -> 3818 bytes testdata/drc/drcSimpleTests_au91.gds | Bin 0 -> 25210 bytes testdata/drc/drcSimpleTests_au91d.gds | Bin 0 -> 25210 bytes testdata/ruby/dbEdgesTest.rb | 42 ++ testdata/ruby/dbRegionTest.rb | 38 ++ 37 files changed, 1114 insertions(+), 411 deletions(-) create mode 100644 src/doc/doc/images/drc_separation12.png create mode 100644 src/doc/doc/images/drc_separation13.png create mode 100644 src/doc/doc/images/drc_separation14.png create mode 100644 src/doc/doc/images/drc_width5.png create mode 100644 src/doc/doc/images/drc_width6.png create mode 100644 testdata/drc/drcSimpleTests_90.drc create mode 100644 testdata/drc/drcSimpleTests_90.gds create mode 100644 testdata/drc/drcSimpleTests_91.drc create mode 100644 testdata/drc/drcSimpleTests_91.gds create mode 100644 testdata/drc/drcSimpleTests_au90.gds create mode 100644 testdata/drc/drcSimpleTests_au90d.gds create mode 100644 testdata/drc/drcSimpleTests_au91.gds create mode 100644 testdata/drc/drcSimpleTests_au91d.gds diff --git a/scripts/drc_lvs_doc/create_drc_samples.rb b/scripts/drc_lvs_doc/create_drc_samples.rb index 5594555be..bbc97987e 100644 --- a/scripts/drc_lvs_doc/create_drc_samples.rb +++ b/scripts/drc_lvs_doc/create_drc_samples.rb @@ -177,6 +177,37 @@ run_demo gen, "input.width(1.2, projection)", "drc_width2.png" run_demo gen, "input.width(1.2, square)", "drc_width3.png" run_demo gen, "input.width(1.2, whole_edges)", "drc_width4.png" +class Gen + def produce(s1, s2) + pts = [ + RBA::Point::new(0, 0), + RBA::Point::new(2000, 0), + RBA::Point::new(2000, 2000), + RBA::Point::new(0, 2000) + ]; + s1.insert(RBA::Polygon::new(pts)) + pts = [ + RBA::Point::new(2000, 2000), + RBA::Point::new(4000, 2000), + RBA::Point::new(4000, 4000), + RBA::Point::new(2000, 4000) + ]; + s1.insert(RBA::Polygon::new(pts)) + pts = [ + RBA::Point::new( 500, 4000), + RBA::Point::new(2500, 4000), + RBA::Point::new(2500, 6000), + RBA::Point::new( 500, 6000) + ]; + s1.insert(RBA::Polygon::new(pts)) + end +end + +gen = Gen::new + +run_demo gen, "input.width(1.0)", "drc_width5.png" +run_demo gen, "input.width(1.0, without_touching_corners)", "drc_width6.png" + class Gen def produce(s1, s2) pts = [ @@ -381,6 +412,45 @@ run_demo gen, "input1.sep(input2, 1.0, projection,\n" + " one_side_allowed,\n" + " two_opposite_sides_allowed)", "drc_separation11.png" +class Gen + def produce(s1, s2) + pts = [ + RBA::Point::new(0, 0), + RBA::Point::new(2000, 0), + RBA::Point::new(2000, 1500), + RBA::Point::new(0, 1500) + ]; + s2.insert(RBA::Polygon::new(pts)) + pts = [ + RBA::Point::new(2000, 1500), + RBA::Point::new(3500, 1500), + RBA::Point::new(3500, 3500), + RBA::Point::new(2000, 3500) + ]; + s1.insert(RBA::Polygon::new(pts)) + pts = [ + RBA::Point::new(1000, 3500), + RBA::Point::new(3000, 3500), + RBA::Point::new(3000, 5000), + RBA::Point::new(1000, 5000) + ]; + s2.insert(RBA::Polygon::new(pts)) + pts = [ + RBA::Point::new(1000, 5500), + RBA::Point::new(3000, 5500), + RBA::Point::new(3000, 7000), + RBA::Point::new(1000, 7000) + ]; + s1.insert(RBA::Polygon::new(pts)) + end +end + +gen = Gen::new + +run_demo gen, "input1.sep(input2, 1.0)", "drc_separation12.png" +run_demo gen, "input1.sep(input2, 1.0, without_touching_corners)", "drc_separation13.png" +run_demo gen, "input1.sep(input2, 1.0, without_touching_edges)", "drc_separation14.png" + # ... class Gen diff --git a/src/db/db/dbAsIfFlatEdges.cc b/src/db/db/dbAsIfFlatEdges.cc index e4a482fe2..4f38b882e 100644 --- a/src/db/db/dbAsIfFlatEdges.cc +++ b/src/db/db/dbAsIfFlatEdges.cc @@ -761,12 +761,7 @@ AsIfFlatEdges::run_check (db::edge_relation_type rel, const Edges *other, db::Co } } - EdgeRelationFilter check (rel, d, options.metrics); - check.set_include_zero (false); - check.set_whole_edges (options.whole_edges); - check.set_ignore_angle (options.ignore_angle); - check.set_min_projection (options.min_projection); - check.set_max_projection (options.max_projection); + EdgeRelationFilter check (rel, d, options); edge2edge_check_for_edges edge_check (check, *result, other != 0); scanner.process (edge_check, d, db::box_convert ()); diff --git a/src/db/db/dbAsIfFlatRegion.cc b/src/db/db/dbAsIfFlatRegion.cc index 54f0b4f3b..5a86535fd 100644 --- a/src/db/db/dbAsIfFlatRegion.cc +++ b/src/db/db/dbAsIfFlatRegion.cc @@ -1139,12 +1139,7 @@ AsIfFlatRegion::run_check (db::edge_relation_type rel, bool different_polygons, db::RegionIterator polygons (needs_merged_primary ? begin_merged () : begin ()); bool primary_is_merged = ! merged_semantics () || needs_merged_primary || is_merged (); - EdgeRelationFilter check (rel, d, options.metrics); - check.set_include_zero (false); - check.set_whole_edges (options.whole_edges); - check.set_ignore_angle (options.ignore_angle); - check.set_min_projection (options.min_projection); - check.set_max_projection (options.max_projection); + EdgeRelationFilter check (rel, d, options); std::vector others; std::vector foreign; @@ -1217,12 +1212,7 @@ AsIfFlatRegion::run_single_polygon_check (db::edge_relation_type rel, db::Coord std::unique_ptr result (new FlatEdgePairs ()); db::PropertyMapper pm (result->properties_repository (), properties_repository ()); - EdgeRelationFilter check (rel, d, options.metrics); - check.set_include_zero (false); - check.set_whole_edges (options.whole_edges); - check.set_ignore_angle (options.ignore_angle); - check.set_min_projection (options.min_projection); - check.set_max_projection (options.max_projection); + EdgeRelationFilter check (rel, d, options); for (RegionIterator p (begin_merged ()); ! p.at_end (); ++p) { diff --git a/src/db/db/dbCompoundOperation.cc b/src/db/db/dbCompoundOperation.cc index 21e23c1c4..be321c493 100644 --- a/src/db/db/dbCompoundOperation.cc +++ b/src/db/db/dbCompoundOperation.cc @@ -1625,19 +1625,13 @@ CompoundRegionEdgePairToEdgeProcessingOperationNode::do_compute_local (CompoundR // --------------------------------------------------------------------------------------------- CompoundRegionCheckOperationNode::CompoundRegionCheckOperationNode (db::edge_relation_type rel, bool different_polygons, db::Coord d, const db::RegionCheckOptions &options) - : CompoundRegionMultiInputOperationNode (), m_check (rel, d, options.metrics), m_different_polygons (different_polygons), m_options (options), m_has_other (false), m_is_other_merged (false) + : CompoundRegionMultiInputOperationNode (), m_check (rel, d, options), m_different_polygons (different_polygons), m_options (options), m_has_other (false), m_is_other_merged (false) { set_description ("check"); - - m_check.set_include_zero (false); - m_check.set_whole_edges (options.whole_edges); - m_check.set_ignore_angle (options.ignore_angle); - m_check.set_min_projection (options.min_projection); - m_check.set_max_projection (options.max_projection); } CompoundRegionCheckOperationNode::CompoundRegionCheckOperationNode (CompoundRegionOperationNode *input, db::edge_relation_type rel, bool different_polygons, db::Coord d, const db::RegionCheckOptions &options) - : CompoundRegionMultiInputOperationNode (input), m_check (rel, d, options.metrics), m_different_polygons (different_polygons), m_options (options), m_has_other (false), m_is_other_merged (false) + : CompoundRegionMultiInputOperationNode (input), m_check (rel, d, options), m_different_polygons (different_polygons), m_options (options), m_has_other (false), m_is_other_merged (false) { set_description ("check"); @@ -1645,16 +1639,10 @@ CompoundRegionCheckOperationNode::CompoundRegionCheckOperationNode (CompoundRegi if (pc_always_different (m_options.prop_constraint)) { m_different_polygons = true; } - - m_check.set_include_zero (false); - m_check.set_whole_edges (options.whole_edges); - m_check.set_ignore_angle (options.ignore_angle); - m_check.set_min_projection (options.min_projection); - m_check.set_max_projection (options.max_projection); } CompoundRegionCheckOperationNode::CompoundRegionCheckOperationNode (CompoundRegionOperationNode *input, CompoundRegionOperationNode *other, db::edge_relation_type rel, bool different_polygons, db::Coord d, const db::RegionCheckOptions &options) - : CompoundRegionMultiInputOperationNode (other), m_check (rel, d, options.metrics), m_different_polygons (different_polygons), m_options (options) + : CompoundRegionMultiInputOperationNode (other), m_check (rel, d, options), m_different_polygons (different_polygons), m_options (options) { tl_assert (input == 0); // input is a dummy parameter @@ -1663,12 +1651,6 @@ CompoundRegionCheckOperationNode::CompoundRegionCheckOperationNode (CompoundRegi m_is_other_merged = other->is_merged (); set_description ("check"); - - m_check.set_include_zero (false); - m_check.set_whole_edges (options.whole_edges); - m_check.set_ignore_angle (options.ignore_angle); - m_check.set_min_projection (options.min_projection); - m_check.set_max_projection (options.max_projection); } db::OnEmptyIntruderHint diff --git a/src/db/db/dbDeepEdges.cc b/src/db/db/dbDeepEdges.cc index 5a2812207..a9608af23 100644 --- a/src/db/db/dbDeepEdges.cc +++ b/src/db/db/dbDeepEdges.cc @@ -2046,12 +2046,7 @@ DeepEdges::run_check (db::edge_relation_type rel, const Edges *other, db::Coord const db::DeepLayer &edges = merged_deep_layer (); - EdgeRelationFilter check (rel, d, options.metrics); - check.set_include_zero (false); - check.set_whole_edges (options.whole_edges); - check.set_ignore_angle (options.ignore_angle); - check.set_min_projection (options.min_projection); - check.set_max_projection (options.max_projection); + EdgeRelationFilter check (rel, d, options); std::unique_ptr res (new db::DeepEdgePairs (edges.derived ())); diff --git a/src/db/db/dbDeepRegion.cc b/src/db/db/dbDeepRegion.cc index ceb7cf0a9..f44f0fca7 100644 --- a/src/db/db/dbDeepRegion.cc +++ b/src/db/db/dbDeepRegion.cc @@ -1940,12 +1940,7 @@ DeepRegion::run_check (db::edge_relation_type rel, bool different_polygons, cons const db::DeepLayer &polygons = needs_merged_primary ? merged_deep_layer () : deep_layer (); - EdgeRelationFilter check (rel, d, options.metrics); - check.set_include_zero (false); - check.set_whole_edges (options.whole_edges); - check.set_ignore_angle (options.ignore_angle); - check.set_min_projection (options.min_projection); - check.set_max_projection (options.max_projection); + EdgeRelationFilter check (rel, d, options); std::unique_ptr res (new db::DeepEdgePairs (polygons.derived ())); @@ -2008,12 +2003,7 @@ DeepRegion::run_single_polygon_check (db::edge_relation_type rel, db::Coord d, c double mag = tr.mag (); db::Coord d_with_mag = db::coord_traits::rounded (d / mag); - EdgeRelationFilter check (rel, d_with_mag, options.metrics); - check.set_include_zero (false); - check.set_whole_edges (options.whole_edges); - check.set_ignore_angle (options.ignore_angle); - check.set_min_projection (options.min_projection); - check.set_max_projection (options.max_projection); + EdgeRelationFilter check (rel, d_with_mag, options); const db::Shapes &shapes = c->shapes (polygons.layer ()); db::Shapes &result = c->shapes (res->deep_layer ().layer ()); diff --git a/src/db/db/dbEdgePairRelations.cc b/src/db/db/dbEdgePairRelations.cc index 4875b29b4..3e62bd3ca 100644 --- a/src/db/db/dbEdgePairRelations.cc +++ b/src/db/db/dbEdgePairRelations.cc @@ -48,17 +48,53 @@ db::Edge::distance_type edge_projection (const db::Edge &a, const db::Edge &b) return db::coord_traits::rounded (a.double_length () * fabs (l2 - l1)); } +/** + * @brief Gets a flag indicating whether zero distance is included in the checks + */ +static bool include_zero_flag (zero_distance_mode zd_mode, const db::Edge &a, const db::Edge &b) +{ + if (zd_mode == AlwaysIncludeZeroDistance) { + + return true; + + } else if (zd_mode == NeverIncludeZeroDistance) { + + return false; + + } else { + + int s1 = a.side_of (b.p1 ()); + int s2 = a.side_of (b.p2 ()); + + if (s1 == 0 && s2 == 0) { + if (zd_mode == IncludeZeroDistanceWhenTouching || zd_mode == IncludeZeroDistanceWhenCollinearAndTouching) { + return a.intersect (b); + } else if (zd_mode == IncludeZeroDistanceWhenOverlapping) { + return a.coincident (b); + } + } else if ((s1 == 0 || s2 == 0) && a.p1 () != b.p2 () && a.p2 () != b.p1 ()) { + if (zd_mode == IncludeZeroDistanceWhenTouching) { + return a.intersect (b); + } + } + + return false; + + } +} + /** * @brief Returns the part of the "other" edge which is on the inside side of e and within distance d * * This function applies Euclidian metrics. * If no such part is found, this function returns false. + * + * The input edges are normalized to "width" orientation. */ -bool euclidian_near_part_of_edge (bool include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &other, db::Edge *output) +bool euclidian_near_part_of_edge (zero_distance_mode zd_mode, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &other, db::Edge *output) { // Handle the case of point-like basic edge: cannot determine // orientation - if (e.is_degenerate ()) { return false; } @@ -67,11 +103,7 @@ bool euclidian_near_part_of_edge (bool include_zero, db::coord_traits int s1 = e.side_of (g.p1 ()); int s2 = e.side_of (g.p2 ()); - // "kissing corner" issue: force include zero if the edges are collinear and overlap. - if (! include_zero && s1 == 0 && s2 == 0 && e.intersect (g)) { - include_zero = true; - } - + bool include_zero = include_zero_flag (zd_mode, e, g); int thr = include_zero ? 0 : -1; // keep only part of other which is on the "inside" side of e @@ -89,18 +121,18 @@ bool euclidian_near_part_of_edge (bool include_zero, db::coord_traits db::Point o = g.p1 (); - if (e.side_of (o) >= 0) { + if (e.side_of (o) > thr) { return false; } double a = e.double_sq_length (); - double b = db::sprod (db::Vector (e.p1 () - o), e.d ()); - double c = e.p1 ().sq_double_distance (o) - d * d; + double b = db::sprod (db::Vector (e.p1 () - o), e.d ()) / a; + double c = (e.p1 ().sq_double_distance (o) - double (d) * double (d)) / a; - double s = b * b - a * c; - if (s >= 0) { - double l1 = std::max (0.0, (-b - sqrt (s)) / a); - double l2 = std::min (1.0, (-b + sqrt (s)) / a); + double s = b * b - c; + if (s >= -db::epsilon) { + double l1 = std::max (0.0, (-b - sqrt (s))); + double l2 = std::min (1.0, (-b + sqrt (s))); if (l1 <= l2) { if (output) { *output = g; @@ -167,13 +199,13 @@ bool euclidian_near_part_of_edge (bool include_zero, db::coord_traits db::Point o = i ? e.p2 () : e.p1 (); double a = g.double_sq_length (); - double b = db::sprod (db::Vector (g.p1 () - o), g.d ()); - double c = g.p1 ().sq_double_distance (o) - double (d) * double (d); + double b = db::sprod (db::Vector (g.p1 () - o), g.d ()) / a; + double c = (g.p1 ().sq_double_distance (o) - double (d) * double (d)) / a; - double s = b * b - a * c; - if (s >= 0) { - l1 = std::min (l1, (-b - sqrt (s)) / a); - l2 = std::max (l2, (-b + sqrt (s)) / a); + double s = b * b - c; + if (s >= -db::epsilon) { + l1 = std::min (l1, -b - sqrt (s)); + l2 = std::max (l2, -b + sqrt (s)); } } @@ -181,7 +213,7 @@ bool euclidian_near_part_of_edge (bool include_zero, db::coord_traits l1 = std::max (0.0, l1); l2 = std::min (1.0, l2); - if (l1 >= l2) { + if (l1 > l2 - db::epsilon) { return false; } else { if (output) { @@ -194,10 +226,12 @@ bool euclidian_near_part_of_edge (bool include_zero, db::coord_traits /** * @brief Returns the part of the "other" edge which is on the inside side of e and within distance d * - * This function applies Square metrics. + * This function applies Projection or Square metrics. * If no such part is found, this function returns false. + * + * The input edges are normalized to "width" orientation. */ -static bool var_near_part_of_edge (bool include_zero, db::coord_traits::distance_type d, db::coord_traits::distance_type dd, const db::Edge &e, const db::Edge &other, db::Edge *output) +static bool var_near_part_of_edge (zero_distance_mode zd_mode, db::coord_traits::distance_type d, db::coord_traits::distance_type dd, const db::Edge &e, const db::Edge &other, db::Edge *output) { // Handle the case of point-like basic edge: cannot determine // orientation @@ -210,11 +244,7 @@ static bool var_near_part_of_edge (bool include_zero, db::coord_traits= 0) { + if (e.side_of (g.p1 ()) > thr) { + return false; + } + if (double (e.distance (g.p1 ())) <= -double (d)) { return false; } if (db::sprod (db::Vector (g.p1 () - e.p1 ()), e.d ()) < -(dd * e.double_length ())) { @@ -314,9 +346,9 @@ static bool var_near_part_of_edge (bool include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &other, db::Edge *output) +bool projected_near_part_of_edge (zero_distance_mode zd_mode, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &other, db::Edge *output) { - return var_near_part_of_edge (include_zero, d, 0, e, other, output); + return var_near_part_of_edge (zd_mode, d, 0, e, other, output); } /** @@ -325,20 +357,26 @@ bool projected_near_part_of_edge (bool include_zero, db::coord_traits * This function applies Square metrics. * If no such part is found, this function returns false. */ -bool square_near_part_of_edge (bool include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &other, db::Edge *output) +bool square_near_part_of_edge (zero_distance_mode zd_mode, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &other, db::Edge *output) { - return var_near_part_of_edge (include_zero, d, d, e, other, output); + return var_near_part_of_edge (zd_mode, d, d, e, other, output); } // --------------------------------------------------------------------------------- // Implementation of EdgeRelationFilter -EdgeRelationFilter::EdgeRelationFilter (edge_relation_type r, distance_type d, metrics_type metrics, double ignore_angle, distance_type min_projection, distance_type max_projection) - : m_whole_edges (false), m_include_zero (true), m_r (r), m_d (d), m_metrics (metrics), m_ignore_angle (0), m_min_projection (min_projection), m_max_projection (max_projection) +EdgeRelationFilter::EdgeRelationFilter (edge_relation_type r, distance_type d, metrics_type metrics, double ignore_angle, distance_type min_projection, distance_type max_projection, zero_distance_mode zd_mode) + : m_whole_edges (false), m_zero_distance_mode (zd_mode), m_r (r), m_d (d), m_metrics (metrics), m_ignore_angle (0), m_min_projection (min_projection), m_max_projection (max_projection) { set_ignore_angle (ignore_angle); } +EdgeRelationFilter::EdgeRelationFilter (edge_relation_type r, distance_type d, const EdgesCheckOptions &options) + : m_whole_edges (options.whole_edges), m_zero_distance_mode (options.zd_mode), m_r (r), m_d (d), m_metrics (options.metrics), m_ignore_angle (0), m_min_projection (options.min_projection), m_max_projection (options.max_projection) +{ + set_ignore_angle (options.ignore_angle); +} + void EdgeRelationFilter::set_ignore_angle (double a) { @@ -399,14 +437,14 @@ EdgeRelationFilter::check (const db::Edge &a, const db::Edge &b, db::EdgePair *o bool in1, in2; if (m_metrics == Euclidian) { - in2 = euclidian_near_part_of_edge (m_include_zero, m_d, an, bn, ! m_whole_edges && output ? &output->second () : 0); - in1 = euclidian_near_part_of_edge (m_include_zero, m_d, bn, an, ! m_whole_edges && output ? &output->first () : 0); + in2 = euclidian_near_part_of_edge (m_zero_distance_mode, m_d, an, bn, ! m_whole_edges && output ? &output->second () : 0); + in1 = euclidian_near_part_of_edge (m_zero_distance_mode, m_d, bn, an, ! m_whole_edges && output ? &output->first () : 0); } else if (m_metrics == Square) { - in2 = square_near_part_of_edge (m_include_zero, m_d, an, bn, ! m_whole_edges && output ? &output->second () : 0); - in1 = square_near_part_of_edge (m_include_zero, m_d, bn, an, ! m_whole_edges && output ? &output->first () : 0); + in2 = square_near_part_of_edge (m_zero_distance_mode, m_d, an, bn, ! m_whole_edges && output ? &output->second () : 0); + in1 = square_near_part_of_edge (m_zero_distance_mode, m_d, bn, an, ! m_whole_edges && output ? &output->first () : 0); } else { - in2 = projected_near_part_of_edge (m_include_zero, m_d, an, bn, ! m_whole_edges && output ? &output->second () : 0); - in1 = projected_near_part_of_edge (m_include_zero, m_d, bn, an, ! m_whole_edges && output ? &output->first () : 0); + in2 = projected_near_part_of_edge (m_zero_distance_mode, m_d, an, bn, ! m_whole_edges && output ? &output->second () : 0); + in1 = projected_near_part_of_edge (m_zero_distance_mode, m_d, bn, an, ! m_whole_edges && output ? &output->first () : 0); } if (in1 && in2) { diff --git a/src/db/db/dbEdgePairRelations.h b/src/db/db/dbEdgePairRelations.h index 99b5aec6c..8345b26b1 100644 --- a/src/db/db/dbEdgePairRelations.h +++ b/src/db/db/dbEdgePairRelations.h @@ -98,6 +98,111 @@ enum edge_relation_type InsideRelation = 4 }; +/** + * @brief An enum specifying whether how edges with zero distance are handled in checks + */ +enum zero_distance_mode { + + /** + * @brief Never include zero-distance edges + */ + NeverIncludeZeroDistance = 0, + + /** + * @brief Include zero-distance edges when they share at least one common point + */ + IncludeZeroDistanceWhenTouching = 1, + + /** + * @brief Include zero-distance edges when they share at least one common point and are collinear + */ + IncludeZeroDistanceWhenCollinearAndTouching = 2, + + /** + * @brief Include zero-distance edges when they share more than a single common point (this implies that they are collinear) + */ + IncludeZeroDistanceWhenOverlapping = 3, + + /** + * @brief Always include zero-distance edges (hardly useful) + */ + AlwaysIncludeZeroDistance = 4 +}; + +/** + * @brief A structure holding the options for the region checks (space, width, ...) + */ +struct DB_PUBLIC EdgesCheckOptions +{ + typedef db::coord_traits::distance_type distance_type; + + /** + * @brief Constructor + */ + EdgesCheckOptions (bool _whole_edges = false, + metrics_type _metrics = db::Euclidian, + double _ignore_angle = 90, + distance_type _min_projection = 0, + distance_type _max_projection = std::numeric_limits::max (), + zero_distance_mode _zd_mode = IncludeZeroDistanceWhenTouching) + : whole_edges (_whole_edges), + metrics (_metrics), + ignore_angle (_ignore_angle), + min_projection (_min_projection), + max_projection (_max_projection), + zd_mode (_zd_mode) + { } + + /** + * @brief Specifies is whole edges are to be delivered + * + * Without "whole_edges", the parts of + * the edges are returned which violate the condition. If "whole_edges" is true, the + * result will contain the complete edges participating in the result. + */ + bool whole_edges; + + /** + * @brief Measurement metrics + * + * The metrics parameter specifies which metrics to use. "Euclidian", "Square" and "Projected" + * metrics are available. + */ + metrics_type metrics; + + /** + * @brief Specifies the obtuse angle threshold + * + * "ignore_angle" allows specification of a maximum angle that connected edges can have to not participate + * in the check. By choosing 90 degree, edges with angles of 90 degree and larger are not checked, + * but acute corners are for example. + */ + double ignore_angle; + + /** + * @brief Specifies the projection limit's minimum value + * + * With min_projection and max_projection it is possible to specify how edges must be related + * to each other. If the length of the projection of either edge on the other is >= min_projection + * or < max_projection, the edges are considered for the check. + */ + distance_type min_projection; + + /** + * @brief Specifies the projection limit's maximum value + */ + distance_type max_projection; + + /** + * @brief Specifies zero-distance edge handling + * + * This allows implementing the "kissing corners" case. When set to "IncludeZeroDistanceWhenTouching", kissing corners will + * be reported as errors, when set to "NeverIncludeZeroDistance", they won't. Note that with merged inputs, edges + * will not overlap except at the corners. + */ + zero_distance_mode zd_mode; +}; + /** * @brief A filter based on the edge pair relation * @@ -123,9 +228,14 @@ struct DB_PUBLIC EdgeRelationFilter * to each other. If the length of the projection of either edge on the other is >= min_projection * or < max_projection, the edges are considered for the check. */ - EdgeRelationFilter (edge_relation_type r, distance_type d, metrics_type metrics = db::Euclidian, double ignore_angle = 90, distance_type min_projection = 0, distance_type max_projection = std::numeric_limits::max ()); + EdgeRelationFilter (edge_relation_type r, distance_type d, metrics_type metrics = db::Euclidian, double ignore_angle = 90, distance_type min_projection = 0, distance_type max_projection = std::numeric_limits::max (), zero_distance_mode include_zero = AlwaysIncludeZeroDistance); - /** + /** + * Constructs an edge relation filter from a CheckOptions structure + */ + EdgeRelationFilter (edge_relation_type r, distance_type d, const EdgesCheckOptions &options); + + /** * @brief Tests whether two edges fulfil the check fail criterion * * If the output pointer is non-null, the object will receive the edge pair that @@ -150,19 +260,19 @@ struct DB_PUBLIC EdgeRelationFilter } /** - * @brief Sets a flag indicating whether zero distance shall be included in the check + * @brief Sets a value indicating whether zero-distance edges shall be included in the check */ - void set_include_zero (bool f) + void set_zero_distance_mode (zero_distance_mode f) { - m_include_zero = f; + m_zero_distance_mode = f; } /** - * @brief Gets a flag indicating whether zero distance shall be included in the check + * @brief Gets a value indicating whether zero-distance edges shall be included in the check */ - bool include_zero () const + zero_distance_mode get_zero_distance_mode () const { - return m_include_zero; + return m_zero_distance_mode; } /** @@ -262,7 +372,7 @@ struct DB_PUBLIC EdgeRelationFilter private: bool m_whole_edges; - bool m_include_zero; + zero_distance_mode m_zero_distance_mode; edge_relation_type m_r; distance_type m_d; metrics_type m_metrics; @@ -273,9 +383,9 @@ private: // Internal methods exposed for testing purposes -DB_PUBLIC bool projected_near_part_of_edge (bool include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &g, db::Edge *output); -DB_PUBLIC bool square_near_part_of_edge (bool include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &g, db::Edge *output); -DB_PUBLIC bool euclidian_near_part_of_edge (bool include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &g, db::Edge *output); +DB_PUBLIC bool projected_near_part_of_edge (zero_distance_mode include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &g, db::Edge *output); +DB_PUBLIC bool square_near_part_of_edge (zero_distance_mode include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &g, db::Edge *output); +DB_PUBLIC bool euclidian_near_part_of_edge (zero_distance_mode include_zero, db::coord_traits::distance_type d, const db::Edge &e, const db::Edge &g, db::Edge *output); DB_PUBLIC db::Edge::distance_type edge_projection (const db::Edge &a, const db::Edge &b); } diff --git a/src/db/db/dbEdgesDelegate.h b/src/db/db/dbEdgesDelegate.h index 919ba5b8a..051d671ee 100644 --- a/src/db/db/dbEdgesDelegate.h +++ b/src/db/db/dbEdgesDelegate.h @@ -39,69 +39,6 @@ namespace db { -/** - * @brief A structure holding the options for the region checks (space, width, ...) - */ -struct DB_PUBLIC EdgesCheckOptions -{ - typedef db::coord_traits::distance_type distance_type; - - /** - * @brief Constructor - */ - EdgesCheckOptions (bool _whole_edges = false, - metrics_type _metrics = db::Euclidian, - double _ignore_angle = 90, - distance_type _min_projection = 0, - distance_type _max_projection = std::numeric_limits::max ()) - : whole_edges (_whole_edges), - metrics (_metrics), - ignore_angle (_ignore_angle), - min_projection (_min_projection), - max_projection (_max_projection) - { } - - /** - * @brief Specifies is whole edges are to be delivered - * - * Without "whole_edges", the parts of - * the edges are returned which violate the condition. If "whole_edges" is true, the - * result will contain the complete edges participating in the result. - */ - bool whole_edges; - - /** - * @brief Measurement metrics - * - * The metrics parameter specifies which metrics to use. "Euclidian", "Square" and "Projected" - * metrics are available. - */ - metrics_type metrics; - - /** - * @brief Specifies the obtuse angle threshold - * - * "ignore_angle" allows specification of a maximum angle that connected edges can have to not participate - * in the check. By choosing 90 degree, edges with angles of 90 degree and larger are not checked, - * but acute corners are for example. - */ - double ignore_angle; - - /** - * @brief Specifies the projection limit's minimum value - * - * With min_projection and max_projection it is possible to specify how edges must be related - * to each other. If the length of the projection of either edge on the other is >= min_projection - * or < max_projection, the edges are considered for the check. - */ - distance_type min_projection; - - /** - * @brief Specifies the projection limit's maximum value - */ - distance_type max_projection; -}; - /** * @brief A base class for edge filters */ diff --git a/src/db/db/dbRegionLocalOperations.h b/src/db/db/dbRegionLocalOperations.h index 90e91053e..27b09b187 100644 --- a/src/db/db/dbRegionLocalOperations.h +++ b/src/db/db/dbRegionLocalOperations.h @@ -113,6 +113,7 @@ enum OppositeFilter * @brief A structure holding the options for the region checks (space, width, ...) */ struct DB_PUBLIC RegionCheckOptions + : public EdgesCheckOptions { typedef db::coord_traits::distance_type distance_type; @@ -128,12 +129,9 @@ struct DB_PUBLIC RegionCheckOptions OppositeFilter _opposite_filter = NoOppositeFilter, RectFilter _rect_filter = NoRectFilter, bool _negative = false, - PropertyConstraint _prop_constraint = IgnoreProperties) - : whole_edges (_whole_edges), - metrics (_metrics), - ignore_angle (_ignore_angle), - min_projection (_min_projection), - max_projection (_max_projection), + PropertyConstraint _prop_constraint = IgnoreProperties, + zero_distance_mode _zd_mode = IncludeZeroDistanceWhenTouching) + : EdgesCheckOptions (_whole_edges, _metrics, _ignore_angle, _min_projection, _max_projection, _zd_mode), shielded (_shielded), opposite_filter (_opposite_filter), rect_filter (_rect_filter), @@ -141,46 +139,6 @@ struct DB_PUBLIC RegionCheckOptions prop_constraint (_prop_constraint) { } - /** - * @brief Specifies is whole edges are to be delivered - * - * Without "whole_edges", the parts of - * the edges are returned which violate the condition. If "whole_edges" is true, the - * result will contain the complete edges participating in the result. - */ - bool whole_edges; - - /** - * @brief Measurement metrics - * - * The metrics parameter specifies which metrics to use. "Euclidian", "Square" and "Projected" - * metrics are available. - */ - metrics_type metrics; - - /** - * @brief Specifies the obtuse angle threshold - * - * "ignore_angle" allows specification of a maximum angle that connected edges can have to not participate - * in the check. By choosing 90 degree, edges with angles of 90 degree and larger are not checked, - * but acute corners are for example. - */ - double ignore_angle; - - /** - * @brief Specifies the projection limit's minimum value - * - * With min_projection and max_projection it is possible to specify how edges must be related - * to each other. If the length of the projection of either edge on the other is >= min_projection - * or < max_projection, the edges are considered for the check. - */ - distance_type min_projection; - - /** - * @brief Specifies the projection limit's maximum value - */ - distance_type max_projection; - /** * @brief Specifies shielding * diff --git a/src/db/db/dbRegionUtils.cc b/src/db/db/dbRegionUtils.cc index 5084c0332..15b7b8bc7 100644 --- a/src/db/db/dbRegionUtils.cc +++ b/src/db/db/dbRegionUtils.cc @@ -359,12 +359,7 @@ SinglePolygonCheck::process (const db::Polygon &polygon, std::vector result; - EdgeRelationFilter check (m_relation, m_d, m_options.metrics); - check.set_include_zero (false); - check.set_whole_edges (m_options.whole_edges); - check.set_ignore_angle (m_options.ignore_angle); - check.set_min_projection (m_options.min_projection); - check.set_max_projection (m_options.max_projection); + EdgeRelationFilter check (m_relation, m_d, m_options); edge2edge_check_negative_or_positive > edge_check (check, result, m_options.negative, false /*=same polygons*/, false /*=same layers*/, m_options.shielded, true /*=symmetric*/); poly2poly_check poly_check (edge_check); diff --git a/src/db/db/gsiDeclDbCompoundOperation.cc b/src/db/db/gsiDeclDbCompoundOperation.cc index dd88ca6d2..782151553 100644 --- a/src/db/db/gsiDeclDbCompoundOperation.cc +++ b/src/db/db/gsiDeclDbCompoundOperation.cc @@ -390,23 +390,27 @@ static db::CompoundRegionOperationNode *new_edge_pair_to_second_edges (db::Compo return new db::CompoundRegionEdgePairToEdgeProcessingOperationNode (new db::EdgePairToSecondEdgesProcessor (), input, true /*processor is owned*/); } -static db::CompoundRegionOperationNode *new_check_node (db::CompoundRegionOperationNode *other, db::edge_relation_type rel, bool different_polygons, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, bool negative) +static db::CompoundRegionOperationNode *new_check_node (db::CompoundRegionOperationNode *other, db::edge_relation_type rel, bool different_polygons, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, db::zero_distance_mode zd_mode, bool negative) { check_non_null (other, "other"); - return new db::CompoundRegionCheckOperationNode (0, other, rel, different_polygons, d, - db::RegionCheckOptions (whole_edges, - metrics, - ignore_angle.is_nil () ? 90 : ignore_angle.to_double (), - min_projection.is_nil () ? db::Region::distance_type (0) : min_projection.to (), - max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), - shielded, - opposite_filter, - rect_filter, - negative) - ); + + db::RegionCheckOptions options; + + options.whole_edges = whole_edges; + options.metrics = metrics; + options.ignore_angle = ignore_angle.is_nil () ? 90 : ignore_angle.to_double (); + options.min_projection = min_projection.is_nil () ? db::Region::distance_type (0) : min_projection.to (); + options.max_projection = max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (); + options.shielded = shielded; + options.opposite_filter = opposite_filter; + options.rect_filter = rect_filter; + options.negative = negative; + options.zd_mode = zd_mode; + + return new db::CompoundRegionCheckOperationNode (0, other, rel, different_polygons, d, options); } -static db::CompoundRegionOperationNode *new_width_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, bool negative) +static db::CompoundRegionOperationNode *new_width_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::zero_distance_mode zd_mode, bool negative) { db::RegionCheckOptions options (whole_edges, metrics, @@ -415,28 +419,29 @@ static db::CompoundRegionOperationNode *new_width_check (db::Coord d, bool whole max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), shielded); options.negative = negative; + options.zd_mode = zd_mode; return new db::CompoundRegionToEdgePairProcessingOperationNode (new db::SinglePolygonCheck (db::WidthRelation, d, options), new_primary (), true /*processor is owned*/); } -static db::CompoundRegionOperationNode *new_space_or_isolated_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, bool negative, bool isolated) +static db::CompoundRegionOperationNode *new_space_or_isolated_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, db::zero_distance_mode zd_mode, bool negative, bool isolated) { // NOTE: we have to use the "foreign" scheme with a filter because only this scheme // guarantees that all subject shapes are visited and receive all intruders. Having all intruders is crucial for the // semantics of the "drc" feature - return new_check_node (new_foreign (), db::SpaceRelation, isolated, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, negative); + return new_check_node (new_foreign (), db::SpaceRelation, isolated, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, zd_mode, negative); } -static db::CompoundRegionOperationNode *new_space_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, bool negative) +static db::CompoundRegionOperationNode *new_space_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, db::zero_distance_mode zd_mode, bool negative) { - return new_space_or_isolated_check (d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, negative, false); + return new_space_or_isolated_check (d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, zd_mode, negative, false); } -static db::CompoundRegionOperationNode *new_isolated_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, bool negative) +static db::CompoundRegionOperationNode *new_isolated_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, db::zero_distance_mode zd_mode, bool negative) { - return new_space_or_isolated_check (d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, negative, true); + return new_space_or_isolated_check (d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, zd_mode, negative, true); } -static db::CompoundRegionOperationNode *new_notch_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, bool negative) +static db::CompoundRegionOperationNode *new_notch_check (db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::zero_distance_mode zd_mode, bool negative) { db::RegionCheckOptions options (whole_edges, metrics, @@ -445,27 +450,28 @@ static db::CompoundRegionOperationNode *new_notch_check (db::Coord d, bool whole max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), shielded); options.negative = negative; + options.zd_mode = zd_mode; return new db::CompoundRegionToEdgePairProcessingOperationNode (new db::SinglePolygonCheck (db::SpaceRelation, d, options), new_primary (), true /*processor is owned*/); } -static db::CompoundRegionOperationNode *new_separation_check (db::CompoundRegionOperationNode *other, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, bool negative) +static db::CompoundRegionOperationNode *new_separation_check (db::CompoundRegionOperationNode *other, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, db::zero_distance_mode zd_mode, bool negative) { - return new_check_node (other, db::SpaceRelation, true, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, negative); + return new_check_node (other, db::SpaceRelation, true, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, zd_mode, negative); } -static db::CompoundRegionOperationNode *new_overlap_check (db::CompoundRegionOperationNode *other, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, bool negative) +static db::CompoundRegionOperationNode *new_overlap_check (db::CompoundRegionOperationNode *other, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, db::zero_distance_mode zd_mode, bool negative) { - return new_check_node (other, db::WidthRelation, true, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, negative); + return new_check_node (other, db::WidthRelation, true, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, zd_mode, negative); } -static db::CompoundRegionOperationNode *new_enclosing_check (db::CompoundRegionOperationNode *other, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, bool negative) +static db::CompoundRegionOperationNode *new_enclosing_check (db::CompoundRegionOperationNode *other, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, db::zero_distance_mode zd_mode, bool negative) { - return new_check_node (other, db::OverlapRelation, true, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, negative); + return new_check_node (other, db::OverlapRelation, true, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, zd_mode, negative); } -static db::CompoundRegionOperationNode *new_enclosed_check (db::CompoundRegionOperationNode *other, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, bool negative) +static db::CompoundRegionOperationNode *new_enclosed_check (db::CompoundRegionOperationNode *other, db::Coord d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite_filter, db::RectFilter rect_filter, db::zero_distance_mode zd_mode, bool negative) { - return new_check_node (other, db::InsideRelation, true, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, negative); + return new_check_node (other, db::InsideRelation, true, d, whole_edges, metrics, ignore_angle, min_projection, max_projection, shielded, opposite_filter, rect_filter, zd_mode, negative); } static db::CompoundRegionOperationNode *new_perimeter_filter (db::CompoundRegionOperationNode *input, bool inverse, db::coord_traits::perimeter_type pmin, db::coord_traits::perimeter_type pmax) @@ -660,31 +666,45 @@ Class decl_CompoundRegionOperationNode ("db", " gsi::constructor ("new_minkowski_sum|#new_minkowsky_sum", &new_minkowski_sum_node4, gsi::arg ("input"), gsi::arg ("p"), "@brief Creates a node providing a Minkowski sum with a point sequence forming a contour.\n" ) + - gsi::constructor ("new_width_check", &new_width_check, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("negative", false), + gsi::constructor ("new_width_check", &new_width_check, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), gsi::arg ("negative", false), "@brief Creates a node providing a width check.\n" + "\n" + "The zero_distance_mode argument has been inserted in version 0.29.\n" ) + - gsi::constructor ("new_space_check", &new_space_check, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), + gsi::constructor ("new_space_check", &new_space_check, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), gsi::arg ("negative", false), "@brief Creates a node providing a space check.\n" + "\n" + "The zero_distance_mode argument has been inserted in version 0.29.\n" ) + - gsi::constructor ("new_isolated_check", &new_isolated_check, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), + gsi::constructor ("new_isolated_check", &new_isolated_check, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), gsi::arg ("negative", false), "@brief Creates a node providing a isolated polygons (space between different polygons) check.\n" + "\n" + "The zero_distance_mode argument has been inserted in version 0.29.\n" ) + - gsi::constructor ("new_notch_check", &new_notch_check, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("negative", false), + gsi::constructor ("new_notch_check", &new_notch_check, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), gsi::arg ("negative", false), "@brief Creates a node providing a intra-polygon space check.\n" + "\n" + "The zero_distance_mode argument has been inserted in version 0.29.\n" ) + - gsi::constructor ("new_separation_check", &new_separation_check, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), + gsi::constructor ("new_separation_check", &new_separation_check, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), gsi::arg ("negative", false), "@brief Creates a node providing a separation check.\n" + "\n" + "The zero_distance_mode argument has been inserted in version 0.29.\n" ) + - gsi::constructor ("new_overlap_check", &new_overlap_check, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), + gsi::constructor ("new_overlap_check", &new_overlap_check, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), gsi::arg ("negative", false), "@brief Creates a node providing an overlap check.\n" + "\n" + "The zero_distance_mode argument has been inserted in version 0.29.\n" ) + - gsi::constructor ("new_enclosing_check", &new_enclosing_check, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), + gsi::constructor ("new_enclosing_check", &new_enclosing_check, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), gsi::arg ("negative", false), "@brief Creates a node providing an inside (enclosure) check.\n" + "\n" + "The zero_distance_mode argument has been inserted in version 0.29.\n" ) + - gsi::constructor ("new_enclosed_check", &new_enclosed_check, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), + gsi::constructor ("new_enclosed_check", &new_enclosed_check, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max."), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), gsi::arg ("negative", false), "@brief Creates a node providing an enclosed (secondary enclosing primary) check.\n" "\n" - "This method has been added in version 0.27.5.\n" + "This method has been added in version 0.27.5. The zero_distance_mode argument has been inserted in version 0.29.\n" ) + gsi::constructor ("new_perimeter_filter", &new_perimeter_filter, gsi::arg ("input"), gsi::arg ("inverse", false), gsi::arg ("pmin", 0), gsi::arg ("pmax", std::numeric_limits::perimeter_type>::max (), "max"), "@brief Creates a node filtering the input by perimeter.\n" @@ -803,9 +823,7 @@ Class decl_CompoundRegionOperationNode ("db", " "\n" "The search distance for intruder shapes is determined by the operation and computed from the operation's requirements.\n" "\n" - "NOTE: this feature is experimental and not deployed into the the DRC framework yet.\n" - "\n" - "This class has been introduced in version 0.27." + "This class has been introduced in version 0.27. The API is considered internal and will change without notice." ); gsi::EnumIn decl_dbCompoundRegionLogicalBoolOperationNode_LogicalOp ("db", "LogicalOp", diff --git a/src/db/db/gsiDeclDbEdges.cc b/src/db/db/gsiDeclDbEdges.cc index 718b6d16b..f74687b1b 100644 --- a/src/db/db/gsiDeclDbEdges.cc +++ b/src/db/db/gsiDeclDbEdges.cc @@ -234,63 +234,69 @@ static db::Edges with_angle3 (const db::Edges *r, db::SpecialEdgeOrientationFilt return r->filtered (f); } -static db::EdgePairs width2 (const db::Edges *r, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection) +static db::EdgePairs width2 (const db::Edges *r, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, db::zero_distance_mode zd_mode) { return r->width_check (d, db::EdgesCheckOptions (whole_edges, metrics, ignore_angle.is_nil () ? 90 : ignore_angle.to_double (), min_projection.is_nil () ? db::Edges::distance_type (0) : min_projection.to (), - max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to ()) + max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), + zd_mode) ); } -static db::EdgePairs space2 (const db::Edges *r, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection) +static db::EdgePairs space2 (const db::Edges *r, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, db::zero_distance_mode zd_mode) { return r->space_check (d, db::EdgesCheckOptions (whole_edges, metrics, ignore_angle.is_nil () ? 90 : ignore_angle.to_double (), min_projection.is_nil () ? db::Edges::distance_type (0) : min_projection.to (), - max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to ()) + max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), + zd_mode) ); } -static db::EdgePairs inside2 (const db::Edges *r, const db::Edges &other, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection) +static db::EdgePairs inside2 (const db::Edges *r, const db::Edges &other, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, db::zero_distance_mode zd_mode) { return r->inside_check (other, d, db::EdgesCheckOptions (whole_edges, metrics, ignore_angle.is_nil () ? 90 : ignore_angle.to_double (), min_projection.is_nil () ? db::Edges::distance_type (0) : min_projection.to (), - max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to ()) + max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), + zd_mode) ); } -static db::EdgePairs overlap2 (const db::Edges *r, const db::Edges &other, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection) +static db::EdgePairs overlap2 (const db::Edges *r, const db::Edges &other, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, db::zero_distance_mode zd_mode) { return r->overlap_check (other, d, db::EdgesCheckOptions (whole_edges, metrics, ignore_angle.is_nil () ? 90 : ignore_angle.to_double (), min_projection.is_nil () ? db::Edges::distance_type (0) : min_projection.to (), - max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to ()) + max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), + zd_mode) ); } -static db::EdgePairs enclosing2 (const db::Edges *r, const db::Edges &other, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection) +static db::EdgePairs enclosing2 (const db::Edges *r, const db::Edges &other, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, db::zero_distance_mode zd_mode) { return r->enclosing_check (other, d, db::EdgesCheckOptions (whole_edges, metrics, ignore_angle.is_nil () ? 90 : ignore_angle.to_double (), min_projection.is_nil () ? db::Edges::distance_type (0) : min_projection.to (), - max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to ()) + max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), + zd_mode) ); } -static db::EdgePairs separation2 (const db::Edges *r, const db::Edges &other, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection) +static db::EdgePairs separation2 (const db::Edges *r, const db::Edges &other, db::Edges::coord_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, db::zero_distance_mode zd_mode) { return r->separation_check (other, d, db::EdgesCheckOptions (whole_edges, metrics, ignore_angle.is_nil () ? 90 : ignore_angle.to_double (), min_projection.is_nil () ? db::Edges::distance_type (0) : min_projection.to (), - max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to ()) + max_projection.is_nil () ? std::numeric_limits::max () : max_projection.to (), + zd_mode) ); } @@ -1399,7 +1405,7 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "\n" "This variant has been introduced in version 0.27." ) + - method_ext ("width_check", &width2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), + method_ext ("width_check", &width2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs a width check with options\n" "@param d The minimum width for which the edges are checked\n" "@param whole_edges If true, deliver the whole edges\n" @@ -1407,6 +1413,7 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "@param ignore_angle The threshold angle above which no check is performed\n" "@param min_projection The lower threshold of the projected length of one edge onto another\n" "@param max_projection The upper threshold of the projected length of one edge onto another\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -1424,8 +1431,10 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "It is sufficient if the projection of one edge on the other matches the specified condition. " "The projected length must be larger or equal to \"min_projection\" and less than \"max_projection\". " "If you don't want to specify one threshold, pass nil to the respective value.\n" + "\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("space_check", &space2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), + method_ext ("space_check", &space2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs a space check with options\n" "@param d The minimum distance for which the edges are checked\n" "@param whole_edges If true, deliver the whole edges\n" @@ -1433,6 +1442,7 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "@param ignore_angle The threshold angle above which no check is performed\n" "@param min_projection The lower threshold of the projected length of one edge onto another\n" "@param max_projection The upper threshold of the projected length of one edge onto another\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the space check.\n" @@ -1450,8 +1460,10 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "It is sufficient if the projection of one edge on the other matches the specified condition. " "The projected length must be larger or equal to \"min_projection\" and less than \"max_projection\". " "If you don't want to specify one threshold, pass nil to the respective value.\n" + "\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("inside_check|enclosed_check", &inside2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), + method_ext ("inside_check|enclosed_check", &inside2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs an inside check with options\n" "@param d The minimum distance for which the edges are checked\n" "@param other The other edge collection against which to check\n" @@ -1460,6 +1472,7 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "@param ignore_angle The threshold angle above which no check is performed\n" "@param min_projection The lower threshold of the projected length of one edge onto another\n" "@param max_projection The upper threshold of the projected length of one edge onto another\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -1479,8 +1492,9 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "If you don't want to specify one threshold, pass nil to the respective value.\n" "\n" "The 'enclosed_check' alias was introduced in version 0.27.5.\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("enclosing_check", &enclosing2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), + method_ext ("enclosing_check", &enclosing2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs an enclosing check with options\n" "@param d The minimum distance for which the edges are checked\n" "@param other The other edge collection against which to check\n" @@ -1489,6 +1503,7 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "@param ignore_angle The threshold angle above which no check is performed\n" "@param min_projection The lower threshold of the projected length of one edge onto another\n" "@param max_projection The upper threshold of the projected length of one edge onto another\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -1506,8 +1521,10 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "It is sufficient if the projection of one edge on the other matches the specified condition. " "The projected length must be larger or equal to \"min_projection\" and less than \"max_projection\". " "If you don't want to specify one threshold, pass nil to the respective value.\n" + "\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("overlap_check", &overlap2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), + method_ext ("overlap_check", &overlap2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs an overlap check with options\n" "@param d The minimum distance for which the edges are checked\n" "@param other The other edge collection against which to check\n" @@ -1516,6 +1533,7 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "@param ignore_angle The threshold angle above which no check is performed\n" "@param min_projection The lower threshold of the projected length of one edge onto another\n" "@param max_projection The upper threshold of the projected length of one edge onto another\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -1533,8 +1551,10 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "It is sufficient if the projection of one edge on the other matches the specified condition. " "The projected length must be larger or equal to \"min_projection\" and less than \"max_projection\". " "If you don't want to specify one threshold, pass nil to the respective value.\n" + "\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("separation_check", &separation2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), + method_ext ("separation_check", &separation2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs an overlap check with options\n" "@param d The minimum distance for which the edges are checked\n" "@param other The other edge collection against which to check\n" @@ -1543,6 +1563,7 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "@param ignore_angle The threshold angle above which no check is performed\n" "@param min_projection The lower threshold of the projected length of one edge onto another\n" "@param max_projection The upper threshold of the projected length of one edge onto another\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -1560,6 +1581,8 @@ Class decl_Edges (decl_dbShapeCollection, "db", "Edges", "It is sufficient if the projection of one edge on the other matches the specified condition. " "The projected length must be larger or equal to \"min_projection\" and less than \"max_projection\". " "If you don't want to specify one threshold, pass nil to the respective value.\n" + "\n" + "'zero_distance_mode' has been added in version 0.29." ) + method_ext ("extents", &extents0, "@brief Returns a region with the bounding boxes of the edges\n" diff --git a/src/db/db/gsiDeclDbRegion.cc b/src/db/db/gsiDeclDbRegion.cc index 43b809553..33d13a5de 100644 --- a/src/db/db/gsiDeclDbRegion.cc +++ b/src/db/db/gsiDeclDbRegion.cc @@ -526,7 +526,7 @@ static db::Region merged_ext2 (db::Region *r, bool min_coherence, int min_wc) return r->merged (min_coherence, std::max (0, min_wc - 1)); } -static db::EdgePairs width2 (const db::Region *r, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, bool negative, db::PropertyConstraint prop_constraint) +static db::EdgePairs width2 (const db::Region *r, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, bool negative, db::PropertyConstraint prop_constraint, db::zero_distance_mode zero_distance_mode) { return r->width_check (d, db::RegionCheckOptions (whole_edges, metrics, @@ -537,11 +537,12 @@ static db::EdgePairs width2 (const db::Region *r, db::Region::distance_type d, b db::NoOppositeFilter, db::NoRectFilter, negative, - prop_constraint) + prop_constraint, + zero_distance_mode) ); } -static db::EdgePairs notch2 (const db::Region *r, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, bool negative, db::PropertyConstraint prop_constraint) +static db::EdgePairs notch2 (const db::Region *r, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, bool negative, db::PropertyConstraint prop_constraint, db::zero_distance_mode zero_distance_mode) { return r->notch_check (d, db::RegionCheckOptions (whole_edges, metrics, @@ -552,11 +553,12 @@ static db::EdgePairs notch2 (const db::Region *r, db::Region::distance_type d, b db::NoOppositeFilter, db::NoRectFilter, negative, - prop_constraint) + prop_constraint, + zero_distance_mode) ); } -static db::EdgePairs isolated2 (const db::Region *r, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint) +static db::EdgePairs isolated2 (const db::Region *r, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint, db::zero_distance_mode zero_distance_mode) { return r->isolated_check (d, db::RegionCheckOptions (whole_edges, metrics, @@ -567,11 +569,12 @@ static db::EdgePairs isolated2 (const db::Region *r, db::Region::distance_type d opposite, rect_filter, negative, - prop_constraint) + prop_constraint, + zero_distance_mode) ); } -static db::EdgePairs space2 (const db::Region *r, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint) +static db::EdgePairs space2 (const db::Region *r, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint, db::zero_distance_mode zero_distance_mode) { return r->space_check (d, db::RegionCheckOptions (whole_edges, metrics, @@ -582,11 +585,12 @@ static db::EdgePairs space2 (const db::Region *r, db::Region::distance_type d, b opposite, rect_filter, negative, - prop_constraint) + prop_constraint, + zero_distance_mode) ); } -static db::EdgePairs inside2 (const db::Region *r, const db::Region &other, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint) +static db::EdgePairs inside2 (const db::Region *r, const db::Region &other, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint, db::zero_distance_mode zero_distance_mode) { return r->inside_check (other, d, db::RegionCheckOptions (whole_edges, metrics, @@ -597,11 +601,12 @@ static db::EdgePairs inside2 (const db::Region *r, const db::Region &other, db:: opposite, rect_filter, negative, - prop_constraint) + prop_constraint, + zero_distance_mode) ); } -static db::EdgePairs overlap2 (const db::Region *r, const db::Region &other, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint) +static db::EdgePairs overlap2 (const db::Region *r, const db::Region &other, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint, db::zero_distance_mode zero_distance_mode) { return r->overlap_check (other, d, db::RegionCheckOptions (whole_edges, metrics, @@ -612,11 +617,12 @@ static db::EdgePairs overlap2 (const db::Region *r, const db::Region &other, db: opposite, rect_filter, negative, - prop_constraint) + prop_constraint, + zero_distance_mode) ); } -static db::EdgePairs enclosing2 (const db::Region *r, const db::Region &other, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint) +static db::EdgePairs enclosing2 (const db::Region *r, const db::Region &other, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint, db::zero_distance_mode zero_distance_mode) { return r->enclosing_check (other, d, db::RegionCheckOptions (whole_edges, metrics, @@ -627,11 +633,12 @@ static db::EdgePairs enclosing2 (const db::Region *r, const db::Region &other, d opposite, rect_filter, negative, - prop_constraint) + prop_constraint, + zero_distance_mode) ); } -static db::EdgePairs separation2 (const db::Region *r, const db::Region &other, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint) +static db::EdgePairs separation2 (const db::Region *r, const db::Region &other, db::Region::distance_type d, bool whole_edges, db::metrics_type metrics, const tl::Variant &ignore_angle, const tl::Variant &min_projection, const tl::Variant &max_projection, bool shielded, db::OppositeFilter opposite, db::RectFilter rect_filter, bool negative, db::PropertyConstraint prop_constraint, db::zero_distance_mode zero_distance_mode) { return r->separation_check (other, d, db::RegionCheckOptions (whole_edges, metrics, @@ -642,7 +649,8 @@ static db::EdgePairs separation2 (const db::Region *r, const db::Region &other, opposite, rect_filter, negative, - prop_constraint) + prop_constraint, + zero_distance_mode) ); } @@ -2589,7 +2597,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "\n" "This variant was introduced in version 0.27.\n" ) + - method_ext ("width_check", &width2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), + method_ext ("width_check", &width2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs a width check with options\n" "@param d The minimum width for which the polygons are checked\n" "@param whole_edges If true, deliver the whole edges\n" @@ -2600,6 +2608,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "@param shielded Enables shielding\n" "@param negative If true, edges not violation the condition will be output as pseudo-edge pairs\n" "@param property_constraint Only \\IgnoreProperties and \\NoPropertyConstraint are allowed - in the last case, properties are copied from the original shapes to the output. " + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "Other than 'width' allow more options here.\n" "\n" "This version is similar to the simple version with one parameter. In addition, it allows " @@ -2630,9 +2639,10 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "Merged semantics applies for the input of this method (see \\merged_semantics= for a description of this concept)\n" "\n" "The 'shielded' and 'negative' options have been introduced in version 0.27. " - "'property_constraint' has been added in version 0.28.4." + "'property_constraint' has been added in version 0.28.4.\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("space_check", &space2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), + method_ext ("space_check", &space2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs a space check with options\n" "@param d The minimum space for which the polygons are checked\n" "@param whole_edges If true, deliver the whole edges\n" @@ -2644,6 +2654,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "@param rect_filter Specifies an error filter for rectangular input shapes\n" "@param negative If true, edges not violation the condition will be output as pseudo-edge pairs\n" "@param property_constraint Specifies whether to consider only shapes with a certain property relation\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -2673,9 +2684,10 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "Merged semantics applies for the input of this method (see \\merged_semantics= for a description of this concept)\n" "\n" "The 'shielded', 'negative', 'not_opposite' and 'rect_sides' options have been introduced in version 0.27.\n" - "'property_constraint' has been added in version 0.28.4." + "'property_constraint' has been added in version 0.28.4.\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("notch_check", ¬ch2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), + method_ext ("notch_check", ¬ch2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs a space check between edges of the same polygon with options\n" "@param d The minimum space for which the polygons are checked\n" "@param whole_edges If true, deliver the whole edges\n" @@ -2687,6 +2699,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "@param negative If true, edges not violation the condition will be output as pseudo-edge pairs\n" "@param property_constraint Specifies whether to consider only shapes with a certain property relation\n" "@param property_constraint Only \\IgnoreProperties and \\NoPropertyConstraint are allowed - in the last case, properties are copied from the original shapes to the output" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "This version is similar to the simple version with one parameter. In addition, it allows " "to specify many more options.\n" @@ -2716,9 +2729,10 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "Merged semantics applies for the input of this method (see \\merged_semantics= for a description of this concept)\n" "\n" "The 'shielded' and 'negative' options have been introduced in version 0.27.\n" - "'property_constraint' has been added in version 0.28.4." + "'property_constraint' has been added in version 0.28.4.\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("isolated_check", &isolated2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), + method_ext ("isolated_check", &isolated2, gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs a space check between edges of different polygons with options\n" "@param d The minimum space for which the polygons are checked\n" "@param whole_edges If true, deliver the whole edges\n" @@ -2730,6 +2744,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "@param rect_filter Specifies an error filter for rectangular input shapes\n" "@param negative If true, edges not violation the condition will be output as pseudo-edge pairs\n" "@param property_constraint Specifies whether to consider only shapes with a certain property relation\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -2759,9 +2774,10 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "Merged semantics applies for the input of this method (see \\merged_semantics= for a description of this concept)\n" "\n" "The 'shielded', 'negative', 'not_opposite' and 'rect_sides' options have been introduced in version 0.27.\n" - "'property_constraint' has been added in version 0.28.4." + "'property_constraint' has been added in version 0.28.4.\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("inside_check|enclosed_check", &inside2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), + method_ext ("inside_check|enclosed_check", &inside2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs an inside check with options\n" "@param d The minimum distance for which the polygons are checked\n" "@param other The other region against which to check\n" @@ -2774,6 +2790,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "@param rect_filter Specifies an error filter for rectangular input shapes\n" "@param negative Negative output from the first input\n" "@param property_constraint Specifies whether to consider only shapes with a certain property relation\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -2810,9 +2827,10 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "The 'shielded', 'negative', 'not_opposite' and 'rect_sides' options have been introduced in version 0.27. " "The interpretation of the 'negative' flag has been restriced to first-layout only output in 0.27.1.\n" "The 'enclosed_check' alias was introduced in version 0.27.5.\n" - "'property_constraint' has been added in version 0.28.4." + "'property_constraint' has been added in version 0.28.4.\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("overlap_check", &overlap2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), + method_ext ("overlap_check", &overlap2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs an overlap check with options\n" "@param d The minimum overlap for which the polygons are checked\n" "@param other The other region against which to check\n" @@ -2825,6 +2843,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "@param rect_filter Specifies an error filter for rectangular input shapes\n" "@param negative Negative output from the first input\n" "@param property_constraint Specifies whether to consider only shapes with a certain property relation\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -2860,9 +2879,10 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "\n" "The 'shielded', 'negative', 'not_opposite' and 'rect_sides' options have been introduced in version 0.27. " "The interpretation of the 'negative' flag has been restriced to first-layout only output in 0.27.1.\n" - "'property_constraint' has been added in version 0.28.4." + "'property_constraint' has been added in version 0.28.4.\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("enclosing_check", &enclosing2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), + method_ext ("enclosing_check", &enclosing2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs an enclosing check with options\n" "@param d The minimum enclosing distance for which the polygons are checked\n" "@param other The other region against which to check\n" @@ -2875,6 +2895,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "@param rect_filter Specifies an error filter for rectangular input shapes\n" "@param negative Negative output from the first input\n" "@param property_constraint Specifies whether to consider only shapes with a certain property relation\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -2910,9 +2931,10 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "\n" "The 'shielded', 'negative', 'not_opposite' and 'rect_sides' options have been introduced in version 0.27. " "The interpretation of the 'negative' flag has been restriced to first-layout only output in 0.27.1.\n" - "'property_constraint' has been added in version 0.28.4." + "'property_constraint' has been added in version 0.28.4.\n" + "'zero_distance_mode' has been added in version 0.29." ) + - method_ext ("separation_check", &separation2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), + method_ext ("separation_check", &separation2, gsi::arg ("other"), gsi::arg ("d"), gsi::arg ("whole_edges", false), gsi::arg ("metrics", db::metrics_type::Euclidian, "Euclidian"), gsi::arg ("ignore_angle", tl::Variant (), "default"), gsi::arg ("min_projection", tl::Variant (), "0"), gsi::arg ("max_projection", tl::Variant (), "max"), gsi::arg ("shielded", true), gsi::arg ("opposite_filter", db::NoOppositeFilter, "NoOppositeFilter"), gsi::arg ("rect_filter", db::NoRectFilter, "NoRectFilter"), gsi::arg ("negative", false), gsi::arg ("property_constraint", db::IgnoreProperties, "IgnoreProperties"), gsi::arg ("zero_distance_mode", db::IncludeZeroDistanceWhenTouching, "IncludeZeroDistanceWhenTouching"), "@brief Performs a separation check with options\n" "@param d The minimum separation for which the polygons are checked\n" "@param other The other region against which to check\n" @@ -2925,6 +2947,7 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "@param rect_filter Specifies an error filter for rectangular input shapes\n" "@param negative Negative output from the first input\n" "@param property_constraint Specifies whether to consider only shapes with a certain property relation\n" + "@param zero_distance_mode Specifies how to handle edges with zero distance\n" "\n" "If \"whole_edges\" is true, the resulting \\EdgePairs collection will receive the whole " "edges which contribute in the width check.\n" @@ -2960,7 +2983,8 @@ Class decl_Region (decl_dbShapeCollection, "db", "Region", "\n" "The 'shielded', 'negative', 'not_opposite' and 'rect_sides' options have been introduced in version 0.27. " "The interpretation of the 'negative' flag has been restriced to first-layout only output in 0.27.1.\n" - "'property_constraint' has been added in version 0.28.4." + "'property_constraint' has been added in version 0.28.4.\n" + "'zero_distance_mode' has been added in version 0.29." ) + method_ext ("area", &area1, "@brief The area of the region\n" @@ -3239,6 +3263,46 @@ gsi::Enum decl_Metrics ("db", "Metrics", gsi::ClassExt inject_Metrics_in_Region (decl_Metrics.defs ()); gsi::ClassExt inject_Metrics_in_Edges (decl_Metrics.defs ()); +gsi::Enum decl_ZeroDistanceMode ("db", "ZeroDistanceMode", + gsi::enum_const ("NeverIncludeZeroDistance", db::NeverIncludeZeroDistance, + "@brief Specifies that check functions should never include edges with zero distance.\n" + "With this specification, the check functions will ignore edges which are collinear or touch." + ) + + gsi::enum_const ("AlwaysIncludeZeroDistance", db::AlwaysIncludeZeroDistance, + "@hide\n" + "@brief Specifies that check functions should always include edges with zero distance\n" + "This mode has little practical value.\n" + ) + + gsi::enum_const ("IncludeZeroDistanceWhenTouching", db::IncludeZeroDistanceWhenTouching, + "@brief Specifies that check functions should include edges when they touch\n" + "With this specification, the check functions will also check edges if they share at least one common point. " + "This is the mode that includes checking the 'kissing corner' cases. This mode is default for version 0.29 and later. " + ) + + gsi::enum_const ("IncludeZeroDistanceWhenCollinearAndTouching", db::IncludeZeroDistanceWhenCollinearAndTouching, + "@brief Specifies that check functions should include edges when they are collinear and touch\n" + "With this specification, the check functions will also check edges if they share at least one common point and are collinear. " + "This is the mode that includes checking the 'kissing corner' cases when the kissing edges are collinear. This mode was default up to version 0.28. " + ) + + gsi::enum_const ("IncludeZeroDistanceWhenOverlapping", db::IncludeZeroDistanceWhenOverlapping, + "@brief Specifies that check functions should include edges when they overlap\n" + "With this specification, the check functions will also check edges which are collinear and share more than a single point. " + "This is the mode that excludes the 'kissing corner' cases." + ), + "@brief This class represents the zero_distance_mode type for \\Region#width and related checks.\n" + "This mode determines how edges with zero distance are treated in the DRC checks. Formally these edges do neither represent " + "a space other other relation as they do not face each other. There are three modes available to treat this boundary case: " + "Ignore such edges (\\NeverIncludeZeroDistance) or only include them " + "if they share at least one common point (\\IncludeZeroDistanceWhenTouching). The latter mode allows activating checks for " + "the 'kissing corner' case and is the default mode in most checks." + "\n" + "This enum has been introduced in version 0.29." +); + +// Inject the Region::ZeroDistanceMode declarations into Region and Edges: +// (Edges injection has to be done here because only here defs() is available) +gsi::ClassExt inject_ZeroDistanceMode_in_Region (decl_ZeroDistanceMode.defs ()); +gsi::ClassExt inject_ZeroDistanceMode_in_Edges (decl_ZeroDistanceMode.defs ()); + gsi::Enum decl_PropertyConstraint ("db", "PropertyConstraint", gsi::enum_const ("IgnoreProperties", db::IgnoreProperties, "@brief Specifies to ignore properties\n" diff --git a/src/db/unit_tests/dbEdgePairRelationsTests.cc b/src/db/unit_tests/dbEdgePairRelationsTests.cc index c0b3f918f..4b3d7f8c0 100644 --- a/src/db/unit_tests/dbEdgePairRelationsTests.cc +++ b/src/db/unit_tests/dbEdgePairRelationsTests.cc @@ -51,139 +51,139 @@ TEST(1) TEST(2) { db::Edge output; - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 10), db::Point (100, 200)), &output), false); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (100, 200)), &output), false); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 50), db::Point (100, 50)), &output), false); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (100, -50)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 10), db::Point (100, 200)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (100, 200)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 50), db::Point (100, 50)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (100, -50)), &output), true); EXPECT_EQ (output.to_string (), "(0,-50;100,-50)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (300, -50)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (300, -50)), &output), true); EXPECT_EQ (output.to_string (), "(0,-50;187,-50)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (300, -50)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (300, -50)), &output), true); EXPECT_EQ (output.to_string (), "(100,-50;187,-50)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (300, -50)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (300, -50)), &output), true); EXPECT_EQ (output.to_string (), "(-87,-50;187,-50)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (0, -50)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (0, -50)), &output), true); EXPECT_EQ (output.to_string (), "(-87,-50;0,-50)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -100), db::Point (300, -100)), &output), false); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, 0), db::Point (300, -100)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -100), db::Point (300, -100)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, 0), db::Point (300, -100)), &output), true); EXPECT_EQ (output.to_string (), "(-94,-34;164,-77)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 0), db::Point (100, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 0), db::Point (100, -200)), &output), true); EXPECT_EQ (output.to_string (), "(0,0;50,-100)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (40, 0), db::Point (140, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (40, 0), db::Point (140, -200)), &output), true); EXPECT_EQ (output.to_string (), "(40,0;90,-100)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 0), db::Point (200, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 0), db::Point (200, -200)), &output), true); EXPECT_EQ (output.to_string (), "(100,0;145,-89)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -200), db::Point (200, -200)), &output), false); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (200, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -200), db::Point (200, -200)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (200, -200)), &output), true); EXPECT_EQ (output.to_string (), "(100,0;145,-89)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (120, 200), db::Point (120, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (120, 200), db::Point (120, -200)), &output), true); EXPECT_EQ (output.to_string (), "(120,0;120,-98)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 200), db::Point (100, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 200), db::Point (100, -200)), &output), true); EXPECT_EQ (output.to_string (), "(100,0;100,-100)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 200), db::Point (80, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 200), db::Point (80, -200)), &output), true); EXPECT_EQ (output.to_string (), "(80,0;80,-100)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-80, 200), db::Point (-80, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-80, 200), db::Point (-80, -200)), &output), true); EXPECT_EQ (output.to_string (), "(-80,0;-80,-60)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 0), db::Point (-200, -200)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 0), db::Point (-200, -200)), &output), true); EXPECT_EQ (output.to_string (), "(80,0;-45,-89)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 50), db::Point (100, 50)), &output), false); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (100, -50)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 50), db::Point (100, 50)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (100, -50)), &output), true); EXPECT_EQ (output.to_string (), "(100,-50;100,-50)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (50, -50), db::Point (50, -50)), &output), true); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (50, -50), db::Point (50, -50)), &output), true); EXPECT_EQ (output.to_string (), "(50,-50;50,-50)"); - EXPECT_EQ (euclidian_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (190, -50), db::Point (190, -50)), &output), false); + EXPECT_EQ (euclidian_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (190, -50), db::Point (190, -50)), &output), false); } TEST(3) { db::Edge output; - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (100, 200)), &output), false); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 50), db::Point (100, 50)), &output), false); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (100, -50)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (100, 200)), &output), false); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 50), db::Point (100, 50)), &output), false); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (100, -50)), &output), true); EXPECT_EQ (output.to_string (), "(0,-50;100,-50)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (300, -50)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (300, -50)), &output), true); EXPECT_EQ (output.to_string (), "(0,-50;200,-50)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (300, -50)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (300, -50)), &output), true); EXPECT_EQ (output.to_string (), "(100,-50;200,-50)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (300, -50)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (300, -50)), &output), true); EXPECT_EQ (output.to_string (), "(-100,-50;200,-50)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (0, -50)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (0, -50)), &output), true); EXPECT_EQ (output.to_string (), "(-100,-50;0,-50)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -100), db::Point (300, -100)), &output), false); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, 0), db::Point (300, -100)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -100), db::Point (300, -100)), &output), false); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, 0), db::Point (300, -100)), &output), true); EXPECT_EQ (output.to_string (), "(-100,-33;200,-83)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 0), db::Point (100, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 0), db::Point (100, -200)), &output), true); EXPECT_EQ (output.to_string (), "(0,0;50,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (40, 0), db::Point (140, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (40, 0), db::Point (140, -200)), &output), true); EXPECT_EQ (output.to_string (), "(40,0;90,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 0), db::Point (200, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 0), db::Point (200, -200)), &output), true); EXPECT_EQ (output.to_string (), "(100,0;150,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -200), db::Point (200, -200)), &output), false); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (200, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -200), db::Point (200, -200)), &output), false); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (200, -200)), &output), true); EXPECT_EQ (output.to_string (), "(100,0;150,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (120, 200), db::Point (120, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (120, 200), db::Point (120, -200)), &output), true); EXPECT_EQ (output.to_string (), "(120,0;120,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 200), db::Point (100, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 200), db::Point (100, -200)), &output), true); EXPECT_EQ (output.to_string (), "(100,0;100,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 200), db::Point (80, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 200), db::Point (80, -200)), &output), true); EXPECT_EQ (output.to_string (), "(80,0;80,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-80, 200), db::Point (-80, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-80, 200), db::Point (-80, -200)), &output), true); EXPECT_EQ (output.to_string (), "(-80,0;-80,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 0), db::Point (-200, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 0), db::Point (-200, -200)), &output), true); EXPECT_EQ (output.to_string (), "(80,0;-60,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), true); EXPECT_EQ (output.to_string (), "(-100,0;-100,-100)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 50), db::Point (100, 50)), &output), false); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (100, -50)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 50), db::Point (100, 50)), &output), false); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (100, -50)), &output), true); EXPECT_EQ (output.to_string (), "(100,-50;100,-50)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (50, -50), db::Point (50, -50)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (50, -50), db::Point (50, -50)), &output), true); EXPECT_EQ (output.to_string (), "(50,-50;50,-50)"); - EXPECT_EQ (square_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (190, -50), db::Point (190, -50)), &output), true); + EXPECT_EQ (square_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (190, -50), db::Point (190, -50)), &output), true); EXPECT_EQ (output.to_string (), "(190,-50;190,-50)"); } TEST(4) { db::Edge output; - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (100, 200)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 50), db::Point (100, 50)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (100, -50)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (100, 200)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 50), db::Point (100, 50)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (100, -50)), &output), true); EXPECT_EQ (output.to_string (), "(0,-50;100,-50)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (300, -50)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -50), db::Point (300, -50)), &output), true); EXPECT_EQ (output.to_string (), "(0,-50;100,-50)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (300, -50)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (300, -50)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (300, -50)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (300, -50)), &output), true); EXPECT_EQ (output.to_string (), "(0,-50;100,-50)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (0, -50)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -100), db::Point (300, -100)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, 0), db::Point (300, -100)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -50), db::Point (0, -50)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, -100), db::Point (300, -100)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-300, 0), db::Point (300, -100)), &output), true); EXPECT_EQ (output.to_string (), "(0,-50;100,-67)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 0), db::Point (100, -200)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 0), db::Point (100, -200)), &output), true); EXPECT_EQ (output.to_string (), "(0,0;50,-100)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (40, 0), db::Point (140, -200)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (40, 0), db::Point (140, -200)), &output), true); EXPECT_EQ (output.to_string (), "(40,0;90,-100)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 0), db::Point (200, -200)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -200), db::Point (200, -200)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (200, -200)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (120, 200), db::Point (120, -200)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 200), db::Point (100, -200)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 0), db::Point (200, -200)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, -200), db::Point (200, -200)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (0, 200), db::Point (200, -200)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (120, 200), db::Point (120, -200)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 200), db::Point (100, -200)), &output), true); EXPECT_EQ (output.to_string (), "(100,0;100,-100)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 200), db::Point (80, -200)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 200), db::Point (80, -200)), &output), true); EXPECT_EQ (output.to_string (), "(80,0;80,-100)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-80, 200), db::Point (-80, -200)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 0), db::Point (-200, -200)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-80, 200), db::Point (-80, -200)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (80, 0), db::Point (-200, -200)), &output), true); EXPECT_EQ (output.to_string (), "(80,0;0,-57)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 50), db::Point (100, 50)), &output), false); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (100, -50)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (), db::Edge (db::Point (-100, 200), db::Point (-100, -200)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, 50), db::Point (100, 50)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (100, -50), db::Point (100, -50)), &output), true); EXPECT_EQ (output.to_string (), "(100,-50;100,-50)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (50, -50), db::Point (50, -50)), &output), true); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (50, -50), db::Point (50, -50)), &output), true); EXPECT_EQ (output.to_string (), "(50,-50;50,-50)"); - EXPECT_EQ (projected_near_part_of_edge (true, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (190, -50), db::Point (190, -50)), &output), false); + EXPECT_EQ (projected_near_part_of_edge (db::AlwaysIncludeZeroDistance, 100, db::Edge (db::Point (0, 0), db::Point (100, 0)), db::Edge (db::Point (190, -50), db::Point (190, -50)), &output), false); } TEST(5) @@ -291,7 +291,7 @@ TEST(7) EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(1,30;1,20)"); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (-1, 30), db::Point (-1, 20)), &output); EXPECT_EQ (res, false); - f.set_include_zero (false); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (0, 30), db::Point (0, 20)), &output); EXPECT_EQ (res, false); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (1, 30), db::Point (1, 20)), &output); @@ -300,7 +300,7 @@ TEST(7) res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (-1, 30), db::Point (-1, 20)), &output); EXPECT_EQ (res, false); - f.set_include_zero (true); + f.set_zero_distance_mode (db::AlwaysIncludeZeroDistance); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (0, 300), db::Point (0, -200)), &output); EXPECT_EQ (res, true); EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(0,110;0,-100)"); @@ -309,7 +309,7 @@ TEST(7) EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(1,110;1,-100)"); f.set_metrics (db::Square); - f.set_include_zero (true); + f.set_zero_distance_mode (db::AlwaysIncludeZeroDistance); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (0, 30), db::Point (0, 20)), &output); EXPECT_EQ (res, true); EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(0,30;0,20)"); @@ -318,7 +318,7 @@ TEST(7) EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(1,30;1,20)"); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (-1, 30), db::Point (-1, 20)), &output); EXPECT_EQ (res, false); - f.set_include_zero (false); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (0, 30), db::Point (0, 20)), &output); EXPECT_EQ (res, false); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (1, 30), db::Point (1, 20)), &output); @@ -327,7 +327,7 @@ TEST(7) res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (-1, 30), db::Point (-1, 20)), &output); EXPECT_EQ (res, false); - f.set_include_zero (true); + f.set_zero_distance_mode (db::AlwaysIncludeZeroDistance); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (0, 300), db::Point (0, -200)), &output); EXPECT_EQ (res, true); EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(0,110;0,-100)"); @@ -336,7 +336,7 @@ TEST(7) EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(1,110;1,-100)"); f.set_metrics (db::Projection); - f.set_include_zero (true); + f.set_zero_distance_mode (db::AlwaysIncludeZeroDistance); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (0, 30), db::Point (0, -20)), &output); EXPECT_EQ (res, true); EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(0,10;0,0)"); @@ -345,7 +345,7 @@ TEST(7) EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(1,10;1,0)"); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (-1, 30), db::Point (-1, -20)), &output); EXPECT_EQ (res, false); - f.set_include_zero (false); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (0, 30), db::Point (0, 11)), &output); EXPECT_EQ (res, false); res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 10)), db::Edge (db::Point (1, 30), db::Point (1, -20)), &output); @@ -361,7 +361,7 @@ TEST(8_KissingCornerProblem) // if the projection is >0. db::EdgeRelationFilter f (db::WidthRelation, 10); - f.set_include_zero (false); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); db::EdgePair output; bool res; @@ -382,8 +382,39 @@ TEST(8_KissingCornerProblem) res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, -1), db::Point (0, -100)), &output); EXPECT_EQ (res, false); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenOverlapping); + + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 201), db::Point (0, 101)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 0), db::Point (1, 100)), db::Edge (db::Point (0, 201), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 50)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,40;0,100):(0,110;0,50)"); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 0), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, -1), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + + f.set_zero_distance_mode (db::NeverIncludeZeroDistance); + + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 201), db::Point (0, 101)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 0), db::Point (1, 100)), db::Edge (db::Point (0, 201), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 50)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 0), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, -1), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + f = db::EdgeRelationFilter (db::SpaceRelation, 10); - f.set_include_zero (false); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); f.set_metrics (db::Euclidian); res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 101), db::Point (0, 201)), &output); @@ -401,4 +432,188 @@ TEST(8_KissingCornerProblem) EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,10;0,0):(0,-10;0,0)"); res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, -1)), &output); EXPECT_EQ (res, false); + + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenOverlapping); + + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 101), db::Point (0, 201)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 100), db::Point (1, 0)), db::Edge (db::Point (0, 0), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 100), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 50), db::Point (0, 200)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,100;0,40):(0,50;0,110)"); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, -1)), &output); + EXPECT_EQ (res, false); + + f.set_zero_distance_mode (db::NeverIncludeZeroDistance); + + f.set_metrics (db::Euclidian); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 101), db::Point (0, 201)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 100), db::Point (1, 0)), db::Edge (db::Point (0, 0), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 100), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 50), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, -1)), &output); + EXPECT_EQ (res, false); +} + +TEST(9_KissingCornerProblemSquareMetrics) +{ + // The kissing corner problem is solved by allowing distance-0 width and space relations and checking them + // if the projection is >0. + + db::EdgeRelationFilter f (db::WidthRelation, 10); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); + db::EdgePair output; + bool res; + + f.set_metrics (db::Square); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 201), db::Point (0, 101)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 0), db::Point (1, 100)), db::Edge (db::Point (0, 201), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 100)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,90;0,100):(0,110;0,100)"); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 50)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,40;0,100):(0,110;0,50)"); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 0), db::Point (0, -100)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,0;0,10):(0,0;0,-10)"); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, -1), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + + f.set_zero_distance_mode (db::NeverIncludeZeroDistance); + + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 201), db::Point (0, 101)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 0), db::Point (1, 100)), db::Edge (db::Point (0, 201), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 50)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 0), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, -1), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + + f = db::EdgeRelationFilter (db::SpaceRelation, 10); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); + + f.set_metrics (db::Square); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 101), db::Point (0, 201)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 100), db::Point (1, 0)), db::Edge (db::Point (0, 0), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 100), db::Point (0, 200)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,100;0,90):(0,100;0,110)"); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 50), db::Point (0, 200)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,100;0,40):(0,50;0,110)"); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, 0)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,10;0,0):(0,-10;0,0)"); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, -1)), &output); + EXPECT_EQ (res, false); + + f.set_zero_distance_mode (db::NeverIncludeZeroDistance); + + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 101), db::Point (0, 201)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 100), db::Point (1, 0)), db::Edge (db::Point (0, 0), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 100), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 50), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, -1)), &output); + EXPECT_EQ (res, false); +} + +TEST(10_KissingCornerProblemProjectionMetrics) +{ + // The kissing corner problem is solved by allowing distance-0 width and space relations and checking them + // if the projection is >0. It is not effective in projection metrics as there is no overlap. + + db::EdgeRelationFilter f (db::WidthRelation, 10); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); + db::EdgePair output; + bool res; + + f.set_metrics (db::Projection); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 201), db::Point (0, 101)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 0), db::Point (1, 100)), db::Edge (db::Point (0, 201), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 50)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,50;0,100):(0,100;0,50)"); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 0), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, -1), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + + f.set_zero_distance_mode (db::NeverIncludeZeroDistance); + + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 201), db::Point (0, 101)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 0), db::Point (1, 100)), db::Edge (db::Point (0, 201), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 200), db::Point (0, 50)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, 0), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 0), db::Point (0, 100)), db::Edge (db::Point (0, -1), db::Point (0, -100)), &output); + EXPECT_EQ (res, false); + + f = db::EdgeRelationFilter (db::SpaceRelation, 10); + f.set_zero_distance_mode (db::IncludeZeroDistanceWhenTouching); + + f.set_metrics (db::Projection); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 101), db::Point (0, 201)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 100), db::Point (1, 0)), db::Edge (db::Point (0, 0), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 100), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 50), db::Point (0, 200)), &output); + EXPECT_EQ (res, true); + EXPECT_EQ (output.first ().to_string () + ":" + output.second ().to_string (), "(0,100;0,50):(0,50;0,100)"); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, -1)), &output); + EXPECT_EQ (res, false); + + f.set_zero_distance_mode (db::NeverIncludeZeroDistance); + + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 101), db::Point (0, 201)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (1, 100), db::Point (1, 0)), db::Edge (db::Point (0, 0), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 100), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, 50), db::Point (0, 200)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, 0)), &output); + EXPECT_EQ (res, false); + res = f.check (db::Edge (db::Point (0, 100), db::Point (0, 0)), db::Edge (db::Point (0, -100), db::Point (0, -1)), &output); + EXPECT_EQ (res, false); } diff --git a/src/doc/doc/about/drc_ref_layer.xml b/src/doc/doc/about/drc_ref_layer.xml index 2e5e6b2b9..c8f124c5c 100644 --- a/src/doc/doc/about/drc_ref_layer.xml +++ b/src/doc/doc/about/drc_ref_layer.xml @@ -2894,7 +2894,45 @@ The following image shows the effect of the separation check (input1: red, input

-

opposite and rectangle error filtering

+

Touching shapes

+

+Like width and space, the separation check also supports the "without_touching_corners" option. +

+This option will turn off errors that arise due to +edges touching in one corner (the "kissing corners" configuration). +By default, such edges will yield an error, as they +form a zero-distance situation. With this option in place, no errors will be reported. +

+The following images illustrate the effect of the "without_touching_corners" option. +The white line at the top of the bottom red shape is actually an edge pair indicating +the zero-distance violation of the separation check: +

+ + + + + +
+

+Another option is "without_touching_edges" which turns off errors that arise +at coincident edges. Formally such edges represent a zero-distance situation, hence +are flagged by default. Turning off the check in this case can be helpful when +separating a layer into two parts (e.g. thin/wide metal separation) and an error +between touching regions is not desired. +

+The "without_touching_edges" option is a stronger version of "without_touching_corners" and +makes sense only for two-layer checks. +

+The following images illustrate the effect of the "without_touching_edges" option: +

+ + + + + +
+

+

Opposite and rectangle error filtering

The options for the separation check are those available for the width or space method plus opposite and rectangle error filtering. @@ -3405,10 +3443,15 @@ each other is more or equal than min and less than max but is more intuitive, as "projecting" is written with a condition, like "projecting < 2.um". Available operators are: "==", "<", "<=", ">" and ">=". Double-bounded ranges are also available, like: "0.5 <= projecting < 2.0". -

  • transparent : performs the check without shielding (polygon layers only)
  • -
  • shielded : performs the check with shielding (polygon layers only)
  • +
  • without_touching_corners : With this option present, touching corners (aka "kissing +corners") will not yield errors. The default is to produce errors in these cases.
  • +
  • without_touching_edges : With this option present, coincident edges will not yield errors. +This is a stronger version of "without_touching_corners" and makes sense only for two-layer checks +or raw-mode input layers. It is listed here for completeness.
  • +
  • transparent : Performs the check without shielding (polygon layers only)
  • +
  • shielded : Performs the check with shielding (polygon layers only)
  • props_eq , props_ne , props_copy : (only props_copy applies to width check) - -see "Properties constraints" below.
  • +See "Properties constraints" below.

    Note that without the angle_limit, acute corners will always be reported, since two @@ -3509,6 +3552,22 @@ shape's properties to the output too: space_not_connected = metal1_nets.space(0.4.um, props_ne + props_copy) space_connected = metal1_nets.space(0.4.um, props_eq + props_copy) +

    +

    Touching shapes

    +

    +The "without_touching_corners" option will turn off errors that arise due to +the "kissing corner" configuration (or "checkerboard pattern"). Formally +this is a width violation across the diagonal, but when considering this +configuration as disconnected boxes, no error should be reported. +

    +The following images illustrate the effect of the "without_touching_corners" option: +

    + + + + + +

    "with_angle" - Selects edges by their angle

    diff --git a/src/doc/doc/images/drc_separation12.png b/src/doc/doc/images/drc_separation12.png new file mode 100644 index 0000000000000000000000000000000000000000..70847f7910710720edaf95a43c2d4ab03337efc3 GIT binary patch literal 5998 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 literal 0 HcmV?d00001 diff --git a/src/doc/doc/images/drc_separation13.png b/src/doc/doc/images/drc_separation13.png new file mode 100644 index 0000000000000000000000000000000000000000..00de3a91ca65a755b2a59805afbb52b299e4c448 GIT binary patch literal 6282 zcmc&&c~nzZw-2I4vBHO1u_}WQ#X2!)l@Lg(pb%7`h@v8sAgMDNLO>t^6%p$vlNJJm zXhkVwP*jLuLWK&Hn5Za22_OoI2m}Z+1jx;IZW1PkwcdMcz4!jex>@(!bN1QOZ~yj= zc5<+tr@llTfk4c|+1WTF5Go(x-|QLSjm>?#Ch(Z!Z?~U-KxmZ1Kb7liG?v0I1Geo8 zus(eJxGBQL(aH9Bn+15O55IIi>=S@kwa#q)k0$18!NbJF3~j!CBg$;8`Fa$}{D+_| zR<;O)_9)I~i%U>ychk>-Z}-LKy?A%P%EYfW7%!lEtJsC*kuPth* zow^3uPk{u4SD`~jO|2Fbjnwinh)2%%@r}1RbY*9}-Ibs1;X5M`IX4T2^l%1GZIC$R z(@JD?`C=+EZt<;aGv%xMtnoeAc$+KHc3?{!Zho|>8P33T`ww&A)ur!`Yi^6bWU4js zekC|#)e05)*4pO{qcL9=TXKg@k)70OZO9{68y9J?kG7uGB{opTSXW2>ZH%AA0_U#V zY1TiID}LF0SD$@)hjj6~VoxKwF0c1=Tsxzh0sRuD{Z5Rl`}gVK2a;Km$J>$)29vN% zcDLd7n{3-fz7#>q0VHoF51nZ_zpHj&%(7pS-8Uv+i6oJ0^r}qvcAV%$xQ6C+H8wT| z_jPx7i=T&viQ5x8Ju%ho+Uu)=zaO{ zG3q#-AwO2d6CqRHd0ufFrlf5b94$Y-4r=_Y`TeN1y1` zd7t6#A>}l_u5La}r;upWDAzT`{VlaBCwrTWUp_IeU-5nI-;(>pASfkKjq*FD;y5Ga2>mc?Mi9b?Z)1H$4_qGUGv ztq$9y>XhsX@#HIq_)8VqZFlI!J!CSPvBRipWD#UV8ep%)7A@~>O618NoUXbq)XOW< z=!6^&1U*n2GF|Bz1aZS~Y3-B~o>Fr0(E-cq^HxFZFnlikS2uRciiW(j0tvdHqWg%O z08MJy7i0OCj#X#jsl+|C-q5_!11(S5iCnDs5hs5v7>nh*4gb(`sy@p&2l}nOPw3va zqxLbRa&{;N!gnHeCpP(4ksE}rVQH2>ICxY`9C?YBJ#ERZbke~tq6enKywg@#XPi@Z z_*Dx3ewxsme9Mr>5OVZuNXw0kTJCb^(%avSxzR}iOv#7Z(G$=p4J#`i+i|A(tn>kw z;=c5x<}OiI<@VQyucQomi2MiCJM*3zF4x1|dz+F|*$on)_Hy6wv1Za!nx|hG4fnfFjBk>WX-&izS#~}~xv>C@CIjGp<6x#e4 zFbEmq%9AdQW>1(PYf{3RwYC5D+X@8%jjA~uY3l%KST&XF8BpZf5 zbRXX}!non$Y;`6~qw^?1miLamwdoZ4&1`k)#yxfX2*cq~Ax|Lx-?}M-QxXPaVW@40 zpEPvKCQi)}Q5<^GvX{yHt4?b5^cD0KEEjiz+EuTY)y`po36BIC%l;IL1`UYMbWYa5 z*cV;?p2MU&WNfAMY#gf8nFP;mk>unoQZl+!%3(TwNJjh5q@jlF+zC;Q0S}`L0Ki%h zL-epkXpdzuMsLMRd++L} z2s=KJDBv3nI1to|=%^taeCZn-gt`pXu4vRyq>*YJ5jMMAtgCk0bs^tyx>#6H?D)p# zj=L2ag4mL4NLhagHKaMsM6g;kfrdYpAe!5W2sy+JYpp_ryrdFhUj0Za+6C7Xls}beFt(A?M%PAS7GR)TQ9;X_|dEawMzyhzK#XL5RsbCMwkm5bzC&&uH3a4Gk!Y zIpG%xm1l{3-PY=hekINef0}S@U>|H_b?L{lwtil&I3PKsO=F_mUN8VIKbyf+o%%v7C2wdbF_%J` zQJQwJ`)~@WeqLuXnt!K&w-h+^bVIeePGA}Exb0NG9H{@tBSRjNZuboPoaO%1!`it3 zyovGH+nK(!cG9yxcW72j;M+#Qr^z12Z65co0$v3C0)i-ClQxk>U-Yha+PC>e0={;w z%3!%N2%k?+*;_T<*hRkmmNbDb(^_f#RV!{*g0Gc%bdsxMeuJAD0z$a#gdFSR7K03^ zo)z5pSu{-*2 z5(~eA77A!$`$aY7!+AETV#unmp;Dv*QUFxS0frcE)xlxf0^|nn9KWaR;J*kWy=j2G z%_2nM%yE24BJjA(GDgbOf__x&&w4=XIq&(nvOU9R~j(ba+d!E znQ%nt1HbTQ)+c-(7**$vr{M`-D;{#0TMEif?yKVm>zr~^ds8?j&5o1)Ubq>HPL~$` zy~iR%22&s3Z4+5kYxlOP!aG<9WtR}t7E@$n5>VVpQG{}>_MJ-(`KudHC#!)~4)ci925V1p*^`Yxg*Q-E);*nsVHWynrL?KiXQKtj#M zdeWE>3GYERwmm!R_CM~cgT8@JS=b>rO*jQeliSD+f6EAN|3HRwAV~a(QvUIC#VS+L zr7G^5%3av3%sgiQR=H0A#S`!yJ!N4vVRd~GA5O_B-EE{vMn7w`?-5CakimDq0S;ab zSKOCMs%j=AGxgn`F>O7PC#sd#RTL>))$9{H3M0qK;>UL0tcFmomH6cZm6$<*Z5Rvh zyUbyJYDiaY-voe0I~Gi|vy)zuE3<7xth|+?g$1`_={It}b}PVJJafxbh%k98Pcji= zv?fZ^sud9^*!feA)pLMUAoGlOP0&3P5GF9dO*%L*Q`xHfa-}|7)Cr<# zky8`gA`NOnlfo(T@BwA|I*3fn&cHzK)Odg%4t;QSmy)&vx?GZwrk5O0&$I5YV_V+u zZP`roloeZpKnaQ36nZo>Fit(~&uN!{Dd=svi;IWjU=}|jmI!|*c~)Q#jm(4da9T`$ zeAn2l1E`3H9UefdB8pzmYViG(lMQBdopI~ zz{E3j@E$ir=%?f5h&j7IHvxvU2*ac!c*cJCkFxG5Z~M&dbImYo;77X#0V0~c2!hc)9aX_A9~V;sC8Hw%a3&w@@|WDaqc$#j%_g9 z9NY--pj0b~KnJk=X7;2`@1v2XLRK%w=vTh()aI6D0^a(DTY<%V4fs+D;!6!2Oa_ce zktXvy^6A-kgVXE)W&U(CCes!)U)CHZTn0fdKG_g)A8syjAeufLEfE8d{mg)opy-<_ z+l29(CIbeius+=Ffk@>-o;w-^(V+K&=L8c3sdX+vB;ZE?2xIl`47UPbk^pxAzJ?hG zjCe~jugXF{H@VROV6j1SMa?bM0)9eI>PaO4K#$~N2>&E(`y}KhIz@Tk2)2z9 z^>gJ71(iV0xd2i*NYR!iVd<<-); zd%|6B0IKl(MRJI*&!-c(i<&N2;vnA;7p_f;)pS9#{lL^dr~fJHYa?+){zWce#Q&p# iobjo9Cn%qLZbZh`l)W$gb9O!)$+&F}HhEjU&ix1P=Fx8e literal 0 HcmV?d00001 diff --git a/src/doc/doc/images/drc_separation14.png b/src/doc/doc/images/drc_separation14.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a4cca311146e28c115b818341b865c3acf0847 GIT binary patch literal 6284 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 literal 0 HcmV?d00001 diff --git a/src/doc/doc/images/drc_width5.png b/src/doc/doc/images/drc_width5.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb7818143cf99f030f51f3c8fc310d9aa26f4ae GIT binary patch literal 6312 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 literal 0 HcmV?d00001 diff --git a/src/doc/docDRCLVSResources.qrc b/src/doc/docDRCLVSResources.qrc index e91766fe5..e4449b7ed 100644 --- a/src/doc/docDRCLVSResources.qrc +++ b/src/doc/docDRCLVSResources.qrc @@ -4,6 +4,8 @@ doc/images/drc_width2.png doc/images/drc_width3.png doc/images/drc_width4.png + doc/images/drc_width5.png + doc/images/drc_width6.png doc/images/drc_width1u.png doc/images/drc_width2u.png doc/images/drc_width3u.png @@ -29,6 +31,9 @@ doc/images/drc_separation9.png doc/images/drc_separation10.png doc/images/drc_separation11.png + doc/images/drc_separation12.png + doc/images/drc_separation13.png + doc/images/drc_separation14.png doc/images/drc_raw1.png doc/images/drc_raw2.png doc/images/drc_raw3.png diff --git a/src/drc/drc/built-in-macros/_drc_cop_integration.rb b/src/drc/drc/built-in-macros/_drc_cop_integration.rb index 8eebae6fb..40b93cbfe 100644 --- a/src/drc/drc/built-in-macros/_drc_cop_integration.rb +++ b/src/drc/drc/built-in-macros/_drc_cop_integration.rb @@ -1485,6 +1485,7 @@ CODE shielded = nil opposite_filter = RBA::Region::NoOppositeFilter rect_filter = RBA::Region::NoRectFilter + zd_mode = RBA::Region::IncludeZeroDistanceWhenTouching n = 1 args.each do |a| @@ -1492,6 +1493,10 @@ CODE metrics = a.value elsif a.is_a?(DRCWholeEdges) whole_edges = a.value + elsif a.is_a?(DRCPropertiesConstraint) + prop_constraint = a.value + elsif a.is_a?(DRCZeroDistanceMode) + zd_mode = a.value elsif a.is_a?(DRCOppositeErrorFilter) opposite_filter = a.value elsif a.is_a?(DRCRectangleErrorFilter) @@ -1523,6 +1528,8 @@ CODE elsif rect_filter != RBA::Region::NoRectFilter raise("A rectangle error filter cannot be used with this check") end + + args << zd_mode if :#{f} == :width || :#{f} == :space || :#{f} == :notch || :#{f} == :isolated other && raise("No other layer must be specified for a single-layer check") diff --git a/src/drc/drc/built-in-macros/_drc_engine.rb b/src/drc/drc/built-in-macros/_drc_engine.rb index 6cb79e63f..14eb0c842 100644 --- a/src/drc/drc/built-in-macros/_drc_engine.rb +++ b/src/drc/drc/built-in-macros/_drc_engine.rb @@ -322,6 +322,18 @@ module DRC end end + def without_touching_corners(f = true) + self._context("without_touching_corners") do + DRCZeroDistanceMode::new(f ? RBA::Region::IncludeZeroDistanceWhenOverlapping : RBA::Region::IncludeZeroDistanceWhenTouching) + end + end + + def without_touching_edges(f = true) + self._context("without_touching_edges") do + DRCZeroDistanceMode::new(f ? RBA::Region::NeverIncludeZeroDistance : RBA::Region::IncludeZeroDistanceWhenTouching) + end + end + def euclidian DRCMetrics::new(RBA::Region::Euclidian) end diff --git a/src/drc/drc/built-in-macros/_drc_layer.rb b/src/drc/drc/built-in-macros/_drc_layer.rb index ee4ef6803..ffa80b943 100644 --- a/src/drc/drc/built-in-macros/_drc_layer.rb +++ b/src/drc/drc/built-in-macros/_drc_layer.rb @@ -3687,10 +3687,15 @@ CODE # but is more intuitive, as "projecting" is written with a condition, like # "projecting < 2.um". Available operators are: "==", "<", "<=", ">" and ">=". # Double-bounded ranges are also available, like: "0.5 <= projecting < 2.0". @/li - # @li @b transparent @/b: performs the check without shielding (polygon layers only) @/li - # @li @b shielded @/b: performs the check with shielding (polygon layers only) @/li + # @li @b without_touching_corners @/b: With this option present, touching corners (aka "kissing + # corners") will not yield errors. The default is to produce errors in these cases. @/li + # @li @b without_touching_edges @/b: With this option present, coincident edges will not yield errors. + # This is a stronger version of "without_touching_corners" and makes sense only for two-layer checks + # or raw-mode input layers. It is listed here for completeness. @/li + # @li @b transparent @/b: Performs the check without shielding (polygon layers only) @/li + # @li @b shielded @/b: Performs the check with shielding (polygon layers only) @/li # @li @b props_eq @/b, @b props_ne @/b, @b props_copy @/b: (only props_copy applies to width check) - - # see "Properties constraints" below. @/li + # See "Properties constraints" below. @/li # @/ul # # Note that without the angle_limit, acute corners will always be reported, since two @@ -3792,6 +3797,21 @@ CODE # space_connected = metal1_nets.space(0.4.um, props_eq + props_copy) # @/code # + # @h3 Touching shapes @/h3 + # + # The "without_touching_corners" option will turn off errors that arise due to + # the "kissing corner" configuration (or "checkerboard pattern"). Formally + # this is a width violation across the diagonal, but when considering this + # configuration as disconnected boxes, no error should be reported. + # + # The following images illustrate the effect of the "without_touching_corners" option: + # + # @table + # @tr + # @td @img(/images/drc_width5.png) @/td + # @td @img(/images/drc_width6.png) @/td + # @/tr + # @/table # %DRC% # @name space @@ -3912,7 +3932,45 @@ CODE # @/tr # @/table # - # @h3 opposite and rectangle error filtering @/h3 + # @h3 Touching shapes @/h3 + # + # Like \width and \space, the separation check also supports the "without_touching_corners" option. + # + # This option will turn off errors that arise due to + # edges touching in one corner (the "kissing corners" configuration). + # By default, such edges will yield an error, as they + # form a zero-distance situation. With this option in place, no errors will be reported. + # + # The following images illustrate the effect of the "without_touching_corners" option. + # The white line at the top of the bottom red shape is actually an edge pair indicating + # the zero-distance violation of the separation check: + # + # @table + # @tr + # @td @img(/images/drc_separation12.png) @/td + # @td @img(/images/drc_separation13.png) @/td + # @/tr + # @/table + # + # Another option is "without_touching_edges" which turns off errors that arise + # at coincident edges. Formally such edges represent a zero-distance situation, hence + # are flagged by default. Turning off the check in this case can be helpful when + # separating a layer into two parts (e.g. thin/wide metal separation) and an error + # between touching regions is not desired. + # + # The "without_touching_edges" option is a stronger version of "without_touching_corners" and + # makes sense only for two-layer checks. + # + # The following images illustrate the effect of the "without_touching_edges" option: + # + # @table + # @tr + # @td @img(/images/drc_separation12.png) @/td + # @td @img(/images/drc_separation14.png) @/td + # @/tr + # @/table + # + # @h3 Opposite and rectangle error filtering @/h3 # # The options for the separation check are those available for the \width or \space # method plus opposite and rectangle error filtering. @@ -4121,6 +4179,7 @@ CODE opposite_filter = RBA::Region::NoOppositeFilter rect_filter = RBA::Region::NoRectFilter prop_constraint = RBA::Region::IgnoreProperties + zd_mode = RBA::Region::IncludeZeroDistanceWhenTouching n = 1 args.each do |a| @@ -4132,6 +4191,8 @@ CODE negative = true elsif a.is_a?(DRCPropertiesConstraint) prop_constraint = a.value + elsif a.is_a?(DRCZeroDistanceMode) + zd_mode = a.value elsif a.is_a?(DRCOppositeErrorFilter) opposite_filter = a.value elsif a.is_a?(DRCRectangleErrorFilter) @@ -4185,6 +4246,8 @@ CODE raise("A rectangle error filter can only be used for polygon layers") end + args << zd_mode + border = (metrics == RBA::Region::Square ? value * 1.5 : value) if :#{f} == :width || :#{f} == :space || :#{f} == :notch || :#{f} == :isolated diff --git a/src/drc/drc/built-in-macros/_drc_tags.rb b/src/drc/drc/built-in-macros/_drc_tags.rb index 495f458d1..fd774ebd6 100644 --- a/src/drc/drc/built-in-macros/_drc_tags.rb +++ b/src/drc/drc/built-in-macros/_drc_tags.rb @@ -95,6 +95,16 @@ module DRC end end + # A wrapper for the "zero distance mode" for + # the DRC functions. The purpose of this class + # is to identify the value by the class. + class DRCZeroDistanceMode + attr_accessor :value + def initialize(v) + self.value = v + end + end + # A wrapper for the "as_dots" or "as_boxes" flag for # some DRC functions. The purpose of this class # is to identify the value by the class. diff --git a/src/drc/unit_tests/drcSimpleTests.cc b/src/drc/unit_tests/drcSimpleTests.cc index 4fcba65e6..1362acee0 100644 --- a/src/drc/unit_tests/drcSimpleTests.cc +++ b/src/drc/unit_tests/drcSimpleTests.cc @@ -1617,7 +1617,27 @@ TEST(89_deep_with_mag_cop_size_aniso) run_test (_this, "89", true); } -TEST(90_issue1594_dual_top) +TEST(90_zero_distance_mode) +{ + run_test (_this, "90", false); +} + +TEST(90d_zero_distance_mode) +{ + run_test (_this, "90", true); +} + +TEST(91_zero_distance_mode) +{ + run_test (_this, "91", false); +} + +TEST(91d_zero_distance_mode) +{ + run_test (_this, "91", true); +} + +TEST(92_issue1594_dual_top) { std::string rs = tl::testdata (); rs += "/drc/issue_1594.drc"; @@ -1652,4 +1672,3 @@ TEST(90_issue1594_dual_top) CHECKPOINT (); compare_netlists (_this, output, au); } - diff --git a/testdata/drc/drcSimpleTests_90.drc b/testdata/drc/drcSimpleTests_90.drc new file mode 100644 index 000000000..eb85f24ee --- /dev/null +++ b/testdata/drc/drcSimpleTests_90.drc @@ -0,0 +1,34 @@ + +source $drc_test_source +target $drc_test_target + +if $drc_test_deep + deep +end + +l1 = input(1, 0) +l1_raw = input(1, 0).raw +l2 = input(2, 0) + +l1.output(1, 0) +l2.output(2, 0) + +l1.width(600.nm).output(100, 0) +l1.width(600.nm, without_touching_corners).output(101, 0) +l1.width(600.nm, without_touching_edges).output(102, 0) + +l1.space(600.nm).output(200, 0) +l1.space(600.nm, without_touching_corners).output(201, 0) +l1.space(600.nm, without_touching_edges).output(202, 0) +l1_raw.space(600.nm).output(210, 0) +l1_raw.space(600.nm, without_touching_corners).output(211, 0) +l1_raw.space(600.nm, without_touching_edges).output(212, 0) + +l1.sep(l2, 600.nm).output(300, 0) +l1.sep(l2, 600.nm, without_touching_corners).output(301, 0) +l1.sep(l2, 600.nm, without_touching_edges).output(302, 0) + +l1.drc(space < 600.nm).output(400, 0) +l1.drc(space(without_touching_corners) < 600.nm).output(401, 0) +l1.drc(space(without_touching_edges) < 600.nm).output(402, 0) + diff --git a/testdata/drc/drcSimpleTests_90.gds b/testdata/drc/drcSimpleTests_90.gds new file mode 100644 index 0000000000000000000000000000000000000000..1fedad706c32c963eec1188c546577fcf8ab60db GIT binary patch literal 618 zcmaKpKMnyw6vn@u-JK=kKZ(K-By^&Y5RH&fD8yMDfL^EBPU8R$AZiD20Hs1HVLoFr z(~L=Gf0OUM@4cC~kPu>tW+0L~0yI!T2VM7!jF8ju5U7Q5f3WRNE{8{NbZV#j)dJ1< zk59_QYz{;jK<0(2E(-!cs}!oQv%)*zZYLC#J^t)jXOZ;gkCu%5;$DAzd%s@|Aimi; z+Gq4Hy?*u!p1Ln>)eKX(F>D?oA=Q%j>Ox_;r#k3IQrlKFhEq0tq+e%_OL dBz^U@rP2TSi>aOy@6A=+7#iKqFH!$6!UxG^SC{|* literal 0 HcmV?d00001 diff --git a/testdata/drc/drcSimpleTests_91.drc b/testdata/drc/drcSimpleTests_91.drc new file mode 100644 index 000000000..0b79b7773 --- /dev/null +++ b/testdata/drc/drcSimpleTests_91.drc @@ -0,0 +1,34 @@ + +source $drc_test_source +target $drc_test_target + +if $drc_test_deep + deep +end + +l1 = input(1, 0) + +l1.output(1, 0) + +l1.space(600.nm).output(100, 0) +l1.space(600.nm, without_touching_corners).output(101, 0) +l1.space(600.nm, without_touching_edges).output(102, 0) +l1.space(600.nm, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(103, 0) + +l1.space(600.nm, projection).output(110, 0) +l1.space(600.nm, projection, without_touching_corners).output(111, 0) +l1.space(600.nm, projection, without_touching_edges).output(112, 0) +l1.space(600.nm, projection, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(113, 0) + +l1.space(600.nm, square).output(120, 0) +l1.space(600.nm, square, without_touching_corners).output(121, 0) +l1.space(600.nm, square, without_touching_edges).output(122, 0) +l1.space(600.nm, square, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(123, 0) + +l1.data.min_coherence = true + +l1.space(600.nm).output(200, 0) +l1.space(600.nm, without_touching_corners).output(201, 0) +l1.space(600.nm, without_touching_edges).output(202, 0) +l1.space(600.nm, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(203, 0) + diff --git a/testdata/drc/drcSimpleTests_91.gds b/testdata/drc/drcSimpleTests_91.gds new file mode 100644 index 0000000000000000000000000000000000000000..ab89a181ddb3a3538cce39795342495e53e7cdc0 GIT binary patch literal 6122 zcmai2TWpj?6h7Uu-R;HFMk?i^-3p`%2)pfa>w^NpQcAN_0tujrHKBkB@qSG-DkP@7 z@knA~@WG%@>XRg1LPRM|j7p3Ni6%hAP|(DxB=&*i_xt9Y+5I&$b(784bIyEoX3k}1 zy3!z-%pO@>m&r{@M(U+Qnk1M0Tk@HP;cc5m=GABK-*jx<_H(DEH*7h*`s7>tcFE%G zEWCz>T{}iZ=Hx{hZp%oWG_+fq(jPbyO8yp%bQjSJ1QloVLM0uMJA@F-dh@6{xkDPzVd=tqterSG|Kfz}a z=41Z4Hc}E-oSCZzc0rcT@Mu{WX56GHZSe?x%Fq6!d_SHt`HUy|W{>ilrgd!omX4=Pe#_OG zJe&X4i^})oDU;v!werm#^`Ac=(zFka{S16oL@2l7kf6@X_Le&si=QofgA z5Am!0%2=^Z*yGHZmm~XjJU@=P_GbfmrjPntaYkg}aSxZhOdsMs!am?R!agH%pFBT2 zvbU)BNIlOVkBnobpz$R7c_RIKnEuG;x`?-ri|oBvL+UvXac5rZdG~Y;xi7BABkP^( zC3>FCAKI_^Pm-CU`e*ObzoP1Q<`pZ2B)QcovU}R2xDWmFGcclhKW=EfpVwi?|0}xx zB)R$?{U^!ILHe&D_4H5Vyi>7r#qrv_m_Ov-^>gp}B;h_v7QgZyjic$K zybXtwVWY-trk8@A;+=@!WmEn6Q_K>`B(XN3RD)`Tooyay-ug zkL+!;r}_Ksz2)Nc+&Pi$4$j7l-UQ8e5ZEX}O{*8Ls0e_R)KlE$*C@=dC^4o)Z z3|QEUTwc(=H+_`Hm~j5JAE>|e?<$%;%3A_oJXeZ3fD{|W6)SBI#F@@G~T6T$ttdf0I!Nv@$FDqVW+4u75`*Z+dtt+LreejT6hCgw9g zrulR4I^?tI4~@0iqkNbDvsw?#rF)m5XIT%9%lbGQUq9EIUO(5HUccF+{f?GM;`m=Pvu_J>VNLX zf1Ufq?_vKoHGWcM(}(=IxHccre75`yfB1i-6=x*#+476ZW{>ihErL(1t!FL}KJU#c z_Oz?s>><9(OQlQKSt+>v$w-IEs*m!@L)Q0<=O}zxd`%zXx&69+L;tY<*f0FHpnuqZ z>?gBF`HT>+-&e|R6H`^Wd+Z1;h?cP=4DxPOX2XpDKLn?CB#-94yh zclY2-qc7IC>7%^vLpUc;4}5=-<8UK-UG-6(yWen*@O*VXFX;JT`Y3PUA+7T*ui<~a zH)`)D(}#F2AADzVFGQ}B<9Qwtd7ha)%I7gujxZPx9`$7dUq91=vbZ^i7pQ2Ze;yb3j+t`L$ z%0fPf`o??6>><8eci;QCGqKm|xq4pxn?A(T{(&Fw*Zc8)d4_Nuu!s20FLTQJ_4UkL zJ6ZKn9^XNQlD&(-XRP^7GJTZi_g6ZAwecQdoWV1Fl*e4~y_n7`-;JgZ@mzfRzR~8Ma>_HxHG7Ef;#0bo$_sea^{YP0bN&z)Kb|%0?!gI%A)Z_BmWOM7#{L_8u-1pn zmDxjlx8C6u>ZeiwBCeHgl}#Vz`QHJC@$R{`K;MlH^>>8- E15Wanm;e9( literal 0 HcmV?d00001 diff --git a/testdata/drc/drcSimpleTests_au90.gds b/testdata/drc/drcSimpleTests_au90.gds new file mode 100644 index 0000000000000000000000000000000000000000..42058a4a862b0579528253e5818fbce29e7d00d9 GIT binary patch literal 3818 zcmbuCJ#W-N5QfLTvwf%BM~;A$BKZdaDuiev1<@ctAdv!SXn=;lKt}@=-&KlSsuUp= zO{hZ<(D2!j6jTXCq)0%41ekemcI6$=M%uNdyRl~W*_nNJJ-(xy()1EdC26rk2~E-j zf4AIwYNh$v(K7alKQL{yqcT=7>@1;aE zGv45D=W6T_xgRIg9C-Nl3mF9qw)?cQh?uyS&o;~Q*CbK4SxRX6tk+uWXY1urC&s~oJ9MkE*1sR$ zABs+>8`s1gYpwr3{jRz7x7SO)IOk2~60UzkY-d{hChpd+`Hiytz091Mr@c;;Uasb8 zOWezMS2*oAqRv&;;VbXss@UF7@te5IUw7+|;BVCAU%7m?RhECAan0MJS7V#&KF8-_ zOLR1Gw|>Q2-2(L2e7OFKhkn^-(Z6`l=YNUM0^9Lj@te3?|LdCTSA0bNH#PGsJ|h2z zn)wwUvHzM6-+#q-SLNJ72Rw%(J^1X}=g`F6{nvc>`T1B=KgCDXulex$Kh>;X@!{t$ znQ`-@-=quZKhihRcd}#Be?~ruJNu`3^y}mv`nT}t|M{HsZ}2AW<TK0<%Z zhwHES2>lfwq5qMZ`YS#{Kh1~hr}zl{6d$4AeOJHm_g|v<;P;>A!+*bNKB9j=aMvG^ UU-1$7AJ)vT_>lYs|A%bSU&@rvH2?qr literal 0 HcmV?d00001 diff --git a/testdata/drc/drcSimpleTests_au90d.gds b/testdata/drc/drcSimpleTests_au90d.gds new file mode 100644 index 0000000000000000000000000000000000000000..42058a4a862b0579528253e5818fbce29e7d00d9 GIT binary patch literal 3818 zcmbuCJ#W-N5QfLTvwf%BM~;A$BKZdaDuiev1<@ctAdv!SXn=;lKt}@=-&KlSsuUp= zO{hZ<(D2!j6jTXCq)0%41ekemcI6$=M%uNdyRl~W*_nNJJ-(xy()1EdC26rk2~E-j zf4AIwYNh$v(K7alKQL{yqcT=7>@1;aE zGv45D=W6T_xgRIg9C-Nl3mF9qw)?cQh?uyS&o;~Q*CbK4SxRX6tk+uWXY1urC&s~oJ9MkE*1sR$ zABs+>8`s1gYpwr3{jRz7x7SO)IOk2~60UzkY-d{hChpd+`Hiytz091Mr@c;;Uasb8 zOWezMS2*oAqRv&;;VbXss@UF7@te5IUw7+|;BVCAU%7m?RhECAan0MJS7V#&KF8-_ zOLR1Gw|>Q2-2(L2e7OFKhkn^-(Z6`l=YNUM0^9Lj@te3?|LdCTSA0bNH#PGsJ|h2z zn)wwUvHzM6-+#q-SLNJ72Rw%(J^1X}=g`F6{nvc>`T1B=KgCDXulex$Kh>;X@!{t$ znQ`-@-=quZKhihRcd}#Be?~ruJNu`3^y}mv`nT}t|M{HsZ}2AW<TK0<%Z zhwHES2>lfwq5qMZ`YS#{Kh1~hr}zl{6d$4AeOJHm_g|v<;P;>A!+*bNKB9j=aMvG^ UU-1$7AJ)vT_>lYs|A%bSU&@rvH2?qr literal 0 HcmV?d00001 diff --git a/testdata/drc/drcSimpleTests_au91.gds b/testdata/drc/drcSimpleTests_au91.gds new file mode 100644 index 0000000000000000000000000000000000000000..ff5c26d23d25ddf3915f57de2b11d015af701fa4 GIT binary patch literal 25210 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 literal 0 HcmV?d00001 diff --git a/testdata/drc/drcSimpleTests_au91d.gds b/testdata/drc/drcSimpleTests_au91d.gds new file mode 100644 index 0000000000000000000000000000000000000000..ff5c26d23d25ddf3915f57de2b11d015af701fa4 GIT binary patch literal 25210 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 literal 0 HcmV?d00001 diff --git a/testdata/ruby/dbEdgesTest.rb b/testdata/ruby/dbEdgesTest.rb index 1a0910a9d..f64dc910e 100644 --- a/testdata/ruby/dbEdgesTest.rb +++ b/testdata/ruby/dbEdgesTest.rb @@ -476,6 +476,48 @@ class DBEdges_TestClass < TestBase assert_equal((r2 | r1).width_check(60, true, RBA::Edges::Projection, nil, 50, nil).to_s, "(120,20;120,380)/(130,380;130,20)") assert_equal((r2 | r1).width_check(60, true, RBA::Edges::Projection, nil, nil, 50).to_s, "(50,200;50,220)/(100,400;100,0)") + # kissing corner/separation case + + r1 = RBA::Region::new + r1.insert(RBA::Box::new(0, 0, 100, 200)) + r1 = r1.edges + + r2 = RBA::Region::new + r2.insert(RBA::Box::new(100, 200, 200, 400)) + r2 = r2.edges + + r3a = RBA::Region::new + r3a.insert(RBA::Box::new(-10, 0, 110, 100)) + r3a = r3a.edges + + r3b = RBA::Region::new + r3b.insert(RBA::Box::new(10, 0, 90, 100)) + r3b = r3b.edges + + assert_equal(csort((r2 | r1).width_check(60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,200;100,140)/(100,200;100,260);(160,200;100,200)/(40,200;100,200)")) + assert_equal(csort((r2 | r1).width_check(60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort((r2 | r1).width_check(60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::IncludeZeroDistanceWhenTouching).to_s), csort("(100,200;100,140)/(100,200;100,260);(160,200;100,200)/(40,200;100,200)")) + + assert_equal(csort((r2 | r1).space_check(60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,200;100,140)/(100,200;100,260);(160,200;100,200)/(40,200;100,200)")) + assert_equal(csort((r2 | r1).space_check(60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort((r2 | r1).space_check(60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::IncludeZeroDistanceWhenTouching).to_s), csort("(100,200;100,140)/(100,200;100,260);(160,200;100,200)/(40,200;100,200)")) + + assert_equal(csort(r1.separation_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,200;100,140)/(100,200;100,260);(40,200;100,200)/(160,200;100,200)")) + assert_equal(csort(r1.separation_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort(r1.separation_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::IncludeZeroDistanceWhenTouching).to_s), csort("(100,200;100,140)/(100,200;100,260);(40,200;100,200)/(160,200;100,200)")) + + assert_equal(csort(r1.inside_check(r3b, 60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,0;0,0)/(90,0;10,0)")) + assert_equal(csort(r1.inside_check(r3b, 60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort(r1.inside_check(r3b, 60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::IncludeZeroDistanceWhenTouching).to_s), csort("(100,0;0,0)/(90,0;10,0)")) + + assert_equal(csort(r1.enclosing_check(r3a, 60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,0;0,0)/(110,0;-10,0)")) + assert_equal(csort(r1.enclosing_check(r3a, 60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort(r1.enclosing_check(r3a, 60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::IncludeZeroDistanceWhenTouching).to_s), csort("(100,0;0,0)/(110,0;-10,0)")) + + assert_equal(csort(r1.overlap_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,200;100,140)/(100,200;100,260);(40,200;100,200)/(160,200;100,200)")) + assert_equal(csort(r1.overlap_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort(r1.overlap_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil, RBA::Edges::IncludeZeroDistanceWhenTouching).to_s), csort("(100,200;100,140)/(100,200;100,260);(40,200;100,200)/(160,200;100,200)")) + end # with.. diff --git a/testdata/ruby/dbRegionTest.rb b/testdata/ruby/dbRegionTest.rb index de204bc3d..e0abb515b 100644 --- a/testdata/ruby/dbRegionTest.rb +++ b/testdata/ruby/dbRegionTest.rb @@ -550,6 +550,44 @@ class DBRegion_TestClass < TestBase assert_equal((r1 | r2).merged.width_check(60, true, RBA::Region::Projection, nil, 50, nil).to_s, "(120,20;120,380)|(130,380;130,20)") assert_equal((r1 | r2).merged.width_check(60, true, RBA::Region::Projection, nil, nil, 50).to_s, "(50,200;50,220)|(100,400;100,0)") + # kissing corner/separation case + + r1 = RBA::Region::new + r1.insert(RBA::Box::new(0, 0, 100, 200)) + + r2 = RBA::Region::new + r2.insert(RBA::Box::new(100, 200, 200, 400)) + + r3a = RBA::Region::new + r3a.insert(RBA::Box::new(-10, 0, 110, 100)) + + r3b = RBA::Region::new + r3b.insert(RBA::Box::new(10, 0, 90, 100)) + + assert_equal(csort((r2 | r1).width_check(60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,200;100,140)|(100,200;100,260);(40,200;100,200)|(160,200;100,200)")) + assert_equal(csort((r2 | r1).width_check(60, false, RBA::Edges::Euclidian, nil, nil, nil, true, false, RBA::Region::IgnoreProperties, RBA::Region::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort((r2 | r1).width_check(60, false, RBA::Edges::Euclidian, nil, nil, nil, true, false, RBA::Region::IgnoreProperties, RBA::Region::IncludeZeroDistanceWhenTouching).to_s), csort("(100,200;100,140)|(100,200;100,260);(40,200;100,200)|(160,200;100,200)")) + + assert_equal(csort((r2 | r1).space_check(60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,200;100,140)|(100,200;100,260);(40,200;100,200)|(160,200;100,200)")) + assert_equal(csort((r2 | r1).space_check(60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort((r2 | r1).space_check(60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::IncludeZeroDistanceWhenTouching).to_s), csort("(100,200;100,140)|(100,200;100,260);(40,200;100,200)|(160,200;100,200)")) + + assert_equal(csort(r1.separation_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,200;100,140)/(100,200;100,260);(40,200;100,200)/(160,200;100,200)")) + assert_equal(csort(r1.separation_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort(r1.separation_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::IncludeZeroDistanceWhenTouching).to_s), csort("(100,200;100,140)/(100,200;100,260);(40,200;100,200)/(160,200;100,200)")) + + assert_equal(csort(r1.inside_check(r3b, 60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,0;0,0)/(90,0;10,0)")) + assert_equal(csort(r1.inside_check(r3b, 60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort(r1.inside_check(r3b, 60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::IncludeZeroDistanceWhenTouching).to_s), csort("(100,0;0,0)/(90,0;10,0)")) + + assert_equal(csort(r1.enclosing_check(r3a, 60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,0;0,0)/(110,0;-10,0)")) + assert_equal(csort(r1.enclosing_check(r3a, 60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort(r1.enclosing_check(r3a, 60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::IncludeZeroDistanceWhenTouching).to_s), csort("(100,0;0,0)/(110,0;-10,0)")) + + assert_equal(csort(r1.overlap_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil).to_s), csort("(100,200;100,140)/(100,200;100,260);(40,200;100,200)/(160,200;100,200)")) + assert_equal(csort(r1.overlap_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::NeverIncludeZeroDistance).to_s), csort("")) + assert_equal(csort(r1.overlap_check(r2, 60, false, RBA::Edges::Euclidian, nil, nil, nil, true, RBA::Region::NoOppositeFilter, RBA::Region::NoRectFilter, false, RBA::Region::IgnoreProperties, RBA::Region::IncludeZeroDistanceWhenTouching).to_s), csort("(100,200;100,140)/(100,200;100,260);(40,200;100,200)/(160,200;100,200)")) + end # Others From a4ab59ba6ffead66dec765b12e00cd957bf4bca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Mon, 12 Feb 2024 08:40:23 +0100 Subject: [PATCH 14/17] Maybe fixing issue #1602 (#1621) Co-authored-by: Matthias Koefferlein --- src/lay/lay/layMainWindow.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lay/lay/layMainWindow.cc b/src/lay/lay/layMainWindow.cc index 1adfb3bb7..d2b23a5b4 100644 --- a/src/lay/lay/layMainWindow.cc +++ b/src/lay/lay/layMainWindow.cc @@ -1489,7 +1489,11 @@ MainWindow::closeEvent (QCloseEvent *event) END_PROTECTED } - event->ignore (); + if (! m_exited) { + event->ignore (); + } else { + event->accept (); + } } void From cc7622b6b41f956c061f939029cd60421fa04ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Mon, 12 Feb 2024 08:40:39 +0100 Subject: [PATCH 15/17] Maybe fixing issue #1619 (crash on Fedora-39 upon initialization) (#1622) * Maybe fixing issue #1619 (crash on Fedora-39 upon initialization) * Python 3.6 compatibility --------- Co-authored-by: Matthias Koefferlein --- src/pya/pya/pya.cc | 20 +++++--------------- src/pya/pya/pya.h | 2 +- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/pya/pya/pya.cc b/src/pya/pya/pya.cc index 81ed9633b..89ae80c54 100644 --- a/src/pya/pya/pya.cc +++ b/src/pya/pya/pya.cc @@ -185,7 +185,7 @@ PythonInterpreter::PythonInterpreter (bool embedded) : gsi::Interpreter (0, "pya"), mp_current_console (0), mp_current_exec_handler (0), m_current_exec_level (0), m_in_trace (false), m_block_exceptions (false), m_ignore_next_exception (false), - mp_current_frame (NULL), mp_py3_app_name (0), m_embedded (embedded) + mp_current_frame (NULL), m_embedded (embedded) { // Don't attempt any additional initialization in the standalone module case if (! embedded) { @@ -325,18 +325,15 @@ PythonInterpreter::PythonInterpreter (bool embedded) #else // Python 3 requires a unicode string for the application name - PyObject *an = c2python (app_path); - tl_assert (an != NULL); - mp_py3_app_name = PyUnicode_AsWideCharString (an, NULL); - tl_assert (mp_py3_app_name != NULL); - Py_DECREF (an); - Py_SetProgramName (mp_py3_app_name); + + mp_py3_app_name = tl::to_wstring (app_path); + Py_SetProgramName (const_cast (mp_py3_app_name.c_str ())); Py_InitializeEx (0 /*don't set signals*/); // Set dummy argv[] // TODO: more? - wchar_t *argv[1] = { mp_py3_app_name }; + wchar_t *argv[1] = { const_cast (mp_py3_app_name.c_str()) }; PySys_SetArgvEx (1, argv, 0); #endif @@ -371,14 +368,7 @@ PythonInterpreter::~PythonInterpreter () sp_interpreter = 0; if (m_embedded) { - Py_Finalize (); - - if (mp_py3_app_name) { - PyMem_Free (mp_py3_app_name); - mp_py3_app_name = 0; - } - } } diff --git a/src/pya/pya/pya.h b/src/pya/pya/pya.h index 217c87230..ee8d35381 100644 --- a/src/pya/pya/pya.h +++ b/src/pya/pya/pya.h @@ -277,7 +277,7 @@ private: std::string m_debugger_scope; PyFrameObject *mp_current_frame; std::map m_file_id_map; - wchar_t *mp_py3_app_name; + std::wstring mp_py3_app_name; bool m_embedded; std::unique_ptr m_pya_module; }; From b799391ec928e025563f501bdd131a224efc2f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Mon, 12 Feb 2024 16:58:09 +0100 Subject: [PATCH 16/17] Issue 1623 (#1624) * Fixing issue #1623 (Package installation with '-y' from command line does not work for URL or file) * Another bugfix: package installation with -y from file structure did not work as 'grain.xml' is not added to grain URL --------- Co-authored-by: Matthias Koefferlein --- src/lay/lay/laySaltController.cc | 4 ++++ src/lay/lay/laySaltDownloadManager.cc | 6 +++--- src/lay/lay/laySaltDownloadManager.h | 17 +++++++++++++++++ src/lay/lay/laySaltGrain.cc | 10 +++++----- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/lay/lay/laySaltController.cc b/src/lay/lay/laySaltController.cc index 7862bf4cc..4e5e062a2 100644 --- a/src/lay/lay/laySaltController.cc +++ b/src/lay/lay/laySaltController.cc @@ -179,6 +179,10 @@ SaltController::install_packages (const std::vector &packages, bool { lay::SaltDownloadManager manager; + // This method is used for command-line installation ignoring the package index. + // Hence we have to download package information here: + manager.set_always_download_package_information (true); + lay::Salt salt_mine; if (! m_salt_mine_url.empty ()) { tl::log << tl::to_string (tr ("Downloading package repository from %1").arg (tl::to_qstring (m_salt_mine_url))); diff --git a/src/lay/lay/laySaltDownloadManager.cc b/src/lay/lay/laySaltDownloadManager.cc index 753781d57..ef300f8a4 100644 --- a/src/lay/lay/laySaltDownloadManager.cc +++ b/src/lay/lay/laySaltDownloadManager.cc @@ -166,7 +166,7 @@ ConfirmationDialog::finish () SaltDownloadManager::SaltDownloadManager () { - // .. nothing yet .. + m_always_download_package_information = false; } void @@ -344,7 +344,7 @@ SaltDownloadManager::fetch_missing (const lay::Salt &salt, const lay::Salt &salt } - if (! p->downloaded && salt_mine.download_package_information ()) { + if (! p->downloaded && (m_always_download_package_information || salt_mine.download_package_information ())) { // If requested, download package information to complete information from index or dependencies if (tl::verbosity() >= 10) { @@ -362,7 +362,7 @@ SaltDownloadManager::fetch_missing (const lay::Salt &salt, const lay::Salt &salt if (! p->downloaded) { if (p->name.empty ()) { - throw tl::Exception (tl::to_string (tr ("No name given package from '%s' (from dependencies or command line installation request)")), p->url); + throw tl::Exception (tl::to_string (tr ("No name given for package from '%s' (from dependencies or command line installation request)")), p->url); } if (tl::verbosity() >= 10) { diff --git a/src/lay/lay/laySaltDownloadManager.h b/src/lay/lay/laySaltDownloadManager.h index 477555ada..ffe408a04 100644 --- a/src/lay/lay/laySaltDownloadManager.h +++ b/src/lay/lay/laySaltDownloadManager.h @@ -103,6 +103,22 @@ public: */ SaltDownloadManager (); + /** + * @brief Gets a flag indicating whether to always download package information + */ + bool always_download_package_information () const + { + return m_always_download_package_information; + } + + /** + * @brief Sets a flag indicating whether to always download package information + */ + void set_always_download_package_information (bool f) + { + m_always_download_package_information = f; + } + /** * @brief Registers an URL (with version) for download in the given target directory * @@ -176,6 +192,7 @@ private: }; std::vector m_registry; + bool m_always_download_package_information; bool needs_iteration (); void fetch_missing (const lay::Salt &salt, const lay::Salt &salt_mine, tl::AbsoluteProgress &progress); diff --git a/src/lay/lay/laySaltGrain.cc b/src/lay/lay/laySaltGrain.cc index 6139574b3..f9c3cb181 100644 --- a/src/lay/lay/laySaltGrain.cc +++ b/src/lay/lay/laySaltGrain.cc @@ -487,7 +487,7 @@ SaltGrain::load (tl::InputStream &p) void SaltGrain::save () const { - save (tl::to_string (QDir (tl::to_qstring (path ())).filePath (tl::to_qstring (grain_filename)))); + save (tl::to_string (QDir (tl::to_qstring (path ())).filePath (tl::to_qstring (SaltGrain::spec_file ())))); } void @@ -503,7 +503,7 @@ SaltGrain::from_path (const std::string &path) QDir dir (tl::to_qstring (path)); SaltGrain g; - g.load (tl::to_string (dir.filePath (tl::to_qstring (grain_filename)))); + g.load (tl::to_string (dir.filePath (tl::to_qstring (SaltGrain::spec_file ())))); g.set_path (tl::to_string (dir.absolutePath ())); return g; } @@ -552,7 +552,7 @@ SaltGrain::stream_from_url (std::string &generic_url, double timeout, tl::InputH } else { - return new tl::InputStream (url); + return new tl::InputStream (url + "/" + SaltGrain::spec_file ()); } } @@ -576,10 +576,10 @@ SaltGrain::is_grain (const std::string &path) if (path[0] != ':') { QDir dir (tl::to_qstring (path)); - QString gf = dir.filePath (tl::to_qstring (grain_filename)); + QString gf = dir.filePath (tl::to_qstring (SaltGrain::spec_file ())); return QFileInfo (gf).exists (); } else { - return QResource (tl::to_qstring (path + "/" + grain_filename)).isValid (); + return QResource (tl::to_qstring (path + "/" + SaltGrain::spec_file ())).isValid (); } } From e9175360d28f85c56984cc151a0d98f62303d1ff Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Thu, 15 Feb 2024 00:18:35 +0100 Subject: [PATCH 17/17] Seeing whether we can free disk space --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1754c3752..7d9c02da0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,7 +34,7 @@ jobs: android: true dotnet: true haskell: true - large-packages: false # not working currently + large-packages: true - uses: hmarr/debug-action@v2 - name: Cancel Workflow Action uses: styfle/cancel-workflow-action@0.12.1