Table module compiler equivalent to ROM
AssigneeLSI Logic Corporation
InventorsAlexander E. Andreev, Ranko Scepanovic
Life of this patent
Estimating the term…
Abstract
A method of constructing a circuit for a Boolean function includes receiving as input a Boolean function of a number n of input variables wherein the number n of input variables may be varied over a range; generating at least two intermediate functions comprising sub-functions of the Boolean function wherein zero or one is substituted for all but two of the number n of input variables; and generating a selected output of the Boolean function of the number n of input variables from only two of the intermediate functions.
Claims14
A method of constructing a circuit for a Boolean function comprising:
- receiving as input a Boolean function of a number n of input variables wherein the number n of input variables may be varied over a range;
- generating at least two intermediate functions comprising sub-functions of the Boolean function wherein zero or one is substituted for all but two of the number n of input variables;
- and
- generating a selected output of the Boolean function of the number n of input variables from only two of the intermediate functions wherein the number n of input variables may be varied over a range from 22 to 220.
A method of constructing a circuit for a Boolean function comprising:
- receiving as input a Boolean function of a number n of input variables wherein the number n of input variables may be varied over a range;
- generating at least two intermediate functions comprising sub-functions of the Boolean function wherein zero or one is substituted for all but two of the number n of input variables;
- and
- generating a selected output of the Boolean function of the number n of input variables from only two of the intermediate functions wherein the number n of input variables may be varied over a range from two to twenty.
A method of constructing a circuit for a Boolean function comprising:
- receiving as input a Boolean function of a number n of input variables wherein the number n of input variables may be varied over a range;
- generating at least two intermediate functions comprising sub-functions of the Boolean function wherein zero or one is substituted for all but two of the number n of input variables;
- and
- generating a selected outnut of the Boolean function of the number n of input variables from only two of the intermediate functions further comprising:
- instantiating a first layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to first and second input variables x0 and x1 of the Boolean function to generate sub-functions fun2,u(x1, x0) each having an output vector equal to u wherein u is an integer corresponding to a binary representation of an i-th output ƒi(a, x1, x0) of the Boolean function and a equals zero or one;
- instantiating a second layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to the i-th output of one of the sub-functions fun2,u(x1, x0) in the first layer and to a third input variable of the Boolean function to generate an AND-function of the third input variable and the i-th output;
- and
- instantiating a third layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two AND-functions generated by the cells in the second layer to generate an OR-function that is representative of the i-th output of the Boolean function of the number of input variables.
A method of constructing a circuit for a Boolean function comprising:
- receiving as input a Boolean function of a number n of input variables wherein the number n of input variables may be varied over a range;
- generating at least two intermediate functions comprising sub-functions of the Boolean function wherein zero or one is substituted for all but two of the number n of input variables;
- and
- generating a selected output of the Boolean function of the number n of input variables from only two of the intermediate functions further comprising:
- instantiating a first layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively either to first and second input variables x0 and x1 of the Boolean function to generate sub-functions fun2,u(x1, x0) each having an output vector equal to u wherein u is an integer corresponding to a binary representation of an i-th output ƒi(a, b, x1, x0) of the Boolean function wherein {a, b} equals one of {0, 0}, {0, 1}, {1, 0}, and {1, 1} or to second and third input variables x2 and x3 of the Boolean function to generate sub-functions Ka,b=fun2,1<<(2a+b)(x3, x2);
- instantiating a second layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to an i-th output of one of the sub-functions fun2,u(x1, x0) in the first layer and to one of the sub-functions Ka,b=fun2,1<<(2a+b)(x3, x2) in the first layer to generate an intermediate function ƒ2a,b,u for each of the cells in the second layer;
- instantiating a third layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two intermediate functions ƒ2a,b,u0 and ƒ2a,b,u1 in the second layer to generate an intermediate function ƒ3a,u in the third layer wherein u0=u % 16 and u1=u>>4;
- and
- instantiating a fourth layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two intermediate functions ƒ3a,u2 and ƒ3a,u3 in the third layer to generate the i-th output of the Boolean function of the number of input variables wherein u2=u % 256 and u3=u>>8.
A method of constructing a circuit for a Boolean function comprising:
- receiving as input a Boolean function of a number n of input variables wherein the number n of input variables may be varied over a range;
- generating at least two intermediate functions comprising sub-functions of the Boolean function wherein zero or one is substituted for all but two of the number n of input variables;
- and
- generating a selected output of the Boolean function of the number n of input variables from only two of the intermediate functions further comprising:
- instantiating a first layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively either to first and second input variables x0 and x1 of the Boolean function to generate sub-functions fun2,u(x1, x0) each having an output vector equal to u wherein u is an integer corresponding to a binary representation of an i-th output ƒi(an−1, . . . , a2, x1, x0) of the Boolean function wherein an−1, . . . , a2 is a binary representation of each number in the range from zero to 2n−2−1, or to second and third input variables x2 and x3 of the Boolean function to generate sub-functions Kan−1, . . . , a2=fun1,1<<(1−an−1)(x3, x2)^ . . . ^ fun1,1<<(1−a4)(x3, x2);
- instantiating a second layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to an i-th output of one of the sub-functions fun2,u(x1, x0) in the first layer and to one of the sub-functions Kan−1, . . . , a2 in the first layer to generate an intermediate function ƒ2a,b,u for each of the cells in the second layer;
- instantiating a third layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two intermediate functions ƒ2a,b,u0 and ƒ2a,b,u1 in the second layer to generate an intermediate function ƒ3a,u in the third layer wherein u0=u % 16 and u1=u>>4;
- instantiating a fourth layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two intermediate functions ƒ3a,u2 and ƒ3a,u3 in the third layer to generate each i-th output of an intermediate function fun4,u(x3, x2, x1, x0) wherein u2=u % 256 and u3=u>>8;
- and
- instantiating a fifth layer of cells wherein each of the cells has only two inputs coupled respectively to an i-th output of a decoder function fun1,1<<(1−an−1)(xn−1)^ . . . ^ fun1,1<<(1−a0)(x0) wherein an−1, . . . , a0 is a binary representation of each number in the range from zero to 2n−1 and to the i-th output of a sub-function fun4,u(x3, x2, x1, x0) to generate an intermediate function ƒ4u.
A circuit for a Boolean function of a number n of input variables comprising:
- a first layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to first and second input variables x0 and x1 of the Boolean function to generate sub-functions fun2,u(x1, x0) each having an output vector equal to u wherein u is an integer corresponding to a binary representation of an i-th output ƒi(a, x1, x0) of the Boolean function and a equals zero or one;
- a second layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to the i-th output of one of the sub-functions fun2,u(x1, x0) in the first layer and to a third input variable of the Boolean function to generate an AND-function of the third input variable and the i-th output;
- and
- a third layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two AND-functions generated by the cells in the second layer to generate an OR-function that is representative of the i-th output of the Boolean function of the number of input variables.
A circuit for a Boolean function of a number n of input variables comprising:
- a first layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively either to first and second input variables x0 and x1 of the Boolean function to generate sub-functions fun2,u(x1, x0) each having an output vector equal to u wherein u is an integer corresponding to a binary representation of an i-th output ƒi(a, b, x1, x0) of the Boolean function wherein {a, b} equals one of {0, 0}, {0, 1}, {1, 0}, and {1, 1} or to second and third input variables x2 and x3 of the Boolean function to generate sub-functions Ka,b=fun2,1<<(2a+b)(x3, x2);
- a second layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to an i-th output of one of the sub-functions fun2,u(x1, x0) in the first layer and to one of the sub-functions Ka,b=fun2,1<<(2a+b)(x3, x2) in the first layer to generate an intermediate function ƒ2a,b,u for each of the cells in the second layer;
- a third layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two intermediate functions ƒ2a,b,u0 and ƒ2a,b,u1 in the second layer to generate an intermediate function ƒ3a,u in the third layer wherein u0=u % 16 and u1=u>>4;
- and
- a fourth layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two intermediate functions ƒ3a,u2 and ƒ3a,u3 in the third layer to generate the i-th output of the Boolean function of the number of input variables wherein u2=u % 256 and u3=u>>8.
A circuit for a Boolean function of a number n of input variables comprising:
- a first layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively either to first and second input variables x0 and x1 of the Boolean function to generate sub-functions fun2,u(x1, x0) each having an output vector equal to u wherein u is an integer corresponding to a binary representation of an i-th output ƒi(an−1, . . . , a2, x1, x0) of the Boolean function wherein an−1, . . . , a2 is a binary representation of each number in the range from zero to 2n−2−1, or to second and third input variables x2 and x3 of the Boolean function to generate sub-functions Kan−1, . . . , a2=fun1,1<<(1−an−1)(x3, x2)^ . . . ^ fun1,1<<(1−a4)(x3, x2);
- a second layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to an i-th output of one of the sub-functions fun2,u(x1, x0) in the first layer and to one of the sub-functions Kan−1, . . . , a2 in the first layer to generate an intermediate function ƒ2a,b,u for each of the cells in the second layer;
- a third layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two intermediate functions ƒ2a,b,u0 and ƒ2a,b,u1 in the second layer to generate an intermediate function ƒ3a,u in the third layer wherein u0=u % 16 and u1=u>>4;
- a fourth layer of cells wherein each of the cells has only two inputs, and the two inputs are coupled respectively to two intermediate functions ƒ3a,u2 and ƒ3a,u3 in the third layer to generate each i-th output of an intermediate function fun4,u(x3, x2, x1, x0) wherein u2=u % 256 and u3=u>>8;
- and
- a fifth layer of cells wherein each of the cells has only two inputs coupled respectively to an i-th output of a decoder function fun1,1<<(1−an−1)(xn−1)^ . . . ^ fun1,1<<(1−a0)(x0) wherein an−1, . . . , a0 is a binary representation of each number in the range from zero to 2n−1 and to the i-th output of a sub-function fun4,u(x3, x2, x1, x0) to generate an intermediate function ƒ4u .
Dependencies are inferred from the claim text.