This directory contains one folder per experiment stage and the shared execution entrypoints used across all stages. Runnable stages share the same simulator source trees and differ by sb.cfg.
Most runnable stages (01 to 09) follow this layout:
experiments/<stage-id>/
├── sb.cfg
├── raw-manifest.csv
├── README.md
├── processed/
│ └── bandwidth_latency.csv
└── figures/
├── bandwidth_latency_ramulator.pdf
├── bandwidth_latency_zsim_mem.pdf
├── bandwidth_latency_zsim_core.pdf
└── pngs/
00-system-agnostic is a structural seed/provenance stage and does not follow the full runnable layout (for example, it has no sb.cfg sweep config).
The committed outputs follow the three-view terminology used in the paper:
bandwidth_latency_ramulator.*: memory simulator viewbandwidth_latency_zsim_mem.*: memory interface viewbandwidth_latency_zsim_core.*: application view
The raw-manifest.csv files list the externally hosted raw artifact for each stage.
The following files live directly under experiments/ and are shared across all stages:
| File | Purpose |
|---|---|
runner.sh |
Main local execution loop. Copies sb.cfg into each measurment_*/ directory, adjusts shared-source paths, and runs the sweep sequentially. Invoke as ./experiments/runner.sh <stage-id> from the repository root. |
run-one.sh |
Minimal per-run launcher copied into each generated measurment_*/ directory by runner.sh. It is the single-run command body for local execution and can also be wrapped by a generic batch scheduler if desired. |
plot.py |
Post-processing script. Reads raw outputs, writes processed/bandwidth_latency.csv, generates figures/, and also writes PNG previews under figures/pngs/. If the memory simulator view is unavailable, it skips that plot instead of failing. By default it writes into test-output/<stage-or-config-name>/, not into the committed experiment folder. |
Runs the full bandwidth-latency sweep for one stage. Each measurement point is materialized as a measurment_<rd>_<pause>/ directory inside <stage>/test-raw/.
# From the repository root (environment must be sourced first)
source .zsim-env
./experiments/runner.sh 01-baselineAfter the run, the layout is:
experiments/01-baseline/test-raw/
├── measurment_0_10000/
│ ├── sb.cfg
│ ├── zsim.out
│ └── ...
├── measurment_10_10000/
└── ...
test-raw/ is gitignored; it never overwrites the committed paper results.
Before generating new run directories, runner.sh removes any existing test-raw/measurment_* directories for the selected stage.
00-system-agnostic is not intended for this shared runner flow. Use stages 01 to 10 with runner.sh.
08-portability-ramulator2 has one extra requirement: ZSim must be rebuilt with Ramulator2-only linkage (unset RAMULATORPATH before rebuilding). runner.sh checks this and prompts before continuing in mixed environments.
Minimal single-point launcher. runner.sh invokes it automatically, but you can also call it manually for a prepared run directory:
cd ./experiments/01-baseline/test-raw/measurment_50_1000
bash run-one.shPost-processes a directory of measurment_* subdirs into a CSV and figures. Pass the test-raw/ directory as the positional argument:
./experiments/plot.py experiments/01-baseline/test-raw \
--config-dir experiments/01-baselineOutputs by default to:
test-output/01-baseline/
├── processed/bandwidth_latency.csv
└── figures/
├── bandwidth_latency_zsim_core.pdf
├── bandwidth_latency_zsim_mem.pdf
├── bandwidth_latency_ramulator.pdf # only if memory-simulator stats present
└── pngs/
The committed paper figures in experiments/<stage>/figures/ are not touched. To regenerate them in-place:
./experiments/plot.py experiments/01-baseline/test-raw \
--config-dir experiments/01-baseline \
--output-dir experiments/01-baselineUse compare-results.sh to quantify the delta between two stages from their committed (or freshly generated) processed/bandwidth_latency.csv:
./scripts/compare-results.sh 01-baseline 04-model-correctYou can also point it at a freshly generated CSV:
./scripts/compare-results.sh \
test-output/01-baseline/processed/bandwidth_latency.csv \
test-output/04-model-correct/processed/bandwidth_latency.csvThis section is stage-oriented, not paper-subfigure-oriented. Each populated stage shows every committed view that exists for that experiment. The paper may use only a subset of these views in a given figure.
Paper figure: Figure 2
Raw manifest: 01-baseline/raw-manifest.csv
| Memory simulator view | Memory interface view | Application view |
|---|---|---|
![]() |
![]() |
![]() |
Paper figure: Figure 3
Raw manifest: 02-clock-uncommented/raw-manifest.csv
| Memory simulator view | Memory interface view | Application view |
|---|---|---|
![]() |
![]() |
![]() |
Paper figure: Figure 4
Raw manifest: 03-clock-correct/raw-manifest.csv
| Memory simulator view | Memory interface view | Application view |
|---|---|---|
![]() |
![]() |
![]() |
Paper figure: Figure 5
Raw manifest: 04-model-correct/raw-manifest.csv
| Memory simulator view | Memory interface view | Application view |
|---|---|---|
![]() |
![]() |
![]() |
Paper figure: Figure 6a
Raw manifest: 05-address-mapping/raw-manifest.csv
| Memory simulator view | Memory interface view | Application view |
|---|---|---|
![]() |
![]() |
![]() |
Paper figure: Figure 6b
Raw manifest: 06-noc/raw-manifest.csv
| Memory simulator view | Memory interface view | Application view |
|---|---|---|
![]() |
![]() |
![]() |
Paper figure: Figure 6c
Raw manifest: 07-prefetcher/raw-manifest.csv
| Memory simulator view | Memory interface view | Application view |
|---|---|---|
![]() |
![]() |
![]() |
Paper figure: Figure 7a
Committed views: memory interface and application
Raw manifest: 08-portability-ramulator2/raw-manifest.csv
| Memory interface view | Application view |
|---|---|
![]() |
![]() |
Paper figure: Figure 7b
Committed views: memory interface and application
Raw manifest: 09-portability-dramsim3/raw-manifest.csv
| Memory interface view | Application view |
|---|---|
![]() |
![]() |
Paper figure: extension portability stage (DRAMSys)
Committed views: config stage only (no committed figures yet)
Raw manifest: 10-portability-dramsys/raw-manifest.csv
























