Files
vortex/hw/syn/altera/report_area.tcl
Blaise Tine d47cccc157 Vortex 2.0 changes:
+ Microarchitecture optimizations
+ 64-bit support
+ Xilinx FPGA support
+ LLVM-16 support
+ Refactoring and quality control fixes
2023-10-19 20:51:22 -07:00

105 lines
4.4 KiB
Tcl

# Copyright © 2019-2023
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load_package report
set ProjectName [lindex $argv 0]
set SynMode [lindex $argv 1]
proc panel_to_csv { panel_name csv_file } {
set fh [open $csv_file w]
# Its possible for some panels to not exist based on design (ex. if no RAMs )
set num_rows [get_number_of_rows -name $panel_name]
catch {
for { set i 0 } { $i < $num_rows } { incr i } {
set row_data_raw [get_report_panel_row -name $panel_name -row $i]
set row_data [regsub -all , $row_data_raw ""]
puts $fh [join $row_data ","]
}
}
close $fh
}
# Dump names of all known panels
proc do_dump_panelnames { } {
set fh [open "panels.txt" w]
set panel_names [get_report_panel_names]
foreach panel_name $panel_names {
puts $fh "$panel_name"
}
close $fh
}
proc do_map_analysis { ProjectName } {
# Save synthesis results
set RSyn1 "Synthesis||Synthesis Source Files Read"
set RSyn2 "Synthesis||Partition \"root_partition\"||Synthesis Resource Usage Summary for Partition \"root_partition\""
set RSyn3 "Synthesis||Partition \"root_partition\"||Partition \"root_partition\" Resource Utilization by Entity"
set RSyn4 "Synthesis||Partition \"root_partition\"||Synthesis RAM Summary for Partition \"root_partition\""
set RSyn5 "Synthesis||Partition \"root_partition\"||Partition \"root_partition\" Optimization Results||Register Statistics||Registers Protected by Synthesis"
set RSyn6 "Synthesis||Partition \"root_partition\"||Post-Synthesis Netlist Statistics for Partition \"root_partition\""
panel_to_csv $RSyn1 "$ProjectName.syn.area.source_files.csv"
panel_to_csv $RSyn2 "$ProjectName.syn.area.resource_summmary.csv"
panel_to_csv $RSyn3 "$ProjectName.syn.area.resource_breakdown.csv"
panel_to_csv $RSyn4 "$ProjectName.syn.area.ram_summary.csv"
panel_to_csv $RSyn5 "$ProjectName.syn.area.regs_removed.csv"
panel_to_csv $RSyn6 "$ProjectName.syn.area.stats.csv"
}
proc do_fit_analysis { ProjectName } {
# Save par results
set RPar1 "Fitter||Place Stage||Fitter Resource Usage Summary"
set RPar2 "Fitter||Place Stage||Fitter Resource Utilization by Entity"
set RPar3 "Fitter||Place Stage||Fitter Partition Statistics"
set RPar4 "Fitter||Place Stage||Fitter RAM Summary"
set RPar5 "Fitter||Plan Stage||Global & Other Fast Signals Summary"
set RPar6 "Fitter||Place Stage||Non-Global High Fan-Out Signals"
set RPar7 "Fitter||Route Stage||Routing Usage Summary"
panel_to_csv $RPar1 "$ProjectName.fit.area.resource_summary.csv"
panel_to_csv $RPar2 "$ProjectName.fit.area.resource_breakdown.csv"
#panel_to_csv $RPar3 "$ProjectName.fit.area.stats.csv"
panel_to_csv $RPar4 "$ProjectName.fit.area.ram_summary.csv"
panel_to_csv $RPar5 "$ProjectName.fit.area.routing_global.csv"
panel_to_csv $RPar6 "$ProjectName.fit.area.routing_high_fanout.csv"
panel_to_csv $RPar7 "$ProjectName.fit.area.routing_summary.csv"
}
proc do_fit_analysis_timingsummary { ProjectName } {
# Save timing results
set RT1 "TimeQuest Timing Analyzer||Slow 900mV 100C Model||Slow 900mV 100C Model Fmax Summary"
set RT2 "TimeQuest Timing Analyzer||Slow 900mV 100C Model||Slow 900mV 100C Model Setup Summary"
set RT3 "TimeQuest Timing Analyzer||Slow 900mV 100C Model||Slow 900mV 100C Model Hold Summary"
set RT4 "TimeQuest Timing Analyzer||Multicorner Timing Analysis Summary"
panel_to_csv $RT1 "$ProjectName.fit.timing.summary.fmax.csv"
panel_to_csv $RT2 "$ProjectName.fit.timing.summary.setup.csv"
panel_to_csv $RT3 "$ProjectName.fit.timing.summary.hold.csv"
panel_to_csv $RT4 "$ProjectName.fit.timing.summary.multicorner.csv"
}
project_open $ProjectName
load_report
# print available panels
#do_dump_panelnames
# => allows comparison of raw logic vs impact of routing delays
if { $SynMode == "map" } {
do_map_analysis $ProjectName
# normal post-par analysis (includes routing congestion/physical placement constraints)
} else {
do_fit_analysis $ProjectName
do_fit_analysis_timingsummary $ProjectName
}
unload_report
project_close