Reduced-order thermal analysis and inverse design for chip/package architecture.
Aethermor turns a physical power map, material model, package boundary, and junction limit into an auditable steady-state result. It is designed for early architecture decisions: feasibility screening, maximum-power estimation, cooling tradeoffs, sensitivity analysis, and deciding where higher-fidelity FEA/CFD or hardware characterization is warranted.
Release: 2.0.0rc1 — external engineering-review candidate. Aethermor is not a
package, reliability, or product sign-off tool.
Python 3.10–3.12 is supported.
git clone https://github.com/Yoder23/aethermor.git
cd aethermor
python -m pip install -e ".[dev]"
aethermor validate
aethermor demo --samples 30For a non-editable installation from a release checkout:
python -m pip install .
aethermor validate --jsonThe validation command exits nonzero when a critical numerical gate fails.
The demo writes its inputs, assumptions, solver metadata, uncertainty seed,
results, and limitations to generated_results/architecture_tradeoff.json.
import numpy as np
from aethermor import FourierThermalTransport, ThermalBoundaryCondition
shape = (20, 20, 2)
model = FourierThermalTransport(
grid_shape=shape,
element_size_m=(1e-3, 1e-3, 0.2e-3),
boundary=ThermalBoundaryCondition.package_cooled(
face="z_max",
h_W_m2K=20_000.0,
coolant_temperature_K=303.15,
),
)
model.set_power_map(np.full(shape[:2], 1e6), units="W/m2", z_index=0)
result = model.solve_steady()
if not result.converged:
raise RuntimeError(result.warnings)
print(f"peak: {result.max_temperature_K:.2f} K")
print(f"solved power: {result.total_power_W:.3f} W")
relative_energy_error = abs(result.energy_balance_error_W) / max(
abs(result.total_power_W), np.finfo(float).tiny
)
print(f"relative energy-balance error: {relative_energy_error:.3e}")The canonical path is:
physical power map
-> FourierThermalTransport.solve_steady()
-> SteadyStateResult
-> package tradeoff / inverse design / CLI / demo
The core solves div(k grad(T)) + q''' = 0 on a cell-centred Cartesian
finite-volume mesh. Public power inputs accept W/cell, W/m², or W/m³ and always
report integrated solved power. Boundary conditions are face-specific
Dirichlet, flux/adiabatic, or Robin conditions. Package coupling applies only
external face impedance when the die is already meshed, avoiding double-counted
die resistance.
See the physics and equations, API reference, and architecture assumptions.
Runnable engineer-facing examples are deliberately limited to the canonical surface:
python -m examples.steady_power_map
python -m examples.maximum_power
python -m examples.architecture_tradeoffOlder optimizer, roadmap, material-ranking, and dashboard paths are retained only as compatibility/experimental surfaces; they are not part of this engineering-review release surface.
The release separates numerical verification, cross-code comparison, and hardware validation:
| Evidence layer | Current status | What it supports |
|---|---|---|
| Analytical and manufactured solutions | Executed locally and in CI | Discretization, conservation, boundary implementation |
| Mesh studies | Executed at multiple lateral and through-plane resolutions | Stated mesh-independence tolerances |
| UVA HotSpot v7.0 cross-code suite | Pinned independent implementation, shared canonical inputs | Class-A synthetic model comparison and Class-B trend evidence |
| Grade-A matched hardware holdout | Not available; hardware_validated=false |
No hardware accuracy claim |
In the current release evidence, the four synthetic Class-A primary-grid peak-rise differences are 0.092–0.226%, and the three inverse allowable-power differences are 0.129–0.200%. These results are cross-code evidence under the disclosed amended protocol, not experimental validation. The Class-B native EV6 and accelerator package cases remain informative disagreements: 156.3% and 20.0% primary-grid peak-rise difference, respectively.
For the declared 240-sample synthetic uncertainty study, exact 50% spatial flattening ranks first in 240/240 samples and the nominal top-two ordering is unchanged. Those ranges are engineering assumptions, not measured probability distributions, and the study is repository-authored.
Every public claim maps to the
claim/evidence matrix. Review the generated
external report,
discrepancy log, and
trust page before relying on a result.
The Ubuntu installed-wheel holdout
reproduces all primary forward metrics exactly and the inverse comparisons to
within 1.12e-13 absolute relative-difference delta.
The full comparison is intentionally expensive. On Ubuntu 24.04:
sudo apt-get update
sudo apt-get install -y build-essential libblas-dev libsuperlu-dev
run_root="$(mktemp -d /tmp/aethermor-external-XXXXXX)"
aethermor validate --external \
--hotspot-source "$run_root/hotspot-v7" \
--external-output-dir "$run_root/evidence"The command obtains and verifies UVA HotSpot v7.0 commit
9f92256f7a45db6057c809e94fcd224ddad9157a, performs a clean SuperLU build,
generates both tools' inputs from one canonical benchmark schema, runs all
forward, inverse, intervention, and robustness cases, and verifies aggregate
claims against retained raw artifacts before writing a report.
See installation and verification and reproducibility for clean-wheel workflows.
The stable material set is deliberately small: one near-300 K silicon profile with three property-level records, each carrying source and condition metadata. Seventeen legacy profiles are opt-in provisional data and warn on lookup. Three records requiring different physical models were removed from the bulk-material default. See material provenance.
Use Aethermor for architecture-stage screening and comparative decisions within the documented model envelope. Do not use it as the sole basis for package or reliability sign-off, absolute hardware junction-temperature claims, detailed bump/TSV/interconnect analysis, fluid resolution, boiling, radiation, or thermo-mechanical stress.
Read LIMITATIONS.md, then use the challenge bundle to reproduce or falsify a result.
- Ten-minute engineer review
- Installation and verification
- Validation methodology
- Support policy
- Contributing
- Security
- Release notes
Apache-2.0 licensed. Citation metadata is in CITATION.cff.