Modeler#

class pyedb.grpc.database.modeler.Modeler(p_edb)#

Bases: object

Manages EDB methods for primitives management accessible from Edb.modeler.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
>>> edb_layout = edbapp.modeler

Overview#

delete_batch_primitives

Delete a batch of primitives and update caches.

get_primitive

Retrieve primitive by ID.

get_polygons_by_layer

Retrieve polygons by layer.

get_primitive_by_layer_and_point

Get primitive at specified point on layer.

parametrize_polygon

Parametrize polygon points based on another polygon.

create_trace

Create trace path.

create_polygon

Create polygon primitive.

create_rectangle

Create rectangle primitive.

create_circle

Create circle primitive.

delete_primitives

Delete primitives by net name(s).

get_primitives

Get primitives with filtering.

fix_circle_void_for_clipping

Fix circle void clipping issues.

parametrize_trace_width

Parametrize trace width.

unite_polygons_on_layer

Unite polygons on layer.

defeature_polygon

Defeature polygon.

get_layout_statistics

Get layout statistics.

create_bondwire

Create bondwire.

create_pin_group

Create pin group.

insert_layout_instance_on_layer

Insert a layout instance into the active layout.

insert_layout_instance_placement_3d

Insert a 3D component placement into the active layout.

insert_3d_component_placement_3d

Insert a 3D component placement into the active layout.

insert_3d_component_on_layer

Insert a layout instance into the active layout.

primitives

primitives_by_name

primitives_by_net

primitives_by_layer

primitives_by_layer_and_net

Return all primitives indexed first by layer, then by net.

db

Database object.

layers

Dictionary of layers.

polygons_by_layer

Primitives organized by layer names.

rectangles

All rectangle primitives.

circles

All circle primitives.

paths

All path primitives.

polygons

All polygon primitives.

get_polygon_bounding_box

Get bounding box of polygon.

get_polygon_points

Get points defining a polygon.

add_void

Add void to shape.

__getitem__

Get a primitive by name or ID.

Import detail#

from pyedb.grpc.database.modeler import Modeler

Property detail#

property Modeler.primitives: list[pyedb.grpc.database.primitive.primitive.Primitive]#
property Modeler.primitives_by_name#
property Modeler.primitives_by_net#
property Modeler.primitives_by_layer#
property Modeler.primitives_by_layer_and_net: Dict[str, Dict[str, List[pyedb.grpc.database.primitive.primitive.Primitive]]]#

Return all primitives indexed first by layer, then by net.

Returns:
dict

Nested dictionary: layer -> net -> list[Primitive]

property Modeler.db: Any#

Database object.

Returns:
ansys.edb.core.database.Database

Database object.

property Modeler.layers: Dict[str, object]#

Dictionary of layers.

Returns:
dict

Dictionary of layers with layer names as keys.

property Modeler.polygons_by_layer: Dict[str, List[pyedb.grpc.database.primitive.primitive.Primitive]]#

Primitives organized by layer names.

Returns:
dict

Dictionary where keys are layer names and values are lists of polygons.

property Modeler.rectangles: List[pyedb.grpc.database.primitive.rectangle.Rectangle]#

All rectangle primitives.

Returns:
list

List of pyedb.dotnet.database.edb_data.primitives_data.Rectangle objects.

property Modeler.circles: List[pyedb.grpc.database.primitive.circle.Circle]#

All circle primitives.

Returns:
list

List of pyedb.dotnet.database.edb_data.primitives_data.Circle objects.

property Modeler.paths: List[pyedb.grpc.database.primitive.path.Path]#

All path primitives.

Returns:
list

List of pyedb.dotnet.database.edb_data.primitives_data.Path objects.

property Modeler.polygons: List[pyedb.grpc.database.primitive.polygon.Polygon]#

All polygon primitives.

Returns:
list

List of pyedb.dotnet.database.edb_data.primitives_data.Polygon objects.

Method detail#

Modeler.__getitem__(name: str | int) pyedb.grpc.database.primitive.primitive.Primitive#

Get a primitive by name or ID.

Parameters:
namestr or int

Name or ID of the primitive.

Returns:
pyedb.grpc.database.primitive.primitive.Primitive

Primitive instance if found, None otherwise.

Raises:
TypeError

If name is not str or int.

Modeler.delete_batch_primitives(prim_list: List[pyedb.grpc.database.primitive.primitive.Primitive]) None#

Delete a batch of primitives and update caches.

Parameters:
prim_listlist

List of primitive objects to delete.

Modeler.get_primitive(primitive_id: int, edb_uid=True) pyedb.grpc.database.primitive.primitive.Primitive | None#

Retrieve primitive by ID.

Parameters:
primitive_idint

Primitive ID.

Returns:
pyedb.dotnet.database.edb_data.primitives_data.Primitive or bool

Primitive object if found, False otherwise.

Modeler.get_polygons_by_layer(layer_name: str, net_list: List[str] | None = None) List[pyedb.grpc.database.primitive.primitive.Primitive]#

Retrieve polygons by layer.

Parameters:
layer_namestr

Layer name.

net_listlist, optional

List of net names to filter by.

Returns:
list

List of polygon objects.

Modeler.get_primitive_by_layer_and_point(point: List[float] | None = None, layer: str | List[str] | None = None, nets: str | List[str] | None = None) List[pyedb.grpc.database.primitive.primitive.Primitive]#

Get primitive at specified point on layer.

Parameters:
pointlist, optional

[x, y] coordinate point.

layerstr or list, optional

Layer name(s) to filter by.

netsstr or list, optional

Net name(s) to filter by.

Returns:
list

List of primitive objects at the point.

Raises:
ValueError

If point is invalid.

static Modeler.get_polygon_bounding_box(polygon: pyedb.grpc.database.primitive.primitive.Primitive) List[float]#

Get bounding box of polygon.

Parameters:
polygonpyedb.dotnet.database.edb_data.primitives_data.Primitive

Polygon primitive.

Returns:
list

Bounding box coordinates [min_x, min_y, max_x, max_y].

static Modeler.get_polygon_points(polygon) List[List[float]]#

Get points defining a polygon.

Parameters:
polygonpyedb.dotnet.database.edb_data.primitives_data.Primitive

Polygon primitive.

Returns:
list

List of point coordinates.

Modeler.parametrize_polygon(polygon, selection_polygon, offset_name='offsetx', origin=None) bool#

Parametrize polygon points based on another polygon.

Parameters:
polygonpyedb.dotnet.database.edb_data.primitives_data.Primitive

Polygon to parametrize.

selection_polygonpyedb.dotnet.database.edb_data.primitives_data.Primitive

Polygon used for selection.

offset_namestr, optional

Name of offset parameter.

originlist, optional

[x, y] origin point for vector calculation.

Returns:
bool

True if successful, False otherwise.

Modeler.create_trace(path_list: Iterable[float] | ansys.edb.core.geometry.polygon_data.PolygonData, layer_name: str, width: float = 1, net_name: str = '', start_cap_style: str = 'Round', end_cap_style: str = 'Round', corner_style: str = 'Round') pyedb.grpc.database.primitive.primitive.Primitive | None#

Create trace path.

Parameters:
path_listIterable

List of points [x,y] or [[x, y], …] or [(x, y)…].

layer_namestr

Layer name.

widthfloat, optional

Trace width.

net_namestr, optional

Associated net name.

start_cap_stylestr, optional

Start cap style (“Round”, “Extended”, “Flat”).

end_cap_stylestr, optional

End cap style (“Round”, “Extended”, “Flat”).

corner_stylestr, optional

Corner style (“Round”, “Sharp”, “Mitered”).

Returns:
pyedb.dotnet.database.edb_data.primitives_data.Path or bool

Path object if created, False otherwise.

Modeler.create_polygon(points: List[List[float]] | ansys.edb.core.geometry.polygon_data.PolygonData, layer_name: str, voids: List[Any] | None = [], net_name: str = '') pyedb.grpc.database.primitive.primitive.Primitive | None#

Create polygon primitive.

Parameters:
pointslist or ansys.edb.core.geometry.polygon_data.PolygonData

Polygon points or PolygonData object.

layer_namestr

Layer name.

voidslist, optional

List of void shapes or points.

net_namestr, optional

Associated net name.

Returns:
pyedb.dotnet.database.edb_data.primitives_data.Polygon or bool

Polygon object if created, False otherwise.

Modeler.create_rectangle(layer_name: str, net_name: str = '', lower_left_point: str = '', upper_right_point: str = '', center_point: str = '', width: str | float = '', height: str | float = '', representation_type: str = 'lower_left_upper_right', corner_radius: str = '0mm', rotation: str = '0deg') pyedb.grpc.database.primitive.primitive.Primitive | None#

Create rectangle primitive.

Parameters:
layer_namestr

Layer name.

net_namestr, optional

Associated net name.

lower_left_pointlist, optional

[x,y] lower left point.

upper_right_pointlist, optional

[x,y] upper right point.

center_pointlist, optional

[x,y] center point.

widthstr or float, optional

Rectangle width.

heightstr or float, optional

Rectangle height.

representation_typestr, optional

“lower_left_upper_right” or “center_width_height”.

corner_radiusstr, optional

Corner radius with units.

rotationstr, optional

Rotation angle with units.

Returns:
pyedb.dotnet.database.edb_data.primitives_data.Rectangle or bool

Rectangle object if created, False otherwise.

Modeler.create_circle(layer_name: str, x: float | str, y: float | str, radius: float | str, net_name: str = '') pyedb.grpc.database.primitive.primitive.Primitive | None#

Create circle primitive.

Parameters:
layer_namestr

Layer name.

xfloat

Center x-coordinate.

yfloat

Center y-coordinate.

radiusfloat

Circle radius.

net_namestr, optional

Associated net name.

Returns:
pyedb.dotnet.database.edb_data.primitives_data.Circle or bool

Circle object if created, False otherwise.

Modeler.delete_primitives(net_names: str | List[str]) bool#

Delete primitives by net name(s).

Parameters:
net_namesstr or list

Net name(s).

Returns:
bool

True if successful, False otherwise.

Modeler.get_primitives(net_name: str | None = None, layer_name: str | None = None, prim_type: str | None = None, is_void: bool = False) List[pyedb.grpc.database.primitive.primitive.Primitive]#

Get primitives with filtering.

Parameters:
net_namestr, optional

Net name filter.

layer_namestr, optional

Layer name filter.

prim_typestr, optional

Primitive type filter.

is_voidbool, optional

Void primitive filter.

Returns:
list

List of filtered primitives.

Modeler.fix_circle_void_for_clipping() bool#

Fix circle void clipping issues.

Returns:
bool

True if changes made, False otherwise.

Modeler.parametrize_trace_width(nets_name: str | List[str], layers_name: str | List[str] | None = None, parameter_name: str = 'trace_width', variable_value: float | str | None = None) bool#

Parametrize trace width.

Parameters:
nets_namestr or list

Net name(s).

layers_namestr or list, optional

Layer name(s) filter.

parameter_namestr, optional

Parameter name prefix.

variable_valuefloat or str, optional

Initial parameter value.

Returns:
bool

True if successful, False otherwise.

Modeler.unite_polygons_on_layer(layer_name: str | List[str] | None = None, delete_padstack_gemometries: bool = False, net_names_list: List[str] | None = None) bool#

Unite polygons on layer.

Parameters:
layer_namestr or list, optional

Layer name(s) to process.

delete_padstack_gemometriesbool, optional

Whether to delete padstack geometries.

net_names_listlist, optional

Net names filter.

Returns:
bool

True if successful, False otherwise.

Modeler.defeature_polygon(poly: pyedb.grpc.database.primitive.polygon.Polygon, tolerance: float = 0.001) bool#

Defeature polygon.

Parameters:
polypyedb.dotnet.database.edb_data.primitives_data.Polygon

Polygon to defeature.

tolerancefloat, optional

Maximum surface deviation tolerance.

Returns:
bool

True if successful, False otherwise.

Modeler.get_layout_statistics(evaluate_area: bool = False, net_list: List[str] | None = None) pyedb.grpc.database.utility.layout_statistics.LayoutStatistics#

Get layout statistics.

Parameters:
evaluate_areabool, optional

Whether to compute metal area statistics.

net_listlist, optional

Net list for area computation.

Returns:
LayoutStatistics

Layout statistics object.

Modeler.create_bondwire(definition_name: str, placement_layer: str, width: float | str, material: str, start_layer_name: str, start_x: float | str, start_y: float | str, end_layer_name: str, end_x: float | str, end_y: float | str, net: str, start_cell_instance_name: str | None = None, end_cell_instance_name: str | None = None, bondwire_type: str = 'jedec4') pyedb.grpc.database.primitive.primitive.Primitive | None#

Create bondwire.

Parameters:
definition_namestr

Bondwire definition name.

placement_layerstr

Placement layer name.

widthfloat or str

Bondwire width.

materialstr

Material name.

start_layer_namestr

Start layer name.

start_xfloat or str

Start x-coordinate.

start_yfloat or str

Start y-coordinate.

end_layer_namestr

End layer name.

end_xfloat or str

End x-coordinate.

end_yfloat or str

End y-coordinate.

netstr

Associated net name.

start_cell_instance_namestr, optional

Start cell instance name.

end_cell_instance_namestr, optional

End cell instance name.

bondwire_typestr, optional

Bondwire type (“jedec4”, “jedec5”, “apd”).

Returns:
pyedb.dotnet.database.edb_data.primitives_data.Bondwire or bool

Bondwire object if created, False otherwise.

Modeler.create_pin_group(name: str, pins_by_id: List[int] | None = None, pins_by_aedt_name: List[str] | None = None, pins_by_name: List[str] | None = None) bool#

Create pin group.

Parameters:
namestr

Pin group name.

pins_by_idlist, optional

List of pin IDs.

pins_by_aedt_namelist, optional

List of pin AEDT names.

pins_by_namelist, optional

List of pin names.

Returns:
pyedb.dotnet.database.siwave.pin_group.PinGroup or bool

PinGroup object if created, False otherwise.

static Modeler.add_void(shape: pyedb.grpc.database.primitive.primitive.Primitive, void_shape: pyedb.grpc.database.primitive.primitive.Primitive | List[pyedb.grpc.database.primitive.primitive.Primitive]) bool#

Add void to shape.

Parameters:
shapepyedb.dotnet.database.edb_data.primitives_data.Primitive

Main shape.

void_shapelist or pyedb.dotnet.database.edb_data.primitives_data.Primitive

Void shape(s).

Returns:
bool

True if successful, False otherwise.

Modeler.insert_layout_instance_on_layer(cell_name: str, placement_layer: str, rotation: float | str = 0, x: float | str = 0, y: float | str = 0, place_on_bottom: bool = False, local_origin_x: float | str | None = 0, local_origin_y: float | str | None = 0) Any#

Insert a layout instance into the active layout.

Parameters:
cell_name: str

Name of the layout to insert.

placement_layer: str

Placement Layer.

scalingfloat

Scale parameter.

rotationfloat or str

Rotation angle, specified counter-clockwise in radians.

mirrorbool

Mirror about Y-axis.

xfloat or str

X offset.

yfloat or str

Y offset.

place_on_bottombool

Whether to place the layout instance on the bottom of the layer.

local_origin_x: float or str

Local origin X coordinate.

local_origin_y: float or str

Local origin Y coordinate.

Modeler.insert_layout_instance_placement_3d(cell_name: str | pyedb.grpc.database.primitive.path.Path, x: float | str = 0.0, y: float | str = 0.0, z: float | str = 0.0, rotation_x: float | str = 0.0, rotation_y: float | str = 0.0, rotation_z: float | str = 0.0, local_origin_x: float | str = 0.0, local_origin_y: float | str = 0.0, local_origin_z: float | str = 0.0) Any#

Insert a 3D component placement into the active layout.

Parameters:
cell_name: str

Name of the layout to insert.

x: float or str

X coordinate.

y: float or str

Y coordinate.

z: float or str

Z coordinate.

rotation_x: float or str

Rotation angle around X-axis, specified counter-clockwise in radians.

rotation_y: float or str

Rotation angle around Y-axis, specified counter-clockwise in radians.

rotation_z: float or str

Rotation angle around Z-axis, specified counter-clockwise in radians.

local_origin_x: float or str

Local origin X coordinate.

local_origin_y: float or str

Local origin Y coordinate.

local_origin_z: float or str

Local origin Z coordinate.

Modeler.insert_3d_component_placement_3d(a3dcomp_path: str | pyedb.grpc.database.primitive.path.Path, x: float | str = 0.0, y: float | str = 0.0, z: float | str = 0.0, rotation_x: float | str = 0.0, rotation_y: float | str = 0.0, rotation_z: float | str = 0.0, local_origin_x: float | str = 0.0, local_origin_y: float | str = 0.0, local_origin_z: float | str = 0.0) Any#

Insert a 3D component placement into the active layout.

Parameters:
a3dcomp_path: str or Path

File path to the 3D component.

x: float or str

X coordinate.

y: float or str

Y coordinate.

z: float or str

Z coordinate.

rotation_x: float or str

Rotation angle around X-axis, specified counter-clockwise in radians.

rotation_y: float or str

Rotation angle around Y-axis, specified counter-clockwise in radians.

rotation_z: float or str

Rotation angle around Z-axis, specified counter-clockwise in radians.

local_origin_x: float or str

Local origin X coordinate.

local_origin_y: float or str

Local origin Y coordinate.

local_origin_z: float or str

Local origin Z coordinate.

Modeler.insert_3d_component_on_layer(a3dcomp_path: str | pyedb.grpc.database.primitive.path.Path, placement_layer: str, rotation: float | str = 0, x: float | str = 0, y: float | str = 0, place_on_bottom: bool = False, local_origin_x: float | str | None = 0, local_origin_y: float | str | None = 0, local_origin_z: float | str | None = 0) Any#

Insert a layout instance into the active layout.

Parameters:
a3dcomp_path: str or Path

File path to the 3D component.

placement_layer: str

Placement Layer.

rotationfloat or str

Rotation angle, specified counter-clockwise in radians.

xfloat or str

X offset.

yfloat or str

Y offset.

place_on_bottombool

Whether to place the layout instance on the bottom of the layer.

local_origin_x: float or str

Local origin X coordinate.

local_origin_y: float or str

Local origin Y coordinate.

local_origin_z: float or str

Local origin Z coordinate.