@@ -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+
2127if {[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
3746set_propagated_clock [all_clocks]
3847
@@ -59,6 +68,10 @@ detailed_placement
5968
6069estimate_parasitics -placement
6170
71+ if {[info exist ::env(CTS_SNAPSHOTS)]} {
72+ save_progress 4_1_pre_repair_hold_setup
73+ }
74+
6275puts " Repair setup and hold violations..."
6376
6477# process user settings
@@ -89,10 +102,8 @@ repair_timing {*}$additional_args
89102
90103set result [catch {detailed_placement} msg]
91104if {$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