Skip to content

Cfg file #1016

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 149 commits into from
Apr 14, 2022
Merged
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
485574a
cfg class object draft
svandenb-dev Mar 3, 2022
3130e03
Update io.py
mahesh-dhanekula Mar 7, 2022
8f9cfb0
temp
svandenb-dev Mar 7, 2022
5d3282c
starting implementing cfg build utils
svandenb-dev Mar 8, 2022
1b130e8
Constant types are added
mahesh-dhanekula Mar 8, 2022
65b38e9
Update hfss.py
mahesh-dhanekula Mar 9, 2022
3435750
Update hfss.py
mahesh-dhanekula Mar 9, 2022
bdde4ca
cfg class object draft
svandenb-dev Mar 3, 2022
c6cc273
Update io.py
mahesh-dhanekula Mar 7, 2022
72f1d75
temp
svandenb-dev Mar 7, 2022
c21f403
starting implementing cfg build utils
svandenb-dev Mar 8, 2022
21df600
Constant types are added
mahesh-dhanekula Mar 8, 2022
646e909
Update hfss.py
mahesh-dhanekula Mar 9, 2022
ad34e8a
Update hfss.py
mahesh-dhanekula Mar 9, 2022
3242f67
Merge branch 'cfg_file' of https://github.com/pyansys/pyaedt into cfg…
mahesh-dhanekula Mar 10, 2022
ba38914
Analysis methods of HFSS and SIwave are added
mahesh-dhanekula Mar 11, 2022
2ec29e7
Modified layout.py and stackup.py
mahesh-dhanekula Mar 14, 2022
a6c6937
Update io.py
mahesh-dhanekula Mar 15, 2022
77ce0e4
Merge branch 'main' into cfg_file
mahesh-dhanekula Mar 15, 2022
19c39f5
Merge branch 'main' into cfg_file
mahesh-dhanekula Mar 15, 2022
92e71c7
SimulationConfiguration replaced in edb_core.EDBData
svandenb-dev Mar 15, 2022
89e7910
SimulationConfiguration replaced in edb_core.EDBData
svandenb-dev Mar 15, 2022
0553e68
doc string added
svandenb-dev Mar 15, 2022
47e7a66
update SimulationConfiguration as per PEP8
mahesh-dhanekula Mar 16, 2022
6d2a44e
Merge branch 'cfg_file' of https://github.com/pyansys/pyaedt into cfg…
mahesh-dhanekula Mar 16, 2022
a96c7af
temp refactoring
svandenb-dev Mar 16, 2022
28d69a1
refactoring
svandenb-dev Mar 17, 2022
72afb2c
temp
svandenb-dev Mar 18, 2022
dcb75ec
temp
svandenb-dev Mar 29, 2022
b29b683
cfg file support iter #1
svandenb-dev Mar 30, 2022
8d2cd96
clipping design bug fixed
svandenb-dev Mar 30, 2022
ea8c266
first test ok
svandenb-dev Mar 31, 2022
c2f4c05
edb airbox extent fixed
svandenb-dev Mar 31, 2022
e8f97af
edb airbox extent fixed
svandenb-dev Mar 31, 2022
97896c3
bug fixed simulation setup and extend
svandenb-dev Apr 1, 2022
ea4753d
original cell deleted after cutout
svandenb-dev Apr 1, 2022
acb3d40
cfg file refactoring
svandenb-dev Apr 4, 2022
19d5ec7
cfg file refactoring
svandenb-dev Apr 4, 2022
97725ff
bug fix
svandenb-dev Apr 5, 2022
de0263e
pin group improved
svandenb-dev Apr 5, 2022
8555272
Update pyaedt/generic/constants.py
svandenb-dev Apr 6, 2022
dda38c0
doc string added
svandenb-dev Apr 6, 2022
9cf18bb
Merge remote-tracking branch 'origin/cfg_file' into cfg_file
svandenb-dev Apr 6, 2022
ee4773e
unit test added
svandenb-dev Apr 6, 2022
4a54511
Merge branch 'main' into cfg_file
svandenb-dev Apr 6, 2022
cfa025a
convert_freq_string_to_float removed
svandenb-dev Apr 6, 2022
1e404fd
convert_freq_string_to_float removed
svandenb-dev Apr 6, 2022
be00e57
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 7, 2022
c0bd733
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 7, 2022
fb5fc32
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 7, 2022
0d8bf75
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 7, 2022
c32e4f2
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 7, 2022
23da212
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
dd30b28
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
dd0a88b
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
cae2d56
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
eec5d7c
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
b119d7f
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
da89fab
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
27c3b4b
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
b8f707c
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
9307b4e
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
365115b
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
cbd593d
Update pyaedt/edb_core/siwave.py
svandenb-dev Apr 7, 2022
11096e4
Update pyaedt/edb_core/siwave.py
svandenb-dev Apr 7, 2022
c274728
Update pyaedt/edb_core/siwave.py
svandenb-dev Apr 7, 2022
6f9f28d
Update pyaedt/edb_core/stackup.py
svandenb-dev Apr 7, 2022
97c14b3
Update pyaedt/generic/constants.py
svandenb-dev Apr 7, 2022
2748e8f
Update pyaedt/generic/constants.py
svandenb-dev Apr 7, 2022
59501ea
Update pyaedt/third_party/ironpython/rpyc_27/lib/compat.py
svandenb-dev Apr 7, 2022
8d22a9a
Update _unittest/test_00_EDB.py
svandenb-dev Apr 7, 2022
1744f6c
Update pyaedt/edb_core/layout.py
svandenb-dev Apr 7, 2022
02fd6c1
sball height fixed
svandenb-dev Apr 7, 2022
b736de7
sball height fixed
svandenb-dev Apr 7, 2022
e357120
recovered fixed
svandenb-dev Apr 7, 2022
ef98533
recovered fixed
svandenb-dev Apr 7, 2022
1803ae7
black fixed
svandenb-dev Apr 8, 2022
ed447ef
black fixed
svandenb-dev Apr 8, 2022
8fbaf66
Merge branch 'main' into cfg_file
svandenb-dev Apr 8, 2022
a4df1c3
main merged
svandenb-dev Apr 8, 2022
0e33a3d
main merged
svandenb-dev Apr 8, 2022
e8a5c7f
style fix
svandenb-dev Apr 8, 2022
bb63b3f
style fix
svandenb-dev Apr 8, 2022
a5347bd
style fix
svandenb-dev Apr 8, 2022
9df8b37
Add a period at the end of the summary.
MaxJPRey Apr 8, 2022
727665f
Update pyaedt/edb_core/components.py
svandenb-dev Apr 8, 2022
078d5d9
unit test set rlc component fixed
svandenb-dev Apr 12, 2022
a4075dc
unit test fix
svandenb-dev Apr 12, 2022
5182de8
unit test fix
svandenb-dev Apr 12, 2022
3088c19
unit test fix
svandenb-dev Apr 12, 2022
da0d0d1
unit test fix
svandenb-dev Apr 12, 2022
14a3ae2
Update pyaedt/edb_core/EDB_Data.py
svandenb-dev Apr 12, 2022
5a36f41
Update pyaedt/edb_core/EDB_Data.py
svandenb-dev Apr 12, 2022
d59cf86
Update pyaedt/edb_core/EDB_Data.py
svandenb-dev Apr 12, 2022
d737ab1
Update pyaedt/edb.py
svandenb-dev Apr 12, 2022
aef27e5
Update pyaedt/edb.py
svandenb-dev Apr 12, 2022
1943ea3
Update pyaedt/edb.py
svandenb-dev Apr 12, 2022
91af351
Update pyaedt/edb.py
svandenb-dev Apr 12, 2022
affac7d
Update pyaedt/edb_core/components.py
svandenb-dev Apr 12, 2022
3784073
Update pyaedt/edb.py
svandenb-dev Apr 12, 2022
a8d37d3
Update pyaedt/edb_core/components.py
svandenb-dev Apr 12, 2022
de8e6d2
Update pyaedt/edb_core/components.py
svandenb-dev Apr 12, 2022
f7b53af
Update pyaedt/edb_core/components.py
svandenb-dev Apr 12, 2022
d1ae71f
Update pyaedt/edb_core/components.py
svandenb-dev Apr 12, 2022
dc184ea
Update pyaedt/edb_core/components.py
svandenb-dev Apr 12, 2022
00d0f6b
Update pyaedt/edb_core/components.py
svandenb-dev Apr 12, 2022
7aeded2
Update pyaedt/edb_core/general.py
svandenb-dev Apr 12, 2022
7dae633
Update pyaedt/edb_core/general.py
svandenb-dev Apr 12, 2022
9d316e0
Update pyaedt/edb_core/general.py
svandenb-dev Apr 12, 2022
a527ae9
Update pyaedt/edb_core/general.py
svandenb-dev Apr 12, 2022
a18a558
unit test fix
svandenb-dev Apr 12, 2022
53c4a93
Update pyaedt/edb_core/stackup.py
svandenb-dev Apr 12, 2022
d03a263
Apply suggestions from code review
svandenb-dev Apr 12, 2022
2c61489
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 12, 2022
0c54442
unit test fix
svandenb-dev Apr 12, 2022
83f5fc4
unit test fix
svandenb-dev Apr 12, 2022
ee0b516
unit test fix
svandenb-dev Apr 12, 2022
c4d1efd
unit test fix
svandenb-dev Apr 12, 2022
9620e84
unit test fix
svandenb-dev Apr 12, 2022
45cae9e
style fix
svandenb-dev Apr 12, 2022
32cda49
style fix
svandenb-dev Apr 12, 2022
5c66304
bug fix
svandenb-dev Apr 12, 2022
4266b93
Apply suggestions from code review
svandenb-dev Apr 13, 2022
c20e5bd
Update pyaedt/edb_core/EDB_Data.py
svandenb-dev Apr 13, 2022
e20c447
Update pyaedt/edb_core/EDB_Data.py
svandenb-dev Apr 13, 2022
3539343
Update pyaedt/edb_core/EDB_Data.py
svandenb-dev Apr 13, 2022
e2df845
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 13, 2022
e06021f
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 13, 2022
c419842
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 13, 2022
72715c7
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 13, 2022
2472306
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 13, 2022
be9620e
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 13, 2022
62e429c
Update pyaedt/edb_core/hfss.py
svandenb-dev Apr 13, 2022
0095d80
Update pyaedt/edb_core/EDB_Data.py
svandenb-dev Apr 13, 2022
d932e1a
codev fix
svandenb-dev Apr 13, 2022
d7dec53
codev fix
svandenb-dev Apr 13, 2022
2d014e6
Merge branch 'main' into cfg_file
svandenb-dev Apr 13, 2022
3083564
black fix
svandenb-dev Apr 13, 2022
6b792ff
black fix
svandenb-dev Apr 13, 2022
07daa76
Reinstate polygon_with_voids variable.
MaxJPRey Apr 13, 2022
198c548
type variable is no out of the codacy review.
MaxJPRey Apr 13, 2022
e4e8df6
type variable is no out of the codacy review.
MaxJPRey Apr 13, 2022
219c0f6
type variable is no out of the codacy review.
MaxJPRey Apr 13, 2022
8fecf0b
black fix
svandenb-dev Apr 13, 2022
feb4ba3
Merge remote-tracking branch 'origin/cfg_file' into cfg_file
svandenb-dev Apr 13, 2022
c587f28
Merge branch 'cfg_file' of https://github.com/pyansys/pyaedt into cfg…
MaxJPRey Apr 14, 2022
f7ceb85
Bump Sphinx version due to a bug with jinja2.
MaxJPRey Apr 14, 2022
f2f7292
Remove the archive.
MaxJPRey Apr 14, 2022
47b3a37
Reinstate numpy.
MaxJPRey Apr 14, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 77 additions & 20 deletions pyaedt/edb.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
warnings.warn("Pythonnet is needed to run PyAEDT.")
from pyaedt import settings
from pyaedt.edb_core import Components, EdbNets, EdbPadstacks, EdbLayout, EdbHfss, EdbSiwave, EdbStackup
from pyaedt.edb_core.EDB_Data import EdbBuilder
from pyaedt.edb_core.EDB_Data import EdbBuilder, SimulationConfiguration
from pyaedt.generic.constants import CutoutSubdesignType, SolverType
from pyaedt.generic.general_methods import (
pyaedt_function_handler,
env_path,
Expand Down Expand Up @@ -881,13 +882,14 @@ def import_gds_file(self, inputGDS, WorkDir=None, anstranslator_full_path="", us

def create_cutout(
self,
signal_list,
signal_list=[],
reference_list=["GND"],
extent_type="Conforming",
expansion_size=0.002,
use_round_corner=False,
output_aedb_path=None,
open_cutout_at_end=True,
simulation_setup=None,
):
"""Create a cutout and save it to a new AEDB file.

Expand All @@ -909,41 +911,46 @@ def create_cutout(
open_cutout_at_end : bool, optional
Whether to open the cutout at the end. The default
is ``True``.
simulation_setup : EDB_Data.SimulationConfiguration object
When used will overwrite the other parameters

Returns
-------
bool
``True`` when successful, ``False`` when failed.

"""
_signal_nets = []
# validate nets in layout
for _sig in signal_list:
_netobj = self.edb.Cell.Net.FindByName(self.active_layout, _sig)
_signal_nets.append(_netobj)

_ref_nets = []
if simulation_setup and isinstance(simulation_setup, SimulationConfiguration):
signal_list = simulation_setup.signal_nets
reference_list = simulation_setup.power_nets
if simulation_setup.cutout_subdesign_type == CutoutSubdesignType.Conformal:
extent_type = "Conforming"
expansion_size = float(simulation_setup.cutout_subdesign_expansion)
use_round_corner = bool(simulation_setup.cutout_subdesign_round_corner)

# validate nets in layout
net_signals = convert_py_list_to_net_list(
[net for net in list(self.active_layout.Nets) if net.GetName() in signal_list]
)
# validate references in layout
for _ref in reference_list:
_netobj = self.edb.Cell.Net.FindByName(self.active_layout, _ref)
_ref_nets.append(_netobj)

_netsClip = [
self.edb.Cell.Net.FindByName(self.active_layout, reference_list[i]) for i, p in enumerate(reference_list)
]
_netsClip = convert_py_list_to_net_list(_netsClip)
net_signals = convert_py_list_to_net_list(_signal_nets)
_netsClip = convert_py_list_to_net_list(
[net for net in list(self.active_layout.Nets) if net.GetName() in reference_list]
)

if extent_type == "Conforming":
_poly = self.active_layout.GetExpandedExtentFromNets(
net_signals, self.edb.Geometry.ExtentType.Conforming, expansion_size, False, use_round_corner, 1
net_signals, self.edb.Geometry.ExtentType.Conforming, expansion_size, True, use_round_corner, 1
)
else:
_poly = self.active_layout.GetExpandedExtentFromNets(
net_signals, self.edb.Geometry.ExtentType.BoundingBox, expansion_size, False, use_round_corner, 1
net_signals, self.edb.Geometry.ExtentType.BoundingBox, expansion_size, True, use_round_corner, 1
)

# Create new cutout cell/design
_cutout = self.active_cell.CutOut(net_signals, _netsClip, _poly)
included_nets = convert_py_list_to_net_list([net for net in list(self.active_layout.Nets) if net.GetName() in
[*signal_list, *reference_list]])
_cutout = self.active_cell.CutOut(included_nets, _netsClip, _poly, True)

# Analysis setups do not come over with the clipped design copy,
# so add the analysis setups from the original here.
Expand Down Expand Up @@ -1372,3 +1379,53 @@ def get_bounding_box(self):
"""
bbox = self.edbutils.HfssUtilities.GetBBox(self.active_layout)
return [[bbox.Item1.X.ToDouble(), bbox.Item1.Y.ToDouble()], [bbox.Item2.X.ToDouble(), bbox.Item2.Y.ToDouble()]]

@pyaedt_function_handler()
def build_simulation_project(self, simulation_setup=None):
self.logger.info("Building simulation project")
try:
if not simulation_setup or not isinstance(simulation_setup, SimulationConfiguration):
return False
if simulation_setup.do_cutout_subdesign:
self.logger.info("Cutting out using method: {0}".format(simulation_setup.cutout_subdesign_type))
old_cell_name = self.active_cell.GetName()
if self.create_cutout(simulation_setup=simulation_setup):
self.logger.info("Cutout processed")
# delete the original
#old_cell = self._edb.Cell.FindByName(self._db, 0, old_cell_name)
#if not old_cell:
# old_cell.Delete()
else:
self.logger.error("Cutout failed")
if simulation_setup.keep_anf_ports_and_pin_groups:
self.logger.info("Configure circuit ports for existing ports")
map(lambda port: port.SetIsCircuitPort(True), list(self.active_layout.Terminals))
else:
self.logger.info("Deleting existing ports")
map(lambda port: port.Delete(), list(self.active_layout.Terminals))
map(lambda pg: pg.Delete(), list(self.active_layout.PinGroups))
self.logger.info("Creating ports for signal nets")
map(lambda cmp: self.core_components.create_port_on_component(cmp,
net_list=simulation_setup.signal_nets, do_pingroup=False,
reference_net=simulation_setup.power_nets), simulation_setup.coax_instances)
self.logger.info("Number of ports: {}".format(self.core_hfss.get_ports_number()))
if simulation_setup.solver_type == SolverType.Hfss3dLayout:
self.logger.info("Configure HFSS extents")
self.core_hfss.configure_hfss_extents(simulation_setup)
self.logger.info("Configure analysis setup")
if simulation_setup.solver_type == SolverType.Siwave:
if not self.core_siwave.configure_siw_analysis_setup(simulation_setup):
self.logger.error("Failed to configure Siwave simulation setup.")
elif simulation_setup.solver_type == SolverType.Hfss3dLayout:
if not self.core_hfss.configure_hfss_analysis_setup(simulation_setup):
self.logger.error("Failed to configure HFSS simulatiom setup.")
self.core_hfss.set_coax_port_attributes(simulation_setup)
if simulation_setup.trim_reference_size:
self.logger.info('Trimming the reference plane for coaxial ports: {0}'.
format(bool(simulation_setup.trim_reference_size)))
self.core_hfss.trim_component_reference_size(simulation_setup)
if simulation_setup.defeature_layout:
self.core_hfss.layout_defeaturing(simulation_setup)
return True
except:
return False
Loading