The preferred embodiment of the invention comprises the addition of an AND element and buffer to the output of the logic element of an FPGA, a routing element that utilized unidirectional signals and incorporates an OR function, RAM blocks with AND elements and buffers for the output pins, and microprocessor(s) with AND elements and buffers for the output pins.
Logic Element
The AND function in the logic element acts as an enable or disable for the output signal when connected to the OR implemented in the routing elements. In the preferred embodiment the enable input to the AND function is connected to the input routing element.
Routing Element
Application to a RAM Block
Since the RAM elements in stare of the art FPGAs are frequently connected to high fan in signals such as microprocessor data busses the RAM blocks should also be modified to contain AND based outputs.
Application to a Processor
The high fan in busses of a microprocessor including the data output bus and address bus for processors that support external bus masters should also incorporate an AND function in the output buffers to take advantage of this invention.
Output Routing
The bi-directional transfer gate and single wire has been replaced by two unidirectional wires and logic gates. In this example timing will be improved over the transfer gate based interconnect due to repeater insertion as shown in
Application to a Soft IP Core
Application to Distributed RAM
No Logic Functions and only one routing channel per output bit are used in this example. This greatly simplifies the interconnection of multiple distributed RAMs into larger arrays. This interconnection is useful in structures such as FIFOs and register files in addition to connection to a microprocessor.
Simplified CAM Implementation
Content Addressable Memories (CAM) consumes extensive logic and routing resources when implemented in current FPGAs. This invention allows for an efficient CAM in an FPGA. The distributed OR function can be used to implement an equivalent to the high fan in “wired AND” function conventionally used to implement match lines in a CAM. To take full advantage of this capability the logic element should allow configuration the interconnections in the logic element as shown in
Application to ASICs and Structured ASICs
While the description of this invention is focused on the implementation of high fan in functions in FPGAs it will be apparent to one skilled in the art that the same techniques can be applied to ASICs, Structured ASICs and full custom designs. Modern ASIC and full custom designs are hierarchically structured.
Some of these components incorporate a large number of registers and memories connected to wide high fan in busses.
In a typical ASIC design the major components will be assigned so areas on the chip. This process is referred to as floor planning. Floor planning may also assign locations for the connection of specific interface signals. Once floor planning is done low level gates and standard cells that make up the individual components are placed and routed. After the major components have been placed and routed the connections between the major components are routed. Because the connections between major components are long large ASIC designs require “repeater insertion” for high performance (
This invention can be applied to internal routing in the major components and the interconnection between the components. Internal to the major components OR functions can be placed at locations where two or more signals that comprise a high fan in network join as shown in
Software for Routing an FPGA or ASIC
FPGAs and ASICs are typically routed using Automatic Place Route software. APR software typically involves complex routing algorithms that attempt to determine a set of routes for all signals in a design that meets the timing goals specified as “timing constraints” by the user. For high fan-in signals these FPGA routing algorithms can be modified to take advantage of the OR functions in the routing elements as follows:
For ASICs the OR functions within major blocks can be placed as part of the placement program using conventional methods such as:
The OR functions can also be placed to produce wire equal length or equal delay (wire delay plus gate delay) trees.
Alternatively the OR functions can be placed and routed as part of the routing process similar to repeater insertion. In this case the method described for FPGAs will be used with the additional step of inserting the OR functions where multiple nets join.
The inter-component placement of OR functions and routing can be performed using any of the methods described for ASIC components though performing it as part of routing and repeater insertion is preferred since the OR functions will act as repeaters.
It will be understood that the forgoing is only illustrative of the principles of the invention, and that various modifications can be made by those skilled in the art without departing from the scope and spirit of the invention. For example, the AND and OR functions described herein and in the claims may be implemented by use of NAND/NAND, NOR/NOR or other logical equivalents to implement the disclosed invention and related means and methods. Furthermore, the term “amplifier” includes the use of a “repeater”; and an “ASIC” includes the use of a “structured ASIC”.