Skip to content

ieee-ceda-datc/Buffering-Benchmarks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Buffering-Benchmarks

Overview

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.

Data Collection Workflow

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.

Buffering Benchmark Workflow

Benchmark Contents

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.

Cell Features

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)

Designs

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

Scripts

Supporting scripts are provided to collect buffering benchmarks from additional designs.

Usage

  1. 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)"
  1. Update file paths in scripts/design_setup.tcl and scripts/lib_setup.tcl to point to your actual file directory

  2. Run the workflow to collect buffering benchmarks

source run.sh

Reference

For 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. 

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •