pyedb 0.38.0__py3-none-any.whl → 0.39.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.
- pyedb/__init__.py +1 -1
- pyedb/common/nets.py +53 -139
- pyedb/configuration/cfg_components.py +1 -1
- pyedb/configuration/cfg_general.py +4 -2
- pyedb/configuration/cfg_modeler.py +1 -1
- pyedb/configuration/cfg_package_definition.py +1 -1
- pyedb/configuration/cfg_padstacks.py +1 -1
- pyedb/configuration/cfg_ports_sources.py +56 -23
- pyedb/configuration/configuration.py +18 -1
- pyedb/dotnet/{application → database}/Variables.py +21 -21
- pyedb/dotnet/{edb_core → database}/cell/connectable.py +5 -5
- pyedb/dotnet/{edb_core → database}/cell/hierarchy/component.py +11 -11
- pyedb/dotnet/{edb_core → database}/cell/hierarchy/hierarchy_obj.py +1 -1
- pyedb/dotnet/{edb_core → database}/cell/hierarchy/model.py +1 -1
- pyedb/dotnet/{edb_core → database}/cell/layout.py +17 -17
- pyedb/dotnet/{edb_core → database}/cell/layout_obj.py +3 -3
- pyedb/dotnet/{edb_core → database}/cell/primitive/bondwire.py +1 -1
- pyedb/dotnet/{edb_core → database}/cell/primitive/path.py +4 -4
- pyedb/dotnet/{edb_core → database}/cell/primitive/primitive.py +14 -14
- pyedb/dotnet/{edb_core → database}/cell/terminal/bundle_terminal.py +2 -2
- pyedb/dotnet/{edb_core → database}/cell/terminal/edge_terminal.py +4 -4
- pyedb/dotnet/{edb_core → database}/cell/terminal/padstack_instance_terminal.py +2 -2
- pyedb/dotnet/{edb_core → database}/cell/terminal/pingroup_terminal.py +2 -2
- pyedb/dotnet/{edb_core → database}/cell/terminal/point_terminal.py +2 -2
- pyedb/dotnet/{edb_core → database}/cell/terminal/terminal.py +11 -11
- pyedb/dotnet/{edb_core → database}/cell/voltage_regulator.py +2 -2
- pyedb/dotnet/{edb_core → database}/components.py +101 -124
- pyedb/dotnet/{edb_core → database}/definition/component_def.py +5 -5
- pyedb/dotnet/{edb_core → database}/definition/component_model.py +1 -1
- pyedb/dotnet/{edb_core → database}/definition/definition_obj.py +1 -1
- pyedb/dotnet/{edb_core → database}/definition/definitions.py +2 -2
- pyedb/dotnet/{edb_core → database}/definition/package_def.py +4 -4
- pyedb/dotnet/{edb_core → database}/dotnet/database.py +8 -8
- pyedb/dotnet/{edb_core → database}/dotnet/primitive.py +9 -9
- pyedb/dotnet/{edb_core → database}/edb_data/control_file.py +12 -12
- pyedb/dotnet/{edb_core → database}/edb_data/hfss_extent_info.py +7 -7
- pyedb/dotnet/{edb_core → database}/edb_data/nets_data.py +10 -13
- pyedb/dotnet/{edb_core → database}/edb_data/padstacks_data.py +16 -16
- pyedb/dotnet/{edb_core → database}/edb_data/ports.py +4 -4
- pyedb/dotnet/{edb_core → database}/edb_data/primitives_data.py +5 -5
- pyedb/dotnet/{edb_core → database}/edb_data/raptor_x_simulation_setup_data.py +4 -4
- pyedb/dotnet/{edb_core → database}/edb_data/simulation_configuration.py +10 -10
- pyedb/dotnet/{edb_core → database}/edb_data/sources.py +4 -4
- pyedb/dotnet/{edb_core → database}/edb_data/variables.py +1 -1
- pyedb/dotnet/{edb_core → database}/geometry/polygon_data.py +4 -4
- pyedb/dotnet/{edb_core → database}/hfss.py +8 -8
- pyedb/dotnet/{edb_core → database}/layout_obj_instance.py +1 -1
- pyedb/dotnet/{edb_core → database}/layout_validation.py +2 -2
- pyedb/dotnet/{edb_core → database}/materials.py +23 -8
- pyedb/dotnet/{edb_core → database}/modeler.py +27 -27
- pyedb/dotnet/{edb_core → database}/net_class.py +8 -8
- pyedb/dotnet/{edb_core → database}/nets.py +12 -12
- pyedb/dotnet/{edb_core → database}/padstack.py +15 -15
- pyedb/dotnet/{edb_core → database}/sim_setup_data/data/mesh_operation.py +1 -1
- pyedb/dotnet/{edb_core → database}/sim_setup_data/data/settings.py +3 -3
- pyedb/dotnet/{edb_core → database}/sim_setup_data/data/sim_setup_info.py +2 -2
- pyedb/dotnet/{edb_core → database}/sim_setup_data/data/simulation_settings.py +1 -1
- pyedb/dotnet/{edb_core → database}/sim_setup_data/data/siw_dc_ir_settings.py +1 -1
- pyedb/dotnet/{edb_core → database}/sim_setup_data/data/sweep_data.py +1 -1
- pyedb/dotnet/{edb_core → database}/siwave.py +10 -10
- pyedb/dotnet/{edb_core → database}/stackup.py +12 -12
- pyedb/dotnet/{edb_core → database}/utilities/hfss_simulation_setup.py +15 -15
- pyedb/dotnet/{edb_core → database}/utilities/obj_base.py +1 -1
- pyedb/dotnet/{edb_core → database}/utilities/simulation_setup.py +3 -3
- pyedb/dotnet/{edb_core → database}/utilities/siwave_simulation_setup.py +6 -6
- pyedb/dotnet/edb.py +117 -112
- pyedb/generic/design_types.py +26 -19
- pyedb/generic/general_methods.py +1 -1
- pyedb/generic/plot.py +0 -2
- pyedb/grpc/database/__init__.py +1 -0
- pyedb/grpc/database/components.py +2354 -0
- pyedb/grpc/database/control_file.py +1277 -0
- pyedb/grpc/database/definition/component_def.py +218 -0
- pyedb/grpc/database/definition/component_model.py +39 -0
- pyedb/grpc/database/definition/component_pin.py +32 -0
- pyedb/grpc/database/definition/materials.py +1207 -0
- pyedb/grpc/database/definition/n_port_component_model.py +34 -0
- pyedb/grpc/database/definition/package_def.py +227 -0
- pyedb/grpc/database/definition/padstack_def.py +842 -0
- pyedb/grpc/database/definitions.py +70 -0
- pyedb/grpc/database/general.py +43 -0
- pyedb/grpc/database/geometry/__init__.py +0 -0
- pyedb/grpc/database/geometry/arc_data.py +93 -0
- pyedb/grpc/database/geometry/point_3d_data.py +79 -0
- pyedb/grpc/database/geometry/point_data.py +30 -0
- pyedb/grpc/database/geometry/polygon_data.py +133 -0
- pyedb/grpc/database/hfss.py +1279 -0
- pyedb/grpc/database/hierarchy/__init__.py +0 -0
- pyedb/grpc/database/hierarchy/component.py +1301 -0
- pyedb/grpc/database/hierarchy/model.py +31 -0
- pyedb/grpc/database/hierarchy/netlist_model.py +30 -0
- pyedb/grpc/database/hierarchy/pin_pair_model.py +128 -0
- pyedb/grpc/database/hierarchy/pingroup.py +245 -0
- pyedb/grpc/database/hierarchy/s_parameter_model.py +33 -0
- pyedb/grpc/database/hierarchy/spice_model.py +48 -0
- pyedb/grpc/database/layers/__init__.py +0 -0
- pyedb/grpc/database/layers/layer.py +57 -0
- pyedb/grpc/database/layers/stackup_layer.py +410 -0
- pyedb/grpc/database/layout/__init__.py +0 -0
- pyedb/grpc/database/layout/cell.py +30 -0
- pyedb/grpc/database/layout/layout.py +196 -0
- pyedb/grpc/database/layout/voltage_regulator.py +149 -0
- pyedb/grpc/database/layout_validation.py +319 -0
- pyedb/grpc/database/modeler.py +1468 -0
- pyedb/grpc/database/net/__init__.py +0 -0
- pyedb/grpc/database/net/differential_pair.py +138 -0
- pyedb/grpc/database/net/extended_net.py +340 -0
- pyedb/grpc/database/net/net.py +198 -0
- pyedb/grpc/database/net/net_class.py +93 -0
- pyedb/grpc/database/nets.py +633 -0
- pyedb/grpc/database/padstacks.py +1500 -0
- pyedb/grpc/database/ports/__init__.py +0 -0
- pyedb/grpc/database/ports/ports.py +396 -0
- pyedb/grpc/database/primitive/__init__.py +3 -0
- pyedb/grpc/database/primitive/bondwire.py +181 -0
- pyedb/grpc/database/primitive/circle.py +75 -0
- pyedb/grpc/database/primitive/padstack_instance.py +1116 -0
- pyedb/grpc/database/primitive/path.py +346 -0
- pyedb/grpc/database/primitive/polygon.py +276 -0
- pyedb/grpc/database/primitive/primitive.py +739 -0
- pyedb/grpc/database/primitive/rectangle.py +146 -0
- pyedb/grpc/database/simulation_setup/__init__.py +0 -0
- pyedb/grpc/database/simulation_setup/adaptive_frequency.py +33 -0
- pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +32 -0
- pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +59 -0
- pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +35 -0
- pyedb/grpc/database/simulation_setup/hfss_general_settings.py +61 -0
- pyedb/grpc/database/simulation_setup/hfss_settings_options.py +78 -0
- pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +118 -0
- pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +355 -0
- pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +34 -0
- pyedb/grpc/database/simulation_setup/mesh_operation.py +34 -0
- pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +34 -0
- pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +33 -0
- pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +64 -0
- pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +125 -0
- pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +34 -0
- pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +119 -0
- pyedb/grpc/database/simulation_setup/sweep_data.py +32 -0
- pyedb/grpc/database/siwave.py +1023 -0
- pyedb/grpc/database/source_excitations.py +2572 -0
- pyedb/grpc/database/stackup.py +2574 -0
- pyedb/grpc/database/terminal/__init__.py +0 -0
- pyedb/grpc/database/terminal/bundle_terminal.py +218 -0
- pyedb/grpc/database/terminal/edge_terminal.py +51 -0
- pyedb/grpc/database/terminal/padstack_instance_terminal.py +171 -0
- pyedb/grpc/database/terminal/pingroup_terminal.py +162 -0
- pyedb/grpc/database/terminal/point_terminal.py +99 -0
- pyedb/grpc/database/terminal/terminal.py +470 -0
- pyedb/grpc/database/utility/__init__.py +3 -0
- pyedb/grpc/database/utility/constants.py +25 -0
- pyedb/grpc/database/utility/heat_sink.py +124 -0
- pyedb/grpc/database/utility/hfss_extent_info.py +448 -0
- pyedb/grpc/database/utility/layout_statistics.py +277 -0
- pyedb/grpc/database/utility/rlc.py +80 -0
- pyedb/grpc/database/utility/simulation_configuration.py +3305 -0
- pyedb/grpc/database/utility/sources.py +388 -0
- pyedb/grpc/database/utility/sweep_data_distribution.py +83 -0
- pyedb/grpc/database/utility/xml_control_file.py +1277 -0
- pyedb/grpc/edb.py +4152 -0
- pyedb/grpc/edb_init.py +481 -0
- pyedb/grpc/rpc_session.py +177 -0
- pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +3 -2
- pyedb/ipc2581/ecad/cad_data/feature.py +4 -3
- pyedb/ipc2581/ecad/cad_data/layer_feature.py +32 -20
- pyedb/ipc2581/ecad/cad_data/outline.py +3 -2
- pyedb/ipc2581/ecad/cad_data/package.py +4 -3
- pyedb/ipc2581/ecad/cad_data/path.py +82 -31
- pyedb/ipc2581/ecad/cad_data/polygon.py +122 -60
- pyedb/ipc2581/ecad/cad_data/profile.py +13 -12
- pyedb/ipc2581/ecad/cad_data/step.py +53 -21
- pyedb/ipc2581/ipc2581.py +47 -49
- pyedb/modeler/geometry_operators.py +1 -1
- {pyedb-0.38.0.dist-info → pyedb-0.39.1.dist-info}/METADATA +5 -2
- pyedb-0.39.1.dist-info/RECORD +288 -0
- pyedb-0.38.0.dist-info/RECORD +0 -195
- /pyedb/dotnet/{edb_core → database}/__init__.py +0 -0
- /pyedb/dotnet/{application → database/cell}/__init__.py +0 -0
- /pyedb/dotnet/{edb_core/cell → database/cell/hierarchy}/__init__.py +0 -0
- /pyedb/dotnet/{edb_core → database}/cell/hierarchy/netlist_model.py +0 -0
- /pyedb/dotnet/{edb_core → database}/cell/hierarchy/pin_pair_model.py +0 -0
- /pyedb/dotnet/{edb_core → database}/cell/hierarchy/s_parameter_model.py +0 -0
- /pyedb/dotnet/{edb_core → database}/cell/hierarchy/spice_model.py +0 -0
- /pyedb/dotnet/{edb_core → database}/cell/primitive/__init__.py +0 -0
- /pyedb/dotnet/{edb_core/cell/hierarchy → database/cell/terminal}/__init__.py +0 -0
- /pyedb/dotnet/{edb_core/cell/terminal → database/definition}/__init__.py +0 -0
- /pyedb/dotnet/{edb_core/definition → database/dotnet}/__init__.py +0 -0
- /pyedb/dotnet/{edb_core/dotnet → database/edb_data}/__init__.py +0 -0
- /pyedb/dotnet/{edb_core → database}/edb_data/design_options.py +0 -0
- /pyedb/dotnet/{edb_core → database}/edb_data/edbvalue.py +0 -0
- /pyedb/dotnet/{edb_core → database}/edb_data/layer_data.py +0 -0
- /pyedb/dotnet/{edb_core → database}/edb_data/utilities.py +0 -0
- /pyedb/dotnet/{edb_core → database}/general.py +0 -0
- /pyedb/dotnet/{edb_core/edb_data → database/geometry}/__init__.py +0 -0
- /pyedb/dotnet/{edb_core → database}/geometry/point_data.py +0 -0
- /pyedb/dotnet/{edb_core → database}/sim_setup_data/__init__.py +0 -0
- /pyedb/dotnet/{edb_core → database}/sim_setup_data/data/__init__.py +0 -0
- /pyedb/dotnet/{edb_core → database}/sim_setup_data/data/adaptive_frequency_data.py +0 -0
- /pyedb/dotnet/{edb_core/geometry → database/sim_setup_data/io}/__init__.py +0 -0
- /pyedb/dotnet/{edb_core → database}/sim_setup_data/io/siwave.py +0 -0
- /pyedb/dotnet/{edb_core → database}/utilities/__init__.py +0 -0
- /pyedb/dotnet/{edb_core → database}/utilities/heatsink.py +0 -0
- /pyedb/{dotnet/edb_core/sim_setup_data/io → grpc/database/definition}/__init__.py +0 -0
- {pyedb-0.38.0.dist-info → pyedb-0.39.1.dist-info}/LICENSE +0 -0
- {pyedb-0.38.0.dist-info → pyedb-0.39.1.dist-info}/WHEEL +0 -0
|
@@ -28,6 +28,7 @@ import json
|
|
|
28
28
|
import math
|
|
29
29
|
import os
|
|
30
30
|
import re
|
|
31
|
+
from typing import List, Set, Union
|
|
31
32
|
import warnings
|
|
32
33
|
|
|
33
34
|
from pyedb.component_libraries.ansys_components import (
|
|
@@ -36,12 +37,13 @@ from pyedb.component_libraries.ansys_components import (
|
|
|
36
37
|
Series,
|
|
37
38
|
)
|
|
38
39
|
from pyedb.dotnet.clr_module import String
|
|
39
|
-
from pyedb.dotnet.
|
|
40
|
-
from pyedb.dotnet.
|
|
41
|
-
from pyedb.dotnet.
|
|
42
|
-
from pyedb.dotnet.
|
|
43
|
-
from pyedb.dotnet.
|
|
44
|
-
from pyedb.dotnet.
|
|
40
|
+
from pyedb.dotnet.database.cell.hierarchy.component import EDBComponent
|
|
41
|
+
from pyedb.dotnet.database.definition.component_def import EDBComponentDef
|
|
42
|
+
from pyedb.dotnet.database.edb_data.nets_data import EDBNetsData
|
|
43
|
+
from pyedb.dotnet.database.edb_data.padstacks_data import EDBPadstackInstance
|
|
44
|
+
from pyedb.dotnet.database.edb_data.sources import Source, SourceType
|
|
45
|
+
from pyedb.dotnet.database.general import convert_py_list_to_net_list
|
|
46
|
+
from pyedb.dotnet.database.padstack import EdbPadstacks
|
|
45
47
|
from pyedb.generic.general_methods import (
|
|
46
48
|
_retry_ntimes,
|
|
47
49
|
generate_unique_name,
|
|
@@ -99,7 +101,7 @@ class Components(object):
|
|
|
99
101
|
|
|
100
102
|
Returns
|
|
101
103
|
-------
|
|
102
|
-
:class:`pyedb.dotnet.
|
|
104
|
+
:class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`
|
|
103
105
|
|
|
104
106
|
"""
|
|
105
107
|
if name in self.instances:
|
|
@@ -157,7 +159,7 @@ class Components(object):
|
|
|
157
159
|
|
|
158
160
|
Returns
|
|
159
161
|
-------
|
|
160
|
-
dict[str, :class:`pyedb.dotnet.
|
|
162
|
+
dict[str, :class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`]
|
|
161
163
|
Default dictionary for the EDB component.
|
|
162
164
|
|
|
163
165
|
Examples
|
|
@@ -177,7 +179,7 @@ class Components(object):
|
|
|
177
179
|
|
|
178
180
|
Returns
|
|
179
181
|
-------
|
|
180
|
-
Dict[str, :class:`pyedb.dotnet.
|
|
182
|
+
Dict[str, :class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`]
|
|
181
183
|
Default dictionary for the EDB component.
|
|
182
184
|
|
|
183
185
|
Examples
|
|
@@ -322,7 +324,7 @@ class Components(object):
|
|
|
322
324
|
|
|
323
325
|
Returns
|
|
324
326
|
-------
|
|
325
|
-
dict[str, :class:`pyedb.dotnet.
|
|
327
|
+
dict[str, :class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`]
|
|
326
328
|
Dictionary of resistors.
|
|
327
329
|
|
|
328
330
|
Examples
|
|
@@ -340,7 +342,7 @@ class Components(object):
|
|
|
340
342
|
|
|
341
343
|
Returns
|
|
342
344
|
-------
|
|
343
|
-
dict[str, :class:`pyedb.dotnet.
|
|
345
|
+
dict[str, :class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`]
|
|
344
346
|
Dictionary of capacitors.
|
|
345
347
|
|
|
346
348
|
Examples
|
|
@@ -358,7 +360,7 @@ class Components(object):
|
|
|
358
360
|
|
|
359
361
|
Returns
|
|
360
362
|
-------
|
|
361
|
-
dict[str, :class:`pyedb.dotnet.
|
|
363
|
+
dict[str, :class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`]
|
|
362
364
|
Dictionary of inductors.
|
|
363
365
|
|
|
364
366
|
Examples
|
|
@@ -377,7 +379,7 @@ class Components(object):
|
|
|
377
379
|
|
|
378
380
|
Returns
|
|
379
381
|
-------
|
|
380
|
-
dict[str, :class:`pyedb.dotnet.
|
|
382
|
+
dict[str, :class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`]
|
|
381
383
|
Dictionary of integrated circuits.
|
|
382
384
|
|
|
383
385
|
Examples
|
|
@@ -396,7 +398,7 @@ class Components(object):
|
|
|
396
398
|
|
|
397
399
|
Returns
|
|
398
400
|
-------
|
|
399
|
-
dict[str, :class:`pyedb.dotnet.
|
|
401
|
+
dict[str, :class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`]
|
|
400
402
|
Dictionary of circuit inputs and outputs.
|
|
401
403
|
|
|
402
404
|
Examples
|
|
@@ -415,7 +417,7 @@ class Components(object):
|
|
|
415
417
|
|
|
416
418
|
Returns
|
|
417
419
|
-------
|
|
418
|
-
dict[str, :class:`pyedb.dotnet.
|
|
420
|
+
dict[str, :class:`pyedb.dotnet.database.cell.hierarchy.component.EDBComponent`]
|
|
419
421
|
Dictionary of other core components.
|
|
420
422
|
|
|
421
423
|
Examples
|
|
@@ -761,16 +763,17 @@ class Components(object):
|
|
|
761
763
|
----------
|
|
762
764
|
refdes : Component reference designator
|
|
763
765
|
str or EDBComponent object.
|
|
764
|
-
pins : pin
|
|
765
|
-
pins are provided a pin group will
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
or
|
|
773
|
-
|
|
766
|
+
pins : pin specifier(s) or instance(s) where the port terminal is to be created. Single pin name or a list of
|
|
767
|
+
several can be provided. If several pins are provided a pin group will be created. Pin specifiers can be the
|
|
768
|
+
global EDB object ID or padstack instance name or pin name on component with refdes ``refdes``. Pin instances
|
|
769
|
+
can be provided as ``EDBPadstackInstance`` objects.
|
|
770
|
+
For instance for the pin called ``Pin1`` located on component with refdes ``U1``: ``U1-Pin1``, ``Pin1`` with
|
|
771
|
+
``refdes=U1``, the pin's global EDB object ID, or the ``EDBPadstackInstance`` corresponding to the pin can be
|
|
772
|
+
provided.
|
|
773
|
+
Union[int, str, EDBPadstackInstance], List[Union[int, str, EDBPadstackInstance]]
|
|
774
|
+
reference_pins : reference pin specifier(s) or instance(s) for the port reference terminal. Allowed values are
|
|
775
|
+
the same as for the ``pins`` parameter.
|
|
776
|
+
Union[int, str, EDBPadstackInstance], List[Union[int, str, EDBPadstackInstance]]
|
|
774
777
|
impedance : Port impedance
|
|
775
778
|
str, float
|
|
776
779
|
port_name : str, optional
|
|
@@ -800,98 +803,50 @@ class Components(object):
|
|
|
800
803
|
>>> edb.close_edb()
|
|
801
804
|
"""
|
|
802
805
|
|
|
803
|
-
if isinstance(pins, str):
|
|
804
|
-
pins = [pins]
|
|
805
|
-
elif isinstance(pins, EDBPadstackInstance):
|
|
806
|
-
pins = [pins.name]
|
|
807
|
-
if not reference_pins:
|
|
808
|
-
self._logger.error("No reference pin provided.")
|
|
809
|
-
return False
|
|
810
|
-
if isinstance(reference_pins, str):
|
|
811
|
-
reference_pins = [reference_pins]
|
|
812
|
-
if isinstance(reference_pins, list):
|
|
813
|
-
_temp = []
|
|
814
|
-
for ref_pin in reference_pins:
|
|
815
|
-
if isinstance(ref_pin, int):
|
|
816
|
-
if ref_pin in self._padstack.instances:
|
|
817
|
-
_temp.append(self._padstack.instances[ref_pin])
|
|
818
|
-
elif isinstance(ref_pin, str):
|
|
819
|
-
if ref_pin in self.instances[refdes].pins:
|
|
820
|
-
_temp.append(self.instances[refdes].pins[ref_pin])
|
|
821
|
-
else:
|
|
822
|
-
p = [pp for pp in list(self._padstack.instances.values()) if pp.name == ref_pin]
|
|
823
|
-
if p:
|
|
824
|
-
_temp.append(p)
|
|
825
|
-
elif isinstance(ref_pin, EDBPadstackInstance):
|
|
826
|
-
_temp.append(ref_pin.name)
|
|
827
|
-
reference_pins = _temp
|
|
828
|
-
elif isinstance(reference_pins, int):
|
|
829
|
-
if reference_pins in self._padstack.instances:
|
|
830
|
-
reference_pins = self._padstack.instances[reference_pins]
|
|
831
806
|
if isinstance(refdes, str):
|
|
832
807
|
refdes = self.instances[refdes]
|
|
833
808
|
elif isinstance(refdes, self._pedb._edb.Cell.Hierarchy.Component):
|
|
834
809
|
refdes = EDBComponent(self._pedb, refdes)
|
|
835
|
-
|
|
836
|
-
if
|
|
837
|
-
|
|
838
|
-
if len([pin for pin in pins if isinstance(pin, str)]) == len(pins):
|
|
839
|
-
cmp_pins = []
|
|
840
|
-
for pin_name in pins:
|
|
841
|
-
cmp_pins = [pin for pin in list(refdes_pins.values()) if pin_name == pin.name]
|
|
842
|
-
if not cmp_pins:
|
|
843
|
-
for pin in list(refdes_pins.values()):
|
|
844
|
-
if pin.name and "-" in pin.name:
|
|
845
|
-
if pin_name == pin.name.split("-")[1]:
|
|
846
|
-
cmp_pins.append(pin)
|
|
847
|
-
if not cmp_pins:
|
|
848
|
-
self._logger.warning("No pin found during port creation. Port is not defined.")
|
|
849
|
-
return
|
|
850
|
-
pins = cmp_pins
|
|
851
|
-
if not len([pin for pin in pins if isinstance(pin, EDBPadstackInstance)]) == len(pins):
|
|
852
|
-
self._logger.error("Pin list must contain only pins instances")
|
|
810
|
+
pins = self._get_pins_for_ports(pins, refdes)
|
|
811
|
+
if not pins:
|
|
812
|
+
self._logger.error("No pins found during port creation. Port is not defined.")
|
|
853
813
|
return False
|
|
814
|
+
reference_pins = self._get_pins_for_ports(reference_pins, refdes)
|
|
815
|
+
if not reference_pins:
|
|
816
|
+
self._logger.error("No reference pins found during port creation. Port is not defined.")
|
|
817
|
+
return False
|
|
818
|
+
if refdes and any(refdes.rlc_values):
|
|
819
|
+
return self.deactivate_rlc_component(component=refdes, create_circuit_port=True)
|
|
854
820
|
if not port_name:
|
|
855
821
|
port_name = "Port_{}_{}".format(pins[0].net_name, pins[0].name)
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
for ref_pin_name in reference_pins:
|
|
859
|
-
if ref_pin_name in refdes_pins:
|
|
860
|
-
ref_cmp_pins.append(refdes_pins[ref_pin_name])
|
|
861
|
-
elif "-" in ref_pin_name:
|
|
862
|
-
if ref_pin_name.split("-")[1] in refdes_pins:
|
|
863
|
-
ref_cmp_pins.append(refdes_pins[ref_pin_name.split("-")[1]])
|
|
864
|
-
if not ref_cmp_pins:
|
|
865
|
-
self._logger.error("No reference pins found.")
|
|
866
|
-
return False
|
|
867
|
-
reference_pins = ref_cmp_pins
|
|
868
|
-
if len(pins) > 1 or pingroup_on_single_pin:
|
|
822
|
+
|
|
823
|
+
if len(pins) > 1 > 1 or pingroup_on_single_pin:
|
|
869
824
|
pec_boundary = False
|
|
870
825
|
self._logger.info(
|
|
871
826
|
"Disabling PEC boundary creation, this feature is supported on single pin "
|
|
872
|
-
"ports only, {} pins found
|
|
827
|
+
f"ports only, {len(pins)} pins found (pingroup_on_single_pin: {pingroup_on_single_pin})."
|
|
873
828
|
)
|
|
874
829
|
group_name = "group_{}".format(port_name)
|
|
875
830
|
pin_group = self.create_pingroup_from_pins(pins, group_name)
|
|
876
831
|
term = self._create_pin_group_terminal(pingroup=pin_group, term_name=port_name)
|
|
877
|
-
|
|
878
832
|
else:
|
|
879
833
|
term = self._create_terminal(pins[0].primitive_object, term_name=port_name)
|
|
880
834
|
term.SetIsCircuitPort(True)
|
|
835
|
+
|
|
881
836
|
if len(reference_pins) > 1 or pingroup_on_single_pin:
|
|
882
837
|
pec_boundary = False
|
|
883
838
|
self._logger.info(
|
|
884
|
-
"Disabling PEC boundary creation. This feature is supported on single pin"
|
|
885
|
-
"ports only {} reference pins found
|
|
839
|
+
"Disabling PEC boundary creation. This feature is supported on single pin "
|
|
840
|
+
f"ports only, {len(reference_pins)} reference pins found "
|
|
841
|
+
f"(pingroup_on_single_pin: {pingroup_on_single_pin})."
|
|
886
842
|
)
|
|
887
843
|
ref_group_name = "group_{}_ref".format(port_name)
|
|
888
844
|
ref_pin_group = self.create_pingroup_from_pins(reference_pins, ref_group_name)
|
|
889
|
-
ref_pin_group = self._pedb.siwave.pin_groups[ref_pin_group.GetName()]
|
|
890
845
|
ref_term = self._create_pin_group_terminal(pingroup=ref_pin_group, term_name=port_name + "_ref")
|
|
891
|
-
|
|
892
846
|
else:
|
|
893
847
|
ref_term = self._create_terminal(reference_pins[0].primitive_object, term_name=port_name + "_ref")
|
|
894
848
|
ref_term.SetIsCircuitPort(True)
|
|
849
|
+
|
|
895
850
|
term.SetImpedance(self._edb.utility.value(impedance))
|
|
896
851
|
term.SetReferenceTerminal(ref_term)
|
|
897
852
|
if pec_boundary:
|
|
@@ -902,9 +857,30 @@ class Components(object):
|
|
|
902
857
|
self._logger.info(
|
|
903
858
|
"PEC boundary created between pin {} and reference pin {}".format(pins[0].name, reference_pins[0].name)
|
|
904
859
|
)
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
860
|
+
|
|
861
|
+
return term or False
|
|
862
|
+
|
|
863
|
+
def _get_pins_for_ports(
|
|
864
|
+
self, pins: Union[int, str, EDBPadstackInstance, List[Union[int, str, EDBPadstackInstance]]], comp: EDBComponent
|
|
865
|
+
) -> List[EDBPadstackInstance]:
|
|
866
|
+
if not isinstance(pins, List):
|
|
867
|
+
pins = [pins]
|
|
868
|
+
result = []
|
|
869
|
+
for pin in pins:
|
|
870
|
+
if isinstance(pin, int) and pin in self._padstack.instances:
|
|
871
|
+
result.append(self._padstack.instances[pin])
|
|
872
|
+
elif isinstance(pin, str):
|
|
873
|
+
if comp and pin in comp.pins:
|
|
874
|
+
result.append(comp.pins[pin])
|
|
875
|
+
else:
|
|
876
|
+
p = [pp for pp in list(self._padstack.instances.values()) if pp.name == pin]
|
|
877
|
+
if p:
|
|
878
|
+
result.append(p[0])
|
|
879
|
+
elif isinstance(pin, EDBPadstackInstance):
|
|
880
|
+
result.append(pin)
|
|
881
|
+
elif isinstance(pin, self._edb.Cell.Primitive.PadstackInstance):
|
|
882
|
+
result.append(EDBPadstackInstance(pin, self._pedb))
|
|
883
|
+
return result
|
|
908
884
|
|
|
909
885
|
def create_port_on_component(
|
|
910
886
|
self,
|
|
@@ -972,22 +948,17 @@ class Components(object):
|
|
|
972
948
|
if isinstance(component, str):
|
|
973
949
|
component = self.instances[component].edbcomponent
|
|
974
950
|
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
net_list.remove(reference_net)
|
|
987
|
-
cmp_pins = [
|
|
988
|
-
p for p in list(component.LayoutObjs) if int(p.GetObjType()) == 1 and p.GetNet().GetName() in net_list
|
|
989
|
-
]
|
|
990
|
-
for p in cmp_pins: # pragma no cover
|
|
951
|
+
nets = self._normalize_net_list(net_list)
|
|
952
|
+
|
|
953
|
+
if not isinstance(reference_net, List):
|
|
954
|
+
reference_net = [reference_net]
|
|
955
|
+
ref_nets = self._normalize_net_list(reference_net)
|
|
956
|
+
nets_to_remove = ref_nets.intersection(nets)
|
|
957
|
+
if nets_to_remove:
|
|
958
|
+
self._logger.warning(f"Removing reference nets {sorted(nets_to_remove)} from the positive net list.")
|
|
959
|
+
nets -= nets_to_remove
|
|
960
|
+
cmp_pins = [p for p in list(component.LayoutObjs) if int(p.GetObjType()) == 1 and p.GetNet().GetName() in nets]
|
|
961
|
+
for p in cmp_pins:
|
|
991
962
|
if not p.IsLayoutPin():
|
|
992
963
|
p.SetIsLayoutPin(True)
|
|
993
964
|
if len(cmp_pins) == 0:
|
|
@@ -995,6 +966,9 @@ class Components(object):
|
|
|
995
966
|
"No pins found on component {}, searching padstack instances instead".format(component.GetName())
|
|
996
967
|
)
|
|
997
968
|
return False
|
|
969
|
+
ref_pins = [
|
|
970
|
+
p for p in list(component.LayoutObjs) if int(p.GetObjType()) == 1 and p.GetNet().GetName() in ref_nets
|
|
971
|
+
]
|
|
998
972
|
pin_layers = cmp_pins[0].GetPadstackDef().GetData().GetLayerNames()
|
|
999
973
|
if port_type == SourceType.CoaxPort:
|
|
1000
974
|
if not solder_balls_height:
|
|
@@ -1003,11 +977,6 @@ class Components(object):
|
|
|
1003
977
|
solder_balls_size = self.instances[component.GetName()].solder_ball_diameter[0]
|
|
1004
978
|
if not solder_balls_mid_size:
|
|
1005
979
|
solder_balls_mid_size = self.instances[component.GetName()].solder_ball_diameter[1]
|
|
1006
|
-
ref_pins = [
|
|
1007
|
-
p
|
|
1008
|
-
for p in list(component.LayoutObjs)
|
|
1009
|
-
if int(p.GetObjType()) == 1 and p.GetNet().GetName() in reference_net
|
|
1010
|
-
]
|
|
1011
980
|
if not ref_pins:
|
|
1012
981
|
self._logger.error(
|
|
1013
982
|
"No reference pins found on component. You might consider"
|
|
@@ -1053,12 +1022,7 @@ class Components(object):
|
|
|
1053
1022
|
for pin in cmp_pins:
|
|
1054
1023
|
self._padstack.create_coax_port(padstackinstance=pin, name=port_name)
|
|
1055
1024
|
|
|
1056
|
-
elif port_type == SourceType.CircPort:
|
|
1057
|
-
ref_pins = [
|
|
1058
|
-
p
|
|
1059
|
-
for p in list(component.LayoutObjs)
|
|
1060
|
-
if int(p.GetObjType()) == 1 and p.GetNet().GetName() in reference_net
|
|
1061
|
-
]
|
|
1025
|
+
elif port_type == SourceType.CircPort:
|
|
1062
1026
|
for p in ref_pins:
|
|
1063
1027
|
if not p.IsLayoutPin():
|
|
1064
1028
|
p.SetIsLayoutPin(True)
|
|
@@ -1066,7 +1030,7 @@ class Components(object):
|
|
|
1066
1030
|
self._logger.warning("No reference pins found on component")
|
|
1067
1031
|
if not extend_reference_pins_outside_component:
|
|
1068
1032
|
self._logger.warning(
|
|
1069
|
-
"
|
|
1033
|
+
"Argument extend_reference_pins_outside_component is False. You might want "
|
|
1070
1034
|
"setting to True to extend the reference pin search outside the component"
|
|
1071
1035
|
)
|
|
1072
1036
|
else:
|
|
@@ -1089,7 +1053,7 @@ class Components(object):
|
|
|
1089
1053
|
f"Failed to create reference pin group terminal on component {component.GetName()}"
|
|
1090
1054
|
)
|
|
1091
1055
|
return False
|
|
1092
|
-
for net in
|
|
1056
|
+
for net in nets:
|
|
1093
1057
|
pins = [pin for pin in cmp_pins if pin.GetNet().GetName() == net]
|
|
1094
1058
|
if pins:
|
|
1095
1059
|
if len(pins) == 1:
|
|
@@ -1107,7 +1071,7 @@ class Components(object):
|
|
|
1107
1071
|
else:
|
|
1108
1072
|
self._logger.info("No pins found on component {} for the net {}".format(component, net))
|
|
1109
1073
|
else:
|
|
1110
|
-
for net in
|
|
1074
|
+
for net in nets:
|
|
1111
1075
|
pins = [pin for pin in cmp_pins if pin.GetNet().GetName() == net]
|
|
1112
1076
|
for pin in pins:
|
|
1113
1077
|
if ref_pins:
|
|
@@ -1131,6 +1095,19 @@ class Components(object):
|
|
|
1131
1095
|
self._logger.error("Skipping port creation no reference pin found.")
|
|
1132
1096
|
return True
|
|
1133
1097
|
|
|
1098
|
+
def _normalize_net_list(self, net_list) -> Set[str]:
|
|
1099
|
+
if not isinstance(net_list, List):
|
|
1100
|
+
net_list = [net_list]
|
|
1101
|
+
nets = set()
|
|
1102
|
+
for net in net_list:
|
|
1103
|
+
if isinstance(net, EDBNetsData):
|
|
1104
|
+
net_name = net.name
|
|
1105
|
+
if net_name != "":
|
|
1106
|
+
nets.add(net_name)
|
|
1107
|
+
elif isinstance(net, str) and net != "":
|
|
1108
|
+
nets.add(net)
|
|
1109
|
+
return nets
|
|
1110
|
+
|
|
1134
1111
|
def _create_terminal(self, pin, term_name=None):
|
|
1135
1112
|
"""Create terminal on component pin.
|
|
1136
1113
|
|
|
@@ -1518,7 +1495,7 @@ class Components(object):
|
|
|
1518
1495
|
----------
|
|
1519
1496
|
pins : list
|
|
1520
1497
|
List of EDB pins, length must be 2, since only 2 pins component are currently supported.
|
|
1521
|
-
It can be an `dotnet.
|
|
1498
|
+
It can be an `dotnet.database.edb_data.padstacks_data.EDBPadstackInstance` object or
|
|
1522
1499
|
an Edb Padstack Instance object.
|
|
1523
1500
|
component_name : str
|
|
1524
1501
|
Component definition name.
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
|
|
23
23
|
import os
|
|
24
24
|
|
|
25
|
-
from pyedb.dotnet.
|
|
26
|
-
from pyedb.dotnet.
|
|
27
|
-
from pyedb.dotnet.
|
|
25
|
+
from pyedb.dotnet.database.definition.component_model import NPortComponentModel
|
|
26
|
+
from pyedb.dotnet.database.general import convert_py_list_to_net_list
|
|
27
|
+
from pyedb.dotnet.database.utilities.obj_base import ObjBase
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class EDBComponentDef(ObjBase):
|
|
@@ -84,7 +84,7 @@ class EDBComponentDef(ObjBase):
|
|
|
84
84
|
-------
|
|
85
85
|
dict of :class:`EDBComponent`
|
|
86
86
|
"""
|
|
87
|
-
from pyedb.dotnet.
|
|
87
|
+
from pyedb.dotnet.database.cell.hierarchy.component import EDBComponent
|
|
88
88
|
|
|
89
89
|
comp_list = [
|
|
90
90
|
EDBComponent(self._pedb, l)
|
|
@@ -185,7 +185,7 @@ class EDBComponentDef(ObjBase):
|
|
|
185
185
|
if not name:
|
|
186
186
|
name = os.path.splitext(os.path.basename(fpath)[0])
|
|
187
187
|
|
|
188
|
-
from pyedb.dotnet.
|
|
188
|
+
from pyedb.dotnet.database.definition.component_model import NPortComponentModel
|
|
189
189
|
|
|
190
190
|
edb_object = self._pedb.definition.NPortComponentModel.Create(name)
|
|
191
191
|
n_port_comp_model = NPortComponentModel(self._pedb, edb_object)
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
|
-
from pyedb.dotnet.
|
|
23
|
+
from pyedb.dotnet.database.utilities.obj_base import ObjBase
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class ComponentModel(ObjBase):
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
|
-
from pyedb.dotnet.
|
|
23
|
+
from pyedb.dotnet.database.utilities.obj_base import ObjBase
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class DefinitionObj(ObjBase):
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
|
-
from pyedb.dotnet.
|
|
24
|
-
from pyedb.dotnet.
|
|
23
|
+
from pyedb.dotnet.database.definition.component_def import EDBComponentDef
|
|
24
|
+
from pyedb.dotnet.database.definition.package_def import PackageDef
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class Definitions:
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
|
-
from pyedb.dotnet.
|
|
24
|
-
from pyedb.dotnet.
|
|
23
|
+
from pyedb.dotnet.database.geometry.polygon_data import PolygonData
|
|
24
|
+
from pyedb.dotnet.database.utilities.obj_base import ObjBase
|
|
25
25
|
from pyedb.edb_logger import pyedb_logger
|
|
26
26
|
|
|
27
27
|
|
|
@@ -145,7 +145,7 @@ class PackageDef(ObjBase):
|
|
|
145
145
|
self._edb_object.SetHeight(value)
|
|
146
146
|
|
|
147
147
|
def set_heatsink(self, fin_base_height, fin_height, fin_orientation, fin_spacing, fin_thickness):
|
|
148
|
-
from pyedb.dotnet.
|
|
148
|
+
from pyedb.dotnet.database.utilities.heatsink import HeatSink
|
|
149
149
|
|
|
150
150
|
heatsink = HeatSink(self._pedb)
|
|
151
151
|
heatsink.fin_base_height = fin_base_height
|
|
@@ -158,7 +158,7 @@ class PackageDef(ObjBase):
|
|
|
158
158
|
@property
|
|
159
159
|
def heatsink(self):
|
|
160
160
|
"""Component heatsink."""
|
|
161
|
-
from pyedb.dotnet.
|
|
161
|
+
from pyedb.dotnet.database.utilities.heatsink import HeatSink
|
|
162
162
|
|
|
163
163
|
flag, edb_object = self._edb_object.GetHeatSink()
|
|
164
164
|
if flag:
|
|
@@ -26,7 +26,7 @@ import re
|
|
|
26
26
|
import sys
|
|
27
27
|
|
|
28
28
|
from pyedb import __version__
|
|
29
|
-
from pyedb.dotnet.
|
|
29
|
+
from pyedb.dotnet.database.general import convert_py_list_to_net_list
|
|
30
30
|
from pyedb.edb_logger import pyedb_logger
|
|
31
31
|
from pyedb.generic.general_methods import (
|
|
32
32
|
env_path,
|
|
@@ -443,7 +443,7 @@ class CellClassDotNet:
|
|
|
443
443
|
|
|
444
444
|
Returns
|
|
445
445
|
-------
|
|
446
|
-
:class:`dotnet.
|
|
446
|
+
:class:`dotnet.database.dotnet.HierarchyDotNet`
|
|
447
447
|
"""
|
|
448
448
|
return HierarchyDotNet(self._app)
|
|
449
449
|
|
|
@@ -480,7 +480,7 @@ class CellClassDotNet:
|
|
|
480
480
|
@property
|
|
481
481
|
def primitive(self):
|
|
482
482
|
"""Edb Dotnet Api Database `Edb.Cell.Primitive`."""
|
|
483
|
-
from pyedb.dotnet.
|
|
483
|
+
from pyedb.dotnet.database.dotnet.primitive import PrimitiveDotNet
|
|
484
484
|
|
|
485
485
|
return PrimitiveDotNet(self._app)
|
|
486
486
|
|
|
@@ -588,7 +588,7 @@ class GeometryDotNet:
|
|
|
588
588
|
|
|
589
589
|
Returns
|
|
590
590
|
-------
|
|
591
|
-
:class:`dotnet.
|
|
591
|
+
:class:`dotnet.database.dotnet.PolygonDataDotNet`
|
|
592
592
|
"""
|
|
593
593
|
return PolygonDataDotNet(self._app)
|
|
594
594
|
|
|
@@ -659,7 +659,7 @@ class CellDotNet:
|
|
|
659
659
|
|
|
660
660
|
Returns
|
|
661
661
|
-------
|
|
662
|
-
:class:`pyedb.dotnet.
|
|
662
|
+
:class:`pyedb.dotnet.database.dotnet.database.CellClassDotNet`"""
|
|
663
663
|
return CellClassDotNet(self._app)
|
|
664
664
|
|
|
665
665
|
@property
|
|
@@ -668,7 +668,7 @@ class CellDotNet:
|
|
|
668
668
|
|
|
669
669
|
Returns
|
|
670
670
|
-------
|
|
671
|
-
:class:`pyedb.dotnet.
|
|
671
|
+
:class:`pyedb.dotnet.database.dotnet.database.UtilityDotNet`"""
|
|
672
672
|
|
|
673
673
|
return UtilityDotNet(self._app)
|
|
674
674
|
|
|
@@ -678,7 +678,7 @@ class CellDotNet:
|
|
|
678
678
|
|
|
679
679
|
Returns
|
|
680
680
|
-------
|
|
681
|
-
:class:`pyedb.dotnet.
|
|
681
|
+
:class:`pyedb.dotnet.database.dotnet.database.GeometryDotNet`"""
|
|
682
682
|
return GeometryDotNet(self._app)
|
|
683
683
|
|
|
684
684
|
|
|
@@ -779,7 +779,7 @@ class EdbDotNet(object):
|
|
|
779
779
|
|
|
780
780
|
Returns
|
|
781
781
|
-------
|
|
782
|
-
:class:`pyedb.dotnet.
|
|
782
|
+
:class:`pyedb.dotnet.database.dotnet.database.CellDotNet`
|
|
783
783
|
"""
|
|
784
784
|
return CellDotNet(self)
|
|
785
785
|
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
|
|
23
23
|
"""Primitive."""
|
|
24
24
|
|
|
25
|
-
from pyedb.dotnet.
|
|
26
|
-
from pyedb.dotnet.
|
|
25
|
+
from pyedb.dotnet.database.dotnet.database import NetDotNet
|
|
26
|
+
from pyedb.dotnet.database.general import convert_py_list_to_net_list
|
|
27
27
|
from pyedb.misc.utilities import compute_arc_points
|
|
28
28
|
from pyedb.modeler.geometry_operators import GeometryOperators
|
|
29
29
|
|
|
@@ -119,7 +119,7 @@ class PrimitiveDotNet:
|
|
|
119
119
|
|
|
120
120
|
Parameters
|
|
121
121
|
----------
|
|
122
|
-
point_list : list or :class:`pyedb.dotnet.
|
|
122
|
+
point_list : list or :class:`pyedb.dotnet.database.edb_data.primitives_data.EDBPrimitives` \
|
|
123
123
|
or EDB Primitive Object. Point list in the format of `[[x1,y1], [x2,y2],..,[xn,yn]]`.
|
|
124
124
|
|
|
125
125
|
Returns
|
|
@@ -414,7 +414,7 @@ class RectangleDotNet(PrimitiveDotNet):
|
|
|
414
414
|
|
|
415
415
|
Returns
|
|
416
416
|
-------
|
|
417
|
-
:class:`pyedb.dotnet.
|
|
417
|
+
:class:`pyedb.dotnet.database.dotnet.primitive.RectangleDotNet`
|
|
418
418
|
|
|
419
419
|
Rectangle that was created.
|
|
420
420
|
"""
|
|
@@ -539,7 +539,7 @@ class CircleDotNet(PrimitiveDotNet):
|
|
|
539
539
|
|
|
540
540
|
Returns
|
|
541
541
|
-------
|
|
542
|
-
:class:`pyedb.dotnet.
|
|
542
|
+
:class:`pyedb.dotnet.database.dotnet.primitive.CircleDotNet`
|
|
543
543
|
Circle object created.
|
|
544
544
|
"""
|
|
545
545
|
if isinstance(net, NetDotNet):
|
|
@@ -652,7 +652,7 @@ class TextDotNet(PrimitiveDotNet):
|
|
|
652
652
|
|
|
653
653
|
Returns
|
|
654
654
|
-------
|
|
655
|
-
:class:`pyedb.dotnet.
|
|
655
|
+
:class:`pyedb.dotnet.database.dotnet.primitive.TextDotNet`
|
|
656
656
|
The text Object that was created.
|
|
657
657
|
"""
|
|
658
658
|
return TextDotNet(
|
|
@@ -737,7 +737,7 @@ class PathDotNet(PrimitiveDotNet):
|
|
|
737
737
|
|
|
738
738
|
Returns
|
|
739
739
|
-------
|
|
740
|
-
:class:`pyedb.dotnet.
|
|
740
|
+
:class:`pyedb.dotnet.database.dotnet.primitive.PathDotNet`
|
|
741
741
|
Path object created.
|
|
742
742
|
"""
|
|
743
743
|
if isinstance(net, NetDotNet):
|
|
@@ -915,7 +915,7 @@ class BondwireDotNet(PrimitiveDotNet):
|
|
|
915
915
|
|
|
916
916
|
Returns
|
|
917
917
|
-------
|
|
918
|
-
:class:`pyedb.dotnet.
|
|
918
|
+
:class:`pyedb.dotnet.database.dotnet.primitive.BondwireDotNet`
|
|
919
919
|
Bondwire object created.
|
|
920
920
|
"""
|
|
921
921
|
if isinstance(net, NetDotNet):
|
|
@@ -1168,7 +1168,7 @@ class PadstackInstanceDotNet(PrimitiveDotNet):
|
|
|
1168
1168
|
|
|
1169
1169
|
Returns
|
|
1170
1170
|
-------
|
|
1171
|
-
:class:`pyedb.dotnet.
|
|
1171
|
+
:class:`pyedb.dotnet.database.dotnet.primitive.PadstackInstanceDotNet`
|
|
1172
1172
|
Padstack instance object created.
|
|
1173
1173
|
"""
|
|
1174
1174
|
if isinstance(net, NetDotNet):
|