1. Mapping "[*/*] 100/0:0/0" (for example) created 0/0
two times when the input contains 100/0 and 0/0. Now
it is a single layer only
2. The mapping table generated from strings now uses
layer indexes from a range that should not collide
with existing layer indexes.
This fix solves two problems:
* Too large meta info data
* Too many meta info entries
The first problem is fixed by splitting the strings that serialize
the meta info.
The second problem is fixed by introducing prefixed strings that
indicate the attribute index within the string, not inside
the PROPATTR record.
The solution is backward compatible, although old versions will
not read all meta info and skip entries that exceed the GDS
capacity.
Caveat: the produced GDS files may contain duplicate PROPATTR
keys. This is not strictly illegal, but some third-party processors
may drop such entries.
* 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 <matthias@klayout.de>
commit d77702cd86066f3a97d740a95923fa598c2ff07b
Author: Matthias Koefferlein <matthias@koefferlein.de>
Date: Sat Mar 28 21:28:39 2020 +0100
Wildcard expansion feature on layer mapping
Finished feature, added doc and test.
The solution is to use placeholder indexes for the
layer mapping which are substituted by the real
layers when they are encountered.
commit af60b5f18acfe3c5e2f1d4e6bc6ee752a246dc0d
Author: Matthias Koefferlein <matthias@koefferlein.de>
Date: Sat Mar 28 19:11:32 2020 +0100
Preparations for new feature: introduce relative and wildcard target layer specs
The text writer was made "normalizing": it will introduce
a certain element order (string sorting). This way, OASIS
files can be compared against golden data without
changes in the order due to different implementation of
hash containers.