A comprehensive collection of parameterized and configurable RTL modules written in Verilog, organized by category for EDA research and development. This repository contains 137 verified modules across 24 categories with complete testbenches and documentation.
- Installation
- Quick Start
- Dataset Overview
- Directory Structure
- Dataset Analysis Tools
- Contributing
- Technical Information
- Citation
- License
- Python 3.6 or higher
- Icarus Verilog (iverilog) 12.0 or higher
- GTKWave (for waveform viewing)
- Make
- Verilator 5.0 or higher
- Clone the repository:
git clone https://github.com/SJTU-YONGFU-RESEARCH-GRP/core.git
cd core- Install Verilator (if not already installed):
Using package manager:
# For Ubuntu/Debian
sudo apt-get install verilator
# For CentOS/RHEL
sudo yum install verilator
# For macOS
brew install verilator
# For Windows (using WSL)
sudo apt-get install verilatorOr install from GitHub source (recommended for latest version):
# Install build dependencies
# For Ubuntu/Debian
sudo apt-get install git make autoconf g++ flex bison
# For CentOS/RHEL
sudo yum install git make autoconf gcc-c++ flex bison
# For macOS
brew install git make autoconf flex bison
# Clone and build Verilator
git clone https://github.com/verilator/verilator.git
cd verilator
git checkout stable # or 'git checkout master' for latest development version
autoconf
./configure
make
sudo make install- Install Yosys (if not already installed):
Using package manager:
# For Ubuntu/Debian
sudo apt-get install yosys
# For CentOS/RHEL
yum install epel-release
yum install yosys
# For macOS
brew install yosys
# For Windows (using WSL)
sudo apt-get install yosysOr install from GitHub source (recommended for latest version):
# Install build dependencies
# For Ubuntu/Debian
sudo apt-get install git build-essential clang bison flex libreadline-dev gawk tcl-dev libffi-dev graphviz xdot pkg-config python3 python3-pip libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev
# For CentOS/RHEL
yum install git gcc clang bison flex readline-devel gawk tcl-devel libffi-devel graphviz xdot pkgconfig python3 python3-pip boost-devel zlib-devel
# For macOS
brew install git clang bison flex readline gawk tcl-tk libffi graphviz xdot pkg-config python3 boost zlib
# Clone and build Yosys
git clone https://github.com/YosysHQ/yosys.git
cd yosys
make
sudo make install- Install Python dependencies:
pip install -r requirements.txtThe Python dependencies include:
typing-extensions>=0.4.6- For enhanced type hints supportcolorama>=0.4.6- For colored terminal outputtqdm>=4.65.0- For progress barsrich>=13.0.0- For rich terminal formatting and loggingmatplotlib- For generating plots and visualizationsseaborn- For statistical data visualization
After installation, you can immediately start using the modules:
- Browse the dataset: Explore modules in the
libraries/directory - Run verification: Run
make verify_all, thenpython3 scripts/report.pyto generate a verification report - Analyze the dataset: Use
python3 scripts/analyze_verilog_dataset.pyfor detailed analysis - View documentation: Check category-specific docs in the
docs/directory
To ensure consistent results across machines and CI:
- Python dependencies are pinned in
requirements.txt. - CI runs inside a pinned OSS CAD Suite container image.
Local (with Docker/Podman):
docker run --rm -v "$PWD":/workspace -w /workspace ghcr.io/yosyshq/oss-cad-suite:2024-06-01 \
bash -lc "python -m pip install --upgrade pip && pip install -r requirements.txt && make verify_all && python3 scripts/report.py && python3 scripts/analyze_verilog_dataset.py --synth --output DATASET.md --loglevel INFO && python3 scripts/verilog_standard_report.py --output VERILOG_STANDARDS.md --loglevel INFO"Make targets:
make verify_allβ build and run all testbenchesmake reportβ generateREPORT.mdmake analyzeβ generateDATASET.mdmake standardsβ generateVERILOG_STANDARDS.md
/ libraries # Verilog RTL modules
/ docs # Category documentation
report.py # Verification report generator
REPORT.md # Latest verification report
LICENSE # Licensing information
README.md # This file
Generate a comprehensive report of the verification results:
make verify_all
python3 scripts/report.pyThis script scans RTL files and their testbenches, executes tests using make, and produces REPORT.md.
π View the latest report: REPORT.md
Analyze the Verilog dataset and generate a comprehensive report with synthesis metrics:
python3 scripts/analyze_verilog_dataset.py --synth --output my_report.md --loglevel INFOWhat it does:
- Analyzes all Verilog files in
libraries/for code metrics (lines, parameters, ports, patterns, etc.) - Optionally runs Yosys synthesis to collect hardware metrics (cell count, wire count, etc.)
- Generates plots and a markdown report summarizing the dataset's structure, complexity, and synthesis statistics
π View the latest analysis: DATASET.md
Generate a detailed standards compliance report:
python3 scripts/verilog_standard_report.py --output VERILOG_STANDARDS.md --loglevel INFOAnalysis includes:
- Standards compliance (Verilog-1995 through SystemVerilog-2017)
- Feature usage statistics
- File-by-file analysis
- Visual charts showing standards distribution
π View the standards report: VERILOG_STANDARDS.md
We welcome and encourage community contributions to expand the CORE dataset! Your contributions help make this repository a more comprehensive resource for EDA research and development.
- Found a bug or issue? Create an issue on GitHub
- Include detailed information about the problem and steps to reproduce it
- Suggest improvements or request new module categories
We're always looking for new high-quality Verilog RTL modules to add to the dataset. Here's how you can contribute:
What we're looking for:
- Well-documented, parameterized Verilog modules
- Comprehensive testbenches (preferably in C++ using Verilator)
- Modules that follow good RTL design practices
- Coverage of new design patterns or categories not currently in the dataset
Contribution Process:
- Fork the repository and create a new branch for your contribution
- Add your Verilog module(s) to the appropriate category in
libraries/ - Include comprehensive testbenches following our naming convention (
tb_*.cpp) - Add documentation explaining the module's functionality and parameters
- Test your modules using our verification flow (
makecommand) - Submit a pull request with a clear description of your contribution
File Organization:
- Place Verilog files in the appropriate
libraries/[category]/directory - Include testbench files with
tb_prefix - Add documentation to the corresponding
docs/README_[CATEGORY].mdfile - Follow existing naming conventions and coding styles
- Fix bugs in existing modules
- Improve testbench coverage
- Optimize implementations
- Add better documentation or comments
- Improve documentation clarity
- Enhance analysis scripts
- Add new visualization features
- Fix typos or formatting issues
- Code Quality: Ensure your code is clean, well-commented, and follows Verilog best practices
- Testing: All modules must include working testbenches that demonstrate functionality
- Documentation: Provide clear documentation explaining module purpose, parameters, and usage
- Licensing: By contributing, you agree that your contributions will be licensed under the same CC BY-NC 4.0 license
- Explore the existing codebase to understand our structure and conventions
- Check open issues to see if there are specific modules or features we need
- Start small - consider fixing bugs or improving documentation before adding large new features
- Ask questions - create an issue if you need clarification on contribution guidelines
Join our community and help make CORE the most comprehensive RTL dataset for EDA research!
For questions about contributions, please create an issue or reach out to the maintainers.
- Current Version: 1.0.0
- Last Updated: 2024
- Supported Verilog Standards: IEEE 1364-2005, IEEE 1800-2012
- Tool Versions:
- Verilator: 5.036
- Yosys: 0.53+81
- Icarus Verilog: 11.0
- Python: 3.10.12
If you use this repository in your research or work, please cite it as follows:
@misc{core2024,
author = {Kian Kit Cheah, Fu Qi Chua, Yunxiang Zhang, Zhuofan Lin, Yuxin Ji, Xinfei Guo, Harikrishnan Ramiah, and Yongfu Li},
title = {Descriptor: A Corpus of Synthesizable Verilog RTL Modules Dataset for EDA Research (CORE)},
year = {2025},
journal = {IEEE Data Descriptions},
url = {\url{https://github.com/SJTU-YONGFU-RESEARCH-GRP/core}},
}This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International Public License.