Professional Documents
Culture Documents
# #
# Author : Synopsys Inc.
# Description : Script to fix Hold Violations including #
# no margin paths #
# Version : 1.1 #
# Completion Date : 26 Mar 2008 #
# Modified date : 29 Mar 2008 #
####################################################################
set count 5
if { [llength $line] == 1 } {
set end_point_flag 1
set end_point [lindex $line 0]
}
if { [llength $line] == 6 } {
set end_point [lindex $line 0]
set end_point_slack [lindex $line 4]
echo "$end_point $end_point_slack" >> parse_m.tcl1978
}
}}
} else {
if { $hold_setup_th < 0 } {
set iteration_setup_slack $setup_slack
if { $debug_mode_m == 1} {
echo "#######CHECK POINT: HALF MARGIN, END POINT: $end_point, PRE SETUP
$pre_setup SETUP SLACK $setup_slack , HOLD SLACK $hold_slack " >> insert_buffer.tcl
}
if { $debug_mode_m == 1} {
echo "#######num_buf $num_buf iteration_hold $iteration_hold_pos lib number
[lindex $lib_cell $x]" >> insert_buffer.tcl
}
if { $num_buf > 0 } {
echo "insert_buffer $end_point [lindex $lib_cell [expr $x - 1]] -no_of_cells
$num_buf -new_cell_names $prefix" >> insert_buffer.tcl
}
}
echo "$end_point $hold_slack" >> half_margin_fix_m.tcl1978
} else {
if { $debug_mode_m == 1 } {
echo "#######num_buf $num_buf iteration_hold $iteration_hold_pos lib number
[lindex $lib_cell $x]" >> insert_buffer.tcl
}
if { $num_buf > 0 } {
echo "insert_buffer $end_point [lindex $lib_cell [expr $x -1 ]] -no_of_cells
$num_buf -new_cell_names $prefix" >> insert_buffer.tcl
}
}
}
}
if { $stage == 2 } {
if { $debug_mode_m == 1 } {
echo "#####CHECK POINT: NO MARGIN, END POINT $end_point , PRE SETUP
$pre_setup SETUP SLACK $setup_slack , HOLD SLACK $hold_slack" >> insert_buffer.tcl
echo "#####INTERMEDIATE PINS: [get_object_name [get_pins
$pin_name ] ], PRE_PIN_SLACK $pre_pin_slack SETUP SLACK ON THIS PIN $pin_slack" >>
insert_buffer.tcl
}
set flag 0
if { $debug_mode_m == 1} {
echo "#######num_buf $num_buf lib number [lindex $lib_cell $x]"
>> insert_buffer.tcl
}
if { $num_buf > 0 } {
echo "insert_buffer [get_object_name [get_pins $pin_name]]
[lindex $lib_cell [expr $x - 1]] -no_of_cells $num_buf -new_cell_names $prefix" >>
insert_buffer.tcl
}
}
}
}
}
############################# No margin loop ends
if { $debug_mode_m == 1 } {
echo "#####CHECK POINT: HALF MARGIN 2 FIX LOOP, END POINT
$end_point , PRE SETUP $pre_setup SETUP SLACK $setup_slack ,HOLD SLACK
$hold_slack" >> insert_buffer.tcl
echo "##### INTERMEDIATE PINS: [get_object_name [get_pins
$pin_name ]] ,PRE_PIN_SLACK $pre_pin_slack SETUP SLACK ON THIS PIN $pin_slack" >>
insert_buffer.tcl
}