-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clock gating support #102
Comments
Modern clock synthesis tools will already implicitly detect and implement this type of power optimization. Similar to the common subexpression elimination algorithm discussed in #103, tools should have no issue detecting that the generated regfile's internal Adding an explicit clock gating mechanism opens up numerous maintainability hazards and complexities that do not seem well justified given the state of modern power optimization that already exists. |
With the #103, I sort of agree (despite the personal preference) that the "tool should handle it". I think here, you are not correct. I have not seen DC to insert hierarchical clock gating. Maybe FC or Genus do so... Yes, the tool detects strobes for individual registers, and infers you clock gate for a set of flip-flops based on its clock enable. With the power generally, your savings benefits are like so (first one most significant) :
Or maybe put it like so: The earlier you tackle the problem, re-think it and design it well, the better result you will get. Relying solely on tool is not a good idea... For us this might be a "go" or "not to go feature" for the PeakRDL. Maybe in summer I will have time and try to look at implementing this. |
Would you accept contribution of this feature assuming that it would not pollute the peakRDL code-base ? This will affect "reg-block" tool only. |
Looking at reference manual, there are some hints on the DC could be doing this multi-stage, I need to check. However, I still would prefer doing this by hand. |
Hi,
does PeakRDL-regblock generated register map support clock gating ?
I see that each generated register is clock enabled, so inferred clock gating will kick in for individual registers / fields.
However, it would be good to add configuration option (e.g.
enable_clock_gating
). With this configuration option,there would be two clocks on each generated register map module:
Then, within the generated block, there would be a logic that would determine when does the gated clock need to
be active (combine all the HW / SW access signals), and decode all such combinations into
gated_clock_clk_en
output. The user would then instantiate his own clock gater outside of the generated block, and connect
gated_clock_clnk_en
,
gated_clock
andungated_clock
.This feature would allow hierarchical clock gating that would help with power consumption in ASIC designs.
The text was updated successfully, but these errors were encountered: