Programmable logic array integrated circuit devices with flexible carry chains
BACKGROUND OF THE INVENTION 
     This invention relates to programmable logic array integrated circuit devices, and more particularly to improved carry chain circuitry for use in such devices. 
     Cliff et al. U.S. Pat. No. 5,274,581 (which is hereby incorporated reference herein) shows circuitry which is suitable for use as a basic logic module in a programmable logic array integrated circuit device. Among the many possible logic functions this circuitry can perform, some special features are included to facilitate use of the circuitry to perform one place of binary addition. This includes accepting two addend bits and a carry in bit (from the logic module performing the next lower order place of the addition) and producing a sum out bit and a carry out bit (for application as a carry in bit to the logic module performing the next higher order place of the addition). (Although for the most part only adders and addition are discussed in detail herein, it will be appreciated that adders are at the heart of other possible uses of this logic module circuitry. Among these other possible uses are subtraction and many different kinds of counters (e.g., up counters, down counters, loadable counters, resettable counters, etc.). This is discussed in more detail in the &#39;581 patent. References to adders, addition, or the like herein will be understood to also include these various other possible uses of the apparatus.) 
     The &#39;581 patent shows the carry out terminal of each logic module being &#34;hard wired&#34; to the carry in terminal of another (usually adjacent) logic module so that the logic modules are arranged in a fixed order in a carry chain. Thus if one wishes to use the carry chain circuitry, the fixed order of the logic modules along the carry chain dictates the arithmetic place that each logic module must perform. This restriction can reduce the overall usability of the programmable logic array device. For example, as a result of other logic which must be placed on the device, it may be found that only certain groups of logic modules have the connectivity required to receive the addend bits in the required order and to produce the sum out bits also in the required order. Or it may be found that in order to place an adder in the particular group of logic modules that has the proper connectivity for the addend and sum out bits, it is not possible to place on the device other logic that is needed. 
     In view of the foregoing, it is an object of this invention to provide improved programmable logic array integrated circuit devices. 
     It is a more particular object of this invention to provide improved carry chain circuitry for programmable logic array integrated circuit devices. 
     SUMMARY OF THE INVENTION 
     These and other objects of the invention are accomplished in accordance with the principles of the invention by providing alternate routing for the carry out bit of each logic module. In addition to the connection that the Cliff et al. patent shows from the carry out output of each logic module to the carry in terminal of another particular (usually adjacent) logic module, the carry out output of each logic module is also programmably connectable to the more general interconnection resources of the device. For example, the carry out output of each logic module may be programmably connectable to circuitry provided on the device for programmably connecting logic module outputs to the inputs of any of an associated group of logic modules. Alternatively or in addition the carry out output of each logic module may be programmably connectable to circuitry provided on the device for programmably connecting logic module outputs to the inputs of any logic modules on the device. These additional possible routings for carry signals allow use of the features of the logic modules that facilitate performing binary addition without being restricted to a particular order of the logic modules in the adder. All or part of the carry chain can be routed through the more general interconnection circuitry of the device if it is desired for any reason to permute the logic modules in an adder. This eases restrictions on use of the logic modules, thereby increasing the overall usability of the device. 
     Another feature of the invention relates to improved circuitry for utilizing the carry in signal in each logic module. This improved circuitry reduces delay in the carry chain when the carry out to carry in connections between adjacent logic modules are used. 
     Further features of the invention, its nature and various advantages will be more apparent from the accompanying drawings and the following detailed description of the preferred embodiments. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a schematic block diagram of an illustrative embodiment of a representative portion of a programmable logic array integrated circuit device constructed in accordance with this invention. 
     FIG. 2 is a more detailed schematic block diagram of a preferred embodiment of a portion of the logic shown in FIG. 1. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     FIG. 1 shows an illustrative programmable logic array integrated circuit logic module 30 constructed in accordance with this invention. In many respects this logic module is similar to the logic module shown in FIG. 8 of commonly assigned, co-pending Cliff et al. application Ser. No. 08/442,795, filed May 17, 1995, which is hereby incorporated by reference herein. To facilitate comparison with the &#39;795 application the same reference numbers are used in FIG. 1 hereof as are used for at least generally similar elements in FIG. 8 of the &#39;795 application. Some of the features of the FIG. 1 logic module are also present in the logic module shown in FIG. 3 of above-mentioned Cliff et al. U.S. Pat. No. 5,274,581. In other words, the &#39;795 application shows further development of the &#39;581 patent logic module, and the present invention relates to further improvements on the &#39;795 application logic module. Because many aspects of the FIG. 1 logic module have already been explained in detail in the &#39;581 patent and the &#39;795 application, a somewhat abbreviated description of the logic module can be provided herein. 
     It should also be noted that the &#39;795 application shows an example of a programmable logic array integrated circuit device in which the logic module of this invention can be used. In other words, the logic module shown herein can be used to replace the logic module shown in the &#39;795 application in programmable logic array devices such as are shown in the &#39;795 application, and the resulting devices will have the additional advantages described herein. 
     To briefly review the various components of logic module 30, each of elements 502a, 502b, 502c, 530, 532, 540a, 540b, 560a, and 560b is a programmable logic connector or &#34;PLC,&#34; as that term is defined, for example, in the &#39;795 application. Although the above-mentioned definition makes it clear that PLCs can have other constructions and functions, each PLC may be thought of in the first instance as a programmable switch for connecting any one of its inputs to its output. 
     Element 32 is a programmable universal logic block or &#34;ULB,&#34; as that term is defined in the &#39;795 application. For example, ULB 32 may be a programmable four-input look up table which is capable of producing on its main output (connected to element 520) a signal indicative of any logical combination of its four main inputs (along the left side of ULB 32). As shown and described in the &#39;581 patent, ULB 32 is effectively partitionable into two parts when the ULB is to perform one place of binary addition. The ULB output signals labelled U and V (corresponding to signals X and Y in the &#39;581 patent) are then precursors of a carry out signal, while the main ULB output signal (applied to cascade connect circuit 520) is the sum out signal. 
     Element 550 is carry select logic circuitry which uses a carry in signal from either carry in lead 54 or one of the main feeds to ULB 32 to effectively select the correct carry out signal from the U or V signals. In the particular embodiment shown in FIG. 1 the alternative carry in signal source is the C input to ULB 32. This is similar to what is shown in the vicinity of switch 128 in the &#39;581 patent. A possible variation uses the D input to ULB 32 as the alternative carry in signal source. 
     The carry out signal produced by carry select logic circuitry 550 is applied to carry out lead 54 and also to each of PLCs 540a and 540b. As compared to what is shown in the &#39;795 application, these connections to PLCs 540 are new in accordance with this invention. As in the &#39;581 patent and the &#39;795 application, the carry out lead 54 of each logic module is connected to the carry in lead 54 of another (usually adjacent) logic module. 
     Carry select logic circuitry 550 may be constructed as shown, for example, by elements 128, 156, 158, and 160 in the &#39;581 patent. However, a presently more preferred construction of component 550 is shown in FIG. 2 and described in detail below after FIG. 1 has been completely described. 
     Element 520 is cascade connect logic circuitry of the type described, for example, in Cliff et al. U.S. Pat. No. 5,258,668. This circuitry (together with the associated connections 52 to adjacent logic modules) is not relevant to this invention and can be assumed for present purposes to simply pass the main ULB output through unaltered. PLCs 530 and 532 are also not particularly relevant to this invention and can be assumed for present purposes to pass the output of element 520 through to the D input terminal of flip-flop or register device 34. 
     Flip-flop 34 receives a clock signal from clock control circuitry 562. PLC 560a selects one of two available clock signals for possible use by clock control circuitry 562. Flip-flop 34 can be cleared by a.signal from clear control circuitry 564. PLC 560b selects one of several applied signals for possible use by clear control circuitry 564. Flip-flop 34 can also be loaded with data from the C input to ULB 32 via asynchronous load control circuitry 566. Circuit 566 is controlled by an asynchronous load signal (which is also one of the inputs to PLC 560b). (In the &#39;795 application asynchronous load control circuitry 566 is not shown separately, but rather is shown as part of clock control circuitry 562.) In the context of the present invention flip-flop 34 is used when the logic module is to operate as a counter or is to otherwise register the results of an addition or subtraction. The clear function may be used to clear or reset the counter or register. The data loading feature may be used to pre-load the counter or register. 
     The Q output of flip-flop 34 is applied to PLC 502a (to facilitate use of the apparatus as a counter) and to each of PLCs 540a and 540b. A second input to each of PLCs 540a and 540b is the unregistered output of cascade connect circuitry 520. In this way flip-flop 34 may be bypassed when the logic module is not being used as part of a counter and registration of the output signal of ULB 32 is not required. The third input to each of PLCs 540a and 540b is the carry out output signal from carry select logic circuitry 550. As mentioned above, these third connections to PLCs 540 are new (as compared to what is shown in the &#39;795 application) in accordance with the present invention. 
     The output signal of PLC 540a is applied to &#34;local&#34; logic interconnection circuitry 100. As shown, for example, by the similarly numbered circuitry in the &#39;795 application, circuitry 100 allows the output of each logic module in a local group of logic modules to be programmably connected to the inputs 36 of any of the logic modules in that group. (In the &#39;795 application the reference number 20 is applied to such local groups of logic modules.) The output signal of PLC 540b is applied to &#34;global&#34; interconnection circuitry 38. As shown, for example, in the &#39;795 application, circuitry 38 (assumed herein to also include such other &#39;795 application circuitry as 60, 70, 80, and 90) allows the output of each logic module on the programmable logic array device to be programmably connected to the inputs 36 of any logic modules on the device. PLC 540a thus allows the carry out bit of any logic module to be routed to any logic module in the local group of modules that includes the logic module producing the carry out signal. Alternatively, PLC 540b allows the carry out bit of any logic module to be routed to any other logic module on the device. The device is no longer restricted to using only the dedicated carry out to carry in connections 54 between adjacent logic modules. When PLC 540a or 540b is used to route a carry out signal to another logic module, that signal enters the other logic module via the C input of that module. The carry select logic circuit 550 in the receiving module uses the C input rather than the dedicated carry in input 54 to form its carry out signal from the applied U and V signals. 
     It should be noted that if one of PLCs 540a and 540b is used for the carry out signal of a logic module, then the other of those PLCs must be used for the sum out bit of that logic module. 
     A particularly preferred embodiment of carry select logic 550 is shown in FIG. 2. A programmable function control element or &#34;FCE&#34; (as that term is defined in the &#39;795 application) 2008 is provided on the device for each carry select logic circuit 550. FCE 2008 is programmed to produce an output signal which is logic 0 if the associated circuit 550 is to use its carry in input 54. FCE 2008 is programmed to produce an output signal which is logic 1 if the associated circuit 550 is to use its C input as a carry in input. Programing FCE 2008 to produce logic 0 forces the outputs of NAND gates 2010 and 2014 to logic 1 regardless of whether the C input is logic 0 or logic 1. A logic 1 signal applied to the select (&#34;S&#34;) input terminal of each of PLCs 2016 and 2018 causes those devices to select their &#34;B&#34; inputs for application to their &#34;Y&#34; outputs. This causes the U signal to be applied to the &#34;A&#34; input of PLC 2020, while the V signal is applied to the &#34;B&#34; input of that PLC. The dedicated carry in signal on lead 54, which is applied to the select (&#34;S&#34;) input terminal of PLC 2020 then causes that device to select U or V as the carry out signal applied to its &#34;Y&#34; output terminal. In particular, U is selected as the carry out signal if the dedicated carry in signal is logic 0, and V is selected as the carry out signal if the dedicated carry in signal is logic 1. 
     Programming FCE 2008 to produce logic 1 allows the C input to select which of NAND gates 2010 and 2014 will produce logic 0 and which will produce logic 1. If the C input is logic 1, then NAND gate 2010 produces logic 0 and NAND gate 2014 produces logic 1 (due to the inversion of C by inverter 2012). On the other hand, if the C input is logic 0, then NAND gate 2010 produces logic 1 and NAND gate 2014 produces logic 0. If NAND gate 2010 produces logic 0 (and NAND gate 2014 accordingly produces logic 1), then PLC 2016 selects V as its output and PLC 2018 also selects V as its output. On the other hand, if NAND gate 2010 produces logic 1 (and NAND gate 2014 accordingly produces logic 0), then both of PLCs 2016 and 2018 select U as their outputs. From the last two sentences it will be seen that the C input effectively selects U or V as the output of both of PLCs 2016 and 2018. It then does not matter what the carry in input signal on lead 54 is because the &#34;A&#34; and &#34;B&#34; inputs to PLC 2020 are both the same. The U or V signal selected by both of PLCs 2016 and 2018 passes through PLC 2020 regardless of whether the &#34;A&#34; or &#34;B&#34; input of that PLC is selected by the dedicated carry in signal on lead 54. 
     As compared to the circuitry shown in the &#39;581 patent in which the dedicated carry in signal must pass through a switch circuit 128 before it can act on switch 160 to select the carry out signal, in the embodiment shown in FIG. 2 herein the dedicated carry in signal is applied directly to PLC 2020. This speeds up the dedicated carry chain circuit of this invention as compared to the dedicated carry in circuit of the &#39;581 patent. 
     It will be understood that the foregoing is only illustrative of the principles of this invention and that various modifications can be made by those skilled in the art without departing from the scope and spirit of the invention. For example, the particular logic components shown in FIG. 2 are merely examples, and logically equivalent circuitry can be substituted if desired.