Skip to content

List of awesome open source hardware tools, generators, and reusable designs

License

Notifications You must be signed in to change notification settings

apsarras/awesome-opensource-hardware

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

awesome-opensource-hardware

A curated list of awesome open source hardware tools, generators, and reusable designs.

  • Categorized
  • Alphabetical (per category)
  • Requirements
    • link should be to source code repository
    • open source projects only
    • working projects only (not WIP/rusty)
  • One tag line sentence per project.

Table of Contents

PDKs

Compilers

Design Tools

Verification

Designs & Generators

PDKs

Manufacturable PDKs

  • GF180
    • GlobalFoundries 180nm CMOS PDK
  • SG13G2
    • IHP 130nm BiCMOS PDK
  • SKY130
    • Skywater 130nm CMOS PDK

Virtual PDKs

Compilers

Build Systems

  • bazelhdl
    • Bazel based hdl build system
  • bender
    • Dependency management tool for hardware projects.
  • chipyard
    • Agile RISC-V SoC Design Framework.
  • cocoon
    • An infrastructure for integrated EDA
  • edalize
    • An abstraction library for interfacing EDA tools.
  • f4fpga
    • FPGA build system
  • flgen
    • Generate a filelist for EDA tools
  • fusesoc
    • Package manager and build abstraction tool for FPGA/ASIC development.
  • hammer
    • Agile physical design component part of UC Berkeley Chipyard framework.
  • hwtBuildsystem
    • Library of utils for interaction with the vendor tools.
  • legoHDL
    • Command line HDL package manager and development tool.
  • mflowgen
    • Build-system generator for ASIC and FPGA design-space exploration.
  • ParaView
    • Data analysis and visualization toolkit
  • siliconcompiler
    • Build system that automates translation from source code to silicon.

Digital Compilers

  • abc
    • System for sequential logic synthesis and formal verification
  • act
    • Asynchronous circuit compiler tools
  • amaranth
    • Python based hardware design framework
  • bsc
    • Compiler, simulator, and tools for the Bluespec Hardware Description Language
  • calyx
    • Intermediate language and infrastructure compilers that generate custom hardware accelerators
  • chisel
    • Scala based hardware description language
  • circt
    • Circuit IR Compilers and Tools
  • clash
    • Haskell to VHDL/Verilog/SystemVerilog compiler
  • cocotbext-axi
    • AXI interface modules for Cocotb
  • cocotbext-pcie
    • PCI express simulation framework for Cocotb
  • coreir
    • LLVM-style hardware compiler with first class support for generators
  • dfiant
    • Dataflow Hardware Description Language
  • Fault
    • Design-for-testing (DFT) Solution
  • firrtl
    • Intermediate Representation for RTL
  • gamma
    • Optimizes mapping of DNN models on DNN Accelerators
  • halide
    • Language for fast, portable data-parallel computation
  • halide-to-hardware
    • Hardware generator combining halide and coreir
  • hdlconvertor
    • Verilog/VHDL parser preprocessor and code generator for C++/Python based on ANTL4
  • hs-to-coq
    • Convert Haskell source code to Coq source code
  • livehd
    • Infrastructure for live interactive synthesis and simulation
  • llhd
    • Intermediate representation for digital circuit descriptions
  • lsoracle
    • Famework built on EPFL logic synthesis libraries.
  • lstools
    • Showcase examples for EPFL logic synthesis libraries
  • kami
    • Platform for High-Level Parametric Hardware Specification and its Modular Verification
  • magma
    • Python based hardware design language
  • matchlib
    • Synthesizable SystemC/C++ library of commonly-used hardware functions
  • matchclib_connections
    • Synthesizable SystemC library implementing latency-insensitive channels
  • mockturtle
    • C++ logic network library
  • myhdl
    • Python based hardware description and verification language
  • naja
    • Structural Netlist API (and more) for EDA post synthesis flow development
  • netlist-paths
    • A library and command-line tool for querying a Verilog netlist
  • panda-bambu
    • High level synthesis (HLS) C/C++ framework
  • pipelinec
    • C-like hardware description language (HDL) with automatic pipelining
  • pygears
    • Python based hardware design framework
  • pymtl3
    • Python hardware generation, simulation, and verification framework
  • pyrtl
    • Python integrated design and simulation framework
  • pysysc
    • Python package to make SystemC usable from Python
  • pyverilog
    • Python design toolkit for Verilog HDL
  • rohd
    • Dart based framework for describing and verifying hardware
  • silice
    • Language that simplifies prototyping and writing algorithms on FPGA architectures
  • skidl
    • SKiDL is a module that extends Python with the ability to design electronic circuits
  • slang
    • Library for lexing, parsing, type checking, and elaborating SystemVerilog code
  • sodaopt
    • Optimizer leveraging mlir to extract, optimize, translate HLSinto LLVM IR
  • spinalhdl
    • Scala based HDL
  • spydrnet
    • Framework for analyzing and transforming Verilog netlists
  • surelog
    • SystemVerilog IEEE 2017 Pre-processor, Parser, Elaborator, UHDM Compiler
  • sv-parser
    • SystemVerilog IEEE 1800-2017 parser library
  • sv2v
    • SystemVerilog to Verilog conversion
  • systemc
    • SystemC system design and verification language that spans hardware and software
  • systemc-compiler
    • Translates synthesizable SystemC to synthesizable Verilog
  • tapasco
    • Heterogeneous system composer
  • uhdm
    • Universal object model for IEEE SystemVerilog designs
  • verible
    • Suite of SystemVerilog developer tools, including a parser, style-linter, and formatter
  • veriloggen
    • Mixed-Paradigm Hardware Construction Framework
  • verik
    • Kotlin based hardware description language
  • Vlsir
    • Interchange formats for chip design
  • xls
    • Google framework for hardware synthesis
  • yosys
    • Yosys Open SYnthesis Suite

FPGA Compilers

  • amf-placer

    • Timing-driven analytical mixed-size FPGA placer
  • dreamplacefpga

    • Analytical Placer for Large Scale Heterogeneous FPGA
  • fpga-tool-perf

    • FPGA tool performance profiling
  • flowtune

    • FPGA synehsis and PNR optimizer
  • nextpnr

    • FPGA place and route tool
  • vtr

    • FPGA place and route tool

Layout Compilers

  • AutoDMP
    • Auto-placement tool; requires DREAMPlace
  • align
    • Automatic layout generator for analog circuits
  • bag
    • Berkeley analog layout generator
  • bigspicy
    • Tool for merging circuit descriptions
  • dreamplace
    • Deep learning toolkit-enabled VLSI placement
  • Layout21
    • Integrated Circuit Layout
  • magical
    • Machine Generated Analog IC Layout
  • openroad
    • Complete RTL2GDS platform

Design Tools

Analog Design

  • OpenPLC_Editor
    • IDE capable of creating programs for the OpenPLC Runtime
  • oregano
    • Schematic capture and circuit simulator
  • qucs_s
    • Integrated circuit simulator with Graphical User Interface
  • xschem
    • Schematic editor for VLSI/Asic/Analog custom designs

Board Design

  • boardview
    • Reads KiCAD PCB layout files and writes ASCII Boardview files
  • cuflow
    • Experimental procedural PCB layout program
  • datasheet-scrubber
    • Utility that scrubs PDF datasheets/documents in order to extract key circuit information
  • freecad
    • 3D parametric CAD for building models of components for KiCad 3D preview (also enclosures)
  • kicad
    • Board design framework
  • kicanvas
    • KiCAD web viewer
  • pcbflow
    • Python based Printed Circuit Board (PCB) layout and design package based on CuFlow

Chip Layout

  • chip_art
    • Convert an image to a GDS format for inclusion in a zerotoasic project
  • coriolis
    • RTL2GDS toolchain for mature nodes
  • gds3d
    • Reads GDSII layout and renders in 3D.
  • gdsfactory
    • Python package to generate GDS layouts.
  • gdstk
    • C++/Python library for creation and manipulation of GDSII and OASIS files.
  • gdspy
    • Python module for creating GDSII stream files, usually CAD layouts.
  • klayout
    • Layout viewer
  • lclayout
    • Layout generator for CMOS standard-cells
  • netgen
    • LVS tool for comparing SPICE or verilog netlists
  • phidl
    • Python GDS layout and CAD geometry creation
  • probe3.0
    • Process/design DTCO path finding technology

Digital Design

Documentation

  • graphviz
    • Python library for graph cration and rendering in DOT language
  • kythe
    • Verible based SystemVerilog source file indexer
  • memory-layout-diagram
    • Diagrams for memory map layouts
  • netlistsvg
    • draws an SVG schematic from a JSON netlist
  • pcbdraw
    • Convert KiCAD board into 2D drawing suitable for pinout diagrams
  • pinion
    • Generate interactive Diagrams for your PCBs
  • pinout
    • Python package that generates hardware pinout diagrams as SVG images
  • sphinx
    • Document builder
  • sphinx-verilog-domain
    • Sphinx domain to allow integration of Verilog / SystemVerilog documentation into Sphinx.
  • sphinxcontrib-hdl-diagrams
    • Sphinx plugin to automatically generate diagrams from RTL.
  • symbolator
    • HDL symbol generator
  • undulate
    • Python compatible wavedrom module with extensions and console rendering support
  • wavedrom
    • Digital timing diagram rendering engine
  • wavedrompy
    • Python comptabled Wavedrom module

FPGA Design

  • byteman
    • Bitstream relocation and manipulation tool
  • icestudio
    • Visual editor for open FPGA boards
  • foedag
    • Framework Open EDA Gui
  • openfpgaloader
    • Universal utility for programming FPGA
  • rphax
    • Automation flow to develop and prototype hardware accelerators on Xilinx FPGAs

Register Design

  • gen_registers
    • Python based tool for generating hardware registers and their associated files
  • rggen
    • Configuration and status register generator
  • peakrdl
    • SystemRDL based control & status register (CSR) toolchain
  • systemrdl
    • Generic compiler front-end for Accellera's SystemRDL 2.0 register description language

Verification

Analog Verification

  • adc-eval
    • Python tools for ADC performance analysis
  • anasysmod
    • Framework for FPGA emulation of mixed-signal systems
  • cvc
    • CVC: Circuit Validity Checker.
  • devsim
    • TCAD Semiconductor Device Simulator
  • eesim
    • Browser-based SPICE circuit simulator
  • femwell
    • Finite element based simulation tool for integrated circuits, electric and photonic!
  • lctime
    • Library cell characterization
  • hotspot
    • Thermal modeling tool for use in architectural studies
  • ngspice
    • Spice simulator
  • msdsl
    • Automatic generation of real number models from analog circuits
  • OpenPLC_v3
    • OpenPLC Runtime version 3
  • OpenVAF
    • Next generation Verilog-A compiler
  • pact
    • Thermal Simulator
  • pyaedt
    • Ansys AEDT Python Client Package
  • pydpf-core
    • Ansys core processing framework
  • pyfluent
    • Ansys interface to Ansys Fluent
  • pymapdl
    • Ansys interface to MAPDL
  • pyspice
    • Python interface for ngspice and xyce
  • SimulIDE
    • SimulIDE is a simple real-time electronic circuit simulator
  • svreal
    • Synthesizable real number library in SystemVerilog (fixed & floating point formats)
  • xyce
    • Parallel spice simulator from Sandia national labs

Benchmarks

  • big-doe-openroad
    • Framework for launching massive RTL2GDS experiements
  • bringup-bench
    • Collection of minimal programs useful for system bringup
  • bsg_pipeclean_suite
    • Collection of designs used to stress test new CAD flows
  • corescore
    • Benchmark for FPGAs and their synthesis/P&R tools
  • epfl-benchmarks
    • Combinational Benchmark Suite for logic synthesis
  • opdb
    • Princeton design benchmark generators
  • rdf-2020
    • IEEE CEDA eda benchmark flow
  • sv-tests
    • SystemVerilog compliance test suite

Digital Verification

  • awsteria_infra
    • Middleware for AWS hosted FPGA applications
  • boolector
    • SMT solver for the theories of fixed-size bit-vectors, arrays and uninterpreted functions.
  • champsim
    • Trace-based simulator for a microarchitecture study.
  • cocotb
    • Coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python
  • cvc5
    • SMT automatic theorem prover
  • dromajo
    • RISC-V RV64GC functional emulator
  • essent
    • High-performance FIRRTL (Chisel) simulator
  • firesim
    • FPGA-accelerated Cycle-accurate Hardware Simulation in the Cloud
  • frame
    • Fast Roofline Analytical Modeling and Estimation
  • fstdumper
    • Verilog VPI module to dump FST (Fast Signal Trace) databases
  • gem5
    • Modular simulator platform for computer-system architecture research
  • ghdl
    • VHDL 2008/93/87 simulator
  • icarus
    • Verilog IEEE-1364 simulator
  • ilang
    • Princeton modeling and Verification Platform for SoCs using ILAs
  • kaktus2dev
    • Graphical EDA tool based on the IP-XACT standard
  • libsystemctlm-soc
    • SystemC/TLM-2.0 Co-simulation framework
  • maestro
    • Analytical cost model evaluating DNN mappings (dataflows and tiling)
  • opensta
    • Signoff quality STA engine used by OpenRoad
  • opentimer
    • High perormance static timing analysis
  • osvvm
    • A VHDL verification framework
  • qemu
    • Generic and open source machine & userspace emulator and virtualizer
  • pono
    • Extensible SMT-based model checker implemented in C++.
  • pyucis
    • Python API to Unified Coverage Interoperability Standard (UCIS) Data
  • pyuvm
    • SystemVerilog UVM written in Python
  • pyvsc
    • Python packages or SystemVerilog UVM style Verification Stimulus and Coverage
  • renode
    • Generic and open source machine emulator
  • rohd-cosim
    • Framework for cosimulation between the ROHD simulator and SystemVerilog simulators.
  • rohd-vf
    • ROHD-based verification and testbench framework in Dart.
  • sby
    • Front-end for Yosys-based formal verification flows.
  • systemctlm-cosim-demo
    • Demo system for libsystemctlm-soc library
  • sv_waveterm
    • Generate text waves in simulation log file
  • svlint
    • SystemVerilog linter
  • svlint-action
    • GitHub action for svlint
  • tce
    • Application-specific instruction-set processor (ASIP) toolset
  • tvip-apb
    • UVM based AMBA APB VIP
  • tvip-axi
    • UVM based AMBA AXI VIP
  • uvvm
    • Library for making very structured VHDL-based testbenches.
  • verilator
    • SystemVerilog simulator and lint system.
  • v2k-top
    • Parser/simulation framework for Verilog & C++
  • vidbo
    • Virtual development board
  • vunit
    • Unit testing framework for VHDL/SystemVerilog
  • z3
    • Microsoft research theorem prover.

Waveform viewers

  • d3wave
    • D3.js based wave (signal) visualizer
  • gtkwave
    • GTK+ based VCD waveform viewer
  • konata
    • Instruction pipeline visualizer for Gem5
  • sigrok
    • Portable, signal analysis software suite (logic analyzers, scopes, multimeters, and more)
  • simview
    • Text-based SystemVerilog design browser and waveform viewer
  • sootty
    • Command-line tool for displaying vcd waveforms

Designs & Generators

Accelerators

  • aes
    • Symmetric block cipher AES (Advanced Encryption Standard)
  • ara
    • Vector Unit, compatible with the RISC-V Vector Extension
  • bfg
    • Compiler for Reduced-Complexity Reconfigurable Fabrics
  • BISMO
    • Chisel-based bit-serial matrix multiplication accelerator generator
  • FINN
    • Quantized NN to FPGA dataflow accelerator generator
  • FFTGenerator
    • MMIO-Based FFT Generator
  • fpu
    • Synthesizable ieee 754 floating point library in verilog
  • garnet
    • CGRA generator
  • gemmini
    • Berkeley Spatial Array Generator
  • gplgpu
    • GPL v3 2D/3D graphics engine in verilog
  • core_jpeg
    • High throughput JPEG decoder in Verilog for FPGA
  • fftgenerator
    • Chisel based FFT generator
  • h265-encoder-rtl
    • H.265 Video Encoder IP Core
  • LogicNets
    • Train and generate LUT-based neural networks
  • NNgen
    • A Fully-Customizable Hardware Synthesis Compiler for Deep Neural Network
  • nvdla
    • NVIDIA Deep Learning Accelerator (NVDLA)
  • NyuziProcessor
    • GPGPU microprocessor architecture
  • opencgra
    • Parametrizable Coarse-Grained Reconfigurable Array (CGRA) Generator
  • openofdm
    • 802.11 OFDM PHY decoder
  • openspike
    • Spiking neural network accelerator
  • sha3
    • Berkeley SHAR3 ROCC Accelerator
  • Serpens
    • HBM FPGA based SpMV Accelerator
  • Sextans
    • FPGA accelerator for general-purpose Sparse-Matrix Dense-Matrix Multiplication (SpMM)
  • spiral
    • Spiral based FFT generator
  • tvm-vta
    • Opwn, modular, deep learning accelerator
  • VeriGOOD-ML
    • Verilog Generator, Optimized for Designs for Machine Learning
  • VeriGPU
    • OpenSource GPU, loosely based on RISC-V ISA
  • verilog-lfsr
    • Parametrizable combinatorial parallel LFSR/CRC module
  • vortex
    • Full-system RISCV-based GPGPU processor

Analog Circuits

  • AMS_KGD
    • Repository for Known Good Analog Designs (KGDs)
  • analog_blocks
    • Basic building blocks (OTA, BandGap and LDO) in Skywater 130nm.
  • openfasoc
    • Fully-Autonomous SoC Synthesis using Customizable Cell-Based Synthesizable Analog Circuits
  • open-pmic
    • Current mode buck converter on the SKY130 PDK

Chip Packages

  • bsg_packaging
    • Open-Source Hardware Accelerator Packages and Sockets

Boards

Connectivity

  • aib
    • Advanced Interface Bus (AIB) die to die hardware
  • aib-protocols
    • Advanced Interface Bus (AIB) Protocol IP
  • axi
    • AXI SystemVerilog synthesizable IP
  • axi4_aib_bridge
    • AXI4/AIB Bridge RTL
  • core_ddr3_controller
    • DDR3 memory controller in Verilog for various FPGAs
  • ctucanfd_ip_core
    • CAN with Flexible Data-rate IP Core developed at Department of Measurement of FEE CTU
  • hdmi
    • Send video/audio over HDMI on an FPGA
  • i2c
    • Fully featured implementation of Inter-IC (I2C) bus master
  • litedram
    • Small footprint and configurable DRAM (litex)
  • liteeth
    • Small footprint and configurable Ethernet core
  • litescope
    • Small footprint and configurable embedded FPGA logic analyzer
  • litepice
    • Small footprint and configurable PCIe core
  • nocrouter
    • Network-on-Chip Router
  • OpenSERDES
    • Digitally synthesizable architecture for SerDes using Skywater130
  • pymtl3-net
    • Cornell parameterizable OCN (on-chip network) generator
  • ravenoc
    • Configurable HDL NoC (Network-On-Chip)
  • tnoc
    • Network on Chip Implementation written in SytemVerilog
  • USB3 Camera
    • USB C Industrial Camera Project
  • usb_cdc
    • Minimal USB CDC (ACM) implementation in verilog
  • usb_dfu
    • Verilog implementation of the USB Device Class Specification for Device Firmware Upgrade (DFU), version 1.1
  • verilog-axis
    • Verilog AXI stream components for FPGA implementation
  • verilog-ethernet
    • Verilog Ethernet components for FPGA implementation
  • verilog-i2c
    • Verilog I2C interface for FPGA implementation
  • verilog-uart
    • Verilog UART
  • verilog-pcie
    • Verilog PCI express components
  • verilog-wishbone
    • Verilog wishbone components
  • wav-d2d-hw
    • 8lane Wlink with D2D and a single AXI Target/Initiator
  • wav-lpddr-hw
    • DDR (WDDR) Physical interface (PHY) Hardware
  • wav-slink-hw
    • Chiplet link
  • wav-wlink-hw
    • Chiplet link

CPUs

  • a2i
    • A2I POWER processor core RTL (VHDL)
  • ara
    • 64-bit Vector unit coprocessor to Ccva6
  • black-parrot
    • Linux-capable RISC-V multicore
  • cfu-playground
    • Famework for playing with custom opcodes to accelerate TensorFlow Lite for Microcontrollers
  • Cores-SweRV
    • SweRV EH1 RISC-Vcore
  • Cores-SweRV-EL2
    • SweRV EL2 RISC-V Core
  • core-v-verif
    • Functional verification project for the CORE-V family of RISC-V cores
  • cva6
    • Linux capable RISC-V CPU
  • cv32e40p
    • RV32IMFCX RISC-V 4-stage RISC-V CPU
  • ibex
    • Small 32 bit RISC-V CPU core
  • microwatt
    • Open POWER ISA softcore written in VHDL 2008
  • muntjac
    • Simple 64-bit RISC-V multicore processor
  • neorv32
    • Customizable and highly extensible MCU-class 32-bit RISC-V (VHDL)
  • OpenXiangShan
    • Open-source high-performance RISC-V processor
  • picorv32
    • Size-Optimized RISC-V CPU
  • rocket-chip
    • Linux capable RISC-V Rocket Chip Generator
  • rioschip
    • Out of order RISC-V core
  • serv
    • SErial RISC-V CPU
  • snitch
    • Lean but mean RISC-V system
  • veer
    • 32-bit integer machine-mode RISC-V CPU
  • vroom
    • High performance RISC-V CPU

FPGA Architectures

  • FABulous
    • Fabric generator and CAD tools
  • fabric_team
    • Simple Berkeley FPGA generator class project
  • OpenFPGA
    • FPGA IP Generator
  • prga
    • Open-source FPGA research and prototyping framework

Libraries

  • basejump_stl
    • Library of SystemVerilog components
  • basic_verilog
    • Library of SystemVerilog components
  • common_cells
    • Library of SystemVerilog components
  • hdl
    • Library of Analog Deveices specific components
  • oh
    • Library of Verilog components
  • pzbcm
    • Basic common modules
  • rohd-hcl
    • Library of reusable & configurable hardware components developed with ROHD, convertible to SystemVerilog, including testbench components.
  • vlsiffra
    • Fast and efficient standard cell based adders, multipliers and multiply-adders

Memory

  • core_axi_cache
    • 128KB AXI cache (32-bit in, 256-bit out)
  • bsg_fakeram
    • Fake RAM generator
  • HuanCun
    • Open-source high-performance non-blocking cache
  • openram
    • Static random access memory (SRAM) compiler.
  • lake
    • Synthesizable memory generator

Systems

  • caliptra
    • Caliptra Root of Trust Architecture
  • caliptra-rtl
    • Caliptra Root of Trust (RTL)
  • Beagle_SDR_GPS
    • KiwiSDR: BeagleBone web-accessible GPS/SDR
  • bsg_manycore
    • Tile based architecture designed for computing efficiency, scalability
  • cep
    • RISC-V based Common Evaluation Platform (CEP)
  • esp
    • Heterogeneous SoC architecture and IP design platform
  • falcon
    • Fast Analysis of LTE Control channels
  • hero
    • FPGA-based research platform for heterogeneous design
  • litex
    • SoC builder framework
  • openFASOC
    • Open Source FASOC generators
  • openpiton
    • General purpose, multithreaded manycore processor
  • opentitan
    • Open source silicon root of trust
  • openwifi-hw
    • IEEE 802.11 WiFi baseband FPGA (chip) design
  • pulp
    • Multicore RISC-V based SoC
  • pulpissimo
    • Single core RISC-V based SoC
  • SensSeq
    • Mixed-signal system on chip for nanopore-based DNA sequencing
  • VerilogBoy
    • Game Boy compatible machine with Verilog
  • wulpus
    • Wearable low-power ultrasound probe
  • x-heep
    • Extendable and configurable RISC-V SoC

Other Awesome Lists

About

List of awesome open source hardware tools, generators, and reusable designs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%