Model or dataset
circuitnet/CircuitNet avatar
circuitnet/CircuitNet

CircuitNet: A Dataset Repository for Congestion, IR Drop, DRC and Net Delay Prediction

CircuitNet: An Open-Source Dataset for Machine Learning Applications in Electronic Design Automation (EDA)

508 stars84 forksPythonBSD-3-Clause

At a glance

What is it?
CircuitNet is a Python repository that hosts data preparation scripts, feature extraction tools and reference training code for three generations of an open EDA dataset. It is a starting point for reproducing published baselines, not a library you import into a production flow.
Who is it for?
Adopt CircuitNet if you need a public, citable benchmark for congestion, IR drop, DRC or net delay models and you are willing to point utils/configs.py at your own copy of the data. Do not adopt it if you need a maintained library with versioned releases and a stable API; the repository has no releases and its interfaces are task flags plus a config file.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 122 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap CircuitNet fills: a shared, citable EDA benchmark

Machine learning work in electronic design automation has a reproducibility problem that is not about code. Congestion maps, IR drop maps and DRC violation labels come out of commercial or foundry-restricted tool flows, so two papers reporting accuracy on the same task are often measuring on private data. CircuitNet addresses exactly that: it publishes design features and labels as a dataset, alongside the code needed to consume them. The topics listed on the repository (congestion-prediction, drc-violation, ir-drop, machine-learning) map one to one onto the tasks the repository ships training and test entry points for. The intended user is a researcher or graduate student who needs a number comparable to the TCAD and ICLR papers cited in the README, or an engineer prototyping a model who wants realistic feature layouts before touching proprietary data. It is not aimed at someone who wants a drop-in predictor for a live design flow.

Three dataset generations and what changed between them

The changelog is the most informative part of the repository, because the dataset itself is versioned more aggressively than the code. The first release in August 2022 was renamed CircuitNet-N28 when CircuitNet-N14 arrived in June 2023, and N14 added timing prediction alongside congestion and IR drop. CircuitNet-N45 arrived on 2026/05/17 with an N45 PDK, and the README points it at a different Hugging Face organisation (SKLP-EDA-LAB) than the N14 archive (CircuitNet). N28 is still distributed through Google Drive and Baidu Netdisk links, which means three generations with three different hosting arrangements. That matters operationally: the download page, not the repository, is the source of truth for what you get, and the storage backends differ in reliability and in whether they can be scripted. If you are picking a version today, N45 is the current one and N14 is described as currently maintained on Hugging Face. N28 is the version tied to the original TCAD paper.

Feature extraction is the part you can actually reuse

The July 2023 addition of feature extraction code is the piece with the widest applicability, because it does not depend on the released dataset at all. The README states that users can implement self-defined features with the released LEF/DEF, or extract features from LEF/DEF obtained from other sources. That turns the repository from a fixed benchmark into a feature-generation toolkit, and it is the reason to look at this project even if your designs are not from the CircuitNet set. The LEF/DEF themselves were updated in March 2023 to include sanitized technology information, with each tarfile holding 500 DEF files that can be decompressed separately, plus example DEF files. The separate feature_extraction/README.md is where the actual invocation details live; the top-level README does not restate them, so budget time to read that file before assuming the pipeline is turnkey.

Running a baseline: config file, task flags, and two commands

The training and test interface is deliberately narrow. Before anything runs you edit utils/configs.py to set your file paths and hyper-parameters. After that, testing is python test.py --task congestion_gpdl --pretrained PRETRAINED_WEIGHTS_PATH, and the same script takes --task drc_routenet or --task irdrop_mavi with --save_path work_dir/<task>/ and optionally --plot_roc. Training swaps test.py for train.py with the same --task values and a --save_path. Net delay is a separate path: it needs DGL, which is not in requirements.txt, and it needs graphs built first with python build_graph.py --data_path DATA_PATH --save_path ./graph, where DATA_PATH is the parent directory of the timing features (nodes, net_edges and pin_positions). Training and testing then run through train.py with --checkpoint CHECKPOINT_NAME, and testing adds --test_iter TEST_ITERATION matching a saved checkpoint filename. Note that the README writes the config path as utils/config.py in the sentence and links to utils/configs.py; the link is the one to trust. The environment the authors report is Python 3.9 with PyTorch 1.11, and they state that other versions should work but are not tested.

Where the repository is thin, and where it has broken

Two things stand out. First, there are no releases. The changelog is the only versioning signal, and there is nothing to pin against. Second, the data itself has had defects. The November 2024 entry records that LEF/DEF, netlist and graph information were re-uploaded to fix issue #38, and a known issue dated 2024/12/16 states that some instance names in the DEF are wrong. A fixing script, feature_extraction/fix_module_name_241216.py, is provided and can be applied in situ. That is a reasonable response, but it means any pipeline you build on the DEF files should assume the possibility of a repair step rather than treating the archive as immutable ground truth. The other limitation is scope: the repository ships baseline implementations for the tasks it names and nothing else. There is no packaging, no test suite described in the README, and no API surface beyond command-line flags and a config module. If your requirement is a component you can vendor into a larger system with semantic versioning, this is the wrong shape of project.

How it differs from a general graph or feature toolkit

The obvious comparison point is DGL, which the README names as a dependency for net delay prediction only. The difference in approach is worth being precise about. DGL is a graph deep learning library: it gives you message passing primitives and expects you to bring your own graph data and your own model. CircuitNet brings the graph data, a script (build_graph.py) that assembles nodes, net_edges and pin_positions into graphs, and a training loop already wired to that format. The cost of that convenience is that the graph schema is fixed by the dataset. If your net delay problem has a different node or edge definition, you are working against the released format rather than with a general abstraction. Similarly, the congestion, DRC and IR drop tasks are tied to the feature layout produced by the feature extraction scripts. You get reproducibility in exchange for a narrower design space.

Licence, maintenance and what upgrading between versions costs

The repository is BSD 3-Clause, per the LICENSE file and the README. That covers the code. The README does not state a licence for the dataset archives themselves, and the N28, N14 and N45 downloads live on three different hosts (Google Drive, Baidu Netdisk, and two Hugging Face organisations). Whether the dataset terms match the code licence is something to check at the download page rather than assume, and this is not legal advice. On maintenance: the last push recorded is 2026-05-17, the same date as the N45 release, so the project is active. The upgrade cost between generations is not zero. Moving from N28 to N14 changes the task set, since N14 added timing prediction. Moving to N45 means a new PDK and a new hosting location. The code side is comparatively stable: the task flags congestion_gpdl, drc_routenet, irdrop_mavi and the train.py/test.py split have not been renamed in the changelog across those releases, so a script written against the command-line interface is likely to survive a dataset upgrade, while anything that hardcodes paths or feature dimensions will not.

Editorial conclusion

Adopt CircuitNet if you need a public, citable benchmark for congestion, IR drop, DRC or net delay models and you are willing to point utils/configs.py at your own copy of the data. Do not adopt it if you need a maintained library with versioned releases and a stable API; the repository has no releases and its interfaces are task flags plus a config file. Before committing, download the N45 or N14 archive from Hugging Face, run the fix_module_name_241216.py script against the DEF files you receive, and confirm that the task flag you intend to use matches a pretrained checkpoint you can actually load.

Official sources

  1. circuitnet/CircuitNet on GitHub
  2. Issues
  3. License: BSD-3-Clause
  4. Project website
  5. README
Community notes

Community notes