pyedb 0.49.0__py3-none-any.whl → 0.50.1__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 (79) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_modeler.py +42 -11
  3. pyedb/configuration/cfg_ports_sources.py +9 -1
  4. pyedb/dotnet/database/cell/hierarchy/component.py +6 -6
  5. pyedb/dotnet/database/components.py +3 -3
  6. pyedb/dotnet/database/edb_data/padstacks_data.py +13 -0
  7. pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
  8. pyedb/dotnet/database/edb_data/variables.py +3 -3
  9. pyedb/dotnet/database/materials.py +16 -16
  10. pyedb/dotnet/database/modeler.py +38 -4
  11. pyedb/dotnet/database/sim_setup_data/data/settings.py +28 -0
  12. pyedb/dotnet/database/stackup.py +1 -0
  13. pyedb/dotnet/database/utilities/hfss_simulation_setup.py +5 -6
  14. pyedb/dotnet/edb.py +22 -20
  15. pyedb/extensions/__init__.py +0 -0
  16. pyedb/extensions/via_design_backend.py +681 -0
  17. pyedb/grpc/database/components.py +537 -686
  18. pyedb/grpc/database/control_file.py +458 -149
  19. pyedb/grpc/database/definition/component_def.py +17 -14
  20. pyedb/grpc/database/definition/materials.py +60 -60
  21. pyedb/grpc/database/definition/package_def.py +8 -8
  22. pyedb/grpc/database/definition/padstack_def.py +31 -33
  23. pyedb/grpc/database/definitions.py +6 -4
  24. pyedb/grpc/database/geometry/arc_data.py +5 -5
  25. pyedb/grpc/database/geometry/point_3d_data.py +3 -3
  26. pyedb/grpc/database/geometry/polygon_data.py +5 -5
  27. pyedb/grpc/database/hfss.py +399 -397
  28. pyedb/grpc/database/hierarchy/component.py +60 -58
  29. pyedb/grpc/database/hierarchy/pin_pair_model.py +6 -6
  30. pyedb/grpc/database/hierarchy/pingroup.py +13 -11
  31. pyedb/grpc/database/hierarchy/s_parameter_model.py +1 -1
  32. pyedb/grpc/database/hierarchy/spice_model.py +1 -1
  33. pyedb/grpc/database/layers/layer.py +2 -2
  34. pyedb/grpc/database/layers/stackup_layer.py +144 -44
  35. pyedb/grpc/database/layout/layout.py +12 -12
  36. pyedb/grpc/database/layout/voltage_regulator.py +8 -8
  37. pyedb/grpc/database/layout_validation.py +5 -5
  38. pyedb/grpc/database/modeler.py +248 -245
  39. pyedb/grpc/database/net/differential_pair.py +4 -4
  40. pyedb/grpc/database/net/extended_net.py +7 -8
  41. pyedb/grpc/database/net/net.py +57 -46
  42. pyedb/grpc/database/nets.py +139 -122
  43. pyedb/grpc/database/padstacks.py +174 -190
  44. pyedb/grpc/database/ports/ports.py +23 -17
  45. pyedb/grpc/database/primitive/padstack_instance.py +45 -30
  46. pyedb/grpc/database/primitive/path.py +7 -7
  47. pyedb/grpc/database/primitive/polygon.py +9 -9
  48. pyedb/grpc/database/primitive/primitive.py +21 -21
  49. pyedb/grpc/database/primitive/rectangle.py +1 -1
  50. pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +1 -1
  51. pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
  52. pyedb/grpc/database/simulation_setup/hfss_settings_options.py +1 -1
  53. pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +6 -6
  54. pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +2 -2
  55. pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +2 -2
  56. pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +1 -1
  57. pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +3 -3
  58. pyedb/grpc/database/siwave.py +166 -214
  59. pyedb/grpc/database/source_excitations.py +156 -0
  60. pyedb/grpc/database/stackup.py +415 -316
  61. pyedb/grpc/database/terminal/bundle_terminal.py +12 -12
  62. pyedb/grpc/database/terminal/edge_terminal.py +6 -5
  63. pyedb/grpc/database/terminal/padstack_instance_terminal.py +13 -13
  64. pyedb/grpc/database/terminal/pingroup_terminal.py +12 -12
  65. pyedb/grpc/database/terminal/point_terminal.py +6 -6
  66. pyedb/grpc/database/terminal/terminal.py +26 -26
  67. pyedb/grpc/database/utility/heat_sink.py +5 -5
  68. pyedb/grpc/database/utility/hfss_extent_info.py +21 -21
  69. pyedb/grpc/database/utility/layout_statistics.py +13 -13
  70. pyedb/grpc/database/utility/rlc.py +3 -3
  71. pyedb/grpc/database/utility/sources.py +1 -1
  72. pyedb/grpc/database/utility/sweep_data_distribution.py +1 -1
  73. pyedb/grpc/edb.py +524 -764
  74. {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/METADATA +1 -1
  75. {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/RECORD +77 -77
  76. pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -1151
  77. pyedb/grpc/database/utility/simulation_configuration.py +0 -3305
  78. {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/LICENSE +0 -0
  79. {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/WHEEL +0 -0
@@ -154,6 +154,45 @@ class SourceExcitation:
154
154
  )
155
155
  return True
156
156
 
157
+ def create_port(self, terminal, ref_terminal=None, is_circuit_port=False, name=None):
158
+ """Create a port.
159
+
160
+ Parameters
161
+ ----------
162
+ terminal : class:`pyedb.dotnet.database.edb_data.terminals.EdgeTerminal`,
163
+ class:`pyedb.grpc.database.terminals.PadstackInstanceTerminal`,
164
+ class:`pyedb.grpc.database.terminals.PointTerminal`,
165
+ class:`pyedb.grpc.database.terminals.PinGroupTerminal`,
166
+ Positive terminal of the port.
167
+ ref_terminal : class:`pyedb.grpc.database.terminals.EdgeTerminal`,
168
+ class:`pyedb.grpc.database.terminals.PadstackInstanceTerminal`,
169
+ class:`pyedb.grpc.database.terminals.PointTerminal`,
170
+ class:`pyedb.grpc.database.terminals.PinGroupTerminal`,
171
+ optional
172
+ Negative terminal of the port.
173
+ is_circuit_port : bool, optional
174
+ Whether it is a circuit port. The default is ``False``.
175
+ name: str, optional
176
+ Name of the created port. The default is None, a random name is generated.
177
+ Returns
178
+ -------
179
+ list: [:class:`GapPort <pyedb.grpc.database.ports.ports.GapPort`>,
180
+ :class:`WavePort <pyedb.grpc.database.ports.ports.WavePort>`].
181
+ """
182
+
183
+ from ansys.edb.core.terminal.terminal import BoundaryType as GrpcBoundaryType
184
+
185
+ if terminal.boundary_type == "port":
186
+ terminal.boundary_type = GrpcBoundaryType.PORT
187
+ terminal.is_circuit_port = is_circuit_port
188
+ if ref_terminal:
189
+ if ref_terminal.boundary_type == "port":
190
+ ref_terminal.boundary_type = GrpcBoundaryType.PORT
191
+ terminal.reference_terminal = ref_terminal
192
+ if name:
193
+ terminal.name = name
194
+ return self._pedb.ports[terminal.name]
195
+
157
196
  def create_port_on_pins(
158
197
  self,
159
198
  refdes,
@@ -2098,6 +2137,30 @@ class SourceExcitation:
2098
2137
  terms = [term for term in self._pedb.layout.terminals]
2099
2138
  return len([i for i in terms if not i.is_reference_terminal])
2100
2139
 
2140
+ def get_point_terminal(self, name, net_name, location, layer) -> PointTerminal:
2141
+ """Place terminal between two points.
2142
+
2143
+ Parameters
2144
+ ----------
2145
+ name : str,
2146
+ Name of the terminal.
2147
+ net_name : str
2148
+ Name of the net.
2149
+ location : list
2150
+ Location of the terminal.
2151
+ layer : str,
2152
+ Layer of the terminal.
2153
+
2154
+ Returns
2155
+ -------
2156
+ :class:`PointTerminal <pyedb.grpc.database.terminal.point_terminal.PointTerminal>`
2157
+ """
2158
+ from pyedb.grpc.database.terminal.point_terminal import PointTerminal
2159
+
2160
+ return PointTerminal.create(
2161
+ layout=self._pedb.active_layout, name=name, net=net_name, layer=layer, point=location
2162
+ )
2163
+
2101
2164
  def create_rlc_boundary_on_pins(self, positive_pin=None, negative_pin=None, rvalue=0.0, lvalue=0.0, cvalue=0.0):
2102
2165
  """Create hfss rlc boundary on pins.
2103
2166
 
@@ -2328,6 +2391,37 @@ class SourceExcitation:
2328
2391
  return terms
2329
2392
  return False
2330
2393
 
2394
+ def create_current_source(self, terminal, ref_terminal):
2395
+ """Create a current source.
2396
+
2397
+ Parameters
2398
+ ----------
2399
+ terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
2400
+ :class:`PadstackInstanceTerminal <pyedb.grpc.database.terminals.PadstackInstanceTerminal>`,
2401
+ :class:`PointTerminal <pyedb.grpc.database.terminals.PointTerminal>`,
2402
+ :class:`PinGroupTerminal <pyedb.grpc.database.terminals.PinGroupTerminal>`,
2403
+ Positive terminal of the source.
2404
+ ref_terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
2405
+ :class:`pyedb.grpc.database.terminals.PadstackInstanceTerminal`,
2406
+ :class:`PadstackInstanceTerminal <pyedb.grpc.database.terminals.PointTerminal>`,
2407
+ :class:`PinGroupTerminal <pyedb.grpc.database.terminals.PinGroupTerminal>`,
2408
+ Negative terminal of the source.
2409
+
2410
+ Returns
2411
+ -------
2412
+ :class:`ExcitationSources <legacy.database.edb_data.ports.ExcitationSources>`
2413
+ """
2414
+ from pyedb.grpc.database.terminal.terminal import Terminal
2415
+
2416
+ term = Terminal(self._pedb, terminal)
2417
+ term.boundary_type = "current_source"
2418
+
2419
+ ref_term = Terminal(self._pedb, ref_terminal)
2420
+ ref_term.boundary_type = "current_source"
2421
+
2422
+ term.ref_terminal = ref_terminal
2423
+ return term
2424
+
2331
2425
  def create_current_source_on_pin_group(
2332
2426
  self, pos_pin_group_name, neg_pin_group_name, magnitude=1, phase=0, name=None
2333
2427
  ):
@@ -2368,6 +2462,37 @@ class SourceExcitation:
2368
2462
  pos_terminal.reference_terminal = neg_terminal
2369
2463
  return True
2370
2464
 
2465
+ def create_voltage_source(self, terminal, ref_terminal):
2466
+ """Create a voltage source.
2467
+
2468
+ Parameters
2469
+ ----------
2470
+ terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
2471
+ :class:`PadstackInstanceTerminal <pyedb.grpc.database.terminals.PadstackInstanceTerminal>`,
2472
+ :class:`PointTerminal <pyedb.grpc.database.terminals.PointTerminal>`,
2473
+ :class:`PinGroupTerminal <pyedb.grpc.database.terminals.PinGroupTerminal>`,
2474
+ Positive terminal of the source.
2475
+ ref_terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
2476
+ :class:`pyedb.grpc.database.terminals.PadstackInstanceTerminal`,
2477
+ :class:`PadstackInstanceTerminal <pyedb.grpc.database.terminals.PointTerminal>`,
2478
+ :class:`PinGroupTerminal <pyedb.grpc.database.terminals.PinGroupTerminal>`,
2479
+ Negative terminal of the source.
2480
+
2481
+ Returns
2482
+ -------
2483
+ class:`ExcitationSources <legacy.database.edb_data.ports.ExcitationSources>`
2484
+ """
2485
+ from pyedb.grpc.database.terminal.terminal import Terminal
2486
+
2487
+ term = Terminal(self._pedb, terminal)
2488
+ term.boundary_type = "voltage_source"
2489
+
2490
+ ref_term = Terminal(self._pedb, ref_terminal)
2491
+ ref_term.boundary_type = "voltage_source"
2492
+
2493
+ term.ref_terminal = ref_terminal
2494
+ return term
2495
+
2371
2496
  def create_voltage_source_on_pin_group(
2372
2497
  self, pos_pin_group_name, neg_pin_group_name, magnitude=1, phase=0, name=None, impedance=0.001
2373
2498
  ):
@@ -2408,6 +2533,37 @@ class SourceExcitation:
2408
2533
  pos_terminal.reference_terminal = neg_terminal
2409
2534
  return True
2410
2535
 
2536
+ def create_voltage_probe(self, terminal, ref_terminal):
2537
+ """Create a voltage probe.
2538
+
2539
+ Parameters
2540
+ ----------
2541
+ terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
2542
+ :class:`PadstackInstanceTerminal <pyedb.grpc.database.terminals.PadstackInstanceTerminal>`,
2543
+ :class:`PointTerminal <pyedb.grpc.database.terminals.PointTerminal>`,
2544
+ :class:`PinGroupTerminal <pyedb.grpc.database.terminals.PinGroupTerminal>`,
2545
+ Positive terminal of the port.
2546
+ ref_terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
2547
+ :class:`pyedb.grpc.database.terminals.PadstackInstanceTerminal`,
2548
+ :class:`PadstackInstanceTerminal <pyedb.grpc.database.terminals.PointTerminal>`,
2549
+ :class:`PinGroupTerminal <pyedb.grpc.database.terminals.PinGroupTerminal>`,
2550
+ Negative terminal of the probe.
2551
+
2552
+ Returns
2553
+ -------
2554
+ :class:`Terminal <pyedb.dotnet.database.edb_data.terminals.Terminal>`
2555
+ """
2556
+ from pyedb.grpc.database.terminal.terminal import Terminal
2557
+
2558
+ term = Terminal(self._pedb, terminal)
2559
+ term.boundary_type = "voltage_probe"
2560
+
2561
+ ref_term = Terminal(self._pedb, ref_terminal)
2562
+ ref_term.boundary_type = "voltage_probe"
2563
+
2564
+ term.ref_terminal = ref_terminal
2565
+ return term
2566
+
2411
2567
  def create_voltage_probe_on_pin_group(self, probe_name, pos_pin_group_name, neg_pin_group_name, impedance=1000000):
2412
2568
  """Create voltage probe between two pin groups.
2413
2569