This repository provides buffering benchmarks collected from OpenROAD Resizer to support machine learning–based buffering innovations.
The data captures the entire buffer insertion process, including original netlists, intermediate states, and final buffered results. These benchmarks enable evaluation, training, and validation of ML-based buffering strategies.
During timing-driven global placement in OpenROAD, when the placement overflow reaches a threshold in a predefined list (default overflow_list = {0.7, 0.65, 0.6, 0.55, 0.5, 0.45, 0.4, 0.35, 0.3, 0.25, 0.2, 0.15, 0.1}), the OpenSTA timing engine is invoked to identify problematic nets with ERC violations and long nets.
These nets are then passed to OpenROAD Resizer, which performs buffer insertion. At each stage, we extract the buffered nets (buffer-embedded trees) and their associated features to construct the benchmark.
The benchmark dataset contains three types of files:
-
buffered_trees_pre_${iter}: Original netlists and cell features before any buffer insertion. Represents the starting point of buffering.
-
buffered_trees_mid_${iter}: Recored the trajectory of OpenROAD Resizer's buffer insertion process.
-
buffered_trees_post_${iter}: Final buffered netlists and cell features after Resizer completes buffering.
Each benchmark file includes detailed attributes:
- Cell type: driver, sink, or buffer
- Pin name
- Coordinates of cells (μm)
- Input slew (ps) of sinks (-1 for drivers)
- Output slew (ps) of drivers (-1 for sinks)
- Input capacitance (fF) of sinks (-1 for drivers)
- Output load capacitance (fF) of drivers (-1 for sinks)
- Maximum capacitance of the driver (-1 for sinks)
- Resistance of the driver (-1 for sinks)
- Buffer type (e.g., BUF_X2)
- Buffer reason (why a buffer was inserted)
The benchmark currently includes the following designs in NanGate45 and ASAP7:
- ibex
- jpeg
- ariane
- BlackParrot
These designs are publicly available in the OpenROAD and MacroPlacement GitHub repositories.
Download the complete set of benchmarks: ML Buffering Benchmarks
Supporting scripts are provided to collect buffering benchmarks from additional designs.
- Build OpenROAD using this version: OpenROAD (commit hash: f49af94)
git clone --recursive -branch pdn-erc https://github.com/ytliu8464/OpenROAD.git
cd OpenROAD
mkdir build && cd build
cmake ..
make -j "$(nproc)"-
Update file paths in scripts/design_setup.tcl and scripts/lib_setup.tcl to point to your actual file directory
-
Run the workflow to collect buffering benchmarks
source run.shFor more details on applying these benchmarks to ML-based buffering models, please refer to:
A. B. Kahng, Y. Liu and Z. Wang,
"Recursive Learning-Based Virtual Buffering for Analytical Global Placement",
Proc. ACM/IEEE Intl. Symp. on Machine Learning for CAD (MLCAD), 2025. 