pyedb 0.10.0__py3-none-any.whl → 0.11.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyedb might be problematic. Click here for more details.
- pyedb/__init__.py +1 -1
- pyedb/configuration/cfg_boundaries.py +115 -0
- pyedb/configuration/cfg_components.py +205 -0
- pyedb/configuration/cfg_data.py +38 -15
- pyedb/configuration/cfg_general.py +34 -0
- pyedb/{dotnet/sim_setup_data/data/siw_dc_ir_settings.py → configuration/cfg_nets.py} +18 -21
- pyedb/configuration/cfg_padstacks.py +125 -0
- pyedb/configuration/cfg_pin_groups.py +58 -0
- pyedb/configuration/cfg_ports_sources.py +164 -0
- pyedb/configuration/cfg_s_parameter_models.py +60 -0
- pyedb/configuration/cfg_setup.py +201 -0
- pyedb/configuration/cfg_spice_models.py +49 -0
- pyedb/configuration/configuration.py +37 -532
- pyedb/dotnet/edb.py +32 -4
- pyedb/dotnet/edb_core/components.py +43 -0
- pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +465 -0
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py +17 -1
- pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -4
- pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +4 -2
- pyedb/dotnet/edb_core/edb_data/sources.py +21 -5
- pyedb/dotnet/edb_core/edb_data/terminals.py +2 -1
- pyedb/dotnet/edb_core/layout.py +13 -8
- pyedb/dotnet/edb_core/padstack.py +23 -3
- pyedb/dotnet/edb_core/sim_setup_data/__init__.py +3 -0
- pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py +3 -0
- pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +235 -0
- pyedb/dotnet/edb_core/siwave.py +2 -1
- pyedb/dotnet/edb_core/stackup.py +38 -29
- pyedb/dotnet/edb_core/utilities/simulation_setup.py +16 -7
- pyedb/siwave.py +32 -6
- pyedb/siwave_core/icepak.py +153 -0
- {pyedb-0.10.0.dist-info → pyedb-0.11.0.dist-info}/METADATA +2 -2
- {pyedb-0.10.0.dist-info → pyedb-0.11.0.dist-info}/RECORD +35 -22
- pyedb/configuration/cfg_ports.py +0 -149
- {pyedb-0.10.0.dist-info → pyedb-0.11.0.dist-info}/LICENSE +0 -0
- {pyedb-0.10.0.dist-info → pyedb-0.11.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Icepak:
|
|
25
|
+
"""SIwave Icepak."""
|
|
26
|
+
|
|
27
|
+
def __init__(self, psiw):
|
|
28
|
+
self._psiw = psiw
|
|
29
|
+
|
|
30
|
+
def run(self, name, dc_simulation_name):
|
|
31
|
+
"""Run Icepak analysis.
|
|
32
|
+
|
|
33
|
+
Parameters
|
|
34
|
+
----------
|
|
35
|
+
name : str,
|
|
36
|
+
Name of the Icepak simulation.
|
|
37
|
+
dc_simulation_name: str
|
|
38
|
+
Name of the dc simulation.
|
|
39
|
+
|
|
40
|
+
Returns
|
|
41
|
+
-------
|
|
42
|
+
|
|
43
|
+
"""
|
|
44
|
+
self._psiw._logger.info("Running Icepak simulation.")
|
|
45
|
+
flag = self._psiw.oproject.ScrRunIcepakSimulation(name, dc_simulation_name)
|
|
46
|
+
return True if flag == 0 else False
|
|
47
|
+
|
|
48
|
+
def set_meshing_detail(self, mesh_level=0):
|
|
49
|
+
"""Sets the meshing detail level for Icepak simulations.
|
|
50
|
+
|
|
51
|
+
Parameters
|
|
52
|
+
----------
|
|
53
|
+
mesh_level : int, optional
|
|
54
|
+
Meshing level.
|
|
55
|
+
|
|
56
|
+
Returns
|
|
57
|
+
-------
|
|
58
|
+
|
|
59
|
+
"""
|
|
60
|
+
flag = self._psiw.oproject.ScrSetIcepakMeshingDetail({0: "basic", 1: "detailed", 2: "exhaustive"}[mesh_level])
|
|
61
|
+
return True if flag == 0 else False
|
|
62
|
+
|
|
63
|
+
def set_board_outline_fidelity(self, fidelity=2):
|
|
64
|
+
"""Specifies the minimum edge length when modifying the board outline for export to Icepak. This
|
|
65
|
+
minimum edge length is used when indiscretion arcs into a series of straight lines and when
|
|
66
|
+
simplifying the outline to remove very small edges.
|
|
67
|
+
|
|
68
|
+
Parameters
|
|
69
|
+
----------
|
|
70
|
+
fidelity : int, float, optional
|
|
71
|
+
Fidelity level in mm.
|
|
72
|
+
|
|
73
|
+
Returns
|
|
74
|
+
-------
|
|
75
|
+
|
|
76
|
+
"""
|
|
77
|
+
flag = self._psiw.oproject.ScrSetIcepakBoardOutlineFidelity(fidelity)
|
|
78
|
+
return True if flag == 0 else False
|
|
79
|
+
|
|
80
|
+
def set_thermal_environment(
|
|
81
|
+
self,
|
|
82
|
+
convection=True,
|
|
83
|
+
force_air=True,
|
|
84
|
+
top_or_ambient_temperature=22,
|
|
85
|
+
top_or_overall_flow_direction="+X",
|
|
86
|
+
top_or_overall_flow_speed=2,
|
|
87
|
+
bottom_temperature=22,
|
|
88
|
+
bottom_flow_direction="+X",
|
|
89
|
+
bottom_flow_speed=2,
|
|
90
|
+
gravity_vector_x=0,
|
|
91
|
+
gravity_vector_y=0,
|
|
92
|
+
gravity_vector_z=9.8,
|
|
93
|
+
):
|
|
94
|
+
"""Sets the thermal environment settings to use for Icepak simulations.
|
|
95
|
+
|
|
96
|
+
Parameters
|
|
97
|
+
----------
|
|
98
|
+
convection : bool, optional
|
|
99
|
+
force_air : bool, optional
|
|
100
|
+
top_or_ambient_temperature: int, float, optional
|
|
101
|
+
Temperature above PCB in degrees Celsius.
|
|
102
|
+
top_or_overall_flow_direction : str, optional
|
|
103
|
+
Flow direction above PCB.
|
|
104
|
+
top_or_overall_flow_speed : int, float, optional
|
|
105
|
+
Flow speed above PCB.
|
|
106
|
+
bottom_temperature : int, float, optional
|
|
107
|
+
Temperature below PCB in degrees Celsius.
|
|
108
|
+
bottom_flow_direction : str, optional
|
|
109
|
+
Flow direction below PCB.
|
|
110
|
+
bottom_flow_speed : int, float, optional
|
|
111
|
+
Flow speed below PCB.
|
|
112
|
+
gravity_vector_x : int, float, optional
|
|
113
|
+
Gravity vector x for natural convection.
|
|
114
|
+
gravity_vector_y : int, float, optional
|
|
115
|
+
Gravity vector y for natural convection.
|
|
116
|
+
gravity_vector_z : int, float, optional
|
|
117
|
+
Gravity vector z for natural convection.
|
|
118
|
+
|
|
119
|
+
Returns
|
|
120
|
+
-------
|
|
121
|
+
|
|
122
|
+
"""
|
|
123
|
+
flag = self._psiw.oproject.ScrSetIcepakThermalEnv(
|
|
124
|
+
convection,
|
|
125
|
+
force_air,
|
|
126
|
+
top_or_ambient_temperature,
|
|
127
|
+
top_or_overall_flow_direction,
|
|
128
|
+
top_or_overall_flow_speed,
|
|
129
|
+
bottom_temperature,
|
|
130
|
+
bottom_flow_direction,
|
|
131
|
+
bottom_flow_speed,
|
|
132
|
+
gravity_vector_x,
|
|
133
|
+
gravity_vector_y,
|
|
134
|
+
gravity_vector_z,
|
|
135
|
+
)
|
|
136
|
+
return True if flag == 0 else False
|
|
137
|
+
|
|
138
|
+
def export_report(self, simulation_name, file_path):
|
|
139
|
+
"""Export Icepak simulation report to a file.
|
|
140
|
+
|
|
141
|
+
Parameters
|
|
142
|
+
----------
|
|
143
|
+
simulation_name : str
|
|
144
|
+
Name of the Icepak simulation.
|
|
145
|
+
file_path : str
|
|
146
|
+
Path to the report file.
|
|
147
|
+
|
|
148
|
+
Returns
|
|
149
|
+
-------
|
|
150
|
+
|
|
151
|
+
"""
|
|
152
|
+
flag = self._psiw.oproject.ScrExportIcepakSimReport(simulation_name, file_path)
|
|
153
|
+
return True if flag == 0 else False
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyedb
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.0
|
|
4
4
|
Summary: Higher-Level Pythonic Ansys Electronics Data Base
|
|
5
5
|
Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
|
|
6
6
|
Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
|
|
@@ -22,7 +22,7 @@ Requires-Dist: dotnetcore2 ==3.1.23;platform_system=='Linux'
|
|
|
22
22
|
Requires-Dist: pydantic>=2.6.4,<2.8
|
|
23
23
|
Requires-Dist: toml == 0.10.2
|
|
24
24
|
Requires-Dist: Rtree >= 1.2.0
|
|
25
|
-
Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.
|
|
25
|
+
Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.17 ; extra == "doc"
|
|
26
26
|
Requires-Dist: imageio>=2.30.0,<2.35 ; extra == "doc"
|
|
27
27
|
Requires-Dist: ipython>=8.13.0,<8.25 ; extra == "doc"
|
|
28
28
|
Requires-Dist: jupyterlab>=4.0.0,<4.3 ; extra == "doc"
|
|
@@ -1,29 +1,38 @@
|
|
|
1
|
-
pyedb/__init__.py,sha256=
|
|
1
|
+
pyedb/__init__.py,sha256=NhAIRF_lZXlTqwz5Jf4M6DaAX9zgypEfu8sejMIXRpI,1521
|
|
2
2
|
pyedb/edb_logger.py,sha256=yNkXnoL2me7ubLT6O6r6ElVnkZ1g8fmfFYC_2XJZ1Sw,14950
|
|
3
3
|
pyedb/exceptions.py,sha256=n94xluzUks6BA24vd_L6HkrvoP_H_l6__hQmqzdCyPo,111
|
|
4
|
-
pyedb/siwave.py,sha256=
|
|
4
|
+
pyedb/siwave.py,sha256=c2stPkGPdM9c0wJ19SJq_uiYTdW3sp-uO8MVA_iDw30,12548
|
|
5
5
|
pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
pyedb/configuration/
|
|
7
|
-
pyedb/configuration/
|
|
8
|
-
pyedb/configuration/
|
|
6
|
+
pyedb/configuration/cfg_boundaries.py,sha256=ABjSlQCRMJNw1YX2B4aADNlLrrFbdyv7UWewiXVdxTk,6105
|
|
7
|
+
pyedb/configuration/cfg_components.py,sha256=cvQfMjh6HBTVzVuDI7A8zkEhtgraG25dJqHRH-FbkTA,8789
|
|
8
|
+
pyedb/configuration/cfg_data.py,sha256=ZThr2rpCj4axwrBr-aQWtiTztEhRAZb1pX-S3_92aJQ,3483
|
|
9
|
+
pyedb/configuration/cfg_general.py,sha256=dB5Tpird4uiyrseOe8-QlWKsat15TjMLar5I8VZME3c,1625
|
|
10
|
+
pyedb/configuration/cfg_nets.py,sha256=mJvN_ON4Qw5psNV3agXCQAhVJbRnBpRZu1Ti3b7QnMw,1879
|
|
11
|
+
pyedb/configuration/cfg_padstacks.py,sha256=dcZku_OuZ2XaL5Vs8BEJvdcdi1N8F0EMAYNwBSdkbt0,5412
|
|
12
|
+
pyedb/configuration/cfg_pin_groups.py,sha256=BAv-u1e8aPXSTBwUBzDkzRiXB2mfCqb60I5tTrwgI7Y,2877
|
|
13
|
+
pyedb/configuration/cfg_ports_sources.py,sha256=iY5GH_ff50bt3muz2w_k9_3VTj_Yigk8Iqfh37a7vRU,6816
|
|
14
|
+
pyedb/configuration/cfg_s_parameter_models.py,sha256=HPo4sgF5tVefUwgzlP8pDBVSZ1x_pY2EiOtA0-QXjc8,2854
|
|
15
|
+
pyedb/configuration/cfg_setup.py,sha256=zhq285s5P4s90Dm5s550ldwyIVO8aXiPjAwy87ipRXU,8791
|
|
16
|
+
pyedb/configuration/cfg_spice_models.py,sha256=5gr28-4u4uj4qY8vgYFAI_PgzOQp-wPgTMMc_WcAN_w,2434
|
|
17
|
+
pyedb/configuration/configuration.py,sha256=ykDlI3v8w8x-qWuV8PrwIAHVe9jmBwCb8OeJLfBF4lk,10965
|
|
9
18
|
pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
19
|
pyedb/dotnet/clr_module.py,sha256=Mo13Of3DVSA5HR-5xZEXOiHApIKy52CUxtJ2gPkEu1A,3406
|
|
11
|
-
pyedb/dotnet/edb.py,sha256=
|
|
20
|
+
pyedb/dotnet/edb.py,sha256=qkhZgSiJoC48cOZhjDIgsPpig-i6T6_QN_mNVNTBpqE,172843
|
|
12
21
|
pyedb/dotnet/application/Variables.py,sha256=nov1kIyJO25iz8pvbU3MK1meMpRLwtISmzYqJhc7Ouo,79042
|
|
13
22
|
pyedb/dotnet/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
23
|
pyedb/dotnet/edb_core/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
|
|
15
|
-
pyedb/dotnet/edb_core/components.py,sha256=
|
|
24
|
+
pyedb/dotnet/edb_core/components.py,sha256=hJCb-DJtv-9Zhmb-q9ZEgD4Ziu0_6lPQtHoCrswgTCg,105075
|
|
16
25
|
pyedb/dotnet/edb_core/general.py,sha256=QP6lqNEcqCdj_hSKhfKbmJ2hGBOYkhjPtsVEmyrO8KU,4726
|
|
17
26
|
pyedb/dotnet/edb_core/hfss.py,sha256=pKq46cZ08nKHc1s__hkco-tA3AiBi4vV0T7w6RyQrEI,69696
|
|
18
|
-
pyedb/dotnet/edb_core/layout.py,sha256=
|
|
27
|
+
pyedb/dotnet/edb_core/layout.py,sha256=IlEkPI95AmRs5RA2X2VhDYVCyXMp36cg_1_mOUm1imE,51162
|
|
19
28
|
pyedb/dotnet/edb_core/layout_validation.py,sha256=7Wj_VSAJOSA-RKOPgJXO-y9i6vfgJ4V9vxx0M1g1NUI,11798
|
|
20
29
|
pyedb/dotnet/edb_core/materials.py,sha256=xgXImJ0gcOqCL3p0uQ1hdey_hBK4rkTIhj4MERDbS7E,43987
|
|
21
30
|
pyedb/dotnet/edb_core/net_class.py,sha256=lr-7Z0Q1A2fshxwjrIOmQSZnEBYe0NoxuUuJT6vYdyA,11857
|
|
22
31
|
pyedb/dotnet/edb_core/nets.py,sha256=EK-jjRFvRX_NtqMQ46ebJbv9HOvP1uYK_EZ3jPnmxB0,43882
|
|
23
32
|
pyedb/dotnet/edb_core/obj_base.py,sha256=lufR0sZj0QfZ2wlNvLL6aM1KVqCNY2A7taPPdWcK20w,3312
|
|
24
|
-
pyedb/dotnet/edb_core/padstack.py,sha256=
|
|
25
|
-
pyedb/dotnet/edb_core/siwave.py,sha256=
|
|
26
|
-
pyedb/dotnet/edb_core/stackup.py,sha256=
|
|
33
|
+
pyedb/dotnet/edb_core/padstack.py,sha256=PqXkSfyLRtdehm72sYiVMBUkNlDkivJ-eRoQWCzwNgw,57439
|
|
34
|
+
pyedb/dotnet/edb_core/siwave.py,sha256=481ePzP0il60Bu_FqL2NcdcFTWNIBXd8OKnSigPefw8,62419
|
|
35
|
+
pyedb/dotnet/edb_core/stackup.py,sha256=tKskWrYlYAcZl8g2JbgXxQhtTRrVAkwYlQvWpATaImw,122758
|
|
27
36
|
pyedb/dotnet/edb_core/cell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
37
|
pyedb/dotnet/edb_core/cell/hierarchy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
38
|
pyedb/dotnet/edb_core/cell/hierarchy/model.py,sha256=cJzNJLiuuoesfCL8-jWo8LbgGbfXrTYNQqmeeE38ieM,3309
|
|
@@ -44,26 +53,29 @@ pyedb/dotnet/edb_core/edb_data/control_file.py,sha256=2Gfrs8qW3N7y0A8ynAlKQpA6q9
|
|
|
44
53
|
pyedb/dotnet/edb_core/edb_data/design_options.py,sha256=RO9ip-T5Bfxpsl97_QEk0qDZsza3tLzIX2t25XLutys,2057
|
|
45
54
|
pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXRh9uvxhv_D_RJc,1977
|
|
46
55
|
pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=5koQSKdYC6Deh4haLUDAxnHlRa-j5S6g4eyAfiGgZP8,13190
|
|
56
|
+
pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py,sha256=v3z3h_27v3jRmDXqUjBS8P6UZMi-zuZQrZiYbE-RDw4,15657
|
|
47
57
|
pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py,sha256=rXzh95N_jLf6a3OEEJRm50qFX0rM6lS5B5osnKlVzf4,49037
|
|
48
58
|
pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=HVPmE_Rny29J1c8qlJ3TSNZaMOTSxTgE9_vIiQJG0cE,25900
|
|
49
59
|
pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=iULEOUsn3sfLT5FVY_4lMWTm0KzC-01AZ-aYIkM0U-k,9933
|
|
50
|
-
pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=
|
|
60
|
+
pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=5qq4QohTLkwo-xfk2lXFM8Pria8ZYfZRc5B3XgdboGE,79342
|
|
51
61
|
pyedb/dotnet/edb_core/edb_data/ports.py,sha256=FYxB2rDUtN_OsYAbodXbc5mA_d0BUebmin_B5kkUw3U,9223
|
|
52
62
|
pyedb/dotnet/edb_core/edb_data/primitives_data.py,sha256=veMDPCb6T84KZ_xgo52g7vHxObsx-Y2ysWXBS2CqZpQ,48155
|
|
53
|
-
pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py,sha256=
|
|
63
|
+
pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py,sha256=Km1sjDVA0vSBOn8u2mMASPEGULQb3h-ZeSK-0Kymzqk,20962
|
|
54
64
|
pyedb/dotnet/edb_core/edb_data/simulation_configuration.py,sha256=FVytbP5wx1lWS6708_JfB2aVXjAeTzTH0-3CeMLMdv8,101304
|
|
55
|
-
pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py,sha256=
|
|
56
|
-
pyedb/dotnet/edb_core/edb_data/sources.py,sha256=
|
|
57
|
-
pyedb/dotnet/edb_core/edb_data/terminals.py,sha256=
|
|
65
|
+
pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py,sha256=T6LP6-D0sCFYw6d9I1eu01jAKXQvEz7Kn0mlUf65Hdc,42394
|
|
66
|
+
pyedb/dotnet/edb_core/edb_data/sources.py,sha256=9_j3r7tUpDQbDnIRpSsRZJ_Z3gk7Cw_wGkeQWtPnhZQ,15902
|
|
67
|
+
pyedb/dotnet/edb_core/edb_data/terminals.py,sha256=AV6Mj-roevf4-HlmQhgJjxMsUlRabJncCFXI9mZwhY0,25364
|
|
58
68
|
pyedb/dotnet/edb_core/edb_data/utilities.py,sha256=3wZqOJ35eisOwOPKOs-bvJ8kmd62e46EiFuiFtsroB4,4928
|
|
59
69
|
pyedb/dotnet/edb_core/edb_data/variables.py,sha256=LS1jZPOYgRvf4cyKf_x8hI9Brs-qbh4wrHu_QGLElrg,3501
|
|
60
70
|
pyedb/dotnet/edb_core/geometry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
71
|
pyedb/dotnet/edb_core/geometry/point_data.py,sha256=hC9cRuSnX4cwg09Jr0ZK7ZTjFf_4NwXJMGbZ3s-ULpQ,1590
|
|
62
72
|
pyedb/dotnet/edb_core/geometry/polygon_data.py,sha256=K1jwj6gXm4KFqrPGJmtc49bSDZl1ytmrLdJ81VEJtco,2990
|
|
73
|
+
pyedb/dotnet/edb_core/sim_setup_data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
|
|
74
|
+
pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
|
|
75
|
+
pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py,sha256=b7Zpg6nNQArYxvdxlVhXDzvvCSC5sKFvdt10b0MHkvc,8605
|
|
63
76
|
pyedb/dotnet/edb_core/utilities/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
|
|
64
77
|
pyedb/dotnet/edb_core/utilities/heatsink.py,sha256=7G7Yx9TxbL5EAiR51MnhdRiAQBVf-d0hKsXDw5OYX2Q,2220
|
|
65
|
-
pyedb/dotnet/edb_core/utilities/simulation_setup.py,sha256=
|
|
66
|
-
pyedb/dotnet/sim_setup_data/data/siw_dc_ir_settings.py,sha256=urJvgBJOgF3Td527z98vdqAtBBKC3yomcAL3fOTt7xs,1931
|
|
78
|
+
pyedb/dotnet/edb_core/utilities/simulation_setup.py,sha256=e7ejpnYlV86t7364k1LI9sBXGf1_V3VdFh57g_n3nXs,25059
|
|
67
79
|
pyedb/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
80
|
pyedb/generic/constants.py,sha256=prWLZH0-SeBIVK6LHZ4SGZFQCofuym2TuQYfdqwhuSQ,28956
|
|
69
81
|
pyedb/generic/data_handlers.py,sha256=oyYFwdjt0CxdOxgFDmnBlOFICt2twFLsMyELuQ1kFjE,7137
|
|
@@ -135,7 +147,8 @@ pyedb/misc/siw_feature_config/emc/net_tags.py,sha256=HVYOQacmaLr6Mvf7FqZhqbhtqJL
|
|
|
135
147
|
pyedb/misc/siw_feature_config/emc/tag_library.py,sha256=yUK4w3hequU017E2DbkA4KE2MWIh1R6bfJBrevlDx6g,1557
|
|
136
148
|
pyedb/misc/siw_feature_config/emc/xml_generic.py,sha256=55X-V0OxWq-v7FTiDVjaZif8V_2xxsvJlJ8bs9Bf61I,2521
|
|
137
149
|
pyedb/modeler/geometry_operators.py,sha256=LDqEaeerw9H8Yva-SJhX3Afdni08OciO9t5G0c_tdqs,66820
|
|
138
|
-
pyedb
|
|
139
|
-
pyedb-0.
|
|
140
|
-
pyedb-0.
|
|
141
|
-
pyedb-0.
|
|
150
|
+
pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
|
|
151
|
+
pyedb-0.11.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
|
|
152
|
+
pyedb-0.11.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
153
|
+
pyedb-0.11.0.dist-info/METADATA,sha256=ozTeKxuYAll12aJP3W7Jfk7Fss71EqWBzSqfxlRWL8s,8351
|
|
154
|
+
pyedb-0.11.0.dist-info/RECORD,,
|
pyedb/configuration/cfg_ports.py
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
# in the Software without restriction, including without limitation the rights
|
|
8
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
# furnished to do so, subject to the following conditions:
|
|
11
|
-
#
|
|
12
|
-
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
# copies or substantial portions of the Software.
|
|
14
|
-
#
|
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
# SOFTWARE.
|
|
22
|
-
|
|
23
|
-
from enum import Enum
|
|
24
|
-
|
|
25
|
-
from pyedb.dotnet.edb_core.edb_data.padstacks_data import EDBPadstackInstance
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class CfgNegTerm:
|
|
29
|
-
"""Manage negative terminal."""
|
|
30
|
-
|
|
31
|
-
class CfgTermType(Enum):
|
|
32
|
-
"""Terminal types."""
|
|
33
|
-
|
|
34
|
-
pin = [list, str]
|
|
35
|
-
net = [str]
|
|
36
|
-
pin_group = [str]
|
|
37
|
-
|
|
38
|
-
@property
|
|
39
|
-
def pedb(self):
|
|
40
|
-
"""Edb."""
|
|
41
|
-
return self.pport.pedb
|
|
42
|
-
|
|
43
|
-
def __init__(self, pport, **kwargs):
|
|
44
|
-
self.pport = pport
|
|
45
|
-
self.type = kwargs.get("type", None)
|
|
46
|
-
self.value = kwargs.get("value", None)
|
|
47
|
-
|
|
48
|
-
def _get_candidates(self, distributed):
|
|
49
|
-
"""Get list of objects."""
|
|
50
|
-
|
|
51
|
-
def get_pin_obj(pin_name):
|
|
52
|
-
port_name = "{}_{}".format(self.pport.reference_designator, pin_name)
|
|
53
|
-
return {port_name: self.pport.pdata.edb_comps[self.pport.reference_designator].pins[pin_name]}
|
|
54
|
-
|
|
55
|
-
def get_pin_group_obj(pin_group_name):
|
|
56
|
-
pin_group_obj = self.pedb.siwave.pin_groups[pin_group_name]
|
|
57
|
-
return {pin_group_obj.name: pin_group_obj}
|
|
58
|
-
|
|
59
|
-
term_objs = dict()
|
|
60
|
-
if self.type in "pin":
|
|
61
|
-
term_objs.update(get_pin_obj(self.value))
|
|
62
|
-
elif self.type == "pin_group":
|
|
63
|
-
term_objs.update(get_pin_group_obj(self.value))
|
|
64
|
-
elif self.type == "net":
|
|
65
|
-
pins = self.pport.pdata.pedb.components.get_pin_from_component(self.pport.reference_designator, self.value)
|
|
66
|
-
pins = [EDBPadstackInstance(p, self.pedb) for p in pins]
|
|
67
|
-
|
|
68
|
-
pin_objs = {f"{self.value}_{p.GetName()}": p for p in pins}
|
|
69
|
-
if distributed:
|
|
70
|
-
term_objs.update(pin_objs)
|
|
71
|
-
else:
|
|
72
|
-
pg_name = f"pg_{self.pport.reference_designator}_{self.value}"
|
|
73
|
-
pin_objs = {p.GetName(): p for p in pin_objs.values()}
|
|
74
|
-
if self.pport.type == "coax":
|
|
75
|
-
term_objs.update(get_pin_obj(pins[0].GetName()))
|
|
76
|
-
else:
|
|
77
|
-
temp = self.pport.pdata.pedb.siwave.create_pin_group(
|
|
78
|
-
self.pport.reference_designator, list(pin_objs.keys()), pg_name
|
|
79
|
-
)
|
|
80
|
-
term_objs.update({temp[0]: temp[1]})
|
|
81
|
-
return term_objs
|
|
82
|
-
|
|
83
|
-
def get_candidates(self):
|
|
84
|
-
"""Get list of objects."""
|
|
85
|
-
return self._get_candidates(False)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
class CfgPosTerm(CfgNegTerm):
|
|
89
|
-
"""Manage positive terminal."""
|
|
90
|
-
|
|
91
|
-
def __init__(self, pport, **kwargs):
|
|
92
|
-
super().__init__(pport, **kwargs)
|
|
93
|
-
|
|
94
|
-
def get_candidates(self):
|
|
95
|
-
"""Get list of objects."""
|
|
96
|
-
return self._get_candidates(self.pport.distributed)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
class CfgPort:
|
|
100
|
-
"""Manage port."""
|
|
101
|
-
|
|
102
|
-
class CfgPortType(Enum):
|
|
103
|
-
"""Port type."""
|
|
104
|
-
|
|
105
|
-
circuit = [str]
|
|
106
|
-
coax = [str]
|
|
107
|
-
|
|
108
|
-
@property
|
|
109
|
-
def pedb(self):
|
|
110
|
-
"""Edb."""
|
|
111
|
-
return self.pdata.pedb
|
|
112
|
-
|
|
113
|
-
def __init__(self, pdata, **kwargs):
|
|
114
|
-
self.pdata = pdata
|
|
115
|
-
self.name = kwargs.get("name", None)
|
|
116
|
-
self.type = kwargs.get("type", None)
|
|
117
|
-
self.reference_designator = kwargs.get("reference_designator", None)
|
|
118
|
-
pos_term = kwargs.get("positive_terminal", None)
|
|
119
|
-
neg_term = kwargs.get("negative_terminal", None)
|
|
120
|
-
if pos_term:
|
|
121
|
-
self.positive_terminal = CfgPosTerm(
|
|
122
|
-
pport=self, type=list(pos_term.keys())[0], value=list(pos_term.values())[0]
|
|
123
|
-
)
|
|
124
|
-
if neg_term:
|
|
125
|
-
self.negative_terminal = CfgPosTerm(
|
|
126
|
-
pport=self, type=list(neg_term.keys())[0], value=list(neg_term.values())[0]
|
|
127
|
-
)
|
|
128
|
-
self.distributed = kwargs.get("distributed", False)
|
|
129
|
-
|
|
130
|
-
self._port_name = None
|
|
131
|
-
|
|
132
|
-
def create(self):
|
|
133
|
-
"""Create port."""
|
|
134
|
-
if self.type == "circuit":
|
|
135
|
-
candidates = [i for i in self.negative_terminal.get_candidates().values()][0]
|
|
136
|
-
neg_term = candidates.get_terminal(create_new_terminal=True)
|
|
137
|
-
else:
|
|
138
|
-
neg_term = None
|
|
139
|
-
ports = []
|
|
140
|
-
for name, p in self.positive_terminal.get_candidates().items():
|
|
141
|
-
if self.distributed:
|
|
142
|
-
port_name = f"{self.name}_{name}" if self.name else name
|
|
143
|
-
else:
|
|
144
|
-
port_name = self.name if self.name else name
|
|
145
|
-
pos_term = p.get_terminal(port_name, create_new_terminal=True)
|
|
146
|
-
is_circuit_port = True if self.type == "circuit" else False
|
|
147
|
-
port = self.pedb.create_port(pos_term, neg_term, is_circuit_port)
|
|
148
|
-
ports.append(port)
|
|
149
|
-
return ports
|
|
File without changes
|
|
File without changes
|