Programming process for 3-level programming logic devices
First Claim
1. A process of programming a programmable logic device for carrying out a specified logic function, the programmable logic device to be programmed being of a type having multiple logic blocks, each logic block of said programmable logic device having input lines, output lines and successive configurable first and second arrays between said input lines and output lines for carrying out first and second levels of logic, said programmable logic device also having input pins, output pins and means, programmably combining selected output lines of said logic blocks, for carrying out a third level of logic, input lines to said logic blocks coupling to selected input pines of said programmable logic device and output lines from said means for carrying out the third level of logic coupling to selected output pins of said programmable logic device, the programming process comprising:
- factoring a specified multiple output logic function into multiple factors using apparatus other than the programmable logic device that has been provided to be programmed, each factor being in sum-of-products form, wherein said factoring of said logic function includes replacing at least one pair of existing product terms of said logic function, with a corresponding "supercube" product term whose input terms consist only of those input terms which are present in both product terms of the replaced pair and whose output terms consist of those output terms which are present in either product term of the replaced pair and whose output terms consist of those output terms which are present in either product term of the replaced pair wherein plural sets of factors are determined for said logic function, each set of factors having a certain number of product terms, one particular set of factors that is found upon comparison with the other sets of factors that is found upon comparison with the other sets of factors to have a fewest number of product terms being a selected set for loading into said programmable logic device,loading each factor of the selected set of factors of said logic function into a logic block of said programmable logic device, the entire set of factors being loaded into a plurality of said logic blocks, wherein loading a factor includes configuring the first array for carrying out said first level of logic such that product terms corresponding to said factor are produced by said first array from signals on said input lines and configuring the second array for carrying out said second level of logic such that said product terms are combined to produce said factor at said output liens, andconfiguring said means for carrying out said third level of logic such that outputs from said logic blocks representing said factors are combined to produce said logic function at said output pins.
0 Assignments
0 Petitions
Accused Products
Abstract
A process of programming a programmable logic device (PLD) to carry out a specified logic function. The PLD contains three levels of logic implemented as a plurality of functional blocks, each with AND and OR planes, and a programmable interconnect matrix or logic expander carrying out AND logic. After providing such a PLD with specified size constraints and after specifying a logic function, the function is split or factored into subfunctions or factors. A Boolean factorization procedure chooses factors by replacing pairs of product terms in the first factor with their supercube and minimizing the number input terms and product terms required. Subfunctions or factors which are too large can be simplified by combining pairs of inputs in the interconnect matrix. The product terms of a subfunction or factor can be ordered according to the number of input terms they have and assigned to the functional blocks one at a time. Functional blocks which use many inputs or product terms per output can have some of their assigned subfunctions split so as to pack the PLD more densely. Split subfunctions or factors are recombined in the interconnect matrix. After assigning terms to functional blocks and the matrix, they are loaded into the PLD using a device programmer to configure the logic arrays in the PLD.
-
Citations
24 Claims
-
1. A process of programming a programmable logic device for carrying out a specified logic function, the programmable logic device to be programmed being of a type having multiple logic blocks, each logic block of said programmable logic device having input lines, output lines and successive configurable first and second arrays between said input lines and output lines for carrying out first and second levels of logic, said programmable logic device also having input pins, output pins and means, programmably combining selected output lines of said logic blocks, for carrying out a third level of logic, input lines to said logic blocks coupling to selected input pines of said programmable logic device and output lines from said means for carrying out the third level of logic coupling to selected output pins of said programmable logic device, the programming process comprising:
-
factoring a specified multiple output logic function into multiple factors using apparatus other than the programmable logic device that has been provided to be programmed, each factor being in sum-of-products form, wherein said factoring of said logic function includes replacing at least one pair of existing product terms of said logic function, with a corresponding "supercube" product term whose input terms consist only of those input terms which are present in both product terms of the replaced pair and whose output terms consist of those output terms which are present in either product term of the replaced pair and whose output terms consist of those output terms which are present in either product term of the replaced pair wherein plural sets of factors are determined for said logic function, each set of factors having a certain number of product terms, one particular set of factors that is found upon comparison with the other sets of factors that is found upon comparison with the other sets of factors to have a fewest number of product terms being a selected set for loading into said programmable logic device, loading each factor of the selected set of factors of said logic function into a logic block of said programmable logic device, the entire set of factors being loaded into a plurality of said logic blocks, wherein loading a factor includes configuring the first array for carrying out said first level of logic such that product terms corresponding to said factor are produced by said first array from signals on said input lines and configuring the second array for carrying out said second level of logic such that said product terms are combined to produce said factor at said output liens, and configuring said means for carrying out said third level of logic such that outputs from said logic blocks representing said factors are combined to produce said logic function at said output pins. - View Dependent Claims (2, 3)
-
-
4. A process of programming a programmable logic device for carrying out a specified logic function, the programmable logic device to be programmed being of a type having multiple functional blocks, each functional block of said programmable logic device having a number of input lines, output lines and successive configurable first and second arrays between said input lines and output lines for carrying out first and second levels of logic, said programmable logic device also having input pins, output pins and a programmable interconnect matrix connected to said inputs and outputs of said functional blocks and to said input pins and output pins of said programmable logic device, said programmable interconnect matrix being configurable by means of programming so as to connect selected input pins of said programmable logic device to selected input lines of said functional blocks and to connect selected output lines of said functional blocks to selected output pins of said programmable logic device for carrying out a third level of logic, the programming process comprising:
-
assigning subfunctions of a specified logic function to be programmed into said programmable logic device to particular functional blocks using apparatus other than the programmable logic device that has been provided to be programmed, said logic function being representable as a plurality of subfunctions in sum-of-products form, each subfunction having a set of product terms with a certain number of input terms, selecting input terms to be logically combined in said programmable interconnect matrix whenever the number of input terms required by the subfunctions assigned to a particular functional block exceed the number of input lines to that functional block, the selected input terms being those input terms which are combined to form product terms of the assigned subfunctions, loading said assigned subfunctions into said particular functional blocks by configuring the first array of each functional block to carry out said first level of logic such that product terms corresponding to said subfunctions are produced by said first arrays from signals on said input lines and by configuring the second array of each functional block to carry out said second level of logic such that said product terms produced by said first arrays are combined in said second arrays to produce said subfunctions at said output lines, and configuring said programmable interconnect matrix for carrying out said third level of logic such that input terms received from said selected input pins are logically combined in said programmable interconnect matrix to produce combined input terms connected to said selected input liens of assigned functional blocks and such that outputs from said functional blocks representing said subfunctions are logically combined in said programmable interconnect matrix to produce said logic function on said output pins. - View Dependent Claims (5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A process of programming a programmable logic device for carrying out a specified logic function, the programmable logic device to be programmed being of a type having multiple functional blocks, each functional block having input lines, output lines and successive configurable first and second arrays between said input lines and output lines for carrying out first and second levels of logic, said programmable logic device also having input pins, output pins and a programmable interconnect matrix connected to said inputs and outputs of said functional blocks and to said input pins and output pins of said programmable logic device, said programmable interconnect matrix being configurable by means of programming so as to connect selected input pins of said programmable logic device to selected input lines of said functional blocks and to connect selected output lines of said functional blocks to selected output pins of said programmable logic device for carrying out a third level of logic, the programming process comprising:
-
assigning subfunctions of a specified logic function to be programmed into said programmable logic device to particular functional blocks using apparatus other than the programmable logic device that has been provided to be programmed, said specified logic function being a multiple output function representable as a plurality of single output subfunctions in sum-of-products form, each subfunction having a set of product terms, the assigning of said subfunctions to particular functional blocks being carried out such that wherever a large subfunction exceeds a size limit of a functional block the assigning of said subfunctions splits said large subfunctional into a plurality of smaller subfunctions and assigns said smaller subfunctions to at least two separate functional blocks, loading said assigned subfunctions into said particular functional blocks by configuring the first array of each functional block to carry out said first level of logic such that product terms corresponding to said subfunctions are produced by said first arrays from signals on said input lines and by configuring the second array of each functional block to carry out said second level of logic such that said product terms produced by said first arrays are combined in said second arrays to produce said subfunctions at said output lines, and configuring said programmable interconnect matrix for carrying out said third level of logic such that said outputs from said functional blocks representing said subfunctions are logically combined in said programmable interconnect matrix to produce said logic function on said output pins. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22)
-
-
23. A process of programming a programmable logic device for carrying out a specified logic function, the programmable logic device to be programmed being of a type having multiple functional blocks, each functional block having input lines, output lines and successive configurable first and second arrays between said input lines and output lines for carrying out first and second levels of logic, said programmable logic device also having input pins, output pins and a programmable interconnect matrix connected to said input lines and output lines of said functional blocks and to said input pins and output pins of said programmable logic device, said programmable interconnect matrix being configurable by means of programming so as to connect selected input pins of said programmable logic device to selected input lines of said functional blocks and to connect selected output lines of said functional blocks to selected output pins of said programmable logic device for carrying out a third level of logic, said programming process comprising:
-
assigning subfunctions of a specified logic function to be programmed into said programmable logic device to particular functional blocks using apparatus other than the programmable logic device that has been provided to be programmed, said specified logic function being a multiple output function representable as a plurality of single output subfunctions in sum-of-products form, each subfunction having a set of product terms, the assigning of said subfunctions to particular functional blocks being carried out such that wherever any functional block is initially assigned a set of one or more subfunctions such that a density measure of output lines used by the assigned subfunctions is less than a predetermined threshold, the assigning further includes splitting the subfunctions assigned to that functional block so as to use more output cells, loading said assigned subfunctions into said particular functional blocks by configuring the first array of each functional block to carry out said first level of logic such that product terms corresponding to said subfunctions are produced by said first arrays from signals on said input lines and by configuring the second array of each functional block to carry out said second level of logic such that product terms produced by said first arrays are combined in said second arrays to produce said subfunctions at said output lines, and configuring said programmable interconnect matrix for carrying out said third level of logic such that said outputs from said functional blocks representing said subfunctions are logically combined in said programmable interconnect matrix to produce said logic function on said output pins. - View Dependent Claims (24)
-
Specification