Skip to content

Releases: verilog-to-routing/vtr-verilog-to-routing

v9.0.0

06 Jan 16:32
0b20db9
Compare
Choose a tag to compare

Added
Support for Advanced Architectures:

  • 3D FPGA and RAD architectures.
  • Architectures with hard Networks-on-Chip (NoCs).
  • Distinct horizontal and vertical channel widths and types.
  • Diagonal routing wires and other complex wire shapes (L-shaped, T-shaped, ....).

New Benchmark Suites:

  • Koios: A deep-learning-focused benchmark suite with various design sizes.
  • Hermes: Benchmarks utilizing hard NoCs.
  • TitanNew: Large benchmarks targeting the Stratix 10 architecture.

Commercial FPGAs Architecture Captures:

  • Intel’s Stratix 10 FPGA architecture.
  • AMD’s 7-series FPGA architecture.

Parmys Logic Synthesis Flow:

  • Better Verilog language coverage
  • More efficient hard block mapping

VPR Graphics Visualizations:

  • New interface for improved usability and underlying graphics rewritten using EZGL/GTK to allow more UI widgets.
  • Algorithm breakpoint visualizations for placement and routing algorithm debugging.
  • User-guided (manual) placement optimization features.
  • Enabled a live connection for client graphical application to VTR engines through sockets (server mode).
  • Interactive timing path analysis (IPA) client using server mode.

Performance Enhancements:

  • Parallel router for faster inter-cluster routing or flat routing.
  • Re-clustering API to modify packing decisions during the flow.
  • Support for floorplanning and placement constraints.
  • Unified intra- and inter-cluster (flat) routing.
  • Comprehensive web-based VTR utilities and API documentation.

Changed

  • The default values of many command line options (e.g. inner_num is 0.5 instead of 1.0)
  • Changes to placement engine
    • Smart centroid initial placement algorithm.
    • Multiple smart placement directed moves.
    • Reinforcement learning-based placement algorithm.
  • Changes to routing engine
    • Faster lookahead creation.
    • More accurate lookahead for large blocks.
    • More efficient heap and pruning strategies.
    • max pres_fac capped to avoid possible numeric issues.

Fixed
Many algorithmic and coding bugs are fixed in this release
Removed
Breadth-first (non-timing-driven) router.
Non-linear congestion placement cost.

FCCM 2023 NoC Placement

12 Apr 20:52
7a96762
Compare
Choose a tag to compare
Pre-release

Code version used to create FCCM 2023 paper on "Placement Optimization for NoC-Enhanced FPGAs" by Srivatsan Srinivasan, Andrew Boutros and Sara Mahmoudi. Creating a release so there is a versioned artifact. This release includes the VTR code, the synthetic NoC benchmarks, the mlp NoC benchmark, and various scripts and READMEs.

VTR 8.0.0

24 Mar 18:14
Compare
Choose a tag to compare

Added

  • Support for arbitrary FPGA device grids/floorplans
  • Support for clustered blocks with width > 1
  • Customizable connection-block and switch-blocks patterns (controlled from FPGA architecture file)
  • Fan-out dependent routing mux delays
  • VPR can generate/load a routing architecture (routing resource graph) in XML format
  • VPR can load routing from a .route file
  • VPR can performing analysis (STA/Power/Area) independently from optimization (via vpr --analysis)
  • VPR supports netlist primitives with multiple clocks
  • VPR can perform hold-time (minimum delay) timing analysis
  • Minimum delays can be annotated in the FPGA architecture file
  • Flow supports formal verification of circuit implementation against input netlist
  • Support for generating FASM to drive bitstream generators
  • Routing predictor which predicts and aborts impossible routings early (saves significant run-time during minimum channel width search)
  • Support for minimum routable channel width 'hints' (reduces minimum channel width search run-time if accurate)
  • Improved VPR debugging/verbosity controls
  • VPR can perform basic netlist cleaning (e.g. sweeping dangling logic)
  • VPR graphics visualizations:
    • Critical path during placement/routing
    • Cluster pin utilization heatmap
    • Routing utilization heatmap
    • Routing resource cost heatmaps
    • Placement macros
  • VPR can route constant nets
  • VPR can route clock nets
  • VPR can load netlists in extended BLIF (eBLIF) format
  • Support for generating post-placement timing reports
  • Improved router 'map' lookahead which adapts to routing architecture structure
  • Script to upgrade legacy architecture files (vtr_flow/scripts/upgrade_arch.py)
  • Support for Fc overrides which depend on both pin and target wire segment type
  • Support for non-configurable switches (shorts, inline-buffers) used to model structures like clock-trees and non-linear wires (e.g. 'L' or 'T' shapes)
  • Various other features since VTR 7

Changed

  • VPR will exit with code 1 on errors (something went wrong), and code 2 when unable to implement a circuit (e.g. unroutable)
  • VPR now gives more complete help about command-line options (vpr -h)
  • Improved a wide variety of error messages
  • Improved STA timing reports (more details, clearer format)
  • VPR now uses Tatum as its STA engine
  • VPR now detects missmatched architecture (.xml) and implementation (.net/.place/.route) files more robustly
  • Improved router run-time and quality through incremental re-routing and improved handling of high-fanout nets
  • The timing edges within each netlist primitive must now be specified in the section of the architecture file
  • All interconnect tags must have unique names in the architecture file
  • Connection block input pin switch must now be specified in section of the architecture file
  • Renamed switch types buffered/pass_trans to more descriptive tristate/pass_gate in architecture file
  • Require longline segment types to have no switchblock/connectionblock specification
  • Improve naming (true/false -> none/full/instance) and give more control over block pin equivalnce specifications
  • VPR will produce a .route file even if the routing is illegal (aids debugging), however analysis results will not be produced unless vpr --analsysis is specified
  • VPR long arguments are now always prefixed by two dashes (e.g. --route) while short single-letter arguments are prefixed by a single dash (e.g. -h)
  • Improved logic optimization through using a recent 2018 version of ABC and new synthesis script
  • Significantly improved implementation quality (~14% smaller minimum routable channel widths, 32-42% reduced wirelength, 7-10% lower critical path delay)
  • Significantly reduced run-time (~5.5-6.3x faster) and memory usage (~3.3-5x lower)
  • Support for non-contiguous track numbers in externally loaded RR graphs
  • Improved placer quality (reduced cost round-off)
  • Various other changes since VTR 7

Fixed

  • FPGA Architecture file tags can be in arbitary orders
  • SDC command arguments can be in arbitary orders
  • Numerous other fixes since VTR 7

Removed

  • Classic VPR timing analyzer
  • IO channel distribution section of architecture file

Deprecated

  • VPR's breadth-first router (use the timing-driven router, which provides supperiour QoR and Run-time)

v8.0.0-rc2

01 Aug 22:51
Compare
Choose a tag to compare
v8.0.0-rc2 Pre-release
Pre-release

Changed

  • Support for non-contiguous track numbers in externally loaded RR graphs
  • Improved placer quality (reduced cost round-off)

v8.0.0-rc1

13 Jun 18:44
Compare
Choose a tag to compare
v8.0.0-rc1 Pre-release
Pre-release

Added

  • Support for arbitrary FPGA device grids/floorplans
  • Support for clustered blocks with width > 1
  • Customizable connection-block and switch-blocks patterns (controlled from FPGA architecture file)
  • Fan-out dependent routing mux delays
  • VPR can generate/load a routing architecture (routing resource graph) in XML format
  • VPR can load routing from a .route file
  • VPR can performing analysis (STA/Power/Area) independently from optimization (via vpr --analysis)
  • VPR supports netlist primitives with multiple clocks
  • VPR can perform hold-time (minimum delay) timing analysis
  • Minimum delays can be annotated in the FPGA architecture file
  • Flow supports formal verification of circuit implementation against input netlist
  • Support for generating FASM to drive bitstream generators
  • Routing predictor which predicts and aborts impossible routings early (saves significant run-time during minimum channel width search)
  • Support for minimum routable channel width 'hints' (reduces minimum channel width search run-time if accurate)
  • Improved VPR debugging/verbosity controls
  • VPR can perform basic netlist cleaning (e.g. sweeping dangling logic)
  • VPR graphics visualizations:
    • Critical path during placement/routing
    • Cluster pin utilization heatmap
    • Routing utilization heatmap
    • Routing resource cost heatmaps
    • Placement macros
  • VPR can route constant nets
  • VPR can route clock nets
  • VPR can load netlists in extended BLIF (eBLIF) format
  • Support for generating post-placement timing reports
  • Improved router 'map' lookahead which adapts to routing architecture structure
  • Script to upgrade legacy architecture files (vtr_flow/scripts/upgrade_arch.py)
  • Support for Fc overrides which depend on both pin and target wire segment type
  • Support for non-configurable switches (shorts, inline-buffers) used to model structures like clock-trees and non-linear wires (e.g. 'L' or 'T' shapes)
  • Various other features since VTR 7

Changed

  • VPR will exit with code 1 on errors (something went wrong), and code 2 when unable to implement a circuit (e.g. unroutable)
  • VPR now gives more complete help about command-line options (vpr -h)
  • Improved a wide variety of error messages
  • Improved STA timing reports (more details, clearer format)
  • VPR now uses Tatum as its STA engine
  • VPR now detects missmatched architecture (.xml) and implementation (.net/.place/.route) files more robustly
  • Improved router run-time and quality through incremental re-routing and improved handling of high-fanout nets
  • The timing edges within each netlist primitive must now be specified in the section of the architecture file
  • All interconnect tags must have unique names in the architecture file
  • Connection block input pin switch must now be specified in section of the architecture file
  • Renamed switch types buffered/pass_trans to more descriptive tristate/pass_gate in architecture file
  • Require longline segment types to have no switchblock/connectionblock specification
  • Improve naming (true/false -> none/full/instance) and give more control over block pin equivalnce specifications
  • VPR will produce a .route file even if the routing is illegal (aids debugging), however analysis results will not be produced unless vpr --analsysis is specified
  • VPR long arguments are now always prefixed by two dashes (e.g. --route) while short single-letter arguments are prefixed by a single dash (e.g. -h)
  • Improved logic optimization through using a recent 2018 version of ABC and new synthesis script
  • Significantly improved implementation quality (~14% smaller minimum routable channel widths, 32-42% reduced wirelength, 7-10% lower critical path delay)
  • Significantly reduced run-time (~5.5-6.3x faster) and memory usage (~3.3-5x lower)
  • Various other changes since VTR 7

Fixed

  • FPGA Architecture file tags can be in arbitary orders
  • SDC command arguments can be in arbitary orders
  • Numerous other fixes since VTR 7

Deprecated

Removed

  • Classic VPR timing analyzer
  • IO channel distribution section of architecture file