• 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. Undesirable buffer insertion for constant pins attached...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 63
  • Views 14440
  • 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

Undesirable buffer insertion for constant pins attached to an instantiated hard macro

Brannon
Brannon over 14 years ago

My design 'foo' imports a hard macro for a subdesign 'bar', referenced via a bar.lef and bar.lib. One edge of foo abuts with an edge of bar with bar's pins on that edge passed directly to foo's ports. Some of the bar output pins are constants, and thus bar.lib lists a 'function' with a constant value for those pins. RC seems to want to buffer its version of those ports rather than just connect to the output pins of the bar (they are buffered internal to bar, so there is no ESD concern).

The problem is that there is no room to drop a buffer which leads to hilarious results (the buffer is placed many mm away). I'd like to instruct RC (and subsequent velocity runs) to connect those ports directly without any buffering. I [perhaps foolishly] tried:

 set_attribute iopt_avoid_tiecell_replacement true [dc::get_ports o_*]

It didn't work (or perhaps I applied this at the wrong point in the flow)--Any suggestions?

  • Cancel
  • grasshopper
    grasshopper over 14 years ago

    Hi Brannon,

     did you try simply preserving (set_attr preserve true [find / -pin ...) such pins ? I believe that should suffice, If that works, I beleive you can even include the preserved/dont_touch'ed pins in your liberty model. Please report back if that works

     gh-

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Brannon
    Brannon over 14 years ago

    That didn't seem to work--it still replaces the connection to the constant pin on the hard macro with an 'assign out = 1'b0', and then sometime later it replaces all the assigns with buffers.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Brannon
    Brannon over 14 years ago

    I'm having better luck with:

     set_attribute propagate_constant_from_timing_model false <instance>

     This prevents it from noticing that the pin is constant driven from the instance and thus avoids turning this into an assign which later gets turned into a buffer.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • grasshopper
    grasshopper over 14 years ago

     Hi Brannon,

    that seems like the right attibute. Thanks for reporting back

     gh-

    • 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