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.

Files changed (36) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_boundaries.py +115 -0
  3. pyedb/configuration/cfg_components.py +205 -0
  4. pyedb/configuration/cfg_data.py +38 -15
  5. pyedb/configuration/cfg_general.py +34 -0
  6. pyedb/{dotnet/sim_setup_data/data/siw_dc_ir_settings.py → configuration/cfg_nets.py} +18 -21
  7. pyedb/configuration/cfg_padstacks.py +125 -0
  8. pyedb/configuration/cfg_pin_groups.py +58 -0
  9. pyedb/configuration/cfg_ports_sources.py +164 -0
  10. pyedb/configuration/cfg_s_parameter_models.py +60 -0
  11. pyedb/configuration/cfg_setup.py +201 -0
  12. pyedb/configuration/cfg_spice_models.py +49 -0
  13. pyedb/configuration/configuration.py +37 -532
  14. pyedb/dotnet/edb.py +32 -4
  15. pyedb/dotnet/edb_core/components.py +43 -0
  16. pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +465 -0
  17. pyedb/dotnet/edb_core/edb_data/padstacks_data.py +17 -1
  18. pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -4
  19. pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +4 -2
  20. pyedb/dotnet/edb_core/edb_data/sources.py +21 -5
  21. pyedb/dotnet/edb_core/edb_data/terminals.py +2 -1
  22. pyedb/dotnet/edb_core/layout.py +13 -8
  23. pyedb/dotnet/edb_core/padstack.py +23 -3
  24. pyedb/dotnet/edb_core/sim_setup_data/__init__.py +3 -0
  25. pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py +3 -0
  26. pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +235 -0
  27. pyedb/dotnet/edb_core/siwave.py +2 -1
  28. pyedb/dotnet/edb_core/stackup.py +38 -29
  29. pyedb/dotnet/edb_core/utilities/simulation_setup.py +16 -7
  30. pyedb/siwave.py +32 -6
  31. pyedb/siwave_core/icepak.py +153 -0
  32. {pyedb-0.10.0.dist-info → pyedb-0.11.0.dist-info}/METADATA +2 -2
  33. {pyedb-0.10.0.dist-info → pyedb-0.11.0.dist-info}/RECORD +35 -22
  34. pyedb/configuration/cfg_ports.py +0 -149
  35. {pyedb-0.10.0.dist-info → pyedb-0.11.0.dist-info}/LICENSE +0 -0
  36. {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.10.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.16 ; extra == "doc"
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=5-P7oUIpF3yu26BfJgM34yCkHvXZnwPf9deV8_7JSe8,1521
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=ilUsA74QKy7VpRfmfvRrcVZhPAsyfgXHZm0SDDHiGBE,11576
4
+ pyedb/siwave.py,sha256=c2stPkGPdM9c0wJ19SJq_uiYTdW3sp-uO8MVA_iDw30,12548
5
5
  pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- pyedb/configuration/cfg_data.py,sha256=5zkqMMfEWWYnAwXFVYZA4f-SRogpvXWvN3UOMGXDFUo,1887
7
- pyedb/configuration/cfg_ports.py,sha256=Pj30RbsbgY7_kpSdANXDGUbhaPBqQXGO7pSLBZ3bK7Y,5569
8
- pyedb/configuration/configuration.py,sha256=UqeR6Io8SJAZWVeVA4S6rxVq9DIHc4heoeUubmx5xt4,35124
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=ezzRRR9pcpKtTSZA7DqyAHXXXB3uNPO7SHoNlFeOJ2E,171743
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=guxNCJalAnVEVjxSdxTvoaqgLtn9YGuu9Velh4aJu-0,103685
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=Sde2-8E-sGiO0JvjY31ydlq0QZrVkutbT_afp1FkK0w,50907
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=h9NYecM5_Z00KeMkli-Sm97btbvnJsz2COSmyWfoVHA,56581
25
- pyedb/dotnet/edb_core/siwave.py,sha256=wdLAKiz0Qhiktz3OPekBQtw_y2Kb8Vyk19QdF-FcUVU,62356
26
- pyedb/dotnet/edb_core/stackup.py,sha256=7LpRWcE8V_zT5tZiZfvwV2e-C-wj3Lo4TA2rvbiCxoU,122296
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=T7m7s5KAZB-gZ9wrPw6k2Yoon6uwCfJSOeg2hvyX1LI,78754
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=FPQ1myUhmBAyyAsqPQZnr0Y-_k-tvq-JhQtESp3ea0g,21065
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=fPmdhh6t6HM2pE_mQCT0ZQYO-PkqhwumwiuRUNEn00Q,42354
56
- pyedb/dotnet/edb_core/edb_data/sources.py,sha256=XmdpOdlpBa3QiYFY0cRtVIolt4nvUR9Ptk5YnRVvU4c,15342
57
- pyedb/dotnet/edb_core/edb_data/terminals.py,sha256=m2kch7Md-MSGUEbKFW8m8RpBzq6lNMFdgPgOtDUbsMA,25287
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=WuAY_eC3gISpp6aVcF_rgezQQqifvPdEQZGyyRUFpTY,24639
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-0.10.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
139
- pyedb-0.10.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
140
- pyedb-0.10.0.dist-info/METADATA,sha256=6ABWvAvsx7L7NwDNJDbBCT9pZCm4rTH1_eN-lQ-Gerc,8351
141
- pyedb-0.10.0.dist-info/RECORD,,
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,,
@@ -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