|
| 1 | +source "helpers.tcl" |
| 2 | + |
| 3 | +set test_name inferred_clock_gator_time_borrow_tns |
| 4 | + |
| 5 | +source Nangate45/Nangate45.vars |
| 6 | +read_liberty Nangate45/Nangate45_typ.lib |
| 7 | +read_lef Nangate45/Nangate45.lef |
| 8 | +read_def inferred_clock_gator_time_borrow.def |
| 9 | + |
| 10 | +create_clock -name clk -period 1.0 clk |
| 11 | +create_clock -name vclk -period 1.0 |
| 12 | +set_input_delay -clock vclk 0.98 [get_ports en_in] |
| 13 | + |
| 14 | +source Nangate45/Nangate45.rc |
| 15 | +source $layer_rc_file |
| 16 | +set_wire_rc -signal -layer $wire_rc_layer |
| 17 | +set_wire_rc -clock -layer $wire_rc_layer_clk |
| 18 | + |
| 19 | +set_propagated_clock [all_clocks] |
| 20 | +estimate_parasitics -placement |
| 21 | + |
| 22 | +proc extract_borrow { report_text } { |
| 23 | + if { ![regexp {actual time borrow[ ]+([0-9.]+)} $report_text -> borrow] } { |
| 24 | + puts "Missing actual time borrow in report_checks output." |
| 25 | + } |
| 26 | + return $borrow |
| 27 | +} |
| 28 | + |
| 29 | +proc borrow_report { test_name label } { |
| 30 | + set report_file [make_result_file "${test_name}_${label}.rpt"] |
| 31 | + report_checks -path_delay max -to enable_latch/D \ |
| 32 | + -group_path_count 1 -format full_clock_expanded -digits 4 > $report_file |
| 33 | + set stream [open $report_file r] |
| 34 | + set report_text [read $stream] |
| 35 | + close $stream |
| 36 | + return $report_text |
| 37 | +} |
| 38 | + |
| 39 | +set before_report [borrow_report $test_name "before"] |
| 40 | +set before_borrow [extract_borrow $before_report] |
| 41 | +puts [format "BEFORE_BORROW %.4f" $before_borrow] |
| 42 | + |
| 43 | +repair_timing -setup -phases "TNS" -skip_last_gasp -skip_pin_swap \ |
| 44 | + -skip_gate_cloning -max_passes 20 |
| 45 | + |
| 46 | +set after_report [borrow_report $test_name "after"] |
| 47 | +set after_borrow [extract_borrow $after_report] |
| 48 | +puts [format "AFTER_BORROW %.4f" $after_borrow] |
| 49 | + |
| 50 | +if { !($after_borrow < $before_borrow - 0.001) } { |
| 51 | + puts [format \ |
| 52 | + "repair_timing did not reduce latch borrow: before %.4f after %.4f" \ |
| 53 | + $before_borrow $after_borrow] |
| 54 | +} |
0 commit comments