This disclosure relates to methods of isolating a digital circuit from a circuit block being powered down. More specifically, the disclosure relates to a method of ensuring that output signals from the circuit block do not vary during power down.
Non-limiting and non-exhaustive embodiments of the disclosure are described, including various embodiments of the disclosure with reference to the figures, in which:
Electrical circuits may consume large amounts of energy during operation. The energy consumption has increased as advances in technology have decreased the size of individual circuit components. The increased energy consumption increases the temperature of the circuit, which can damage the circuit, reduce battery performance for mobile devices, and lead to increased expense in purchasing energy. Therefore, it is desirable to use methods to reduce the energy consumption of electrical circuits.
Many modern digital or logical circuits include numerous field effect transistors. In a field effect transistor, the voltage at a gate terminal controls the flow of current across a channel between source and drain terminals. A dielectric separates the gate terminal from the drain and source, but leakage current may still flow between the gate terminal and the channel. Higher performance circuits may use thinner dielectrics, which results in more leakage current. For electrical circuits comprised mostly of field effect transistors, the majority of energy consumption comes from leakage current.
One method of reducing energy consumption is to power down a section of a digital circuit when that section is not needed. The digital circuit may comprise two or more power supply rails with the transistors and other circuit components connected between those rails. A section may be powered down by reducing the voltage between the rails to zero. Powering down is often accomplished by reducing the voltage on a high voltage power supply until it equals the voltage on a grounded or low voltage power supply rail, but the voltage of the low voltage power supply rail could also be raised to until it equals the voltage on a high voltage power supply. The section of the circuit that is powered down may be referred to as powered down, unpowered, or in standby. The unpowered section of the circuit consumes very little energy, while the overhead logic needed to control the powering down and powering up the unpowered section consumes minimal additional energy. As a result, power savings of 80 to 90% or more can be achieved even when the extra power consumption of the overhead logic is considered.
The embodiments of the disclosure will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout. The described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. Those skilled in the art will recognize that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown in detail to avoid obscuring aspects of the invention.
Furthermore, the described features, operations, or characteristics may be combined in any suitable manner in one or more embodiments. It will also be readily understood that the order of the steps or actions of the methods described in connection with the embodiments disclosed may be changed as would be apparent to those skilled in the art. Thus, any order in the drawing or Detailed Description is for illustrative purposes only and is not meant to imply a required order, unless specified to require an order.
Embodiments may include various steps, which may be embodied in machine-executable instructions to be executed by a computer system. A computer system comprises one or more general-purpose or special-purpose computers (or other electronic device). Alternatively, the computer system may comprise hardware components that include specific logic for performing the steps or comprise a combination of hardware, software, and/or firmware.
Embodiments may also be provided as a computer program product including a machine-readable storage medium having stored thereon instructions that may be used to program a computer (or other electronic device) to perform processes described herein. The machine-readable storage medium may include, but is not limited to, hard drives, floppy diskettes, optical disks, CD-ROMs, DVD-ROMs, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, solid-state memory devices, or other types of media/machine-readable medium suitable for storing electronic instructions.
The computers in a computer system comprising more than one computer may be connected via a network. Suitable networks for configuration and/or use as described herein include one or more local area networks, wide area networks, metropolitan area networks, and/or “Internet” or IP networks, such as the World Wide Web, a private Internet, a secure Internet, a value-added network, a virtual private network, an extranet, an intranet, or even standalone machines which communicate with other machines by physical transport of media (a so-called “sneakernet”). In particular, a suitable network may be formed from parts or entireties of two or more other networks, including networks using disparate hardware and network communication technologies.
One suitable network includes a server and several clients; other suitable networks may contain other combinations of servers, clients, and/or peer-to-peer nodes, and a given computer system may function both as a client and as a server. Each network includes at least two computer systems, such as the server and/or clients. A computer system may comprise a workstation, laptop computer, disconnectable mobile computer, server, mainframe, cluster, so-called “network computer” or “thin client,” tablet, smart phone, personal digital assistant or other hand-held computing device, “smart” consumer electronics device or appliance, or a combination thereof.
The network may include communications or networking software, such as the software available from Novell, Microsoft, Artisoft, and other vendors, and may operate using TCP/IP, SPX, IPX, and other protocols over twisted pair, coaxial, or optical fiber cables, telephone lines, satellites, microwave relays, modulated AC power lines, physical media transfer, and/or other data transmission “wires” known to those of skill in the art. The network may encompass smaller networks and/or be connectable to other networks through a gateway or similar mechanism.
Each computer system includes at least a processor and a memory; computer systems may also include various input devices and/or output devices. The processor may include a general purpose device, such as an Intel®, AMD®, or other “off-the-shelf” microprocessor. The processor may include a special purpose processing device, such as an ASIC, SoC, SiP, FPGA, PAL, PLA, FPLA, PLD, or other customized or programmable device. The memory may include static RAM, dynamic RAM, flash memory, ROM, CD-ROM, disk, tape, magnetic, optical, or other computer storage medium. The input device(s) may include a keyboard, mouse, touch screen, light pen, tablet, microphone, sensor, or other hardware with accompanying firmware and/or software. The output device(s) may include a monitor or other display, printer, speech or text synthesizer, switch, signal line, or other hardware with accompanying firmware and/or software.
The computer systems may be capable of using a floppy drive, tape drive, optical drive, magneto-optical drive, or other means to read a storage medium. A suitable storage medium includes a magnetic, optical, or other computer-readable storage device having a specific physical configuration. Suitable storage devices include floppy disks, hard disks, tape, CD-ROMs, DVDs, PROMs, random access memory, flash memory, and other computer system storage devices. The physical configuration represents data and instructions which cause the computer system to operate in a specific and predefined manner as described herein.
Suitable software to assist in implementing the invention is readily provided by those of skill in the pertinent art(s) using the teachings presented here and programming languages and tools, such as Java, Pascal, C++, C, database languages, APIs, SDKs, assembly, firmware, microcode, and/or other languages and tools. Suitable signal formats may be embodied in analog or digital form, with or without error detection and/or correction bits, packet headers, network addresses in a specific format, and/or other supporting data readily provided by those of skill in the pertinent art(s).
Several aspects of the embodiments described will be illustrated as software modules or components. As used herein, a software module or component may include any type of computer instruction or computer executable code located within a memory device. A software module may, for instance, comprise one or more physical or logical blocks of computer instructions, which may be organized as a routine, program, object, component, data structure, etc., that performs one or more tasks or implements particular abstract data types.
In certain embodiments, a particular software module may comprise disparate instructions stored in different locations of a memory device, different memory devices, or different computers, which together implement the described functionality of the module. Indeed, a module may comprise a single instruction or many instructions, and may be distributed over several different code segments, among different programs, and across several memory devices. Some embodiments may be practiced in a distributed computing environment where tasks are performed by a remote processing device linked through a communications network. In a distributed computing environment, software modules may be located in local and/or remote memory storage devices. In addition, data being tied or rendered together in a database record may be resident in the same memory device, or across several memory devices, and may be linked together in fields of a record in a database across a network.
Much of the infrastructure that can be used according to the present invention is already available, such as: general purpose computers, computer programming tools and techniques, computer networks and networking technologies, digital storage media, and the like.
At a particular time during operation of the digital circuit 100, the power management controller 110 may power down one section of the circuit 100, such as a power-saving block 120, by sending a power-down signal using a power-down signal line 116. Another section of the circuit may remain powered such as an always-powered block 130. In other embodiments, a circuit may have more than one always-powered block and/or more than one power-saving block. The power-saving block 120 may input signal lines 132, 134 from the always-powered block 130 and output signal lines 122, 124, 126 to the always-powered block 130. The input signal lines 132, 134 from the always-powered block 130 may not disrupt the circuit 100 other than to produce minor additional energy consumption. However, the output signal lines 122, 124, 126 from the power-saving block 120 to the always-powered block 130 may significantly disrupt the functioning of the always-powered block 130 and the entire circuit 100.
Digital circuit components, such as logical gates, may be designed to have an output very near the voltage of either the low voltage power supply rail (e.g., a logical low or logical zero) or the high voltage power supply rail (e.g., a logical high or logical one). However, logical gates may also enter a metastable state that is neither logically high nor logically low. Moreover, the metastable state may be propagated to other components if a signal at a metastable level is input into those other components. The metastable state may propagate to sufficient components to render important portions or an entire digital circuit non-functional, and the digital circuit may be unable to recover from this condition.
The power-saving block 120 may cause a metastable state to enter the digital circuit 100 in at least two ways. First, the output signal lines 122, 124, 126 may be neither logically high nor logically low during the power-down process. Although the output signal lines 122, 124, 126 may eventually reach a logical state once sufficient time passes from power being removed, they may remain in an undefined logical state long enough to cause components of the always-powered block 130 to become metastable. The metastable condition may not be corrected when the output signal lines 122, 124, 126 reach a logical state, or the metastable state may have propagated to other elements of the always-powered block 130 in an irreversible manner.
Second, the output signal lines 122, 124, 126 may vary between logical states during the power-down process. Components, such as flip-flops, may have a setup requirement that an input not change within a certain time before a triggering clock edge and a hold requirement that an input not change within a certain time after the triggering clock edge. The setup and/or hold requirements may be violated due to the output signal lines 122, 124, 126 changing during the power-down process. The setup or hold violation may cause a flip-flop in the always-powered block 130 to enter a metastable state. As discussed above, the metastable state may propagate through the circuit before the flip-flop returns to a valid state.
For the sake of simplicity, only three signal lines 122, 124, 126 from the power-saving block 120 and three isolation gates 242, 244, 246 are shown. Modern circuits may have many more than three signal lines that require isolation gates. Thus to simplify the design process, the isolation gates 242, 244, 246 may all be selected to be the same type of gate. However, depending on the logical levels on the output signal lines 122, 124, 126, a change on the isolation signal line 214 may cause a change on the stable output signal lines 252, 254, 256. As a result, the setup and hold requirements of flip-flops in the always-powered block 130 may still be violated and create a metastable state. Alternatively, to avoid setup and hold violations, the isolation gates 242, 244, 246 may be selected according to the logical levels on the output signal lines 122, 124, 126 expected from the power-saving block 120 during the power-down process.
If an output signal line 122 from the power-saving block 120 is high during the power-down process, then an OR gate 242 may be used to isolate the always-powered block 130. If the isolation signal line 214 is configured to be high when the power-saving block 120 is being powered down and low when the power-saving block 120 is active, it may be connected directly to the OR gate 242. When the isolation signal line 214 is low, the stable output signal line 252 from the OR gate 242 may transmit the same logical value as the output signal line 122 from the power-saving block 120. The OR gate 242 may simply pass through the output signal from the power-saving block 120. When the isolation signal line 214 is high, the stable output signal line 252 from the OR gate 242 may be high. The stable output signal line 252 may be clamped high and may not change even if the output signal line 122 from the power-saving block 120 enters a metastable state or becomes low.
A NAND gate may be used as an alternative to the OR gate 242. For a NAND gate, the output signal line 122 from the power-saving block 120 and the isolation signal line 214 may need to pass through inverters before being input into the NAND gate. With the inverted inputs, the NAND gate may have the same properties discussed above for the OR gate 242. In another embodiment, the isolation signal line 214 may be configured to be low when the power-saving block 120 is being powered down and high when the power-saving block 120 is active. Then, to maintain the same functionality, the isolation signal line 214 may need to be inverted before being input to the OR gate 242 and may be either directly input into any NAND gates or passed through a non-inverting buffer before entering any NAND gates.
If output signal lines 124, 126 from the unpowered block are low during the power-down process, then AND gates 244, 246 may be used to isolate the powered block. If the isolation signal line 214 is high when the power-saving block 120 is being powered down and low when the power-saving block 120 is active, it may need to be inverted before being input to the AND gates 244, 246. In the illustrated embodiment, a single inverter 260 may be used for both AND gates 244, 246. In other embodiments, there may be an inverter for every AND gate or there may be some number of inverters in between a single inverter for all AND gates and an inverter for every AND gate. The number of inverters and/or the size of the inverters may be selected to minimize delay. When the isolation signal line 214 is low (and a logical high is input by the AND gates 244, 246), the stable output signal lines 254, 256 from the AND gates 244, 246 may transmit the same logical values as the output signal lines 124, 126 from the power-saving block 120. The AND gates 244, 246 may simply pass through the output signals from the power-saving block 120. When the isolation signal line 214 is high (and a logical low is input by the AND gates 244, 246), the stable output signal lines 254, 256 from the AND gates 244, 246 may be low. The stable output signal lines 254, 256 may be clamped low and may not change even if the output signal lines 124, 126 from the power-saving block 120 enter a metastable state or become high.
NOR gates may also be used as alternatives to the AND gates 244, 246. For NOR gates, the output signal lines 124, 126 from the power-saving block 120 may need to pass through inverters before being input into the NOR gates, and the isolation signal line 214 may be directly input to the NOR gates or passed through a non-inverting buffer. With these inputs, the NOR gates may have the same properties discussed above for the AND gates 244, 246. In another embodiment, the isolation signal line 214 may be configured to be low when the power-saving block 120 is being powered down and high when the power-saving block 120 is active. Then, to maintain the same functionality, the isolation signal line 214 may be either directly fed into the AND gates 244, 246 or passed through a non-inverting buffer before entering the AND gates 244, 246 and may need to be inverted before being input to any NOR gates.
Because the OR gate 242 may only clamp signals high and the AND gates 244, 246 may only clamp signals low, the output signal lines 122, 124, 126 may need to be at a known logical level before the gates are selected. A circuit designer may be required to know at the design stage what the logical values on the output signal lines 122, 124, 126 will be during dynamic operation. Usually during dynamic operation, the logical values on the output signal lines 122, 124, 126 will be changing and cannot be definitively determined. To prevent the logical values on the output signal lines 122, 124, 126 from dynamically changing during the power-down process, the power management controller 210 may carefully control a reset signal line 212, the isolation signal line 214, and the power-down signal line 116 to ensure that the output signal lines 122, 124, 126 will be at a known logical level when the isolation signal is asserted.
The power management controller 210 may start 302 in an idle state. During this state, power may continue to flow to the power-saving block 120. The power management controller 210 may check to see whether the power-saving block 120 should be powered down. If the power-saving block 120 should not be powered down, the power management controller 210 may remain in the idle state. Otherwise, it may proceed to step 304. The power management controller 210 may itself determine whether the power-saving block 120 should be powered down, or another block in the digital circuit 200 may inform the power management controller 210 that the power-saving block 120 is no longer in use and may be powered down.
Once the power management controller 210 determines that the power-down sequence should begin, it may assert 304 the reset signal to the power-saving block 120. In some embodiments, the reset signal may be defined to be asserted when it is logically high. In others, the reset signal may be defined to be asserted when logically low. The reset signal may cause flip-flops, registers, counters, and other state devices to enter a pre-determined state. The state may not need to be known to the power management controller 210 or even a circuit designer, as long as the state devices enter the same state whenever the reset signal is asserted. If the state devices always enter the same state, the output signal lines 122, 124, 126 from the power-saving block 120 may be at the same logical value any time the reset signal is asserted.
The power management controller 210 may wait 306 a first predetermined period of time to ensure the reset signal has time to propagate and the output signal lines 122, 124, 126 have settled. In some embodiments, the power management controller 210 may wait for one triggering clock edge of the lowest frequency clock in the power-saving block 120. In other embodiments, the power management controller 210 may be configured to act more conservatively and wait two or even many clock cycles of the lowest frequency clock in the power-saving block 120 before proceeding.
The power management controller 210 may assert 308 the isolation signal. As discussed above, the assertion of the isolation signal may result in the isolation gates 242, 244, 246 clamping the stable output signal lines 252, 254, 256 received by the always-powered block 130. Because the output signal lines 122, 124, 126 from the power-saving block 120 have settled, the isolation gates 242, 244, 246 may be configured to not change their output in response to the isolation signal being asserted.
The power management controller 210 may wait 310 a second predetermined period of time for the isolation signal to propagate. In some embodiments, the isolation signal may be propagated asynchronously. However, in other embodiments, it may be desirable to pass the isolation signal through a state device so that it propagates synchronously. If the isolation signal propagates asynchronously, the power management controller 210 may only wait until the triggering edge of the next clock cycle for the clock driving the power management controller 210. In other embodiments, the wait may be computed using other clocks on the circuit, or the wait time may be more conservative such as two or many clock cycles. If the isolation signal propagates synchronously, the wait may be computed based on the expected propagation time. The wait may also be computed more conservatively and include extra clock cycles.
After the power management controller 210 has waited sufficient time, it may assert 312 the power-down signal. The power-down signal line 116 may be one of the voltage rails, in which case, the power-down signal may be asserted by directly reducing the voltage between the power-saving block's 120 power rails to zero. In other embodiments, the power-down signal may signal to a different block or to the power-saving block 120 itself that power should be removed from the power-saving block 120. The different block or the power-saving block 120 may then ensure that there is no voltage across the power rails of the power-saving block 120. Because all the stable output signal lines 252, 254, 256 from the isolation gates 242, 244, 246 have been clamped, asserting 312 the power-down signal may not affect any other parts of the digital circuit.
The power management controller 210 may finish by entering 314 standby mode. In standby mode, the power management controller 210 may continue to assert the reset signal, isolation signal, and power-down signal. The power management controller 210 may remain in standby mode until the power-saving block 120 needs to be powered up again.
The power management controller 210 may begin 402 in standby mode with the reset signal, isolation signal, and the power-down signal asserted. The power management controller 210 may check to see whether the power-saving block 120 should be powered up. If the unpowered block should remain powered down, the power management controller 210 may stay in the standby state. Otherwise, it may proceed to step 404. Like when determining whether to power down, the power management controller 210 may itself determine whether a block needs to be powered up, or another block in the digital circuit 200 may inform the power management controller 210 that the power-saving block 120 needs to be used and should be powered up.
To power up the power-saving block 120, the power management controller 210 may deassert 404 the power-down signal. As a result, power may be provided to the power-saving block 120. The power management controller 210 may deassert the power-down signal by directly increasing the voltage between the power rails to the power-saving block 120. In other embodiments, the deasserted power-down signal may signal to a different block or the power-saving block 120 itself that power should be restored to the power-saving block 120. The different block or power-saving block 120 may respond by increasing the voltage across the power rails to the power-saving block 120.
The power management controller 210 may need to wait 406 a third predetermined period of time for the power-saving block 120 to power up. Many of the components of the power-saving block 120 may have capacitance associated with them. When power is restored to the power-saving block 120, the capacitance of the components may need to be charged for the outputs 122, 124, 126 from the power-saving block 120 to reach a definite logical level. Before the power-saving block 120 is completely charged, the output signal lines 122, 124, 126 may be at a level that would induce a metastable state in the always-powered block 130. The more components the power-saving block 120 has, the longer it may take for the output signal lines 122, 124, 126 to reach a stable state. Accordingly, the power management controller 210 may wait long enough for the output signal lines 122, 124, 126 to reach a stable level. In some embodiments, the wait time may be based on the expected time for the power-saving block 120 to stabilize. In other embodiments, the power management controller 210 may be configured to be reusable in various circuits and may wait the time expected for most blocks to have stabilized. In still other embodiments, the power management controller 210 may be configured to be more conservative and may wait longer or may wait a length of time selected according to other criteria.
Once the output signal lines 122, 124, 126 have stabilized, the power management controller 210 may deassert 408 the isolation signal. Afterwards, the isolation gates 242, 244, 246 may pass logical values from the output signal lines 122, 124, 126 from the power-saving block 120 to the always-powered block 130. Because the reset signal is still asserted, the output signal lines 252, 254, 256 from the isolation gates 242, 244, 246 may remain at a stable logical value in response to the isolation signal being deasserted.
After deasserting the isolation signal, the power management controller 210 may wait 410 a fourth predetermined period of time for the deassertion of the isolation signal to propagate. In some embodiments, the isolation signal may propagate in approximately the same amount of time whether it is being asserted or deasserted. The power management controller 210 may then wait the same number of clock cycles in step 410 as it did in step 310. In other embodiments, the power management controller 210 may act more or less conservatively during power up than during the power-down process or vice versa.
The power management controller 210 may deassert 412 the reset signal once the isolation signal has propagated. Once the reset signal has been deasserted, the power-saving block 120 may resume normal function. In some embodiments, the power-saving block 120 may have multiple reset signal lines or multiple blocks may be powered up at the same time. In those embodiments, the power management controller 210 may need to deassert reset signals in a particular order and/or wait between each reset deassertion.
The power management controller 210 may return 414 to the idle state once it has completed deasserting the reset signal. The power management controller 210 may continue to deassert the reset signal, isolation signal, and power-down signal while in the idle state. As discussed with step 302, the power management controller 210 may remain in the idle state until the power-saving block 120 needs to be powered down again.
Although the power-down and power-up methods 300, 400 can be used to ensure that the output signal lines 122, 124, 126 will be a definite level, they may provide no guarantee of what that level will be. One way of ensuring that the output signal lines 122, 124, 126 are known may be to build the power-saving block 120 according to design rules that ensure the output signal lines 122, 124, 126 are at an expected logical value when the reset signal is asserted. For example, all output signals lines 122, 124, 126 could be required to be zero when the reset signal has been asserted. If all output signal lines 122, 124, 126 are required to be the same value when the reset signal is asserted, then the same type of gate may be used for every isolation gate 242, 244, 246. In the case where the output signal lines 122, 124, 126 are required to be zero, AND gates (or NOR gates) may be used for every isolation gate.
Design rules may be helpful when making a new circuit block, but older circuit blocks or circuit blocks designed by a third party may not have been designed in accordance with these design rules. For these noncompliant circuit blocks, a different method of selecting gates may need to be used.
The isolation gate selector 510 may call 604 the simulator 530 to simulate the operation of the circuit or circuit block described by the RTL description 520. The isolation gate selector 510 may provide the simulator with instructions on what inputs to simulate. The inputs may be selected to ensure that the reset signal to the noncompliant circuit block is asserted in the simulation and that sufficient time is simulated after the assertion for the outputs from the noncompliant circuit block to settle. The simulator 530 may access the RTL description 520 directly to perform the simulation. In other embodiments, the isolation gate selector 510 may act as a broker that provides the RTL description 520 to the simulator 530.
Next, the isolation gate selector 510 may detect 606 what signals are being output from blocks designed to be powered down to blocks that are always powered or may be powered down at different times. In some embodiments, the isolation gate selector 510 may take as an input a list of circuit blocks that form a boundary with another power domain and indications of whether each circuit block would be powered up or powered down. The isolation gate selector 510 may search for input lines to the powered up circuit blocks from other domains and output lines from the powered down circuit blocks to other domains. In some embodiments, the isolation gate selector 510 may not identify a signal line that has already been identified. In other embodiments, the isolation gate selector 510 may determine which circuit blocks are on different power domains by examining which power lines feed each circuit block. It may find which signal lines are crossing boundaries between differently powered blocks. When only the noncompliant circuit block is being simulated, the isolation gate selector 510 may simply detect what signal lines are output from the noncompliant circuit block. Step 606 may be performed prior to or concurrently with the simulation 604 of the circuit in some embodiments.
Once the circuit has been simulated 604 and the output signal lines have been identified 606, the isolation gate selector 510 may determine 608 the logical level of the signals output by the noncompliant circuit block. The isolation gate selector 510 may examine the output from the simulator 530 to determine the logical levels of the output signals after a predetermined amount of time within the simulation has passed. The predetermined simulation time may be selected to be sufficient for the output signals to stabilize. Because the isolation gate selector 510 provided the inputs to the simulation, it may be able to determine when the reset signal to the noncompliant block was asserted and may check the logical levels of the output signals an appropriate amount of time afterwards. In other embodiments, the isolation gate selector 510 may check the simulation results to see when the reset signal to the noncompliant circuit block was asserted, make sure the reset signal remained asserted, and check the logical levels of the output signals an appropriate amount of time afterwards.
The isolation gate selector 510 may insert 610 appropriate isolation gates at appropriate locations in the RTL description 520 to create a modified RTL description. As discussed previously, the appropriate isolation gates may be determined by the level of the output signal while the reset signal was asserted. In some embodiments, the isolation gate selector 510 may always use AND gates and OR gates. In other embodiments, the isolation gate selector 510 may always use other types of gates, or the isolation gate selector 510 may allow the user to select the type of gates with a default when no type is selected. The isolation gate selector 510 may locate the output signal lines from the noncompliant circuit block in the RTL description 520 and may edit the RTL 520 description to add the isolation gate and any inverters necessary to ensure proper functionality of the isolation gate. The isolation gate selector 510 may create an inverter for the isolation signal at every gate that requires the isolation signal be inverted, or it may create a global inverted isolation signal that it inputs into every gate that requires the isolation signal be inverted. In some embodiments, the isolation gate selector 510 may choose a single inverter for a small number of gates it determines are likely to be near one another. For those embodiments where one or more programmable devices are used instead of the RTL description 520, the isolation gate selector 510 may reprogram the programmable device with the appropriate gates inserted into the circuit.
In some embodiments, the isolation gate selector 510 may add 612 assertions to the simulation. The isolation gate selector 510 may begin by inserting the assertions into the modified RTL description. In some embodiments, these assertions may check that the output from each isolation gate does not change when the isolation signal is asserted. In other embodiments, the assertions may check that the output signal from the isolation gates is the appropriate level for that isolation gate a sufficient time after the reset signal has been asserted but before the isolation signal is asserted. Alternatively, or in addition, any equivalent assertions may be inserted that ensure the output signals from the isolation gates behave correctly during the power-down method 300.
The isolation gate selector 510 may check 614 the outputs from the assertions. To begin, the isolation gate selector 510 may call the simulator 530 to simulate the operation of the circuit with assertion checking during simulation. In some embodiments, the isolation gate selector 510 may convert the modified RTL description into a gate level description of the circuit first. The simulator 530 may simulate the circuit based on the gate level description with assertion checking. In other embodiments, the modified RTL description may not be converted, may be converted to a different description, and/or may be programmed on to a programmable digital circuit implementing device. An appropriate simulator may then be used based on whether the modified RTL description has been converted or not.
After the simulator 530 has simulated the modified circuit, the isolation gate selector 510 may determine if any problems were detected. The isolation gate selector 510 may examine the output from the simulator 530 including the results of all assertion checking that was done during the simulation. If the assertions do not indicate any problems, then the isolation gate selector 510 may decide that the correct isolation gates have been inserted into the circuit. In some embodiments, when there are errors, the isolation gate selector 510 may return to step 610 and changes the type of the isolation gate generating the error. The isolation gate selector 510 may only attempt once to fix the isolation gate or may attempt more than once. Alternatively, or in addition, the isolation gate selector 510 may generate a list of output signal lines where the isolation gate selector 510 was unable to find a suitable isolation gate.
The isolation gate selector 510 may output 616 the results of the assertion checking to the user. Outputting may be done by displaying a message on a monitor indicating that the method 600 has completed successfully and/or that some gates were not selected successfully. Alternatively, the isolation gate selector 510 may only produce a message if the method 600 did not complete successfully. The user may assume successful completion if no message is produced. In some embodiments, the list of output signal lines without proper isolation gates may be inserted into a file. The isolation gate selector 510 may display an indication of the file location on the monitor and/or the user may know the file location from a manual or the like. In other embodiments, the list of output signal lines may be displayed directly on the monitor. If another software program called the isolation gate selector 510, the isolation gate selector 510 may return a code to the software program indicating whether the program completed successfully.
It will be understood by those having skill in the art that many changes may be made to the details of the above-described embodiments without departing from the underlying principles of the disclosure. The scope of the present disclosure should, therefore, be determined only by the following claims.
This present application claims the benefit under 35 U.S.C. §119(e) of U.S. Provisional Patent Application No. 61/608,401 filed Mar. 8, 2012, titled “METHOD FOR IMPLEMENTING ISOLATION GATES DURING LOW-POWER MODES,” which application is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61608401 | Mar 2012 | US |