SECURITY FUSE CIRCUIT FOR PROGRAMMABLE LOGIC ARRAY

Abstract: One of the programmable elements of the array (20) is designated as a security element (22), and its output is coupled to a latching mechanism (30). The output of the latching mechanism (30) is coupled to a mechanism (36) for disabling the read output of the array (20). The latching mechanism (30) is enabled for a short time by a pulse when power is applied to the circuit. Thus, when power is first applied, the security fuse (22) has not been set and the latch output will allow data to be read. While power is applied, all of the programmable elements can be set, including the security element (22). All the elements, including the security fuse (22), can then be verified by reading them out. When power is turned off and subsequently reapplied, the latch (30) will then be enabled and the set security fuse level will appear at the latch output, thereby disabling the reading out of the program data. The present invention thus allows verification of the setting of the security fuse (22) and verification of the other programmable elements after the security fuse (22) has been set.

Description: BACKGROUND The present invention relates to security fuses for programmable logic array devices. Programmable logic devices typically use fuses or memory cells which serve to provide desired connections to form a logic network. The fuses or memory cells are blown or written into (programmed) in accordance with the desired logic function. To verify that the circuit has been correctly configured, this fuse or memory array can then be read to check the programming. In order to prevent competitors from reading out the programming of the logic chip, a security fuse is often used. The security fuse, when programmed, disables the reading of the memory or fuse array. A typical prior art configuration is shown in Fig. 1. A memory array 10 is programmed with data inputs so that it will perform logic functions between logic inputs and logic outputs. The program data out from memory array 10 is ANDed in a series of AND gates 12 with a signal from a security fuse 14. When security fuse 14 is blown, or written to, a zero logic level will be presented to one input of each of AND gates 12. This disables the gate outputs and provides for an all zero data output reading regardless of the actual configuration of memory array 10, thus preventing a competitor from getting the program. The arrangement of Fig. 1 requires that the programmer verify the programming prior to setting the security fuse. Once the security fuse is set, the programmed information can no longer be verified. In the event that the setting of the security fuse causes an error elsewhere in the circuit, this will not be detectable during a program verification. Typically, security fuse 14 is located in memory array 10 near other data fuses and it could cause errors in other data elements when it is set if there is a defect. Electronic Design 34 (May 1986) No. 10, pages 201 -204, 206, describes a security circuit for an EEPROM-based programmable array. The circuit discourages reverse engineering. Activating a security mechanism prevents the logic configuration from being read out and, at the same time, disables all internal addressing circuitry. Only erasing the chip can deactivate the security measure. In addition, optical inspection of the chip, unlike fuse-linked PLDs, offers no design clues, since EEPROM technology does not destroy any interconnections. At the same time, the security mechanism does not impede testing of the chip. It is not activated until the first time the chip is powered up after programming the security bit. Thus, even if the security bit is set, the entire logic configuration, including the architecture and security bits, can be read out and verified as long as the chip remains powered. However, once the power is removed, the security feature is activated for the life of the logic configuration. SUMMARY OF THE INVENTION The present invention is an improved security circuit for a programmable logic array. One of the programmable elements of the array is designated as a security element, and its output is coupled to a latching mechanism. The output of the latching mechanism is coupled to a mechanism for disabling the read output of the array. The latching mechanism is enabled for a short time by a pulse when power is applied to the circuit. Thus, when power is first applied, the security fuse has not been set and the latch output will allow data to be read. While power is applied, all of the programmable elements can be set, including the security element. All the elements, including the security fuse, can then be verified by reading them out. When power is turned off and subsequently reapplied, the latch will then be enabled and the set security fuse level will appear at the latch output, thereby disabling the reading out of the program data. The present invention thus allows verification of the setting of the Security fuse and verification of the other programmable elements after the security fuse has been set. Preferably, the latch used is a static RAM cell which has an enable input provided from a power-on sense (POS) circuit. The POS circuit detects when applied power reaches a certain level and applies a pulse to the enable input of the static RAM. For a fuller understanding of the nature and advantages of the invention, reference should be made to the ensuing detailed description taken in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a block diagram of a programmable logic array using a security fuse according to the prior art; and Fig. 2 is a combination block and schematic diagram showing a security fuse circuit according to the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT Fig. 2 shows a memory array 20 which includes a memory element 22 coupled to an output line 24. Element 22 is designated as the security fuse element and is programmed by inputs along architecture columns 26, 28. Output line 24 is provided to a static RAM cell 30. Static RAM 30 is provided with an enable input along a line 32 from a power-on sense circuit 34. The output of static RAM cell 30 provides one input to a series of AND gates 36. The other input of each AND gate is one of the data outputs from memory array 20. The output of the AND gates are provided to the data out lines of a chip containing the circuit. Power-on sense circuit 34 detects when the applied power to the circuit has reached a certain level, and provides a high-going pulse on line 32. The level of the power which is detected is necessarily above the threshold operating level of the power-on sense circuit itself. On initial power-up, the signal from power-on sense circuit 34 enables static RAM 30 which has a high level applied to its input and thus enables all of AND gates 36. Since the signal from power-on sense circuit 34 was a pulse, after it has passed, the output of static RAM 30 will not change until the pulse reappears on the next power-up. Accordingly, memory array 20 can then be programmed, including security fuse cell 22. This programming can then be verified since all of AND gates 36 are enabled. After all the programming has been verified and power is turned off, upon the next power-up the zero level present at the input of static RAM 30 due to the programming of cell 22 will be provided to AND gates 36 by the pulse from power-on sense circuit 34. Thus, after verification of the array contents, upon its next power-up by someone attempting to read the contents, another pulse will be presented by power-on sense circuit 34. This will pass the zero level from programmed cell 22 to the inputs of AND gates 36, thereby disabling the outputs of AND gates 36. Thus, the data will be protected and cannot be read. As will be understood by those familiar with the art, the present invention may be embodied in other specific forms. For example, a standard latch could be used instead of a static RAM or logic other than AND gates could be used to disable the outputs of the array.

Claims: An improved security circuit for a programmable logic array (20) having a plurality of programmable elements for providing output signals on logic outputs of said array (20) responsive to input signals on logic inputs to said array (20) in accordance with programmed values of said programmable elements and having programming inputs to said programmable elements for programming said programmable elements and programming outputs from said programmable elements for verifying said programmed values, comprising: a programmable security element (22) in said array (20) for providing a security signal at a security output (24) coupled to said element (22); latching means (30) coupled to said security output, for storing a signal from said security output upon receiving an enable pulse at an enable input (32); power-on sense means (34) for providing said enable pulse to said latching means for a short period when power is applied to said programmable logic array (20); and means (36), responsive to an output of said latching means, for disabling the reading of said programmed values of said programmable elements on said programming outputs. The circuit of claim 1 wherein said latching means comprises a static RAM (30). The circuit of claim 1 or 2 wherein said power-on sense means comprises a power-on sense circuit (34) which provides a high-going enable pulse when a power input for said array (20) exceeds a predetermined level. The circuit of any one of claims 1 to 3 wherein said means for disabling comprises a series of AND gates (36), each AND gate having one input coupled to a programming output of said array (20) and another input coupled to an output of said latching means (30). The circuit of any one of claims 1 to 4 wherein each of said programmable elements comprises an EEPROM memory cell (22). A method for securing the programming of a programmable logic array (20) having a plurality of programmable elements for providing output signals on logic outputs of said array (20) responsive to input signals on logic inputs to said array (20) in accordance with programmed values of said programmable elements and having programming inputs to said programmable elements for programming said programmable elements and programming outputs from said programmable elements for verifying said programmed values, comprising the steps of: programming said elements of said array (20), including an element (22) designated as a security element; reading the contents of said array (20) on said programming outputs to verify said programming; removing power from said array (20); reapplying power to said array (20); detecting the reapplication of said power and providing an enable pulse signal; latching a security output of said array (20) corresponding to said security element (22), in response to said enable pulse signal, to an output of a latch circuit (30); and disabling the reading of said programming outputs of said array (20) response to an output of said latch circuit (30).

Inventors: GOETTING, ERICH
Applicants: ROHM CORPORATION
Application year: 1988
Main classification: H03K19
IPC codes: G11C16, G11C7, H03K19, H01H85, G06F21, H01L21, G06F12, H01H37, H01L27, G06F7