pyedb 0.39.0__py3-none-any.whl → 0.40.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/grpc/edb.py CHANGED
@@ -46,6 +46,7 @@ from ansys.edb.core.utility.value import Value as GrpcValue
46
46
  import rtree
47
47
 
48
48
  from pyedb.configuration.configuration import Configuration
49
+ from pyedb.generic.constants import unit_converter
49
50
  from pyedb.generic.general_methods import (
50
51
  generate_unique_name,
51
52
  get_string_version,
@@ -192,6 +193,7 @@ class Edb(EdbInit):
192
193
  edbversion=None,
193
194
  isaedtowned=False,
194
195
  oproject=None,
196
+ student_version: bool = False,
195
197
  use_ppe=False,
196
198
  technology_file=None,
197
199
  restart_rpc_server=False,
@@ -2816,189 +2818,6 @@ class Edb(EdbInit):
2816
2818
  layout_bbox = GrpcPolygonData.bbox_of_polygons(lay_inst_polygon_data)
2817
2819
  return [[layout_bbox[0].x.value, layout_bbox[0].y.value], [layout_bbox[1].x.value, layout_bbox[1].y.value]]
2818
2820
 
2819
- # def build_simulation_project(self, simulation_setup):
2820
- # # type: (SimulationConfiguration) -> bool
2821
- # """Build a ready-to-solve simulation project.
2822
- #
2823
- # Parameters
2824
- # ----------
2825
- # simulation_setup : :class:`pyedb.dotnet.database.edb_data.simulation_configuration.SimulationConfiguration`.
2826
- # SimulationConfiguration object that can be instantiated or directly loaded with a
2827
- # configuration file.
2828
- #
2829
- # Returns
2830
- # -------
2831
- # bool
2832
- # ``True`` when successful, False when ``Failed``.
2833
- #
2834
- # Examples
2835
- # --------
2836
- #
2837
- # >>> from pyedb import Edb
2838
- # >>> from pyedb.dotnet.database.edb_data.simulation_configuration import SimulationConfiguration
2839
- # >>> config_file = path_configuration_file
2840
- # >>> source_file = path_to_edb_folder
2841
- # >>> edb = Edb(source_file)
2842
- # >>> sim_setup = SimulationConfiguration(config_file)
2843
- # >>> edb.build_simulation_project(sim_setup)
2844
- # >>> edb.save_edb()
2845
- # >>> edb.close_edb()
2846
- # """
2847
- # self.logger.info("Building simulation project.")
2848
- # from ansys.edb.core.layout.cell import CellType as GrpcCellType
2849
- #
2850
- # legacy_name = self.edbpath
2851
- # if simulation_setup.output_aedb:
2852
- # self.save_edb_as(simulation_setup.output_aedb)
2853
- # if simulation_setup.signal_layer_etching_instances:
2854
- # for layer in simulation_setup.signal_layer_etching_instances:
2855
- # if layer in self.stackup.layers:
2856
- # idx = simulation_setup.signal_layer_etching_instances.index(layer)
2857
- # if len(simulation_setup.etching_factor_instances) > idx:
2858
- # self.stackup[layer].etch_factor = float(simulation_setup.etching_factor_instances[idx])
2859
- #
2860
- # if not simulation_setup.signal_nets and simulation_setup.components:
2861
- # nets_to_include = []
2862
- # pnets = list(self.nets.power.keys())[:]
2863
- # for el in simulation_setup.components:
2864
- # nets_to_include.append([i for i in self.components[el].nets if i not in pnets])
2865
- # simulation_setup.signal_nets = [
2866
- # i
2867
- # for i in list(set.intersection(*map(set, nets_to_include)))
2868
- # if i not in simulation_setup.power_nets and i != ""
2869
- # ]
2870
- # self.nets.classify_nets(simulation_setup.power_nets, simulation_setup.signal_nets)
2871
- # if not simulation_setup.power_nets or not simulation_setup.signal_nets:
2872
- # self.logger.info("Disabling cutout as no signals or power nets have been defined.")
2873
- # simulation_setup.do_cutout_subdesign = False
2874
- # if simulation_setup.do_cutout_subdesign:
2875
- # self.logger.info(f"Cutting out using method: {simulation_setup.cutout_subdesign_type}")
2876
- # if simulation_setup.use_default_cutout:
2877
- # old_cell_name = self.active_cell.name
2878
- # if self.cutout(
2879
- # signal_list=simulation_setup.signal_nets,
2880
- # reference_list=simulation_setup.power_nets,
2881
- # expansion_size=simulation_setup.cutout_subdesign_expansion,
2882
- # use_round_corner=simulation_setup.cutout_subdesign_round_corner,
2883
- # extent_type=simulation_setup.cutout_subdesign_type,
2884
- # use_pyaedt_cutout=False,
2885
- # use_pyaedt_extent_computing=False,
2886
- # ):
2887
- # self.logger.info("Cutout processed.")
2888
- # old_cell = self.active_cell.find_by_name(
2889
- # self.db,
2890
- # GrpcCellType.CIRCUIT_CELL,
2891
- # old_cell_name,
2892
- # )
2893
- # if old_cell:
2894
- # old_cell.delete()
2895
- # else: # pragma: no cover
2896
- # self.logger.error("Cutout failed.")
2897
- # else:
2898
- # self.logger.info(f"Cutting out using method: {simulation_setup.cutout_subdesign_type}")
2899
- # self.cutout(
2900
- # signal_list=simulation_setup.signal_nets,
2901
- # reference_list=simulation_setup.power_nets,
2902
- # expansion_size=simulation_setup.cutout_subdesign_expansion,
2903
- # use_round_corner=simulation_setup.cutout_subdesign_round_corner,
2904
- # extent_type=simulation_setup.cutout_subdesign_type,
2905
- # use_pyaedt_cutout=True,
2906
- # use_pyaedt_extent_computing=True,
2907
- # remove_single_pin_components=True,
2908
- # )
2909
- # self.logger.info("Cutout processed.")
2910
- # else:
2911
- # if simulation_setup.include_only_selected_nets:
2912
- # included_nets = simulation_setup.signal_nets + simulation_setup.power_nets
2913
- # nets_to_remove = [net.name for net in list(self.nets.nets.values()) if not net.name in included_nets]
2914
- # self.nets.delete(nets_to_remove)
2915
- # self.logger.info("Deleting existing ports.")
2916
- # map(lambda port: port.Delete(), self.layout.terminals)
2917
- # map(lambda pg: pg.delete(), self.layout.pin_groups)
2918
- # if simulation_setup.solver_type == SolverType.Hfss3dLayout:
2919
- # if simulation_setup.generate_excitations:
2920
- # self.logger.info("Creating HFSS ports for signal nets.")
2921
- # source_type = SourceType.CoaxPort
2922
- # if not simulation_setup.generate_solder_balls:
2923
- # source_type = SourceType.CircPort
2924
- # for cmp in simulation_setup.components:
2925
- # if isinstance(cmp, str): # keep legacy component
2926
- # self.components.create_port_on_component(
2927
- # cmp,
2928
- # net_list=simulation_setup.signal_nets,
2929
- # do_pingroup=False,
2930
- # reference_net=simulation_setup.power_nets,
2931
- # port_type=source_type,
2932
- # )
2933
- # elif isinstance(cmp, dict):
2934
- # if "refdes" in cmp:
2935
- # if not "solder_balls_height" in cmp: # pragma no cover
2936
- # cmp["solder_balls_height"] = None
2937
- # if not "solder_balls_size" in cmp: # pragma no cover
2938
- # cmp["solder_balls_size"] = None
2939
- # cmp["solder_balls_mid_size"] = None
2940
- # if not "solder_balls_mid_size" in cmp: # pragma no cover
2941
- # cmp["solder_balls_mid_size"] = None
2942
- # self.components.create_port_on_component(
2943
- # cmp["refdes"],
2944
- # net_list=simulation_setup.signal_nets,
2945
- # do_pingroup=False,
2946
- # reference_net=simulation_setup.power_nets,
2947
- # port_type=source_type,
2948
- # solder_balls_height=cmp["solder_balls_height"],
2949
- # solder_balls_size=cmp["solder_balls_size"],
2950
- # solder_balls_mid_size=cmp["solder_balls_mid_size"],
2951
- # )
2952
- # if simulation_setup.generate_solder_balls and not self.hfss.set_coax_port_attributes(
2953
- # simulation_setup
2954
- # ): # pragma: no cover
2955
- # self.logger.error("Failed to configure coaxial port attributes.")
2956
- # self.logger.info(f"Number of ports: {self.hfss.get_ports_number()}")
2957
- # self.logger.info("Configure HFSS extents.")
2958
- # if simulation_setup.generate_solder_balls and simulation_setup.trim_reference_size:
2959
- # self.logger.info(
2960
- # f"Trimming the reference plane for coaxial ports: {bool(simulation_setup.trim_reference_size)}"
2961
- # )
2962
- # self.hfss.trim_component_reference_size(simulation_setup) # pragma: no cover
2963
- # self.hfss.configure_hfss_extents(simulation_setup)
2964
- # if not self.hfss.configure_hfss_analysis_setup(simulation_setup):
2965
- # self.logger.error("Failed to configure HFSS simulation setup.")
2966
- # if simulation_setup.solver_type == SolverType.SiwaveSYZ:
2967
- # if simulation_setup.generate_excitations:
2968
- # for cmp in simulation_setup.components:
2969
- # if isinstance(cmp, str): # keep legacy
2970
- # self.components.create_port_on_component(
2971
- # cmp,
2972
- # net_list=simulation_setup.signal_nets,
2973
- # do_pingroup=simulation_setup.do_pingroup,
2974
- # reference_net=simulation_setup.power_nets,
2975
- # port_type=SourceType.CircPort,
2976
- # )
2977
- # elif isinstance(cmp, dict):
2978
- # if "refdes" in cmp: # pragma no cover
2979
- # self.components.create_port_on_component(
2980
- # cmp["refdes"],
2981
- # net_list=simulation_setup.signal_nets,
2982
- # do_pingroup=simulation_setup.do_pingroup,
2983
- # reference_net=simulation_setup.power_nets,
2984
- # port_type=SourceType.CircPort,
2985
- # )
2986
- # self.logger.info("Configuring analysis setup.")
2987
- # if not self.siwave.configure_siw_analysis_setup(simulation_setup): # pragma: no cover
2988
- # self.logger.error("Failed to configure Siwave simulation setup.")
2989
- # if simulation_setup.solver_type == SolverType.SiwaveDC:
2990
- # if simulation_setup.generate_excitations:
2991
- # self.components.create_source_on_component(simulation_setup.sources)
2992
- # if not self.siwave.configure_siw_analysis_setup(simulation_setup): # pragma: no cover
2993
- # self.logger.error("Failed to configure Siwave simulation setup.")
2994
- # self.padstacks.check_and_fix_via_plating()
2995
- # self.save_edb()
2996
- # if not simulation_setup.open_edb_after_build and simulation_setup.output_aedb:
2997
- # self.close_edb()
2998
- # self.edbpath = legacy_name
2999
- # self.open_edb()
3000
- # return True
3001
-
3002
2821
  def get_statistics(self, compute_area=False):
3003
2822
  """Get the EDBStatistics object.
3004
2823
 
@@ -3095,21 +2914,6 @@ class Edb(EdbInit):
3095
2914
  # If the intersections are non-zero, the terminal references are connected.
3096
2915
  return True if len(iDintersection) > 0 else False
3097
2916
 
3098
- # def new_simulation_configuration(self, filename=None):
3099
- # # type: (str) -> SimulationConfiguration
3100
- # """New SimulationConfiguration Object.
3101
- #
3102
- # Parameters
3103
- # ----------
3104
- # filename : str, optional
3105
- # Input config file.
3106
- #
3107
- # Returns
3108
- # -------
3109
- # :class:`legacy.database.edb_data.simulation_configuration.SimulationConfiguration`
3110
- # """
3111
- # return SimulationConfiguration(filename, self)
3112
-
3113
2917
  @property
3114
2918
  def setups(self):
3115
2919
  """Get the dictionary of all EDB HFSS and SIwave setups.
@@ -4149,3 +3953,43 @@ class Edb(EdbInit):
4149
3953
  :class:`Workflow <pyedb.workflow.Workflow>`
4150
3954
  """
4151
3955
  return Workflow(self)
3956
+
3957
+ def export_gds_comp_xml(self, comps_to_export, gds_comps_unit="mm", control_path=None):
3958
+ """Exports an XML file with selected components information for use in a GDS import.
3959
+ Parameters
3960
+ ----------
3961
+ comps_to_export : list
3962
+ List of components whose information will be exported to xml file.
3963
+ gds_comps_unit : str, optional
3964
+ GDS_COMPONENTS section units. Default is ``"mm"``.
3965
+ control_path : str, optional
3966
+ Path for outputting the XML file.
3967
+ Returns
3968
+ -------
3969
+ bool
3970
+ ``True`` when successful, ``False`` when failed.
3971
+ """
3972
+ from pyedb.generic.general_methods import ET
3973
+
3974
+ components = ET.Element("GDS_COMPONENTS")
3975
+ components.set("LengthUnit", gds_comps_unit)
3976
+ if not comps_to_export:
3977
+ comps_to_export = self.components
3978
+ for comp in comps_to_export:
3979
+ ocomp = self.components[comp]
3980
+ gds_component = ET.SubElement(components, "GDS_COMPONENT")
3981
+ for pin_name, pin in ocomp.pins.items():
3982
+ pins_position_unit = unit_converter(pin.position, output_units=gds_comps_unit)
3983
+ gds_pin = ET.SubElement(gds_component, "GDS_PIN")
3984
+ gds_pin.set("Name", pin_name)
3985
+ gds_pin.set("x", str(pins_position_unit[0]))
3986
+ gds_pin.set("y", str(pins_position_unit[1]))
3987
+ gds_pin.set("Layer", pin.placement_layer)
3988
+ component = ET.SubElement(gds_component, "Component")
3989
+ component.set("RefDes", ocomp.refdes)
3990
+ component.set("PartName", ocomp.partname)
3991
+ component.set("PartType", ocomp.type)
3992
+ tree = ET.ElementTree(components)
3993
+ ET.indent(tree, space="\t", level=0)
3994
+ tree.write(control_path)
3995
+ return True if os.path.exists(control_path) else False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyedb
3
- Version: 0.39.0
3
+ Version: 0.40.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>
@@ -24,6 +24,7 @@ Requires-Dist: pandas>=1.1.0,<2.3
24
24
  Requires-Dist: pydantic>=2.6.4,<2.11
25
25
  Requires-Dist: Rtree >= 1.2.0
26
26
  Requires-Dist: toml == 0.10.2
27
+ Requires-Dist: shapely
27
28
  Requires-Dist: scikit-rf
28
29
  Requires-Dist: ansys-edb-core
29
30
  Requires-Dist: ansys-api-edb
@@ -1,41 +1,41 @@
1
- pyedb/__init__.py,sha256=Grl7fw-h46joKNpay8knH-tTKml6dRK9F0wf8SHfYw4,1525
1
+ pyedb/__init__.py,sha256=BRJLpM2hZO7sdF_z0jRQy40961hhF4M8Y3h7yreF4h0,1525
2
2
  pyedb/edb_logger.py,sha256=7KXPvAMCKzlzJ5zioiNO5A3zkqbpCHhWHB4aXKfgu5Y,14959
3
3
  pyedb/exceptions.py,sha256=n94xluzUks6BA24vd_L6HkrvoP_H_l6__hQmqzdCyPo,111
4
4
  pyedb/siwave.py,sha256=Mgg5ZGzOUOtNdlePHcnrgN3rletQ7jrqRi3WfxF58uU,17727
5
5
  pyedb/workflow.py,sha256=Y0ya4FUHwlSmoLP45zjdYLsSpyKduHUSpT9GGK9MGd8,814
6
6
  pyedb/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- pyedb/common/nets.py,sha256=B59J70Gg7Pjxdv52mvzA7I53n8p9AMg20cMuEc0zbCk,17468
7
+ pyedb/common/nets.py,sha256=a6w_U-dCrWA4l0GUC9mf1nio91BGGOKh3K6cqd4I5vM,17877
8
8
  pyedb/component_libraries/ansys_components.py,sha256=O3ypt832IHY9zG2AD_yrRrbH2KH9P1yFaoi1EO6Zllw,4830
9
9
  pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  pyedb/configuration/cfg_boundaries.py,sha256=5_v6HD0VgkFCJHgx5zTIn_nxPv3KpcCuGz9P4Kk4ywM,6246
11
11
  pyedb/configuration/cfg_common.py,sha256=U45p2qksEwMY_woVFaSwn5qjib9QQJDShajZZ-IZV0Y,2575
12
- pyedb/configuration/cfg_components.py,sha256=qornSzmo8-SpqO3s3RNuHXGpPUeR-SXCXf9iO6Y2NAc,14179
12
+ pyedb/configuration/cfg_components.py,sha256=6K-bK0FuCcf-Tl2o4v-p54Z37eZghUPxye2aOUuebRU,14302
13
13
  pyedb/configuration/cfg_data.py,sha256=sy1xUrfhRA3jorbR60qGExaMxQ1nQGGAbZYJ0xXYktE,3860
14
14
  pyedb/configuration/cfg_general.py,sha256=TIiitITvHFHE-zUCmRCdHSnaMKRecwRHf00cykNYMA0,2148
15
15
  pyedb/configuration/cfg_modeler.py,sha256=lR19tt5WdjpQ4IN5qCr1X1iykZqAivwViMNgUYOpoz4,5939
16
16
  pyedb/configuration/cfg_nets.py,sha256=18NezeNh0ZOwk2ehz3zWJF_xYR7IYCqGlpDfDt7Ilho,2349
17
17
  pyedb/configuration/cfg_operations.py,sha256=CFLBdM2kQBsW6f7W0NHWbV56RDMHSnaNQl3BmqDWQWo,4707
18
18
  pyedb/configuration/cfg_package_definition.py,sha256=bnwS6p8oaHsD6ia3C7MmjQvQMyOJteK5i7EnbN84bJY,5296
19
- pyedb/configuration/cfg_padstacks.py,sha256=1ksowII2qhP3tVKM0ja_WRDzYWF7W3Pj5s_5Omw1nu4,20779
19
+ pyedb/configuration/cfg_padstacks.py,sha256=r8sn2eQJweKbZbUnn26SfSkAHC9j26P5OllPS0qzHl8,20781
20
20
  pyedb/configuration/cfg_pin_groups.py,sha256=zNKfVP-fd1qUxS2wNb0ZTLGonkUnBmiXb4Rss1Rr7sE,3714
21
- pyedb/configuration/cfg_ports_sources.py,sha256=PX0Nfji-UsR17G2mC-fxAar3nzA7MGY293C4jizQGjM,31087
21
+ pyedb/configuration/cfg_ports_sources.py,sha256=Ym0l_J1pu3i3LVra-uIsTT4FS7GKFCJ3Eg8RqWi9BjM,33248
22
22
  pyedb/configuration/cfg_s_parameter_models.py,sha256=DgBprcEYR2r_3BY4f_CuwuhJw_QFEag3xaAlLTRfMuE,5356
23
23
  pyedb/configuration/cfg_setup.py,sha256=QGKQHAEeo196TYtKMvIMb2-p8KC4U8fmHx0yn0SpgMo,10351
24
24
  pyedb/configuration/cfg_spice_models.py,sha256=Q_5j2-V6cepSFcnijot8iypTqzanLp7HOz-agmnwKns,2570
25
- pyedb/configuration/cfg_stackup.py,sha256=Ie2mdHfCgPn3F7BSdLlYZoZ3exhCDgPrhlYwxHZ6ABU,6484
25
+ pyedb/configuration/cfg_stackup.py,sha256=nrjbjArkV4edkgbmpfm4FBWizM7qlN6DKTiNFRevGqk,7507
26
26
  pyedb/configuration/configuration.py,sha256=c6SViP7I0Ex7cH12ueDow0DPVKXHIvkg3RZX9qSgnFA,16751
27
27
  pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  pyedb/dotnet/clr_module.py,sha256=EabqZgZgBZOhJD9_V8Ll8sEKgBFj9xe9zARNYIvYM_s,5304
29
29
  pyedb/dotnet/edb.py,sha256=KPaIxHyhsx0lWNU27tcuuLnG8SuybsPHgQHxqT82-oQ,186767
30
30
  pyedb/dotnet/database/Variables.py,sha256=CX12X6u-2tbcgjYJU643TVjIJEGB58a2nM4f4wMVTR8,77687
31
31
  pyedb/dotnet/database/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
32
- pyedb/dotnet/database/components.py,sha256=WKsGDge8-mheuTqordLdJnfql3YqQx3zy_W04qrRKLc,109373
32
+ pyedb/dotnet/database/components.py,sha256=9HldXwn2xV7RPD-C9u_zpHTd6b5SKZkDled-NKrbweo,109471
33
33
  pyedb/dotnet/database/general.py,sha256=k2Bcr5VV-QUzEZlYorqYCX1ZchHBH7WqUvc8maMxId0,4716
34
34
  pyedb/dotnet/database/hfss.py,sha256=9UuTuEZwFKAw9E2HJXuzb4uH4kNrp3t00dJjgY1Ymug,68671
35
35
  pyedb/dotnet/database/layout_obj_instance.py,sha256=se6eJ2kfQOAZfAwObCBdr0A7CCD3st4aiPPVJR9eQoA,1407
36
36
  pyedb/dotnet/database/layout_validation.py,sha256=kanRMaFz7Xv_3jFUwdbbzc1d6Rj6kaHAjM4eNOTrYIk,13597
37
- pyedb/dotnet/database/materials.py,sha256=tNZm3HKRoSLZpzGQrRSpdgyZ925YqmGLirl7WJDby5Q,43180
38
- pyedb/dotnet/database/modeler.py,sha256=KS5zkWf8W72EIQT1orlPln3E9fu4CfpRT7HIXXxNunc,55494
37
+ pyedb/dotnet/database/materials.py,sha256=lR3LwHpK9UUBuL542M7jw5mLlmgwn5n4d4kHcmBF2AU,44234
38
+ pyedb/dotnet/database/modeler.py,sha256=ygY-9E3sIfFhHpk19-_J7xlLbQXB1Iw5xhXnW1Eoalw,55675
39
39
  pyedb/dotnet/database/net_class.py,sha256=NxRX8feIaJyf3NmRfSzZ08ItDbZOucOyAnTHZh-LkUI,11354
40
40
  pyedb/dotnet/database/nets.py,sha256=R--2ETa3-nc1RU5AqW4UjKXvA8oYKYLt06mQEsyi2j4,25213
41
41
  pyedb/dotnet/database/padstack.py,sha256=lYIHF_GXBBP2sIacq7wP0-0-lwj4J0cB2UnWYtzdRjs,73219
@@ -60,7 +60,7 @@ pyedb/dotnet/database/cell/primitive/path.py,sha256=Vdkjvm2qv-gib4L4JaMbhT36vUmv
60
60
  pyedb/dotnet/database/cell/primitive/primitive.py,sha256=KvzC_EdC2qbxWVyFLSAKON5grqFLaIb5i0NHtqOqqoQ,28796
61
61
  pyedb/dotnet/database/cell/terminal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  pyedb/dotnet/database/cell/terminal/bundle_terminal.py,sha256=6wKbXqnyCCoYsBQGkHga-40brmGzGv4zly45OB33HJM,1977
63
- pyedb/dotnet/database/cell/terminal/edge_terminal.py,sha256=ANqKNNC3jqIq18QR-eID_pBfa_wFcRI3MDnm15IYJh8,2158
63
+ pyedb/dotnet/database/cell/terminal/edge_terminal.py,sha256=uyoemVyEzez8WjI9Fyqh-RbtmkJHjjUM5F1CsUErSOY,3970
64
64
  pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py,sha256=xQ331XSzd8IYeO5tlny7G-1KI54ysSCN-A0GH44PC_o,4417
65
65
  pyedb/dotnet/database/cell/terminal/pingroup_terminal.py,sha256=60DUrszHP7QUVPSxoqTYrkOUukZsGiGNE3zd2Wa-2zQ,2753
66
66
  pyedb/dotnet/database/cell/terminal/point_terminal.py,sha256=n-QQcN9xfge63Xe1U8fGkKv3yWHHE6UWbn2pUxJ7Kj4,3015
@@ -82,7 +82,7 @@ pyedb/dotnet/database/edb_data/hfss_extent_info.py,sha256=Ydzle6moatP89kQdjnzyNa
82
82
  pyedb/dotnet/database/edb_data/layer_data.py,sha256=4Z_eaHSfGfwQBKETEmGSwMvwGzvirtwYw4G4TwonNiA,34314
83
83
  pyedb/dotnet/database/edb_data/nets_data.py,sha256=siq2w5CT5D5PeK9tC_vaGM54UOyqnYkcP4kUts459es,10009
84
84
  pyedb/dotnet/database/edb_data/padstacks_data.py,sha256=18VZaivT9tT7-KCXbXsEZbokRRi_CQCTqCQFcAj-FtU,78343
85
- pyedb/dotnet/database/edb_data/ports.py,sha256=-FdBOAd2NZRpjvKNrZRSaKGsDr-LxKREzpFSYVvatz0,8873
85
+ pyedb/dotnet/database/edb_data/ports.py,sha256=ycOETLruRl4wwL372Jftm_rFg2vfluyb_Rv39C5OSKA,7061
86
86
  pyedb/dotnet/database/edb_data/primitives_data.py,sha256=gBW7GiaPxDWBUj1wgOIiNHJ3QKM2ZDU0SJh0JWUlFHc,16826
87
87
  pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py,sha256=f_09VvuDHeaIuTivSi2OiAEv8aJ52vBasuBoSS9sCQE,20953
88
88
  pyedb/dotnet/database/edb_data/simulation_configuration.py,sha256=epMOclqz9nyewh2zEHFzylSS6e4-10dAqKzzZYbkgaw,100432
@@ -119,27 +119,27 @@ pyedb/generic/general_methods.py,sha256=Lg4k53Ny9LraiU6AQX5WwBiPFqtvGaZ3Ik7LcWil
119
119
  pyedb/generic/plot.py,sha256=4zCA5lpk-FhPmWR7xi6yecc5lZtRpxJdd3B8FLGXmxE,4705
120
120
  pyedb/generic/process.py,sha256=i0poMbEnFFAsnNOPWN-myMnUaG7hMClKi9kGPMFyvCM,11148
121
121
  pyedb/generic/settings.py,sha256=QTX5OVZ8sVPIy_QaSxRODUWvoXkYkVpzh3l6pQPseKQ,9220
122
- pyedb/grpc/edb.py,sha256=dN6TkycJOxckkzw9NYB8CAG02qK0C97ecQfOmtVMt8M,168675
122
+ pyedb/grpc/edb.py,sha256=eZ88P7SXtnhyPHyJt4-SbpsbbJ7Cx35SrFPHKicP-ac,159519
123
123
  pyedb/grpc/edb_init.py,sha256=7uhG2VjHvS9N8CU-zDyW8jh_dWe8MWkfyU2k4-B8sX8,14513
124
124
  pyedb/grpc/rpc_session.py,sha256=UvxDSXuJFvemFJbQQtbI6nhYI9KBN366fw-jjoWysmE,6979
125
125
  pyedb/grpc/database/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
126
- pyedb/grpc/database/components.py,sha256=dIXwXwdZzCWH3JNXV7gBNqO-gP0s9ov1KuSXNbQf8lI,85244
126
+ pyedb/grpc/database/components.py,sha256=EYlvcj5S47Zzga3Ns5dtXBgB3hG2cYbWo9HsrD2vuug,83913
127
127
  pyedb/grpc/database/control_file.py,sha256=rEsdYykh5-GcYTrZW32nk3IPpdNjlhlQ2PYgbkBgQ_8,48217
128
128
  pyedb/grpc/database/definitions.py,sha256=jtfg2crkmwqn9rEe8pSn1F-TtyBDLl8U6hs7ZmNbXA8,2922
129
129
  pyedb/grpc/database/general.py,sha256=QBZlMO4Tzec00HcaLVQ8fDTLox-pHjOcH2wpWge2sZw,1633
130
130
  pyedb/grpc/database/hfss.py,sha256=pHOkPHHviRVf93pv3vNqEb88wO95BB6_CcURoaXQ0f4,45670
131
- pyedb/grpc/database/layout_validation.py,sha256=I93JnGk_6dNmbaTmnaMbZwRN3nw-EvwOcKo0lp0Ss0w,13018
131
+ pyedb/grpc/database/layout_validation.py,sha256=GuDjxDQnIdUglk-yq7HCMP74V_1L5upPbVsE_g8dHHg,13494
132
132
  pyedb/grpc/database/modeler.py,sha256=DHKHbR8h9tzvI0ECj_ryb-dGHL_L4kgzYqXJHs8VVO4,55086
133
133
  pyedb/grpc/database/nets.py,sha256=aBGhSzudYcq_heAyOX9ucAmLXY4nwOPrnRegRJ3lcHc,21234
134
- pyedb/grpc/database/padstacks.py,sha256=RjKZea2b4Uvb-xCYuOQjwpfrW42O-RKPMTBQQrHXPfM,58551
134
+ pyedb/grpc/database/padstacks.py,sha256=NedumZMv4BNoYYmNnhdGZCQEbGf9kFMwRzjcBzo9wHw,64881
135
135
  pyedb/grpc/database/siwave.py,sha256=XOc_nvsIKKSAbYj27GLBE0NhwpAJfzecJ_TQIKJGy6k,35157
136
- pyedb/grpc/database/source_excitations.py,sha256=OyR8YBOYDZhcHyD1H8styl7_LEt7CT2fAXEOp_6ZLDA,108401
136
+ pyedb/grpc/database/source_excitations.py,sha256=Sgw8HScDg1ooVf-JuBw_qNBJdLE1PIYoNV26nEnXNbI,107169
137
137
  pyedb/grpc/database/stackup.py,sha256=hT9krLiP5yajlZ0gRl72G4yp_PMUe2MeFNolF3reDGw,108882
138
138
  pyedb/grpc/database/definition/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
139
  pyedb/grpc/database/definition/component_def.py,sha256=3QSORWKKQZ50hPMuodX_aVyfSf_RlRwCJSOShDXRofE,6939
140
140
  pyedb/grpc/database/definition/component_model.py,sha256=9TRfILC3FfmgSrnYRwEdF2kbY4jFcC5rSeR9xeeb3wg,1689
141
141
  pyedb/grpc/database/definition/component_pin.py,sha256=zvE82RByhWC8rIkqL3rjYQyZuk9JfVsJ6Bw43xZH8zM,1489
142
- pyedb/grpc/database/definition/materials.py,sha256=N69OY0UFX_zAKx1Zl8tNMlbnWr2Rssi6xnlgbqEF0vg,43493
142
+ pyedb/grpc/database/definition/materials.py,sha256=WQVCNuWLvKBK6KWLoOiT8XJG80n6UKmP6s31QQjx4EM,44387
143
143
  pyedb/grpc/database/definition/n_port_component_model.py,sha256=8dC636At0iyfAWShugHGDOerytpoV6cvShPEGkXH89I,1543
144
144
  pyedb/grpc/database/definition/package_def.py,sha256=jBgNlr5kBTlkt7gNvo6tdlKkV7Xpjil7nYy5WrYwCSI,7503
145
145
  pyedb/grpc/database/definition/padstack_def.py,sha256=58zkH-XPQW7f5fBpTGksHq9tLkGbHJUC1tDEHKs7yqw,29672
@@ -161,19 +161,19 @@ pyedb/grpc/database/layers/layer.py,sha256=xOOR6ZLJFHd8_QbKZXMAtojhuB_KILoKP8K7Y
161
161
  pyedb/grpc/database/layers/stackup_layer.py,sha256=qi2oPaJXiszwpSy4oZ-uxzCZFyzE2BsGgi0XSrIleYY,12582
162
162
  pyedb/grpc/database/layout/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
163
  pyedb/grpc/database/layout/cell.py,sha256=5qMqEBvIruIE3Ru1JBYMkGlS31uOJShWm3J3OMd8HiQ,1379
164
- pyedb/grpc/database/layout/layout.py,sha256=Xy2YkbeutgaNEUleH0C1RCGcfsgQTdnC124T39Qpzqc,6790
164
+ pyedb/grpc/database/layout/layout.py,sha256=WoDHTAawUuF5EeoWDq5X9LLIu05B-rdChly6uC6lMpI,8805
165
165
  pyedb/grpc/database/layout/voltage_regulator.py,sha256=ObKjdQeLDxNHfW7V1i-yPCdabTzmBgKj0dIHr3TLWNk,5140
166
166
  pyedb/grpc/database/net/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
167
  pyedb/grpc/database/net/differential_pair.py,sha256=DbYbyO0e6bHpqY4lZWU2quHlGBvA5n0ekVvD4MntG5I,4670
168
168
  pyedb/grpc/database/net/extended_net.py,sha256=DeK1vwsx_kuCWhORitL_z2APTigdtWZZfbllpt0B0ho,12865
169
- pyedb/grpc/database/net/net.py,sha256=ig4S3Z1SXTNVxD0KhiUXJddnBAImanUvbp2TIGBGet0,6895
169
+ pyedb/grpc/database/net/net.py,sha256=T0i_Q_xhpfZSSIplk8fqQlBJIy_jDbdaB298CQcg50E,7027
170
170
  pyedb/grpc/database/net/net_class.py,sha256=ojoEZ_7YJW0cEhRWIc9hLBHILBhrVPuRpRjrrBJux3c,2961
171
171
  pyedb/grpc/database/ports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  pyedb/grpc/database/ports/ports.py,sha256=boa3pfu-qLHsBi3-JqO5YxfWws21gWZHjLSPm63xocM,10199
173
173
  pyedb/grpc/database/primitive/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
174
174
  pyedb/grpc/database/primitive/bondwire.py,sha256=_zwMsxOacKzACXaGYr1SVCeHEA_R1hG3iEOMvbcC308,6241
175
175
  pyedb/grpc/database/primitive/circle.py,sha256=ABIiF7PgtxMR-DdR8rL6KeEkw2rQeVddP8cBXRi0FTw,2517
176
- pyedb/grpc/database/primitive/padstack_instance.py,sha256=Kvprkh0e1TdBjlfACeMEuW9bgDTSqFFHhxd0XUyTj1I,37205
176
+ pyedb/grpc/database/primitive/padstack_instance.py,sha256=fh_S-D6BMWgL0maygDEDljeEzTVXnTZT4960Slmb05o,37212
177
177
  pyedb/grpc/database/primitive/path.py,sha256=BUsmc8xkaNuh97ym0z8HRSpw0MU1tB6nfpbQiw-UsA0,12056
178
178
  pyedb/grpc/database/primitive/polygon.py,sha256=BxuDy7OGSGTA5mw3ChjKxtf8dnO3eecTicg7jj1F2_k,9488
179
179
  pyedb/grpc/database/primitive/primitive.py,sha256=0CzG_qHwi0nY1-YvGrOiDeFt9NrTbOE_K3UJc3r7aUw,24784
@@ -282,7 +282,7 @@ pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py,sha256=YmYI6WTQulL5Uf8Wx
282
282
  pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py,sha256=KHa-UqcXuabiVfT2CV-UvWl5Q2qGYHF2Ye9azcAlnXc,3966
283
283
  pyedb/modeler/geometry_operators.py,sha256=YhR-QE0dvIkbp4SsjWp309KDE1OZa6wUzr8a634MuJ4,74195
284
284
  pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
285
- pyedb-0.39.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
286
- pyedb-0.39.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
287
- pyedb-0.39.0.dist-info/METADATA,sha256=h3DgkY8Wcgll92nW70oghUBRmXnAJ_ITZpDUTtmCDXE,8594
288
- pyedb-0.39.0.dist-info/RECORD,,
285
+ pyedb-0.40.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
286
+ pyedb-0.40.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
287
+ pyedb-0.40.0.dist-info/METADATA,sha256=7P1bJJjTnkTqyvvDU_LtCdNtEIzUrkcAQ8rdZZN3374,8617
288
+ pyedb-0.40.0.dist-info/RECORD,,
File without changes