Skip to main content

The FPGA CLI ecosystem. IP registry with license detection, cross-language dependency resolution, smart linting, multi-vendor synthesis — one pip install.

Project description

RouteRTL
The FPGA build system that reads your HDL and figures it out.

Website PyPI Registry MIT License PolyForm Shield Python 3.10+ Cocotb 2.0


pip install routertl

RouteRTL is a command-line FPGA SDK with a built-in IP package manager. Install a UART core, an AXI interconnect, or a full RISC-V SoC — dependencies are resolved automatically from the source code. No manual file lists. No compilation order. No "works on my machine."

Install an IP, See It Work

rr init --non-interactive --no-venv
rr pkg add open-logic/olo_intf_uart
rr lint olo_intf_uart
  + open-logic/olo_intf_uart ^4.4.1
  Resolving 1 package(s) from https://registry.routertl.dev
    open-logic/olo_intf_uart: ^4.4.1 -> 4.4.1
  Written ip.lock (1 packages)

  Lint passed  (ghdl)

RouteRTL cloned the package, resolved 8 transitive VHDL dependencies, compiled them in the correct library order, and linted — all from one command.

rr hierarchy --forest

  olo_intf_uart  (olo_intf_uart.vhd, 8 files)
  |-- olo_base_strobe_gen
  |   +-- [1 pkgs: olo_base_pkg_math]
  |-- olo_intf_sync
  |   +-- [1 pkgs: olo_base_pkg_attribute]
  +-- [3 pkgs: olo_base_pkg_logic, olo_base_pkg_math, olo_base_pkg_string]

IP Registry. Cross-Language Dependency Resolution.

rr pkg search ethernet                           # browse the catalog
rr pkg add fpganinja/taxi::taxi_eth_mac_1g       # Verilog — single module from a repo
rr pkg add open-logic/olo_base_fifo_async        # VHDL — library deps auto-resolved
rr pkg add openhwgroup/cva6                      # SystemVerilog — full RISC-V SoC

The registry detects licenses (MIT, GPL, CERN-OHL) and warns about copyleft conflicts. Every package is scanned with role computation — tops, components, and primitives classified automatically.

When you install a package, RouteRTL:

  1. Queries the registry for dependency metadata
  2. Resolves missing libraries and modules to their provider packages
  3. Auto-installs transitive dependencies
  4. Compiles everything in the correct order
  5. Lints and reports results

Pre-packaged from open-logic, fpganinja (Corundum, Taxi Ethernet/AXI/PCIe), OpenHW Group (CVA6/CORE-V), PULP Platform (AXI, common cells), Analog Devices, VUnit, Enclustra, NEORV32, and more. Pinned by commit SHA in a lock file.

What You Get

Three-Register Architecture rr pkg (IPs), rr rules (design rules with exact-part + IP-version scoping), rr ref (reference designs — buildable projects with version-pinned IP deps). Overview →
IP Package Manager Growing registry with license detection, cross-language dependency graphs, lock files, R1–R9 description quality pipeline (validator + scanner self-heal + submit gate + CI gate + weekly drift guard), rr pkg search/add/update
Auto-Discovery Point at a source tree — VHDL, Verilog, SystemVerilog hierarchy resolved automatically
Multi-Vendor Synthesis Vivado, Quartus (Pro/Standard), Radiant, Libero — change one word in project.yml
Cocotb 2.0+ Simulation rr sim, rr testgen, rr watch — NVC, GHDL, Verilator, Icarus, QuestaSim
Protocol Drivers UART, SPI, I2C, QSPI, AXI4-Lite, AXI4, Avalon-MM — included, zero extra deps
Smart Linting Hierarchy-aware, incremental, multi-pass — rr lint just works
Code Generation Bus bridges (AXI/Avalon/Native), register banks (VHDL + C headers + HTML docs)
Pre-Commit Gates Lint + simulate + YAML check on every commit
Docker EDA Provisioning rr docker install vivado — headless vendor tool setup, same environment everywhere

Battle-Tested

Validated against real-world codebases with zero configuration beyond rr init:

  • open-logic — 69 IPs, flat multi-root VHDL library. All files resolved, 0 violations.
  • NEORV32 — 56 entities, deep monolithic SoC, complex generics. 0 violations.

The CLI

rr init                       # scaffold a project
rr hierarchy --forest         # design hierarchy
rr lint                       # smart lint (GHDL + Verilator)
rr sim test_my_module         # simulate (cocotb 2.0+)
rr testgen edge_counter       # generate test boilerplate
rr watch                      # re-run on save
rr synth run my_top           # synthesize
rr implementation             # place & route
rr bitstream                  # generate bitstream
rr report                     # utilization & timing
rr deps graph                 # dependency visualization
rr pkg search / add / update  # IP package manager
rr rules check                # match design rules to current toolchain
rr ref list / install         # scaffold from a reference design
rr migrate                    # import existing Vivado projects
rr docker install vivado      # headless EDA provisioning
rr doctor                     # toolchain health check

Both routertl and rr work as entry points.

Quick Start

1. Install

pip install routertl

For platform-specific instructions (Linux, WSL2, macOS), see the Installation Guide.

2. Initialize

rr init --name my_project --vendor xilinx --part xc7z020clg400-1

Creates project.yml, directory structure, virtual environment, and pre-commit hooks.

Existing project? rr migrate imports Vivado projects (Quartus support coming soon). Or run rr init inside an existing repo and adjust the paths: block.

3. Add IP and Build

rr pkg add open-logic/olo_base_fifo_sync  # install with deps
rr lint                                    # verify everything compiles
rr sim test_my_module                      # run simulation
rr synth run my_top                        # synthesize

Simulation API

from routertl.sim import Tb, run_simulation, UartSource, SignalCollector

@cocotb.test()
async def test_my_module(dut):
    tb = Tb(dut)
    await tb.start_clock()
    await tb.reset()
    # Your test logic here

Native protocol drivers included: AXI4-Lite, AXI4, Avalon-MM, Native Memory, UART, SPI, I2C — with passive monitors and bridge scoreboards.

Who Is This For?

  • FPGA engineers who want reproducible, scriptable builds instead of vendor GUI projects
  • Teams integrating FPGA into CI/CD pipelines
  • Multi-vendor shops targeting Xilinx, Intel/Altera, Lattice, and Microchip from one project.yml

Documentation

I want to...

Goal Link
Create my first project First Steps Tutorial
Write a simulation Cocotb Quickstart
Use a protocol driver Driver Cookbook
Understand project.yml project.yml Reference
Migrate an existing project Existing Project Migration
Fix an error Troubleshooting
Browse all docs Documentation Index

Prerequisites

Tool Required Notes
Python 3.10+ Yes CLI and simulation framework
Git Yes Version control and dependency tracking
NVC Recommended VHDL simulator for Cocotb 2.0+ (.deb)
GHDL Recommended VHDL analyzer (fast linting)
Vendor tools Optional Vivado / Quartus / Radiant / Libero — or rr docker install

Acknowledgments

RouteRTL builds on the work of several outstanding open-source projects. We gratefully acknowledge:

Project Role in RouteRTL
NVC Primary VHDL simulator for Cocotb 2.0+ simulation
GHDL VHDL analysis, linting, and secondary simulation backend
Cocotb Python-based verification framework powering rr sim
Verilator Verilog/SystemVerilog simulation and linting backend
Icarus Verilog Lightweight Verilog simulation backend
xpm_vhdl Open-source VHDL implementation of Xilinx XPM macros
Rich Terminal formatting for CLI output
Jinja2 Template engine for code generation

RouteRTL would not be possible without these projects and their maintainers.

Contributing

The best way to contribute is to use RouteRTL and tell us what breaks. To report a bug, suggest a feature, or share how you're using it, email support@routertl.dev. Include the output of rr doctor when reporting issues.

See CONTRIBUTING.md for details.

Contact

Built and maintained by Daniel J. Mazureroutertl.dev · support@routertl.dev

Licensing

RouteRTL uses a dual-license model:

Component License You can...
CLI, build system, cocotb drivers, hooks, docs MIT Use, modify, redistribute — no restrictions
Compiled core (routertl_core/*.so) PolyForm Shield 1.0.0 Use for any purpose except building a competing product
Licensing FAQ
Question Answer
Can I use RouteRTL commercially? Yes — use it to build, simulate, and ship your FPGA products without restriction.
Can I modify the CLI or build system? Yes — they're MIT-licensed. Fork, extend, contribute PRs — all welcome.
Can I decompile the .so modules? No — that violates the PolyForm Shield license.
Can I redistribute the PyPI wheel? Yes — as-is, per standard PyPI terms.
What counts as "competing"? Building and distributing an FPGA SDK that substitutes for RouteRTL. Using RouteRTL to build your own product is not competing.

Copyright 2026 Daniel J. Mazure

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

routertl-3.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (16.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

routertl-3.19.0-cp313-cp313-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

routertl-3.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (16.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

routertl-3.19.0-cp312-cp312-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

routertl-3.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (17.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

routertl-3.19.0-cp311-cp311-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

routertl-3.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (16.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

routertl-3.19.0-cp310-cp310-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file routertl-3.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for routertl-3.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 db37cdda8341a0456d83264f5fca3ecb1b51a2dd3bf2814754763708d09c0dcb
MD5 2e9e87c713c301e93e2ff3b2a4d1dcb5
BLAKE2b-256 dcfdd060d4f30dfa3c02162fb2c51fec0ccc95c233a8cda5bca53c9c42c5464b

See more details on using hashes here.

File details

Details for the file routertl-3.19.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for routertl-3.19.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8132f0028f826395dae32929b25bf031596fabbedbbaf0808d8b945975c11908
MD5 4199ce2b421dfd7c019dbb0e66b8345b
BLAKE2b-256 b1ebd8c430e062575526c84ce8af0717b9af658c17d0a2913995b67191376ac1

See more details on using hashes here.

Provenance

The following attestation bundles were made for routertl-3.19.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on djmazure/routertl-mac

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file routertl-3.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for routertl-3.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 9b834a4b1f6d3c15ea465da2d82d177e9889c374de13638339012d5fcc315255
MD5 a02f3bf0cd2df5caa893bf752c280021
BLAKE2b-256 ca8d372b893e607b3f55e8177314a9486ce60afbadd60fa49148b10af64a36c3

See more details on using hashes here.

File details

Details for the file routertl-3.19.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for routertl-3.19.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 44c56cffdf9801bcf44512af3a8afea5f72367dc4fe1b438e768dfe0901efbc6
MD5 d79f868a8826bc92acb695c6ff860e40
BLAKE2b-256 6b7d4d33cb7e19fc16cdc623bfbb6e9be624644f7243ccd05a6931a8a79b2f05

See more details on using hashes here.

Provenance

The following attestation bundles were made for routertl-3.19.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on djmazure/routertl-mac

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file routertl-3.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for routertl-3.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 86e6189e75fa6ecd9ad3b2b2ab09e2a5566af41195cac68c0bf8e92e6d915cef
MD5 55283628d7002103e963e1f8574c614a
BLAKE2b-256 066efaeb55d72e7a9f214b019a3f148964a5746af03ce8f5e2d1cb22a5770afc

See more details on using hashes here.

File details

Details for the file routertl-3.19.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for routertl-3.19.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1a37d1eadb58ef88b8f0b8b3fb6cdef7cd926d241c44c0c8c7a4e3cf1f379950
MD5 c8a96c33473e16eb316c329fe6ad2aed
BLAKE2b-256 3acbbb41075b1be3907a7af3322b29f97ec5adddd6b2f3251ba134e32b19faca

See more details on using hashes here.

Provenance

The following attestation bundles were made for routertl-3.19.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on djmazure/routertl-mac

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file routertl-3.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for routertl-3.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0d168328aac68d104f275c303a0b6a5811cd36c84f63776e90322d2b7c8a6e0e
MD5 7147115def27494163d016cd1df9a67b
BLAKE2b-256 f64a2d1ad937b4cc8466da8654ab98e31b2827d8c4c7a47e9df0de9f2c1f531f

See more details on using hashes here.

File details

Details for the file routertl-3.19.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for routertl-3.19.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f720bcf6b02434ccf209cd5462aef05e983cab9a0933974d2f847eac50d7dcf
MD5 434f44172ece7c713f8fc62378bda75c
BLAKE2b-256 1c0f1aedfe44fa1cc7b58a02ca4c95d3691d901db1fce84fbd84a91b0221c081

See more details on using hashes here.

Provenance

The following attestation bundles were made for routertl-3.19.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on djmazure/routertl-mac

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page