cutout#

Edb.cutout(signal_list=None, reference_list=None, extent_type='ConvexHull', expansion_size=0.002, use_round_corner=False, output_aedb_path=None, open_cutout_at_end=True, use_pyaedt_cutout=True, number_of_threads=4, use_pyaedt_extent_computing=True, extent_defeature=0, remove_single_pin_components=False, custom_extent=None, custom_extent_units='mm', include_partial_instances=False, keep_voids=True, check_terminals=False, include_pingroups=False, expansion_factor=0, maximum_iterations=10, preserve_components_with_model=False, simple_pad_check=True)[source]#

Create a cutout using an approach entirely based on PyAEDT. This method replaces all legacy cutout methods in PyAEDT. It does in sequence: - delete all nets not in list, - create a extent of the nets, - check and delete all vias not in the extent, - check and delete all the primitives not in extent, - check and intersect all the primitives that intersect the extent.

Parameters:
signal_listlist

List of signal strings.

reference_listlist, optional

List of references to add. The default is ["GND"].

extent_typestr, optional

Type of the extension. Options are "Conforming", "ConvexHull", and "Bounding". The default is "Conforming".

expansion_sizefloat, str, optional

Expansion size ratio in meters. The default is 0.002.

use_round_cornerbool, optional

Whether to use round corners. The default is False.

output_aedb_pathstr, optional

Full path and name for the new AEDB file. If None, then current aedb will be cutout.

open_cutout_at_endbool, optional

Whether to open the cutout at the end. The default is True.

use_pyaedt_cutoutbool, optional

Whether to use new PyAEDT cutout method or EDB API method. New method is faster than native API method since it benefits of multithread.

number_of_threadsint, optional

Number of thread to use. Default is 4. Valid only if use_pyaedt_cutout is set to True.

use_pyaedt_extent_computingbool, optional

Whether to use pyaedt extent computing (experimental) or EDB API.

extent_defeaturefloat, optional

Defeature the cutout before applying it to produce simpler geometry for mesh (Experimental). It applies only to Conforming bounding box. Default value is 0 which disable it.

remove_single_pin_componentsbool, optional

Remove all Single Pin RLC after the cutout is completed. Default is False.

custom_extentlist

Points list defining the cutout shape. This setting will override extent_type field.

custom_extent_unitsstr

Units of the point list. The default is "mm". Valid only if custom_extend is provided.

include_partial_instancesbool, optional

Whether to include padstack instances that have bounding boxes intersecting with point list polygons. This operation may slow down the cutout export.Valid only if custom_extend and use_pyaedt_cutout is provided.

keep_voidsbool

Boolean used for keep or not the voids intersecting the polygon used for clipping the layout. Default value is True, False will remove the voids.Valid only if custom_extend is provided.

check_terminalsbool, optional

Whether to check for all reference terminals and increase extent to include them into the cutout. This applies to components which have a model (spice, touchstone or netlist) associated.

include_pingroupsbool, optional

Whether to check for all pingroups terminals and increase extent to include them into the cutout. It requires check_terminals.

expansion_factorint, optional

The method computes a float representing the largest number between the dielectric thickness or trace width multiplied by the expansion_factor factor. The trace width search is limited to nets with ports attached. Works only if use_pyaedt_cutout. Default is 0 to disable the search.

maximum_iterationsint, optional

Maximum number of iterations before stopping a search for a cutout with an error. Default is 10.

preserve_components_with_modelbool, optional

Whether to preserve all pins of components that have associated models (Spice or NPort). This parameter is applicable only for a PyAEDT cutout (except point list).

simple_pad_checkbool, optional

Whether to use the center of the pad to find the intersection with extent or use the bounding box. Second method is much slower and requires to disable multithread on padstack removal. Default is True.

Returns:
bool

True when successful, False when failed.

Examples

>>> edb = Edb(r'C:\test.aedb', edbversion="2022.2")
>>> edb.logger.info_timer("Edb Opening")
>>> edb.logger.reset_timer()
>>> start = time.time()
>>> signal_list = []
>>> for net in edb.nets.netlist:
>>>      if "3V3" in net:
>>>           signal_list.append(net)
>>> power_list = ["PGND"]
>>> edb.cutout(signal_list=signal_list, reference_list=power_list, extent_type="Conforming")
>>> end_time = str((time.time() - start)/60)
>>> edb.logger.info("Total pyaedt cutout time in min %s", end_time)
>>> edb.nets.plot(signal_list, None, color_by_net=True)
>>> edb.nets.plot(power_list, None, color_by_net=True)
>>> edb.save_edb()
>>> edb.close_edb()