Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Synopsys PrimeTime an effective way to dump out delays and slews of all arcs and pins

Status
Not open for further replies.

as90

Newbie level 4
Joined
Sep 18, 2017
Messages
5
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
39
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:

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
 

Anything that you do using TCL will be very slow when compared to native tool analysis. TCL will do multiple function calls whenever you issue a get_attr, whereas the native tool just need to access a pointer to the structure, if you know what I mean.

Whenever I need to do my own parsing of some internal data, I try to make the tool report as much as it can before I have to start issuing specific get_attr on individual structures. That's my only tip, try to start from a better report_timing, showing slews and arcs already, then take it from there?
 

Anything that you do using TCL will be very slow when compared to native tool analysis. TCL will do multiple function calls whenever you issue a get_attr, whereas the native tool just need to access a pointer to the structure, if you know what I mean.

Whenever I need to do my own parsing of some internal data, I try to make the tool report as much as it can before I have to start issuing specific get_attr on individual structures. That's my only tip, try to start from a better report_timing, showing slews and arcs already, then take it from there?

That helps. I got a hint on what I can try. Thanks a lot for your prompt and useful reply.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top