pyedb 0.42.0__py3-none-any.whl → 0.43.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.

@@ -19,7 +19,7 @@
19
19
  # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
-
22
+ import re
23
23
  import warnings
24
24
 
25
25
 
@@ -524,23 +524,76 @@ class SweepData(object):
524
524
 
525
525
  def add(self, sweep_type, start, stop, increment):
526
526
  sweep_type = sweep_type.replace(" ", "_")
527
- start = start.upper().replace("Z", "z") if isinstance(start, str) else str(start)
528
- stop = stop.upper().replace("Z", "z") if isinstance(stop, str) else str(stop)
529
- increment = increment.upper().replace("Z", "z") if isinstance(increment, str) else int(increment)
530
- if sweep_type in ["linear_count", "linear_scale"]:
531
- freqs = list(self._edb_object.SetFrequencies(start, stop, increment))
532
- elif sweep_type == "log_scale":
533
- freqs = list(self._edb_object.SetLogFrequencies(start, stop, increment))
527
+ start = f"{self._pedb.edb_value(start).ToDouble() / 1e9}GHz"
528
+ stop = f"{self._pedb.edb_value(stop).ToDouble() / 1e9}GHz"
529
+
530
+ if sweep_type == "linear_scale":
531
+ increment = f"{self._pedb.edb_value(increment).ToDouble() / 1e9}GHz"
532
+ frequencty_string = f"LIN {start} {stop} {increment}"
534
533
  else:
535
- raise ValueError("sweep_type must be either 'linear_count', 'linear_scale' or 'log_scale")
536
- return self.add_frequencies(freqs)
534
+ increment = int(increment)
535
+ if sweep_type == "log_scale":
536
+ frequencty_string = f"DEC {start} {stop} {increment}"
537
+ elif sweep_type == "linear_count":
538
+ frequencty_string = f"LINC {start} {stop} {increment}"
539
+ else:
540
+ raise ValueError("sweep_type must be either 'linear_count', 'linear_scale' or 'log_scale")
541
+ temp = self.frequency_string
542
+ temp.append(frequencty_string)
543
+ self.frequency_string = temp
544
+ return self.frequencies
545
+
546
+ @property
547
+ def frequency_string(self):
548
+ """A string describing the frequency sweep. Below is an example.
549
+ ['LIN 0GHz 20GHz 0.05GHz', 'LINC 20GHz 30GHz 10', 'DEC 40GHz 50GHz 10']
550
+ """
551
+ pattern = r"(?:LIN[C]?|DEC) [^ ]+ [^ ]+ [^ ]+"
552
+ grouped = re.findall(pattern, self._edb_object.FrequencyString)
553
+ return grouped
554
+
555
+ @frequency_string.setter
556
+ def frequency_string(self, value):
557
+ value = value if isinstance(value, list) else [value]
558
+ temp = []
559
+ for i in value:
560
+ sweep_type, start, stop, increment = i.split(" ")
561
+ start = start.replace("k", "K").replace("h", "H").replace("Z", "z").replace("g", "G")
562
+ stop = stop.replace("k", "K").replace("h", "H").replace("Z", "z").replace("g", "G")
563
+ temp.append(" ".join([sweep_type, start, stop, increment]))
564
+ value = temp
565
+ self._edb_object.FrequencyString = " ".join(value)
566
+
567
+ frequencies = []
568
+ for i in value:
569
+ sweep_type, start, stop, increment = i.split(" ")
570
+ if sweep_type == "LIN":
571
+ frequencies.extend(self._edb_object.SetFrequencies(start, stop, increment))
572
+ else:
573
+ increment = int(increment)
574
+ if sweep_type == "DEC":
575
+ frequencies.extend(self._edb_object.SetLogFrequencies(start, stop, increment))
576
+ elif sweep_type == "LINC":
577
+ frequencies.extend(self._edb_object.SetFrequencies(start, stop, increment))
578
+
579
+ self.clear()
580
+ self.add_frequencies(frequencies)
537
581
 
538
582
  def add_frequencies(self, frequencies):
539
583
  if not isinstance(frequencies, list):
540
584
  frequencies = [frequencies]
585
+
586
+ temp = []
587
+ for i in frequencies:
588
+ i = self._pedb.edb_value(i).ToDouble()
589
+ if i not in temp and i not in self.frequencies:
590
+ temp.append(i)
591
+ frequencies = temp
592
+
541
593
  for i in frequencies:
542
594
  i = self._pedb.edb_value(i).ToString()
543
595
  self._edb_object.Frequencies.Add(i)
596
+ self._update_sweep()
544
597
  return list(self._edb_object.Frequencies)
545
598
 
546
599
  def clear(self):
@@ -268,22 +268,16 @@ class SimulationSetup(object):
268
268
  setattr(sweep_data, k, v)
269
269
  sweep_data.type = sweep_type
270
270
 
271
- if frequency_set is None:
271
+ if frequency_set in [None, []]:
272
272
  sweep_type = "linear_scale"
273
273
  start, stop, increment = "50MHz", "5GHz", "50MHz"
274
+ frequency_set = [[sweep_type, start, stop, increment]]
275
+ elif not isinstance(frequency_set[0], list):
276
+ frequency_set = [frequency_set]
277
+
278
+ for fs in frequency_set:
279
+ sweep_type, start, stop, increment = fs
274
280
  sweep_data.add(sweep_type, start, stop, increment)
275
- elif len(frequency_set) == 0:
276
- pass
277
- else:
278
- if not isinstance(frequency_set[0], list):
279
- frequency_set = [frequency_set]
280
- for fs in frequency_set:
281
- sweep_data.add(*fs)
282
-
283
- ss_info = self.sim_setup_info
284
- ss_info.add_sweep_data(sweep_data)
285
- self.set_sim_setup_info(ss_info)
286
- self._update_setup()
287
281
  return sweep_data
288
282
 
289
283
  def delete(self):
pyedb/dotnet/edb.py CHANGED
@@ -32,7 +32,6 @@ import re
32
32
  import shutil
33
33
  import subprocess
34
34
  import sys
35
- import tempfile
36
35
  import time
37
36
  import traceback
38
37
  from typing import Union
@@ -48,10 +47,7 @@ from pyedb.dotnet.database.cell.terminal.terminal import Terminal
48
47
  from pyedb.dotnet.database.components import Components
49
48
  import pyedb.dotnet.database.dotnet.database
50
49
  from pyedb.dotnet.database.dotnet.database import Database
51
- from pyedb.dotnet.database.edb_data.control_file import (
52
- ControlFile,
53
- convert_technology_file,
54
- )
50
+ from pyedb.dotnet.database.edb_data.control_file import convert_technology_file
55
51
  from pyedb.dotnet.database.edb_data.design_options import EdbDesignOptions
56
52
  from pyedb.dotnet.database.edb_data.edbvalue import EdbValue
57
53
  from pyedb.dotnet.database.edb_data.ports import (
@@ -243,7 +239,7 @@ class Edb(Database):
243
239
  else:
244
240
  control_file = convert_technology_file(technology_file, edbversion=edbversion)
245
241
  self.logger.info("Translating ODB++ to EDB...")
246
- self.import_layout_pcb(edbpath[:-4], working_dir, use_ppe=use_ppe, control_file=control_file)
242
+ self.import_layout_file(edbpath[:-4], working_dir, use_ppe=use_ppe, control_file=control_file)
247
243
  if settings.enable_local_log_file and self.log_name:
248
244
  self._logger.add_file_logger(self.log_name, "Edb")
249
245
  self.logger.info("EDB %s was created correctly from %s file.", self.edbpath, edbpath)
@@ -256,7 +252,7 @@ class Edb(Database):
256
252
  control_file = technology_file
257
253
  else:
258
254
  control_file = convert_technology_file(technology_file, edbversion=edbversion)
259
- self.import_layout_pcb(edbpath, working_dir, use_ppe=use_ppe, control_file=control_file)
255
+ self.import_layout_file(edbpath, working_dir, use_ppe=use_ppe, control_file=control_file)
260
256
  if settings.enable_local_log_file and self.log_name:
261
257
  self._logger.add_file_logger(self.log_name, "Edb")
262
258
  self.logger.info("EDB %s was created correctly from %s file.", self.edbpath, edbpath[-2:])
@@ -610,9 +606,15 @@ class Edb(Database):
610
606
  anstranslator_full_path="",
611
607
  use_ppe=False,
612
608
  control_file=None,
609
+ map_file=None,
610
+ tech_file=None,
611
+ layer_filter=None,
613
612
  ):
614
613
  """Import a board file and generate an ``edb.def`` file in the working directory.
615
614
 
615
+ .. deprecated:: 0.42.0
616
+ Use :func:`import_layout_file` method instead.
617
+
616
618
  This function supports all AEDT formats, including DXF, GDS, SML (IPC2581), BRD, MCM, SIP, ZIP and TGZ.
617
619
 
618
620
  Parameters
@@ -630,6 +632,65 @@ class Edb(Database):
630
632
  Path to the XML file. The default is ``None``, in which case an attempt is made to find
631
633
  the XML file in the same directory as the board file. To succeed, the XML file and board file
632
634
  must have the same name. Only the extension differs.
635
+ tech_file : str, optional
636
+ Technology file. The file can be *.ircx, *.vlc.tech, or *.itf
637
+ map_file : str, optional
638
+ Layer map .map file.
639
+ layer_filter:str,optional
640
+ Layer filter .txt file.
641
+
642
+ Returns
643
+ -------
644
+ Full path to the AEDB file : str
645
+ """
646
+ self.logger.warning("import_layout_pcb method is deprecated, use import_layout_file instead.")
647
+ return self.import_layout_file(
648
+ input_file,
649
+ working_dir,
650
+ anstranslator_full_path,
651
+ use_ppe,
652
+ control_file,
653
+ map_file,
654
+ tech_file,
655
+ layer_filter,
656
+ )
657
+
658
+ def import_layout_file(
659
+ self,
660
+ input_file,
661
+ working_dir="",
662
+ anstranslator_full_path="",
663
+ use_ppe=False,
664
+ control_file=None,
665
+ map_file=None,
666
+ tech_file=None,
667
+ layer_filter=None,
668
+ ):
669
+ """Import a board file and generate an ``edb.def`` file in the working directory.
670
+
671
+ This function supports all AEDT formats, including DXF, GDS, SML (IPC2581), BRD, MCM, SIP, ZIP and TGZ.
672
+
673
+ Parameters
674
+ ----------
675
+ input_file : str
676
+ Full path to the board file.
677
+ working_dir : str, optional
678
+ Directory in which to create the ``aedb`` folder. The name given to the AEDB file
679
+ is the same as the name of the board file.
680
+ anstranslator_full_path : str, optional
681
+ Full path to the Ansys translator. The default is ``""``.
682
+ use_ppe : bool
683
+ Whether to use the PPE License. The default is ``False``.
684
+ control_file : str, optional
685
+ Path to the XML file. The default is ``None``, in which case an attempt is made to find
686
+ the XML file in the same directory as the board file. To succeed, the XML file and board file
687
+ must have the same name. Only the extension differs.
688
+ tech_file : str, optional
689
+ Technology file. The file can be *.ircx, *.vlc.tech, or *.itf
690
+ map_file : str, optional
691
+ Layer map .map file.
692
+ layer_filter:str,optional
693
+ Layer filter .txt file.
633
694
 
634
695
  Returns
635
696
  -------
@@ -666,6 +727,12 @@ class Edb(Database):
666
727
  cmd_translator.append("-c={}".format(control_file))
667
728
  else:
668
729
  cmd_translator.append('-c="{}"'.format(control_file))
730
+ if map_file:
731
+ cmd_translator.append('-g="{}"'.format(map_file))
732
+ if tech_file:
733
+ cmd_translator.append('-t="{}"'.format(tech_file))
734
+ if layer_filter:
735
+ cmd_translator.append('-f="{}"'.format(layer_filter))
669
736
  p = subprocess.Popen(cmd_translator)
670
737
  p.wait()
671
738
  if not os.path.exists(os.path.join(working_dir, aedb_name)):
@@ -1466,7 +1533,7 @@ class Edb(Database):
1466
1533
  ``True`` when successful, ``False`` when failed.
1467
1534
 
1468
1535
  """
1469
- if self.import_layout_pcb(
1536
+ if self.import_layout_file(
1470
1537
  inputBrd,
1471
1538
  working_dir=WorkDir,
1472
1539
  anstranslator_full_path=anstranslator_full_path,
@@ -1476,103 +1543,6 @@ class Edb(Database):
1476
1543
  else:
1477
1544
  return False
1478
1545
 
1479
- def import_gds_file(
1480
- self,
1481
- inputGDS,
1482
- anstranslator_full_path="",
1483
- use_ppe=False,
1484
- control_file=None,
1485
- tech_file=None,
1486
- map_file=None,
1487
- layer_filter=None,
1488
- ):
1489
- """Import a GDS file and generate an ``edb.def`` file in the working directory.
1490
-
1491
- ..note::
1492
- `ANSYSLMD_LICENSE_FILE` is needed to run the translator.
1493
-
1494
- Parameters
1495
- ----------
1496
- inputGDS : str
1497
- Full path to the GDS file.
1498
- anstranslator_full_path : str, optional
1499
- Full path to the Ansys translator.
1500
- use_ppe : bool, optional
1501
- Whether to use the PPE License. The default is ``False``.
1502
- control_file : str, optional
1503
- Path to the XML file. The default is ``None``, in which case an attempt is made to find
1504
- the XML file in the same directory as the GDS file. To succeed, the XML file and GDS file must
1505
- have the same name. Only the extension differs.
1506
- tech_file : str, optional
1507
- Technology file. For versions<2024.1 it uses Helic to convert tech file to xml and then imports
1508
- the gds. Works on Linux only.
1509
- For versions>=2024.1 it can directly parse through supported foundry tech files.
1510
- map_file : str, optional
1511
- Layer map file.
1512
- layer_filter:str,optional
1513
- Layer filter file.
1514
-
1515
- """
1516
- control_file_temp = os.path.join(tempfile.gettempdir(), os.path.split(inputGDS)[-1][:-3] + "xml")
1517
- if float(self.edbversion) < 2024.1:
1518
- if not is_linux and tech_file:
1519
- self.logger.error("Technology files are supported only in Linux. Use control file instead.")
1520
- return False
1521
-
1522
- ControlFile(xml_input=control_file, tecnhology=tech_file, layer_map=map_file).write_xml(control_file_temp)
1523
- if self.import_layout_pcb(
1524
- inputGDS,
1525
- anstranslator_full_path=anstranslator_full_path,
1526
- use_ppe=use_ppe,
1527
- control_file=control_file_temp,
1528
- ):
1529
- return True
1530
- else:
1531
- return False
1532
- else:
1533
- if anstranslator_full_path and os.path.exists(anstranslator_full_path):
1534
- path = anstranslator_full_path
1535
- else:
1536
- path = os.path.join(self.base_path, "anstranslator")
1537
- if is_windows:
1538
- path += ".exe"
1539
-
1540
- temp_map_file = os.path.splitext(inputGDS)[0] + ".map"
1541
- temp_layermap_file = os.path.splitext(inputGDS)[0] + ".layermap"
1542
-
1543
- if map_file is None:
1544
- if os.path.isfile(temp_map_file):
1545
- map_file = temp_map_file
1546
- elif os.path.isfile(temp_layermap_file):
1547
- map_file = temp_layermap_file
1548
- else:
1549
- self.logger.error("Unable to define map file.")
1550
-
1551
- if tech_file is None:
1552
- if control_file is None:
1553
- temp_control_file = os.path.splitext(inputGDS)[0] + ".xml"
1554
- if os.path.isfile(temp_control_file):
1555
- control_file = temp_control_file
1556
- else:
1557
- self.logger.error("Unable to define control file.")
1558
-
1559
- command = [path, inputGDS, f'-g="{map_file}"', f'-c="{control_file}"']
1560
- else:
1561
- command = [
1562
- path,
1563
- inputGDS,
1564
- f'-o="{control_file_temp}"' f'-t="{tech_file}"',
1565
- f'-g="{map_file}"',
1566
- f'-f="{layer_filter}"',
1567
- ]
1568
-
1569
- result = subprocess.run(command, capture_output=True, text=True, shell=True)
1570
- print(result.stdout)
1571
- print(command)
1572
- temp_inputGDS = inputGDS.split(".gds")[0]
1573
- self.edbpath = temp_inputGDS + ".aedb"
1574
- return self.open_edb()
1575
-
1576
1546
  def _create_extent(
1577
1547
  self,
1578
1548
  net_signals,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyedb
3
- Version: 0.42.0
3
+ Version: 0.43.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>
@@ -1,4 +1,4 @@
1
- pyedb/__init__.py,sha256=44YcFH99XCtHkQnT599hSsY3jVSW_Fz5Ui0t-NR2XrM,1525
1
+ pyedb/__init__.py,sha256=GC9LXioJO6laUhZ1hvSmcq1zNIarZUlhiX4J9qYaQyg,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
@@ -7,26 +7,26 @@ pyedb/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
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
- pyedb/configuration/cfg_boundaries.py,sha256=g7YLynF6o757cwuUZem-6ASLoutHBPPXFyu3Xc8XAbw,6675
10
+ pyedb/configuration/cfg_boundaries.py,sha256=xEJX47_HF3D0enQFwGLMArvH0mFOcmTy2tlgipT_f-Y,11012
11
11
  pyedb/configuration/cfg_common.py,sha256=U45p2qksEwMY_woVFaSwn5qjib9QQJDShajZZ-IZV0Y,2575
12
12
  pyedb/configuration/cfg_components.py,sha256=cvD3K2WJXXGz8GdHZ1jgZFuFIhqzGQDOuSP-IbSjAvA,26052
13
13
  pyedb/configuration/cfg_data.py,sha256=sy1xUrfhRA3jorbR60qGExaMxQ1nQGGAbZYJ0xXYktE,3860
14
- pyedb/configuration/cfg_general.py,sha256=JMWccx_ebgn6-Gx6w2ibibg2x3mCyHid-M4kVex9iks,2270
15
- pyedb/configuration/cfg_modeler.py,sha256=lR19tt5WdjpQ4IN5qCr1X1iykZqAivwViMNgUYOpoz4,5939
16
- pyedb/configuration/cfg_nets.py,sha256=18NezeNh0ZOwk2ehz3zWJF_xYR7IYCqGlpDfDt7Ilho,2349
17
- pyedb/configuration/cfg_operations.py,sha256=CFLBdM2kQBsW6f7W0NHWbV56RDMHSnaNQl3BmqDWQWo,4707
18
- pyedb/configuration/cfg_package_definition.py,sha256=bnwS6p8oaHsD6ia3C7MmjQvQMyOJteK5i7EnbN84bJY,5296
14
+ pyedb/configuration/cfg_general.py,sha256=ss3EXj-l_FHYguEswx08c268hqYzTULe8Ri9W-nopr0,2774
15
+ pyedb/configuration/cfg_modeler.py,sha256=WiGWorw-nJYLAP7DMZCfM1fpWMew5sxLoq6gUCJy9OY,10143
16
+ pyedb/configuration/cfg_nets.py,sha256=vAtp3tTTuTDSDZw6uay4qXjbThqcCoyEXf7fNKW64DY,2900
17
+ pyedb/configuration/cfg_operations.py,sha256=jaujF-M7EiGPf_DoePoIwqk_qtGzcbC9qIF1-3sgsak,5802
18
+ pyedb/configuration/cfg_package_definition.py,sha256=FSSIr33lmg06vuspv587xejJGxTxAXkejJd-X_XtEBs,6108
19
19
  pyedb/configuration/cfg_padstacks.py,sha256=r8sn2eQJweKbZbUnn26SfSkAHC9j26P5OllPS0qzHl8,20781
20
- pyedb/configuration/cfg_pin_groups.py,sha256=xrIWfycNJRBT3jM3Z6TDnIxsnqJGCTR6cckF70rQh-s,4112
20
+ pyedb/configuration/cfg_pin_groups.py,sha256=FS0Mc5mi56s3XNyjWcdV7rNJVZTPm8hXsQK2NS-rWUg,5580
21
21
  pyedb/configuration/cfg_ports_sources.py,sha256=Ym0l_J1pu3i3LVra-uIsTT4FS7GKFCJ3Eg8RqWi9BjM,33248
22
- pyedb/configuration/cfg_s_parameter_models.py,sha256=DgBprcEYR2r_3BY4f_CuwuhJw_QFEag3xaAlLTRfMuE,5356
23
- pyedb/configuration/cfg_setup.py,sha256=vcuK1ZySJH5AoZU-HpVWXxNO7KbcRzaY76U9aU3oKpE,15110
22
+ pyedb/configuration/cfg_s_parameter_models.py,sha256=yq6jJT-vNw03ML-bbIRwdm5r7WVmXihAXoq0XbncqlU,6345
23
+ pyedb/configuration/cfg_setup.py,sha256=4a1FpNLeI1a52Ayifb6BFr7aw0RmBR-lcW917y8ePY0,11296
24
24
  pyedb/configuration/cfg_spice_models.py,sha256=Q_5j2-V6cepSFcnijot8iypTqzanLp7HOz-agmnwKns,2570
25
- pyedb/configuration/cfg_stackup.py,sha256=nrjbjArkV4edkgbmpfm4FBWizM7qlN6DKTiNFRevGqk,7507
26
- pyedb/configuration/configuration.py,sha256=z0XfQeg3etVaVKAuW9fAszzqyO1rbVsfv48wMosbIq4,17464
25
+ pyedb/configuration/cfg_stackup.py,sha256=V3Hv6SqB4nNJMUgQxB2wgGa2oyiU1HL3WE94Q6q1R04,8688
26
+ pyedb/configuration/configuration.py,sha256=0_KHtgZHC8yAHLtKVb22FRlpNRQvQGC3YFdcmbrM-8c,22535
27
27
  pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  pyedb/dotnet/clr_module.py,sha256=EabqZgZgBZOhJD9_V8Ll8sEKgBFj9xe9zARNYIvYM_s,5304
29
- pyedb/dotnet/edb.py,sha256=7B2eSjg6bjWSD4Le5mP-WlELrA34sTsCQ6_5G3YtfLI,187414
29
+ pyedb/dotnet/edb.py,sha256=TiM3VWBZx5iCG2cBKcWLN-YMqGFXR1drIsZKz2BDBAc,186032
30
30
  pyedb/dotnet/database/Variables.py,sha256=CX12X6u-2tbcgjYJU643TVjIJEGB58a2nM4f4wMVTR8,77687
31
31
  pyedb/dotnet/database/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
32
32
  pyedb/dotnet/database/components.py,sha256=9HldXwn2xV7RPD-C9u_zpHTd6b5SKZkDled-NKrbweo,109471
@@ -81,7 +81,7 @@ pyedb/dotnet/database/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXR
81
81
  pyedb/dotnet/database/edb_data/hfss_extent_info.py,sha256=Ydzle6moatP89kQdjnzyNabsCW0KXE4WYqDv7sFyLb8,13040
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
- pyedb/dotnet/database/edb_data/padstacks_data.py,sha256=cdnJg5uiZIXRyTAMZ0-YVvkH-bOF6HTFvoDJKYx1MPs,81692
84
+ pyedb/dotnet/database/edb_data/padstacks_data.py,sha256=lC-jmg4ct8qLdQevUreEig5_7lK6f8qwFrOy7Ojf-rc,81811
85
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
@@ -100,14 +100,14 @@ pyedb/dotnet/database/sim_setup_data/data/settings.py,sha256=VuJaksqhiM--ROQY67d
100
100
  pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py,sha256=hN2TeXa8dbtOmEtwobhKuwomJXYs8cSJum3HQofuW3Y,4479
101
101
  pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py,sha256=ag-nl1gwKlNJOb3y7fBMSoSEwbUG_rwLzM25jLp8ado,10727
102
102
  pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py,sha256=FnvDY1oxpnPo0EYMVXT7yfW-e-W3_NOGnvUvQYta4Ls,8627
103
- pyedb/dotnet/database/sim_setup_data/data/sweep_data.py,sha256=Bz2k0hzUHtBc5BjTBVGclplPTEhL55ZvYl-Q11wuraI,18116
103
+ pyedb/dotnet/database/sim_setup_data/data/sweep_data.py,sha256=9JdKRP6DrXeuMhd7XKLIzDSGZDUoBnevbfi88oiX2F8,20129
104
104
  pyedb/dotnet/database/sim_setup_data/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
105
  pyedb/dotnet/database/sim_setup_data/io/siwave.py,sha256=92iEZrhA2CUTZ7wynL5nxVVwi2XKKqppx7AcvvoqK6E,31387
106
106
  pyedb/dotnet/database/utilities/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
107
107
  pyedb/dotnet/database/utilities/heatsink.py,sha256=7G7Yx9TxbL5EAiR51MnhdRiAQBVf-d0hKsXDw5OYX2Q,2220
108
108
  pyedb/dotnet/database/utilities/hfss_simulation_setup.py,sha256=1tlZ64rUNEtvRLLbVhN-gfuVduVCo8fT6IPKfQCEaDs,14074
109
109
  pyedb/dotnet/database/utilities/obj_base.py,sha256=xSGTbfh4pbNIw3EjqtjFMiN8rWM2JhYZ2eU73qHAGlI,2883
110
- pyedb/dotnet/database/utilities/simulation_setup.py,sha256=2Xke2LkNWThsT3EYTl_iIMFrFkYppcyYVwXNzvlv9RM,12577
110
+ pyedb/dotnet/database/utilities/simulation_setup.py,sha256=ZUxq_cETrvD-3YbFAUrNq_YCoMuwo6ohsPs2eEFNbcM,12436
111
111
  pyedb/dotnet/database/utilities/siwave_simulation_setup.py,sha256=dQsU9IKJ2-erZvum40z1XrJULlohU1045hln3Bl_-nk,12764
112
112
  pyedb/extensions/pre_layout_design_toolkit/via_design.py,sha256=b9pTM5Gi3S3O2epaSBp4cD5DEul-MP5gCvRw3E5GmpE,46734
113
113
  pyedb/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -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.42.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
286
- pyedb-0.42.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
287
- pyedb-0.42.0.dist-info/METADATA,sha256=gVt-XbMs2Ku8AnL7EN-0faze4u_dUc6KzAj_S3fGWrY,8617
288
- pyedb-0.42.0.dist-info/RECORD,,
285
+ pyedb-0.43.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
286
+ pyedb-0.43.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
287
+ pyedb-0.43.0.dist-info/METADATA,sha256=OrweivayYXnFTyY66K6k1cnGjF8_edsbZ72_t09kv3I,8617
288
+ pyedb-0.43.0.dist-info/RECORD,,
File without changes