Skip to content

Commit 4324e44

Browse files
committed
test #5 done
1 parent 52da4fd commit 4324e44

File tree

7 files changed

+172
-61
lines changed

7 files changed

+172
-61
lines changed

src/pyedb/grpc/edb.py

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,7 @@
4343
from pyedb.grpc.edb_core.nets.extended_net import ExtendedNet
4444
from pyedb.grpc.edb_core.nets.net_class import NetClass
4545
from pyedb.grpc.edb_core.padstack import Padstacks
46-
from pyedb.grpc.edb_core.ports.ports import (
47-
BundleWavePort,
48-
CoaxPort,
49-
ExcitationSources,
50-
GapPort,
51-
WavePort,
52-
)
46+
from pyedb.grpc.edb_core.ports.ports import BundleWavePort, CoaxPort, GapPort, WavePort
5347
from pyedb.grpc.edb_core.primitive.circle import Circle
5448
from pyedb.grpc.edb_core.primitive.padstack_instances import PadstackInstance
5549
from pyedb.grpc.edb_core.primitive.path import Path
@@ -455,8 +449,7 @@ def excitations_nets(self):
455449
@property
456450
def sources(self):
457451
"""Get all layout sources."""
458-
terms = [term for term in self.layout.terminals if term.boundary_type.value in [3, 4, 7]]
459-
return {ter.name: ExcitationSources(self, ter) for ter in terms}
452+
self.terminals
460453

461454
@property
462455
def voltage_regulator_modules(self):
@@ -3545,16 +3538,14 @@ def create_voltage_source(self, terminal, ref_terminal):
35453538
-------
35463539
class:`legacy.edb_core.edb_data.ports.ExcitationSources`
35473540
"""
3548-
from ansys.edb.core.terminal.terminals import BoundaryType as GrpcBoundaryType
3549-
35503541
term = Terminal(self, terminal)
3551-
term.boundary_type = GrpcBoundaryType.VOLTAGE_SOURCE
3542+
term.boundary_type = "voltage_source"
35523543

35533544
ref_term = Terminal(self, ref_terminal)
3554-
ref_term.boundary_type = GrpcBoundaryType.VOLTAGE_SOURCE
3545+
ref_term.boundary_type = "voltage_source"
35553546

35563547
term.ref_terminal = ref_terminal
3557-
return self.sources[term.name]
3548+
return term
35583549

35593550
def create_current_source(self, terminal, ref_terminal):
35603551
"""Create a current source.

src/pyedb/grpc/edb_core/primitive/padstack_instances.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
from ansys.edb.core.primitive.primitive import PadstackInstance as GrpcPadstackInstance
3030
from ansys.edb.core.utility.value import Value as GrpcValue
3131

32+
from pyedb.grpc.edb_core.terminal.padstack_instance_terminal import (
33+
PadstackInstanceTerminal,
34+
)
3235
from pyedb.modeler.geometry_operators import GeometryOperators
3336

3437

@@ -77,6 +80,19 @@ def create_terminal(self, name=None):
7780
term = PadstackInstanceTerminal(self._pedb, self._edb_object)
7881
return term.create(self, name)
7982

83+
def get_terminal(self, create_new_terminal=True):
84+
inst_term = self.get_padstack_instance_terminal()
85+
if inst_term.is_null and create_new_terminal:
86+
inst_term = PadstackInstanceTerminal.create(
87+
layout=self.layout,
88+
name=self.name,
89+
padstack_instance=self,
90+
layer=self.get_layer_range()[0],
91+
net=self.net,
92+
is_ref=False,
93+
)
94+
return PadstackInstanceTerminal(self._pedb, inst_term)
95+
8096
def create_coax_port(self, name=None, radial_extent_factor=0):
8197
"""Create a coax port."""
8298
port = self.create_port(name)

src/pyedb/grpc/edb_core/source_excitations.py

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
ResistorSource,
5353
Source,
5454
SourceType,
55-
VoltageSource,
5655
)
5756
from pyedb.modeler.geometry_operators import GeometryOperators
5857

@@ -887,7 +886,7 @@ def _create_terminal_on_pins(
887886
use_pin_top_layer=True,
888887
source_type="circuit_port",
889888
impedance=50,
890-
magnitude=1.0,
889+
magnitude=0,
891890
phase=0,
892891
r=0,
893892
l=0,
@@ -998,7 +997,7 @@ def _create_terminal_on_pins(
998997
return False
999998
return pos_terminal.name
1000999

1001-
def create_voltage_source_on_pin(self, pos_pin, neg_pin, voltage_value=3.3, phase_value=0, source_name=""):
1000+
def create_voltage_source_on_pin(self, pos_pin, neg_pin, voltage_value=0, phase_value=0, source_name=None):
10021001
"""Create a voltage source.
10031002
10041003
Parameters
@@ -1028,21 +1027,18 @@ def create_voltage_source_on_pin(self, pos_pin, neg_pin, voltage_value=3.3, phas
10281027
>>> edbapp.excitations.create_voltage_source_on_pin(pins[0], pins[1], 50, "source_name")
10291028
"""
10301029

1031-
voltage_source = VoltageSource()
1032-
voltage_source.positive_node.net = pos_pin.net.name
1033-
voltage_source.negative_node.net = neg_pin.net.name
1034-
voltage_source.magnitude = voltage_value
1035-
voltage_source.phase = phase_value
10361030
if not source_name:
10371031
source_name = (
1038-
f"VSource_{pos_pin.component.name}_{pos_pin.net.name}_{neg_pin.component.name}_{neg_pin.net.name}"
1032+
f"VSource_{pos_pin.component.name}_{pos_pin.net_name}_{neg_pin.component.name}_{neg_pin.net_name}"
10391033
)
1040-
voltage_source.name = source_name
1041-
voltage_source.positive_node.component_node = pos_pin.component
1042-
voltage_source.positive_node.node_pins = pos_pin
1043-
voltage_source.negative_node.component_node = neg_pin.component
1044-
voltage_source.negative_node.node_pins = pos_pin
1045-
return self._create_terminal_on_pins(voltage_source)
1034+
return self._create_terminal_on_pins(
1035+
positive_pin=pos_pin,
1036+
negative_pin=neg_pin,
1037+
name=source_name,
1038+
magnitude=voltage_value,
1039+
phase=phase_value,
1040+
source_type="voltage_source",
1041+
)
10461042

10471043
def create_current_source_on_pin(self, pos_pin, neg_pin, current_value=0.1, phase_value=0, source_name=""):
10481044
"""Create a current source.
@@ -1351,7 +1347,7 @@ def create_voltage_source_on_net(
13511347
negative_net_name=None,
13521348
voltage_value=3.3,
13531349
phase_value=0,
1354-
source_name="",
1350+
source_name=None,
13551351
):
13561352
"""Create a voltage source.
13571353
@@ -1389,29 +1385,23 @@ def create_voltage_source_on_net(
13891385
negative_component_name = positive_component_name
13901386
if not negative_net_name:
13911387
negative_net_name = self._check_gnd(negative_component_name)
1392-
voltage_source = VoltageSource()
1393-
voltage_source.positive_node.net = positive_net_name
1394-
voltage_source.negative_node.net = negative_net_name
1395-
voltage_source.magnitude = voltage_value
1396-
voltage_source.phase = phase_value
1397-
pos_node_cmp = self._pedb.components.get_component_by_name(positive_component_name)
1398-
neg_node_cmp = self._pedb.components.get_component_by_name(negative_component_name)
13991388
pos_node_pins = self._pedb.components.get_pin_from_component(positive_component_name, positive_net_name)
14001389
neg_node_pins = self._pedb.components.get_pin_from_component(negative_component_name, negative_net_name)
14011390

1402-
if source_name == "":
1403-
source_name = "Vsource_{}_{}_{}_{}".format(
1404-
positive_component_name,
1405-
positive_net_name,
1406-
negative_component_name,
1407-
negative_net_name,
1391+
if not source_name:
1392+
source_name = (
1393+
f"Vsource_{positive_component_name}_{positive_net_name}_"
1394+
f"{negative_component_name}_{negative_net_name}"
14081395
)
1409-
voltage_source.name = source_name
1410-
voltage_source.positive_node.component_node = pos_node_cmp
1411-
voltage_source.positive_node.node_pins = pos_node_pins
1412-
voltage_source.negative_node.component_node = neg_node_cmp
1413-
voltage_source.negative_node.node_pins = neg_node_pins
1414-
return self.create_pin_group_terminal(voltage_source)
1396+
return self.create_pin_group_terminal(
1397+
positive_pins=pos_node_pins,
1398+
negatives_pins=neg_node_pins,
1399+
name=source_name,
1400+
magnitude=voltage_value,
1401+
phase=phase_value,
1402+
impedance=1e-6,
1403+
source_type="voltage_source",
1404+
)
14151405

14161406
def create_current_source_on_net(
14171407
self,

src/pyedb/grpc/edb_core/terminal/padstack_instance_terminal.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,43 @@ def net_name(self):
6969
def net_name(self, val):
7070
if not self.is_null and self.net.is_null:
7171
self.net.name = val
72+
73+
@property
74+
def magnitude(self):
75+
return self.source_amplitude
76+
77+
@magnitude.setter
78+
def magnitude(self, value):
79+
self.source_amplitude = value
80+
81+
@property
82+
def phase(self):
83+
return self.source_phase
84+
85+
@phase.setter
86+
def phase(self, value):
87+
self.source_phase = value
88+
89+
@property
90+
def source_amplitude(self):
91+
return super().source_amplitude
92+
93+
@source_amplitude.setter
94+
def source_amplitude(self, value):
95+
super(PadstackInstanceTerminal, self.__class__).source_amplitude.__set__(self, value)
96+
97+
@property
98+
def source_phase(self):
99+
return super().source_phase.value
100+
101+
@source_phase.setter
102+
def source_phase(self, value):
103+
super(PadstackInstanceTerminal, self.__class__).source_phase.__set__(self, value)
104+
105+
@property
106+
def impedance(self):
107+
return super().impedance.value
108+
109+
@impedance.setter
110+
def impedance(self, value):
111+
super(PadstackInstanceTerminal, self.__class__).impedance.__set__(self, value)

src/pyedb/grpc/edb_core/terminal/pingroup_terminal.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121
# SOFTWARE.
2222

23+
from ansys.edb.core.terminal.terminals import BoundaryType as GrpcBoundaryType
2324
from ansys.edb.core.terminal.terminals import PinGroupTerminal as GrpcPinGroupTerminal
2425

26+
from pyedb.grpc.edb_core.nets.net import Net
27+
2528

2629
class PinGroupTerminal(GrpcPinGroupTerminal):
2730
"""Manages pin group terminal properties."""
@@ -30,3 +33,73 @@ def __init__(self, pedb, edb_object):
3033
super().__init__(edb_object)
3134
self._edb_object = edb_object
3235
self._pedb = pedb
36+
37+
@property
38+
def boundary_type(self):
39+
return super().boundary_type.name.lower()
40+
41+
@boundary_type.setter
42+
def boundary_type(self, value):
43+
if value == "voltage_source":
44+
value = GrpcBoundaryType.VOLTAGE_SOURCE
45+
if value == "current_source":
46+
value = GrpcBoundaryType.CURRENT_SOURCE
47+
if value == "port":
48+
value = GrpcBoundaryType.PORT
49+
if value == "voltage_probe":
50+
value = GrpcBoundaryType.VOLTAGE_PROBE
51+
super(PinGroupTerminal, self.__class__).boundary_type.__set__(self, value)
52+
53+
@property
54+
def magnitude(self):
55+
return self.source_amplitude
56+
57+
@magnitude.setter
58+
def magnitude(self, value):
59+
self.source_amplitude = value
60+
61+
@property
62+
def phase(self):
63+
return self.source_phase
64+
65+
@phase.setter
66+
def phase(self, value):
67+
self.source_phase = value
68+
69+
@property
70+
def source_amplitude(self):
71+
return super().source_amplitude
72+
73+
@source_amplitude.setter
74+
def source_amplitude(self, value):
75+
super(PinGroupTerminal, self.__class__).source_amplitude.__set__(self, value)
76+
77+
@property
78+
def source_phase(self):
79+
return super().source_amplitude.value
80+
81+
@source_phase.setter
82+
def source_phase(self, value):
83+
super(PinGroupTerminal, self.__class__).source_phase.__set__(self, value)
84+
85+
@property
86+
def impedance(self):
87+
return super().impedance.value
88+
89+
@impedance.setter
90+
def impedance(self, value):
91+
super(PinGroupTerminal, self.__class__).impedance.__set__(self, value)
92+
93+
@property
94+
def net(self):
95+
return Net(self._pedb, super().net)
96+
97+
@net.setter
98+
def net(self, value):
99+
super(PinGroupTerminal, self.__class__).net.__set__(self, value)
100+
101+
@property
102+
def pin_group(self):
103+
from pyedb.grpc.edb_core.hierarchy.pingroup import PinGroup
104+
105+
return PinGroup(self._pedb, super().pin_group)

src/pyedb/grpc/edb_core/terminal/terminal.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
class Terminal(GrpcTerminal):
3636
def __init__(self, pedb, edb_object):
37-
super().__init__(edb_object)
37+
super().__init__(edb_object.msg)
3838
self._pedb = pedb
3939
self._reference_object = None
4040
self.edb_object = edb_object
@@ -44,7 +44,7 @@ def __init__(self, pedb, edb_object):
4444
"pec": GrpcBoundaryType.PEC,
4545
"rlc": GrpcBoundaryType.RLC,
4646
"current_source": GrpcBoundaryType.CURRENT_SOURCE,
47-
"vltage_source": GrpcBoundaryType.VOLTAGE_SOURCE,
47+
"voltage_source": GrpcBoundaryType.VOLTAGE_SOURCE,
4848
"nexxim_ground": GrpcBoundaryType.NEXXIM_GROUND,
4949
"nxxim_port": GrpcBoundaryType.NEXXIM_PORT,
5050
"dc_terminal": GrpcBoundaryType.DC_TERMINAL,
@@ -164,11 +164,11 @@ def boundary_type(self):
164164
str
165165
port, pec, rlc, current_source, voltage_source, nexxim_ground, nexxim_pPort, dc_terminal, voltage_probe.
166166
"""
167-
return self.boundary_type.name.lower()
167+
return super().boundary_type.name.lower()
168168

169169
@boundary_type.setter
170170
def boundary_type(self, value):
171-
self.boundary_type = self._boundary_type_mapping[value]
171+
super(Terminal, self.__class__).boundary_type.__set__(self, self._boundary_type_mapping[value])
172172

173173
@property
174174
def is_port(self):

tests/grpc/system/test_edb.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,18 @@ def test_siwave_create_circuit_port_on_net(self):
8383

8484
def test_siwave_create_voltage_source(self):
8585
"""Create a voltage source."""
86-
assert len(self.edbapp.sources) == 0
8786
assert "Vsource_" in self.edbapp.siwave.create_voltage_source_on_net("U1", "USB3_D_P", "U1", "GND", 3.3, 0)
88-
assert len(self.edbapp.sources) == 1
89-
assert list(self.edbapp.sources.values())[0].magnitude == 3.3
87+
assert len(self.edbapp.terminals) == 2
88+
assert list(self.edbapp.terminals.values())[0].magnitude == 3.3
9089

9190
pins = self.edbapp.components.get_pin_from_component("U1")
92-
assert "VSource_" in self.edbapp.siwave.create_voltage_source_on_pin(pins[300], pins[10], 3.3, 0)
93-
assert len(self.edbapp.sources) == 2
94-
assert len(self.edbapp.probes) == 0
95-
list(self.edbapp.sources.values())[0].phase = 1
96-
assert list(self.edbapp.sources.values())[0].phase == 1
91+
assert "VSource_" in self.edbapp.siwave.create_voltage_source_on_pin(
92+
pins[300], pins[10], voltage_value=3.3, phase_value=1
93+
)
94+
assert len(self.edbapp.terminals) == 4
95+
assert list(self.edbapp.terminals.values())[2].phase == 1.0
96+
assert list(self.edbapp.terminals.values())[2].magnitude == 3.3
97+
9798
u6 = self.edbapp.components["U6"]
9899
voltage_source = self.edbapp.create_voltage_source(
99100
u6.pins["F2"].get_terminal(create_new_terminal=True), u6.pins["F1"].get_terminal(create_new_terminal=True)

0 commit comments

Comments
 (0)