Use when hardening a MICRO paper's results for re-derivation — pinning simulator commits and configs, recording workload trace provenance and SimPoint recipes, versioning power/area models, capturing RTL toolchain state, and writing the run manifests that later survive MICRO's post-acceptance artifact evaluation.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add brycewang-stanford/Awesome-Journal-Skills --skill micro-reproducibility --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Micro Reproducibility?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/brycewang-stanford-micro-reproducibility)More formats (shields.io, HTML) on the badges page.
---
name: micro-reproducibility
description: Use when hardening a MICRO paper's results for re-derivation — pinning simulator commits and configs, recording workload trace provenance and SimPoint recipes, versioning power/area models, capturing RTL toolchain state, and writing the run manifests that later survive MICRO's post-acceptance artifact evaluation.
---
# MICRO Reproducibility
In microarchitecture research the "experiment" is usually a software artifact
pretending to be hardware. That makes results *perfectly* reproducible in
principle — and silently unreproducible in practice, because a simulator commit, a
config diff, or a trace-generation flag changed between the headline run and the
camera-ready. This skill installs the record-keeping that prevents that.
## What must be pinned, by evidence type
| Evidence | Pin these or the number is unrecoverable |
|---|---|
| Cycle-level simulation | Simulator name + exact commit hash; full config files (not "8-wide OoO" prose); patch set applied; host compiler for the simulator build |
| Workload traces | Source binary + compiler flags; trace tool + version; SimPoint interval size, K, and seed; warmup instructions per region |
| Power / area estimates | McPAT/CACTI/Accelergy version; technology node; the XML/cfg input actually fed in; any manual scaling factors |
| RTL results | HDL commit; synthesis tool + version; target library/PDK; constraints file; which corners were run |
| FPGA / silicon | Board/chip stepping; bitstream hash or firmware; frequency; measurement method for power (rail vs counter model) |
| DRAM behavior | Ramulator/DRAMsim3 version + timing config (device datasheet parameters) |
The rule of thumb: **a result is reproducible when a stranger can regenerate the
exact bar in Fig. 3 from the manifest alone**, without asking you anything.
## The run manifest
Emit one manifest per experiment batch, generated by the launch script — never
written by hand after the fact:
```yaml
# results/2026-04-02_headline/manifest.yaml
simulator: {name: champsim, commit: 3fa9c21, patches: [prefetch-fix.diff]}
config: {file: configs/8w_ooo_baseline.json, sha256: 9be1...}
mechanism: {file: configs/ours_32kb.json, knobs: {table_entries: 2048, tag_bits: 12}}
workloads: {suite: spec2017_rate1, traces: traces/v3/, simpoints: k30_int200M_seed7,
warmup_M: 200, detailed_M: 1000}
power: {tool: mcpat, version: "1.3", node_nm: 22, input: mcpat/ours.xml}
host: {machine: lab-node-14, compiler: gcc-13.2}
outputs: {raw: stats/, figures: fig3_headline.pdf, script: plot_headline.py}
```
Commit the manifest with the raw stats files. Figures are regenerated from stats by
a script named in the manifest — a figure that cannot be regenerated does not go in
the paper.
## Disclosure lines the paper itself owes
The methodology section (see `micro-writing-style`, ~1 page) must state, in text:
- Simulator and version, with your modifications summarized honestly ("we added a
cycle-accurate model of X; the interconnect remains the default model").
- The full baseline configuration in a table (pipeline width, ROB, caches with
latencies, predictor, prefetchers, DRAM timing).
- Sampling recipe: how regions were chosen, warmup, and measured instruction counts.
- Power/area model, node, and the sentence "these are model estimates" — the
community's tools (CACTI, McPAT — both MICRO papers themselves) are respected but
known to be approximations, and pretending otherwise reads as naivety.
## Determinism and drift checks
- Two identical launches must produce bit-identical stats; if the simulator has any
nondeterminism (thread interleaving in parallel sims), pin it or report run count
and spread.
- Re-run the baseline after every simulator patch — a patch that changes baseline
IPC by 0.5% invalidates every relative number already collected.
- Keep a `results-ledger.md`: date, manifest path, headline geomean, what changed.
Rebuttal season (June) will ask "what config produced Fig. 7?" — from three
months earlier; the ledger answers in minutes, memory does not.
## Validating the instrument itself
Reproducibility of a wrong number is worthless; record the evidence that the
simulator models what the paper says it models:
- **Cross-check the baseline against published behavior** (see
`micro-experiments`): store the comparison table — suite, metric, published
range, your value — in the repo, not just in someone's memory.
- **Unit-test the mechanism model.** Hand-construct access sequences with known
correct outcomes (a burst that must train the table, a pattern that must not)
and assert the simulator's counters match. These micro-tests are the first
thing an AE evaluator can run and the best evidence the model is not a stats
bug.
- **Record known fidelity gaps** in a `LIMITS.md`: default interconnect model,
simplified TLB, unmodeled prefetcher interactions. The paper's claims must
stay inside these limits; writing them down keeps deadline-week edits honest.
## Anonymity interaction (submission phase)
MICRO 2026 requires artifact links to be fully anonymized or removed. Before the
April upload, sweep the repo you intend to link: git author fields, hostnames in
manifests (`lab-node-14` is fine; `patt-lab-utexas-14` is not), cluster paths,
funding strings in READMEs. The manifest discipline above makes this sweep
mechanical rather than archaeological.
## Storage economics of keeping everything
Raw cycle-level stats for a full paper (dozens of configs × dozens of workloads ×
sweeps) usually fit in single-digit gigabytes — trivially archivable, and the
cheapest insurance in research. Policy: keep **all** raw stats files, forever,
compressed; regenerate figures on demand. Delete only simulator *checkpoints* and
intermediate trace files that the recipes can rebuild. When a reviewer asks in
June about a bar from a January run, or AE asks in August, or a follow-up paper
asks in two years, the manifest + stats pair answers; the alternative is
re-simulating weeks of compute under deadline pressure.
## Output format
```text
[Pinning audit] per evidence type: pinned / partially pinned / loose (list)
[Manifest coverage] experiments with manifests: N/M
[Figure regen] all paper figures scripted from raw stats: yes / no (list unscripted)
[Methodology text] simulator+mods / baseline table / sampling / model-estimate
disclosure: present-absent each
[Determinism] identical-rerun check passed: yes / no / untested
[Ledger] results-ledger current through: <date>
[Anonymity sweep] repo clean for anonymized linking: yes / issues listed
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!