rootcause macos failure issue

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
This commit is contained in:
dsengupta0628 2026-07-26 03:31:29 +00:00
parent 6b6f7c9ae4
commit f303d84f03
8 changed files with 52 additions and 25 deletions

View File

@ -127,7 +127,7 @@ jobs:
- name: Test - name: Test
run: | run: |
cd test cd test
./regression || (cat results/diffs && exit 1) ./regression --output-on-failure
- name: Upload Test Result - name: Upload Test Result
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
@ -136,3 +136,4 @@ jobs:
name: result-macos name: result-macos
path: | path: |
test/results/* test/results/*
*/test/results/*

View File

@ -221,7 +221,6 @@ Path Type: max
17 default vmin clk ^ clk_src clk crpr_pin null 17 default vmin clk ^ clk_src clk crpr_pin null
18 default ^max clk ^ clk_src clk crpr_pin null 18 default ^max clk ^ clk_src clk crpr_pin null
19 default vmax clk ^ clk_src clk crpr_pin null 19 default vmax clk ^ clk_src clk crpr_pin null
Longest hash bucket length 1 hash=6
--- report_clk_infos --- --- report_clk_infos ---
default/min clk ^ clk_src clk uncertain default/min clk ^ clk_src clk uncertain
default/max clk ^ clk_src clk uncertain default/max clk ^ clk_src clk uncertain
@ -229,25 +228,24 @@ default/min clk v clk_src clk uncertain
default/max clk v clk_src clk uncertain default/max clk v clk_src clk uncertain
4 clk infos 4 clk infos
--- report_tag_groups --- --- report_tag_groups ---
Group 0 hash = 2697898004198490802 ( 79) Group 0 hash = <hash> (<bucket>)
0 0 default ^min clk ^ clk_src clk crpr_pin null input in2 0 0 default ^min clk ^ clk_src clk crpr_pin null input in2
1 2 default ^max clk ^ clk_src clk crpr_pin null input in2 1 2 default ^max clk ^ clk_src clk crpr_pin null input in2
2 1 default vmin clk ^ clk_src clk crpr_pin null input in2 2 1 default vmin clk ^ clk_src clk crpr_pin null input in2
3 3 default vmax clk ^ clk_src clk crpr_pin null input in2 3 3 default vmax clk ^ clk_src clk crpr_pin null input in2
Group 1 hash = 17966741373156438452 ( 88) Group 1 hash = <hash> (<bucket>)
0 8 default ^min clk ^ (clock ideal) clk_src clk crpr_pin null 0 8 default ^min clk ^ (clock ideal) clk_src clk crpr_pin null
1 12 default ^max clk ^ (clock ideal) clk_src clk crpr_pin null 1 12 default ^max clk ^ (clock ideal) clk_src clk crpr_pin null
2 11 default vmin clk v (clock ideal) clk_src clk crpr_pin null 2 11 default vmin clk v (clock ideal) clk_src clk crpr_pin null
3 15 default vmax clk v (clock ideal) clk_src clk crpr_pin null 3 15 default vmax clk v (clock ideal) clk_src clk crpr_pin null
Group 2 hash = 17969506314027398258 ( 127) Group 2 hash = <hash> (<bucket>)
0 16 default ^min clk ^ clk_src clk crpr_pin null 0 16 default ^min clk ^ clk_src clk crpr_pin null
1 18 default ^max clk ^ clk_src clk crpr_pin null 1 18 default ^max clk ^ clk_src clk crpr_pin null
2 17 default vmin clk ^ clk_src clk crpr_pin null 2 17 default vmin clk ^ clk_src clk crpr_pin null
3 19 default vmax clk ^ clk_src clk crpr_pin null 3 19 default vmax clk ^ clk_src clk crpr_pin null
Longest hash bucket length 1 hash=79
--- report_path_count_histogram --- --- report_path_count_histogram ---
4 15 4 15
--- tag/group/path counts --- --- tag/group/path counts ---

View File

@ -74,13 +74,15 @@ report_checks -path_delay max
# Tag, group, info reporting # Tag, group, info reporting
############################################################ ############################################################
puts "--- report_tags ---" puts "--- report_tags ---"
sta::report_tags report_masked_hashes [make_result_file search_network_sta_deep_tags.txt] \
sta::report_tags
puts "--- report_clk_infos ---" puts "--- report_clk_infos ---"
sta::report_clk_infos sta::report_clk_infos
puts "--- report_tag_groups ---" puts "--- report_tag_groups ---"
sta::report_tag_groups report_masked_hashes [make_result_file search_network_sta_deep_tag_groups.txt] \
sta::report_tag_groups
puts "--- report_path_count_histogram ---" puts "--- report_path_count_histogram ---"
sta::report_path_count_histogram sta::report_path_count_histogram

View File

@ -201,37 +201,37 @@ Endpoint count: 3
Path group names: clk out_group reg_group asynchronous {path delay} {gated clock} unconstrained Path group names: clk out_group reg_group asynchronous {path delay} {gated clock} unconstrained
--- find_requireds --- --- find_requireds ---
--- report internal debug --- --- report internal debug ---
Group 0 hash = 2697898004198490802 ( 79) Group 0 hash = <hash> (<bucket>)
0 0 default ^min clk ^ clk_src clk crpr_pin null input in2 0 0 default ^min clk ^ clk_src clk crpr_pin null input in2
1 2 default ^max clk ^ clk_src clk crpr_pin null input in2 1 2 default ^max clk ^ clk_src clk crpr_pin null input in2
2 1 default vmin clk ^ clk_src clk crpr_pin null input in2 2 1 default vmin clk ^ clk_src clk crpr_pin null input in2
3 3 default vmax clk ^ clk_src clk crpr_pin null input in2 3 3 default vmax clk ^ clk_src clk crpr_pin null input in2
Group 1 hash = 1860950969858666218 ( 107) Group 1 hash = <hash> (<bucket>)
0 4 default ^min clk ^ clk_src clk crpr_pin null input in1 Group -from {in1} 0 4 default ^min clk ^ clk_src clk crpr_pin null input in1 Group -from {in1}
1 6 default ^max clk ^ clk_src clk crpr_pin null input in1 Group -from {in1} 1 6 default ^max clk ^ clk_src clk crpr_pin null input in1 Group -from {in1}
2 5 default vmin clk ^ clk_src clk crpr_pin null input in1 Group -from {in1} 2 5 default vmin clk ^ clk_src clk crpr_pin null input in1 Group -from {in1}
3 7 default vmax clk ^ clk_src clk crpr_pin null input in1 Group -from {in1} 3 7 default vmax clk ^ clk_src clk crpr_pin null input in1 Group -from {in1}
Group 2 hash = 17966741373156438452 ( 88) Group 2 hash = <hash> (<bucket>)
0 8 default ^min clk ^ (clock ideal) clk_src clk crpr_pin null 0 8 default ^min clk ^ (clock ideal) clk_src clk crpr_pin null
1 12 default ^max clk ^ (clock ideal) clk_src clk crpr_pin null 1 12 default ^max clk ^ (clock ideal) clk_src clk crpr_pin null
2 11 default vmin clk v (clock ideal) clk_src clk crpr_pin null 2 11 default vmin clk v (clock ideal) clk_src clk crpr_pin null
3 15 default vmax clk v (clock ideal) clk_src clk crpr_pin null 3 15 default vmax clk v (clock ideal) clk_src clk crpr_pin null
Group 3 hash = 17944144282683767210 ( 132) Group 3 hash = <hash> (<bucket>)
0 16 default ^min clk ^ clk_src clk crpr_pin null Group -from {in1} 0 16 default ^min clk ^ clk_src clk crpr_pin null Group -from {in1}
1 18 default ^max clk ^ clk_src clk crpr_pin null Group -from {in1} 1 18 default ^max clk ^ clk_src clk crpr_pin null Group -from {in1}
2 17 default vmin clk ^ clk_src clk crpr_pin null Group -from {in1} 2 17 default vmin clk ^ clk_src clk crpr_pin null Group -from {in1}
3 19 default vmax clk ^ clk_src clk crpr_pin null Group -from {in1} 3 19 default vmax clk ^ clk_src clk crpr_pin null Group -from {in1}
Group 4 hash = 17969506314027398258 ( 127) Group 4 hash = <hash> (<bucket>)
0 20 default ^min clk ^ clk_src clk crpr_pin null 0 20 default ^min clk ^ clk_src clk crpr_pin null
1 22 default ^max clk ^ clk_src clk crpr_pin null 1 22 default ^max clk ^ clk_src clk crpr_pin null
2 21 default vmin clk ^ clk_src clk crpr_pin null 2 21 default vmin clk ^ clk_src clk crpr_pin null
3 23 default vmax clk ^ clk_src clk crpr_pin null 3 23 default vmax clk ^ clk_src clk crpr_pin null
Group 5 hash = 17466906523001613852 ( 62) Group 5 hash = <hash> (<bucket>)
0 20 default ^min clk ^ clk_src clk crpr_pin null 0 20 default ^min clk ^ clk_src clk crpr_pin null
1 16 default ^min clk ^ clk_src clk crpr_pin null Group -from {in1} 1 16 default ^min clk ^ clk_src clk crpr_pin null Group -from {in1}
2 22 default ^max clk ^ clk_src clk crpr_pin null 2 22 default ^max clk ^ clk_src clk crpr_pin null
@ -241,7 +241,6 @@ Group 5 hash = 17466906523001613852 ( 62)
6 23 default vmax clk ^ clk_src clk crpr_pin null 6 23 default vmax clk ^ clk_src clk crpr_pin null
7 19 default vmax clk ^ clk_src clk crpr_pin null Group -from {in1} 7 19 default vmax clk ^ clk_src clk crpr_pin null Group -from {in1}
Longest hash bucket length 1 hash=62
0 default ^min clk ^ clk_src clk crpr_pin null input in2 0 default ^min clk ^ clk_src clk crpr_pin null input in2
1 default vmin clk ^ clk_src clk crpr_pin null input in2 1 default vmin clk ^ clk_src clk crpr_pin null input in2
2 default ^max clk ^ clk_src clk crpr_pin null input in2 2 default ^max clk ^ clk_src clk crpr_pin null input in2
@ -266,7 +265,6 @@ Longest hash bucket length 1 hash=62
21 default vmin clk ^ clk_src clk crpr_pin null 21 default vmin clk ^ clk_src clk crpr_pin null
22 default ^max clk ^ clk_src clk crpr_pin null 22 default ^max clk ^ clk_src clk crpr_pin null
23 default vmax clk ^ clk_src clk crpr_pin null 23 default vmax clk ^ clk_src clk crpr_pin null
Longest hash bucket length 1 hash=6
default/min clk ^ clk_src clk uncertain default/min clk ^ clk_src clk uncertain
default/max clk ^ clk_src clk uncertain default/max clk ^ clk_src clk uncertain
default/min clk v clk_src clk uncertain default/min clk v clk_src clk uncertain

View File

@ -1,5 +1,7 @@
# Test ReportPath.cc, PathEnum.cc, PathExpanded.cc, PathGroup.cc # Test ReportPath.cc, PathEnum.cc, PathExpanded.cc, PathGroup.cc
# Exercises uncovered report path formats and path enumeration # Exercises uncovered report path formats and path enumeration
source ../../test/helpers.tcl
read_liberty ../../test/nangate45/Nangate45_typ.lib read_liberty ../../test/nangate45/Nangate45_typ.lib
read_verilog search_test1.v read_verilog search_test1.v
link_design search_test1 link_design search_test1
@ -134,8 +136,10 @@ puts "--- find_requireds ---"
sta::find_requireds sta::find_requireds
puts "--- report internal debug ---" puts "--- report internal debug ---"
sta::report_tag_groups report_masked_hashes [make_result_file search_report_path_detail_tag_groups.txt] \
sta::report_tags sta::report_tag_groups
report_masked_hashes [make_result_file search_report_path_detail_tags.txt] \
sta::report_tags
sta::report_clk_infos sta::report_clk_infos
sta::report_arrival_entries sta::report_arrival_entries
sta::report_required_entries sta::report_required_entries

View File

@ -23,7 +23,6 @@ min violations: 0
17 default vmin clk ^ clk_src clk crpr_pin null 17 default vmin clk ^ clk_src clk crpr_pin null
18 default ^max clk ^ clk_src clk crpr_pin null 18 default ^max clk ^ clk_src clk crpr_pin null
19 default vmax clk ^ clk_src clk crpr_pin null 19 default vmax clk ^ clk_src clk crpr_pin null
Longest hash bucket length 1 hash=6
--- report_clk_infos --- --- report_clk_infos ---
default/min clk ^ clk_src clk uncertain default/min clk ^ clk_src clk uncertain
default/max clk ^ clk_src clk uncertain default/max clk ^ clk_src clk uncertain
@ -31,25 +30,24 @@ default/min clk v clk_src clk uncertain
default/max clk v clk_src clk uncertain default/max clk v clk_src clk uncertain
4 clk infos 4 clk infos
--- report_tag_groups --- --- report_tag_groups ---
Group 0 hash = 2697898004198490802 ( 79) Group 0 hash = <hash> (<bucket>)
0 0 default ^min clk ^ clk_src clk crpr_pin null input in2 0 0 default ^min clk ^ clk_src clk crpr_pin null input in2
1 2 default ^max clk ^ clk_src clk crpr_pin null input in2 1 2 default ^max clk ^ clk_src clk crpr_pin null input in2
2 1 default vmin clk ^ clk_src clk crpr_pin null input in2 2 1 default vmin clk ^ clk_src clk crpr_pin null input in2
3 3 default vmax clk ^ clk_src clk crpr_pin null input in2 3 3 default vmax clk ^ clk_src clk crpr_pin null input in2
Group 1 hash = 17966741373156438452 ( 88) Group 1 hash = <hash> (<bucket>)
0 8 default ^min clk ^ (clock ideal) clk_src clk crpr_pin null 0 8 default ^min clk ^ (clock ideal) clk_src clk crpr_pin null
1 12 default ^max clk ^ (clock ideal) clk_src clk crpr_pin null 1 12 default ^max clk ^ (clock ideal) clk_src clk crpr_pin null
2 11 default vmin clk v (clock ideal) clk_src clk crpr_pin null 2 11 default vmin clk v (clock ideal) clk_src clk crpr_pin null
3 15 default vmax clk v (clock ideal) clk_src clk crpr_pin null 3 15 default vmax clk v (clock ideal) clk_src clk crpr_pin null
Group 2 hash = 17969506314027398258 ( 127) Group 2 hash = <hash> (<bucket>)
0 16 default ^min clk ^ clk_src clk crpr_pin null 0 16 default ^min clk ^ clk_src clk crpr_pin null
1 18 default ^max clk ^ clk_src clk crpr_pin null 1 18 default ^max clk ^ clk_src clk crpr_pin null
2 17 default vmin clk ^ clk_src clk crpr_pin null 2 17 default vmin clk ^ clk_src clk crpr_pin null
3 19 default vmax clk ^ clk_src clk crpr_pin null 3 19 default vmax clk ^ clk_src clk crpr_pin null
Longest hash bucket length 1 hash=79
--- report_path_count_histogram --- --- report_path_count_histogram ---
4 15 4 15
--- report_arrival_entries --- --- report_arrival_entries ---

View File

@ -39,13 +39,15 @@ puts "min violations: [sta::endpoint_violation_count min]"
# report internal structures # report internal structures
############################################################ ############################################################
puts "--- report_tags ---" puts "--- report_tags ---"
sta::report_tags report_masked_hashes [make_result_file search_search_arrival_required_tags.txt] \
sta::report_tags
puts "--- report_clk_infos ---" puts "--- report_clk_infos ---"
sta::report_clk_infos sta::report_clk_infos
puts "--- report_tag_groups ---" puts "--- report_tag_groups ---"
sta::report_tag_groups report_masked_hashes [make_result_file search_search_arrival_required_tag_groups.txt] \
sta::report_tag_groups
puts "--- report_path_count_histogram ---" puts "--- report_path_count_histogram ---"
sta::report_path_count_histogram sta::report_path_count_histogram

View File

@ -67,6 +67,30 @@ proc diff_files_sorted { file1 file2 } {
} }
} }
# Run cmd with its report output captured to file, then echo the output
# with hash values masked and hash bucket reports dropped.
# std::unordered_set bucket counts and std::hash<float> results are
# implementation defined, so report_tags/report_tag_groups hashes differ
# between libstdc++ (linux) and libc++ (macos).
proc report_masked_hashes { file cmd } {
sta::redirect_file_begin $file
set code [catch { uplevel 1 $cmd } result]
sta::redirect_file_end
if { $code } {
return -code $code $result
}
set stream [open $file r]
gets $stream line
while { ![eof $stream] } {
if { ![regexp {^Longest hash bucket} $line] } {
regsub {hash = \d+ \(\s*\d+\)} $line {hash = <hash> (<bucket>)} line
puts $line
}
gets $stream line
}
close $stream
}
proc assert_file_nonempty { path } { proc assert_file_nonempty { path } {
if { ![file exists $path] || [file size $path] <= 0 } { if { ![file exists $path] || [file size $path] <= 0 } {
error "expected non-empty file: $path" error "expected non-empty file: $path"