This repository extends the official C++ implementation of CFIRSTNET: Comprehensive Features for Static IR Drop Estimation with Neural Network. The original "Comprehensive Features" proposed in the paper have been modified to support not only Nangate45 but also sky130hd, asap7, and custom design data. We express our gratitude to the original authors for sharing their excellent research.
This project enhances the CFIRSTNET implementation to support IR Drop Estimation across multiple process technologies and custom designs. Key modifications include:
- Added support for sky130hd and asap7 process presets
- Custom metal layer and orientation configuration
- Automatic orientation detection
- Optimized channel configuration (M=3, generating 11 channels)
Note: The code was modified with assistance from ChatGPT 5 Pro and compared with the original implementation using vis.ipynb. Please be aware that unexpected errors may occur, and caution is advised.
This project adheres to the Apache License 2.0, as specified in the original CFIRSTNET repository. See the LICENSE file for details.
Note: The modified code also follows the Apache License 2.0, allowing commercial use, provided the license conditions are met.
- Compiler: g++-11 or later (with C++17 support)
- Library: Boost (specifically
boost_iostreams) - Operating System: Linux (Ubuntu 20.04 or later recommended)
- Optional:
libstdc++fs(required in some environments)
To install Boost on Ubuntu, run:
sudo apt update
sudo apt install libboost-all-devBuild the project on Linux using the following command:
g++ -O3 -std=c++17 -Wall -Wextra -pedantic main.cpp -o irdump -lboost_iostreamsIf you encounter filesystem-related errors, try:
g++ -O3 -std=c++17 -Wall -Wextra -pedantic main.cpp -o irdump -lboost_iostreams -lstdc++fsKnown Issues:
- Ensure
libstdc++fsis available if filesystem errors occur (check g++ version). - Verify that Boost is properly installed (see installation instructions above).
Run the program with the following example command:
./irdump /your_sp_path/sample.sp 384 384 --out-dir ./dump- sky130 Preset: Uses metal layers
met1,met4,met5(V, H, V) and saves channel data to CSV./irdump /path/to/file.sp 384 384 --preset sky130 --out-dir ./dump
- asap7 Preset: Uses metal layers
m5,m8,m9,m10(H, V, H, V) with automatic orientation detection./irdump /path/to/asap7.sp.gz 384 384 --preset asap7 --auto-ori --print-ori
- nangate45 Preset: Uses metal layers
m1,m4,m7,m8,m9(V, H, V, H, V)./irdump /path/to/n45.sp.gz 256 256 --preset nangate45
- Custom Configuration: Specify custom metal layers and orientations (H/V or 2/1)
./irdump my.sp 512 512 --preset custom --metals m1,m3,m5 --ori V,H,V --out-dir ./dump --print-ori
- sky130: M=3 (Total 11 channels)
- 0–4: Hypothetical IR Drop (HIRD, 5 channels)
- 5–7: Resistive Distance (RD, 3 channels)
- 8–10: Wire Resistance (WR, 3 channels)
- nangate45, asap7: M=5 (Total 23 channels)
- 0–8: Hypothetical IR Drop (HIRD, 9 channels)
- 9–15: Resistive Distance (RD, 7 channels)
- 16–22: Wire Resistance (WR, 7 channels)
- Automatic Orientation Detection: Use the
--auto-oriflag to automatically detect metal layer orientations. - Orientation Output: Add
--print-orito display the orientation settings. - Output Directory: Results are saved to the directory specified by
--out-dir. - Comparison Analysis: Refer to
vis.ipynbto compare the original and modified implementations.
- While the modified code has been tested, unexpected errors may occur in certain environments. Please report any issues.
- Ensure input files (e.g.,
.sp,.sp.gz) are correctly formatted. - For details on the
.spfile format and content, please refer to the BeGAN paper or the ICCAD-2023 contest C invitation paper.