Vhd2vl is designed to translate synthesizable VHDL into Verilog 2001. It does not support the full VHDL grammar - most of the testbench-related features have been left out.

This page documents the project before its move to github. Go there for the most up-to-date source code.

While different synthesizers support slightly different templates and language subsets, the basic pattern of expressing logic within the language is pretty clear. vhd2vl supports

Most comments are carried over to the Verilog output. There are no size limits built into the program; the practical limits to VHDL input size are unknown. The most important VHDL constructs missing from this version are

See the included README.txt file for a longer list of missing features and known incorrect output.

Syntax and semantics are not carefully checked. vhd2vl assumes that the input is error-free; it's not hard to write erroneous VHDL where the errors propagate to the Verilog.

Vhd2vl is written using lex (actually Flex), yacc (actually Bison), and C. It should build and run in just about any POSIX-compatible environment.

Vhd2vl is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Download - please refer to the project's github page.


There is no dedicated mailing list for vhd2vl support. The best place for public questions and discussions is the geda-user mailing list, since the maintainer and other people with relevant expertise hang out there. You can also contact the maintainer (Larry Doolittle, see the link below) directly.

Release history and links

Vincenzo's only release, v1.0, from 2004: Ocean Logic's download page, and source code from my mirror (18k .tar.gz)

Vincenzo has an un-released v1.1 that he kindly sent me.

My first update, v1.2, from 2005: source code (18k .tar.gz)

Mark Gonzales' update, v2.0, from 2006: also on Ocean Logic's download page, and source code from my mirror (30k .tar.gz). This version built from v1.0, not v1.2.

Preliminary (April 2008) patches to bring Mark's 2.0 code up to the level I needed.

Steve Haynal has an unreleased v2.1 that was forwarded to me. It has some interesting features, but I chose not to include any of them in v2.2.

My second update, v2.2, from 2009: source code (40k .tar.gz)

My third update, v2.3, from 2010: source code (43k .tar.gz)

My fourth update, v2.4, from 2010: source code (45k .tar.gz)

My fifth (small) update, v2.5, from 2015: source code (46k .tar.gz)

Work beyond v2.5 is checked-in to github. You should find a copy labeled v3.0 (2017) there, and over a hundred further commits, many of them written by Rodrigo Alejandro Melo. This should supercede the version posted by pliu6.

Change log for v2.5.

Jan 14, 2023
Larry Doolittle