1
0
Fork 0
fpga-shells/xilinx/common/tcl/report.tcl

45 lines
1.5 KiB
Tcl

# See LICENSE for license details.
# Create a report directory
set rptdir [file join $wrkdir report]
file mkdir $rptdir
# Create a datasheet for the current design
report_datasheet -file [file join $rptdir datasheet.txt]
# Report utilization of the current device
set rptutil [file join $rptdir utilization.txt]
report_utilization -hierarchical -file $rptutil
# Report information about clock nets in the design
report_clock_utilization -file $rptutil -append
# Report the RAM resources utilized in the implemented design
report_ram_utilization -file $rptutil -append -detail
# Report timing summary for a max of 10 paths per group
report_timing_summary -file [file join $rptdir timing.txt] -max_paths 10
# Report the highest fanout of nets in the implemented design
report_high_fanout_nets -file [file join $rptdir fanout.txt] -timing -load_types -max_nets 25
# Run DRC
report_drc -file [file join $rptdir drc.txt]
# Report details of the IO banks in the design
report_io -file [file join $rptdir io.txt]
# Report a table of all clocks in the design
report_clocks -file [file join $rptdir clocks.txt]
# Fail loudly if timing not met
#
# We would ideally elevate critical warning Route 35-39 to an error, but it is
# currently not being emitted with our flow for some reason.
# https://forums.xilinx.com/t5/Implementation/Making-timing-violations-fatal-to-the-Vivado-build/m-p/716957#M15979
set timing_slack [get_property SLACK [get_timing_paths]]
if {$timing_slack < 0} {
puts "Failed to meet timing by $timing_slack, see [file join $rptdir timing.txt]"
exit 1
}