• 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. Logic Design
  3. How do you find the driving cell?

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 61
  • Views 14840
  • 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 do you find the driving cell?

archive
archive over 17 years ago

All -

How do you get the driver cell name of a net or hierarchical pin? I have tried the following commands -

fanin -structural -max_logic_depth 1 [get_attr drivers [find / -net XX]]

gives me the input pins of the fanins. I want to get the hierarchical name of output pin of the driving cell in question.

Any suggestions?

Thanks,

Sanjay



Originally posted in cdnusers.org by ssunder@sioptical.com
  • Cancel
  • archive
    archive over 17 years ago

    Hello Sanjay,
    You specify only 1 logic depth of a driver pin, which is an output pin, that's why so see the input pins. Try max_logic_depth of 2.


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

    Synthman -

    Thanks,


    Originally posted in cdnusers.org by ssunder@sioptical.com
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 17 years ago


    Hi,

    I don't think you want a logic depth of 2 here. If the result of [get_attr drivers] is already a leaf driver, then you already have your result. However if [get_attr drivers] returns a hierarchical boundary pin (and I'm assuming this is the tricky case you need to handle), then you want to get the fanin with the max PIN depth set to 1. Below is some code to help distinguish between the hierarchical boundary pin case and the trivial case.

    Hope this helps...

    - Denis

    proc is_hier_boundary {pin} {
    return [expr {[basename [dirname [dirname [dirname $pin]]]] eq "instances_hier"}]
    }

    proc leaf_driver {net} {
    set drvrs [get_attribute drivers $net]
    if {! [llength $drvrs]} {
    return [list]
    }

    # get the first driver of the net (in case there are many)
    # could loop over all drivers instead
    set drvr [lindex $drvrs 0]

    if {[is_hier_boundary $drvr]} {
    # this is a hierarchical boundary, trace to find the leaf driver
    return [fanin -structural -max_pin_depth 1 $drvr]
    }

    # the net is already driven by a leaf driver
    return $drvr
    }


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

    Many thanks, this is what I was looking for.

    Sanjay


    Originally posted in cdnusers.org by ssunder@sioptical.com
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

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