1. Field of the Invention
The present invention relates to logic elements for use with programmable logic devices or other similar devices.
2. Description of the Related Art
Programmable logic devices (“PLDs”) (also sometimes referred to as CPLDs, PALs, PLAs, FPLAs, EPLDs, EEPLDs, LCAs, FPGAs, or by other names), are well-known integrated circuits that provide the advantages of fixed integrated circuits with the flexibility of custom integrated circuits. Such devices are well known in the art and typically provide an “off the shelf” device having at least a portion that can be electrically programmed to meet a user's specific needs. Application specific integrated circuits (“ASICs”) have traditionally been fixed integrated circuits, however, it is possible to provide an ASIC that has a portion or portions that are programmable; thus, it is possible for an integrated circuit device to have qualities of both an ASIC and a PLD. The term PLD as used herein will be considered broad enough to include such devices.
PLDs typically include blocks of logic elements, sometimes referred to as logic array blocks (“LABs”; also referred to by other names, e.g., “configurable logic blocks,” or “CLBs”). Logic elements (“LEs”, also referred to by other names, e.g., “logic cells”) may include a look-up table (LUT) or product term, carry-out chain, register, and other elements.
Logic elements, including look-up table (LUT)-based logic elements, typically include configurable elements holding configuration data that determines the particular function or functions carried out by the logic element. A typical LUT circuit may include configuration RAM bits that hold data (a “1” or “0”). However, other types of configurable elements may be used. Some examples may include static or dynamic random access memory, electrically erasable read-only memory, flash, fuse, and anti-fuse programmable connections. The programming of configuration elements could also be implemented through mask programming during fabrication of the device. While mask programming may have disadvantages relative to some of the field programmable options already listed, it may be useful in certain high volume applications. For purposes herein, the generic term “memory element” will be used to refer to any programmable element that may be configured to determine functions implemented by a PLD.
PLDs are commonly constructed using a lookup table (LUT) as the basic logic element. A typical LUT circuit used as a logic element provides an output signal that is a function of multiple input signals. For example, a K-input lookup table (K-LUT) typically includes 2K programmable memory elements, and a 2K to 1 multiplexer, selecting one of the storage elements under the control of the K select (control) inputs to the multiplexer. These K inputs can be considered to be the control inputs to a K-input logic function which can implement any particular required logic function by setting the contents of the memory elements to the appropriate values.
A typical LUT circuit may be represented as a plurality of memory elements coupled to a “tree” of muxes. A typical LUT mux tree includes a first level comprising a single 2:1 mux providing the LUT output and also includes successive additional levels of muxes, each level including twice as many muxes as the previous level and the number of memory elements being twice as many as the number of 2:1 muxes in a last mux level coupled to the memory elements.
Shannon decomposition is a well known technique for reducing the impact of critical path delay upon the speed of operation of a logic circuit. Shannon decomposition is stated as the mathematical theorem:
f(x0,x1, . . . )={overscore (x0)}·f(0,x1, . . . )|x0·f(1,x1, . . . )
For notational brevity, f(0,x1, . . . ) is denoted f{overscore (x0)} and f(1,x1, . . . ) is denoted fx0 and are respectively referred to as the {overscore (x0)} and x0 co-factors off.
One or more LUTs of one or more LEs may be programmed to serve as the first and second logic circuitry 202, 204 and multiplexer 206 that implement the Shannon decomposition of the function f in
Signal y output from first LUT 302 is used as input y0 to second LUT 300. Thus y and y0 refer to the same logic signal. Also, signal x is used as input x0 to first LUT 302 so x and x0 refer to the same logic signal. A signal will generally be referred to without the appended digit when used in the context of an output from a logic element, i.e. y is an output of an LE, but referred to with the appended digit when used as input to another logic element, i.e. y0 is an input to another logic element.
In the network 300 of
Thus, there is a need for improved LUT based circuits that can achieve Shannon decomposition. The present invention meets this need.
One aspect of the invention provides a first logic circuit with a plurality of logic elements. At least one of the logic elements includes first and second LUT blocks with respective first and second outputs. An output multiplexer is provided that includes first and second data inputs a data output and a control input. A control input multiplexer circuit provides a control input and first and second data inputs that can be configured to receive first and second data outputs provided by one or more other logic elements of the logic circuit. The control input multiplexer also includes a data output that can be connected to the control input of the output multiplexer. Multiple control inputs that can be shared by the first and second LUT blocks.
The first logic circuit can be programmed to efficiently implement a Shannon decomposition. More particularly in an associated method aspect of the invention, a critical path signal x can be provided to the control input of the output multiplexer. Respective x-co-factors of a control signal y can be provided as respective data inputs to the control input multiplexer circuit. Non-critical path dependent control signals can be provided to the multiple respective control inputs. The first and second LUT blocks can be programmed to provide respective y-co-factors of an output signal z in response to provision of the non-critical path control signals.
Another aspect of the invention provides a second logic circuit that includes first and second LUT blocks with first and second outputs. An output multiplexer is provided that includes first and second inputs and first and second outputs and a control input. A first interposed multiplexer is provided that can be coupled to receive a signal output by the respective first and second outputs of the first and second LUT blocks and that includes a first intermediate multiplexer output that can be coupled to the first input of the output multiplexer and that includes a control input; A second interposed multiplexer is provided that can be coupled to receive a signal output by the respective first and second outputs of the first and second LUT blocks and that includes a second intermediate multiplexer output that can be coupled to the second input of the output multiplexer and that includes a control input. Respective control inputs are provided that can be shared by the first and second LUT blocks.
The second logic circuit can be programmed to efficiently implement a Shannon decomposition. More particularly in another associated method aspect of the invention, a critical path signal x is provided to the control input of the output multiplexer. Respective x-co-factors of control signal y are provided to respective control inputs of the first and second interposed multiplexers. Respective non-critical path dependent control signals are provided to the respective control inputs. The first and second LUT blocks are programmed to provide respective y-co-factors of an output signal z on the respective first and second LUT block outputs in response to provision of the respective non-critical path control signals.
These and other features and advantages of the invention will be appreciated from the following detailed description of preferred embodiments in conjunction with the appended drawings.
The present invention provides a novel logic circuit and method of providing a Shannon decomposition. The following description is presented to enable any person skilled in the art to make and use the invention. The embodiments of the invention are described in the context of particular applications and their requirements. These descriptions of specific applications are provided only as examples. Various modifications to the preferred embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
Those skilled in the art will appreciate that a 4-LUT such as the 4-LUT 400 of
For example, the multiplexer 418 closest to the output 414 may be called a first level of multiplexers in the overall 2:1 multiplexer tree of the 4-LUT 400 and the next set of two multiplexers 416 may be called a second level in that tree. By extending the structure of
As will be appreciated by those skilled in the art, a 4:1 multiplexer may be implemented in a manner other than the illustrated multiplexer 406, which has a “tree” of three 2:1 multiplexers 418, 416 at two distinct levels. For example, a 4:1 multiplexer might be implemented by four pass gates with each of the pass gates being controlled by the decoded output of two control signals. In such an example, the four pass gates themselves would not be differentiated by levels relative to each other, however, the 4:1 multiplexer would effectively implement two levels of 2:1 multiplexing.
The logic circuit 500 includes a first circuit 502 that provides as outputs on lines 504, 506, x0 cofactors of y, yx0 and y{overscore (x0)}. The first logic circuit 502 may be implemented as an LE with LUT circuitry 508 that receives multiple inputs x1, x2, and x3 on lines 510 and that produces values yx0 and y{overscore (x0)} on lines 504, 506. The value y is a function f of (x0, x1, x2, x3). Output yx0 is the value of y if x0=1 (i.e., yx0=f(x0=1,x1,x2,x3)). Output y{overscore (x0)} is the value of y if x0=0, (i.e., y{overscore (x0)}=f(x0=0,x1,x2,x3)).
The logic circuit 500 also includes a second circuit 512 that provides as an output on line 514, the value of z. The second logic circuit is implemented as an LE with LUT circuitry 516 that includes a pair of LUTs indicated as 516-1 and first-level multiplexer 516-2. The LUTs 516-1 are connected to receive multiple control inputs (y1, y2, y3) on lines 518 and to provide as outputs, y0 cofactors of z, zy0 and z{overscore (y0)} on lines 520, 522. The value of z is a function g(y0,y1,y2,y3). Output zy0 is the value of z if y0=1 (i.e., zy0=g(y0=1,y1,y2,y3)). Output z{overscore (y0)} is the value of z if y0=0, (i.e., zy0=g(y0=0,y1,y2,y3). The second circuit includes a control signal selection multiplexer 524 connected to receive as data inputs the x0 cofactors of y, yx0 and y{overscore (x0)} on lines 504, 506, to receive value x0 as a control input on line 526 and to output a selected value for y as a control input to first-level multiplexer 516-2.
It will be understood that signal values yx0 and y{overscore (x0)} represent both x0 co-factors of a first critical path signal dependent signal y0. Moreover, signal values zy0 and z{overscore (y0)} represent both co-factors of a second critical path signal dependent signal z which in turn depends upon the value of critical path signal x0.
In one embodiment, LUT circuitry 508 and LUT circuitry 516 are implemented using respective 4-input LUTs. Basically, a 4-input LUT is implemented as a pair of 3-input LUTs controlled by common control inputs in combination with a 2:1 multiplexer to form a first-level multiplexer stage. Specifically, LUT block 516-1 includes a first 3-input LUT 517-1 and a second 3-input LUT 517-2 that share three non-critical path inputs (y1, y2, y3) on lines 518. The memory elements (not shown) of LUT block 516-1 are programmed so that the first 3-input LUT 517-1 provides value zy0 on line 520 in response to inputs (y1, y2, y3) and so that the second 3-input LUT 517-2 provides value z{overscore (y0)} on line 522 in response to inputs (y1, y2, y3). The first-level multiplexer 516-2 receives as its data inputs, the respective outputs of the first and second 3-input LUTs 517-1, 517-2. It will be appreciated that the number of non-critical path input values, whether shared or not, is not important to the invention, and that the invention can be practiced with fewer or more than three non-critical path input values.
Similarly, LUT circuitry 508 includes a first 3-input LUT 509-1 and a second 3-input LUT 509-2 that share three inputs 510. The memory elements (not shown) of LUT circuitry 508 are programmed so that the first 3-input LUT 509-1 provides value yx0 on line 504 in response to non-critical path inputs (x1, x2, x3); and so that the second 3-input LUT 509-2 provides value y{overscore (x0)} on line 506 in response to inputs (x1, x2, x3). A first-level multiplexer is present in the 4-input LUT circuitry 508, but it is not shown so as to simplify the drawing. Again, the number of non-critical path input values is not important to the invention.
Thus, in one embodiment, the logic circuit 500 effects a Shannon decomposition in which respective cofactor values yx0 and y{overscore (x0)} are pre-computed by respective 3-input LUTs 509-1, 509-2 of the first circuit 502. The value of y0 depends upon the value of critical path signal x0. Respective values of cofactors yx0 and y{overscore (x0)} are conducted to the second logic circuit 512, which computes values zy0 and z{overscore (y0)}. Respective values of cofactors zy0 and z{overscore (y0)} are computed by respective 3-input LUTs 517-1, 517-2 of the second circuit 512. The value of z depends upon the value of y0. The control signal selection multiplexer 524 of the second circuit 512 selects between values yx0 and y{overscore (x0)} based upon the value of x0, which is a critical path value. The first-level multiplexer 516-2 of the second circuit 512 selects between zy0 and z{overscore (y0)} based upon the value of y0.
The circuitry and Shannon decomposition method described with respect to
It will be appreciated that additional components, such as multiplex circuitry (not shown) may be provided to permit control inputs to be programmably connected so that they are not shared in a non-Shannon decomposition mode, for instance. For example, additional multiplex circuitry (not shown) may be included to permit the first and second LUT circuitry 508, 516 to be connected to one or more non-shared control signals.
Referring to
In the embodiment of
A first level multiplexer 704 produces an output value z on line 706. First and second intermediate multiplexers 708, 710 are interposed between LUT circuitry 516-1 and the first level multiplexer 704. More specifically, respective first data inputs 712, 714 of the first and second interposed multiplexers 708, 710 are connected to receive signal zy0 provided on line 520. Respective second data inputs 716, 718 of the first and second interposed multiplexers 708, 710 are connected to receive signal z{overscore (y0)} provided on line 522. An output line 720 of the first interposed multiplexer 708 is connected to a first data input line 722 of the first-level multiplexer 704. An output line 724 of the second interposed multiplexer 710 is connected to a second data input line 726 of the first-level multiplexer 704.
A control input 728 of the first interposed multiplexer 708 is connected to receive signal yx0. A control input 730 of the second interposed multiplexer 710 is connected to receive signal y{overscore (x0)}. A control input line 732 of the first-level multiplexer 704 is connected to receive signal x0.
Thus, interposed multiplexers 708 and 710 have identical data inputs, which are the y0 co-factors for z, z{overscore (y0)} and zy0 produced by multiplexer block 516-1. The control inputs to multiplexers 708 and 710 are the x0 co-factors of y, y{overscore (x0)} and yx0. Therefore, the multiplexers 708 and 710 produce x0 co-factors of z, z{overscore (x0)} and zx0.
The logic circuit 700 of
The interposed multiplexers 708, 710 are connected between a lower level multiplexer, i.e., first-level multiplexer 704 and first and second higher level multiplexers (not shown) within LUT circuitry 516-1. The interposed multiplexers 708, 710, in effect, constitute copies of a given stage of a LUT after which they are interposed. They have duplicate data inputs, and are controlled by both co-factors of y, y{overscore (x0)} and yx0. In other words, a first interposed multiplexer 708 receives a first copy of the intermediate outputs produced on lines 520, 522 by LUT circuitry 516-1, and a second interposed multiplexer 710 receives a second copy of the intermediate outputs produced on lines 520, 522 by LUT circuitry 516-1. This makes it possible to use different control inputs on the different interposed multiplexers 708, 710 to implement different logic functions on the copies of the inputs. Specifically, in this example, a first LUT tree comprising LUT circuitry 517-1 plus interposed multiplexer 708 receives control input yx0 on line 728 and produces on line 720 the value of zx0 as a function zx0=g(y0=yx0, y1,y2,y3). A second LUT tree comprising LUT circuitry 517-2 plus interposed multiplexer 710 y{overscore (x0)} on line 730 produces on line 724 the value of z{overscore (x0)} as a function z{overscore (x0)}=g(y0=y{overscore (x0)},y1,y2,y3).
Basically, the first interposed multiplexer 708 is used to produce on line 720, from a first copy of intermediate outputs produced by LUT circuitry 516-1, a pre-computed possible value of zx0 based upon an actual value of yx0, received on control line 728. Conversely, the second interposed multiplexer 710 is used to produce on line 724, from a second copy of the intermediate outputs produced by LUT circuitry 516-1, a pre-computed possible value of z{overscore (x0)} based upon an actual value of y{overscore (x0)} received on control line 730. The first-level multiplexer 704 selects between the values on lines 720 and 724 based upon the value of critical path signal x0. Thus, Shannon decomposition is used to compute values of zx0 and z{overscore (x0)} before an actual value of critical path signal x0 is received, thereby speeding overall operation of logic circuit 702.
In more general terms, a layer of interposed multiplexers 708, 710 are connected between a k-level multiplexer, i.e., first-level multiplexer 704 in the disclosed embodiment, and first and second k+1-level multiplexers (not shown) of LUT circuitry 517-1 and 517-2. The interposed multiplexers 708, 710 provide an additional duplicate level of multiplexers that have identical data input values and can have both cofactors of one input as control signals. Specifically, the interposed multiplexers 708, 710 receive identical data inputs and receive both y cofactors as inputs inputs yx0 and y{overscore (x0)}.
It will be appreciated that the logic circuit 700 may include additional components (not shown) that permit non-Shannon modes of operation. For example, additional programmable components may be provided to permit different connections among LUT block 516-1 and multiplexers 708, 710 and 704.
It be appreciated that one of the essential features of the Shannon decomposition is to provide both co-factors of some logic function, then to select between them. Therefore the SLM already provides much of the functionality required for a Shannon decomposition. The components of
The logic circuit 800B includes control inputs A, B, C1, C0, D1 and D0. The logic circuit 800B includes outputs OUT0, OUT1 and OUT2. During Shannon decomposition mode of operation, the interposed layer of multiplexer circuitry 806 is programmed to produce duplicates of intermediate outputs produced by the shared LUT 802 as data inputs to multiplexers 808, 810. More specifically, second level interposed multiplexers 812-1, 812-2, 814-1, 814-2 are connected to route copies of shared LUT circuitry 802 outputs to data inputs of first level interposed layer multiplexers 808, 810. First level multiplexer 804 is connected to receive as respective input signals, the respective output signals of the first level interposed multiplexers 808, 810.
More specifically, in the embodiment of
The interposed multiplexer circuit 806 of the embodiment of
During Shannon decomposition mode operation, first and second control signal multiplexers 820-1, 820-2 are configured to provide control inputs A and B to both the first shared LUT block 816 and the second shared LUT block 818. A third control signal multiplexer 822 is configured to provide on its output, control signal C0. Thus, control signal C0 is provided as an input to AND gate 824 and also is provided as an input to NOR gate 826.
An output of AND gate 824 is provided to the control inputs of second level interposed multiplexers 812-1 and 814-1. An output of OR gate 826 is provided to the control inputs of second level interposed multiplexers 812-2 and 814-2. These are required for operation as an SLM that can be configured as two smaller independent LUTs, as described above. Basically, the control inputs to second level interposed multiplexers 812-1, 814-1 and the control inputs of second level interposed multiplexers 812-2, 814-2 cause the respective first data inputs 808-1, 810-1 of the first level interposed multiplexers 808 and 810 to have one of the identical output signals of shared LUT circuitry 802 (either 816-1 or 818-1) and cause the respective second data inputs 808-2, 810-2 of the first level interposed multiplexers 808 and 810 to have the other of the identical output signals of shared LUT circuitry 802 (either 816-2 or 818-2).
During Shannon decomposition mode operation, it is assumed that signal C1 is a critical path signal. It is further assumed that D0 and D1 carry the two co-factors with respect to some signal C1. In order to harmonize the following description of the embodiment of
Thus, with this changed notation, the Shannon decomposition embodiment of
In more general terms logic circuit 800B is programmed or configured to operate with a layer of interposed multiplexer circuitry 806 is connected between a k-level multiplexer 804 and a k+1 level of multiplexers 802. The second level interposed multiplexers 812-1, 812-2, 814-1, 814-2 generate two copies of output values from the k+1 level multiplexers and distribute a copy to the data inputs of each of the two first level interposed multiplexers 808, 810. Therefore, the first level interposed multiplexers 808, 810 have identical input values.
Therefore, during Shannon decomposition mode operation, corresponding multiplexers within the second interposed level are connected to receive identical data signal inputs and are connected to receive identical control signal inputs. Multiplexers 812-1 and 812-2 are corresponding. Multiplexers 814-1 and 814-2 are corresponding. Consequently, second level interposed multiplexers 812-1, 814-1 provide the same data input signals to first level interposed multiplexer 808, that second level interposed multiplexers 812-2, 814-2 provide to interposed multiplexer 810 first level.
During Shannon decomposition mode operation, the respective first level interposed multiplexers 808, 810 receive cofactors of a critical path dependent signal as respective control inputs. In essence, the first level interposed multiplexers 808, 810 perform the same role that interposed multiplexers 708, 710 perform in the embodiment of
Viewed differently, the operation of the embodiment of
Persons skilled in the art will appreciate that logic circuit 800 is a versatile device that has non-Shannon modes of operation. Generally speaking, in one non-Shannon mode it can be configured to implement two functions f(A,B,C0,D0) and f(A,B,C1,D1) as OUT0 and OUT 1, respectively. Alternatively, in another non-Shannon mode, it may be configured to implement two distinct functions f(A,C0,D0) and g(B,C1,D1) as OUT0 and OUT1, respectively. These configurations of the logic circuit 800B form no part of the present invention and will be understood by reference to commonly assigned U.S. patent application Ser. No. 10/351,026, entitled Logic Circuitry with Shared Lookup Table, invented by Bruce Pedersen, filed Jan. 24, 2003, and commonly assigned U.S. patent application Ser. No. 10/364,310, entitled, Fracturable Lookup Table and Logic Element, invented by David Lewis, et al. filed Feb. 10, 2003, which are expressly incorporated herein by this reference.
The LE 900 embodiment of
The multiplexer M3 in
It will be understood that the foregoing description and drawings of preferred embodiment in accordance with the present invention are merely 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.
Number | Name | Date | Kind |
---|---|---|---|
4706216 | Carter | Nov 1987 | A |
4758985 | Carter | Jul 1988 | A |
5260610 | Pedersen et al. | Nov 1993 | A |
5331226 | Goetting | Jul 1994 | A |
5352940 | Watson | Oct 1994 | A |
5399922 | Kiani et al. | Mar 1995 | A |
5438295 | Reddy et al. | Aug 1995 | A |
5488316 | Freeman et al. | Jan 1996 | A |
5689195 | Cliff et al. | Nov 1997 | A |
5815003 | Pedersen | Sep 1998 | A |
5821773 | Norman et al. | Oct 1998 | A |
5831448 | Kean | Nov 1998 | A |
5835998 | Pedersen | Nov 1998 | A |
5920202 | Young et al. | Jul 1999 | A |
5923185 | Zhou | Jul 1999 | A |
5953537 | Balicki et al. | Sep 1999 | A |
5999015 | Cliff et al. | Dec 1999 | A |
5999016 | McClintock et al. | Dec 1999 | A |
6020756 | New | Feb 2000 | A |
6034540 | Mendel | Mar 2000 | A |
6051992 | Young et al. | Apr 2000 | A |
6066960 | Pedersen | May 2000 | A |
6069487 | Lane et al. | May 2000 | A |
6084427 | Lee et al. | Jul 2000 | A |
6107822 | Mendel et al. | Aug 2000 | A |
6118300 | Wittig et al. | Sep 2000 | A |
6122720 | Cliff | Sep 2000 | A |
6124731 | Young et al. | Sep 2000 | A |
6167558 | Trimberger | Dec 2000 | A |
6184707 | Norman et al. | Feb 2001 | B1 |
6191610 | Wittig et al. | Feb 2001 | B1 |
6201410 | New et al. | Mar 2001 | B1 |
6211696 | Skahill et al. | Apr 2001 | B1 |
6249149 | Pedersen | Jun 2001 | B1 |
6255846 | Lee et al. | Jul 2001 | B1 |
6271680 | Mendel et al. | Aug 2001 | B1 |
6275065 | Mendel | Aug 2001 | B1 |
6323677 | Lane et al. | Nov 2001 | B1 |
6323680 | Pedersen et al. | Nov 2001 | B1 |
6323682 | Bauer et al. | Nov 2001 | B1 |
6362648 | New et al. | Mar 2002 | B1 |
6400180 | Wittig et al. | Jun 2002 | B1 |