A function development method for use in a CPLD (Complex Programmable Logic Device) having a first plurality, N of logic blocks that are programmably interconnectable by way of a blocks-interconnecting structure, where each logic block includes a second plurality, M of macrocell modules, and where a representative J'th one of the M macrocell modules in a representative, L'th logic block includes:
- (0.1) a third plurality, C of local product term generators for generating a corresponding plurality of C, local product term signals (local PT signals) from programmably selectable ones of input term signals selectively acquired by the respective, L'th logic block;
- (0.2) a first-stage logic combiner for logically combining all or a programmably-selectable subset of said C local PT signals and responsively producing a corresponding, first-stage result signal of said J'th macrocell module;
- (0.3) a programmable first-stage steerer coupled to receive the first-stage result signal and to steer the received first-stage result signal to a programmably selectable one of a fourth plurality of first-stage steering destinations while supplying predefined default states to others of the first-stage steering destinations;
- (0.4) a second-stage logic combiner for logically combining second-stage input signals steered to, or otherwise supplied to corresponding second-stage combiner inputs of the second-stage logic combiner of said J'th macrocell module, where said second-stage combiner inputs define respective first-stage steering destinations for at least the J'th macrocell module , and for at least two other, logically-proximate ones, if also physically-present, of the M macrocell modules in said L'th logic block, the second-stage logic combiner producing a corresponding second-stage result signal;
- (0.5) a programmable second-stage steerer coupled to receive the second-stage result signal and to steer the received second-stage result signal to a programmably selectable one of a fifth plurality of second-stage steering destinations while supplying predefined default states to others of the second-stage steering destinations;
- (0.6) a registration-and-I/O section, operatively coupled to the second-stage steerer so as to define at least a first of the second-stage steering destinations, and comprising a controllable storage element, a delay-selecting multiplexer, an I/O output buffer having a respective, buffer output enable node, the I/O output buffer being coupled to drive a corresponding one of said input/output nodes, and an I/O input buffer coupled to input a signal from said corresponding one of the input/output nodes;
- wherein:
- (0.6a) the controllable storage element has a data input node (IN), a clock input node (CLK), a SET node, a RESET node, and a data output node (Q), where the IN node is operatively coupled to at least receive a function signal that is partially or fully developed by way of simple or super-allocation based steering of function component signals through said first-stage steerer and said second-stage steerer;
- (0.6b) the delay-selecting multiplexer has a first input coupled to the Q node of the storage element of the J'th macrocell module, and a fast-path, second input coupled to receive from the first-stage logic combiner, one of the first-stage result signal and an inverse of the first-stage result signal, and where the delay-selecting multiplexer further has an output coupled to drive said I/O output buffer;
- said function development method comprising:
- (a) in a first of the logic blocks, using a plurality of macrocell modules in simple or super-allocation steering mode to partially develop a, to-be-fully-developed, function signal;
- and
- (b) outputting the partially-developed function signal to the blocks-interconnecting structure;
- and
- (c) in the same first logic block or a different logic block, acquiring the partially-developed function signal from the blocks-interconnecting structure, completing development of the to-be-fully-developed, function signal in the first-stage logic combiner of said same first or different logic block, and passing the completed function signal through said fast-path, second input of the delay-selecting multiplexer for output by way of the I/O output buffer of said same first or different logic block.