Files
awesome-awesomeness/html/hdl.html
2025-07-18 23:13:11 +02:00

424 lines
18 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 id="awesome-hardware-description-languages">Awesome Hardware
Description Languages</h1>
<p>A curated list of amazingly awesome hardware description language
projects.</p>
<h1 id="hardware-development">Hardware development</h1>
<h2 id="hdl-doc">HDL doc</h2>
<ul>
<li>Verilog <a
href="https://inst.eecs.berkeley.edu/~cs150/fa06/Labs/verilog-ieee.pdf">IEEE
Std 1364-2001</a>, <a
href="http://sutherland-hdl.com/pdfs/verilog_2001_ref_guide.pdf">Quick
Ref Guide</a>, <a
href="http://www.ece.uah.edu/~gaede/cpe526/SystemVerilog_3.1a.pdf">SystemVerilog
3.1a</a>, <a
href="http://sutherland-hdl.com/papers/2013-SNUG-SV_Synthesizable-SystemVerilog_paper.pdf">Synthesizing
SystemVerilog Busting the Myth that SystemVerilog is only for
Verification</a></li>
<li>VHDL standards <a
href="http://edg.uchicago.edu/~tang/VHDLref.pdf">IEEE Std
1076-2000</a></li>
<li>SystemC standards <a
href="http://paginas.fe.up.pt/~ee07166/lib/exe/fetch.php?media=1666-2011.pdf">IEEE
Std 1666-2011</a></li>
</ul>
<h2 id="hdl-simulators-and-compilers">HDL simulators and compilers</h2>
<ul>
<li>Verilog
<ul>
<li><a href="https://www.veripool.org/wiki/verilator">Verilator</a>
Verilog to C++ transpiler</li>
<li><a href="http://iverilog.icarus.com/">Icarus Verilog</a> -
simulator</li>
<li><a href="http://www.clifford.at/yosys/">Yosys</a> - RTL
synthesis</li>
</ul></li>
<li>VHDL
<ul>
<li><a href="https://github.com/nickg/nvc">nvc</a> - GPLv3 VHDL compiler
and simulator, IEEE 1076-2002, written in C</li>
<li><a href="https://github.com/ghdl/ghdl">GHDL</a> - VHDL compiler and
simulator, IEEE 1076-2002, written in ADA</li>
</ul></li>
<li>chisel/firrtl
<ul>
<li><a href="https://github.com/ucsc-vama/essent">essent</a> - firrtl to
optimized C++ transpiler</li>
<li><a href="https://github.com/chipsalliance/treadle">treadle</a> -
firrtl simulator written in Scala</li>
</ul></li>
<li><a
href="https://inf.ethz.ch/personal/wirth/Lola/Lola2.pdf">Lola-2</a>
<ul>
<li><a href="https://inf.ethz.ch/personal/wirth/Lola/">Oberon-2013</a> -
Project Oberon, 2013 Edition, written in <a
href="http://www-oldurls.inf.ethz.ch/personal/wirth/Oberon/">Oberon-07</a>
<a
href="https://inf.ethz.ch/personal/wirth/ProjectOberon/license.txt">License</a></li>
</ul></li>
<li>CIRCT
<ul>
<li><a href="https://github.com/pku-liang/ksim">ksim</a> - CIRCT IR to
optimized C++ transpiler</li>
<li><a href="https://github.com/circt/arc-tests">arcilator</a> - Fast
and cycle-accurate hardware simulation in CIRCT</li>
</ul></li>
</ul>
<h2 id="meta-hdl-and-transpilers">Meta HDL and Transpilers</h2>
<ul>
<li>C++
<ul>
<li><a href="https://www.doulos.com/knowhow/systemc/">SystemC</a> - an
IEEE standard meta-HDL</li>
<li><a href="http://sysprogs.com/legacy/visualhdl/">VisualHDL</a> - an
integrated development environment (IDE) rapid design for FPGAs</li>
</ul></li>
<li>Dart
<ul>
<li><a href="https://github.com/intel/rohd">ROHD</a> - A framework for
hardware description and verification, 2021+</li>
</ul></li>
<li>Haskell
<ul>
<li><a href="https://github.com/conal/concat">concat</a> Haskell to
hardware, 2016+</li>
<li>https://github.com/conal/talk-2015-haskell-to-hardware</li>
<li><a href="https://github.com/clash-lang/clash-compiler">CλaSH</a> - A
functional hardware description language</li>
<li><a href="https://github.com/p12nGH/pipelineDSL">pipelineDSL</a> - A
Haskell DSL for describing hardware pipelines</li>
<li><a href="https://github.com/B-Lang-org/bsc">Bluespec</a> - Compiler,
simulator, and tools for the Bluespec Hardware Description
Language.</li>
<li><a href="https://github.com/zachjs/sv2v">sv2v</a> - SystemVerilog to
Verilog conversion</li>
</ul></li>
<li>Java
<ul>
<li><a href="http://www.jhdl.org/">jhdl</a> ..2006</li>
<li><a href="http://pshdl.org/">PSHDL</a></li>
</ul></li>
<li>JavaScript
<ul>
<li><a href="https://github.com/drom/reqack">reqack</a> - elastic
circuit toolchain</li>
<li><a href="https://github.com/DmitrySoshnikov/hdl-js">hdl-js</a> -
Hardware description language (HDL) parser, and Hardware simulator.</li>
<li><a href="https://github.com/jcbuisson/shdl">shdl</a> - Simple
Hardware Description Language</li>
</ul></li>
<li>Julia
<ul>
<li><a
href="https://github.com/interplanetary-robot/Verilog.jl">Julia-Verilog</a>
- a Verilog-generation DSL for Julia., 2017</li>
</ul></li>
<li>OCaml
<ul>
<li><a
href="https://github.com/janestreet/hardcaml/blob/master/docs/index.mdx">Hardcaml</a>
An OCaml library for designing hardware, complete with testing and
simulation tools.</li>
</ul></li>
<li>Kotlin
<ul>
<li><a href="https://github.com/frwang96/verik">Verik</a> HDL for design
and verification. generates SV. UVM.</li>
</ul></li>
<li>Python
<ul>
<li><a href="https://github.com/Nic30/hwt">HWT</a> Meta HDL,
verification env. IP-core generator, analysis tools, HDL glue</li>
<li><a href="https://github.com/StanfordAHA/garnet">garnet</a>
Coarse-Grained Reconfigurable Architecture generator based on magma,
2018+</li>
<li><a href="https://github.com/phanrahan/magma/">magma</a> - Meta HDL,
2017+</li>
<li><a href="https://github.com/m-labs/migen">migen</a> - Meta HDL,
2011+</li>
<li><a href="https://github.com/amaranth-lang/amaranth">Amaranth</a>
(previously nMigen) - A refreshed Python toolbox for building complex
digital hardware, 2018+</li>
<li><a href="https://github.com/myhdl/myhdl">MyHDL</a> - Process based
HDL, verification framework included, 2004+</li>
<li><a href="https://masc.soe.ucsc.edu/pyrope.html">Pyrope</a> -
Python-like language supporting “fluid pipelines” and “live flow”,
2017+</li>
<li><a href="https://github.com/UCSBarchlab/PyRTL">PyRTL</a> - Meta HDL,
simulator suitable for research.</li>
<li><a href="https://github.com/cornell-brg/pymtl">PyMTL</a> - Process
based HDL, verification framework included, 2014+</li>
<li><a href="https://github.com/PyHDI/veriloggen">veriloggen</a> -
Python, Verilog centric meta HDL with HLS like features, 2015-?</li>
<li><a href="https://github.com/dan-fritchman/Hdl21">Hdl21</a> - Analog
HDL in Python</li>
<li><a href="https://github.com/PyHGL/pyhgl">PyHGL</a> - Meta HDL,
three-state event-driven simulation, 2022+</li>
<li><a href="https://github.com/vagran/GateForge">GateForge</a> - Meta
HDL, 2025+</li>
</ul></li>
<li>Ruby
<ul>
<li><a href="https://github.com/philtomson/RHDL">RHDL</a></li>
</ul></li>
<li>Rust
<ul>
<li><a href="https://github.com/tcr/hoodlum">hoodlum</a> - Meta HDL,
2016+</li>
<li><a href="https://github.com/yupferris/kaze">kaze</a> - Meta HDL,
2019+</li>
<li><a href="https://github.com/cucapra/calyx">calyx</a> - Intermediate
Language (IL) for Hardware Accelerator Generators, 2020+</li>
<li><a href="https://gitlab.com/spade-lang/spade">Spade</a> - A hardware
description language inspired by modern software languages like
Rust.</li>
<li><a href="https://github.com/pku-liang/Cement">Cement</a> - A
rule-based Meta HDL inspired by Bluespec, 2024+</li>
</ul></li>
<li>Scala
<ul>
<li><a href="https://github.com/freechipsproject/chisel3">chisel</a> -
Meta HDL, 2012+</li>
<li><a href="https://github.com/SpinalHDL/SpinalHDL">SpinalHDL</a> -
Meta HDL 2012+</li>
</ul></li>
<li>C#
<ul>
<li><a href="https://github.com/EvgenyMuryshkin/qusoc">Quokka</a> - C#
to low-level RTL translator (Verilog, VHDL) and simulation toolkit
examples (gates, components, RISC-V, SoC)</li>
</ul></li>
<li>Veryl
<ul>
<li><a href="https://github.com/dalance/veryl">Veryl</a> - An original
HDL based on SystemVerilog / Rust syntax, and transplier to
SystemVerilog</li>
</ul></li>
</ul>
<h2 id="hls">HLS</h2>
<ul>
<li><a href="https://github.com/hlslibs">hlslibs</a> - ac_math, ac_dsp,
ac_types</li>
<li><a href="http://legup.eecg.utoronto.ca/">legup</a> - 2011-2015, LLVM
based c-&gt;verilog</li>
<li><a href="http://panda.dei.polimi.it/?page_id=31">bambu</a> - 2003-?,
GCC based c-&gt;verilog</li>
<li><a href="http://tima.imag.fr/sls/research-projects/augh/">augh</a> -
c-&gt;verilog, DSP support</li>
<li>https://github.com/utwente-fmt - abstract hls, verification
libraries</li>
<li><a href="https://github.com/etherzhhb/Shang">Shang</a> - 2012-2014,
LLVM based, c-&gt;verilog</li>
<li><a href="https://github.com/endrix/xronos">xronos</a> - 2012, java,
simple HLS</li>
<li><a href="https://github.com/SamuelBayliss/Potholes">Potholes</a> -
2012-2014 - polyhedral model preprocessor, Uses Vivado HLS, PET</li>
<li><a href="https://github.com/m8pple/hls_recurse">hls_recurse</a> -
2015-2016 - conversion of recursive fn. for stackless architectures</li>
<li><a href="https://github.com/funningboy/hg_lvl_syn">hg_lvl_syn</a> -
2010, ILP, Force Directed scheduler</li>
<li><a href="https://people.eecs.berkeley.edu/~alanmi/abc/">abc</a>
&lt;2008-?, A System for Sequential Synthesis and Verification</li>
<li><a href="https://github.com/ktok07b6/polyphony">polyphony</a> -
2015-2017, simple python to hdl</li>
<li><a href="https://github.com/ni/DelayGraph">DelayGraph</a> - 2016,
C#, register assignment algorithms</li>
<li><a href="https://github.com/dillonhuff/ahaHLS">ahaHLS</a> - 2019, An
open source high level synthesis (HLS) tool using LLVM</li>
<li><a
href="https://github.com/combinatorylogic/soc">combinatorylogic/soc</a>
- 2019, An experimental System-on-Chip with a custom compiler
toolchain.</li>
<li><a
href="https://github.com/EvgenyMuryshkin/QuokkaEvaluation">Quokka</a> -
C# to HL RTL translator</li>
<li><a href="https://github.com/Xilinx/HLS">Vitis</a> - LLVM based, made
by Xilinx. <a
href="https://www.xilinx.com/support/documentation/sw_manuals/xilinx2020_2/ug1399-vitis-hls.pdf">user
manual</a></li>
<li><a href="https://google.github.io/xls/">XLS</a> - 2020, HLS
toolchain from Google</li>
<li><a href="https://github.com/pku-liang/Hector">hector</a> - 2022, An
open-source hardware synthesis framework using MLIR</li>
</ul>
<h2 id="other-hdl-languages">Other HDL languages</h2>
<ul>
<li><a href="https://github.com/asyncvlsi/act">act</a> - asynchronous
circuit/compiler tools</li>
<li><a href="https://github.com/google/autopiper">autopiper</a></li>
<li><a href="https://github.com/sylefeb/Silice">Silice</a> - A language
for hardcoding algorithms into FPGA hardware</li>
<li><a href="https://makerchip.com">TL-Verilog</a> - 2015+, Supports
“timing-abstract” and “transaction-level design” methodologies;
supported by proprietary and open-source tools</li>
</ul>
<h2 id="hardware-intermediate-representations">Hardware Intermediate
Representations</h2>
<ul>
<li><a href="https://circt.llvm.org">CIRCT</a> - 2020+, LLVM / MLIR
framework “Circuit IR Compilers and Tools”</li>
<li><a href="https://github.com/rdaly525/coreir">coreir</a> - 2016-?,
LLVM HW compiler## License</li>
<li><a href="https://github.com/masc-ucsc/lgraph">lgraph</a> - 2017-?, A
Multi-Language Synthesis and Simulation IR for Hardware Design</li>
<li><a href="https://github.com/freechipsproject/firrtl">firrtl</a> -
2016-?, Flexible Intermediate Representation for RTL</li>
<li><a href="https://github.com/fabianschuiki/llhd">LLHD</a> - Low Level
Hardware Description — A foundation for building hardware design
tools</li>
<li><a href="https://byuccl.github.io/spydrnet/">SpyDrNet</a> - 2019+,
Framework for parsing and manipulating structural netlists in
Python</li>
<li><a href="https://github.com/Vlsir/Vlsir">VLSIR</a> - IC Interchange
Formats, defined in Google Protobuf SDL</li>
</ul>
<h2 id="synthesis-tools">Synthesis tools</h2>
<ul>
<li><a
href="https://github.com/verilog-to-routing/vtr-verilog-to-routing">vtr-verilog-to-routing</a></li>
<li><a href="https://github.com/YosysHQ/yosys">yosys</a> - RTL synthesis
framework</li>
</ul>
<h2 id="visualization-and-documentation-generators">Visualization and
Documentation generators</h2>
<ul>
<li><a href="https://github.com/drom/bitfield">bitfield</a> - Javascript
bit field diagram renderer</li>
<li><a href="https://github.com/Nic30/d3-wave">d3-wave</a> - Javascript
wave graph visualizer for RTL simulations</li>
<li><a href="https://github.com/Nic30/d3-hwschematic">d3-hwschematic</a>
- Javascript hierarchical schematic visualizer for HDLs</li>
<li><a href="https://github.com/drom/wavedrom">wavedrom</a> - Javascript
wave graph visualizer for documentations and sim.</li>
<li><a href="https://github.com/nturley/netlistsvg">netlistsvg</a> -
Javascript schematic visualizer</li>
<li><a href="https://github.com/Nic30/sphinx-hwt">sphinx-hwt</a> -
Plugin for sphinx documentation generator which adds schematic into html
documentation.</li>
<li><a href="https://redwoodeda.com/viz">Visual Debug</a> - Custom
simulation visualization framework, available within the <a
href="https://makerchip.com">Makerchip.com</a> IDE.</li>
</ul>
<h2 id="hdl-parsers">HDL parsers</h2>
<ul>
<li><a href="https://github.com/Nic30/hdlConvertor">hdlConvertor</a> -
Fast (System) Verilog/VHDL parser written as C++ extension for
Python</li>
<li><a href="https://github.com/Paebbels/pyVHDLParser">pyVHDLParser</a>
- VHDL parser written in Python</li>
<li><a href="https://github.com/kraigher/rust_hdl">rust_hdl</a> - VHDL
parser and language server written in Rust</li>
<li><a href="https://github.com/dalance/sv-parser">sv-parser</a> - IEEE
1800-2017 System Verilog Parser written in Rust</li>
<li><a href="https://chipsalliance.github.io/verible/">verible</a> -
Verible provides a SystemVerilog parser, style-linter, and
formatter.</li>
<li><a href="https://github.com/MikePopoloski/slang">slang</a> -
SystemVerilog compiler and language service.</li>
<li><a href="https://github.com/PyHDI/Pyverilog">pyverilog</a> -
Python-based Hardware Design Processing Toolkit for Verilog HDL</li>
<li><a href="https://github.com/chipsalliance/Surelog">Surelog</a> -
SystemVerilog 2017 Pre-processor, Parser, Elaborator, UHDM Compiler.
Provides IEEE Design/TB C/C++ VPI and Python AST API.</li>
</ul>
<h2 id="other-simulation-tools">Other Simulation tools</h2>
<ul>
<li><a href="https://github.com/ucb-bar/midas">midas</a> -
FPGA-Accelerated Simulation Framework Automatically Transforming
Arbitrary RTL</li>
<li><a href="https://github.com/potentialventures/cocotb">cocotb</a> - A
coroutine based co-simulation library for writing VHDL and Verilog
testbenches in Python</li>
<li><a href="https://github.com/OSVVM/OsvvmLibraries">osvvm</a> - A VHDL
verification framework, verification utility library, verification
component library, and a simulator independent scripting flow</li>
<li><a href="https://github.com/OSVVM/OsvvmLibraries">uvvm</a> - A free
and Open Source Methodology and Library for VHDL verification of FPGA
and ASIC.</li>
<li><a href="https://github.com/antmicro/crave">crave</a> - Constrained
random stimuli generation for C++ and SystemC (AntMicros fork of <a
href="https://github.com/agra-uni-bremen/crave">crave</a>)</li>
</ul>
<h2 id="other-design-automation-tools">Other Design Automation
tools</h2>
<ul>
<li><a href="https://github.com/SystemRDL/PeakRDL">peakrdl</a> - CSR
toolchain to generate RTL, UVM RAL models, document(html and markdown),
IPXACT, c header from SystemRDL or IPXACT.</li>
<li><a href="https://github.com/rggen/rggen">RgGen</a> - Code generator
tool to generate RTL, UVM RAL models and Wiki documents from CSR
specifications</li>
<li><a href="https://symbiflow.github.io/sv-tests">sv-tests</a> - Test
suite designed to check compliance with the SystemVerilog standard</li>
<li><a href="https://github.com/prasadp4009/tbengy">tbengy</a> - Code
generator tool to generate SV/UVM RTL and Testbech as well scripts with
support for bitstream generation for Digilent FPGAs</li>
<li><a href="https://github.com/WilsonChen003/HDLGen">HDLGen</a> - Tool
for processing of embedded Perl or Python scripts in Verilog source
code.</li>
<li><a href="https://github.com/olofk/fusesoc">fusesoc</a> - Package
manager and a set of build tools for HDL.</li>
<li><a href="https://github.com/pulp-platform/bender">bender</a> -
Dependency management tool for hardware design projects.</li>
<li><a href="https://github.com/m-kru/hbs">hbs</a> - A lean dependency
management and build system for hardware description projects.</li>
<li><a href="https://github.com/dalance/svlint">svlint</a> -
SystemVerilog linter compliant with IEEE1800-2017. Written in Rust,
based on <a
href="https://github.com/dalance/sv-parser">sv-parser</a>.</li>
</ul>
<h2 id="pss-portable-test-and-stimulus-standard">PSS : Portable test and
Stimulus Standard</h2>
<ul>
<li><a
href="https://www.accellera.org/downloads/standards/portable-stimulus">Accellera</a>
- specification to create a single representation of stimulus and test
scenarios</li>
<li><a
href="https://www.accellera.org/images/downloads/standards/pss/Portable_Test_Stimulus_Standard_v2.1.pdf">PSS
2.1 LRM</a> - PDF Spec</li>
<li><a href="https://github.com/PSSTools">PSSTools Org</a> - PSS
releated tools on GitHub. Parsers, editor plugins.</li>
<li><a href="https://github.com/mballance">Matthew Ballance</a> PSS Blog
posts:
<ul>
<li><a
href="https://bitsbytesgates.com/pss/2023/02/25/AutomatingBareMetalTestsWithPSS.html">Automating
Bare-Metal Tests with PSS</a></li>
<li><a
href="https://bitsbytesgates.com/pss/2023/03/03/ActionsComponents_and_TestGeneration.html">PSS
Fundamentals: Actions, Components, and Test Generation</a></li>
<li><a
href="https://bitsbytesgates.com/pss/2023/03/11/DeclarativeMultiCoreTests.html">Declarative
Programming and Multi-Core Tests</a></li>
<li><a
href="https://bitsbytesgates.com/pss/2023/03/18/RelatingActionsWithDataflow.html">Relating
Actions with Dataflow</a></li>
<li><a
href="https://bitsbytesgates.com/pss/2023/03/25/ModelingTestScenariosForDMA.html">Modeling
DMA Test Scenarios with PSS</a></li>
<li><a
href="https://bitsbytesgates.com/pss/2023/04/02/ManagingMemoryInPSS.html">PSS
Memory Management Fundamentals</a></li>
<li><a
href="https://bitsbytesgates.com/pss/2023/04/09/PSSConcurrencyAndResources.html">PSS
Concurrency and Resources</a></li>
<li><a
href="https://bitsbytesgates.com/pss/2023/04/18/InteractingWithDevicesViaRegisters.html">Interacting
with Devices via PSS Registers</a></li>
<li><a
href="https://bitsbytesgates.com/pss/2023/05/07/RelatingActionsWithDataflowPart2.html">Relating
Actions with Dataflow Part2 Parallelism</a></li>
</ul></li>
<li><a href="https://github.com/LeeKaiXuan/PSS_Cookbook">PSS
CookBook</a> - Documentation for introducing the usage of PSS
language</li>
</ul>
<h2 id="license">License</h2>
<p><a href="https://creativecommons.org/publicdomain/zero/1.0/"><img
src="cc-zero.svg" alt="CC0" /></a></p>
<p>To the extent possible under law, <a href="http://drom.io">Aliaksei
Chapyzhenka</a> has waived all copyright and related or neighboring
rights to this work.</p>
<p><a href="https://github.com/drom/awesome-hdl">hdl.md Github</a></p>