1.  Field of the Invention
The invention relates to integrated circuits and more particularly to controlling the voltage supplied to an integrated circuit. 
2.  Description of the Related Art
Integrated circuits such as microprocessors can be run at different clocks speeds and with different supply voltages.  The determination of an appropriate clock speed and appropriate voltage for a particular microprocessor depends on many factors.  For example, while higher clock speeds are generally desirable, a higher clock speed requires a higher supply voltage, which results in additional power consumption and additional heat, which needs to be dissipated.  Microprocessors utilized in mobile applications are particularly sensitive to power dissipation and generally require the lowest power dissipation and thus require the lowest supply voltage that can achieve the rated clock speed.  However, microprocessors used in desktop applications are less sensitive to power dissipation considerations. 
In general, microprocessor product yield, performance (MHz) and reliability are affected by the voltage supply setting.  Within a range of only several hundred milli-volts, dramatic differences can be seen in yield, performance and reliability, even from the same wafer lot.  Choosing the best voltage is usually a compromise of yield, performance and reliability since the same value of voltage is usually chosen for a large population.  Once that voltage is chosen, the voltage has to be supplied to the microprocessor when it is in the system. 
Referring to FIG.  1, one prior art approach for providing the appropriate voltage and frequency values in a computer system is illustrated.  Central processing unit (CPU) 101 receives core voltage 105 (commonly referred to in xc3x9786 architectures as Vcc2) from CPU core voltage regulator 107.  Other voltages, which are typically supplied to the CPU, e.g., Vcc3 (I/O voltage) are not shown.  Core voltage regulator 107 is programmable and receives voltage control inputs 109 (also referred to as voltage ID (VID) signals), which determine the voltage level supplied to CPU 101.  CPU 101 also receives bus frequency signals 103 (BF[2:0]), which provide a multiplier used by the processor to multiply a bus clock (not shown).  The multiplied bus clock is used by the CPU to clock its internal logic.  The values for the both the VID signals and the BF pins are provided by the settings of jumpers 111. 
A higher percentage of a given population of microprocessors could operate at higher performance levels (thus creating higher revenue) if each microprocessor could operate at its own specific voltage.  One solution would be to mark each processor with a number or symbol indicating its voltage and/or speed rating.  It is conceivable to set the jumpers shown in FIG.  1 to correspond to the marking (number or symbol) on the processor that indicates its voltage and/or speed rating.  However, that approach provides no guarantee that appropriate voltage and frequency settings will be utilized.  In fact, certain unscrupulous suppliers of computer systems have been known to provide systems having higher than recommended voltages and frequencies.  Since companies typically qualify chips at certain voltage and frequencies, such over clocking or excessive voltage can result in shorter product lifetimes, decreased reliability and excessive product returns. 
Providing information to users, which specifies the correct voltage and hoping that the correct voltage is subsequently supplied to the processor by circuitry on the board, as illustrated in FIG.  1, is subject both to intentional misuse and unintentional mistake.  In addition, the more possible voltage settings that exist, the greater the possibility for error. 
In many systems, it may be desirable to change the core voltage of the processor (e.g. when the processor is operating at low frequencies) to lower the power consumed by the processor.  In such a system, the core voltage is increased to the appropriate maximum level when the core frequency is maximized.  The appropriate maximum voltage level may be the lowest voltage that can adequately support the maximum frequency.  However, that maximum core voltage may differ among processors even in the same frequency bin.  That is, one processor may operate at maximum frequency, e.g., 500 MHz, with a voltage of 1.6V while another requires 1.8V. It would be advantageous if both processors could operate at their maximum frequency with their respective voltages, both from a power savings perspective and a reliability perspective.  But there is no easy mechanism in place for software to determine the appropriate core voltage corresponding to a maximum frequency rating for a specific processor. 
Thus, it would be desirable to be able to specify a core voltage for a specific processor corresponding to a maximum speed rating that can readily be utilized in a system.  It would also be desirable to specify an appropriate voltage for an individual processor and still have the flexibility to change the core voltage to a higher or lower voltage corresponding to different frequencies to obtain power savings. 
Accordingly, the invention provides in one embodiment an integrated circuit that has a core logic region.  A programmable storage location stores at least one of a first and a second voltage control setting, respectively indicating a first and second voltage level of a core voltage supplied to the core logic region.  The first voltage control setting is a fixed value and the second voltage control value is software programmable.  A plurality of output terminals are coupled to the programmable storage location for outputting voltage control signals for a voltage regulator according to a value of a selected one of the first and second voltage control settings. 
In another embodiment the invention provides a method of providing voltage control signals for an integrated circuit.  The method includes storing a first voltage control value into a programmable storage location in the integrated circuit.  The first voltage control value specifies a core voltage to be supplied to a core logic region of the integrated circuit.  The first voltage control value is supplied to output terminals of the integrated circuit.  The method may also include storing a second voltage control value in the programmable storage location and supplying the second voltage control value to the output terminals of the integrated circuit.  The core logic region receives the core logic voltage at a second voltage level corresponding to the second voltage control value. 
In still another embodiment, the invention provides an integrated circuit that includes a plurality of programmable elements such as fuses or jumpers and a programmable storage location coupled to the programmable elements.  The programmable storage location is powered by a first voltage supplied to an input/output region of the integrated circuit.  A core logic region of the integrated circuit receives a second supply voltage.  A plurality of output terminals couple to the programmable storage location and supply voltage control values for the core logic region according to contents of the programmable storage location.