VTR Change Log

Note that changes from release candidates (e.g. v8.0.0-rc1, v8.0.0-rc2) are included/repeated in the final release (e.g. v8.0.0) change log.

Unreleased

The following are changes which have been implemented in the VTR master branch but have not yet been included in an official release.

Added

Changed

Fixed

Deprecated

Removed

v8.0.0 - 2020-03-24

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)

Docker Image

  • A docker image is available for VTR 8.0 release on mohamedelgammal/vtr8:latest. You can run it using the following commands:

$ sudo docker pull mohamedelgammal/vtr8:latest
$ sudo docker run -it mohamedelgammal/vtr8:latest

v8.0.0-rc2 - 2019-08-01

Changed

  • Support for non-contiguous track numbers in externally loaded RR graphs

  • Improved placer quality (reduced cost round-off)

v8.0.0-rc1 - 2019-06-13

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