Commit Graph

774 Commits

Author SHA1 Message Date
Matthias Koefferlein b353f7db79 Test stability for Windows/32bit 2021-02-28 13:50:33 +01:00
Matthias Koefferlein 77356cd877 More unit test stability 2021-02-27 21:31:32 +01:00
Matthias Köfferlein b968f2b47f
#730: providing a new Qt module named QtUiTools for QUiLoader class s… (#735)
* #730: providing a new Qt module named QtUiTools for QUiLoader class support.

* Fixed a compile error on Mac

* Added QtUiTools to some more places

* Fixed a linker issue in the QtUiTools Python lib

* On occasion fixed a infinite recursion problem in the debugger

The recursion happened because by mistake I instantiated a
QApplication inside an in-application Python script. This
crashed the debugger due to infinite recursion. This is not
a real use case but to prevent similar issues, a recursion
sentinel was added.

* Removed QCoreApplication#notify from script bindings

Reasoning: "notify" made standalone scripts using QApplication and
QUiLoader virtually impossible.

Problem description:
- When a QApplication object is instantiated, e.g. in Python, the Qt binding
  will install reimplementation hooks as the object may be dynamically
  extended.
- A notify is virtual this means the *every* "notify" call in the application
  is routed through the interpreter.
- For one thing this will slow down the application
- But as "notify" is called a zillion times this has more than this side effect.
- Specifically "notify" is called from within the QWidget constructor to
  indicate a new widget. Then, if a QDialog for example is instatiated, it's
  base class constructor will call "notify" when the object isn't ready yet.
- This has another severe side effect: as the object isn't ready yet, it gets
  registered in the Python space with the wrong class and QDialog is not visible
  as such.

To mitigate these problems, the most efficient solution is to disable "notify"
in general. There is hardly any use case in a script environment (in C++,
apart from hacking the only reasonable use case is exception handling, but
this does not apply to scripts). For providing the call functionality of
"notify" you should better use "postEvent" or "sendEvent" anyway.

So farewell QCoreApplication.notify ...

* Fixed python test for QtUiTools module

* Fixed UiTools test on Qt4 - QUiLoader needs an application object

Co-authored-by: Kazunari Sekigawa <kazunari.sekigawa@gmail.com>
2021-02-25 21:29:21 +01:00
Matthias Köfferlein 483f67307c
Merge pull request #732 from KLayout/lefdef-enhancements
Lefdef enhancements
2021-02-25 21:28:02 +01:00
Matthias Köfferlein 82587e70c3
Merge pull request #731 from KLayout/recursive-inst-iterator
Recursive inst iterator
2021-02-25 21:27:41 +01:00
Matthias Koefferlein 3db1db831f Test update after update of LEF/DEF reader. 2021-02-21 21:23:45 +01:00
Matthias Koefferlein eda1992a7d Added VIA size selectors for LEF/DEF .map files. 2021-02-21 21:00:55 +01:00
Matthias Koefferlein 898dbf07e9 Implemented FILLS support for LEF/DEF 2021-02-21 18:27:25 +01:00
Matthias Koefferlein 0f4a10441d RecursiveInstanceIterator: Doc fixes, tests, instance array iteration. 2021-02-20 22:17:43 +01:00
Matthias Koefferlein b3685c6722 Implemented with_holes for generic DRC too 2021-02-08 21:29:41 +01:00
Matthias Koefferlein 1c8eca50bf Added test case files. 2021-02-08 20:59:48 +01:00
Matthias Koefferlein a9fa5d73f9 Introducing 'with_holes' and 'without_holes' in DRC and RBA::Region. 2021-02-08 20:59:17 +01:00
Matthias Köfferlein e31d7afb64
Reduce risk of DRC polygon split artefacts in deep mode (#722)
* Fixed a segfault with simple 'klayout -v'

* is_halfmanhattan polygon predicate, confine polygon splitting to halfmanhattan

Splitting any-angle polygons for area reduction in the
deep processor creates a risk of introducing grid-snap
artefacts. Hence we avoid this.
2021-02-05 23:28:04 +01:00
Matthias Koefferlein bde58da2a1 Fixed key binding unit test for multiple passes. 2021-02-01 08:30:24 +01:00
Matthias Köfferlein 4134829304
Issue 718 (#719)
* WIP: first part of fix - generation of hole cutlines

First problem was that hole cutlines got extended
over the whole length and sometimes lead to coincident
edges which are difficult to resolve for the polygon
cutter.

* Refined solution, fixed #718

- disabled elaborate hole insertion procedure for now as the
  performance impact has to be assessed yet and the new scheme
  will break many tests
- stricter rejection of ambiguous configurations in the polygon cutter
- fallback is boolean AND now since there is no need to re-invoke the
  polygon cutter (we can't do so as we made it more strict).
  Performance-wise we replace a merge by an AND step which may even be
  faster the output is smaller and the polygon cutter does not need
  to be re-invoked.

* Compatibility with other STLs
2021-01-31 19:21:15 +01:00
Matthias Köfferlein 10eee4d895
Fixed #709. (#714) 2021-01-31 19:21:00 +01:00
Matthias Köfferlein 97ed4cf0f2
Merge pull request #712 from KLayout/gsi-fixes
Some enhancements to script API
2021-01-31 19:20:35 +01:00
Matthias Koefferlein 3ea78bf96f Yet another test suite Python compatibility fix. 2021-01-31 18:16:46 +00:00
Matthias Koefferlein f263f5c44c Compatibility with older Ruby and Python versions in unit tests. 2021-01-31 17:14:21 +00:00
Matthias Koefferlein cdb62cc111 Merge branch 'master' into gsi-fixes 2021-01-27 12:46:34 +01:00
Matthias Köfferlein 1ba4394c2a
Merge pull request #710 from KLayout/byte-arrays
Byte arrays
2021-01-27 12:42:48 +01:00
Matthias Köfferlein bd41f7222d
Merge pull request #706 from KLayout/spline-as-api
Generalized spline interpolation of DXF reader
2021-01-26 23:39:51 +01:00
Matthias Koefferlein c7113b8c72 Added methods to manipulate key bindings and menu visibility through scripts (MainWindow#set_key_bindings, MainWindow#get_key_bindings, MainWindow#set_menu_items_hidden ...) 2021-01-26 23:10:26 +01:00
Matthias Koefferlein bd9afaf865 Fixed pymod tests. 2021-01-25 21:53:32 +01:00
Matthias Koefferlein d31f87f053 Some issues with the byte array binding fixed, less ambiguitites with Qt bindings, tests added. 2021-01-24 23:44:40 +01:00
Matthias Koefferlein 5aac018503 Mapping QByteArray (and std::vector<char>) to Python 'bytes' now. 2021-01-24 17:36:40 +01:00
Matthias Koefferlein ad904d3fa1 Updated testdata with new variant because of unordered set fluctuation. 2021-01-23 22:31:17 +01:00
Matthias Koefferlein c8951c10cd Generalized spline interpolation of DXF reader and provide a script binding (RBA::Utils). 2021-01-23 18:44:36 +01:00
Matthias Koefferlein 618e1134c4 More robustness against test variations on different platforms. 2021-01-19 22:23:02 +01:00
Matthias Koefferlein 63d19bdb4c More robustness against test variations on different platforms. 2021-01-19 21:49:38 +01:00
Matthias Koefferlein 66ea75e643 Fixed unbounded ranges compatibility for Ruby < 2.7 2021-01-19 21:16:03 +01:00
Matthias Koefferlein 73485a5061 More robustness against differences on different platforms. 2021-01-19 20:36:25 +01:00
Matthias Koefferlein 11e9f89fc2 Introduced normalization into region/edges/edge pairs/texts tests to get rid of platform dependency because of unordered_set implementation details. 2021-01-19 08:03:42 +01:00
Matthias Koefferlein 9b275d85a6 More stable hash function (the previous one was too sparse for small coordinates). Test updates for this reason. 2021-01-18 20:26:03 +01:00
Matthias Koefferlein e1312d7a0c Merge branch 'master' of github.com:KLayout/klayout into complex_drc_ops 2021-01-17 22:45:40 +01:00
Matthias Koefferlein 081c445cd8 Merge branch 'master' into complex_drc_ops 2021-01-17 19:55:28 +01:00
Matthias Koefferlein abcac4896b Updated test data 2021-01-17 19:31:47 +01:00
Matthias Koefferlein 9cf0a9e659 Major enhancements for DRC feature (universal DRC)
Main issue: universal DRC scheme and rectangle filtering/opposite filtering/shielding.

The space function required some enhancements to accomodate symmetric interactions.
Now there are symmetric edge pairs. Space initially runs twofold (primary to foreign)
but produces symmetric edge pairs. These are filtered later unless converted before.
2021-01-17 19:26:22 +01:00
Matthias Koefferlein fd90e66ee1 WIP (shielding, various bug fixes) 2021-01-17 14:38:44 +01:00
Matthias Koefferlein 785bc0b6e5 Build error fixed, test cases updated. 2021-01-16 10:09:07 +01:00
Matthias Koefferlein 4460c294b0 Some bug fixes, doc update, test updates. 2021-01-16 00:32:06 +01:00
Matthias Koefferlein bbd511bc8b Added some tests for 'switch', small bug fix. 2021-01-15 17:32:39 +01:00
Matthias Koefferlein 80996a77fb New *_sum quantifiers, doc enhancements, bug fixing 2021-01-14 00:21:21 +01:00
Matthias Koefferlein 80d0229b7c More intuitive DRC specification of 'projection_limits' with 'projecting' and a condition 2021-01-13 15:58:55 +01:00
Matthias Koefferlein c5859cd957 Tests for new DRC features (square, new attiribute tests) 2021-01-13 13:35:37 +01:00
Matthias Koefferlein 8c8c9a6911 More tests. 2021-01-13 01:18:25 +01:00
Matthias Koefferlein dce22fee37 New region filters (square, area ratio, relative height) 2021-01-13 01:08:42 +01:00
Matthias Koefferlein ae29c75326 WIP: documentation, local merging of polygon for interact, covering .. 2021-01-12 01:08:12 +01:00
Matthias Koefferlein f3f196cfb3 Doc update, implemented != for DRC operations. 2021-01-10 21:36:58 +01:00
Matthias Koefferlein 04e11eea31 Test enhancement. 2021-01-10 20:19:02 +01:00