Abstract:
In general, in one aspect, the disclosure describes creation of a randomization list that includes only a subset of the logic states of an integrated circuit (IC). The subset being selectable by signal so as to define logic states that can be randomized for specific events. The randomization list is during simulation to randomize the logic states defined therein to simulate a specific event occurring during operation of the IC. For example, the randomization list may include those signals that can be randomized upon exiting from a powered down state (e.g., deep power down, C6). The signals that can be randomized may be defined by excluding the signals that cannot be randomized (those still receiving power in the C6 mode). The contents of registers of the IC can be confirmed after the randomization and exit from the C6 mode.

Description:
BACKGROUND 
       [0001]    Power conservation is becoming increasingly important to computer platforms, whether to save battery life for mobile platforms or to meet new energy conservation standards. In order to conserve power, processors or other components of the computing platform may enter a reduced power level after a defined period of inactivity. The processors may implement various levels of reduced power consumption (known as core states or C-states) with each successive level (higher C-states) further reducing the power and being entered after additional periods of inactivity. After extended periods of inactivity a processor may enter a reduced power level (mode) where a voltage rail (Vcc) is turned off or drops below a retention level so that logic on the computing platform connected to the voltage rail is turned off (e.g., deep power down, C6). When exiting the deep power down state, the Vcc is reapplied and the logic restores the values contained therein prior to entering the deep power down mode. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0002]    The features and advantages of the various embodiments will become apparent from the following detailed description in which: 
           [0003]      FIG. 1  illustrates an example flow chart for generating a C6 mode randomization list for use in simulating an exit from a C6 mode, according to one embodiment; 
           [0004]      FIG. 2  illustrates an example flow chart for utilizing the C6 randomization to simulate a processor C6 mode, according to one embodiment; 
           [0005]      FIG. 3  illustrates an example timing diagram defining the period within which the C6 randomization may be performed, according to one embodiment; and 
           [0006]      FIG. 4  illustrates an example flow chart for running a C6 randomization during a Vcc ramp, according to one embodiment. 
       
    
    
     DETAILED DESCRIPTION 
       [0007]    If the processor enters a reduced power mode that entails turning a power domain (Vcc) off (e.g., deep power down, C6), the power states (may simply be referred to as the states) of the logic powered down will be lost. The logic that is powered down and does not retain its state may be referred to as lost logic. Certain logic in the processor (e.g., logic controlling clocking and power states) may be powered by a separate power domain that remains on, such as Vccp that is used to power the communications with the outside world (e.g., bumps, pads, pins). The logic being powered by Vccp may be referred to as retention logic. The state of the retention logic is accordingly retained during a C6 mode (retained state). 
         [0008]    When the processor exits the C6 mode and returns to powered operation, the processor needs to return to operation including returning the lost logic or at least a portion of the lost logic (e.g., important functions) to its pre C6 mode state. In order to return the processor to its pre C6 mode state, the processor may copy the state of the lost logic (or at least a portion thereof) to a memory means (e.g., random access memory (RAM), registers) that remains powered (e.g., by Vccp) during the C6 mode prior to the processor entering the C6 mode (pre C6 mode state). Upon returning to a powered mode (e.g., exiting the C6 mode), the lost logic may be powered up and the initial states of the lost logic may vary. 
         [0009]    After the lost logic has been powered up, the initial state may be replaced with the recorded pre C6 mode state in the memory means. A signal (e.g., reset) may be activated to clear the initial state and copy the pre C6 mode state from the memory means to the lost logic. Regardless of the initial state of the lost logic, the lost logic needs to be capable of receiving the pre C6 mode state from the memory means and replacing the initial state with the recorded pre C6 mode state (recovering the pre C6 mode state). In order to ensure the states of the lost logic were accurately recovered (and proper operation of the processor) after returning to a powered mode, the processor may compare the pre C6 mode states in the memory means to the post C6 mode states recovered in the lost logic. 
         [0010]    Simulations are utilized to test the operation of processors based on various operational parameters. The simulation may utilize register transfer levels (RTLs) to define the possible states of logic (state nodes) within the processor during specific actions of the processor. In order to simulate the exiting of the processor from the C6 mode, random values may need to be injected into the RTL state nodes in the middle of the simulation. Random initialization (rinit) may randomize all of the RTL state nodes within the processor. Rinit may be utilized during a power-up simulation sequence to enable simulation of the processor being powered up under any circumstances. However, rinit cannot be utilized to simulate the processor exiting a C6 mode because not all the state nodes can be randomized. The state nodes associated with the logic that remains powered on (e.g., by Vccp) may not be randomized as their state will be the current state maintained therein. Accordingly, running rinit to simulate a C6 mode exit may cause the simulation to crash if the state node of logic receiving Vccp was randomized to an unexpected value. 
         [0011]    In order to simulate the exiting of the processor from a C6 mode, the simulation needs to be able to randomize just the logic powered by Vcc that lost its state during the processor C6 mode. In order to limit the randomization, a C6 rinit may be defined that identifies just the logic that lost its state (powered by Vcc) and thus can be a random value when exiting the C6 mode (randomized signals). The C6 rinit may be created by identifying the logic that can be randomized (e.g., powered by Vcc and lost state during C6). Alternatively, the C6 rinit may be created by identifying the logic that cannot be randomized (e.g., powered by Vccp and maintaining state during C6) and excluding these signals from the overall rinit (randomization of all signals). The signals that may not be randomized and/or the signals that can be randomized may be manually identified. For example, the list of signals that may be randomized and/or those that may not be randomized may be generated from the processor model and schematic netlist. 
         [0012]    As the number of signals excluded from randomization is likely smaller than the number to be randomized, it may be easier to identify and exclude those signals. For example, the logic receiving Vccp during the C6 mode could be identified and excluded from the rinit when the rinit is used in a simulation to simulate the exiting of the processor from a C6 mode. 
         [0013]    If the processor supports power-aware attributes and enables the identification and selection of logic connected to a certain voltage rail (e.g., Vcc, Vccp) the processor could create a rinit for a specific voltage rail (e.g., Vcc) or exclude a specific voltage rail (e.g., Vccp) from the overall rinit. 
         [0014]      FIG. 1  illustrates an example flow chart for generating a C6 mode randomization list for use in simulating an exit from a C6 mode. Initially, the logic states are defined for the processor  100 . The logic states for the processor may be defined in the RTL and the simulator may select logic from the RTL and apply different states to different logic to simulate different activities of the processor. The C6 logic states are then defined as a subset of the processor logic states  110 . The C6 logic states may be those states that receive power (e.g., Vccp) during a C6 mode, and accordingly retain their state and are not be eligible for randomization. Alternatively, the C6 logic states may be those states that are not retained during a C6 mode, and thus can be randomized. A C6 randomization list is created based on the C6 logic states  120 . If the C6 logic states are the states that cannot be randomized, the C6 randomization list is created by excluding those states from the processor logic states. Alternatively, if the C6 logic states are the states that can be randomized, the C6 randomization list is created to include the C6 logic states. 
         [0015]      FIG. 2  illustrates an example flow chart for utilizing the C6 randomization list to simulate a processor C6 mode. Initially, the simulation is being run  200 . A determination may be made as to whether the processor has entered a C6 mode  210 . If the processor has not entered a C6 mode  210  No, the simulation continues  200 . If the processor has entered a C6 mode  210  Yes, the states to logic (or a portion of the logic) about to be lost during the C6 mode (pre C6 mode states) are copied to a memory means  215 . A C6 randomization may be initialized to randomize the states included in the C6 randomization list  220 . The C6 randomization may provide random logic states to the logic that has been powered down in the C6 mode. The random logic states may be randomly selected by the simulation. Alternatively the logic states may be randomly selected by a user of the simulation. The user may select to inject all 1s or all 0s or a repeating pattern rather that randomly selecting each state. 
         [0016]    After the C6 randomization, the simulation continues  230 . A determination may be made as to whether the processor has exited the C6 mode (e.g., returned to a powered state)  240 . If the processor is not exiting the C6 mode  240  No, the simulation continues  230 . According to one embodiment, if the processor is not exiting the C6 mode  240  No, the C6 randomization may be processed again  220 . This enables the C6 logic states to be randomized multiple times during the C6 mode. The C6 randomization  230  may be repeated while the processor remains in the C6 mode  240  No based on various parameters or conditions. If the processor has exited the C6 mode  240  Yes, the simulator may retrieve the pre C6 mode retained states from the memory means and copy those states to the logic (or portion thereof). In order to ensure that the pre C6 mode states were accurately recovered (and to ensure proper operation of the processor), the simulation may compare the pre C6 mode states from the memory means to the post C6 mode states that were recovered in the lost logic  250 . If the states are the same, the processor is assumed to be working correctly. If the values are different, the discrepancy is flagged. 
         [0017]      FIG. 3  illustrates an example timing diagram defining the period within which the C6 randomization may be performed. During powered operations Vcc is on. Upon initiation of the C6 mode, the Vcc is ramped down and after the Vcc dips below a retention value the states of the logic receiving Vcc is lost. Accordingly, the states of the logic that need to be preserved from Vcc need to be transferred to the memory means (Vccp domain) prior to this point. The bottom line illustrates states being stored in the Vccp domain. While not illustrated for ease of convenience, the initiation of the C6 mode may be based on the setting of a signal or sequence of signals. When the processor determines that there is activity and it should return to the powered on state the Vcc begins to ramp up. Once the Vcc ramps past the retention value the processor exits the C6 mode and again enters the powered state. 
         [0018]    The C6 randomization can be implemented during the C6 mode. The C6 randomization may be implemented multiple times during this period. According to one embodiment, the C6 randomization may be implemented during the Vcc ramp up, as long as Vcc is still below the retention threshold value. The states may remain stored in the Vccp domain for some time after the exit of the C6 state in order to enable the processor to restore the states so that the restored states can be compared to the recorded states. 
         [0019]      FIG. 4  illustrates an example flow chart for running a C6 randomization during a Vcc ramp. The simulation is running during the C6 mode  400 . A determination is made as to whether the Vcc is ramping up  410 . If the determination is that there is no Vcc ramp  410  No, the simulation continues. If the determination is that the Vcc ramp has started  410  Yes, the C6 randomization is performed  420 . While not illustrated, once the processor exits the C6 mode the registers are checked. 
         [0020]    According to one embodiment, the C6 randomization values that are utilized in the simulation may be recorded so that errors detected in the simulation can be recreated. According to one embodiment, the simulation may be modified to focus on certain functional units or to exclude certain functional units during the simulation of the exit of the C6 mode. According to one embodiment, a user may exclude signals from the C6 randomization for any number of reasons. The signals may be excluded by updating the C6 randomization list to remove the logic. 
         [0021]    While the disclosure focused on simulating a C6 mode of a processor and identifying the logic states that can be randomized (the logic that lost their power state) during the C6 mode, it is in no way intended to be limited thereto. Rather, the simulation may be performed for any event (e.g., power state of the processor, other state of the processor) where a subset of the logic loses its logic state during operation and the logic level selection or exclusion can be identified for the event so that an appropriate logic level randomization list is created for the occurrence. 
         [0022]    While the disclosure focused on simulations for processors it is in no way intended to be limited thereby. Rather the simulation and the select signal level randomization utilized in the simulation can be used for any type of integrated circuit without departing from the current scope. 
         [0023]    Although the disclosure has been illustrated by reference to specific embodiments, it will be apparent that the disclosure is not limited thereto as various changes and modifications may be made thereto without departing from the scope. Reference to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described therein is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” appearing in various places throughout the specification are not necessarily all referring to the same embodiment. 
         [0024]    The various embodiments are intended to be protected broadly within the spirit and scope of the appended claims.