Skip to content

Commit 640289d

Browse files
authored
Merge pull request #1285 from Pinata-Consulting/do-cts-pre-repair-snapshot
CTS snapshots for debugging
2 parents 66529fc + 9bf5cd7 commit 640289d

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

flow/scripts/cts.tcl

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,30 @@ if {[info exist ::env(CTS_CLUSTER_DIAMETER)]} {
1818
set cluster_diameter 100
1919
}
2020

21+
proc save_progress {stage} {
22+
puts "Run 'make gui_$stage.odb' to load progress snapshot"
23+
write_db $::env(RESULTS_DIR)/$stage.odb
24+
write_sdc $::env(RESULTS_DIR)/$stage.sdc
25+
}
26+
2127
if {[info exist ::env(CTS_BUF_DISTANCE)]} {
22-
clock_tree_synthesis -root_buf "$::env(CTS_BUF_CELL)" -buf_list "$::env(CTS_BUF_CELL)" \
23-
-sink_clustering_enable \
24-
-sink_clustering_size $cluster_size \
25-
-sink_clustering_max_diameter $cluster_diameter \
26-
-distance_between_buffers "$::env(CTS_BUF_DISTANCE)" \
27-
-balance_levels
28+
clock_tree_synthesis -root_buf "$::env(CTS_BUF_CELL)" -buf_list "$::env(CTS_BUF_CELL)" \
29+
-sink_clustering_enable \
30+
-sink_clustering_size $cluster_size \
31+
-sink_clustering_max_diameter $cluster_diameter \
32+
-distance_between_buffers "$::env(CTS_BUF_DISTANCE)" \
33+
-balance_levels
2834
} else {
29-
clock_tree_synthesis -root_buf "$::env(CTS_BUF_CELL)" -buf_list "$::env(CTS_BUF_CELL)" \
30-
-sink_clustering_enable \
31-
-sink_clustering_size $cluster_size \
32-
-sink_clustering_max_diameter $cluster_diameter \
33-
-balance_levels
35+
clock_tree_synthesis -root_buf "$::env(CTS_BUF_CELL)" -buf_list "$::env(CTS_BUF_CELL)" \
36+
-sink_clustering_enable \
37+
-sink_clustering_size $cluster_size \
38+
-sink_clustering_max_diameter $cluster_diameter \
39+
-balance_levels
3440
}
3541

42+
if {[info exist ::env(CTS_SNAPSHOTS)]} {
43+
save_progress 4_1_pre_repair_clock_nets
44+
}
3645

3746
set_propagated_clock [all_clocks]
3847

@@ -59,6 +68,10 @@ detailed_placement
5968

6069
estimate_parasitics -placement
6170

71+
if {[info exist ::env(CTS_SNAPSHOTS)]} {
72+
save_progress 4_1_pre_repair_hold_setup
73+
}
74+
6275
puts "Repair setup and hold violations..."
6376

6477
# process user settings
@@ -89,10 +102,8 @@ repair_timing {*}$additional_args
89102

90103
set result [catch {detailed_placement} msg]
91104
if {$result != 0} {
105+
save_progress 4_1_error
92106
puts "Detailed placement failed in CTS: $msg"
93-
puts "Run 'make gui_4_1_error.odb' to load failed snapshot"
94-
write_db $::env(RESULTS_DIR)/4_1_error.odb
95-
write_sdc $::env(RESULTS_DIR)/4_1_error.sdc
96107
return -code $result
97108
}
98109

0 commit comments

Comments
 (0)