Intro
CircuitNet
CircuitNet is an open-source dataset dedicated to machine learning (ML) applications in electronic design automation (EDA). We have collected more than 20K samples from versatile runs of commercial design tools based on open-source designs with various features for multiple ML for EDA applications.
We now have 3 variations of datasets, CircuitNet-N28, CircuitNet-N14 and ISPD2015. They are all collected from runs of commercial design tools, but they are based on different designs and technology.
CircuitNet-N28 is based on RISC-V designs and 28nm planar technology, and now it provides the most comprehensive support for all tasks.
CircuitNet-N14 is the advanced version of CircuitNet-N28. It includes more designs other than RISC-V, including GPU and ML accelerator, and based on 14nm FinFET technology. This dataset only supports congestion prediction, IR drop prediction and net delay prediction, but will extends to DRC prediction in the future.
CircuitNet-ISPD15 is based on the ISPD2015 contest benchmark. Due to the original purpose of the benchmark, this dataset only supports congestion prediction, but will extends to DRC prediction in the future.
Congestion | DRC | IR drop | Net Delay | |
---|---|---|---|---|
CircuitNet-N28 | yes | yes | yes | yes |
CircuitNet-N14 | yes | no | yes | yes |
CircuitNet-ISPD20 | yes | no | N/A | N/A |
They share a similar directory structure:
.
├── routability_features
| ├── cell_density
| └── congestion
| | ├── congestion_early_global_routing
| | | ├── overflow_based
| | | | ├── congestion_eGR_horizontal_overflow
| | | | └── congestion_eGR_vertical_overflow
| | | └── utilization_based
| | | ├── congestion_eGR_horizontal_util
| | | └── congestion_eGR_vertical_util
| | └── congestion_global_routing
| | ├── overflow_based
| | | ├── congestion_GR_horizontal_overflow
| | | └── congestion_GR_vertical_overflow
| | └── utilization_based
| | ├── congestion_GR_horizontal_util
| | └── congestion_GR_vertical_util
| ├── DRC
| | ├── DRC_all
| | └── DRC_seperated
| ├── macro_region
| └── RUDY
| ├── RUDY
| ├── RUDY_long
| ├── RUDY_short
| ├── RUDY_pin
| └── RUDY_pin_long
├── IR_drop_features
| ├── power_i
| ├── power_s
| ├── power_sca
| ├── power_all
| ├── power_t
| └── IR_drop
├── graph_features
| ├── graph_information
| └── instance_placement
├── timing_features
| ├── pin_positions
| └── timing_features
├── raw_data
| ├── LEF&DEF
| └── instance_placement
└── script
├── decompress_routability.py
├── decompress_IR_drop.py
└── generate_training_set.py
We separate the features and store them in different directories to enable custom applications. Thus they need to be preprocessed and combined in certain arrangement for training. Our scripts can preprocess and combine different features for training and testing. But we also encourage to implement different preprocessing methods and use different combinations of features.
If you meet any problems, feel free to open an issue in our repository or contact us by email.