as90
Newbie level 4
Hi,
In Synopsys PrimeTime, what would be an effective way to dump out delays and slews at all arcs and pins in the design? I've written a tcl script to achieve that but on a 160K cell design it takes more than 10min. Whereas report timing takes only half a minute. So I'm guessing that there must be some more efficient way to achieve this. Tcl script that I wrote looks like following:
Where, "clb_show_arcs" is another procedure, a part of which is shown below:
Large runtime is not due to file I/O caused by the echo at the bottom of clb_show_arcs procedure. Even if I comment that out, runtime to traverse over all the arcs and extracting delay, slew and ceff values at appropriate arcs/pins takes more than 10min.
Is there a more efficient way out there? Do I need to set some variables?
Thanks
In Synopsys PrimeTime, what would be an effective way to dump out delays and slews at all arcs and pins in the design? I've written a tcl script to achieve that but on a 160K cell design it takes more than 10min. Whereas report timing takes only half a minute. So I'm guessing that there must be some more efficient way to achieve this. Tcl script that I wrote looks like following:
Code:
proc print_arcs_for_calibration {} {
set outfile "pt_val_clb.txt"
exec rm -f $outfile
foreach_in_collection xyz [get_ports] {
set pn [get_attribute $xyz full_name]
set dir [get_attribute -class port $pn port_direction]
if {$pn!="ispd_clk" && $dir!="out"} {
clb_show_arcs -from $pn >> $outfile
}
}
foreach_in_collection xyz [get_cells] {
set is_seq [get_attribute $xyz is_sequential]
set cn [get_attribute $xyz full_name]
set opn "$cn/o"
clb_show_arcs -to $opn >> $outfile
clb_show_arcs -from $opn >> $outfile
}
}
Where, "clb_show_arcs" is another procedure, a part of which is shown below:
Code:
proc clb_show_arcs {args} {
foreach_in_collection arc [eval [concat get_timing_arcs $args]] {
set is_cellarc [get_attribute $arc is_cellarc]
set fpin [get_attribute $arc from_pin]
set tpin [get_attribute $arc to_pin]
set rise [get_attribute $arc delay_max_rise]
set fall [get_attribute $arc delay_max_fall]
set from_pin_name [get_attribute $fpin full_name]
set to_pin_name [get_attribute $tpin full_name]
...
echo [format "%s %s %s %s %s %s %s %s %s %s %s" \
$riseSlewIn $fallSlewIn $from_pin_name $to_pin_name \
$rise $fall $is_cellarc $ceffR $ceffF $riseSlewOut \
$fallSlewOut]
}
Large runtime is not due to file I/O caused by the echo at the bottom of clb_show_arcs procedure. Even if I comment that out, runtime to traverse over all the arcs and extracting delay, slew and ceff values at appropriate arcs/pins takes more than 10min.
Is there a more efficient way out there? Do I need to set some variables?
Thanks