HIGH SPEED PROGRAMMABLE LOGIC ARCHITECTURE

Abstract: Architecture for a programmable logic device is described which can operate at substantially faster clock rates than present programmable logic devices. Instead of employing passive circuit elements to interconnect the programmable logic elements (20) and the input (12) and output (15) data buses, controllable active driver circuits (52, 53) are employed. These circuits eliminate essentially all the resistance present in prior art passive connections.

Description: HIGH SPEED PROGRAMMABLE LOGIC ARCHITECTURE BACKGROUND OF THE INVENTION This invention relates to programmable logic, and in particular to a high speed programmable logic device architecture, employing active driver circuits in the interconnection array. A programmable logic device (PLD) is a programmable integrated circuit that allows the user of the circuit, using software control to customize the logic functions the circuit will perform. The logic functions previously performed by small, medium, and large scale integration integrated circuits are now capable of being performed by programmable logic devices. PLDs now have a capacity on the order of 50,000 gates per integrated circuit. When a typical programmable logic device is supplied by an integrated circuit manufacturer, it is not yet capable of performing any specific function. The user, however, in conjunction widi software, also typically supplied by the programmable logic device manufacturer, can program the PLD to perform the specific function or functions required by the user's application. The PLD then can function in a larger system designed by the user, just as though dedicated logic chips were employed. This functionality allows the user to debug the system logic without committing the time or expense of custom chips or gate arrays. It also allows small production runs, and the customization of hardware to suit a very specific application. In some PLD's the logic can be changed n on-the-fly" enabling the PLD to perform one function at one time during system operation, and another function at a later time. A typical PLD consists of an array of identical logic cells that can be individually programmed, and which can be arbitrarily interconnected to each other to provide internal input and output signals, uius permitting the performance of highly complex combinational and sequential logic functions. The program is implemented in the PLD by setting the states of programmable elements such as memory cells. One type of programmable logic, known as programmable logic arrays (PLA) is a combinatoral two-level AND/OR integrated circuit which can be programmed to perform sum-of-products logic. Such devices typically consist of a series of AND gates having input terminals which can be programmably connected to chip input signals, and a series of OR gates which may be programmably connected to receive the output signals from the AND gates. Another type of programmable logic device is known as ' programmable array logic (PAL). PALs use a fixed OR array and bidirectional input/output pins. A disadvantage of both PALs and PL As is the lack of density with which they may be programmed. In other words, although the array is capable of performing many logic functions, utilization of the array is not as complete as desirable. Furthermore the size of the array increases faster than its programming capability. A response to this problem has been the provision of "macrocells" or logic blocks in programmable logic devices. A macrocell or logic block is a small grouping of logic capable of performing many different functions, and being selectively interconnectable to other macrocells or logic blocks. This allows the logic in the programmable logic device to assume a more granular structure in which pieces of die logic communicate with other pieces, to provide an overall more efficient utilization of the integrated circuit. Herein I use the phrase "programmable logic device" to refer collectively to programmable array logic, programmable logic arrays, field programmable gate arrays, and other types of programmable logic devices. A significant disadvantage of all programmable logic devices presently available is tiieir relatively slow speed. In all of the programmable logic devices described above, the connections within the AND and OR arrays, as well as to and from the macrocells, are made with erasable programmable read only memory cells, electrically erasable read only memory cells, static random access memory cells, fuses, or antifuses, or the like. In each of these cases, the interconnection approach is passive. That is, the state of a memory cell or fusible connection is itself used to control some other apparatus which makes or breaks a connection between two nodes. All of these connections are passive in the sense that the signals presented to the connection simply pass dirough the connection (or do not pass if the connection is open). As a result, the overall speed of the programmable logic device is limited for reasons discussed below. Even the fastest prior art large field programmable gate arrays presently available operate at 50 mhz or slower. Some small transistor-transistor logic (TTL) devices can operate at over 100 megaHertz. No one is presently manufacturing large fast arrays. One of the primary reasons for the relatively slow operating speed of prior art programmable logic devices is the resistance present in the interconnection system. The interconnection system is me programmable "wiring" by which the logic signals are propagated across d e integrated circuit chip. This propagation speed is limited by die series resistance of the transfer gates employed, whedier formed as EPROM cells, SRAM cells, antifuses, or otherwise. As a result, manufacturers of prior art programmable logic devices have been forced to chose between resistance and capacitance in the technology selection for their transfer gates. As described above, in a typical prior art programmable logic device, the logic is implemented in logic blocks which communicate with each odier. Such logic blocks when coupled with transfer gates have an effective drive resistance on die order of 1000 ohms per connection plus the resistance of me driver circuit. In antifuse technology, for example, as implemented by Actel Corporation, the effective drive resistance is on die order of 50 to 500 ohms per connection plus die resistance of me driver circuit. As will be described, in me technology of our system, die effective drive resistance is simply d e resistance of die driver circuit. SUMMARY OF THE INVENTION We have developed an architecture for programmable logic devices which is capable of operating at substantially greater speeds man prior art programmable logic devices. In a preferred embodiment of our system, speeds of up to 500 mHz are achievable using die programmable logic techniques of our system and presendy available silicon semiconductor technology. In one implementation of our invention, a routing structure is provided for a programmable logic circuit which includes logic ceils in which logic functions are performed. The routing structure includes a set of input lines generally extending in a first direction for supplying signals to be processed by die logic cells, and a set of output lines extending in a different direction for receiving signals which have been processed by the logic cells. Where d e input and output lines cross, junction regions are established which include controllable active driver circuits which are capable of programmably providing, or not providing, connections between selected ones of the set of output lines and selected ones of the set of input lines to enable signals present on die output lines to be placed on desired ones of die input lines. Each of die controllable driver circuits is a buffer circuit capable of being placed in at least an active state in which die driver circuit replicates a signal supplied to it, or in a passive state in which it presents a high impedance between its input and output. Typically, the controllable driver circuits enable each output line in die set to be connected to any desired ones in die set of input lines. In another embodiment, our system includes a similar structure to diat described immediately above, but in addition provides a set of controllable driver circuits to selectively interconnect desired ones of d e input lines and the output lines to the logic cells. In diis manner, input signals present on die input lines can be supplied to die appropriate nodes of die logic cell, and output signals from die logic cells can be supplied to other desired logic cells or odier circuitry. In conjunction widi our system, controllable driver circuits may also be employed in the interface circuit between die integrated circuit pins and die sets of input and output lines. The controllable driver circuits allow desired connection between die pins of d e integrated circuit and die input and output buses, tiiereby enabling desired signals presented at die chip pins to be supplied to appropriate logic cells, and the output from diose logic cells to be applied to appropriate pins, as well. The use of active circuits, such as die controllable driver circuit described herein, enables die programmable logic device of our system to operate substantially faster tiian prior art devices. Using 1993 semiconductor technology, in die prior art, 50 mHz represents an upper limit for die clock speed at which a programmable logic device can operate. Programmable logic devices fabricated using die techniques of our invention can operate at up to 500 mHz. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 is a block diagram showing an overall layout of an integrated circuit employing die programmable logic device architecture of our invention; Figure 2 is a schematic diagram illustrating d e manner in which inpu signals are supplied to, and output signals are received from, the logic cell of our invention; Figure 3 is a schematic illustrating one embodiment of a circuit for interconnecting die integrated circuit input/output pins widi the input/output buses; Figure 4 illustrates another embodiment of a circuit for interconnecting die integrated circuit input/output pins wid die input/output buses; Figure 5 illustrates how driver circuits may be employed in the input or output buses, together widi a technique for lowering d e number of interconnections between die logic cells and such buses; Figure 6 illustrates anoti er technique for reducing d e number of connections; Figure 7 is a schematic drawing of circuiπ * y which may be employed to provide interconnections between die input and output buses, for example, at locations where they cross; Figure 8a illustrates two unidirectional bus lines; Figure 8b illustrates a bus line which can be made unidirectional in eidier direction; Figure 8 c illustrates a bus line which has been segmented using d e controllable driver circuits; Figure 9 is a schematic drawing of die circuitry of one logic cell; Figure 10 is a detailed circuit schematic of a preferred embodiment of die logic block employed in Figure 1 ; and Figure 11 is a block diagram of a small portion of the overall programmable logic device chip shown in block form in Figure 1. DESCRIPTION OF THE SPECIFIC EMBODIMENTS Figure 1 is a block diagram illustrating die overall layout of a high speed programmable logic device fabricated according to a preferred embodiment of our invention. As shown in Figure 1 , d e device includes a first set of routing channels 12 disposed generally in an east/west orientation, a second set of routing channels 15 disposed generally in a nordi/south orientation, and a series of logic cells 20 disposed widiin d e matrix of routing channels. In die conventional manner of programmable logic device operation, die routing channels contain buses of conductors for supplying input signals to d e logic cells, and receiving output signals dierefrom. Often, d e output signals from a logic cell are used as die input signals to anotiier logic cell. As is well known, each logic cell can perform any desired logical operation, eidier combinatorial or sequential, or botii, upon d e input signals supplied to it. The particular logic function performed by a logic cell depends upon its program state, which is typically "loaded" into die cell using external circuitry. The state is defined using control bits from the external apparatus to set multiplexers, flip-flops, gates, etc. In the general block diagram of Figure 1 , the logic cells 20 receive input signals from buses 12, and supply output signals onto die buses 15. The input signals are transmitted from die bus and supplied to the logic cell by conductors 23 , and the resulting output signals are supplied to die output buses 15 using conductors 27. As will be explained, uiese conductors diemselves are programmable in die sense diat die input nodes of die logic cells may eidier be connected to, or disconnected from, selected lines in die input data bus 12. Of course, as mentioned, die input data bus itself may carry as signals output information from odier logic cells. Connections between die input and output data buses may be made in location 30, where tiiese buses cross each odier. Aldiough ϋhe buses are depicted as crossing each odier in die drawing of Figure 1 , in actual practice tiiey are formed using different levels of metal or other conductive material on an integrated circuit, and are elecuically isolated from each other unless an elecuical connection between diem has been "programmed. " The manner in which d e conductors may be coupled to each odier in d e crossing regions 30 is described further below. An advantage of die structure of our invention is d at it is modular. As shown widiin dashed line 40, in die preferred embodiment of our invention, essentially all of d e integrated circuit area is consumed using regular modules 40 which include the interconnecting buses 12 and 15, die logic cell 20, and d e buses 23 and 27 to provide signals to, and receive signals from, die logic cell. This modular structure facilitates an efficient layout of die integrated circuit. Thus, as shown, each output of a logic cell extends for d e entire vertical span of die chip layout. The output buses extend along only one side of d e logic cell, and stop at die chip edges. The input buses, however, "wrap-around" at die periphery of the integrated circuit. For example, buses 12a and 12b will be connected togetiier at d e east end or d e west end of die circuit. In this manner, the input buses extend in a serpentine fashion across die surface of d e entire circuit. Thus, bus 12a will be connected to bus 12b at eidier die eastern edge or die western edge of d e chip, d en bus 12b coupled to bus 12c at die opposite edge, etc. The input and output buses are preferably unidirectional. For example, in an emitter-coupled logic (ECL) implementation, or in a complementary MOS (CMOS) implementation, d e buses will be unidirectional over die shortest segments, but can be made bidirectional in different segments of a common bus by isolating d e segments from each odier as will be described. Depending upon d e length of d e buses, die input/output signal strengtii, and odier factors, it may be desirable to employ "repeaters" widiin die buses. These repeaters consist of small amplifiers to isolate d e capacitances in die circuit, and tiiereby decrease signal propagation delays, enhancing overall system speed. Figure 2 is a more detailed view of the interconnection system between a logic cell 20 and its input bus 23, and between the logic cell 20 and its output bus 27. It should be appreciated d at any desired number of inputs and outputs may be provided to and from a logic cell. The drawing in Figure 2 illustrates d e general approach to forming tiiese interconnections and programmably controlling die connections. As shown in Figure 2, an input bus 12 has a series of conductors which may be selectively connected to an input node 41 of d e logic cell using controllable driver circuits 52 and 58. Although d e drawing depicts each conducting line in the bus 12 as being separately connectable to d e input node 41 , tiiis is only for the purpose of illustration. In actual implementations of our circuit, each input node need not be connected to every line on die bus, as will become apparent in conjunction widi a discussion of die fabrication of the logic cell below. In any event, in die drawing each bus line in bus 12 is separately connected dirough a driver circuit. The driver circuit functions as a programmable diree state buffer operating under control of an input signal supplied to it on line 54. Line 54 is coupled to a register or odier means within which the program for controlling the overall programmable logic device is stored. A separate bit in tiiis register, memory, a fuse or odier means, is used to control a corresponding one of die programmable connections in die drawing in Figure 2. Odier bits are used to control odier programmable connections elsewhere in e programmable logic device. Thus the control memory typically will have as many bits stored dierein as tiiere are programmable connections to be controlled. Of course, where two configurations are mutually exclusive and one, and only one, is always provided, die complementary state of a single bit can control two configurations. Under control of d e memory bit, circuit 52a is eidier active or in a high impedance state. When d e input 54a is enabled, circuit 52a repeats die signal coupled to its input node 57a. In odier words, if a logical 1 is present on conductor 12a of bus 12, men input node 57a of driver 52a will be a logical 1. Assuming mat control line 54a is enabled, tiien die output from driver 52a will also be a logical 1. Of course, die same conditions apply if a logical 0 is present on conductor 12a. Each of d e drivers 52 functions in d e same manner. On die odier hand, if control line 54 is not enabled, tiien die driver circuits present a high impedance state and functionally behave as an open circuit. In odier words, node 55 is completely disconnected from bus 12. This allows an input node 41 to be disconnected from d e bus 12 when diat input node is not to receive signals from bus 12. In some embodiments of our invention, anotiier driver circuit 58 is provided between node 55 and node 41. This additional circuit can be employed to help reduce die capacitive loading on d e input node 41. Altiiough not shown in Figure 2, each of the other input nodes to d e logic cell 20 is similarly coupled to the input signal bus 12. The output signal bus 15 is coupled to die logic cell 20 using a similar technique. As shown, die logic cell provides an output node 48 which is supplied to an optional driver circuit 59. Circuit 59 is provided for die same reasons as circuit 58, diat is, to reduce die capacitive loading and drive circuit requirements on die logic cell. For logic cells widi output drive power sufficient to drive a large capacitance, driver circuit 59 is unnecessary. The output from circuit 59 is coupled to die input of driver circuits 53, each of which operates under program control using information supplied on a corresponding line 51. Line 51 may be connected to a single shift register element, memory cell or odier storage. Controllable driver circuits 53 function in die same manner as circuits 52, diat is, tiiey eidier drive the corresponding output bus line with the signal presented at ti eir input node, or present a high impedance condition to d e output bus. In die high impedance state, signals supplied by die logic cell are prevented from influencing die state of die particular bus conductor. Thus, d e overall output connections 27 (as shown in Figure 1 ) are d e reverse of die input connections 23 (shown in Figure 1). In anotiier embodiment of tiiis invention, the circuits 52, 53, 58, and 59 can be replaced wid multiplexers. In this case die control lines 51 and 54 supply control signals to select among the multiplexer input lines, connecting die appropriate one to die logic cell. Figure 3 illustrates d e routing structure of die preferred embodiment of our programmable logic device in further detail. Shown in Figure 3 is d e manner in which signals presented at die input output pins of die integrated circuit are supplied to and received from die interconnecting input and output buses of die programmable logic device. As shown in Figure 3, two example I/O pins 60, 61 are connected, again dirough circuits 62, to die input/output buses 12 or 15. Altiiough die drawing is shown widi die bus extending in a north/soudi direction, it should be appreciated diat die circuitry depicted can perform d e same function whetiier die bus is an input bus 12 or an output bus 15. Furthermore, each input/output pad 60 can be coupled to botii input and output buses by simply repeating die structure shown in Figure 3. Thus, die input connection 60 is connectable dirough driver circuits 62a, 62b, ..., to any one of die lines 12. This allows an input signal presented at pad 60 to be placed on d e bus 12 for supply to any one of die logic cells on die integrated circuit. Similarly, output driver circuits 64a, 64b, etc., allow signals present on the bus to be communicated from the bus to d e output pad. As mentioned above, altiiough die structure depicted illustrates only the output bus, die entire sttucture of Figure 3 can be repeated to allow connections to die input buses. Of course, as many input and output pins as desired may be used. Figure 4 is a diagram illustrating an alternative approach to die interconnections between die input/output pads and die buses. As shown in Figure 4, the input buses 12a and 12b extend in a serpentine manner past the input/ output pads 60, 61. In contrast die output buses 15a, 15b extend vertically past the I/O pads. I/O pad 60 is selectively connectable to output bus 15a using programmable driver 65a. It is also selectively connectable to bus 12a via driver 65b and bus 12b via driver 65c. In a similar manner, input/output pad 61 can be connected to drive output bus 15b wid driver 67a, and can be connected to receive signals from eidier bus line 12a or bus line 12b using driver 67b and 67c, respectively. In this configuration die inputs behave like cell outputs and become part of bus 15 viewed differendy, and input pad to the chip can be considered as die output from an external source off die chip. Figure 5 illustrates another aspect of the input and output buses of our system. As shown in Figure 5, bus 12, for example an input bus, extends across d e upper portion of die figure. Input bus 12 is coupled to logic cells 20 using d e same techniques as shown in Figure 2. For simplicity, however, die driver circuits in the local bus 23 between the input bus 12 and the logic cells 20 are not shown. These are provided in the manner described above. Also, for illustration, die input terminals 41 to d e logic cell 20 are shown as not being connectable to all lines of d e input bus 12. Altiiough it may seem desirable to provide a connection between every input line and every input node of every logic cell, in practice tiiis is unnecessary. A more efficient design can be achieved by simply providing sets and subsets of connections between die bus and the logic cell. For example, logic cell 20a is shown as having an input node 41a connectable to bus lines 12a and 12c, and an input node 41b connectable to bus lines 12b and 12n. In contrast, logic cell 20b has input nodes 41c connectable to bus lines 12a and 12b, while node 4 Id is connectable to bus lines 12c and 12n. Thus, if a logic function were to be performed using as input signals to logic cell 20, only die data on lines 12a and 12b, tiien logic cell 20a would be employed for diat function (and would be selected by die software for diat task). By employing logic cell 20a, input 41a of the cell can receive die input signal on line 12a, while input 41b can receive the input signal on line 12b. Anodier feature of our system shown in Figure 5 is die use of controllable driver circuits in die bus lines diemselves. If me bus lines are allowed to extend in d e serpentine manner across die surface of die entire chip without interruption, a very high capacitance load is placed on die cell output drivers. This high capacitance requires the drivers for driving d e input signal to consume extra power and operate undesirably slowly. To overcome this problem, we provide driver circuits 70 at selected intervals along the bus lines. Altiiough depicted in conjunction widi an input bus 12, die same technique is employed in die output bus 15. In Figure 5, tiiese driver circuits are shown as being disposed every two logic cells along die bus. The actual number of driver circuits in a particular design is determined by space, speed, and flexibility tradeoffs. For the embodiment depicted in Figure 5, some of the driver circuits 70 have been made programmable, while odier circuits 71 are not programmable. Circuits 71 are provided in an always ON condition. In odier words, whatever signal is provided at tiieir input node is reproduced at tiieir output node. Circuits 70, however, are made programmably controllable, and can employ die same circuitry as die controllable driver circuits. Each of circuits 70 is similar to d e circuits discussed above, for example driver circuits 52 and 53 in Figure 2. The capability of placing the circuits in high impedance condition allows die input bus (or die output bus) to be divided into smaller "pieces." For example, if me function of bus line 12a is only to provide an input signal to node 41a in logic cell 20a, driver circuits 70d may be turned OFF. This eliminates the need for whatever driving circuit is driving bus line 12a to drive die extra capacitance of that bus line beyond driver circuit 70d. Furthermore, it allows d at portion of d e bus line 12a beyond driver circuit 70d to be utilized for odier purposes, for example, to function as a "local" connection between two logic cells. Figure 6 illustrates a further refinement of die routing structure of our system. As shown in Figure 6, some output nodes 41a from the logic cell 20 can provide dedicated connections to d e output bus line 15a. At die same time, odier connections from the logic cell, for example output 41b, can provide controllable or programmable connections to die output bus line 15b using a controllable driver circuit 53. This eliminates unnecessary driver circuits, and allows optimizing die design to suit a class of logical functions to be provided. In a typical implementation of our system, some connections will be attached widiout driver circuits, as shown in node 41a, while otiiers wtil use a programmable connection, as shown for node 41b. Figure 7 is a diagram illustrating a more detailed view of die bus interconnection region 30 shown in Figure 1. The drawing illustrates tiiree of d e output bus lines 15a, 15b, and 15n, and five of die input bus lines 12a, 12b, 12c, 12d, and 12n. Programmable driver circuits, like tiiose described above, enable die connection of any output bus to any input bus. For example, assume that it is desired to supply die output information on bus line 15b to input bus 12d. To achieve tiiis, circuit 80b will be programmed ON, tiiereby replicating die state of bus 15b at node 85. In addition, circuit 83d will be programmed ON, to pass die state of node 85 to input bus 12d. All odier programmable driver circuits 83 will be programmed OFF in tiieir high impedance state to prevent d e information on node 85 from being placed on any of die odier bus lines. For illustration, also assume output bus line 15a is not to be coupled to any of d e input bus lines 12a, 12b, ..., 12n. To achieve tiiis, circuit 80a will be programmed OFF, as well as all circuits 82. This will isolate output bus 15a from input buses 12. In tiiis manner, any desired output bus can be coupled to any desired input bus. Figures 8a, 8b, and 8c tilusu"ate a refinement in die routing structure of our system. In the preferred embodiment of our system, die buses are unidirectional. Absent odier modifications, tiiis imposes a requirement on die system, if it to have maximum flexibility, buses in each direction. For example, input bus 12 would be required to have some lines widi driver circuits to allow signal propagation to die east, and some lines widi driver circuits to allow signal propagation to die west. Figure 8a illustrates an example, with bus line 12a propagating signals to d e right, and bus line 12b propagating signals to the left. Figure 8b shows a modification of tiiis technique in which controllable driver circuits are used to segment me bus line 12a into smaller regions, d ereby allowing portions of die line to be used in each direction. As shown in Figure 8b, some of die output buses 15a, 15b, 15c, and 15d cross the input bus 12a at junction locations 31 , 32, 33, and 34. Each of tiiese junction locations will use die connection structure shown in Figure 7 to provide a possible interconnection between die output bus line 15 and d e input bus line 12. Unlike d e structure of Figure 8a, however, a pair of controllable driver circuits is provided between each junction. For example, drivers 92 and 93 are provided between junctions 31 and 32. By programming one of me driver circuits ON and die odier one OFF, signals can be propagated between nodes 31 and 32 in eidier direction. Figure 8c provides an example. In Figure 8c, assume d at the signal on line 15a is to be communicated botii to die left and right on input bus 12a. To achieve this, circuits 91 and 92 are programmed ON, and circuits 90 and 93 are programmed OFF. This allows me signal on line 15a to be supplied to nodes 35 and 32. For illustration, circuit 88 has been programmed OFF to show that die same bidirectional capability may be provided in die output lines, as well as the input lines. Driver circuits 94, 95, 96, and 97 have all been programmed OFF to isolate node 32 from node 34. Of course, the node could be isolated by programming only one pair 94 and 95, or 96 and 97 OFF. To enable die signal on output bus 15d to be supplied to die right on input line 12a, circuit 98 has been programmed ON and circuit 99 OFF. Figure 9 is a schematic diagram of a preferred embodiment of me logic cell employed in our system. As described in conjunction wid Figure 1 , the logic cells are used to perform d e logical operations on die input signals from die input buses, and place die resulting output signals on die output buses for use by odier cells, or to be supplied by die integrated circuit to odier electronic apparatus. As shown in Figure 9, in d e preferred embodiment a logic cell 20 may receive up to 18 input signals 100, 101 , ..., 117, and provide in response tiir output signals 140, 141 , and 142. By virtue of die exclusive OR gate 119, the AND gates 120, 121 , and 122, and d e OR gate 128, combinational logic may be performed. The D-type flip-flop 133 provides die capability of performing sequential logic on die input signals, or on the output signals from die combinational logic, depending upon die state of multiplexer 132. In Figure 9 each input signal is supplied dirough a polarity control (PC) circuit formed using an exclusive OR gate, as shown in die lower right-hand portion of d e figure. The rectangular symbol with "PC" inside it designates tiiis polarity control connection, and is used to simplify me drawing. The particular logic cell depicted allows for global or local clock options, enabling d e clock rate of die logic cell to differ from the clock rate of the overall integrated circuit. By virtue of d e programmable interconnections, unused circuits consume no power, yet polarity control is provided on all inputs. The particular logic cell depicted is optimized to implement, and function such as a full adder widi carry, a two-bit comparator, or a four-input multiplexer. In addition, die logic can readily serve as a single stage of a preloadable left/right shift register, or as one stage of a synchronous four-bit preloadable up/down counter. Figure 10 is a detailed circuit schematic of a preferred embodiment the logic block employed in the programmable logic architecture of tiiis invention. The logic block schematic corresponds to a preferred embodiment of e logic block 20 shown in block diagram form in Figure 1. Generally, die logic block is coupled to potentially, depending on die programming, receive up to eighteen inpu signals at the terminals along die left edge of d e Figure. In response the logic block supplies up to tiiree output signals at the terminals 143, 144, and 145 along the right edge of die Figure. For die purpose of explanation, die logic block can be considered as being divided into four sections as shown by die dashed lines extending across Figure 10. The upper two sections 146, 147 provide high level functions, as described below. The titird section 148 provides a multiplexing function, and d e bottom section 149 an arithmetic and comparing function. The bottom section adder can provide a carry to die top section, or permit die comparison of three bits to detect whetiier all are the same. In the upper section 146, logic gates 151 , 152. 153, and 156 provide AND-OR logic to node A. Feedback from some of d e gates in section 147 is permitted by die multiplexers 170, 171 , 172. This enables supplying of some of die input signals directed to die section 147 to section 146, as well. Multiplexer 155 provides a feedback multiplexer, enabling, in combination widi gate 156, a latch function to be provided. The feedback patii from flip-flop 157 provides a load function for a counter or a shifter. The flip-flop itself provides a patii for controlling data flow from die logic block to external circuitry. When die flip-flop is configured as a D-type flip-flop, it provides for shifting. When configured as a T-type flip-flop, it provides counting capability. The second section 147 of the logic block duplicates die functionality of die upper section, and is linked to d e upper section by node C dirough multiplexer 158 and AND gate 159. By programmable coupling the upper two sections of die logic block togetiier, die overall logic block can provide a two-bit counter. This counter can be chained togetiier with other counters provided by odier logic blocks to make long counters. The connection at node C allows die upper unit to shift data to die lower unit. The tiiird section 148 of the logic block, consisting primarily of multiplexer 160, can be programmed to provide a straight multiplexing function on a subset of the input signals. In the lower section 149 of the logic block, gates 161, 162, 163, 164, 165, 166, and 167 enable provision of a full adder with a carry bit at node G. The sum appears at node H. Gates 161 and 162 allow multiplexing, while gates 163, 168, and 167 allow comparison of three-bit quantities. Throughout Figure 10 small rectangles labeled PC provide polarity control on die signal, using die gate structure shown in die inset of Figure 9. Also, as shown, each multiplexer in the logic block is connected to be controlled by one or two control bits. These can be eidier logical 1 or logical 0, tiiereby providing a one or two bit control signal to die multiplexer to enable selection of one of two, or one of four input lines to die multiplexer. The selected line is coupled to die output terminal of the multiplexer. The logic block shown in Figure 10 enables relatively easy construction of a set of logic functions. In contrast to die approach followed by odier programmable logic device architectures, this architecture is optimized to provide various functions, ratiier tiian provide overall complete flexibility and functionality. By providing a relatively large logic block, fewer connections are required and faster overall operating speed is provided. In odier architectures, the provision of numerous small logic blocks results in many interconnections among blocks, slowing overall system speed. Figure 11 is a block diagram of a small portion of the overall programmable logic device chip shown in block form in Figure 1. Shown along the left-hand edge of Figure 11 is a series of lines labeled "vertical channel." These lines are the input routing channels or bus 12 described in the earlier figures. The multiplexers 200, 201 , coupled to the input bus include die circuitry diat allows connections from die routing channel 12 to die input of die logic block, as well as the circuits used to create die input polarity control function described above. The logic block is shown to die right of die multiplexers 200, 201. The next tiiree portions of die schematic, consisting of the AND gates 202, 203, and 204, the OR gate 205, and multiplexer 206, represent the AND-OR-multiplexer chain shown at the upper portion of Figure 10 ~ d e logic block diagram. The flip-flop 207 represents die flip-flop and die circuitry necessary to create an output to drive one line of bus 15. The next four blocks 208, 209, 210, and 211 on die diagram are unidirectional repeaters. Only four shown in the diagram, however, clearly any desired number may be employed. These repeaters are die repeaters that would be used to make gates 53, 62, 65, 67, 70, 71 , 80, 82, 83, or 84, etc. For illustration, resistors 212 and 213 are shown coupled to repeaters 208 and 209, representing loads which tiiose repeaters would drive in die form of odier circuitry. The resistors tiiemselves are not fabricated on the chip. Repeaters 210 and 211 drive die feedback path back to die vertical channel 12. Thus tiiey represent supplying an output signal to an input bus, such as is shown in Figure 7 at node 82. Although the foregoing has been a description of die preferred embodiment of die programmable logic of our system, it should be appreciated diat numerous variations in die specific details and structures described can be implemented. Accordingly, die scope of die invention is set forth by die appended claims.

Claims: What is claimed is: 1. A routing structure for a programmable logic circuit, die logic circuit including logic cells in which logic functions are performed, die routing structure comprising: a set of input lines for supplying signals to be processed by die logic cells, die input lines extending generally in a first direction; a set of output lines for receiving signals which have been processed by the logic cells, die output lines extending generally in a second direction not parallel to die first direction to cause the input and output lines to cross in junction regions; wherein each of the junction regions includes a plurality of controllable driver circuits individual ones of which are connected between selected ones of die set of output lines and selected ones of die set of input lines to enable signals present on die output lines to be placed on desired ones of the set of input lines; and wherein each of the controllable driver circuits comprises a buffer circuit capable of being placed in at least an active state in which die controllable driver circuit replicates a signal supplied to it and a passive state in which d e controllable driver presents a high impedance between its input and output. 2. A routing structure for a programmable logic circuit as in claim 1 wherein a controllable driver circuit enables each output line in tiie set of output lines to be connected to desired ones in die set of input lines. 3. A routing structure for a programmable logic circuit as in claim 2 further comprising an additional controllable driver circuit coupled between die output line and die controllable driver circuits for amplifying signals on die output line before supplying diem to the controllable driver circuits. 4. A routing structure for a programmable logic circuit as in claim 1 wherein the programmable logic circuit is embodied on an integrated circuit. 5. A routing structure for a programmable logic circuit as in claim 4 wherein the set of input lines for supplying signals to die logic cells extend in a serpentine manner on the integrated circuit to be disposed in proximity to die logic cells. 6. A routing structure for a programmable logic circuit as in claim 4 wherein die set of output lines for receiving signals from the logic cells extend in a serpentine manner on die integrated circuit to be disposed in proximity to the logic cells. 7. A routing structure for a programmable logic circuit as in claim 1 wherein each of die buffer circuits comprises a programmable three state circuit which performs one of three operations in response to a control signal and an input signal supplied thereto. 8. A routing structure for a programmable logic circuit as in claim 7 wherein the three operations comprise: providing a logical one, providing a logical zero, and providing a high impedance. 9. An architecture for a programmable logic circuit comprising: a group of logic cells, each having input and output nodes, for performing a logic function on die signals supplied to its input nodes and supplying die resulting output signals on its output nodes; a set of input lines for supplying signals to be processed by die logic cells; a set of output lines for receiving signals which have been processed by die logic cells; a set of controllable driver circuits disposed to selectively interconnect desired ones of die input lines and die output lines to die logic cells; and wherein each of d e controllable driver circuits comprises a buffer circuit capable of being placed in at least an active state in which die controllable driver circuit replicates a signal supplied to it and a passive state in which it presents a high impedance between its input and output. 10. A connection for connecting two conductors togetiier under program control in a programmable logic circuit, die connection comprising an electronic circuit which is in one of three states: logical one, logical zero, and a high impedance. 11. A connection for connecting two conductors togetiier in a programmable logic circuit as in claim 10 further comprising a programmable control node for selecting die high impedance state. 12. An input/output circuit for connecting input/output nodes to a routing structure in a programmable logic circuit having logic cells, the input/output circuit comprising: at least one input output pad; a set of input lines for supplying signals to be processed by die logic cells; a set of output lines, die output lines for receiving signals which have been processed by die logic cells; a first set of controllable driver circuits disposed between die input output pad and each one of die set of input lines; and a second set of controllable driver circuits disposed between die input/output pad and each one of the set of output lines. 13. A mediod of increasing the operating speed of a programmable logic device having logic cells which may be programmed to perform logic functions, and having an interconnection system for providing communications links among the logic cells comprising employing active controllable driver circuits in place of passive switching devices.

Inventors: SASAKI PAUL T, SASAKI, PAUL, T.
Applicants: DYNA LOGIC CORP, DYNA LOGIC CORPORATION
Application year: 1996
Main classification: H03K19
IPC codes: H03K19