EdbHfss#

class pyedb.dotnet.database.hfss.EdbHfss(p_edb)#

Bases: object

Manages EDB method to configure Hfss setup accessible from Edb.hfss property.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder")
>>> edb_hfss = edb_3dedbapp.hfss

Overview#

get_trace_width_for_traces_with_ports

Retrieve the trace width for traces with ports.

create_circuit_port_on_pin

Create Circuit Port on Pin.

create_voltage_source_on_pin

Create a voltage source.

create_current_source_on_pin

Create a current source.

create_resistor_on_pin

Create a Resistor boundary between two given pins.

create_circuit_port_on_net

Create a circuit port on a NET.

create_voltage_source_on_net

Create a voltage source.

create_current_source_on_net

Create a current source.

create_coax_port_on_component

Create a coaxial port on a component or component list on a net or net list.

create_differential_wave_port

Create a differential wave port.

create_bundle_wave_port

Create a bundle wave port.

create_hfss_ports_on_padstack

Create an HFSS port on a padstack.

create_edge_port_on_polygon

Create lumped port between two edges from two different polygons. Can also create a vertical port when

create_wave_port

Create a wave port.

create_edge_port_vertical

Create a vertical edge port.

create_edge_port_horizontal

Create a horizontal edge port.

create_lumped_port_on_net

Create an edge port on nets. This command looks for traces and polygons on the

create_vertical_circuit_port_on_clipped_traces

Create an edge port on clipped signal traces.

get_layout_bounding_box

Evaluate the layout bounding box.

configure_hfss_extents

Configure the HFSS extent box.

add_setup

Adding method for grpc compatibility

configure_hfss_analysis_setup

Configure HFSS analysis setup.

trim_component_reference_size

Trim the common component reference to the minimally acceptable size.

set_coax_port_attributes

Set coaxial port attribute with forcing default impedance to 50 Ohms and adjusting the coaxial extent radius.

get_ports_number

Return the total number of excitation ports in a layout.

layout_defeaturing

Defeature the layout by reducing the number of points for polygons based on surface deviation criteria.

create_rlc_boundary_on_pins

Create hfss rlc boundary on pins.

hfss_extent_info

HFSS extent information.

excitations

Get all excitations.

sources

Get all sources.

probes

Get all probes.

Import detail#

from pyedb.dotnet.database.hfss import EdbHfss

Property detail#

property EdbHfss.hfss_extent_info#

HFSS extent information.

property EdbHfss.excitations#

Get all excitations.

property EdbHfss.sources#

Get all sources.

property EdbHfss.probes#

Get all probes.

Method detail#

EdbHfss.get_trace_width_for_traces_with_ports()#

Retrieve the trace width for traces with ports.

Returns:
dict

Dictionary of trace width data.

EdbHfss.create_circuit_port_on_pin(pos_pin, neg_pin, impedance=50, port_name=None)#

Create Circuit Port on Pin.

Parameters:
pos_pinObject

Edb Pin

neg_pinObject

Edb Pin

impedancefloat

Port Impedance

port_namestr, optional

Port Name

>>> from pyedb import Edb
>>> edbapp = Edb(“myaedbfolder”, “project name”, “release version”)
>>> pins = edbapp.components.get_pin_from_component(“U2A5”)
>>> edbapp.hfss.create_circuit_port_on_pin(pins[0], pins[1], 50, “port_name”)
Returns:
str

Port Name.

EdbHfss.create_voltage_source_on_pin(pos_pin, neg_pin, voltage_value=3.3, phase_value=0, source_name='')#

Create a voltage source.

Parameters:
pos_pinObject

Positive Pin.

neg_pinObject

Negative Pin.

voltage_valuefloat, optional

Value for the voltage. The default is 3.3.

phase_valueoptional

Value for the phase. The default is 0.

source_namestr, optional

Name of the source. The default is "".

Returns:
str

Source Name.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", "project name", "release version")
>>> pins = edbapp.components.get_pin_from_component("U2A5")
>>> edbapp.hfss.create_voltage_source_on_pin(pins[0], pins[1], 50, "source_name")
EdbHfss.create_current_source_on_pin(pos_pin, neg_pin, current_value=0.1, phase_value=0, source_name='')#

Create a current source.

Parameters:
pos_pinObject

Positive Pin.

neg_pinObject

Negative Pin.

current_valuefloat, optional

Value for the current. The default is 0.1.

phase_valueoptional

Value for the phase. The default is 0.

source_namestr, optional

Name of the source. The default is "".

Returns:
str

Source Name.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", "project name", "release version")
>>> pins = edbapp.components.get_pin_from_component("U2A5")
>>> edbapp.hfss.create_current_source_on_pin(pins[0], pins[1], 50, "source_name")
EdbHfss.create_resistor_on_pin(pos_pin, neg_pin, rvalue=1, resistor_name='')#

Create a Resistor boundary between two given pins.

Parameters:
pos_pinObject

Positive Pin.

neg_pinObject

Negative Pin.

rvaluefloat, optional

Resistance value. The default is 1.

resistor_namestr, optional

Name of the resistor. The default is "".

Returns:
str

Name of the Resistor.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", "project name", "release version")
>>> pins = edbapp.components.get_pin_from_component("U2A5")
>>> edbapp.hfss.create_resistor_on_pin(pins[0], pins[1], 50, "res_name")
EdbHfss.create_circuit_port_on_net(positive_component_name, positive_net_name, negative_component_name=None, negative_net_name='GND', impedance_value=50, port_name='')#

Create a circuit port on a NET. It groups all pins belonging to the specified net and then applies the port on PinGroups.

Parameters:
positive_component_namestr

Name of the positive component.

positive_net_namestr

Name of the positive net.

negative_component_namestr, optional

Name of the negative component. The default is None, in which case the name of the positive net is assigned.

negative_net_namestr, optional

Name of the negative net name. The default is "GND".

impedance_valuefloat, optional

Port impedance value. The default is 50.

port_namestr, optional

Name of the port. The default is "".

Returns:
str

The name of the port.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", "project name", "release version")
>>> edbapp.hfss.create_circuit_port_on_net("U2A5", "V1P5_S3", "U2A5", "GND", 50, "port_name")
EdbHfss.create_voltage_source_on_net(positive_component_name, positive_net_name, negative_component_name=None, negative_net_name='GND', voltage_value=3.3, phase_value=0, source_name='')#

Create a voltage source.

Parameters:
positive_component_namestr

Name of the positive component.

positive_net_namestr

Name of the positive net.

negative_component_namestr, optional

Name of the negative component. The default is None, in which case the name of the positive net is assigned.

negative_net_namestr, optional

Name of the negative net. The default is "GND".

voltage_valuefloat, optional

Value for the voltage. The default is 3.3.

phase_valueoptional

Value for the phase. The default is 0.

source_namestr, optional

Name of the source. The default is "".

Returns:
str

Source Name.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", "project name", "release version")
>>> edb.hfss.create_voltage_source_on_net("U2A5", "V1P5_S3", "U2A5", "GND", 3.3, 0, "source_name")
EdbHfss.create_current_source_on_net(positive_component_name, positive_net_name, negative_component_name=None, negative_net_name='GND', current_value=0.1, phase_value=0, source_name='')#

Create a current source.

Parameters:
positive_component_namestr

Name of the positive component.

positive_net_namestr

Name of the positive net.

negative_component_namestr, optional

Name of the negative component. The default is None, in which case the name of the positive net is assigned.

negative_net_namestr, optional

Name of the negative net. The default is "GND".

current_valuefloat, optional

Value for the current. The default is 0.1.

phase_valueoptional

Value for the phase. The default is 0.

source_namestr, optional

Name of the source. The default is "".

Returns:
str

Source Name.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", "project name", "release version")
>>> edb.hfss.create_current_source_on_net("U2A5", "V1P5_S3", "U2A5", "GND", 0.1, 0, "source_name")
EdbHfss.create_coax_port_on_component(ref_des_list, net_list, delete_existing_terminal=False)#
Create a coaxial port on a component or component list on a net or net list.

The name of the new coaxial port is automatically assigned.

Parameters:
ref_des_listlist, str

List of one or more reference designators.

net_listlist, str

List of one or more nets.

delete_existing_terminalbool

Only active with grpc version. This argument is added only to ensure compatibility between DotNet and grpc.

Returns:
bool

True when successful, False when failed.

EdbHfss.create_differential_wave_port(positive_primitive_id, positive_points_on_edge, negative_primitive_id, negative_points_on_edge, port_name=None, horizontal_extent_factor=5, vertical_extent_factor=3, pec_launch_width='0.01mm')#

Create a differential wave port.

Parameters:
positive_primitive_idint, EDBPrimitives

Primitive ID of the positive terminal.

positive_points_on_edgelist

Coordinate of the point to define the edge terminal. The point must be close to the target edge but not on the two ends of the edge.

negative_primitive_idint, EDBPrimitives

Primitive ID of the negative terminal.

negative_points_on_edgelist

Coordinate of the point to define the edge terminal. The point must be close to the target edge but not on the two ends of the edge.

port_namestr, optional

Name of the port. The default is None.

horizontal_extent_factorint, float, optional

Horizontal extent factor. The default value is 5.

vertical_extent_factorint, float, optional

Vertical extent factor. The default value is 3.

pec_launch_widthstr, optional

Launch Width of PEC. The default value is "0.01mm".

Returns:
tuple

The tuple contains: (port_name, pyedb.dotnet.database.edb_data.sources.ExcitationDifferential).

Examples

>>> edb.hfss.create_differential_wave_port(0, ["-50mm", "-0mm"], 1, ["-50mm", "-0.2mm"])
EdbHfss.create_bundle_wave_port(primitives_id, points_on_edge, port_name=None, horizontal_extent_factor=5, vertical_extent_factor=3, pec_launch_width='0.01mm')#

Create a bundle wave port.

Parameters:
primitives_idlist

Primitive ID of the positive terminal.

points_on_edgelist

Coordinate of the point to define the edge terminal. The point must be close to the target edge but not on the two ends of the edge.

port_namestr, optional

Name of the port. The default is None.

horizontal_extent_factorint, float, optional

Horizontal extent factor. The default value is 5.

vertical_extent_factorint, float, optional

Vertical extent factor. The default value is 3.

pec_launch_widthstr, optional

Launch Width of PEC. The default value is "0.01mm".

Returns:
tuple

The tuple contains: (port_name, pyedb.egacy.database.edb_data.sources.ExcitationDifferential).

Examples

>>> edb.hfss.create_bundle_wave_port(0, ["-50mm", "-0mm"], 1, ["-50mm", "-0.2mm"])
EdbHfss.create_hfss_ports_on_padstack(pinpos, portname=None)#

Create an HFSS port on a padstack.

Parameters:
pinpos

Position of the pin.

portnamestr, optional

Name of the port. The default is None.

Returns:
bool

True when successful, False when failed.

EdbHfss.create_edge_port_on_polygon(polygon=None, reference_polygon=None, terminal_point=None, reference_point=None, reference_layer=None, port_name=None, port_impedance=50.0, force_circuit_port=False)#

Create lumped port between two edges from two different polygons. Can also create a vertical port when the reference layer name is only provided. When a port is created between two edge from two polygons which don’t belong to the same layer, a circuit port will be automatically created instead of lumped. To enforce the circuit port instead of lumped,use the boolean force_circuit_port.

Parameters:
polygonThe EDB polygon object used to assign the port.

Edb.Cell.Primitive.Polygon object.

reference_polygonThe EDB polygon object used to define the port reference.

Edb.Cell.Primitive.Polygon object.

terminal_pointThe coordinate of the point to define the edge terminal of the port. This point must be
located on the edge of the polygon where the port has to be placed. For instance taking the middle point
of an edge is a good practice but any point of the edge should be valid. Taking a corner might cause unwanted
port location.

list[float, float] with values provided in meter.

reference_pointsame as terminal_point but used for defining the reference location on the edge.

list[float, float] with values provided in meter.

reference_layerName used to define port reference for vertical ports.

str the layer name.

port_nameName of the port.

str.

port_impedanceport impedance value. Default value is 50 Ohms.

float, impedance value.

force_circuit_port ; used to force circuit port creation instead of lumped. Works for vertical and coplanar
ports.

Examples

>>> edb_path = path_to_edb
>>> edb = Edb(edb_path)
>>> poly_list = [poly for poly in list(edb.layout.primitives) if poly.GetPrimitiveType() == 2]
>>> port_poly = [poly for poly in poly_list if poly.GetId() == 17][0]
>>> ref_poly = [poly for poly in poly_list if poly.GetId() == 19][0]
>>> port_location = [-65e-3, -13e-3]
>>> ref_location = [-63e-3, -13e-3]
>>> edb.hfss.create_edge_port_on_polygon(polygon=port_poly, reference_polygon=ref_poly,
>>> terminal_point=port_location, reference_point=ref_location)
EdbHfss.create_wave_port(prim_id, point_on_edge, port_name=None, impedance=50, horizontal_extent_factor=5, vertical_extent_factor=3, pec_launch_width='0.01mm')#

Create a wave port.

Parameters:
prim_idint, Primitive

Primitive ID.

point_on_edgelist

Coordinate of the point to define the edge terminal. The point must be on the target edge but not on the two ends of the edge.

port_namestr, optional

Name of the port. The default is None.

impedanceint, float, optional

Impedance of the port. The default value is 50.

horizontal_extent_factorint, float, optional

Horizontal extent factor. The default value is 5.

vertical_extent_factorint, float, optional

Vertical extent factor. The default value is 3.

pec_launch_widthstr, optional

Launch Width of PEC. The default value is "0.01mm".

Returns:
tuple

The tuple contains: (Port name, pyedb.dotnet.database.edb_data.sources.Excitation).

Examples

>>> edb.hfss.create_wave_port(0, ["-50mm", "-0mm"])
EdbHfss.create_edge_port_vertical(prim_id, point_on_edge, port_name=None, impedance=50, reference_layer=None, hfss_type='Gap', horizontal_extent_factor=5, vertical_extent_factor=3, pec_launch_width='0.01mm')#

Create a vertical edge port.

Parameters:
prim_idint

Primitive ID.

point_on_edgelist

Coordinate of the point to define the edge terminal. The point must be on the target edge but not on the two ends of the edge.

port_namestr, optional

Name of the port. The default is None.

impedanceint, float, optional

Impedance of the port. The default value is 50.

reference_layerstr, optional

Reference layer of the port. The default is None.

hfss_typestr, optional

Type of the port. The default value is "Gap". Options are "Gap", "Wave".

horizontal_extent_factorint, float, optional

Horizontal extent factor. The default value is 5.

vertical_extent_factorint, float, optional

Vertical extent factor. The default value is 3.

radial_extent_factorint, float, optional

Radial extent factor. The default value is 0.

pec_launch_widthstr, optional

Launch Width of PEC. The default value is "0.01mm".

Returns:
str

Port name.

EdbHfss.create_edge_port_horizontal(prim_id, point_on_edge, ref_prim_id=None, point_on_ref_edge=None, port_name=None, impedance=50, layer_alignment='Upper')#

Create a horizontal edge port.

Parameters:
prim_idint

Primitive ID.

point_on_edgelist

Coordinate of the point to define the edge terminal. The point must be on the target edge but not on the two ends of the edge.

ref_prim_idint, optional

Reference primitive ID. The default is None.

point_on_ref_edgelist, optional

Coordinate of the point to define the reference edge terminal. The point must be on the target edge but not on the two ends of the edge. The default is None.

port_namestr, optional

Name of the port. The default is None.

impedanceint, float, optional

Impedance of the port. The default value is 50.

layer_alignmentstr, optional

Layer alignment. The default value is Upper. Options are "Upper", "Lower".

Returns:
str

Name of the port.

EdbHfss.create_lumped_port_on_net(nets=None, reference_layer=None, return_points_only=False, digit_resolution=6, at_bounding_box=True)#

Create an edge port on nets. This command looks for traces and polygons on the nets and tries to assign vertical lumped port.

Parameters:
netslist, optional

List of nets, str or Edb net.

reference_layerstr, Edb layer.

Name or Edb layer object.

return_points_onlybool, optional

Use this boolean when you want to return only the points from the edges and not creating ports. Default value is False.

digit_resolutionint, optional

The number of digits carried for the edge location accuracy. The default value is 6.

at_bounding_boxbool
When True will keep the edges from traces at the layout bounding box location. This is recommended when

a cutout has been performed before and lumped ports have to be created on ending traces. Default value is True.

Returns:
bool

True when successful, False when failed.

EdbHfss.create_vertical_circuit_port_on_clipped_traces(nets=None, reference_net=None, user_defined_extent=None)#

Create an edge port on clipped signal traces.

Parameters:
netslist, optional

String of one net or EDB net or a list of multiple nets or EDB nets.

reference_netstr, Edb net.

Name or EDB reference net.

user_defined_extent[x, y], EDB PolygonData

Use this point list or PolygonData object to check if ports are at this polygon border.

Returns:
[[str]]

Nested list of str, with net name as first value, X value for point at border, Y value for point at border, and terminal name.

EdbHfss.get_layout_bounding_box(layout=None, digit_resolution=6)#

Evaluate the layout bounding box.

Parameters:
layout

Edb layout.

digit_resolutionint, optional

Digit Resolution. The default value is 6.

Returns:
list

[lower left corner X, lower left corner, upper right corner X, upper right corner Y].

EdbHfss.configure_hfss_extents(simulation_setup=None)#

Configure the HFSS extent box.

Parameters:
simulation_setup

Edb_DATA.SimulationConfiguration object

Returns:
bool

True when succeeded, False when failed.

EdbHfss.add_setup(name=None)#

Adding method for grpc compatibility

EdbHfss.configure_hfss_analysis_setup(simulation_setup=None)#

Configure HFSS analysis setup.

Parameters:
simulation_setup

Edb_DATA.SimulationConfiguration object

Returns:
bool

True when succeeded, False when failed.

EdbHfss.trim_component_reference_size(simulation_setup=None, trim_to_terminals=False)#

Trim the common component reference to the minimally acceptable size.

Parameters:
simulation_setup

Edb_DATA.SimulationConfiguration object

trim_to_terminals
bool.

True, reduce the reference to a box covering only the active terminals (i.e. those with

ports).

False, reduce the reference to the minimal size needed to cover all pins

Returns:
bool

True when succeeded, False when failed.

EdbHfss.set_coax_port_attributes(simulation_setup=None)#

Set coaxial port attribute with forcing default impedance to 50 Ohms and adjusting the coaxial extent radius.

Parameters:
simulation_setup

Edb_DATA.SimulationConfiguration object.

Returns:
bool

True when succeeded, False when failed.

EdbHfss.get_ports_number()#

Return the total number of excitation ports in a layout.

Parameters:
None
Returns:
int

Number of ports.

EdbHfss.layout_defeaturing(simulation_setup=None)#

Defeature the layout by reducing the number of points for polygons based on surface deviation criteria.

Parameters:
simulation_setupEdb_DATA.SimulationConfiguration object
Returns:
bool

True when successful, False when failed.

EdbHfss.create_rlc_boundary_on_pins(positive_pin=None, negative_pin=None, rvalue=0.0, lvalue=0.0, cvalue=0.0)#

Create hfss rlc boundary on pins.

Parameters:
positive_pinPositive pin.

Edb.Cell.Primitive.PadstackInstance

negative_pinNegative pin.

Edb.Cell.Primitive.PadstackInstance

rvalueResistance value
lvalueInductance value
cvalue . Capacitance value.
Returns:
bool

True when successful, False when failed.