Siwave#

class pyedb.grpc.database.siwave.Siwave(p_edb)#

Bases: object

Manages EDB methods related to Siwave Setup accessible from Edb.siwave property.

Parameters:
edb_classpyedb.edb.Edb

Inherited parent object.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
>>> edb_siwave = edbapp.siwave

Overview#

create_circuit_port_on_pin

Create a circuit port on a pin.

create_port_between_pin_and_layer

Create circuit port between pin and a reference layer.

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 on a net.

create_current_source_on_net

Create a current source on a net.

create_dc_terminal

Create a DC terminal.

create_exec_file

Create an executable file.

add_cpa_analysis

add_siwave_syz_analysis

Add a SIwave AC analysis to EDB.

add_siwave_dc_analysis

Add a Siwave DC analysis in EDB.

create_pin_group_terminal

Create a pin group terminal.

create_rlc_component

Create physical RLC component.

create_pin_group

Create pin group on the component.

create_pin_group_on_net

Create pin group on component by net name.

create_current_source_on_pin_group

Create current source between two pin groups.

create_voltage_source_on_pin_group

Create voltage source between two pin groups.

create_voltage_probe_on_pin_group

Create voltage probe between two pin groups.

create_circuit_port_on_pin_group

Create a port between two pin groups.

place_voltage_probe

Place a voltage probe between two points.

create_impedance_crosstalk_scan

Create Siwave crosstalk scan object.

excitations

Excitation sources in the layout.

sources

All sources in the layout.

probes

All probes in the layout.

pin_groups

All layout pin groups.

icepak_use_minimal_comp_defaults

Icepak default setting.

icepak_component_file

Icepak component file path.

Import detail#

from pyedb.grpc.database.siwave import Siwave

Property detail#

property Siwave.excitations: Dict[str, Any]#

Excitation sources in the layout.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
>>> excitations = edbapp.siwave.excitations
property Siwave.sources: Dict[str, Any]#

All sources in the layout.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
>>> sources = edbapp.siwave.sources
property Siwave.probes: Dict[str, Any]#

All probes in the layout.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
>>> probes = edbapp.siwave.probes
property Siwave.pin_groups: Dict[str, Any]#

All layout pin groups.

Returns:
dict

Dictionary of pin groups with names as keys and pin group objects as values.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
>>> pin_groups = edbapp.siwave.pin_groups
>>> for name, group in pin_groups.items():
...     print(f"Pin group {name} has {len(group.pins)} pins")
property Siwave.icepak_use_minimal_comp_defaults: bool#

Icepak default setting.

If True, only resistors are active in Icepak simulation and power dissipation is calculated from DC results.

property Siwave.icepak_component_file: str#

Icepak component file path.

Method detail#

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

Create a circuit port on a pin.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_circuit_port_on_pin() instead.

Parameters:
pos_pinObject

Edb Pin

neg_pinObject

Edb Pin

impedancefloat, optional

Port Impedance. Default is 50.

port_namestr, optional

Port Name

Returns:
str

Port Name.

Siwave.create_port_between_pin_and_layer(component_name=None, pins_name=None, layer_name=None, reference_net=None, impedance=50.0)#

Create circuit port between pin and a reference layer.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_port_between_pin_and_layer() instead.

Parameters:
component_namestr

Component name.

pins_namestr

Pin name or list of pin names.

layer_namestr

Layer name.

reference_netstr

Reference net name.

impedancefloat, optional

Port impedance. Default is 50.0 ohms.

Returns:
PadstackInstanceTerminal

Created terminal.

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

Create a voltage source.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_voltage_source_on_pin() instead.

Parameters:
pos_pinObject

Positive Pin.

neg_pinObject

Negative Pin.

voltage_valuefloat, optional

Value for the voltage. Default is 3.3.

phase_valueoptional

Value for the phase. Default is 0.

source_namestr, optional

Name of the source. Default is "".

Returns:
str

Source Name.

Siwave.create_current_source_on_pin(pos_pin, neg_pin, current_value=0.1, phase_value=0, source_name='')#

Create a current source.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_current_source_on_pin() instead.

Parameters:
pos_pinObject

Positive pin.

neg_pinObject

Negative pin.

current_valuefloat, optional

Value for the current. Default is 0.1.

phase_valueoptional

Value for the phase. Default is 0.

source_namestr, optional

Name of the source. Default is "".

Returns:
str

Source Name.

Siwave.create_resistor_on_pin(pos_pin, neg_pin, rvalue=1, resistor_name='')#

Create a resistor boundary between two given pins.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_resistor_on_pin() instead.

Parameters:
pos_pinObject

Positive Pin.

neg_pinObject

Negative Pin.

rvaluefloat, optional

Resistance value. Default is 1.

resistor_namestr, optional

Name of the resistor. Default is "".

Returns:
str

Name of the resistor.

Siwave.create_circuit_port_on_net(positive_component_name, positive_net_name, negative_component_name=None, negative_net_name=None, impedance_value=50, port_name='')#

Create a circuit port on a net.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_circuit_port_on_net() instead.

Groups all pins belonging to the specified net and 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. Default is None.

negative_net_namestr, optional

Name of the negative net name. Default is None (searches for GND nets).

impedance_valuefloat, optional

Port impedance value. Default is 50.

port_namestr, optional

Name of the port. Default is "".

Returns:
str

The name of the port.

Siwave.create_voltage_source_on_net(positive_component_name, positive_net_name, negative_component_name=None, negative_net_name=None, voltage_value=3.3, phase_value=0, source_name='')#

Create a voltage source on a net.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_voltage_source_on_net() instead.

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. Default is None.

negative_net_namestr, optional

Name of the negative net name. Default is None (searches for GND nets).

voltage_valuefloat, optional

Value for the voltage. Default is 3.3.

phase_valueoptional

Value for the phase. Default is 0.

source_namestr, optional

Name of the source. Default is "".

Returns:
str

The name of the source.

Siwave.create_current_source_on_net(positive_component_name, positive_net_name, negative_component_name=None, negative_net_name=None, current_value=0.1, phase_value=0, source_name='')#

Create a current source on a net.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_current_source_on_net() instead.

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. Default is None.

negative_net_namestr, optional

Name of the negative net name. Default is None (searches for GND nets).

current_valuefloat, optional

Value for the current. Default is 0.1.

phase_valueoptional

Value for the phase. Default is 0.

source_namestr, optional

Name of the source. Default is "".

Returns:
str

The name of the source.

Siwave.create_dc_terminal(component_name, net_name, source_name='')#

Create a DC terminal.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_dc_terminal() instead.

Parameters:
component_namestr

Name of the positive component.

net_namestr

Name of the positive net.

source_namestr, optional

Name of the source. Default is "".

Returns:
str

The name of the source.

Siwave.create_exec_file(add_dc: bool = False, add_ac: bool = False, add_syz: bool = False, export_touchstone: bool = False, touchstone_file_path: str = '') bool#

Create an executable file.

Parameters:
add_dcbool, optional

Whether to add the DC option in the EXE file. Default is False.

add_acbool, optional

Whether to add the AC option in the EXE file. Default is False.

add_syzbool, optional

Whether to add the SYZ option in the EXE file. Default is False.

export_touchstonebool, optional

Add the Touchstone file export option in the EXE file. Default is False.

touchstone_file_pathstr, optional

File path for the Touchstone file. Default is "". When no path is specified and export_touchstone=True, the project path is used.

Returns:
bool

True if file was created, False otherwise.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
>>> # Create exec file with AC and SYZ options
>>> success = edbapp.siwave.create_exec_file(add_ac=True, add_syz=True)
>>> # Create exec file with Touchstone export
>>> success = edbapp.siwave.create_exec_file(
...     add_ac=True, export_touchstone=True, touchstone_file_path="C:/temp/my_touchstone.s2p"
... )
Siwave.add_cpa_analysis(name=None, siwave_cpa_setup_class=None)#
Siwave.add_siwave_syz_analysis(accuracy_level: int = 1, distribution: str = 'linear', start_freq: str | float = 1, stop_freq: str | float = 1000000000.0, step_freq: str | float | int = 1000000.0, discrete_sweep: bool = False) Any#

Add a SIwave AC analysis to EDB.

Parameters:
accuracy_levelint, optional

Level of accuracy of SI slider. Default is 1.

distributionstr, optional

Type of the sweep. Default is "linear". Options are: - "linear" - "linear_count" - "decade_count" - "octave_count" - "exponential"

start_freqstr, float, optional

Starting frequency. Default is 1.

stop_freqstr, float, optional

Stopping frequency. Default is 1e9.

step_freqstr, float, int, optional

Frequency step. Default is 1e6. Used for "decade_count", "linear_count", "octave_count" distribution. Must be integer in that case.

discrete_sweepbool, optional

Whether the sweep is discrete. Default is False.

Returns:
pyedb.dotnet.database.edb_data.siwave_simulation_setup_data.SiwaveSYZSimulationSetup

Setup object class.

Examples

>>> from pyedb import Edb
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
>>> # Add SYZ analysis with linear sweep from 1kHz to 10GHz
>>> setup = edbapp.siwave.add_siwave_syz_analysis(start_freq=1e3, stop_freq=10e9, distribution="linear")
>>> # Add SYZ analysis with decade sweep
>>> setup = edbapp.siwave.add_siwave_syz_analysis(
...     start_freq=1e3,
...     stop_freq=10e9,
...     distribution="decade_count",
...     step_freq=10,  # 10 points per decade
... )
Siwave.add_siwave_dc_analysis(name: str | None = None) Any#

Add a Siwave DC analysis in EDB.

Note

Source Reference to Ground settings works only from 2021.2

Parameters:
namestr, optional

Setup name.

Returns:
pyedb.dotnet.database.edb_data.siwave_simulation_setup_data.SiwaveDCSimulationSetup

Setup object class.

Examples

>>> from pyedb import Edb
>>> edb = Edb("pathtoaedb", edbversion="2021.2")
>>> edb.siwave.add_siwave_ac_analysis()
>>> edb.siwave.add_siwave_dc_analysis2("my_setup")
Siwave.create_pin_group_terminal(source)#

Create a pin group terminal.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_pin_group_terminal() instead.

Parameters:
sourceVoltageSource, CircuitPort, CurrentSource, DCTerminal or ResistorSource

Name of the source.

Siwave.create_rlc_component(pins, component_name='', r_value=1.0, c_value=1e-09, l_value=1e-09, is_parallel=False)#

Create physical RLC component.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.components.create_rlc_component() instead.

Parameters:
pinslist[Edb.Cell.Primitive.PadstackInstance]

List of EDB pins.

component_namestr

Component name.

r_valuefloat

Resistor value.

c_valuefloat

Capacitance value.

l_valuefloat

Inductor value.

is_parallelbool

Use parallel model when True, series when False.

Returns:
pyedb.dotnet.database.components.Components

Created EDB component.

Siwave.create_pin_group(reference_designator, pin_numbers, group_name=None)#

Create pin group on the component.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.components.create_pin_group() instead.

Parameters:
reference_designatorstr

References designator of the component.

pin_numbersint, str, list

List of pin names.

group_namestr, optional

Name of the pin group.

Returns:
PinGroup

Pin group object.

Siwave.create_pin_group_on_net(reference_designator, net_name, group_name=None)#

Create pin group on component by net name.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.components.create_pin_group_on_net() instead.

Parameters:
reference_designatorstr

References designator of the component.

net_namestr

Name of the net.

group_namestr, optional

Name of the pin group.

Returns:
PinGroup

Pin group object.

Siwave.create_current_source_on_pin_group(pos_pin_group_name, neg_pin_group_name, magnitude=1, phase=0, name=None)#

Create current source between two pin groups.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_current_source_on_pin_group() instead.

Parameters:
pos_pin_group_namestr

Name of the positive pin group.

neg_pin_group_namestr

Name of the negative pin group.

magnitudeint, float, optional

Magnitude of the source. Default is 1.

phaseint, float, optional

Phase of the source. Default is 0.

namestr, optional

Source name.

Returns:
bool

True when successful, False otherwise.

Siwave.create_voltage_source_on_pin_group(pos_pin_group_name, neg_pin_group_name, magnitude=1, phase=0, name=None, impedance=0.001)#

Create voltage source between two pin groups.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_voltage_source_on_pin_group() instead.

Parameters:
pos_pin_group_namestr

Name of the positive pin group.

neg_pin_group_namestr

Name of the negative pin group.

magnitudeint, float, optional

Magnitude of the source. Default is 1.

phaseint, float, optional

Phase of the source. Default is 0.

namestr, optional

Source name.

impedancefloat, optional

Source impedance. Default is 0.001.

Returns:
bool

True when successful, False otherwise.

Siwave.create_voltage_probe_on_pin_group(probe_name, pos_pin_group_name, neg_pin_group_name, impedance=1000000.0)#

Create voltage probe between two pin groups.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_voltage_probe_on_pin_group() instead.

Parameters:
probe_namestr

Name of the probe.

pos_pin_group_namestr

Name of the positive pin group.

neg_pin_group_namestr

Name of the negative pin group.

impedanceint, float, optional

Probe impedance. Default is 1e6.

Returns:
bool

True when successful, False otherwise.

Siwave.create_circuit_port_on_pin_group(pos_pin_group_name, neg_pin_group_name, impedance=50, name=None)#

Create a port between two pin groups.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.create_circuit_port_on_pin_group() instead.

Parameters:
pos_pin_group_namestr

Name of the positive pin group.

neg_pin_group_namestr

Name of the negative pin group.

impedanceint, float, optional

Impedance of the port. Default is 50.

namestr, optional

Port name.

Returns:
bool

True when successful, False otherwise.

Siwave.place_voltage_probe(name, positive_net_name, positive_location, positive_layer, negative_net_name, negative_location, negative_layer)#

Place a voltage probe between two points.

Deprecated since version pyedb: 0.28.0 Use pyedb.grpc.core.excitations.place_voltage_probe() instead.

Parameters:
namestr

Name of the probe.

positive_net_namestr

Name of the positive net.

positive_locationlist

Location of the positive terminal.

positive_layerstr

Layer of the positive terminal.

negative_net_namestr

Name of the negative net.

negative_locationlist

Location of the negative terminal.

negative_layerstr

Layer of the negative terminal.

Siwave.create_impedance_crosstalk_scan(scan_type: str = 'impedance') pyedb.misc.siw_feature_config.xtalk_scan.scan_config.SiwaveScanConfig#

Create Siwave crosstalk scan object.

Parameters:
scan_typestr, optional

Scan type to be analyzed. Options are: - "impedance" for frequency impedance scan - "frequency_xtalk" for frequency domain crosstalk - "time_xtalk" for time domain crosstalk Default is "impedance".

Returns:
SiwaveScanConfig

Scan configuration object.