Download this example
Download this example as a Jupyter Notebook or as a Python script.
Import Materials#
This example shows how to import materials.
Import the required packages#
[1]:
import json
from pathlib import Path
import tempfile
from IPython.display import display
from ansys.aedt.core.downloads import download_file
import pandas as pd
from pyedb import Edb
AEDT_VERSION = "2024.2"
NG_MODE = False
C:\Users\ansys\AppData\Local\Temp\ipykernel_5688\2431567430.py:7: DeprecationWarning:
Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),
(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)
but was not found to be installed on your system.
If this would cause problems for you,
please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466
import pandas as pd
Download the example PCB data.
[2]:
temp_folder = tempfile.TemporaryDirectory(suffix=".ansys")
file_edb = download_file(source="edb/ANSYS-HSD_V1.aedb", destination=temp_folder.name)
Load example layout.#
[3]:
edbapp = Edb(file_edb, edbversion=AEDT_VERSION)
PyAEDT INFO: Logger is initialized in EDB.
PyAEDT INFO: legacy v0.37.0
PyAEDT INFO: Python version 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)]
PyAEDT INFO: Database ANSYS-HSD_V1.aedb Opened in 2024.2
PyAEDT INFO: Cell main Opened
PyAEDT INFO: Builder was initialized.
PyAEDT INFO: EDB initialized.
Review materials from layout#
Get materials from layout in a dictionary. Materials are exported together with stadckup.
[4]:
data_cfg = edbapp.configuration.get_data_from_db(stackup=True)
PyAEDT INFO: Getting data from layout database.
[5]:
df = pd.DataFrame(data=data_cfg["stackup"]["materials"])
display(df)
name | permittivity | conductivity | dielectric_loss_tangent | magnetic_loss_tangent | mass_density | permeability | poisson_ratio | specific_heat | thermal_conductivity | |
---|---|---|---|---|---|---|---|---|---|---|
0 | copper | 0.00 | 58000000.0 | 0.000 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
1 | FR4_epoxy | 4.40 | 0.0 | 0.020 | 0.0 | 1900.0 | 0.0 | 0.28 | 1150.0 | 0.294 |
2 | Megtron4 | 3.77 | 0.0 | 0.005 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
3 | Megtron4_2 | 3.47 | 0.0 | 0.006 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
4 | Megtron4_3 | 4.20 | 0.0 | 0.005 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
5 | Solder Resist | 3.00 | 0.0 | 0.000 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
Add a new material#
[6]:
data_cfg["stackup"]["materials"].append(
{"name": "soldermask", "permittivity": 3.3, "dielectric_loss_tangent": 0.02},
)
Edit existing material properties#
[7]:
data_cfg["stackup"]["materials"][1]["name"] = "fr4_epoxy"
data_cfg["stackup"]["materials"][1]["dielectric_loss_tangent"] = 0.015
Review modified materials#
[8]:
df = pd.DataFrame(data=data_cfg["stackup"]["materials"])
display(df)
name | permittivity | conductivity | dielectric_loss_tangent | magnetic_loss_tangent | mass_density | permeability | poisson_ratio | specific_heat | thermal_conductivity | |
---|---|---|---|---|---|---|---|---|---|---|
0 | copper | 0.00 | 58000000.0 | 0.000 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
1 | fr4_epoxy | 4.40 | 0.0 | 0.015 | 0.0 | 1900.0 | 0.0 | 0.28 | 1150.0 | 0.294 |
2 | Megtron4 | 3.77 | 0.0 | 0.005 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
3 | Megtron4_2 | 3.47 | 0.0 | 0.006 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
4 | Megtron4_3 | 4.20 | 0.0 | 0.005 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
5 | Solder Resist | 3.00 | 0.0 | 0.000 | 0.0 | 0.0 | 0.0 | 0.00 | 0.0 | 0.000 |
6 | soldermask | 3.30 | NaN | 0.020 | NaN | NaN | NaN | NaN | NaN | NaN |
Write material definition into a json file#
[9]:
file_cfg = Path(temp_folder.name) / "edb_configuration.json"
with open(file_cfg, "w") as f:
json.dump(data_cfg, f, indent=4, ensure_ascii=False)
Load materials from json configuration file#
[10]:
edbapp.configuration.load(str(file_cfg), apply_file=True)
[10]:
<pyedb.configuration.cfg_data.CfgData at 0x232a13a76a0>
Review materials from layout#
[11]:
edbapp.materials.materials
[11]:
{'copper': <pyedb.dotnet.edb_core.materials.Material at 0x232a028b790>,
'fr4_epoxy': <pyedb.dotnet.edb_core.materials.Material at 0x232a028be50>,
'Megtron4': <pyedb.dotnet.edb_core.materials.Material at 0x232a028aa70>,
'Megtron4_2': <pyedb.dotnet.edb_core.materials.Material at 0x232a028a3b0>,
'Megtron4_3': <pyedb.dotnet.edb_core.materials.Material at 0x232a022c2e0>,
'Solder Resist': <pyedb.dotnet.edb_core.materials.Material at 0x232a022e2c0>,
'soldermask': <pyedb.dotnet.edb_core.materials.Material at 0x232a022fdc0>}
Check modified material properties#
[12]:
edbapp.materials["fr4_epoxy"].loss_tangent
[12]:
0.015
Save and close Edb#
The temporary folder will be deleted once the execution of this script is finished. Replace edbapp.save() with edbapp.save_as(“C:/example.aedb”) to keep the example project.
[13]:
edbapp.save()
edbapp.close()
[13]:
True
Download this example
Download this example as a Jupyter Notebook or as a Python script.