Hardware Definition Languages
There are many different languages for defining digital circuits, not just Verilog and VHDL. They will be iscussed here.
Verilog. View
Verilog is growing in popularity.
Anyone can post Verilog there. Here are some of the higher quality repositories for video processing. It is expected that more will be added to this list.
The Brilliant Lab’s SDK runs on the Frame glasses which include a camera, a display, a bluetooth microcontroller, and an DPGA. The Verilog SDK has a complete pipeline. Of particular interest are the MPEG compression circuits.
Litex provides color space conversion between RGB and YCbCr.
VHDL. View
VHDL appears to be a shrinking market, but its static type checking is great for catching errors.
Debugging circuits is so hard, anything one can do to help makes sense.
I remember asking all of my provessors the same question. Which do they prefer: Verilog or VHDL? Nobody stood up for VHDL.
The high speed frme buffers on the ULX4M are all in VHDL. GPL License.
ECP5 DVI I/O can be found In the examples directory for the popular ULX3M board. There is VHDL code for DVI out, with a Verilog wrapper. DVI out supports 24 bit 1920*1080 frames @30 FPS. The design uses the I/O blocks which were designed for controlling DDR memory using a clock source from the FPGA.
FPGA-LCD-Driver fork by Gohran Mahovlic is a VHDL library for GateMate which uses an LVDS signal to drive a TFT LCD display with a test pattern.
Litex. View
Litex has the most amazing collection of heavily used and tested open source modules. I recommend that you pay close attention to it.
There are many Verilog libraries on Github, but most of them are barely used. Litexi is very heavily used, and talked about, so I do recommend it.
For a long time I did not understand how important Litex is. It is based on a Python based HDL called Migen. Many years ago I took a look at Migen, and was not excited about it. There was the Amaranth fork of Migen, which indicated that something in Migen needed to change. There are so many HDLs, so it is hard to choose one. Maybe the functional programming languages are a better fit for Verilog generation. What I completly missed is the tremendous value in the modules created by Litex. We FPGA developers do not need the fanciest HDL langauge. We need large libraries of well tested and used modules.
So don't repeat my mistake, and do please pay close attention to Litex.
Clash. View
Clash is based on a functinoal programming language Haskell and generates VHDL or Verilog. Haskell's static type checking catches many errors very early in the process.
Pipeline-C. View
Pipeline-C makes FPGAs accessible to C developers.
From their github repository. Pipeline-C is:
A C-like(1) hardware description language (HDL)(2) adding high level synthesis(HLS)-like automatic pipelining(3) as a C language construct/compiler feature.
FDF Tools and Libraries. View
CERN FPGA Developer's Forum recommended list of tools and libraries.
Only actively supported and regularly maintained tools will be advertised there.
DVI RTL Libraries. View
This article lists and evaluates the various libraries for driving DVI output from FPGAs. My goal is to help both of us choose the right library for our applications.
There are five parts to a DVI library.
- Clock Generation: DVI has very specific allowed frequences. The clock generation module needs to generate a legal clock signal.
- Timing: DVI and HDMI have very specific allowed pixel dimensions, front and back porch sizes, and durations for the horizontal and vertical sync signals. The timing module needs to generate these signals.
- Pattern Generation: The library should generate a test pattern. People expect vertical color bars, but other test patterns work just as well.
- TMDS Encoding. This Wikipedia page has a good description of how TMDS encodes the video signal works.
- Simulator: In order to assist in test bench development, it is very helpful for the DVI library to also provide a cross-platform simulation environment.
Requirements
Everyone's needs are different. As an example let me give my requirements. I am looking for both Verilog and VHDL versions of the library, using a CERN permissive license, and with simulation tools running on Mac OS. I want it to work on the IcePi Zero. I like a large installed base, I am less concerned about formal verification. I prefer to avoid AI generated libraries; I do not trust them, and the IP provenance is not clearly defined. In production, I expect to only use the TMDS module.
Here are some of the options.
ULX3S DVI
The most famous DVI library for open source projects is the one used by the ULX3S community. It is heavily used, and I completely trust its maturity. It supports a wide range of monitor. sizes and a few frequencies. It is written in VHDL, and comes with a Verilog wrapper. It has a very permissive license.
Pile of Cores
Pile of Cores is a VHDL library recommended by CERN, and included in the Open Source VHDL Group Collection
Bruce Levy's "Learn FPGA"
Bruce Levy does a great job teaching FPGA technologies, assisted by MeCrisp ice author @mecrisp. Check out his HDMI repository
IcePi Zero DVI
Here is the DVI library from the Ice Pi Zero repository. It has two advantages. It is in Verilog, not VHDL, and it includes a simulator. It only supports 640 * 480. It was completely written by @cyao over the course of 7 commits. It uses an Apache license with some additional terms.
Hardware Definition Language Libraries
There are many hardware definition languages (HDLs). It is expected that many of them include DVI libraries. Which one should you choose? Well that depends. What programming languages do you know? Python is a popular langauge, and it supports MyHDL, MiGen and Amaranth libraries. Ammaranth is a fork of Migen. Of those Ammaranth is the most technically interesting, but Litex running on Migen has the largest market share and installed base.
Litex
Litex is perhaps the best known of the HDL libraries. It is based on the Migen Python HDL. Litex supports DVI. Litex generates both Verilog but not VHDL. Litex is licensed under a BSD two clause license, but I believe that you are free to release the RTL generated by Litex however you wish. The Litex board support files include the IcePi Zero.
Other Libraries
There are a number of other Verilog DVI libraries and VHDL DVI Libraries listed on Github. Too many for one person to review them all. Can you recommend any of them?
Sadly, as of June 18, 2026 searching on CodeBerg is disabled for anonymous users.
Vendor Libraries
Many fpga vendors have proprietary synthesis tools, with proprietary DVI libraries. They may be easy to use, but they are not portable to other platforms, increase vendor lock-in and should be avoided.
And the winner is
I am not sure. I thought it would be an HDL which generated both Verilog and VHDL. I considered Litex, but it only generates Verilog, not VHDL. Currently my first choice is the Bruce Levy version for Verilog and a separate VHDL timing module from the ULX3S DVI library. My second choice for Verilog is to use Litex. What is your advice?
Hardware Solutions
There are also hardware solutions for converting parallel signals to DVI output.
Authorship
This page was written by a human, and critiqued by two AIs.
Built with the Forest WIki.
User contributed content is licensed under a
Creative Commons CC By 4.0 License.