Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

俺様FPGAの開発ツールVTR : Verilog to Routingとは?

@Vengineerの戯言 : Twitter SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった 

はじめに

今日は、一昨日(SymbiFlow)と昨日(OpenFPGA)で使われているツールである VTR : Verilog to Routing について、調べてみました。

VTR

VTR : Verilog to Routing

  • ODIN II : ODIN II is the HDL compiler of the VTR flow
  • ABC : ABC optimizes BLIF circuits
  • VPR : Versatile Place and Route (VPR)
  • FASM : FPGA Assembly (genfasm)

のツールから構成されています。

ちょっと古いのがこちら => VPR and T-VPack: Versatile Packing, Placement and Routing for FPGAs

VPR is a placement and routing tool for array-based FPGAs, and T-VPack is a logic block packing (clustering) program. VPR was written to allow circuits to be placed and routed on a wide variety of FPGAs to facilitate comparisons of different architectures. It takes two input files, a netlist describing the circuit to be placed and routed, and a description of the FPGA architecture. Optionally, one can also input a placement file to VPR if one desires that an existing placement be routed only.

VPR : Versatile Place and Route

メインとなるのが、VPRです。VPRは、

  • Pack
  • Place
  • Route
  • Analysis

のフローにて実行されます。

VPRのドキュメント

VPR の最初の論文は、1997年のFPL97の VPR: A New Packing, Placement and Routing Tool for FPGA Research1ぽいです。 この論文によると、

  • Place Circuit or Read in Existing Placement
  • Perform either Global or Combined Global / Detailed Routing

の2ステップの図になっていました。

2020年のプレゼンテーション資料 では、VPR 8.0:[Verilog to Routing (VTR): A Flexible Open-Source CAD Flow to Explore and Target Diverse FPGA Architectures] (https://www.eecg.utoronto.ca/~vaughn/papers/vlsi_soc_2020_vtr.pdf)になっています。

Placeには、Adaptive FPGA Placement Optimization via Reinforcement Learning, MLCAD2019が、 Routeには、AIR: A Fast but Lazy Timing-Driven FPGA Router, ASPDAC2020が、 導入されているようです。

おわりに

VPRの最初の論文が1997年なので24年も同じ研究を続けているのって、凄いですね。。。

VPRの開発者のVaughn Betz さんの博士論文(1998年)、Architecture and CAD for Speed and Area Optimization of FPGAs Advisor : Johnathon Rose -san

FPGA Architectures: An Overview

SPEED AND AREA TRADE-OFFS IN CLUSTER-BASED FPGA ARCHITECTURES