Patent Publication Number: US-5892683-A

Title: Program compatibility recognition for a programmable logic device

Description:
This is a Continuation of application Ser. No. 08/040,692, filed Mar. 31, 1993, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     The present invention relates to the field of integrated circuits, their manufacture, and use. More specifically, in one embodiment the invention provides an improved method and device for ensuring that an integrated circuit is compatible with a configuration program. The invention has application to an array of integrated circuits such as programmable logic devices, otherwise referred to as PLDs, PALs, PLAs, FPLAs, EPLDs, EEPLDs, LCAs, and FPGAs. 
     Many types of integrated circuits are programmed by an external device such as a computer. As such integrated circuits are modified, updated, and improved, they undergo various revisions. At the same time, it sometimes becomes necessary to make revisions to the external programming device to accommodate changes in the integrated circuit and to otherwise improve the programming device. Such changes are often accomplished through revisions in the software of the external programming device. 
     As the software and integrated circuits undergo various revisions, it is necessary to &#34;keep track&#34; of the revisions such that it is possible to ensure that a particular revision of the software is compatible with a particular revision of the integrated circuit. This has often presented a difficult problem. 
     Various solutions have been proposed to accomplish this task. For example, certain programmable logic devices have applied a predetermined signal to one or more pins on the programmable logic device, and this signal causes the device to generate an ID code as a binary signal along one or more separate pins on the device. This binary code is generated by way of a ROM field on the chip, and is read by the programming device and its associated software. Depending upon the value of the binary code, the programming software may utilize a different programming algorithm to program the device. 
     While meeting with substantial success, prior techniques for managing revisions of integrated circuits and their programming software have also met with significant limitations. For example, when the software and the integrated circuit are incompatible, the programming effort will fail, but it is often difficult to determine why the failure has occurred. This problem arises because the output of the integrated circuit indicates which revision of the code to use, but if the code does not have that particular revision available, there is often an unidentifiable failure. Therefore, the user may not be aware that the failure arose due to incompatibility of the software and the integrated circuit. Moreover, the programmer of the software has limited control over upward and downward compatibility of the various revisions of the software. 
     Some types of integrated circuits have programming elements made of SRAM. The programming process of physically loading the SRAM data into the integrated circuit is called &#34;configuration.&#34; The configuration data sometimes is stored in a &#34;dumb&#34; memory device, such as a low-cost EPROM, when the system does not equip a host computer as an intelligent programming controller. Usually it is advantageous to have the device configuration occur automatically at system power-up. In this case, during power-up, the EPROM device starts &#34;blindly&#34; sending data to the SRAM-based IC, and it is the responsibility of the device to be configured (i.e., the SRAM-based device) to determine the program compatibility. Prior techniques did not work well when a system lacked a host computer for intelligent control, and the programming device was so &#34;dumb&#34; that a hand-shaking with the device being programmed did not exist. This invention also provides a means to recognize a program compatibility for in-circuit or on-board configuration (with or without a host computer). 
     From the above it is seen that an improved method and system for program/integrated circuit compatibility is needed. 
     SUMMARY OF THE INVENTION 
     An improved system and method of providing program compatibility recognition is provided by virtue of the present invention. 
     According to one aspect of the invention, a revision compatibility detection circuit is provided on an integrated circuit. A storage media for storing a revision code is also provided on the integrated circuit. The programming device inputs a binary code indicative of the device revisions that are supported by the software. The revision compatibility detection circuit determines if the device is one of those supported by the software and, if so, outputs an appropriate signal indicative of this fact and permit programming. Optionally, the device may output a signal indicating that there has been a failure due to incompatibility of the programming software and the integrated circuit device. 
     Accordingly, in one embodiment the invention provides a system for programming a programmable logic device integrated circuit. The system includes a programming computer, the programming computer including integrated circuit programming software stored therein, the programming software adapted to generate a series of bits at an output of the programming device representing compatible integrated circuits; and a detection circuit in the programmable logic device, the detection circuit generating a signal permitting programming of the programmable logic device by the programming computer when the series of bits is of a predetermined pattern. 
     A further understanding of the nature and advantages of the inventions herein may be realized by reference to the remaining portions of the specification and the attached drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is an overall illustration of one embodiment of the invention; 
     FIG. 2 illustrates aspects of an integrated circuit according to one embodiment of the invention in greater detail; 
     FIG. 3A schematically illustrates the integrated circuit when the software must be compatible with revision 0 silicon; 
     FIG. 3B schematically illustrates the integrated circuit when the software must be compatible with revision 1 silicon, and the revision 0 software is not compatible; and 
     FIG. 3C schematically illustrates the integrated circuit when the software must be compatible with either revision 1 or revision 0 silicon. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The present invention is used to determine the compatibility between the revisions of an integrated circuit such as a FPGA device and a configuration program. A device revision code is &#34;built in&#34; to the device and serves as a silicon identification code. The configuration program can be specified by a programmer, in a revision field, to randomly select which device revision will be compatible with the program. 
     When loading a configuration program the integrated circuit checks the revision field. If this software is compatible the configuration program is permitted to be loaded into the integrated circuit. If not, the programming device is notified and the loading process is stopped. In a specific embodiment, the integrated circuit includes a 24 bit shift register and a NOR-NAND type decoder that determines compatibility. The first 8 bits of the shift register may be used as a preamble code detector. The rest of the 16 bits represent the compatibility of revisions of the configuration program to the integrated circuit. 
     The 24 bits of data are specified by the programmer in the configuration program. The 8 bit preamble code is determined by the manufacturer of the FPGA device to ensure that the device is of the correct brand. The rest of the 16 bits are set by the programmer. Each bit represents whether a particular revision of a configuration program is compatible with the programmable logic device or other integrated circuit device. For example, if the programmer specifies 0000001100111001 in the revision field, each bit may be individually representative of whether the software will be compatible with a particular revision of the integrated circuit. In this particular example, the farthest most right bit indicates that the software is compatible with revision 0 of the integrated circuit. The next bit to the left, with a &#34;0&#34; value, indicates that the software will not be compatible with the first revision of the integrated circuit. In total, the above code indicates that the software is designed to be compatible with revisions 0, 3, 4, 5, 8, and 9 of the integrated circuit. When used with appropriate revision decoders on the integrated circuit, both forward and backward compatibility can be achieved. If a configuration program specifies all 1&#39;s in the revision field, the system is effectively disabled by the programmer since the program is indicated to be compatible with all integrated circuit revisions. 
     FIG. 1 illustrates an integrated circuit 2 and programming system 4 according to one embodiment of the invention. The programming system will generally include programming hardware 6 that is controlled by appropriate programming software 8, generally stored in memory associated with the computer. In many embodiments, the programming hardware will include a computer such as an IBM PC compatible computer, preferably a computer such as a 386 or 486 based IBM PC-AT, PS/2, or similar computer, a programming adapter, and other peripherals. Programming software and hardware used, for example, in conjunction with programmable logic devices are well known and generally described in the Altera 1992 Data Book, September 1991, pgs. 267-364, incorporated herein by reference for all purposes. 
     The programming system 4 can also be represented by a nonvolatile memory device, such as Altera EPC1213 configuration EPROM, which stores the data to be programmed including the software revision X. 
     The integrated circuit 2 includes a detection circuit 10 that is used to determine if the particular software used by the programming device is of a revision that is compatible with the particular revision of the integrated circuit device. For example, in FIG. 1, the software is of revision X, while the integrated circuit is of revision Y. If revision X is compatible with revision Y, an appropriate signal PASS is generated by the integrated circuit, preferably by the detection circuit. Optionally, if the revision X is not compatible with the revision Y, an signal FAIL is generated by the integrated circuit/detection circuit. 
     In a preferred embodiment, the detection circuit determines if the software revision and the integrated circuit revision are compatible by appropriate processing of a binary code 12 passed to the integrated circuit by the programming device. The binary code may be passed to the integrated circuit along with other programming information, or may be passed alone. 
     FIG. 2 illustrates a preferred embodiment of an integrated circuit 2. As shown therein the detection circuit 10 includes a shift register or other storage device 14. The storage device receives signals from the programming device directly or indirectly from one or more pins 16. Data representing, among other things, a revision code are loaded by the programming device into the shift register 14. The data from at least the revision code field 18 are then decoded in a decoder circuit 20 to determine if the software is compatible with the particular revision of the integrated circuit. If the decoder circuit determines that the integrated circuit revision is compatible with the configuration software based on the data stored in the revision field, the decoder issues a PASS signal to, for example, an internal device location that then permits loading of additional data onto the device and/or to a pin or pins 22 on the integrated circuit. A fail condition may be indicated simply by the lack of a PASS signal or, in alternative embodiments, the decode circuit may issue a separate, distinguishable signal indicating a fail condition on the pin 22 or a separate pin. Similarly, although not shown for purposes of simplicity, the device may also include a preamble comparator/decoder that ensure that the device is of the correct type and manufacturer for the software. 
     FIGS. 3A to 3C illustrate various possibilities for establishing compatibility of the silicon and the software, along with a particular decode circuit 20. In the Figures, the series of 16 bits are revision bits stored in the shift register 14. The right most bit (0) is used to indicate whether the software is intended for use with revision 0 of the integrated circuit, the next bit (1) is used to indicate whether the software is compatible with revision 1 of the integrated circuit, and so on. In this particular embodiment, a high value in a bit is used to indicate that the software supports the particular revision while a low value is used to indicate that the software does not support a particular revision. For example, storing a 1 in bit 0 will indicate that the software supports revision 0 of the integrated circuit, while storing a 0 for bit 0 will indicate that the software does not support revision 0. Obviously, the reverse arrangement could easily be utilized without departing from the scope of the invention herein. In this particular embodiment, the revision field is 16 bits long. 
     FIG. 3A illustrates implementation of the decoding circuit when the programmable logic device is revision 0. As shown, the bit stored in the 0 position of the shift register is connected to one of the 16 inputs of NOR gates 26. The remaining inputs of the NOR gates are coupled to ground. Although a single NOR gate may be used, in this particular embodiment the various inputs are dispersed among three NOR gates, the outputs of which are input to a NAND gate 28. The output of the NAND gate 28 is utilized as a PASS signal. The PASS signal will be high in the particular embodiment shown in FIG. 3 when the software programmer has determined that the programming software should be compatible with revision 0 of the integrated circuit by placing a high value in bit 0. Conversely, PASS will be low when bit 0 is provided with a low value. 
     The value of all bits except bit 0 will have no impact on the device shown in FIG. 3A. Regardless of how many revisions of the integrated circuit are produced and regardless of how many revisions of the programming software are produced, the programmer may always indicate that the software is compatible with revision 0 by placing a high level value in the 0 bit. 
     FIG. 3B illustrates the situation with revision 1 of the integrated circuit. In this particular embodiment, the NOR gates are provided with input from only bit 1. Accordingly, when bit 1 is high, the programming device will be enabled by PASS; otherwise it will not. Since the revision 0 software has a 0 in bit 1, which is used as an input to the NOR gates, the circuit designer has provided that revision 0 software will not be compatible with this integrated circuit. Note, however, that revision 1 software can be indicated by the programmer to be compatible with revision 0 of the integrated circuit, as well as revision 1 of the integrated circuit, by providing output of 1&#39;s in both the 0 and 1 bit positions. Conversely, the programmer may provide that revision 1 software will not be compatible with revision 0 of the integrated circuit by placing a 0 in the 0 bit position. Accordingly, the programmer may provide or not provide for downward compatibility of the software as he/she sees fit. 
     This situation is illustrated in the right hand side of FIG. 3b. As shown by solid lines, software revision 0 is compatible with integrated circuit revision 0, and software revision 1 is compatible with integrated circuit revision 1. The decoder permits the programmer to optionally make software revision 1 downward compatible to integrated circuit revision 0, as indicated by the dashed line. 
     FIG. 3C illustrates another possible configuration for revision 1 of the integrated circuit. As shown therein, the 0 and 1 bits are coupled to the inputs of the NOR gates 26. In this case, the integrated circuit designer has determined that the integrated circuit is to be compatible with both revision 0 and revision 1 software, as indicated by the solid black line on the right of FIG. 3C. In addition, the software programmer may optionally make revision 1 software downward compatible to revision 0 of the integrated circuit by placing a 1 in the 0 bit position, as indicated by the dashed line in FIG. 3C. 
     As will be appreciated by those of skill in the art, the present invention provides significantly greater control and flexibility over the management of software/programmable logic device revision compatibility. 
     The above description is illustrative and not restrictive. Many variations of the invention will become apparent to those of skill in the art upon review of this disclosure. Merely by way of example the invention may be used with a larger or smaller number of revision field bits, the invention may be used with devices other than FPGAs, or the invention may be utilized with systems in which the revision field is presented to the device in a parallel fashion on a number of device pins rather than in a serial fashion in which the bits are stored in shift registers. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.