Unable to deembed parasitic port inductance for edge port in Hfss3dlayout
Closed this issue · 1 comments
Before submitting the issue
- I have searched among the existing issues
- I am using a Python virtual environment
Description of the bug
I am unable to set the 'DeembedParasiticPortInductance' property to "true" in PyAEDT to deembed edge port inductance. I have tried multiple methods, including using the hfss3dlayout change_property method and directly calling the oDesign object to excute the change. The change_property() method even print success message but the deembed option remains false when I print the property or check the design in the GUI.
The change_property_method:
self.hfss3d_proj.change_property(aedt_object=self.hfss3d_proj.odesign, property_object=f"Excitations:{port_name}", property_name="DeembedParasiticPortInductance", property_value="true", tab_name="EM Design")
The output: PyAEDT INFO: Property DeembedParasiticPortInductance Changed correctly.
The properties after change: BoundaryProps([('Port', 'TL-0PORT-F'), ('Boundary Type', 'Port'), ('Impedance', '50ohm'), ('Magnitude', '1V'), ('Phase', '0deg'), ('Renormalize', 'true'), ('Renormalize Impedence', '50ohm + 0i ohm'), ('DeembedParasiticPortInductance', 'false'), ('PlanarEM', ''), ('Type', 'Circuit'), ('HFSS', ''), ('HFSS Type', 'Circuit'), ('Layer Alignment', 'Lower')])
Steps To Reproduce
self.hfss3d_proj = pyaedt.Hfss3dLayout(project=project_name, design=design_name,
version="2024.1", non_graphical=True, new_desktop=True,
close_on_exit=True, student_version=False)
# port_tline_obj is a line object in hfss3dlayout
new_edge_port = self.hfss3d_proj.create_edge_port(assignment=port_tline_obj, edge_number=port_edge_id, reference_primitive=ref_obj_name, is_circuit_port=True)
self.hfss3d_proj.change_property(aedt_object=self.hfss3d_proj.odesign,
property_object=f"Excitations:{port_name}",
property_name="DeembedParasiticPortInductance",
property_value="true", tab_name="EM Design")
Which Operating System are you using?
Linux
Which Python version are you using?
3.10
Installed packages
annotated-types==0.7.0
ansys-pythonnet==3.1.0rc3
astroid==3.1.0
attrs==23.2.0
certifi==2024.6.2
cffi==1.16.0
charset-normalizer==3.3.2
clr-loader==0.2.6
contourpy==1.2.1
cycler==0.12.1
defusedxml==0.7.1
dill==0.3.8
distro==1.9.0
dotnetcore2==3.1.23
filelock==3.15.4
fonttools==4.53.0
fpdf2==2.7.9
fsspec==2024.6.1
idna==3.7
isort==5.13.2
Jinja2==3.1.4
jsonschema==4.22.0
jsonschema-specifications==2023.12.1
kiwisolver==1.4.5
MarkupSafe==2.1.5
matplotlib==3.9.0
mccabe==0.7.0
mpmath==1.3.0
networkx==3.3
numpy==1.26.4
nvidia-cublas-cu12==12.1.3.1
nvidia-cuda-cupti-cu12==12.1.105
nvidia-cuda-nvrtc-cu12==12.1.105
nvidia-cuda-runtime-cu12==12.1.105
nvidia-cudnn-cu12==9.1.0.70
nvidia-cufft-cu12==11.0.2.54
nvidia-curand-cu12==10.3.2.106
nvidia-cusolver-cu12==11.4.5.107
nvidia-cusparse-cu12==12.1.0.106
nvidia-nccl-cu12==2.20.5
nvidia-nvjitlink-cu12==12.6.20
nvidia-nvtx-cu12==12.1.105
packaging==24.0
pandas==2.2.2
-e git+https://bitbucket.analog.com/scm/~abudak/panoptic.git@f2f310e0633809311dad9555bb2b26e4b69c9239#egg=panoptic
pexpect==4.9.0
pillow==10.3.0
platformdirs==4.2.2
plumbum==1.8.3
ply==3.11
pooch==1.8.2
psutil==5.9.8
ptyprocess==0.7.0
pyads==3.4.0
pyaedt==0.9.4
pycparser==2.22
pydantic==2.7.3
pydantic_core==2.18.4
pyedb==0.12.1
pylint==3.1.0
pyparsing==3.1.2
python-dateutil==2.9.0.post0
pytomlpp==1.0.13
pytz==2024.1
pyverilog==1.3.0
pyvista==0.43.9
PyYAML==6.0.1
referencing==0.35.1
requests==2.32.3
rpds-py==0.18.1
rpyc==6.0.0
Rtree==1.2.0
scipy==1.14.0
scooby==0.10.0
six==1.16.0
sympy==1.13.1
toml==0.10.2
tomli==2.0.1
tomlkit==0.12.4
torch==2.4.0
torchaudio==2.4.0+cpu
torchvision==0.19.0
triton==3.0.0
typing_extensions==4.12.1
tzdata==2024.1
urllib3==2.2.1
vtk==9.3.0
Hi @swang0528 ,
In this case you have enabled the object_properties object which is replacing the "props" properties because it accesses to the Object Oriented Programming of AEDT (GetChildObject, GetChildNames....). So in your case you can just:
new_edge_port .object_properties.props['DeembedParasiticPortInductance'] = True
If you want to use the "props" object, no problem, you just need to check that the boolean value parsed from AEDT is an string, so you just need the following:
new_edge_port .props['DeembedParasiticPortInductance'] = "true"