• 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. Properly optimizing enable to clock gating enable

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 61
  • Views 25161
  • 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

Properly optimizing enable to clock gating enable

archive
archive over 19 years ago

Hi,

I am curious to know how you handle the path to clock gating enable  pin.

I have a design containing multiple level of clock gating on the clock network and when synthesizing using ideal clock all my patht o enable pins have a full  cycle but when My CTS will introduced the latency of the network will reduce the available time to reach those pins.

I understand I could perform post CTS optimization but I would prefer a more robust method to constraint those in ideal clock mode.

I'am thinking of the 2 following approach and would like to hear from you if you have use them or if you have used any others.

- max_delay to enable pins equal to (clock period - expected network latency post clock gating element)
- defining generated clock after each clock gating element with different latency

Those 2 methods have the inconvenience of requiring a lot of data management  :(

Thanks for your help,
Eric.


Originally posted in cdnusers.org by evenditti
  • Cancel
Parents
  • archive
    archive over 19 years ago

    Thanks everybody for your participation.

    A lot of good things have been said here and I would agree that good planning i.e. a clock gating aware architecture is the best path to success. However we don't always have that and even when you do have a FF drivign the enable it is no guarantee that your path will be as fast as it could as this path will meet timing without problem in synthesis and thing like arearecover migth actually slow this path down as there is a large positive slack. Granted post route optimization should be able to optimize this fairly easily but it will be better to have it as fast as possible to start with.

    In addition in many physical implementation the clock gating cells are duplicated based on where they are on the clock tree i.e.  havign a single instance of a clock gating near the root of the clock is good  for something control with a signal like IP_ON_OFF but not too practical if the enable is generated deep in the block. So depending on the physical distribution of the flop you want to gate the cloning strategy of your clock gating cell might differ and tool can now handle that in the backend the part they don't handle very well is the enable logic and mostly because there is no "universal constraints" to define those signal and constrained them

    We all agree that if you can have a backend estimate of your clock latency and strategy and a stable it is not too hard to solve this problem the problem is who ever get that and has a chance to go back all the way back to the syntheisis. In General at that point my manager is pushing to tape it out and screw it if it is not the best/most robust solution

    So from what I have read so far I take:

    • max_delay is a good sytnhesis only solution (i.e.  this can be interpreted differently by different tool )
    • path_adjust is  a good option to explore in RC. Does anybody knows if FE will understand that correctly even when switching from pre to post CTS timing?
    • Most accurate solution is to model the latency at each of the clock gating element and let the tool do the calculation however I am not sure this doesn't results in too many clocks and doesn't have a negative impact on your run time. Advantage is that this should be properly handled in pre vs post CTS timing .
    Now my wish is to get a set_afap constraint that could be used on those signals.

    On using false path on enable I will say be very carefull and this is fine for global  on/off signal for which you don't care when they occur, for thing that need to be cycled accurate (typically controllng write to config register, internal memoreis, ...) this is the best way to end up with gate level simulation not matching your functional  simulation despite the fact that your formal equivalency pass!! Ever been beaten by that one due to the clock latency makign your enable being seen one cycle too late?

    Eric.
     


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

    Thanks everybody for your participation.

    A lot of good things have been said here and I would agree that good planning i.e. a clock gating aware architecture is the best path to success. However we don't always have that and even when you do have a FF drivign the enable it is no guarantee that your path will be as fast as it could as this path will meet timing without problem in synthesis and thing like arearecover migth actually slow this path down as there is a large positive slack. Granted post route optimization should be able to optimize this fairly easily but it will be better to have it as fast as possible to start with.

    In addition in many physical implementation the clock gating cells are duplicated based on where they are on the clock tree i.e.  havign a single instance of a clock gating near the root of the clock is good  for something control with a signal like IP_ON_OFF but not too practical if the enable is generated deep in the block. So depending on the physical distribution of the flop you want to gate the cloning strategy of your clock gating cell might differ and tool can now handle that in the backend the part they don't handle very well is the enable logic and mostly because there is no "universal constraints" to define those signal and constrained them

    We all agree that if you can have a backend estimate of your clock latency and strategy and a stable it is not too hard to solve this problem the problem is who ever get that and has a chance to go back all the way back to the syntheisis. In General at that point my manager is pushing to tape it out and screw it if it is not the best/most robust solution

    So from what I have read so far I take:

    • max_delay is a good sytnhesis only solution (i.e.  this can be interpreted differently by different tool )
    • path_adjust is  a good option to explore in RC. Does anybody knows if FE will understand that correctly even when switching from pre to post CTS timing?
    • Most accurate solution is to model the latency at each of the clock gating element and let the tool do the calculation however I am not sure this doesn't results in too many clocks and doesn't have a negative impact on your run time. Advantage is that this should be properly handled in pre vs post CTS timing .
    Now my wish is to get a set_afap constraint that could be used on those signals.

    On using false path on enable I will say be very carefull and this is fine for global  on/off signal for which you don't care when they occur, for thing that need to be cycled accurate (typically controllng write to config register, internal memoreis, ...) this is the best way to end up with gate level simulation not matching your functional  simulation despite the fact that your formal equivalency pass!! Ever been beaten by that one due to the clock latency makign your enable being seen one cycle too late?

    Eric.
     


    Originally posted in cdnusers.org by evenditti
    • 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