Flow: Download -> Setup -> Run
(There is no "build" step here. You are pulling pre-built artifacts.)
openroad_env.sifOpenROAD-flow-scripts.tgz -> $HOME/OpenROAD-flow-scriptsArtifacts are stored in Docker Hub as OCI objects and pulled via ORAS.
orasapptainertarDownloads the SIF image and the flow-scripts tarball from Docker Hub (OCI registry).
oras pull docker.io/abkgroupucsd/audopeda:openroad_env_sif
oras pull docker.io/abkgroupucsd/audopeda:flowscripts_tgz
Expected files:
openroad_env.sifOpenROAD-flow-scripts.tgzExtracts the scripts and places them under $HOME.
tar -xzf OpenROAD-flow-scripts.tgz
mv OpenROAD-flow-scripts "$HOME/OpenROAD-flow-scripts"
Note: You don’t have to place it under $HOME. It can be located anywhere as long as it’s in a path that Apptainer can access.
Starts an interactive shell inside the Apptainer environment.
apptainer shell openroad_env.sif
Note: If you are not running experiments in your home directory, please use the --bind option to mount the desired location instead.
Run the experiments from the Flow Scripts directory inside the Apptainer shell.
cd "$HOME/OpenROAD-flow-scripts/flow"
# ECP improvement experiment
./batch_run.sh --for-ecp
# rWL improvement experiment
./batch_run.sh --for-rwl
# Power improvement experiment
./batch_run.sh --for-pwr
For denoising, run one target (--for-ecp or --for-rwl) across multiple clock-noise points, then aggregate.
# Example: rWL denoising
./batch_run.sh --for-rwl -clock_noise -2,-1,0,1,2
# Example: ECP denoising
./batch_run.sh --for-ecp -clock_noise -2,-1,0,1,2
Run these commands inside the Apptainer shell after the experiments finish.
cd "$HOME/OpenROAD-flow-scripts"
# Parse design result directories under flow/ and extract metrics into a Markdown table
python3 collect_metrics.py
# Generate denoised summary (best/median/worst over noise points)
python3 collect_metrics.py --denoise --denoised-output denoised_metrics.md
# Compare experiments using the generated Markdown metrics file
python3 compare_metrics.py -m "metrics_YYYYMMDD_HHMMSS.md"
# Compare denoised metrics
python3 compare_metrics.py -m "denoised_metrics.md" --all-summaries
In denoised_metrics.md, runs from each noise sweep (-2/-1/0/1/2 ps) are first ordered by one target metric for the same group.
for-ecp_noise, runs are ordered by Eff_Clock (smaller is better).for-rwl_noise, runs are ordered by Routed_WL (smaller is better).After ordering, the script picks:
Then all Best/Median/Worst values (Count/Area/Power/Routed_WL/Eff_Clock/Slack) are copied from those selected runs.
Location: $HOME/OpenROAD-flow-scripts/flow/
(Descriptions below refer to files in this directory.)
batch_run.sh — Batch orchestratorRuns many design/PDK/noise/selector combinations in parallel using a simple queue-based scheduler.
run.sh — Single-run executorExecutes the full flow (synthesis -> place -> route -> reports) for a single design run.
Location: $HOME/OpenROAD-flow-scripts/
collect_metrics.py — Metrics collectorScans OpenROAD run directories (e.g., results*/logs/...) and extracts key metrics from report JSONs, routing JSONs, SDCs, and logs
(area, power, slack, clocks, routed wirelength, etc.).
Writes:
metrics_YYYYMMDD_HHMMSS.mddenoised_metrics.md (when --denoise is used)compare_metrics.py — Metrics comparator (Excel)Reads a metrics_*.md file or denoised_metrics.md and generates Excel comparisons across variants
(e.g., ref vs ecp / rwl / pwr).
Outputs:
metrics_comparisons.xlsxContent type
Unrecognized
Digest
sha256:518dfc96b…
Size
7.3 GB
Last updated
8 months ago
docker pull abkgroupucsd/audopeda:flowscripts_tgz