Merge remote-tracking branch 'remotes/mine/master'

This commit is contained in:
Matthias Koefferlein 2024-03-31 10:37:20 +02:00
commit ed486a687d
6 changed files with 2994 additions and 120 deletions

View File

@ -1,5 +1,64 @@
0.29.0 (2024-04-01): 0.29.0 (2024-04-01):
* TODO * Enhancement: %GITHUB%/issues/1662 Strong default grids
* Enhancement: %GITHUB%/issues/1656 Display-->Goto Position dialog should accept + as well as - for number prefixes
* Bugfix: %GITHUB%/issues/1651 Errors when adding polygons with 4 points
* Bugfix: %GITHUB%/issues/1644 DRC: some issues with edge layers
* Bugfix: %GITHUB%/issues/1643 DRC: Feeding the same layer to two-layer operations in deep mode does not render the desired result
* Enhancement: %GITHUB%/issues/1638 let klayout marker browser read strmxor .. xor.gds.gz, xor.oas result files
* Enhancement: %GITHUB%/issues/1637 XOR optimization for prBoundary layer
* Bugfix: %GITHUB%/issues/1632 rdb python/ruby module: modifing items not possible as they are const
* Enhancement: %GITHUB%/issues/1598 LVS - Support for Soft Connections
* Bugfix: %GITHUB%/issues/1586 Refactoring transformation conversion functions for complex transformation
* Enhancement: %GITHUB%/issues/1583 Add possibility to customize main window title
* Enhancement: %GITHUB%/issues/1513 Update Qt version for Qt bindings to 5.12.12 and 6.2.1
* Bugfix: %GITHUB%/issues/1356 Instance Property form: Array Instance col/row would be more intuitive then the current row/col
* Enhancement: New ruler type "auto measure along edge"
* Enhancement: Trigger ruler measurement on mouse hovering transiently
* Enhancement: Min and max value bounds for PCell parameters in editor
The condition is not strictly enforced - for example it is not checked when
changing parameters programmatically. For that, use "coerce_parameters".
Still, this feature is an editing aid.
* Bugfix: Pixel garbage in color selector button with "Auto" color selected
* Bugfix: DRC/LVS - connect_explicit did not accept an array of nets as single argument
* Bugfix: 'edge outside polygon' now consistently ignores the border of the polygon
* Bugfix: Warning level was ignored for some warnings in LEF/DEF reader
* Bugfix: Netlist reader: anonymous circuits are not checked for known parameters
* Enhancement: LVS - Supporting remote must-connect connections
So far, must-connect connections had to be made one level up in the hierarchy
or promoted further using labels and such. Now, must-connect connections
can be made at any point up in the hierarchy.
* Bugfix: LVS - do not waste too much time analyzing failed matches
* Enhancement: LVS - LVS: Consider net names identical that differ
in signal type suffix only - e.g. 'NET:I' is identical to 'NET'
* Enhancement: OASIS reader will produce layers that are listed in layer table
but empty. Previously, empty layers were never created, even if listed in
the layer table.
* Enhancement: Reading from HTTP streams and pipes now supports automatic .gz uncompression
* Enhancement: New DRC Features
- "edges" method allows selecting convext/concave/step edges
- Interaction count for edge/edge edge/polygon "interacting"
- Improved handling of dots (degenerated edges) - these are now
passed through the edge/edge and edge/polygon booleans and
participate in "interact". This enables selecting corners and
using them to select edges.
* Enhancement: New RBA/pya Features
- Main window title: MainWindow#title (property)
- LayoutView#is_dirty?
- Triangulation: Region#delaunay
- Quality rasterizer: Region#rasterize
- Generic edge and polygon filters and operators support hierarchical processing
with Python or Ruby callbacks: classes EdgePairFilter, EdgePairOperator,
EdgePairToPolygonOperator, EdgePairToEdgeOperator, EdgeFilter, EdgeOperator,
EdgeToPolygonOperator, EdgeToEdgePairOperator, PolygonFilter, PolygonOperator
PolygonToEdgeOperator, PolygonToEdgePairOperator, TextFilter, TextOperator,
TextToPolygonOperator
Methods: EdgePairs#filter, EdgePairs#filtered, EdgePairs#process, EdgePairs#processed,
same for Edges, Regions and Texts
- Polygon#split, Polygon#break, same for DPolygon, SimplePolygon, DSimplePolygon
- Keyword arguments for Python, Ruby and Expressions
- You can now also use "klayout" package inside the application (same code
for Python module and application) - i.e. "import klayout.db"
- Synonyms: connect/disconnect for events for better compatibility with PyQt5
0.28.17 (2024-02-16): 0.28.17 (2024-02-16):
* Enhancement: %GITHUB%/issues/1626 Technology specific grids * Enhancement: %GITHUB%/issues/1626 Technology specific grids

View File

@ -843,7 +843,6 @@ Class<db::PCellParameterDeclaration> decl_PCellParameterDeclaration ("db", "PCel
"This method will add the given value with the given description to the list of\n" "This method will add the given value with the given description to the list of\n"
"choices. If choices are defined, KLayout will show a drop-down box instead of an\n" "choices. If choices are defined, KLayout will show a drop-down box instead of an\n"
"entry field in the parameter user interface.\n" "entry field in the parameter user interface.\n"
"If a range is already set for this parameter the choice will not be added and a warning message is showed.\n"
) + ) +
gsi::method ("choice_values", &db::PCellParameterDeclaration::get_choices, gsi::method ("choice_values", &db::PCellParameterDeclaration::get_choices,
"@brief Returns a list of choice values\n" "@brief Returns a list of choice values\n"

View File

@ -481,6 +481,13 @@ outside:
out = in.drc(primary.edges(convex)) out = in.drc(primary.edges(convex))
</pre> </pre>
</p><p> </p><p>
In addition, "not_.." variants are available which selects edges
not qualifying for the specific mode:
</p><p>
<pre>
out = in.drc(primary.edges(not_convex))
</pre>
</p><p>
The mode argument is ignored when translating other objects than The mode argument is ignored when translating other objects than
polygons. polygons.
</p> </p>

View File

@ -808,7 +808,14 @@ outside:
out = in.edges(convex) out = in.edges(convex)
</pre> </pre>
</p><p> </p><p>
This feature is only available for polygon layers. In addition, "not_.." variants are available which selects edges
not qualifying for the specific mode:
</p><p>
<pre>
out = in.edges(not_convex)
</pre>
</p><p>
The mode argument is only available for polygon layers.
</p><p> </p><p>
The following images show the effect of the mode argument: The following images show the effect of the mode argument:
</p><p> </p><p>

File diff suppressed because it is too large Load Diff

View File

@ -4994,12 +4994,12 @@ class LayoutViewBase:
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer value @brief Compares two enums
""" """
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums @brief Compares an enum with an integer value
""" """
def __hash__(self) -> int: def __hash__(self) -> int:
r""" r"""
@ -5032,12 +5032,12 @@ class LayoutViewBase:
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer for inequality @brief Compares two enums for inequality
""" """
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums for inequality @brief Compares an enum with an integer for inequality
""" """
def __repr__(self) -> str: def __repr__(self) -> str:
r""" r"""
@ -7230,12 +7230,12 @@ class Macro:
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer value @brief Compares two enums
""" """
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums @brief Compares an enum with an integer value
""" """
def __hash__(self) -> int: def __hash__(self) -> int:
r""" r"""
@ -7268,12 +7268,12 @@ class Macro:
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums for inequality @brief Compares an enum with an integer for inequality
""" """
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer for inequality @brief Compares two enums for inequality
""" """
def __repr__(self) -> str: def __repr__(self) -> str:
r""" r"""