Automatic Clock-Gating Propagation in Microprocessor Circuits
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Automated tools fail to effectively identify and implement clock-gating opportunities in microprocessor systems, leading to inefficiencies in power consumption and heat management due to manual limitations and oversight of clock-gating opportunities during mapping and logic optimization.
Innovation Solution
A method and system for automatically inserting clock-gating logic by identifying sender and enable-generating memory elements, generating enable signals, and propagating clock-gating from downstream seed memory elements to upstream sender memory elements, using data inputs and combinational logic to replicate and time-shift enable signals, thereby reducing switching power.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If manual clock-gating identification is used, then clock-gating opportunities can be identified, but the process is tedious and time-consuming, limiting it to only a small subset of sequential elements
Solution Approach 1:
The system performs self-service by automatically identifying clock-gating opportunities and inserting clock-gating logic without requiring manual intervention. The automated tool traverses the circuit, identifies seed memory elements with clock-gating opportunities, and propagates enable signals to sender memory elements, making the entire process self-executing and eliminating the time-consuming manual approach
Solution Approach 2:
The patent introduces an intermediary automated analysis tool that acts as a mediator between the circuit design and clock-gating implementation. This tool traverses the circuit, identifies clock-gating opportunities by analyzing data paths and enable signals, and systematically inserts clock-gating logic, thereby bridging the gap between manual identification accuracy and automated efficiency
2Extent of automation
If automated tools operate on high-level RTL model, then automation is achieved, but clock-gating opportunities in the final gate-level netlist are missed
Solution Approach 1:
The system performs preliminary action by conducting clock-gating analysis at the gate-level netlist stage rather than at the high-level RTL model stage. This ensures that all optimization transformations, buffering, and logic changes are already reflected in the circuit representation, allowing the automated tool to accurately detect clock-gating opportunities in the final implementation
Solution Approach 2:
The patent inverts the conventional approach by performing clock-gating insertion after mapping and logic optimization rather than before. This reverse sequencing ensures that the automated tool operates on the actual final circuit structure, capturing all clock-gating opportunities that may have been created or modified by prior optimization steps
3Loss of energy
If clock-gating is implemented, then switching power is reduced, but additional logic circuitry must be added to selectively disable clock signals
Solution Approach 1:
The system merges the enable signal generation logic into existing combinational logic paths that already determine when memory elements need to update. By reusing existing enable signals from seed memory elements and propagating them to sender memory elements, the implementation avoids adding redundant logic while achieving comprehensive clock-gating coverage
Solution Approach 2:
The patent creates universal enable signal paths that serve multiple memory elements simultaneously. A single enable signal generated from combinational logic can gate clocks for multiple sender memory elements that share the same data dependency, thereby reducing overall circuit complexity while maintaining effective power management across the circuit
Data Source
AI summary
Embodiments of the present invention provide a method and system for clock-gating a circuit. During operation, the system receives a description of a circuit that includes clocked memory elements, some of which are clock-gated. Next, the system identifies a sender memory element by identifying a sender path from an output of the sender memory element to a data input for a seed memory element. Then, the system identifies an enable-generating memory element by identifying an enable-signal path from an output of the enable-generating memory element to an enable signal which is used to gate a clock signal input for the seed memory element. Next, the system provides clock-gating for the sender memory element by generating an enable signal using a data input for the enable-generating memory element. Finally, the system gates a clock signal for the sender memory element using this generated enable signal.


