Abstract:
A System and method for calibrating a chip after packaging including providing a packaged chip, providing programmable non-volatile storage having a plurality of non-volatile storage elements in the chip and providing a volatile storage having a plurality of volatile storage elements in the chip with one volatile storage element associated with one non-volatile storage element. The chip includes circuitry responsive to a predetermined signal to permit the non-volatile storage to be programmed in accordance with data stored in the volatile storage and to a predetermined signal to prevent external alteration of the non-volatile storage. The non-volatile storage is preferably a plurality of fuses. The volatile storage is preferably a shift register. The circuitry in the chip includes a bistable device responsive to the predetermined signal to assume a first condition to permit the non-volatile storage to be programmed and responsive to the alteration of the predetermined signal to assume a second condition which does not allow alteration of data. The system further includes a non-volatile storage element settable to one of a first or a second condition and preset to the first condition, the circuitry in the chip responsive to the first condition to permit the non-volatile storage to be programmed in accordance with data stored in the storage and responsive to the second condition to prevent external alteration of the non-volatile storage. The condition of the non-volatile element determines whether or not the first state (program) of the bistable device can be entered.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates to a system and method for option selection and/or calibrating and/or trimming of components in a semiconductor device and, more specifically, to such a system and method which can be performed at completion of integrated circuit chip fabrication, particularly after packaging, without requiring an increase in the number of pins. 
     2. Brief Description of the Prior Art 
     Many integrated circuits require calibration, trimming or option selection before they can be released for sale to a customer. In particular, this is true for precision analog circuitry that requires trimming of some parameters to counteract random process variations. This requirement is also applicable to systems that contain a large number of the same circuit (e.g. memories), where &#34;bad&#34; sections can be selectively by-passed and replaced by functional spares and is useful in cases where several possible functional variations (&#34;options&#34;) are available on a single die design with one variation being preselected, such parts often being sold to different customers, sometimes under different part numbers. In other cases (e.g. security applications), it may be necessary to program a unique identification code into each circuit. 
     The main problem encountered in handling such matters is the difficulty in programming such information after an integrated circuit has been packaged. After packaging, internal circuitry usually is no longer accessible unless dedicated pins are provided. Such dedicated pins waste die and board area and create confusion (it is usually not desirable that a customer be able to alter calibration information). The other option is to program calibration information before packaging. The disadvantage of this solution is that parameters may change during further fabrication and/or packaging after programming. In fact, the packaging process itself may cause drift in parameters (or failure of a section of the chip) which cannot be counteracted at final test. 
     A further problem is the ability to disable the test mode after the calibration data has been programmed. This is necessary to avoid the possibility that a customer may accidentally or intentionally corrupt or even simply read the calibration data (in the case of, for example, security applications). Exiting the test mode results in a paradox comparable to one leaving a house while locking the door with the only key inside. 
     SUMMARY OF THE INVENTION 
     In accordance with the present invention, there is provided a procedure whereby the above noted problems are overcome and wherein a die can be calibrated and/or options selected after packaging and with the die then being rendered unavailable for further calibration. 
     The above is accomplished using digital information (a number of &#34;bits&#34;) to trim or select certain circuitry. The bits are electrically programmed in a non-volatile medium, such as, for example, fuses, EPROMs, EEPROMs, anti-fuses, etc. An arbitrary number of such bits can be accessed and programmed at final test after packaging, using a special &#34;test mode&#34;. To operate the test mode, a limited number of integrated circuit pins perform a dual function (normal operation and test mode). Many architectures are possible, depending upon (1) the number of integrated circuit pins which will be involved in the test mode, three pins being the minimum, (2) whether it will be necessary to &#34;try out&#34; the calibration information before making it permanent and (3) whether the calibration information must be read back to verify correct programming. 
     Disabling of the test mode is achieved through the use of one &#34;key&#34; bit which is, for example, position 64 of the shift register which has 65 positions numbered from 0 to 64. As long as the &#34;key&#34; bit is blank (unprogrammed) or set to a &#34;1&#34; or a &#34;0&#34;, as predetermined, the test mode can be accessed. Programming the &#34;key&#34; bit to the complement of the test mode access value (i.e., a &#34;0&#39;&#34; or a &#34;1&#34;) permanently disables (locks out) the test mode. The preferred scheme uses a state flip-flop to determine whether or not the circuit is in the test mode. This offers an ideal procedure for a final exit. Programming of the &#34;key&#34; bit is possible while in the test mode with the test mode continuing until completion. However, after exiting the test mode, re-entry is prevented. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a calibration system in accordance with the present invention; 
     FIG. 2 is a block diagram of the state machine of FIG. 1 in accordance with the present invention; and 
     FIG. 3 is a state diagram for the test mode in accordance with the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     With reference to FIG. 1, the above described functions, such as operating the circuit, entering &#34;try&#34; bits, operating the circuit again, programming the bits permanently and checking the programming, are preferably performed by using a serial shift register 1 for the data and a state machine 3, described in detail with reference to FIG. 2, for control of the operation of the shift register. 
     The circuit includes a calibratable non-volatile storage medium 5 having plural bit positions, each of the bit positions coupled to a bit position of the serial shift register 1. The storage elements of the storage medium 5 are preferably fuses. The shift register 1 is clocked by clock pulses from the state machine 3. Data is input from a Data In pin to the shift register 1 at a first end thereof and to the state machine 3 and data is output from the other end of the shift register during test mode through a multiplexer 7 responsive to whether the system is in the test mode or in regular operation and then sent to a Data Out pin. The Data In pin and the Data Out pin can be used for other purposes as well as for data input and output when the system is not in the test mode. 
     In the test mode, the Data In pin is used to clock data into the shift register 1 and the Data Out pin is used to clock the data out from the shift register for inspection of the state of the fuses in the storage medium 5 on the chip. A clock (CLK) pin is used to synchronize shifting in the shift register 1 via the state machine 3 as well as to clock the state machine. The clock pulses to the shift register are not necessarily a mirror of the clock pulses from the CLK pin, the state machine being able to modify the clock pulses to the shift register. This modification is provided by the Data In and CLK pins being used to change the state of the state machine. The state change in the preferred embodiment occurs on each rising edge of a clock pulse from the CLK pin and depends upon the data on the Data In pin. In some states, the shift register is advanced by one position on each falling edge of the clock pulse thereto as explained hereinbelow. 
     The desired functions to be performed by the system are as follows: 
     1. To load data into the shift register 1 and fill the shift register. Once this is done, this data is used as prior data for the subsequent calibration. The best data for maximum linearity is being sought. 
     2. Copy the data from the shift register 1 into non-volatile cells (fuses) 5 to condition the fuses to permanently store a one or a zero or to condition either one of a &#34;1&#34; or &#34;0&#34; fuse, as the case may be. The signals labeled &#34;load&#34;, &#34;program&#34; and &#34;data&#34; are generated by the state machine 3 and run through each bit of the shift register 1. The &#34;data&#34; line indicates whether a &#34;1&#34; or a &#34;0&#34; is to be programmed. When the &#34;trial&#34; line from the key fuse 9 (FIG. 1) is high, then the input of the shift register 5 is high, and the calibration data is taken from the volatile shift register rather than from the non-volatile fuses. 
     The &#34;load&#34; line is high when the state machine is in the state labeled &#34;PARALLEL LOAD SHIFT REG&#34; (FIG. 3). A logic one causes the shift register 1 to be parallel loaded with the fuse data at that time. With reference to the &#34;load&#34; signal from the state machine, data can be shifted into the shift register 1 from two sources, these being from the Data In pin and from the non-volatile memory 5. For a regular load, when the &#34;load&#34; signal is low, data is shifted into the shift register 1 serially and moved along therein for every clock pulse from the state machine in standard manner. When data is to be downloaded from the fuses 5 to the shift register 1 so that such data can be clocked out and checked, this is called &#34;parallel load&#34; and this function is provided when the &#34;load&#34; signal at the state machine is high. The loading operation occurs on the next falling edge of the CLK signal. 
     The &#34;program&#34; line is used to control the programming of the fuses. When the program line goes high, a &#34;1&#34; or a &#34;0&#34; is written permanently into each fuse cell (or fuse bit) for which the corresponding bit location in the shift register contains a logic &#34;1&#34;. Whether a &#34;1&#34; or a &#34;0&#34; is written depends upon the state of the &#34;data&#34; line. The &#34;program&#34; line is high whenever the state machine is in the state labeled &#34;PROGRAM ONE&#34; (FIG. 3) or in the state labeled &#34;PROGRAM ZERO&#34; (FIG. 3). In the &#34;PROGRAM ONE&#34; state, the &#34;data&#34; line is made logic high and in the &#34;PROGRAM ZERO&#34; state, the &#34;data&#34; line is logic low. Whenever the &#34;program&#34; line is high, a logic one or a logic zero (depending on the status of the &#34;data&#34; line) is written into each fuse cell whose corresponding shift register bit is set to a logic one at that time. The shift register is used to indicate which fuse(s) to modify. 
     When &#34;the trial&#34; line is low, this being after everything has been properly programmed, then the data is taken from the non-volatile memory or fuses 5 rather than from the shift register. 
     The value of the &#34;key&#34; bit (1 or 0) at shift register element 9 is fed to a state flip flop 11 via a NAND gate 13. When a chip select (CS) signal is provided and raised to a high voltage above that of the system power supply, this being an abnormal mode of operation, a high voltage detect circuit 15 recognizes this high voltage and also provides a high signal to the NAND gate 13. The high output of the detect circuit 15 and the &#34;1&#34; or high state of the &#34;key&#34; shift register element 9 provide a low output from NAND gate 13 which sets the flip flop 11 to the test mode, causing activation of the state machine 3 and placing the multiplex circuit 7 into the test mode whereby the multiplex circuit only passes signals from the shift register 1. It can be seen that if the &#34;key&#34; fuse 9 were zero, the output of the NAND gate 13 would be a &#34;1&#34; and the flip-flop 11 would never again be set into the test mode. It follows that the only way to be in the test mode is when the &#34;key&#34; bit 9 is a &#34;1&#34;. Once the &#34;key&#34; bit 9 goes to &#34;0&#34; the chip can never return to the test mode once it leaves that mode. The flip-flop 11 can theoretically come on in any state when power is turned on. The flip-flop 11 is prevented from coming on in the test mode by a power-on reset circuit. The power-on reset circuit is not shown in the figure but the output of that circuit is shown as &#34;power-on reset&#34;. Whenever the &#34;power-on reset&#34; line is low, the flip-flop is reset to non-test mode. 
     To enter the test mode, since the &#34;key&#34; bit 9 is initially high (one), when the chip select (CS) pin is momentarily placed at high voltage above the supply voltage and provides a high signal via detect circuit 15, flip-flop 11 is set, provides a high signal on the &#34;test&#34; line and places the circuit in test mode as discussed hereinabove. When the chip select (CS) pin then goes low, the flip-flop 11 goes back to a low signal and the test mode is then locked out. A logic low on the CS pin resets the flip-flop to non-test mode (&#34;test&#34; low) because a logic low on the input of the three-input NAND gate 12 causes its output to be high. The last fuse is blown in a manner identical to all other 64 fuses (using the state machine to activate the operation and using a &#34;1&#34; in the last position of the shift register to select that particular fuse). 
     With reference to FIG. 2, the state machine 3 uses the clock signal at the CLK pin and the signal on the Data In pin. The state machine is controlled on the rising edge of the clock signal pulse and data is shifted in the shift register 1 on the falling or trailing edge of the clock pulse. This is for the purpose of using as few pins as possible. The state machine is comprised of a number of flip-flops 21, 23, 25 and 27 and a programmable logic array (PLA) 29. The state machine 3 implements a state diagram as shown in FIG. 3 which is a well known technique. Initially, the state machine 3 is reset to an idle state or reset state. For each positive excursion of the clock input thereto, on the leading edge of the clock pulse or low to high side of the pulse there will be a transition in the state diagram, depending upon the status of the Data In pin. D=X in FIG. 3 means a path will always be taken, irrespective of the data, whereas D=0 means the path is taken when &#34;data&#34; is logic zero at the time of the clock transition and D=1 means the path is taken when &#34;data&#34; is logic one at the time of the clock transition. 
     The initial operation is placing the state machine in the idle state (or &#34;reset&#34;). With reference to FIG. 3, this is accomplished by first providing a zero on the chip select (CS) pin to reset the state flip-flop 11 in the normal (non-test) mode and initialize the state machine. Then, the test mode is entered by bringing the CS pin above the supply. The next operation is clocking in data. This is accomplished by providing a zero on the Data In pin at the time of the first rising edge on a CLK signal to place the state machine in a &#34;no action&#34; state. Then, another zero on the next rising edge of a CLK signal places the state machine in the state indicated by the &#34;CLOCK SHIFT REG ONE POSITION&#34;. As long as the state machine is in this state, the status of the Data In pin is shifted into the shift register on each falling edge of the CLK signal. The state machine stays in this state irrespective of the status of the Data In pin during subsequent rising edges on the CLK signal. The only way to leave this state is to reset the state machine by momentarily leaving the test mode (bringing the CS pin low), which brings the state back to &#34;idle state&#34;. The length of the shift register is arbitrary, it being 64 bits plus a &#34;key&#34; bit in the preferred embodiment. Once the desired number of bits has been clocked into the shift register, the signal on the chip select (CS) pin returns to zero. 
     For a parallel load, that is, copying the data from the fuses 5 into the shift register 1, a zero signal from the Data In pin and a rising edge on a CLK signal followed by a one signal from the Data In and rising edge on a CLK signal provides the parallel load mode to the shift register. The following falling edge on a CLK signal moves all data from the fuses 5 into the shift register in parallel. Subsequent leading edges of CLK pulses move the data out from the shift register to the data output. 
     To condition (e.g., blow) the fuses 5, it is desired to condition only one fuse at a time because some known current is required to condition each fuse and the current capability of the circuit may be exceeded if all or several fuses were to be conditioned at once, thereby possibly destroying the part. This is accomplished by placing all zeros in the shift register 1 except for one location, this being the location to be programmed. Then the system is placed into one of the modes entitled &#34;PROGRAM ZERO&#34; (by providing from a &#34;1&#34; from Data In and a CLK signal followed by a &#34;1&#34; followed by a &#34;0&#34; or &#34;PROGRAM ONE&#34; (by providing from a &#34;1&#34; from Data In and a CLK signal followed by a &#34;1&#34; followed by a &#34;1&#34;) wherein the program line from the state machine is either high or low. Therefore, the shift register 1 indicates which bit to condition and the &#34;PROGRAM ZERO&#34; or &#34;PROGRAM ONE&#34; state indicates whether the fuse is to be conditioned as a one or a zero. This arrangement requires that two consecutive bits be incorrect in order to make an error in conditioning a fuse. After the zero or one has been programmed in a fuse 5, a clock pulse is provided to shift the shift register by one position. This permits placing a one in the first (&#34;0&#34;) position and then shifting the one along the shift register to program each position of the shift register, one bit at a time. When this operation is completed, the &#34;key&#34; bit 9 and state flip-flop 11 are utilized to lock out the test mode. As long as the &#34;key&#34; bit (last fuse) 9 is high, the output of NAND gate 13 can be made low. This occurs when a high voltage is placed on the CS pin and sets the RS type flip-flop (two NAND gates) 11 to &#34;test&#34; mode. When the key bit 9 is low, the output of NAND gate 13 is always high and the test mode cannot be entered (only maintained). 
     The state machine 5 provides ten states as shown in FIG. 3, this meaning that at least four state variables (ones or zeros) represented in the state machine by data flip-flops 21, 23, 25 and 27 of FIG. 2 are required to identify these ten states. The state variables as well as one external Data In pin and a clock input pin (CLK) enter a programmable logic array (PLA) 29. Depending upon the current state of the flip-flops 21, 23, 25 and 27 and the state of the signal of the Data In pin, the PLA 29 provides four output values which are fed back to the flip-flops and generate the next state. The PLA 29 also has a Shift Reg Clk (CK) output for applying clock pulses to the shift register and a Load (LD) output, the purpose of which is to shift the shift register contents by one position or parallel load the shift register 1. The clock pulses to the shift register are derived using a decoder (see FIG. 2) to detect when the state machine is in any of the states 2 (CLOCK SHIFT REG ONE POSITION), 3 (PARALLEL LOAD SHIFT REG) or 7 (CLOCK SHIFT REG ONE POSITION). The output of this decoder is combined with the inverted version of the CLK signal, using an AND gate (see FIG. 2). The output of the AND gate is used to clock the shift register (edge triggered type). Therefore, whenever state 2, 3 or 7 is currently active and a falling edge is supplied on the CLK pin, the shift register 1 shifts exactly one bit position. All of the flip-flops 21, 23, 25 and 27 have a common clock input which is externally generated. Therefore, each rising edge of a clock pulse (CLK) causes shifting of the data flip-flops 21, 23, 25 and 27. It follows that the state machine is driven by the rising edges of the clock pulses (CLK) and generates the control signals for the shift register 1 which shifts on the falling or trailing edges of the clock pulses. 
     It can be seen that there has been provided a system and method wherein calibration can be performed after packaging with pins being capable of operating in conjunction with plural functions and with calibration being locked out after completion. 
     Though the invention has been described with respect to a specific preferred embodiment thereof, many variations and modifictions will immediately become apparent to those skilled in the art. It is therefore the intention that the appended claims be interpreted as broadly as possible in view of the prior art to include all such variations and modifications.