Home > Community > Forums > Digital Implementation > Finding pin locations

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: *

 Finding pin locations 

Last post Mon, Mar 13 2006 3:25 AM by archive. 2 replies.
Started by archive 13 Mar 2006 03:25 AM. Topic has 2 replies and 1393 views
Page 1 of 1 (3 items)
Sort Posts:
  • Mon, Mar 13 2006 3:25 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    Finding pin locations Reply

    Hi, I use this to find an instance location: set instPtr [dbGetInstByName $instName] set loc [dbInstBox $instPtr] set llx [dbDBUToMicrons [lindex $loc 0]] set lly [dbDBUToMicrons [lindex $loc 1]] set urx [dbDBUToMicrons [lindex $loc 2]] set ury [dbDBUToMicrons [lindex $loc 3]] But, How do I find a pin location? Thanks Chris


    Originally posted in cdnusers.org by ChrisS
    • Post Points: 0
  • Mon, Mar 13 2006 7:02 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Finding pin locations Reply

    Hi Chris,

    You can use:

    dbForEachCellFterm

    To go through each cell pin.

    You can then pass each ftermPtr from dbForEachCellFterm to:

    dbFtermLoc

    To get the pin location.

    set pinLoc [dbFtermLoc $ftermPtr]

    Then lindex into pinLoc:

    set x_loc [lindex $pinLoc 0]
    set y_loc [lindex $pinLoc 1]

    You'll also want to convert from db units to microns like you did in your cell example.

    Good luck!

    Elvis


    Originally posted in cdnusers.org by elvis
    • Post Points: 0
  • Mon, Mar 13 2006 8:51 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Finding pin locations Reply

    you can use the following tcl procedure to zoom into a instance pin

    usage: z2ip some_hier/some_instance/some_pin


    proc z2ip { instName {pinName ""} } {
            if { $pinName == "" } {
                    set pinName [file tail $instName]
                    set instName [file dirname $instName]
            } else {
                    set instName $instName
            }
            set instPtr [dbGetInstByName $instName]
            set termPtr [dbGetTermByName $instPtr $pinName]
            set termInst [dbTermInst $termPtr]
            set termName [dbTermName $termPtr]
            set termInstName [dbTermInstName $termPtr]
            set termLoc [dbTermLoc $termPtr]
            set termBox [dbTermBox $termPtr]
            set termBox0 [expr [lindex $termBox 0] *[dbHeadMicronPerDBU] ]
            set termBox1 [expr [lindex $termBox 1] *[dbHeadMicronPerDBU] ]
            set termBox2 [expr [lindex $termBox 2] *[dbHeadMicronPerDBU] ]
            set termBox3 [expr [lindex $termBox 3] *[dbHeadMicronPerDBU] ]
            set termBox [list $termBox0 $termBox1 $termBox2 $termBox3]
            set termWidth [expr $termBox2 - $termBox0]
            set termHeight [expr $termBox3 - $termBox1]
            set termLayer [dbTermLayer $termPtr]
            set termLoc_X [expr [lindex $termLoc 0] *[dbHeadMicronPerDBU] ]
            set termLoc_Y [expr [lindex $termLoc 1] *[dbHeadMicronPerDBU] ]
            set x0 [expr $termLoc_X - 1]
            set y0 [expr $termLoc_Y - 1]
            set x1 [expr $x0 + 2]
            set y1 [expr $y0 + 2]
            zoomBox $x0 $y0 $x1 $y1
            set netPtr [dbTermNet $termPtr]
            puts "$instName pinLoc: $termLoc_X $termLoc_Y ; width: $termWidth height: $termHeight "
    }

    li siang



    Originally posted in cdnusers.org by lisiang
    • Post Points: 0
Page 1 of 1 (3 items)
Sort Posts:
Started by archive at 13 Mar 2006 03:25 AM. Topic has 2 replies.