Skip to content

Commit 8675ba2

Browse files
committed
Fix the fmax calculation for mulitple combinational paths
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
1 parent f9cce5e commit 8675ba2

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/Metrics.tcl

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,17 +87,25 @@ proc report_fmax_metric { args } {
8787
if { $fmax_metric == 0 } {
8888
# attempt to compute based on combinatorial path
8989
set fmax_valid true
90-
set max_path [find_timing_paths -unconstrained -path_delay max]
91-
if { $max_path == "" } {
90+
set max_paths [find_timing_paths -unconstrained -path_delay max]
91+
if { $max_paths == "" } {
9292
set fmax_valid false
9393
} else {
94-
set max_path_delay [$max_path data_arrival_time]
94+
set max_path_delay -1
95+
foreach path $max_paths {
96+
set path_delay [$path data_arrival_time]
97+
set max_path_delay [expr { max($max_path_delay, $path_delay) }]
98+
}
9599
}
96-
set min_path [find_timing_paths -unconstrained -path_delay min]
97-
if { $min_path == "" } {
100+
set min_paths [find_timing_paths -unconstrained -path_delay min]
101+
if { $min_paths == "" } {
98102
set fmax_valid false
99103
} else {
100-
set min_path_delay [$min_path data_arrival_time]
104+
set min_path_delay 1e12
105+
foreach path $min_paths {
106+
set path_delay [$path data_arrival_time]
107+
set min_path_delay [expr { min($min_path_delay, $path_delay) }]
108+
}
101109
}
102110
if { $fmax_valid } {
103111
set path_delay [expr { $max_path_delay - min(0, $min_path_delay) }]

0 commit comments

Comments
 (0)