LayoutValidation#

class pyedb.grpc.database.layout_validation.LayoutValidation(pedb: Any)#

Manages all layout validation capabilities

Overview#

dc_shorts

Find DC shorts on layout.

disjoint_nets

Find and fix disjoint nets from a given netlist.

fix_self_intersections

Find and fix self intersections from a given netlist.

illegal_net_names

Find and fix illegal net names.

illegal_rlc_values

Find and fix RLC illegal values.

padstacks_no_name

Identify and fix padstacks without names.

Import detail#

from pyedb.grpc.database.layout_validation import LayoutValidation

Method detail#

LayoutValidation.dc_shorts(net_list: str | List[str] | None = None, fix: bool = False) List[List[str]]#

Find DC shorts on layout.

Parameters:
net_liststr or list[str], optional

List of nets.

fixbool, optional

If True, rename all the nets. (default) If False, only report dc shorts.

Returns:
List[List[str, str]]

[[net name, net name]].

Examples

>>> edb = Edb("edb_file")
>>> # Find shorts without fixing
>>> shorts = edb.layout_validation.dc_shorts()
>>>
>>> # Find and fix shorts on specific nets
>>> fixed_shorts = edb.layout_validation.dc_shorts(net_list=["GND", "VCC"], fix=True)
LayoutValidation.disjoint_nets(net_list: str | List[str] | None = None, keep_only_main_net: bool = False, clean_disjoints_less_than: float = 0.0, order_by_area: bool = False, keep_disjoint_pins: bool = False) List[str]#

Find and fix disjoint nets from a given netlist.

Parameters:
net_liststr, list, optional

List of nets on which check disjoints. If None is provided then the algorithm will loop on all nets.

keep_only_main_netbool, optional

Remove all secondary nets other than principal one (the one with more objects in it). Default is False.

clean_disjoints_less_thanbool, optional

Clean all disjoint nets with area less than specified area in square meters. Default is 0.0 to disable it.

order_by_areabool, optional

Whether if the naming order has to be by number of objects (fastest) or area (slowest but more accurate). Default is False.

keep_disjoint_pinsbool, optional

Whether if delete disjoints pins not connected to any other primitive or not. Default is False.

Returns:
List

New nets created.

Examples

>>> edb = Edb("edb_file")
>>> # Find disjoint nets on all nets
>>> new_nets = edb.layout_validation.disjoint_nets()
>>>
>>> # Clean disjoints on specific nets with advanced options
>>> cleaned = edb.layout_validation.disjoint_nets(
...     net_list=["GND"],
...     keep_only_main_net=True,
...     clean_disjoints_less_than=1e-6,
...     order_by_area=True
... ))
LayoutValidation.fix_self_intersections(net_list: str | List[str] | None = None) bool#

Find and fix self intersections from a given netlist.

Parameters:
net_liststr, list, optional

List of nets on which check disjoints. If None is provided then the algorithm will loop on all nets.

Returns:
bool

Examples

>>> edb = Edb("edb_file")
>>> # Fix self-intersections on all nets
>>> edb.layout_validation.fix_self_intersections()
>>>
>>> # Fix self-intersections on specific nets
>>> edb.layout_validation.fix_self_intersections(net_list=["RF_line"])
LayoutValidation.illegal_net_names(fix: bool = False) None#

Find and fix illegal net names.

Examples

>>> edb = Edb("edb_file")
>>> # Identify illegal net names
>>> edb.layout_validation.illegal_net_names()
>>>
>>> # Find and automatically fix illegal names
>>> edb.layout_validation.illegal_net_names(fix=True)
LayoutValidation.illegal_rlc_values(fix: bool = False) List[str]#

Find and fix RLC illegal values.

Examples

>>> edb = Edb("edb_file")
>>> # Identify components with illegal RLC values
>>> bad_components = edb.layout_validation.illegal_rlc_values()
>>>
>>> # Automatically fix invalid inductor values
>>> edb.layout_validation.illegal_rlc_values(fix=True)
LayoutValidation.padstacks_no_name(fix: bool = False) None#

Identify and fix padstacks without names.

Examples

>>> edb = Edb("edb_file")
>>> # Report unnamed padstacks
>>> edb.layout_validation.padstacks_no_name()
>>>
>>> # Automatically assign names to unnamed padstacks
>>> edb.layout_validation.padstacks_no_name(fix=True)