US 6753696 B1 Abstract A programmable optimized-distribution logic allocator enhances the speed, silicon utilization, logic efficiency, logic utilization, and scalability of very high-density CPLDs including the logic allocator. The programmable optimized-distribution logic allocator provides an optimized number of product terms to each I/O pin of the CPLDS and the same uniform number of product terms as feedback. However, no product terms are permanently connected to either a particular macrocell or a particular I/O pin. The programmable optimized-distribution logic allocator includes a multiplicity of router elements where each router element steers a sum of a selected number of sum-of-product terms from a PAL structure, i.e, a selected number of logic product-term clusters, to a programmably selected logic macrocell. Specifically, the programmable optimized-distribution logic allocator has a plurality of input lines, a plurality of output lines and a plurality of programmable router elements. Each programmable router element has an input terminal connected an input line in the plurality of input lines and an output terminal connected to an output line in the plurality of output lines.
Claims(13) 1. In a high-density complex programmable logic device (CPLD), a programmable logic allocator comprising:
a plurality of input lines;
a plurality of output lines; and
a plurality of programmable router elements, each router element programmable to couple an output line to at least five input lines,
wherein a programmable router element comprises:
a demultiplexer having an input terminal and a plurality of output terminals, the input terminal coupled to a logic allocator input line; and
a logic gate having a plurality of input terminals and an output terminal, one of the input terminals coupled to an output terminal of the demultiplexer and the output terminal coupled to a logic allocator output line.
2. The programmable logic allocator of
3. The programmable logic allocator of
4. The programmable logic allocator of
5. The programmable logic allocator of
6. A high-density complex programmable logic device (CPLD) comprising:
an array of programmable logic operable to generate product terms, the array comprising at least one of a programmable-AND plane and a fixed-OR plane and a programmable-AND plane and a programmable-OR plane; and
a programmable logic allocator having a plurality of input lines and a plurality of output lines, the logic allocator coupled through its input lines to the array of programmable logic to receive product terms therefrom, the logic allocator programmable to provide each of its output lines with access to at least twenty product terms.
7. The CPLD of
8. The CPLD of
9. The CPLD of
10. A programmable logic device comprising:
a switch matrix; and
a plurality of programmable logic blocks coupled to the switch matrix, each block including a programmable logic array, a plurality of logic macrocells, and a programmable logic allocator coupled between the programmable logic array and logic macrocells,
wherein the programmable logic allocator is programmable to provide each logic macrocell with access to at least twenty product terms from the programmable logic block.
11. The programmable logic device of
12. The programmable logic device of
13. The programmable logic device of
a demultiplexer having an input terminal and a plurality of output terminals, the input terminal coupled to a logic allocator input line; and
a logic gate having a plurality of input terminals and an output terminal, one of the input terminals coupled to an output terminal of the demultiplexer and the output terminal coupled to a logic allocator output line.
Description This is a continuation of Application Ser. No. 08/459,570, filed Jun. 2, 1995, now U.S. Pat. No. 6,531,890. This invention relates generally to programmable logic block cell structures and in particular to an optimized programmable logic allocator in a very high-density complex programmable logic device (CPLD) that provides enhanced logic utilization and enhanced logic efficiency. Programmable logic device (PLD) designers have consistently sought to maximize logic efficiency for a fixed amount of logic resources. One measure of logic efficiency in a programmable logic device is the number of product terms available per input/output (I/O) pin and the number of product terms at each node, usually a macrocell output line, that can be fedback to a programmable array in the PLD. Typically, in a programmable logic device, the product terms are not connected directly to an I/O pin but rather reach the I/O pin through a macrocell and perhaps other logic. Nevertheless, in each PLD, a specific number of product terms can be associated with each input/output pin. Similarly, a specific number of product terms can be associated with the output line of the macrocell or other logic. Historically, low-density PLDs encompass monolithic block based structures in 20- to 28-pin packages with a density ranging from eight to sixteen macrocells. The architecture of a typical low-density PLD includes a programmable array logic (PAL) (PAL is a registered U.S. trademark of Advanced Micro Devices of Sunnyvale, Calif.), or a field programmable logic array (FPLA) with an integrated array of logic, I/O macrocells, and I/O pins. Fundamentally, a simple PAL architecture incorporates a two-level logic array that has a programmable-AND plane, that consists of multiple product terms, and a fixed-OR plane. FPLA devices have both a programmable-AND plane and a programmable-OR plane. Typically, any logic function can be implemented in a low-density PAL device as long as the design requirements do not exceed the number of input signals, output signals, the logic product terms, and other logic functions, such as registers, clocks, polarity control etc., that are available in the PAL device. The low-density PAL device is a simple structure and has the advantage of higher speed in comparison to a FPLA. In the low-density PAL device, a fixed and equal amount of logic, i.e., number of product terms, was associated with each output pin. Seven or eight product terms per each output pin was typical for first and second generation bipolar and CMOS PAL devices such as 16xx, 20xx, 16V8 and 20V8. One example of a low-density PAL device is shown in Birkner et al., U.S. Pat. No. 4,124,899 entitled “Programmable Array Logic Circuit” and issued on Nov. 7, 1978, which is incorporated herein by reference in its entirety. These low-density PAL devices had a fully committed structure which means that all of the internal elements and fixed logic allocation structure are closely coupled. The closely coupled structure, e.g., a PAL structure with a fixed product-term distribution, has several advantages including regularity or symmetry; a simple structure; a known amount of logic with each output pin; and ease of design changes. While a PAL structure with a fixed product-term distribution had the above advantages, a fixed allocation of product terms had some major disadvantages. Since the number of product terms in the low-density PAL devices for each output pin was fixed and not steerable or sharable between adjacent output pins, the product terms associated with a particular output pin were wasted if that output pin was not utilized. Thus, the silicon efficiency was low. Another major disadvantage of a fixed product-term distribution per output pin was that an optimal allocation of logic resources was not possible in most cases. Different logic applications seldom need the same and equal number of product terms for all output pins. There are many occasions when seven to eight product terms per output pin are not enough to handle complex logic functions, especially for complex state machines. Applications requiring only one more product-term than the fixed number of product terms for only one output pin cannot be implemented in a low-density PAL device. Experience has shown that for a broad range of applications, eight product terms per output pin are on average more than enough. However, as for any average, eight product terms are insufficient in some cases. For example, FIG. 2 in Munoz et. al., “Automatic Partitioning of Programmable Logic devices,” One way to achieve increased product-term utilization over the fixed product-term distribution in low-density PAL devices is to provide a PLD with a fixed, variable product-term distribution per output pin. The concept behind the fixed, variable product-term distribution was to have a judicious allocation of logic resources and to allocate product terms in a variable but fixed distribution fashion such that some OR gates are driven by a few product terms, e.g., four or eight, and other OR gates are driven by a relatively large number of product terms, e.g., twelve or sixteen. One of the first PAL devices to introduce a variable product-term distribution was sold by Advanced Micro Devices (AMD) of Sunnyvale, Calif. under Model No. PAL22V10. The number of product terms per I/O pin in the PAL22V10 architecture was 8, 10, 12, 14, 16, 16, 12, 14, 12, 10, and 8. This fixed, variable, static distribution of product terms enhanced the PAL device's logic utilization by allowing use of the PAL device in a broader range of applications. Various PLDs that have incorporated the a fixed, variable, static distribution of product terms include PLDs sold by AMD under Model Nos. PALCE22V10 and PALCE29M16/29MA16. U.S. Pat. No. 4,717,912 issued to Harvey et. al., in January 1988, which is incorporated herein by reference in its entirety, illustrates a PLD with a fixed, variable product-term distribution. While the fixed, variable distribution of product terms also results in a potentially better allocation of resources thereby enhancing product-term utilization over a comparable PLD with a fixed allocation of product terms, the fixed, variable distribution of product terms also results in a potentially inefficient silicon structure. Specifically, this product-term distribution increases the average number of product terms per output pin over the low-density PAL structures. The increase in the average number of product terms results in a bigger die size, potentially slower speed, and a greater likelihood of wasted resources. The fixed, variable distribution of product terms restricts only a limited number of output macrocells and output pins to the largest amount of logic, and system designers have to pre-assign logic functions that require larger logic resources to only those particular output pins. Also, since the product-term distribution is fixed, output pins with a smaller number of product terms do not have access to unused product-term resources from other macrocells. This results in potential waste of internal resources. Extension of the fixed, variable product-term distribution to higher density devices with more output pins and macrocells would result in significantly larger, more expensive and slower devices. The fixed, variable product-term distribution increases the complexity of the logic fitting software task because each user logic function must be examined and then, depending upon the demand for product-term resources, assigned to a specific output macrocell which has the minimum product terms needed to fulfill the required product-term demand. This software complexity becomes significantly worse for multiple interconnected programmable logic blocks that each have a fixed, variable product-term distribution. The programmable logic devices disclosed in U.S. Pat. No. 5,015,884 entitled “Multiple Array High Performance Programmable Logic Device Family” of Om P. Agrawal et al. issued on May 14, 1991, and in U.S. Pat. No. 5,225,719 entitled “Family of Multiple Segmented Programmable Logic Blocks Interconnected by a High Speed Centralized Switch Matrix” of Om P. Agrawal et al. issued on Jul. 6, 1993, both of which are incorporated herein by reference in their entirety, eliminated the fixed connectivity of product terms to a macrocell and consequently an output pin. A programmable logic allocator In FIG. 1, boxes L On the right-hand side of FIG. 1 are sixteen boxes R Logic allocator Logic allocator Alternatively, additional product-term resources could have been used to simulate complete wrap-around. However, this results in a larger die size. While logic allocator The operation of logic allocator To illustrate the limitations of logic allocator Logic allocator If there is a need for increased flexibility, only certain combination of macrocells R If it is necessary for two adjacent pins to have eight product terms and to utilize all thirty-two product terms, only certain macrocells can be utilized. FIGS. 2C to FIGS. 2G and 2I illustrate some possible configurations with twelve product terms. It is not possible to have two adjacent macrocells with twelve product terms. To utilize all thirty-two product terms, and have sixteen product terms at the output pins, only output pins In the next generation of programmable logic devices as disclosed in the copending and commonly assigned U.S. patent application, Ser. No. 07/924,685, entitled “Architecture Of A Multiple Array High Density Programmable Logic Device With A Plurality of Programmable Switch Matrices”, of Om P. Agrawal et al., filed on Aug. 3, 1992, which is incorporated herein by reference in its entirety, additional logic allocation resources were provided and the number of product terms deepened. Specifically, the output terminal of each router element in logic allocator The operation of logic allocator Again, no product-term resources were permanently allocated to a specific logic macrocell or to a specific I/O pin by logic allocator In FIG. 3, output switch matrix bank Specifically, logic allocator However, output switch matrix bank Output switch matrix However, while this eased the design change problem, the basic non-uniform product-term distribution remained. Output switch matrix Output switch matrix While the logic allocators in FIGS. 1 and 3 are a great improvement over the fixed, variable distribution PLDs, a new logic allocation method and structure are needed that provides logic efficiency with a minimum number of fixed resources for very high-density PLDs. Preferably, the new structure would minimize the speed delays and would not require too much silicon area. A programmable optimized-distribution logic allocator of this invention overcomes the shortcomings of the prior art logic allocators and enhances the speed, silicon utilization, logic efficiency, logic utilization, and scalability of very high-density complex PLDs that uses the new logic allocator. The programmable optimized-distribution logic allocator provides programmable access to the same optimized-distribution of product terms to each I/O pin of the PLD and to each macrocell in the PLD. Thus, the product-term feedback from an I/O pin and the associated macrocell are the same. However, no product terms are permanently connected to either a particular macrocell or a particular I/O pin. According to the principles of this invention, each logic macrocell in the programmable logic block has programmable access to at least twenty product terms, i.e., the product-term allocation for the twenty product terms is uniform, symmetric, and variable. In one embodiment, the number of product terms that can be programmably steered by the programmable optimized-distribution logic allocator, i.e, the number of product terms available, to a logic macrocell and consequently an I/O pin ranges from zero to one-half of the total number of product terms dedicated to logic in a programmable logic block for a set of the I/O pins. The uniform and variable logic product-term cluster distribution of the programmable optimized-distribution logic allocator with a uniform twenty product terms programmably available to each macrocell provides several major benefits. First, the need for “wrap-around” at the boundaries of the programmable logic array for better product-term allocation has been obviated. Second, the need for an output switch matrix between the logic macrocells and the I/O cells also has been obviated. Third, up to thirty-two product terms are available without feedback, i.e., the a greater logic depth is available in a single pass through the PLD. The programmable optimized-distribution logic allocator achieves the flexibility of optimal routability of logic product-term clusters to I/O pins which allows retaining a prior pin-out while changing a logic design. In addition, the twenty logic product terms can be routed to a particular logic macrocell without any additional speed penalty. This number of product terms is typically sufficient to allow complete shuffling of the logic mapped on the PLD with the ability to retain prior pin-outs and removes any dependencies of product-term clusters between adjacent macrocells. In one application, the programmable optimized-distribution logic allocator includes a multiplicity of router elements where each router element steers a sum of a selected number of sum-of-product terms from a PAL structure, i.e, a selected number of logic product-term clusters, to a programmably selected logic macrocell. Specifically, the programmable optimized-distribution logic allocator has a plurality of input lines, a plurality of output lines and a plurality of programmable router elements. Each programmable router element has an output terminal connected to an output line in the plurality of logic allocator output lines. Also, each programmable router element output terminal is programmably couplable to and decouplable from at least five of the programmable logic allocator input lines-so that each output line has access to all input signals on at least five input lines in the plurality of logic allocator input lines. Upon coupling a logic allocator input line to a router element output terminal, the input line is decoupled from all other router element output terminals in the logic allocator. In this embodiment, each programmable router element includes a programmable demultiplexer having an input terminal connected to an input line in the plurality of logic allocator input lines, and a plurality of output terminals. The input terminal is programmably connectable to and disconnectable from the plurality of output terminals, and upon programmably connecting the input terminal to one of the plurality of output terminals, the input terminal is disconnected from all other output terminals in the plurality of output terminals The programmable router element also includes a logic gate having a plurality of input terminals, and an output terminal. Each logic gate input terminal is connected to an output terminal of a different programmable demultiplexer. In one embodiment, the programmable router element further includes an exclusive-OR gate having an input terminal connected to the output terminal of the logic gate, and an output terminal connected to one of the plurality of logic allocator output lines. Thus, according to the principles of this invention, a method for distributing product terms from a programmable array in a very high-density PLD to logic in the very high-density PLD includes: (i) coupling each product-term cluster in a plurality of product-term clusters to a different input line of a programmable logic allocator; and (ii) configuring the logic allocator, i.e., programmably coupling the input lines to the output lines of the logic allocator, so that each output line of the logic allocator has programmable access to a first predetermined number of product-term clusters in the plurality of product-term clusters where the first predetermined number of, product-term clusters includes at least twenty product terms. The input lines are programmably coupled to the output lines so that upon programmably coupling a product-term cluster to an output line of the logic allocator, the coupled product-term cluster is decoupled from all remaining output lines of the logic allocator. Further, configuration of the logic allocator also includes configuring the logic allocator so that a set of the output lines of the logic allocator has programmable access to both the first predetermined number of product-term clusters and a second predetermined number of product-term clusters in the plurality of product-term clusters. The sum of the product terms in the first and second predetermined numbers of product-term clusters is in the range of from twenty product terms to one-half of the product terms in the plurality of product-term clusters. In one embodiment, one-half of the product terms in the plurality of product-term clusters is thirty-two product terms. The programmable optimized-distribution logic allocator includes a plurality of N input lines where N is an integer, a plurality of N output lines where N is an integer, and a multiplicity of programmable router elements. The multiplicity of programmable router elements includes a first plurality of programmable router elements where each router element in the first plurality of programmable router elements is connected to a different output line in the plurality of N output lines. Also, each output terminal of each router element in the first plurality of programmable router elements is programmably couplable to and decouplable from at least M input lines in the plurality of N input lines so that each output line connected to one of the router elements in the first plurality of programmable router elements has programmable access to all input signals on M input lines in the plurality of N input lines where M is an integer. The multiplicity of programmable router elements includes also a second plurality of programmable router elements. Each router element in the second plurality of programmable router elements is connected to a different output line in the plurality of N output lines. The output lines connected to the router elements in the second plurality are also different from the output lines connected to the router elements in the first plurality. The output terminal of each router element in the second plurality of programmable router elements is programmably connectable to and disconnectable from at least (M−n) logic allocator input lines so that each output terminal of the router elements in the second plurality of programmable router elements has programmable access to all input signals on (M−n) input lines in the plurality of N input lines where the n is an integer in a range from 1 to 3 and M is selected so that when n is three, (M−n) is at least five. In one embodiment, N is sixteen and M is eight. Thus, the programmable optimized-distribution logic allocator has a plurality of N input lines where N is an integer, a plurality of N output lines, and a plurality of programmable router elements with each programmable router element having an output terminal connected to an output line in said plurality of N output lines. Each programmable router element output terminal is programmably couplable to and decouplable from at least five programmable logic allocator input lines so that each logic allocator output line has programmable access to all input signals on a minimum of five input lines in said plurality of N input lines. FIG. 1 is a representation of a first-generation PLD that included a logic allocator. FIG. 2A is a representation of the first-generation PLD with a logic allocator for a logic block including eight macrocells. FIGS. 2B to FIG. 3 is a representation of a second generation PLD that included a logic allocator. FIG. 4 is a block diagram of a first programmable logic device that includes the programmable optimized-distribution logic allocator of this invention. FIG. 5 is a more detailed block diagram that illustrates one embodiment of the configuration of the programmable router elements within the programmable optimized-distribution logic allocator. FIG. 6A is a representation of a first embodiment of typical router element in the various embodiments of the programmable optimized-distribution logic allocator of this invention. FIG. 6B is a representation of a second embodiment of typical router element in the various embodiments of the programmable optimized-distribution logic allocator of this invention. FIG. 6C is a representation of a third embodiment of typical router element in the various embodiments of the programmable optimized-distribution logic allocator of this invention. FIG. 6D is a more detailed diagram of the programmable connector of FIG. FIG. 7 is a block diagram of a second programmable logic device that includes the programmable optimized-distribution logic allocator of this invention. FIG. 8 is a more detailed block diagram that illustrates another embodiment of the configuration of the programmable router elements within the programmable optimized-distribution logic allocator. Unlike prior art logic allocators that either had shared input signals, had non-uniform distribution of output signals with a maximum of sixteen or less product terms per I/O pin, or had non-uniform distribution of output signals with a maximum of twenty or less product terms per I/O pin and were used with an output switch matrix, a programmable optimized-distribution logic allocator of this invention maintains the speed and isolation advantages of the prior art logic allocators while improving logic flexibility and efficiency, and minimizing the problems associated with retaining pin-outs for logic changes, time delays, and silicon die size. In one embodiment, as explained more completely below, a programmable optimized-distribution logic allocator can be programmably configured to provide a minimum of twenty product terms to each output terminal of the logic allocator. Further, selected output terminals have a greater product-term depth so that only a single pass through the PLD is required for logic applications requiring the greater product-term depth. Thus, the programmable optimized-distribution logic allocator of this invention provides a symmetric, uniform, and variable distribution of at least twenty product terms to all output terminals as well as a greater product-term depth to a multiplicity of the output terminals, i.e., a set of the output terminals. Here, the symmetric, uniform, and variable distribution refers to the distribution of product terms that can be programmably coupled to and decoupled from an output line of the logic allocator. FIG. 4 is a detailed block diagram of one embodiment of a CPLD architecture that includes programmable optimized-distribution logic allocator Block switch matrix Programmable logic blocks within a segment communicate with each other through the segment switch matrix. Thus, in FIG. 4, segment switch matrix Segments within CPLD The particular configuration of the hierarchical switch matrix is not of importance to this invention. Programmable optimized-distribution logic allocator Programmable logic block In one embodiment, programmable logic array Programmable logic block input lines Each cluster of four product terms drives one OR gate in the fixed-OR gate array of PAL structure Programmable optimized-distribution logic allocator Specifically, as described more completely below, programmable optimized-distribution logic allocator Programmable optimized-distribution logic allocator According to the principles of this invention, the feedback signal from each logic macrocell and each I/O pin has programmable access to the same uniform number of product terms, i.e., twenty product terms. In the prior art, PLD with logic allocator Programmable optimized-distribution logic allocator Hence, unlike the prior art PLDs that required a logic allocator and an output switch matrix to create a symmetric appearance at the I/O pins, programmable optimized-distribution logic allocator The uniform and variable logic product-term cluster distribution of programmable optimized-distribution logic allocator The number of product-term clusters per router element may be selected in numerous ways. In this embodiment, the selected number of product terms per cluster is preferably three or four and there is one router element in programmable optimized-distribution logic allocator In one embodiment, the number of product terms available to a logic macrocell and consequently an I/O pin from the router element ranges from zero to one-half of the total number of product terms dedicated to logic in programmable logic block One embodiment of programmable optimized-distribution logic allocator Each horizontal line A programmable router element within logic allocator Each output line of router elements Each output line of router elements Each output line of router elements Programmable optimized-distribution logic allocator FIG. 6A is a schematic of a typical router element Logic allocator input line Each output terminal of programmable demultiplexer A signal on input line As described above, OR gate Router elements Unlike prior art logic allocators that also included a demultiplexer and a logic gate, each programmable router element In this embodiment, the total number of product terms programmably available to each logic macrocell in the programmable logic block is the same, i.e., the product-term allocation is symmetric, uniform and variable for twenty product terms and symmetric and variable for twenty to thirty-two product terms. However, no product-term clusters are permanently connected to an output line of programmable optimized-distribution logic allocator Thus, the major benefits of programmable optimized-distribution logic allocator FIG. 6B is a schematic of a typical router element The interconnections between logic allocator input line Again, router elements Logic allocator In addition, since each product-term cluster Further, the three-plus-one product-term steering with built-in XOR gate In yet another embodiment, router element CPLD FIG. 8 is a diagram of logic allocator The embodiments described above of the programmable optimized-distribution logic allocator of this invention are illustrative of the principles of this invention and are not intended to limit the invention to the particular embodiments described. In one embodiment, the logic allocators of this invention are implemented using a 0.5 micron, three-metal layer electrically erasable CMOS technology. In another embodiment, the logic allocators of this invention are implemented using a 0.65 micron, two-metal layer electrically erasable CMOS technology. In view of this disclosure, those skilled in the art can implement the programmable optimized-distribution logic allocator in a wide variety of ways and in a wide variety of CPLDs. Patent Citations
Classifications
Legal Events
Rotate |