Method and apparatus for reducing clock enable setup time in a multi-enabled clock gating circuit

A multi-enabled clock gating circuit reduces clock enable setup time. In one example, the multi-enabled clock gating circuit comprises an OAI logic gate and a clock enable control circuit. The OAI logic gate is configured to generate a gated clock signal by inverting an input clock signal responsive to one of a timing-sensitive clock enable signal and a timing-insensitive clock enable signal being active. The clock enable control circuit is configured to prevent the OAI logic gate from receiving the timing-insensitive clock enable signal responsive to the timing-sensitive clock enable signal being active. In one or more embodiments, a multi-enabled clock gating circuit having reduced clock enable setup time may be included in an integrated circuit for implementing clock gating during different operating modes of the integrated circuit.

FIELD

The present disclosure generally relates to clock gating, and particularly relates to reducing clock enable setup time in multi-enabled clock gating circuits.

BACKGROUND

Clock-gating is a widely adopted technique for deactivating particular resources within an integrated circuit (IC). A clock gating circuit deactivates an IC resource by gating a clock signal provided to the resource. In response to an active clock enable signal, the clock gating circuit passes the clock signal to a target resource. Conversely, the clock gating circuit inhibits or blocks the clock signal from reaching the target resource when the clock enable signal is inactive.

In some cases, a clock gating circuit receives more than one clock enable signal. Each clock enable signal facilitates clock gating during a particular application. For example, one clock enable signal gates functional clocking of an IC resource during normal operation of the IC and a different clock enable signal gates test clocking of the IC resource during testing of the IC. Conventional multi-enabled clock gating circuits include a clock enable selection mechanism such as a multiplexer or other combinatorial logic. The clock enable selection mechanism selects one of a plurality of clock enable signals for activating clock gating during a particular application.

However, conventional multi-enabled clock gating circuits, particularly the clock enable selection mechanisms thereof, add delay to the clock enable signal paths. Conventional clock enable selection mechanisms subject clock enable signals to additional signal propagation delay not experienced by the internal clock signal to be gated. That is, the clock enable signals are processed by the clock enable selection mechanism before gating the internal clock signal. Unlike the clock enable signals, the clock signal to be gated does not propagate through the clock enable selection mechanism, and thus, is not subjected to the corresponding additional delay.

The additional delay incurred by the clock enable signals increases the setup time associated with the signals. That is, the clock enable signals should arrive at the clock gating circuit sufficiently in advance of the clock signal to be gated. Otherwise, the gated clock signal will be skewed. Circuits downstream from the clock gating circuit may function unpredictably in response to a skewed clock signal. Clock-gating induced skew can be reduced by increasing setup time associated with the clock enable signals. However, increased setup time adversely affects IC performance, i.e., the maximum attainable operating frequency of the IC is decreased. This is of particular concern for clock enable signals that gate functional clocking of an IC resource during normal operation of the IC.

SUMMARY OF THE DISCLOSURE

According to the methods and apparatus taught herein, a multi-enabled clock gating circuit comprises an or-and-invert (OAI) logic gate and a clock enable control circuit. The OAI logic gate is configured to generate a gated clock signal by inverting an input clock signal responsive to one of a timing-sensitive clock enable signal and a timing-insensitive clock enable signal being active. The clock enable control circuit is configured to prevent the OAI logic gate from receiving the timing-insensitive clock enable signal responsive to the timing-sensitive clock enable signal being active.

Thus, in at least one embodiment, an OAI logic gate for use in a multi-enabled clock gating circuit comprises a clock gating stage and an enabling stage. The clock gating stage is configured to generate a gated clock signal by inverting an input clock signal when the clock gating stage is enabled and inhibit the generation of the gated clock signal when the clock gating stage is disabled. The enabling stage is configured to enable the clock gating stage responsive to one of a timing-sensitive clock enable signal and a timing-insensitive clock enable being active and disable the clock gating stage responsive to the clock enable signals being inactive.

In one or more embodiments, a method of reducing clock enable setup time in a multi-enabled clock gating circuit by an OAI logic gate comprises generating a gated clock signal by inverting an input clock signal responsive to one of a first and second clock enable signals being active and preventing the OAI logic gate from receiving more than one active clock enable signal.

Of course, the present disclosure is not limited to the above features. Those skilled in the art will recognize additional features upon reading the following detailed description, and upon viewing the accompanying drawings.

DETAILED DESCRIPTION

FIG. 1illustrates an integrated circuit (IC)10including a multi-enabled clock gating circuit12having reduced clock enable setup time. The IC10may be any IC that implements multi-enabled clock gating such as a microprocessor or an Application-Specific IC (ASIC). The IC further includes a global clock generation circuit14. In one example, the global clock generation circuit14comprises a phase-locked loop (PLL). The global clock generation circuit14receives an external system clock signal (sys_clk) and generates an internal clock signal (clk_in) in response to sys_clk. The internal clock signal clk_in provides a time reference for the movement of data within the IC10. The multi-enabled clock gating circuit12receives clk_in either directly from the global clock generation circuit14or indirectly from a clock distribution tree (not shown).

The IC10operates in one of two modes. The IC10operates in a peak-performance operating mode when the maximum attainable operating frequency of the IC10is desired. The IC10operates in a reduced-performance operating mode in all other cases, e.g., low power or testing modes. The multi-enabled clock gating circuit12generates a gated clock signal output (clk_out) for use by downstream circuits16during both operating modes.

When the IC10is in peak-performance mode, the multi-enabled clock gating circuit12reduces clock enable setup time by directly gating clk_in with a timing-sensitive clock enable signal, i.e., a clock enable signal that adversely impacts the maximum attainable operating frequency of the IC10during peak-performance. To reduce setup time associated with the timing-sensitive clock enable signal, the multi-enabled clock gating circuit12subjects clk_in and the timing-sensitive clock enable signal to the same delay. Reducing the setup time associated with the timing-sensitive clock enable signal correspondingly reduces clock-gating induced skew. When the skew associated with clk_out is reduced, the attainable operating frequency of downstream circuits16that receive clk_out may be increased during normal functional operation of the IC10.

When the IC10is in a reduced-performance mode, the maximum attainable operating frequency of the downstream circuits16is less critical. Thus, the multi-enabled clock gating circuit12gates clk_in using a timing-insensitive clock enable signal, i.e., a clock enable signal that does not adversely impact the maximum attainable operating frequency of the IC10during peak-performance.

Further, the multi-enabled clock gating circuit12gates the timing-insensitive clock enable signal to inhibit the timing-insensitive clock enable signal when the timing-sensitive clock enable signal is active. By so gating, the multi-enabled clock gating circuit12is unaffected by the timing-insensitive clock enable signal when the timing-sensitive clock enable signal is active. Conversely, the timing-insensitive clock enable signal gates clk_in when the timing-sensitive clock enable signal is inactive. The clock enable gating process subjects the timing-insensitive clock enable signal to delay not experienced by the timing-sensitive clock enable signal. The additional delay experienced by the timing-insensitive clock enable signal causes clock-gating induced skew if uncompensated. To reduce clock-gating induced skew, the setup time associated with the timing-insensitive clock enable signal is increased. However, because the timing-insensitive clock enable signal is active during a reduced-performance mode of the IC10, increasing the setup time associated with the timing-insensitive clock enable signal does not adversely impact the functional performance of the IC during peak-performance.

FIG. 2illustrates an embodiment of the multi-enabled clock gating circuit12ofFIG. 1. The multi-enabled clock gating circuit12includes a clock enable control circuit18, an OAI logic gate20, and an inverter22. The OAI logic gate20, as illustrated by Step100of the program logic ofFIG. 3, generates a gated clock signal output by inverting an input clock signal (clk_in) in response to one of a timing-sensitive or timing-insensitive clock enable signals being active. The clock enable control circuit18, as illustrated by Step102of the program logic ofFIG. 3, prevents the OAI logic gate20from receiving the timing-insensitive clock enable signal when the timing-sensitive clock enable signal is active. The inverter22outputs a clock signal (clk_out) approximately in phase with clk_in by inverting the gated clock signal output of the OAI logic gate20.

The multi-enabled clock gating circuit12receives at least two clock enable signals. One clock enable signal, e.g., clk_en, is timing-sensitive. Other clock enable signals, e.g., test_en, are timing-insensitive. The compact topology of the OAI logic gate20, described in detail later, enables clk_en to directly gate the input clock signal clk_in when clk_en is active. The timing-sensitive clock enable signal clk_en is not gated or otherwise processed by the clock enable control circuit18, and thus, is not subjected to the signal propagation delay associated with the clock enable control circuit18.

The clock enable control circuit18gates a timing-insensitive clock enable signal such as test_en using the timing-sensitive clock enable signal clk_en. Thus, the clock enable control circuit18prevents timing-insensitive clock enable signals from affecting the clock gating operation of the OAI logic gate20when clk_en is active. When clk_en is inactive, the clock enable control circuit18uses clk_en to gate a selected timing-insensitive clock enable signal such as test_en. The gated clock enable signal (gated_en) is provided to the OAI Logic gate20when the IC10is in a reduced-performance mode. The clock enable control circuit18may gate any number of timing-insensitive clock enable signals. For example, the clock enable control circuit18may comprise a multiplexer or other combinatorial and/or sequential logic for directing one of a plurality of timing-insensitive clock enable signals to the OAI logic gate20in response to a timing-sensitive clock enable signal being inactive.

The OAI logic gate20includes an enabling stage24and a clock gating stage26. The enabling stage24enables the clock gating stage26when either gated_en or clk_en is active. Conversely, the enabling stage24disables the clock gating stage26when both gated_en and clk_en are inactive. The clock gating stage26of the OAI logic gate20, when enabled, generates a gated clock signal at the output node of the OAI logic gate20. The clock gating stage26generates the gated clock signal by inverting clk_in. Further, the clock gating stage26inhibits generation of the gated clock signal when disabled. In one example, the clock gating stage26inhibits generation of the gated clock signal by driving the output node of the OAI logic gate20to a fixed logic level. By driving the output node of the OAI logic gate20to a fixed logic level, the input clock signal clk_in is blocked or inhibited from passing to the output node.

FIG. 4illustrates a logic gate implementation of the multi-enabled clock gating circuit12ofFIG. 1. The clock enable control circuit18comprises an inverter28and a two-input NOR gate30. The inverter28inverts the timing-insensitive clock enable signal test_en. The two-input NOR gate30generates the gated timing-insensitive clock enable signal gated_en. When clk_en is active, e.g., at a logic high level, the clock enable control circuit18inhibits test_en from passing to the enabling stage24. Conversely, when clk_en is inactive and test_en is active, the clock enable control circuit18passes test_en to the enabling stage24via gated_en.

The enabling stage24of the OAI logic gate20comprises a two-input OR gate32. The two-input OR gate32directly receives clk_en at one input and receives gated_en from the clock enable control circuit18at another input. In operation, the two-input OR gate32enables the clock gating stage26in response to either clk_en or gated_en being active. Conversely, when both clk_en and gated_en are inactive, the two-input OR gate32disables the clock gating stage26.

The clock gating stage26comprises a two-input NAND gate34. The two-input NAND gate34generates a gated clock signal at the output node of the OAI logic gate20by inverting clk_in when enabled. When disabled, the two-input NAND gate34drives the output node of the OAI logic gate20to a fixed voltage level. That is, the two-input NAND gate34inhibits clk_in from propagating to the downstream circuits16by driving the output node of the OAI logic gate20to a fixed voltage level.

FIG. 5illustrates a transistor implementation of the OAI logic gate20ofFIG. 2. The enabling stage24of the OAI logic gate20includes a pull-down network comprising n-channel transistors N1and N2coupled in parallel. The clock gating stage26includes a pull-up network comprising p-channel transistors P1and P2coupled in series. The clock gating stage26further includes an inverter comprising p-channel transistor P3coupled in series with n-channel transistor N3.

The pull-down network of the enabling stage24enables the clock gating stage26when one of the clock enable signals is active and disables the clock gating stage when both clock enable signals are inactive. In one example, the pull-down network enables the clock gating stage26by providing a ground source to the clock gating stage26when either clk_en or gated_en is active. Conversely, the pull-down network disables the clock gating stage26by removing the ground source from the clock gating stage26when both clk_en and gated_en are inactive.

In operation, the pull-down network provides a ground source to the clock gating stage26when either transistor N1or N2is switched ‘on’. Transistors N1and N2are switched ‘on’ when their respective gate inputs are at a logic high level. Transistor N1directly receives the timing-sensitive clock enable signal clk_en at its gate input. Transistor N2receives the gated timing-insensitive clock enable signal gated_en from the clock enable control circuit at its gate input. Thus, when either clk_en or gated_en is active, the pull-down network enables the clock gating stage26by providing a ground source to the clock gating stage. Conversely, when both clk_en and gated_en are inactive, the pull-down network is turned off, thus disabling the clock gating stage26by removing the ground source from the clock gating stage.

The inverter of the clock gating stage26generates the gated clock signal at the output node of the OAI logic gate when the clock gating stage26is enabled. The inverter generates the gated clock signal by inverting the input clock signal (clk_in). In one example, the clock gating stage26is enabled when transistor N3is coupled to a ground source at its respective source node. The clock gating stage26is disabled when the ground source is removed from the source node of transistor N3. The inverter does not function properly when the source node of transistor N3floats indeterminately. As a result, the pull-up network inhibits generation of the gated clock signal with little contention from the inverter when the clock gating stage is disabled.

The pull-up network of the clock gating stage26inhibits generation of the gated clock signal when all clock enable signals are inactive by driving the output node of the OAI logic gate20to a fixed voltage level. As such, the input clock signal clk_in is effectively blocked or inhibited from passing to the output node of the OAI logic gate20. In operation, transistors P1and P2are switched ‘on’ when their respective gate inputs are at a logic low level. Transistor P1directly receives the timing-sensitive clock enable signal clk_en at its gate input. Transistor P2receives the gated timing-insensitive clock enable signal gated_en from the clock enable control circuit at its gate input. Thus, when both clk_en and gated_en are inactive, transistors P1and P2are switched ‘on’ and drive the output node of the OAI logic gate20to a fixed voltage level. Conversely, when either clk_en or gated_en is active, the pull-up network is turned off and does not drive the output node of the OAI logic gate20to a fixed voltage level. As such, the pull-up network does not prevent the inverter from generating the gated clock signal output.

The compact topology of the OAI logic gate20enables the timing-sensitive clock enable signal clk_en to directly gate the input clock signal clk_in without subjecting clk_en to delay not experienced by clk_in. Particularly, the logic OR function of the enabling stage24and the logic NAND function of the clock gating stage26may be condensed into a single-stage transistor implementation. That is, all signals received by the OAI gate are subjected to or processed by one stage of complimentary transistors. By subjecting clk_en and clk_in to one stage of complimentary transistors to activate clock gating, e.g., N1/P1and N3/P3, respectively, both signals experience the same delay, thus reducing the setup time associated with clk_en. However, the compact topology of the OAI logic gate20may result in non-uniform clock latency.

Non-uniform clock latency occurs when the clock gating stage26of the OAI logic gate20is subjected to varying capacitance. Particularly, the clock gating stage26is subjected to additional diffusion capacitance when the IC10is in a reduced-performance mode. If the additional diffusion capacitance is not accounted for, the pull-down network will need more time to dissipate charge present at the output node of the OAI logic gate20than it would if it were not subjected to the additional diffusion capacitance. As a result, the clock gating stage26will increase the delay imparted on the gated clock signal output in proportion to the additional diffusion capacitance.

In operation, clk_en is inactive when the IC10is in a reduced-performance mode. In response to clk_en being inactive, transistor N1is off and transistor P1is on. Conversely, when the IC10is in a peak-performance mode, gated_en is active, switching transistor N2on and transistor P2off. Because transistor P1is on when IC10is in a reduced-performance mode, the clock gating stage26is subjected to the diffusion capacitance of P2. However, when IC10is in a peak-performance mode, transistor P1is off. Thus, the clock gating stage26is not subjected to the diffusion capacitance of transistor P2. Although the diffusion capacitance of P2is relatively small compared to the output node capacitance of the OAI logic gate20, if left uncompensated, the diffusion capacitance may cause non-uniform clock latency.

Non-uniform clock latency may be corrected by properly sizing the transistors of the pull-down network of the enabling stage24. For example, by properly sizing transistors N1and N2, the corresponding latency of the multi-enabled clock gating circuit12during peak-performance and reduced-performance modes of the IC10is approximately equivalent. Particularly, transistor N2is sized sufficiently larger than transistor N1so that the diffusion capacitance of transistor P2is accounted for when IC10is in a reduced-performance mode. For example, transistor N2is fabricated with a larger channel width as compared to transistor N1. If transistor N2is sized sufficiently larger than transistor N1to account for the diffusion capacitance of transistor P2when transistor P1is on, then the pull-down network of the enabling stage24discharges the output node of the OAI logic gate20in approximately the same amount of time in both peak-performance and reduced-performance modes. Thus, the downstream circuits16need only account for one uniform clock latency, thereby improving performance of the IC.

With the above range of variations and applications in mind, it should be understood that the present disclosure is not limited by the foregoing description, nor is it limited by the accompanying drawings. Instead, the present disclosure is limited only by the following claims and their legal equivalents.