From 2680334fcfbd032905f6f9a4bd3f0389ce19d1eb Mon Sep 17 00:00:00 2001 From: TonyXu <127065003+Capulus123@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:03:28 -0400 Subject: [PATCH 1/8] Create Readme-7.0 Add Readme for 7.0 --- Readme-7.0 | 268 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 Readme-7.0 diff --git a/Readme-7.0 b/Readme-7.0 new file mode 100644 index 0000000..1760bef --- /dev/null +++ b/Readme-7.0 @@ -0,0 +1,268 @@ +# HotSpot 7.0 — Thermal Modeling Tool + +HotSpot is a fast, pre‑RTL thermal simulator for architectural studies. It models heat flow with an RC network and supports traditional 2D ICs, 3D stacks, and (new in 7.0) **microfluidic cooling**. + +> If you’re upgrading from 6.0, see the **Migration Guide** near the end of this document. + +--- + +## Table of contents + +* [Quick start](#quick-start) +* [Install & build](#install--build) +* [Run simulations](#run-simulations) +* [Inputs (file types)](#inputs-file-types) +* [Outputs](#outputs) +* [Visualizing results](#visualizing-results) +* [Embedding HotSpot in your code](#embedding-hotspot-in-your-code) +* [Tips & troubleshooting](#tips--troubleshooting) +* [Migration guide: 6.0 → 7.0](#migration-guide-60--70) +* [Repository layout](#repository-layout) +* [License & citation](#license--citation) +* [Contacts](#contacts) + +--- + +## Quick start + +```bash +# 1) Get the source +git clone https://github.com/uvahotspot/HotSpot.git +cd HotSpot + +# 2) (Recommended) Install BLAS + SuperLU from your package manager +# Required if you plan to use microfluidic cooling. +# Example (Ubuntu/Debian): +sudo apt install libblas-dev libsuperlu5 libsuperlu-dev + +# 3) Build (enable SuperLU if installed) +make # baseline build +make SUPERLU=1 # links SuperLU for faster steady-state + microchannels + +# 4) Run an example (produces steady + transient outputs) +cd examples/example1 +./run.sh +``` + +--- + +## Install & build + +### Requirements + +* POSIX-like OS (Linux/macOS), C toolchain, `make`, libm. +* **BLAS** (required when enabling SuperLU). +* **SuperLU** (optional but recommended; **required** for microfluidic simulations). + +### Build options + +Set options as `make KEY=VALUE`: + +* `SUPERLU=0|1` — link against SuperLU (default 0). +* `DEBUG=0|1|2` — add debug flags (`-ggdb`, `-Wall`, …); no runtime change. +* `VERBOSE=0|1|2` — print more runtime info. + +If the linker can’t find BLAS/SuperLU (non‑standard paths), edit the `Makefile` variables `BLASLIB`, `SUPERLULIB`, and `SLU_HEADER`. + +--- + +## Run simulations + +HotSpot is a single binary (`hotspot`) driven by command‑line options plus a configuration file. + +### Core required options + +* `-c ` — main configuration (see below). +* Power/floorplan: **either** + + + * `-flp ` **or** + * `-grid_layer_file ` (layered stack/3D; also used for microchannels) +* Power trace: `-p ` + +### Model selection + +* `-model_type block` — block‑level solver (2D) +* `-model_type grid` — grid solver (required for 3D and for microchannels) + +### Typical commands + +**2D block model (steady + transient):** + +```bash +hotspot -c cpu.config -flp cpu.flp -p cpu.ptrace \ + -model_type block \ + -steady_file out/cpu.steady \ + -o out/cpu.ttrace +``` + +**3D grid model with layered stack:** + +```bash +hotspot -c stack.config -grid_layer_file stack.lcf -p stack.ptrace \ + -model_type grid \ + -grid_steady_file out/stack.grid.steady \ + -grid_transient_file out/stack.grid.ttrace +``` + +**Microfluidic cooling (new in 7.0):** + +```bash +# Requirements: make SUPERLU=1; model_type grid; detailed 3D on +hotspot -c micro.config -grid_layer_file micro.lcf -p micro.ptrace \ + -model_type grid -detailed_3D on -use_microchannels 1 \ + -grid_steady_file out/micro.grid.steady \ + -grid_transient_file out/micro.grid.ttrace +``` + +**Notes:** In the LCF, supply a channel geometry CSV in place of a floorplan for the microchannel layer(s). Do **not** combine microfluidic cooling with the secondary heat‑path model. + +--- + +## Inputs (file types) + +### Configuration (`.config`) + +The central file; every line looks like `-option value`. Common sections: + +* **Chip specs** — default material or explicit thermal props (used in 2D when no LCF). +* **Heat sink / spreader / interface material (TIM)** — material or explicit props and dimensions. +* **Secondary path** — optional off‑chip heat paths (mutually exclusive with microchannels). +* **Grid‑specific** — `-grid_rows`, `-grid_cols` (if using RK4, both must be powers of two), `-grid_map_mode`, file hooks like `-grid_layer_file`, `-grid_steady_file`. +* **Microchannel (7.0+)** — pump settings (pressure, internal resistance), inlet coolant temp, coolant and wall materials, HTC, etc. Only considered when `-use_microchannels 1`. +* **Other** — ambient, sampling interval, DTM, leakage, detailed package model. + +### Layer configuration (`.lcf`) + +Defines the stack from **top** (near spreader) to **bottom** (far from spreader). For each layer specify: + +* Layer number (bottom is 0; layer *i* from bottom is *i‑1*), +* Lateral heat flow `Y|N`, power‑dissipating `Y|N`, +* Material (name from materials file **or** explicit VHC + resistivity) and **thickness**, +* **Floorplan** for that layer **or** a **microchannel geometry CSV** (CSV switches the layer into microfluidic mode). + +### Floorplan (`.flp`) + +Rectangular blocks with coordinates (origin at chip bottom‑left). Optional per‑element VHC/resistivity when `-detailed_3D on`. + +### Power trace (`.ptrace`) + +Header lists element names, then one row per time step (interval = `-sampling_intvl`). In 3D, list all elements of each **power‑dissipating** layer; non‑dissipating layers are omitted. Names can repeat across layers. Layer order must match the LCF. + +### Materials (`.materials`) + +Define **solid** or **fluid** entries once and reference them by name elsewhere. + +### Initialization (`.init`) *(optional)* + +Seed temperatures per element; often copied from a previous `.steady` file. + +### Microchannel geometry (`.csv`) + +Grid over `grid_rows × grid_cols`. Cell codes: 0=solid, 1=fluid, 2=inlet, 3=outlet. + +--- + +## Outputs + +* **Steady per‑block**: `.steady` — `layer__ ` +* **Steady per‑grid‑cell**: `.grid.steady` — all layers included (format changed in 7.0) +* **Transient per‑block**: `.ttrace` — header of names, then temps per time step +* **Transient per‑grid‑cell**: `.grid.ttrace` (new in 7.0) + +--- + +## Visualizing results + +Helpful scripts live in `scripts/`: + +```bash +# Split multi-layer grid outputs to one file per layer +python3 scripts/split_grid_steady.py out/stack.grid.steady +python3 scripts/split_grid_transient.py out/stack.grid.ttrace + +# Heatmaps (choose Perl/SVG or Python/PNG flavor) +perl scripts/grid_thermal_map.pl -flp cpu.flp -grid out/layer0.grid.steady -o cpu.svg +python3 scripts/grid_thermal_map.py -flp cpu.flp -grid out/layer0.grid.steady -o cpu.png + +# Visualize floorplans +perl scripts/tofig.pl cpu.flp # outputs .fig (view with xfig) +python3 scripts/visualize_floorplan.py cpu.flp # outputs .png +``` + +See `examples/example3` for scripted visualization workflows. + +--- + +## Embedding HotSpot in your code + +We archive the API in `libhotspot.a` and expose prototypes in `hotspot-iface.h`. + +```c +#include "hotspot-iface.h" + +int main() { + // call HotSpot APIs here +} +``` + +Compile and link against the library (adjust paths): + +```bash +gcc your_code.c -lm -L -lhotspot -I +``` + +A minimal C example is provided in `sim-template.c`. + +--- + +## Tips & troubleshooting + +* **3D requires grid model**: use `-model_type grid` when supplying an LCF. +* **RK4 grid sizes**: if using the RK4 solver, `grid_rows` & `grid_cols` must be powers of two. +* **No mixing**: microfluidic cooling cannot be combined with the “secondary heat‑path” model. +* **Can’t find SuperLU/BLAS**: set `BLASLIB`, `SUPERLULIB`, `SLU_HEADER` in the `Makefile`. +* **Modeling bare‑die (no sink/spreader/TIM)**: set convection cap small, convection res large, and give sink/spreader/TIM near‑zero thickness & properties (many users create a `none` material with tiny `k` & VHC, then set `-material_*` to `none`). +* **Common workflow**: run steady‑state first, copy `.steady` → `.init`, then run transient. + +--- + +## Migration guide: 6.0 → 7.0 + +* **Microfluidic cooling** is supported in the core simulator (see `example5`). +* **LCF without FLP**: When using `-grid_layer_file`, a separate `-flp` is no longer required. +* **Output changes**: steady grid files now include **all layers**; new **`.grid.ttrace`** for grid transients. +* **Console output**: steady‑state temps are no longer printed to `stdout` automatically. +* **Build flags**: `DEBUG3D` removed. Use `DEBUG`/`VERBOSE` instead. +* **Repository reorg**: inputs distilled into `examples/`; Perl utilities gathered in `scripts/` and new Python helpers added. + +**Quick checklist for old projects** + +* Update any parser that read the old one‑layer `.grid.steady` format. +* If you relied on stdout steady results, switch to `-steady_file`/`-grid_steady_file`. +* Replace any references to removed scripts (`3Dfig2pdf.sh`) with the `scripts/` equivalents. + +--- + +## Repository layout + +``` +HotSpot/ + examples/ # Six worked examples incl. 3D & microchannels + scripts/ # Plotting & conversion tools (Perl & Python) + *.c, *.h # Core simulator + Makefile # Build options (SUPERLU/DEBUG/VERBOSE) + LICENSE +``` + +--- + +## License & citation + +See `LICENSE` in the repository. If you use HotSpot in academic work, please cite the HotSpot papers (see UVA HotSpot website) and this repository. + +--- + +## Contacts + +Questions/bugs: **[hotspot@virginia.edu](mailto:hotspot@virginia.edu)**. For usage Q\&A, please open an issue on GitHub. From 25f20faa0dd8868e8a0075b71de205146814503f Mon Sep 17 00:00:00 2001 From: TonyXu <127065003+Capulus123@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:09:20 -0400 Subject: [PATCH 2/8] Rename Readme-7.0 to Readme-7.0.md Change the file type --- Readme-7.0 => Readme-7.0.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Readme-7.0 => Readme-7.0.md (100%) diff --git a/Readme-7.0 b/Readme-7.0.md similarity index 100% rename from Readme-7.0 rename to Readme-7.0.md From b2fe89f170fb5c06649faaf1c2802d5753bf95c8 Mon Sep 17 00:00:00 2001 From: TonyXu <127065003+Capulus123@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:12:03 -0400 Subject: [PATCH 3/8] Add example1.md Add Readme file for example 1. --- examples/example1/example1.md | 86 +++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 examples/example1/example1.md diff --git a/examples/example1/example1.md b/examples/example1/example1.md new file mode 100644 index 0000000..7e273e5 --- /dev/null +++ b/examples/example1/example1.md @@ -0,0 +1,86 @@ +# Example 1 — Block Model (EV6 + GCC Trace) + +## Purpose +Run HotSpot in its default block-level thermal model mode to get transient and steady-state chip temperatures. + +## Inputs +- ev6.flp — Alpha 21264 floorplan +- gcc.ptrace — power trace (gcc workload, 10 ms step) +- example.config — default thermal parameters +- example.materials — optional materials DB +- package.config — optional detailed package model + +## Commands +```bash +../../hotspot -c example.config -f ev6.flp -p gcc.ptrace \ + -materials_file example.materials -model_type block \ + -steady_file outputs/gcc.steady -o outputs/gcc.ttrace + +cp outputs/gcc.steady gcc.init + +../../hotspot -c example.config -init_file gcc.init -f ev6.flp -p gcc.ptrace \ + -materials_file example.materials -model_type block -o outputs/gcc.ttrace +``` + +## Outputs +- outputs/gcc.steady — steady temperatures per block +- outputs/gcc.ttrace — transient temps per block +- gcc.init — initialization file for pass 2 + +## Key Parameters / Flags +- -model_type block (fast per-block network) +- -package_model_used 1 (optional detailed package) + +## Notes / Tips +- Ensure gcc.ptrace header matches ev6.flp block names +- Check ambient and initial temperatures for realism +- If enabling package_model_used, verify geometry and fan parameters + +## Extra Notes +1) run.sh (driver) + Cleans previous results; ensures outputs/. + ./run.sh to run the command + +2) ev6.flp (floorplan) + Maps names (e.g., L2, Icache, IntExec) to rectangles: width, height, left-x, bottom-y (meters). + Optional per-block overrides (specific heat / resistivity) not used here. + Must name-match the trace header. + +3) gcc.ptrace + Header row: block names exactly matching ev6.flp. + Rows: instantaneous power per block (W) at each time sample. + Sampling interval comes from config: -sampling_intvl 0.01 ⇒ 10 ms per row. + +4) example.config (physics & model knobs) + + Core thermal stack (lumped package path, since grid/secondary off): + Chip (die): -t_chip 150µm, -k_chip 130 W/mK, -p_chip 1.6303e6 J/m³K. + Interface (TIM): t=20µm, k=4, p=4e6. + Spreader: s=30 mm, t=1 mm, k=400, p=3.55e6. + Sink: s=60 mm, t=6.9 mm, k=400, p=3.55e6. + Ambient: 318.15 K (45 °C). + Convection (lumped): -r_convec 0.1 K/W, -c_convec 140.4 J/K (used unless detailed package enabled). + + Run settings: + Model: -model_type block (fast per-block network). + -block_omit_lateral 0 ⇒ include lateral spreading. + Time: -sampling_intvl 0.01 s. + Leakage loop: off (-leakage_used 0). + Secondary path: off (-model_secondary 0, only acts in grid model). + Grid params present but unused (since block model selected). + +5) package.config (optional detailed package model) + Only used if -package_model_used 1 in the run. + Convection mode: forced (-natural_convec 0). + Flow type: lateral (-flow_type 0). + Sink type: fin-channel (-sink_type 0). + Geometry: fin_height 30 mm, fin_width 1 mm, channel_width 2 mm. + Fan: radius 30 mm, motor_radius 10 mm, rpm 1000. + +6) example.materials + silicon (solid): k=130, p=1.6303e6. + water (fluid): k=0.6069, p=4.172638e6, μ=8.89e-4 Pa·s. + aluminum (solid): k=237, p=2.422e6. + If you set flags like -material_chip silicon (not set in your config), these override numeric -k_*/-p_* values with the database entries. Fluids are used by the microfluidic path (disabled here). + + From a7210f87402a9439dc2d1c8a4d7402c8400fca7d Mon Sep 17 00:00:00 2001 From: TonyXu <127065003+Capulus123@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:14:37 -0400 Subject: [PATCH 4/8] Add files via upload --- examples/example2/example2.md | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 examples/example2/example2.md diff --git a/examples/example2/example2.md b/examples/example2/example2.md new file mode 100644 index 0000000..05a09aa --- /dev/null +++ b/examples/example2/example2.md @@ -0,0 +1,60 @@ +# Example 2 — Grid Model (EV6 + GCC Trace) + +## Purpose +Demonstrates HotSpot’s grid model for more detailed spatial accuracy. + +## Switching to Grid Model +- -model_type grid + +## Inputs +- ev6.flp — Alpha 21264 floorplan +- gcc.ptrace — power trace (gcc workload, 10 ms step) +- example.config — default thermal parameters +- example.materials — optional materials DB + +## Commands +```bash +../../hotspot -c example.config -f ev6.flp -p gcc.ptrace \ + -materials_file example.materials -model_type grid \ + -steady_file outputs/gcc.steady -grid_steady_file outputs/gcc.grid.steady + +cp outputs/gcc.steady gcc.init + +../../hotspot -c example.config -init_file gcc.init -f ev6.flp -p gcc.ptrace \ + -materials_file example.materials -model_type grid \ + -o outputs/gcc.ttrace -grid_transient_file outputs/gcc.grid.ttrace +``` + +## Outputs +- outputs/gcc.grid.steady — steady-state grid temperatures +- outputs/gcc.grid.ttrace — transient grid temperatures +- outputs/gcc.steady — per-block temps for reference + +## Key Parameters / Flags +- -grid_rows/-grid_cols (default 64x64, must be powers of two without SuperLU) +- -grid_map_mode [min|max|avg|center] — maps grid temps back to block temps + +## Notes / Tips +- Use split_grid_steady.py to extract per-layer temps +- Visualize with grid_thermal_map.py or grid_thermal_map.pl +- Grid is slower but more accurate than block model + +## Extra Notes +1) Grid Resolution Control + The trade-off between speed and accuracy is controlled by: + -grid_rows + -grid_cols + default: 64 %C3%97 64 (powers of two are required without SuperLU). +2) Grid-Specific Outputs + -grid_steady_file → Saves steady-state temperatures for each grid cell. + -grid_transient_file → Saves transient temperatures for each grid cell. +3) Visualization + Step 1 – Split multi-layer grid file: + ../../scripts/split_grid_steady.py outputs/gcc.grid.steady 4 64 64 + (4 = number of layers; 64×64 = resolution) + + Step 2 – Create thermal map with floorplan overlay: + ../../scripts/grid_thermal_map.pl ev6.flp outputs/gcc_layer0.grid.steady > outputs/gcc.svg + ../../scripts/grid_thermal_map.py ev6.flp outputs/gcc_layer0.grid.steady outputs/gcc.png + + From 3b4066093bb9542dcac7d3dc4cb9bdb5dd44e10d Mon Sep 17 00:00:00 2001 From: TonyXu <127065003+Capulus123@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:15:22 -0400 Subject: [PATCH 5/8] example3.md Add Readme file for example 3 --- examples/example3/example3.md | 49 +++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 examples/example3/example3.md diff --git a/examples/example3/example3.md b/examples/example3/example3.md new file mode 100644 index 0000000..46667e7 --- /dev/null +++ b/examples/example3/example3.md @@ -0,0 +1,49 @@ +# Example 3 — 3D Stacking with LCF + +## Purpose +Demonstrates HotSpot’s ability to model 3D ICs using a Layer Configuration File (LCF). + +## New Features + -detailed_3D on flag required; only works in grid mode with .lcf file. + +## Inputs +- example.lcf — defines 4-layer stack (silicon + TIM + silicon + TIM) +- floorplan1.flp — simple 3-block silicon floorplan +- floorplan2.flp — Alpha EV6 floorplan +- example.ptrace — per-block power trace across active layers +- example.config — simulation parameters + +## Commands +../../hotspot -c example.config -p example.ptrace -grid_layer_file example.lcf -materials_file example.materials -model_type grid -detailed_3D on -steady_file outputs/example.steady -grid_steady_file outputs/example.grid.steady + +cp outputs/example.steady example.init + +../../hotspot -c example.config -p example.ptrace -grid_layer_file example.lcf -materials_file example.materials -model_type grid -detailed_3D on -o outputs/example.ttrace -grid_transient_file outputs/example.grid.ttrace + +## Outputs +- example.steady — steady temps across layers +- example.ttrace — transient temps +- example.grid.steady — grid temps across all layers + +## Key Parameters / Flags +- -grid_layer_file (required for 3D) +- -model_type grid (3D requires grid solver) + +## Notes / Tips +- The -f option is ignored; floorplans come from LCF +- Each dissipating layer must have matching entries in the power trace +- Use split_grid_steady.py + grid_thermal_map.py for per-layer visualization + +## Extra Notes +1) Format of .lcf file + + Whether lateral heat flow is modeled + Whether the layer dissipates power + specific heat capacity (J/m³·K) + resistivity ((m·K)/W) + thickness (m) + (.flp) defining block shapes and positions for that layer + +2) Extra two layers in the in the outputs + HotSpot’s grid model always includes the package layers (heat spreader + heat sink) in addition to the layers you define in the LCF. + 4 LCF layers (device stack) + 2 package layers (spreader + sink) = 6 total layers From b98c5f31ce0df8624b3f497cc362df47f0d6717b Mon Sep 17 00:00:00 2001 From: TonyXu <127065003+Capulus123@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:16:21 -0400 Subject: [PATCH 6/8] Add example4.md Add Readme file for example 4 --- examples/example4/example4.md | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 examples/example4/example4.md diff --git a/examples/example4/example4.md b/examples/example4/example4.md new file mode 100644 index 0000000..e983c67 --- /dev/null +++ b/examples/example4/example4.md @@ -0,0 +1,62 @@ +# Example 4 — 3D Heterogeneous Layers with TSVs + +## Purpose +Shows detailed_3D mode with TSVs and heterogeneous material properties inside layers. + +## Inputs +- ev6_3D.lcf — multi-layer config including silicon, TIM, TSV layers +- ev6_3D_cache_1.flp, ev6_3D_cache_2.flp — cache slices with TSVs +- ev6_3D_core_layer.flp — cores with TSVs +- ev6_3D_TIM_TSV.flp — TIM layer with TSVs +- ev6_3D_TIM.flp — homogeneous TIM block +- ev6_3D.ptrace — power trace +- example.config — thermal parameters + +## Commands +```bash +../../hotspot -c example.config -p ev6_3D.ptrace -grid_layer_file ev6_3D.lcf \ + -model_type grid -detailed_3D on \ + -grid_steady_file outputs/example.grid.steady -steady_file outputs/example.steady + +cp outputs/example.steady example.init + +../../hotspot -c example.config -p ev6_3D.ptrace -grid_layer_file ev6_3D.lcf \ + -init_file example.init -model_type grid -detailed_3D on \ + -o outputs/example.transient -grid_transient_file outputs/example.grid.ttrace +``` + +## Outputs +- outputs/example.grid.steady — steady grid temps (heterogeneous) +- outputs/example.steady — steady per-block temps (the grid is mapped back to block temps using the mapping mode; typically avg unless changed) +- outputs/example.transient — transient temps +- outputs/example.grid.ttrace - 3D grid temperatures over time + +## Key Parameters / Flags +- -detailed_3D on (enables heterogeneous layer properties, TSVs) +- -grid_layer_file (required for multi-layer modeling) + +## Notes / Tips +- TSVs modeled as narrow strips with distinct material props +- Use detailed_3D only with grid solver +- Useful for studying TSV heat dissipation in stacked ICs + +## Description of the Test Case + We assume that the system in this test case contains 4 ev6 cores + and a shared L2 cache. All of the 4 cores are located on the same + layer while the L2 cache is split into 2 cache layers. Since the + core layer has higher power dissipation, we put this layer closer + to the heat sink. + + In this test case, the TSV unit contains only the connection + between L1 caches and L2 caches. The cache block is 64 Byte, + which means 512 TSVs in each TSV unit. The TSV diameter is 20um, + and the side-to-side pitch is 40um (we assume the TSVs are + organized as 128*4 array, there are plenty of space in between). + Then we calculate the joint thermal resistance of the TSVs block + and put it in the flp file. + + This test case consists of a total of 6 layers: ev6_3D_cache_1 (Silicon), ev6_3D_TIM_TSV (Thermal Interface + Material), ev6_3D_cache_2 (Silicon), ev6_3D_TIM_TSV, + ev6_3D_core_layer (Silicon), and ev6_3D_TIM. The layouts of all + layers are shown in ev6_3d.pdf according to their sequence in the + layer configuration file (ev6_3D.lcf). \ No newline at end of file From 66c423edb8302557c039e32f8162a05acbebd20f Mon Sep 17 00:00:00 2001 From: TonyXu <127065003+Capulus123@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:17:10 -0400 Subject: [PATCH 7/8] Add example5.md Add Readme file for example 5 --- examples/example5/example5.md | 57 +++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 examples/example5/example5.md diff --git a/examples/example5/example5.md b/examples/example5/example5.md new file mode 100644 index 0000000..0a7d23a --- /dev/null +++ b/examples/example5/example5.md @@ -0,0 +1,57 @@ +# Example 5 — Microfluidic Cooling (New in 7.0) + +## Purpose +Demonstrates HotSpot’s microchannel liquid cooling model in 3D IC simulations. + +## Inputs +- example.lcf — layer stack definition including fluid layers +- example.ptrace — workload power trace +- microchannel_geometries/horizontal.csv — horizontal channels +- microchannel_geometries/vertical.csv — vertical channels +- example.config — thermal parameters with fluid enabled +- example.materials — includes fluid properties + +## Commands +```bash +../../hotspot -c example.config -p example.ptrace -materials_file example.materials \ + -grid_layer_file example.lcf -model_type grid -detailed_3D on -use_microchannels 1 \ + -grid_steady_file outputs/example.grid.steady -steady_file outputs/example.steady + +cp outputs/example.steady example.init + +../../hotspot -c example.config -p example.ptrace -materials_file example.materials \ + -grid_layer_file example.lcf -model_type grid -detailed_3D on -use_microchannels 1 \ + -init_file example.init -o outputs/example.transient -grid_transient_file outputs/example.grid.ttrace +``` + +## Outputs +- outputs/example.grid.steady — steady-state with microchannels +- outputs/example.steady — steady per-block temps +- outputs/example.transient — transient with microchannels + +## Key Parameters / Flags +- -use_microchannels 1 (enables liquid cooling) +- Requires SuperLU-enabled build + +## Notes / Tips +- Switch between horizontal.csv and vertical.csv to compare geometries +- Fluids taken from example.materials (e.g., water properties) +- Critical new feature in HotSpot 7.0 + +## Extra Notes +horizontal.csv & vertical.csv — Microchannel Geometry Files + +Orientation: +horizontal.csv: channels run side-to-side (x-axis). +vertical.csv: channels run top-to-bottom (y-axis). + +Columns likely include: +Start coordinate (x for horizontal, y for vertical) +End coordinate (x or y) +Fixed position (y for horizontal, x for vertical) +Channel width (depth is assumed uniform or defined elsewhere) + +Usage in HotSpot: +The model overlays these channels onto the thermal grid. +In each grid cell under a microchannel, enhanced heat removal (due to coolant flow) is applied based on fluid properties in the materials file. + From fde4e1eab8a0bd2de663b05d4f899d94b88ad45e Mon Sep 17 00:00:00 2001 From: TonyXu <127065003+Capulus123@users.noreply.github.com> Date: Tue, 30 Sep 2025 22:18:19 -0400 Subject: [PATCH 8/8] Add example6.md Add Readme file for example 6 --- examples/example6/example6.md | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 examples/example6/example6.md diff --git a/examples/example6/example6.md b/examples/example6/example6.md new file mode 100644 index 0000000..b7792b6 --- /dev/null +++ b/examples/example6/example6.md @@ -0,0 +1,41 @@ +# Example 6 — HotFloorplan Floorplanner + +## Purpose +Demonstrates HotSpot’s thermal-aware floorplanning tool to optimize chip layout for area, temperature, and wire length. + +## Inputs +- ev6.desc — floorplan description (blocks, areas, aspect ratios, connectivity) +- avg.p — average power values for blocks +- example.config — annealing, compaction, and objective weights + +## Commands +```bash +../../hotfloorplan -c example.config -f ev6.desc -p avg.p -o output.flp +``` + +## Outputs +- output.flp — optimized floorplan balancing area, temperature, wire length + +## Key Parameters / Flags +- -compact_ratio — removes tiny whitespace (<0.5%) +- Objective function: λA⋅A + λT⋅T + λW⋅W +- Annealing params: P0, Davg, Kmoves, Rcool + +## Notes / Tips +- Floorplans can be visualized with tofig.pl and fig2dev +- Optimized layouts reduce hotspots while preserving wire delay models +- Useful for early-stage thermal-aware design exploration + +## Extra Notes +Aspect ratios default to 1:3 unless the base design requires larger. + +Connectivity section lists 13 major interconnects with equal wire density; weights can be adjusted. + +Includes a first-order wire-delay model (DAC’98) to estimate delays from wire lengths. + +Compaction ratio option (-compact_ratio) removes tiny dead spaces (<0.5% of parent rectangle) to speed simulation, with ~0.46% max area error. + +Objective function: λA⋅A+λT⋅T+λW⋅W with weights chosen to balance units and desired importance. + +Uses simulated annealing; parameters (e.g., P0, Davg, Kmoves, Rcool) are configurable. +