Verilog-to-Routing

{{Short description|Verilog-to-Routing (VTR) is an open source CAD flow for FPGA devices}}

{{Infobox software

| name = Verilog to Routing

| logo =

| logo alt =

| screenshot =

| caption =

| screenshot alt =

| collapsible =

| author =

| developer = The VTR development team

| released =

| discontinued =

| latest release version = 8.0.0

| latest release date = {{Start date and age|2020|03|24|df=yes}}

| latest preview version =

| latest preview date =

| programming language = C/C++

| operating system = Unix-like

| platform =

| size =

| language =

| language count =

| language footnote =

| genre = Electronic design automation

| license = MIT License

| alexa =

| website = {{URL|http://verilogtorouting.org}}

| standard =

| AsOf =

}}

Verilog-to-Routing (VTR) is an open source CAD flow for FPGA devices.{{Cite journal |title = VTR 8: High Performance CAD and Customizable FPGA Architecture Modelling|journal = ACM Transactions on Reconfigurable Technology and Systems|year = 2020|last1 = Murray|first1 = Kevin E.|last2 = Petelin|first2 = Oleg|last3 = Zhong|first3 = Sheng|last4 = Wang|first4 = Jia Min|last5 = ElDafrawy|first5 = Mohamed|last6 = Legault|first6 = Jean-Philippe|last7 = Sha|first7 = Eugene|last8 = Graham|first8 = Aaron G.|last9 = Wu|first9 = Jean|last10 = Walker|first10 = Matthew J. P.|last11 = Zeng|first11 = Hanqing|last12 = Patros|first12 = Panagiotis|last13 = Luu|first13 = Jason|last14 = Kent|first14 = Kenneth B.|last15 = Betz|first15 = Vaughn| doi=10.1145/3388617 | s2cid=218517896 }}{{Cite journal |doi = 10.1145/2617593|title = VTR 7.0: Next Generation Architecture and CAD System for FPGAs|journal = ACM Transactions on Reconfigurable Technology and Systems|volume = 7|issue = 2|pages = 1–30|year = 2014|last1 = Luu|first1 = Jason|last2 = Ahmed|first2 = Nooruddin|last3 = Kent|first3 = Kenneth B.|last4 = Anderson|first4 = Jason|last5 = Rose|first5 = Jonathan|last6 = Betz|first6 = Vaughn|last7 = Goeders|first7 = Jeffrey|last8 = Wainberg|first8 = Michael|last9 = Somerville|first9 = Andrew|last10 = Yu|first10 = Thien|last11 = Nasartschuk|first11 = Konstantin|last12 = Nasr|first12 = Miad|last13 = Wang|first13 = Sen|last14 = Liu|first14 = Tim| s2cid=14724049 }}{{Cite book |doi = 10.1145/2145694.2145708|chapter =The VTR project: Architecture and CAD for FPGAs from verilog to routing |title = Proceedings of the ACM/SIGDA international symposium on Field Programmable Gate Arrays - FPGA '12|pages = 77|year = 2012|last1 = Rose|first1 = Jonathan|last2 = Luu|first2 = Jason|last3 = Yu|first3 = Chi Wai|last4 = Densmore|first4 = Opal|last5 = Goeders|first5 = Jeffrey|last6 = Somerville|first6 = Andrew|last7 = Kent|first7 = Kenneth B.|last8 = Jamieson|first8 = Peter|last9 = Anderson|first9 = Jason|isbn = 9781450311557|s2cid =6971747 }} 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;{{cite journal | title = Berkeley logic interchange format (BLIF) |journal = Oct Tools Distribution|volume=2|pages=197–247|year=1992}} 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{{cite journal | title = Timing-Driven Titan: Enabling Large Benchmarks and Exploring the Gap Between Academic and Commercial CAD | journal = ACM Transactions on Reconfigurable Technology and Systems |volume=8 |issue=2 |page=10| year = 2015 |last1 = Murray | first1 = Kevin | last2 = Whitty | first2 = Scott | last3 = Liu | first3 = Suya | last4 = Luu | first4 = Jason | last5 = Betz | first5 = Vaughn |doi=10.1145/2629579| s2cid = 17502221 }} uses Quartus to perform the HDL to logic synthesis stage, and then VPR to perform placement and routing, while [https://symbiflow.github.io/ Symbiflow] uses the [http://www.clifford.at/yosys/ Yosys] synthesis tool followed by VPR placement and routing.

= ODIN II =

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,{{Cite book |doi = 10.1109/RSP.2012.6380701|chapter = Visualization support for FPGA architecture exploration|title = 2012 23rd IEEE International Symposium on Rapid System Prototyping (RSP)|pages = 128–134|year = 2012|last1 = Nasartschuk|first1 = Konstantin|last2 = Herpers|first2 = Rainer|last3 = Kent|first3 = Kenneth B.|isbn = 978-1-4673-2789-3| s2cid=27165710 }} 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.{{Cite book |doi = 10.1109/FCCM.2010.31|chapter = Odin II - an Open-Source Verilog HDL Synthesis Tool for CAD Research|title = 2010 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines|pages = 149–156|year = 2010|last1 = Jamieson|first1 = Peter|last2 = Kent|first2 = Kenneth B.|last3 = Gharibian|first3 = Farnaz|last4 = Shannon|first4 = Lesley|isbn = 978-1-4244-7142-3| s2cid=9780102 }}

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."{{cite web

|url = https://docs.verilogtorouting.org/en/latest/odin

|title = Odin II

|language = en

|access-date = 17 January 2025}}

= ABC =

ABC optimizes BLIF circuits by performing logic optimization and technology mapping. ABC is maintained by the University of California, Berkeley.{{cite journal | title = A system for sequential synthesis and verification |journal = Berkeley A. B. C. |year=2009}}

= VPR =

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.{{cite journal | title = VPR: A new packing, placement and routing tool for FPGA research |journal = Field-Programmable Logic and Applications|volume=Springer Berlin Heidelberg|year=1997}}

= FASM =

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

References

{{Reflist}}