Input and output buffers and the associated delays are eliminated.
An improved design has been devised for on-chip-circuitry for measuring the delay through a chain of combinational logic elements in a field-programmable gate array (FPGA) or application-specific integrated circuit (ASIC). Heretofore, it has been the usual practice to use either of two other types of on-chip delay-measuring circuits:
- A delay chain of inverters is incorporated into the FPGA or ASIC chip along with an input port for feeding the inverter chain and an output port for feeding a signal to off-chip measurement circuitry. The disadvantage of this design is that the measurement is inaccurate because it includes delays in buffers that are parts of the input and output ports.
- The delay chain is arranged as a ring oscillator. The disadvantage of this design is that the delay chain does not always oscillate as expected.
The improved design overcomes the disadvantages of both older designs. In the improved design, the delay chain does not include input and output buffers and is not configured as an oscillator. Instead, the delay chain is made part of the signal chain of an on-chip pulse generator. The duration of the pulse is measured on-chip and taken to equal the delay.
In this design (see figure) the delay chain comprises six sub-chains denoted DC1 through DC6. Each sub-chain contains 500 lookup tables (LUTs), which are used as universal logic gates that implement the combinational logic in the FPGA or ASIC. The LUTs are programmed to act as either inverters or buffers, depending on the position of a switch on an external circuit board. The output end of each sub-chain except the last one is connected to the input end of the next sub-chain; the output end of each subchain is also connected to one of six input terminals of a multiplexer. By setting of switches in the multiplexer controlled by external circuitry, the length of the delay chain can be set to any value between 500 and 3,000 LUTs in increments of 500 LUTs.
Also on the external board are two crystal-controlled oscillators. One oscillator generates a clock signal at a nominal frequency of 50 MHz; the other generates a clock signal, at a nominal frequency of 33 MHz, which is not synchronized with the 50-MHz signal. The 50- MHz signal is used for the majority of the FPGA logic. The 33-MHz signal is fed to an on-chip pulse-duration-measuring unit.