The present invention relates to the programming and reading of a chip identity (CHIP ID) using semiconductor fuses, in particular, but not exclusively, in nonvolatile memory devices.
Semiconductor memories may be programmed using, for example, semiconductor fuses which are sent to indicate data to be stored. Previous solutions have tended to rely on a fixed large program time per fuse, or alternatively, lasers have been used to program the fuses, but laser programming has the problem that its use to set chip codes tends to be very slow.
The present invention offers a non volatile, programmable read only array which can be programmed once, and read out multiple times. The size of the array can be selected. To prevent reprogramming of the array, a locking mechanism can be provided. Access to the array is established by using a shift register. The programming can be performed with only a single supply voltage of, for example, 3.3V. With the invention the required programming current per bit can be as low as 3 mA. The bit cell contains a fuse which is based on MEMS technology on top of standard CMOS processing. This solution is used to program fuses for large Chip ID's, e.g., 128 bits, as fast as possible.
According to the present invention there is provided an apparatus for programming and reading codes onto an array of binary data storage elements, the apparatus comprising:
a shift register for receiving, sequentially, a binary data series to be written onto the data storage elements; and
control logic circuit arranged to determine whether or not data is to be applied to each of the data storage elements in turn by reading sequentially the data stored on the shift register and applying, if it is determined that data is to be stored on a respective data element, applying a write signal to that data element, the control logic circuit further comprising means for applying a permanent locking signal to the array of data storage elements as such that further writing to the elements is prohibited when it has been determined that data has been written to each of the elements which require data to be written thereto.
Some of the distinguishing features of the invention include: non volatility; the fact that it is one time programmable in the field; it can operate with clock frequencies up to 100 MHz for read mode and operate with clock frequencies up to 1 MHz for program mode; it can use a single voltage supply and does not require any other high voltages; it has a small bit cell size; the number of ID bits is selectable up to 256 bits or higher in steps of 1 bit; it can interface via a synchronous shift register; it has a maximum programming time up to 10 μs per bit (with a 1 MHz. program clock); and can be fabricated on top of CMOS as thin as 0.35 μm.
The present invention overcomes the limitations of the prior art and affords faster chip identification programming times for the complete chip ID. This is achieved by iterative access to fuses in an array with the use of a predetermined period of time to assess whether a fuse has been blown or not before sampling the next fuse.
The present invention also has lower power dissipation for programming the complete chip ID. This is achieved by having the fuses blown one-at-a-time as opposed to blowing fuses simultaneously in accordance with solutions of the prior art.
An additional advantage in its lower cost, caused by shorter tester usage time.
The above and still further features and advantages of the present invention will become apparent upon consideration of the following definitions, descriptions and descriptive figures of specific embodiments thereof wherein like reference numerals in the various figures are utilized to designate like components. While these descriptions go into specific details of the invention, it should be understood that variations may and do exist and would be apparent to those skilled in the art based on the descriptions herein.
An example of the present invention will now be described with reference to the accompanying drawings, in which:
An object of the present invention is to impart on a chip a n-bit identity code in the form bn: b0, b1 . . . bn-1. In the example of the present invention in
The present invention enables the user to have program and read access on a chip ID, after processing or during operation in the field. In most of the cases, the chip ID is programmed after processing, so in the field only the read action will be performed.
The order in which the application is used is:
The programming procedure of the present invention comprises three phases:
In the example of the present invention, binary digits are used to indicate the state of a fuse. For example, arbitrarily ‘1’ designates a fuse that is not blown or should not be blown, while a ‘0’ designates a fuse that is to be blown or has been blown. This could, of course, be reversed. During a first phase of the programming procedure, the chip ID data/code is shifted into the serial shift registers. This achieved by applying a Clock (CLK), SHIFT, and Serial In (SI) signal to the input pin of the catenation of fuses associated with the corresponding ones of flip-flop circuits 7. This permits data to be shifted in one bit at a time synchronously with a clock (CLK) signal. Each bit is associated with a flip-flop and a corresponding multiplexer 8 as shown in the schematics of
After the serial shift procedure described hereinbefore, phase 2 of the programming procedure is initiated wherein the chip ID stored in the serial shift registers is programmed into the fuses 3. Referring to the flow chart in
The following steps are therefore undertaken. First, the ID code is serially shifted into the registers. When the shift is finished, the system should identify if the first fuse should be blown. When the fuse should not be blown, identify if the next fuse should be blown. When a fuse should be blown, set a pulse on the gate of the blow transistor; check during this period if the fuse has been blown before the end of the period; if that is the case, shut off the pulse, and identify if the next fuse should be blown. If, after a given period (say 10 μs) the fuse has not yet blown, then note that there is a problem but proceed and identify if the next fuse should be blown.
During phase 3, a lock is set on the program/blow mechanism to prevent the user from programming/blowing unblown/unprogrammed fuses again. This is done by disabling the program pulse which programs/blows the fuses. The LOCK command, when initiated, locks the entire program mechanism and hence the complete chip ID code onto the chip.
The write cycle signals are shown in
1. all ‘1’: Tprog={n+b1+3}Tclk
2. all ‘0’: Tprog={n+1+nb(b1+1)+nb}Tclk
3. else: Tprog={n+2+nb(b1+1)+b1}Tclk
To consider some examples:
Assume that Tclk=1 μs, and to blow a fuse, 4 clock-cycles are needed, so b1=4.
The reading of the chip ID will now be explained. Reading involves two phases.
During phase 1, a CAPT (Capture) command is given. This parallel loads the chip ID data/code which is stored in the fuses into the serial shift register.
During phase 2 the chip ID data/code is shifted out of the serial shift register. The serial shift register is of a well known standard design. By applying a CLK (Clock), and SHIFT signal the user is able to shift out data from the serial shift register at the SO (Serial Output) pin.
A finite state system 400 operable with the present invention is shown in terms of the flow chart in
Now a short explanation will be given for the system 400. The example assumes that the clock will run continuously, the example pattern is: “10110100” (b7 . . . b0), so maxcnt is 7. To give an example running through a whole write cycle, firstly the control logic starts in the IDLE state, then enable wr (write). This opens the path from state SHIFT to the next states.
Shift is enabled for n clock cycles, where n is the number of fuses. In this case n=8. On entering state SHIFT, the count (cnt) will be set to 0, and point to bit b0. Shift is then disabled. With wr=‘1’ and shift=‘0’, the control logic can go to state BLOW or ADD1. In this case, b0 is 0, so the control logic goes to state BLOW. This will open the prog transistor. When the fuse is blown (b1=‘1’), or the timer is elapsed (elap=‘1’), the control logic goes to ADD1.
Now the counter is increased (async) until a bit indicates that it should be set. In this case the counter will increase to value 1, because b1 is set to ‘0’.
Now the control logic 6 will enter state BLOW which will open the driver transistor for fuse b1. When the fuse is blown (b1=‘1’), or the timer has elapsed (elap=‘1’) the control logic 6 goes to ADD1. Jumping between BLOW and ADD1 continues until cnt>=maxcnt (7). Now the control logic 6 goes to state LOCK, which will blow the lock fuse to disable writing. When the fuse is blown, or the timer has elapsed, the control logic 6 goes to state RDY. In state RDY a signal indicates that the write cycle is finished, and the IDLE state is entered again.
The read cycle is now described in connection with
The read cycle signals are shown in
Tread=(n+3)Tclk. The number 3 comes from: 1 capture cycle+2 delay cycles.
As will be appreciated from the above, the circuitry of the present invention operates to write the relevant identification codes to the fuses 3 in a systematic and highly efficient manner without the need for laser writing, and provides a circuit which can be incorporated into the chip so that additional circuitry is not required to write the data to the fuses 3. This means that identification writing is fast and efficient and can be performed, if required, in a location other than the manufacturing plant of the chip.
Having described exemplary embodiments of the invention, it is believed that other modifications, variations and changes will be suggested to those skilled in the art in view of the teachings set forth herein. It is therefore to be understood that all such variations, modifications and changes are believed to fall within the scope of the present invention as defined by the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.
Number | Date | Country | Kind |
---|---|---|---|
0419465.0 | Sep 2004 | GB | national |
This application is a continuation of International Application No. PCT/GB2005/003369, filed on Aug. 31, 2005, entitled “Method and Apparatus for Programming and Reading Codes on an Array of Fuses,” which claims priority under 35 U.S.C. §119 to Application No. GB 0419465.0 filed on Sep. 2, 2004, entitled “Method and Apparatus for Programming and Reading Codes on an Array of Fuses,” the entire contents of which are hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/GB05/03369 | Aug 2005 | US |
Child | 11681528 | Mar 2007 | US |