vtr-verilog-to-routing
vtr-verilog-to-routing copied to clipboard
Request: Add options for enabling machine readable summary output
Proposed Behaviour
It would be really nice to have options that would enable VPR to write machine readable output files with:
- summary of block types usage
- summary of timing parameters
Current Behaviour
This information is available in plain log output.
Block types usage:
Netlist num_nets: 8
Netlist num_blocks: 11
Netlist EMPTY blocks: 0.
Netlist PB-MULT blocks: 0.
Netlist PB-CLOCK blocks: 0.
Netlist PB-ASSP blocks: 0.
Netlist PB-SDIOMUX blocks: 0.
Netlist PB-SYN_GND blocks: 1.
Netlist PB-GMUX blocks: 0.
Netlist PB-LOGIC blocks: 4.
Netlist PB-RAM blocks: 0.
Netlist PB-SYN_VCC blocks: 1.
Netlist PB-BIDIR blocks: 5.
Netlist inputs pins: 1
Netlist output pins: 14
Timings:
Final critical path delay (least slack): 30.3589 ns, Fmax: 32.9393 MHz
Final setup Worst Negative Slack (sWNS): -30.3589 ns
Final setup Total Negative Slack (sTNS): -150.906 ns
Possible Solution
I would see this as two separate options, something like:
-
--save-block-types-usage <filename>
-
--save-timing-summary <filename>
Both of them should enable VPR to write JSON files with info:
- Block usage: names of the block types and the number of blocks that were used to implement the design
- Timings: Final setup timing parameters such as: max frequency, critical path delay, worst negative slack, total negative slack
Context
This information is used in SymbiFlow to perform tests that verify the block usage and timings against reference values in order to catch possible regression. Current way of getting the information from VPR requires parsing the log output in search of timing summary and block usage info. It would be better solution to let VPR prepare the output in easy to read format so that we won't rely on log output that could be changed in the future and cause failures in log parsers.