These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various embodiments of the invention, in which:
It is noted that the drawings of the invention are not to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
The current invention is based on an understanding that if two noise spikes are closer in time, the peak current will be higher in magnitude. On the other hand, if two noise spikes are separated relatively far away in time, the peak current will be lower in magnitude. As such, if clock signals of clocked elements, e.g., latches, SRAMs, flipflops, register files, or other data storage elements, have misaligned/non-coincident inactive edges in time, the peak current generated by the inactive edges will be reduced. As shown in
In operation, local clock chopper 16 maintains active edges 22 of global clock 14 in the splitting, but shifts inactive edge 24 of global clock 14 to generate local clocks 20. As shown in the illustrative example of
According to one embodiment, local clock chopper 16 may be controlled by a control system 100, e.g., a computer system. For example, control system 100 may select local clock signals 20 for inactive edge shifting and may determine how an inactive edge 22 of a local clock signal 20 should be shifted. In other words, control system 100 determines and assigns a clock duty cycle for each local clock 20. It is appreciated that in assigning a clock duty cycle, active edge 28 is not varied such that proper timing of the IC is maintained. Any methods or standards/tests may be used in the assignment of clock duty cycle, and all are included in the current invention. Basically, to reduce noise, inactive edges of local clocks 20 need to be as misaligned as possible, provided that other design rule constraints are met.
In addition, in the case that a large number of local clocks 20 are involved, weightings may be applied to local clocks 20 in the clock duty cycle assignment. It is appreciated that it is the switching of inactive edges 26 of local clocks 20, not the activities of local clocked elements 18, that generates noise currents at inactive edges. For example, a local clock 20 (e.g., a branch or clock signal leaf) that has the potential to generate more noise may be assigned a priority in the assignment of clock duty cycle. Specifically, clock signals which drive larger numbers of clocked elements need to be assigned higher priority in order to maximize spreading of inactive edges and minimize peak noise. In addition, a local clock signal with a capacitive load higher than a pre-set threshold is may also be assigned a priority. In general clock signals may be evaluated for their potential to create noise due to inactive edge switching and regardless of the cause of the noise generation potential, those clock signals with the highest potential for noise generation or those which potentially generate noise above a pre-set threshold for acceptable noise generation may be prioritized above other clock signals in the IC for clock duty cycle spreading.
In addition, the assignment of a clock duty cycle may involve the consideration of the noise sensitive bandwidth of a nearby circuit such that an inactive edge 26 of a local clock signal 20 falls outside of the noise sensitive bandwidth. For example, if a nearby circuit is sensitive to noise at the middle of a clock cycle, the local clock signal 20 of a clocked element 18 needs to have a clock duty cycle skewed away from 50/50, i.e., inactive clock edge in the middle of a clock cycle.
Moreover, as a functionality requirement, the assigned clock duty cycle needs to leave enough time for a local clocked element 18 to complete data processing. In other words, the shifted clock duty cycle must maintain the minimum pulse-width requirement of the respective clocked element 18. For example, if a local clocked element 18 needs a 20/80 clock duty cycle to complete a data transition, the respective local clock 20 cannot be assigned a clock duty cycle of 10/90.
In addition, it needs to be determined whether the assignment of clock duty cycles maintains proper functionality of the designed IC. For example, it needs to be determined whether, after the shifting of inactive clock edges, the clocked elements are able to be placed and routed according to design rule constraints. Other timing constraints, such as the above-mentioned clock pulse-width, also need to be checked and maintained.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to a person skilled in the art are intended to be included within the scope of the invention as defined by the accompanying claims.