• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Digital Implementation
  3. How to make a iteration of all the VIAs in SOC Encounter...

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 90
  • Views 15813
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to make a iteration of all the VIAs in SOC Encounter database?

archive
archive over 17 years ago

Hi, all:

I am Roc Sun. Recently, I got a few problems.

One is how can I iterate all the via instances in SoC Encounter. I can find the command 'dbViaCellName' or something, but I can not find the way to get via instances. As you know, in SoC52, it 'split via' utility is not working. So, I want write my own version using database command.

The other is that, how can I get all the drc box coordinates, I mean the white boxes after we made a DRC check in SOC Encounter. I want to write this script in db commands.

Best Regard!


Originally posted in cdnusers.org by eminemshow
  • Cancel
Parents
  • archive
    archive over 17 years ago

    Bob:

    Following is my script,

    proc getNetRoute { netName } {
    set FILE [open net_physical.rpt w]
    set netPtr [dbGetNetByName $netName]
    set iter [dbIterRoutes $netPtr]
    set routePtr ""
    while { [set routePtr [dbRouteNext $iter]] != "0x0" } {
    set type [dbObjType $routePtr]
    if { $type == "dbcObjWire" } {
    puts $FILE "Wire found:"
    puts $FILE "[dbInfoWire $routePtr]"
    } elseif { $type == "dbcObjStripBox" } {
    if { [dbIsStripBoxVia $routePtr] || [dbIsStripBoxViaCell $routePtr] } {
    puts "via $routePtr found"
    dbHiliteObj $routePtr 4
    # dbHiliteObjBox $routePtr
    dbSelectObj $routePtr
    }
    puts $FILE "Wire/Via found:"
    puts $FILE "[dbInfoStripBox $routePtr]"
    puts $FILE "Z: [dbStripBoxZ $routePtr]"
    dbSelectObj $routePtr
    set netPtr [dbStripBoxStrip $routePtr]
    set objType [dbObjType $netPtr]
    if { $objType == "dbcObjNet" } {
    puts "[dbNetName $netPtr]"
    } elseif { $objType == "dbcObjSNet" } {
    puts "[dbSNetName $netPtr]"
    } else {
    }
    } elseif { $type == "dbcObjVia" } {
    puts $FILE "Via found:"
    puts $FILE "[dbInfoVia $routePtr]"
    } else {
    puts "Error found, unknown type $type"
    }
    }
    dbEndIterRoutes $iter
    close $FILE
    }

    The only way I found to get the 'vias' is using the above 'dbIterRoute' method. And it seems that SOCE now only support stripbox for all the routes (including wires and vias). We cannot get the via instances.

    For your method to select vias 1st, It also ends up with getting 'dbcObjStripBox'. I will post another question in a new thread.


    Originally posted in cdnusers.org by eminemshow
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • archive
    archive over 17 years ago

    Bob:

    Following is my script,

    proc getNetRoute { netName } {
    set FILE [open net_physical.rpt w]
    set netPtr [dbGetNetByName $netName]
    set iter [dbIterRoutes $netPtr]
    set routePtr ""
    while { [set routePtr [dbRouteNext $iter]] != "0x0" } {
    set type [dbObjType $routePtr]
    if { $type == "dbcObjWire" } {
    puts $FILE "Wire found:"
    puts $FILE "[dbInfoWire $routePtr]"
    } elseif { $type == "dbcObjStripBox" } {
    if { [dbIsStripBoxVia $routePtr] || [dbIsStripBoxViaCell $routePtr] } {
    puts "via $routePtr found"
    dbHiliteObj $routePtr 4
    # dbHiliteObjBox $routePtr
    dbSelectObj $routePtr
    }
    puts $FILE "Wire/Via found:"
    puts $FILE "[dbInfoStripBox $routePtr]"
    puts $FILE "Z: [dbStripBoxZ $routePtr]"
    dbSelectObj $routePtr
    set netPtr [dbStripBoxStrip $routePtr]
    set objType [dbObjType $netPtr]
    if { $objType == "dbcObjNet" } {
    puts "[dbNetName $netPtr]"
    } elseif { $objType == "dbcObjSNet" } {
    puts "[dbSNetName $netPtr]"
    } else {
    }
    } elseif { $type == "dbcObjVia" } {
    puts $FILE "Via found:"
    puts $FILE "[dbInfoVia $routePtr]"
    } else {
    puts "Error found, unknown type $type"
    }
    }
    dbEndIterRoutes $iter
    close $FILE
    }

    The only way I found to get the 'vias' is using the above 'dbIterRoute' method. And it seems that SOCE now only support stripbox for all the routes (including wires and vias). We cannot get the via instances.

    For your method to select vias 1st, It also ends up with getting 'dbcObjStripBox'. I will post another question in a new thread.


    Originally posted in cdnusers.org by eminemshow
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information