Verilog to Routing
Developer(s)The VTR Development Team
Stable release
8.0.0 / 24 March 2020; 4 years ago (2020-03-24)
Written inC/C++
Operating systemUnix-like
TypeElectronic Design Automation
LicenseMIT License

Verilog-to-Routing (VTR) is an open source CAD flow for FPGA devices.[1][2][3] VTR's main purpose is to map a given circuit described in Verilog, a Hardware Description Language, on a given FPGA architecture for research and development purposes; the FPGA architecture targeted could be a novel architecture that a researcher wishes to explore, or it could be an existing commercial FPGA whose architecture has been captured in the VTR input format. The VTR project has many contributors, with lead collaborating universities being the University of Toronto, the University of New Brunswick, and the University of California, Berkeley . Additional contributors include Google, The University of Utah, Princeton University, Altera, Intel, Texas Instruments, and MIT Lincoln Lab.

VTR Flow

The VTR design flow usually consists of three main component applications: ODIN II which compiles Verilog code to a circuit in Berkeley Logic Interchange Format (BLIF), a human-readable graph representation of the circuit;[4] ABC which optimizes the BLIF circuit produced by ODIN II; and VPR which packs, places and routes the optimized circuit on the given FPGA architecture. There are some additional optional tools that can process the VTR output further. For example, the FASM FPGA Assembly tool can produce programming bitstreams for some commercial FPGAs (Xilinx Artix and Lattice ice40) at the end of the VTR flow, while the OpenFPGA tool integrates with VTR to produce a standard cell layout of a novel (proposed) FPGA. It is also possible to use different tools for the first (HDL synthesis) stage of the VTR flow; for example the Titan Flow [5] uses Quartus to perform the HDL to logic synthesis stage, and then VPR to perform placement and routing, while Symbiflow uses the Yosys synthesis tool followed by VPR placement and routing.


ODIN II is the HDL compiler of the VTR flow. It transforms a given Verilog code to a BLIF circuit, performs code and circuit optimizations, visualizes circuits,[6] and performs partial mapping of logic to available hard blocks of the given architecture. Also, it can simulate the execution of circuits both for validation as well as power, performance and heat analysis. ODIN II is maintained by the University of New Brunswick.[7]

From the Verilog to Routing website, it is noted: "Odin-II has been deprecated and will be removed in a future version. Now VTR uses Parmys as the default frontend which utilizes Yosys as elaborator with partial mapping features enabled."


ABC optimizes BLIF circuits by performing logic optimization and technology mapping. ABC is maintained by the University of California, Berkeley.[8]


Versatile Place and Route (VPR) is the final component of VTR. Its input is a BLIF circuit, which it packs, places and routes on an input FPGA architecture.

During packing, neighboring and related logic elements of the circuit are clustered together into Logic Blocks matching the hardware of the FPGA. During placement, these logic blocks as well as hard blocks are assigned to the available hardware resources of the FPGA. Finally, during routing the signal connections between blocks are made. VPR is primarily developed by the University of Toronto, with contributions from many other universities and companies.[9]


The FPGA Assembly (genfasm) tool will produce a programming bitstream from a VTR implementation (placement and routing of a circuit) on commercial architectures for which complete VTR architecture files describing the FPGA device have been produced. Currently this includes the Xilinx Artix and Lattice ice40 FPGA families. This tool is primarily developed by Google.

See also


  1. ^ Murray, Kevin E.; Petelin, Oleg; Zhong, Sheng; Wang, Jia Min; ElDafrawy, Mohamed; Legault, Jean-Philippe; Sha, Eugene; Graham, Aaron G.; Wu, Jean; Walker, Matthew J. P.; Zeng, Hanqing; Patros, Panagiotis; Luu, Jason; Kent, Kenneth B.; Betz, Vaughn (2020). "VTR 8: High Performance CAD and Customizable FPGA Architecture Modelling". ACM Transactions on Reconfigurable Technology and Systems. doi:10.1145/3388617. S2CID 218517896.
  2. ^ Luu, Jason; Ahmed, Nooruddin; Kent, Kenneth B.; Anderson, Jason; Rose, Jonathan; Betz, Vaughn; Goeders, Jeffrey; Wainberg, Michael; Somerville, Andrew; Yu, Thien; Nasartschuk, Konstantin; Nasr, Miad; Wang, Sen; Liu, Tim (2014). "VTR 7.0: Next Generation Architecture and CAD System for FPGAs". ACM Transactions on Reconfigurable Technology and Systems. 7 (2): 1–30. doi:10.1145/2617593. S2CID 14724049.
  3. ^ Rose, Jonathan; Luu, Jason; Yu, Chi Wai; Densmore, Opal; Goeders, Jeffrey; Somerville, Andrew; Kent, Kenneth B.; Jamieson, Peter; Anderson, Jason (2012). "The VTR project: Architecture and CAD for FPGAs from verilog to routing". Proceedings of the ACM/SIGDA international symposium on Field Programmable Gate Arrays - FPGA '12. p. 77. doi:10.1145/2145694.2145708. ISBN 9781450311557. S2CID 6971747.
  4. ^ "Berkeley logic interchange format (BLIF)". Oct Tools Distribution. 2: 197–247. 1992.
  5. ^ Murray, Kevin; Whitty, Scott; Liu, Suya; Luu, Jason; Betz, Vaughn (2015). "Timing-Driven Titan: Enabling Large Benchmarks and Exploring the Gap Between Academic and Commercial CAD". ACM Transactions on Reconfigurable Technology and Systems. 8 (2): 10. doi:10.1145/2629579. S2CID 17502221.
  6. ^ Nasartschuk, Konstantin; Herpers, Rainer; Kent, Kenneth B. (2012). "Visualization support for FPGA architecture exploration". 2012 23rd IEEE International Symposium on Rapid System Prototyping (RSP). pp. 128–134. doi:10.1109/RSP.2012.6380701. ISBN 978-1-4673-2789-3. S2CID 27165710.
  7. ^ Jamieson, Peter; Kent, Kenneth B.; Gharibian, Farnaz; Shannon, Lesley (2010). "Odin II - an Open-Source Verilog HDL Synthesis Tool for CAD Research". 2010 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines. pp. 149–156. doi:10.1109/FCCM.2010.31. ISBN 978-1-4244-7142-3. S2CID 9780102.
  8. ^ "A system for sequential synthesis and verification". Berkeley A. B. C. 2009.
  9. ^ "VPR: A new packing, placement and routing tool for FPGA research". Field-Programmable Logic and Applications. Springer Berlin Heidelberg. 1997.