Home > Community > Forums > Digital Implementation > CTE-TCL to get one timing path ?

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 CTE-TCL to get one timing path ?  

Last post Sun, May 27 2007 6:07 AM by archive. 1 replies.
Started by archive 27 May 2007 06:07 AM. Topic has 1 replies and 1385 views
Page 1 of 1 (2 items)
Sort Posts:
  • Sun, May 27 2007 6:07 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    CTE-TCL to get one timing path ? Reply

    I  notice that in SOC Encounter CTE-TCL, get_timing can get the arrival time or the slack of one Pin,
    since arrival time or slack time are concepts related timing path, I wonder How can we get the timing path by this kind of command. 

    If we do can get the timing path in CTE-TCL,  then we can writes lot of useful scripts to fix timing.  One example is that we can evaluate each cell in one timing path,  how many timing path this cell are will affect? and find the bottleneck in this timing path.  this is more like the whatif timing analysis  by scripts.

    Anyone can get me more reference on this topic?



    Originally posted in cdnusers.org by aidans
    • Post Points: 0
  • Wed, Aug 1 2007 12:21 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: CTE-TCL to get one timing path ? Reply

    aidans,

    What you want does exist. The CTE Tcl interface is moving towards a collections and object querying approach.
    The new methodology is documented in the ETS Reference Manual under the chapter "Advanced Timing Tcl Scripting Commands".

    The same commands are available in 6.1 and 6.2 SOCE releases. The new scripting chapter should be added to an upcoming 6.2
    release of Encounter. In current releases, the Tcl scripting is supported at the Tcl prompt and via Tcl "source" - you may not
    use these constructs directly in the .sdc file.

    In a nutshell, the report_timing -collection command is used to generate a set of paths, which you can then iterate over and use other commands like get_property. Here is a sample snippet for a very simple report generator:


    proc my_report_timing { args } {

    # Create a collection of timing paths
    #
    set rptTimingCmd "report_timing -collection $args"
    set timingPaths_C [eval $rptTimingCmd]

    set pathNum 0

    # Iterate over the set of paths, and process them one at-a-time

    foreach_in_collection timingPath_C $timingPaths_C {

    incr pathNum

    # Some objects returned by get_property will themselves be collections, so
    # additional processing is required to, for instance, get the name of a
    # particular pin or port

    # This section pulls "bannder/header" information about the path

    set timingPts_C [get_property $timingPath_C timing_points]
    set startPoint [query_objects [get_property $timingPath_C launching_point]]
    set endPoint [query_objects [get_property $timingPath_C capturing_point]]
    set launchClk [query_objects [get_property $timingPath_C launching_clock]]
    set captureClk [query_objects [get_property $timingPath_C capturing_clock]]
    set launchClkEdge [get_property $timingPath_C launching_clock_open_edge_type]
    set captureClkEdge [get_property $timingPath_C capturing_clock_close_edge_type]

    puts "\n"
    puts "Path $pathNum"
    puts "\t Startpoint: $startPoint launched by $launchClk $launchClkEdge"
    puts "\t Endpoint: $endPoint latched by $captureClk $captureClkEdge"


    # This section iterates over the pins/ports for a specific path and prints
    # out the pin name and the edge of the transition
    #

    foreach_in_collection point_C $timingPts_C {
    set pin [get_property [get_property $point_C pin] hierarchical_name]
    set pinEdge [get_property $point_C transition_type]
    puts "$pin \t $pinEdge"
    }

    }
    }


    Example:

    encounter 34> my_report_timing -max_paths 2


    Path 1
    Startpoint: in launched by PH1 rise
    Endpoint: RS/D latched by PH1 rise
    in fall
    U0/A fall
    U0/Y fall
    U00/A fall
    U00/Y fall
    U01/A fall
    U01/Y fall
    RS/D fall


    Path 2
    Startpoint: in launched by PH1 rise
    Endpoint: RS/D latched by PH1 rise
    in rise
    U0/A rise
    U0/Y rise
    U00/A rise
    U00/Y rise
    U01/A rise
    U01/Y rise
    RS/D rise


    Originally posted in cdnusers.org by ejm
    • Post Points: 0
Page 1 of 1 (2 items)
Sort Posts:
Started by archive at 27 May 2007 06:07 AM. Topic has 1 replies.