Development Resources
March 30, 2025 ยท View on GitHub
This document will help getting started contributing to Verible. Collecting development aids and design concepts.
Searching and Navigating Verible's Source Code
https://cs.opensource.google/verible/verible is a search-indexed mirror of Verible's source code. Expect to spend some time here as you familiarize yourself with the codebase.
https://developers.google.com/code-search/reference provides a reference for search syntax and more.
To learn more about how to use Kythe to index the source code yourself, read here.
To allow your editor to navigate the code base, make sure it uses the
clangd language server. With
.github/bin/make-compilation-db.sh
You can create the compilation database it needs.
Automated tools that allow to keep things clean
If you have a compilation database, you can run the clang-tidy checker:
.github/bin/run-clang-tidy-cached.cc
Note, this will take a while the first time, but it caches the result.
To run all litmus diagnostics before submitting, there is this convenient script, run it before creating a pull request to see if you haven't missed anything (the Continuous Integration on github will catch it, but nice to run this locally):
.github/bin/before-submit.sh
This will also run clang-tidy, and so will take a while the first time
you run it.
Tips
- Read the test code. Most
.hand.ccfiles come with a_test.ccset of unit tests. The tests are never outdated because they are kept passing. - Find examples. Dig through history. Follow blame and annotation layers to see when particular lines of code were touched. Look for related closed issues and see the commits that addressed them.
Code Organization
Each directory in the source tree contains a short README.md describing the contents.
- common/ contains all language-agnostic libraries and tools
- verilog/ contains Verilog-specific libraries and tools
- external_libs/ contains some library dependencies
Verilog Front-End
Analyzers
Transformers
Formatting
- Formatter: How the formatter works, and how to debug it.