# Patent

## Title
Apparatus for interfacing and testing a phase locked loop in a field programmable gate array

## Abstract

An apparatus for interfacing a phase locked loop in a field programmable gate array. The apparatus comprising a phase locked loop cluster. The phase locked loop further comprising a plurality of RT modules, a plurality of RO modules, at least one TY module, a plurality of receiver modules and at least one buffer module. A phase locked loop selectively coupled to the RT modules, the RO modules, the TY modules, the receiver modules and at least one buffer module in the phase locked loop cluster.

## Background
BACKGROUND OF THE SYSTEM
1. Field of the System
The present system relates to field programmable gate array (FPGA) devices. More specifically, the system relates to an apparatus for interfacing and testing a phase locked loop of an FPGA.
2. Background
FPGAs are known in the art. An FPGA comprises any number of logic modules, an interconnect routing architecture and programmable elements that may be programmed to selectively interconnect the logic modules to one another and to define the functions of the logic modules. To implement a particular circuit function, the circuit is mapped into an array and appropriate connections are programmed to implement the necessary wiring connections that form the user circuit.
A gate array circuit can be programmed to implement virtually any set of functions. Input signals are processed by the programmed circuit to produce the desired set of outputs. Such inputs flow from the user's system, through input buffers and through the circuit, and finally back out the user's system via output buffers. Such buffers provide any or all of the following input/output (I/O) functions: voltage gain, current gain, level translation, delay, signal isolation or hysteresis.
An FPGA core tile may be employed as a stand-alone FPGA, repeated in a rectangular array of core tiles within a single integrated circuit, or included with other devices in a system-on-a-chip (SOC). The core FPGA tile may include an array of logic modules, and input/output modules. An FPGA core tile may also include other components such as read only memory (RAM) modules. Horizontal and vertical routing channels provide interconnections between the various components within an FPGA core tile. Programmable connections are provided by programmable elements coupled between the routing resources.
As FPGAs grow in size, on-chip clock distribution becomes increasingly important. Clock skew and clock delay impact FPGA performance and the task of managing clock skew and clock delay with conventional clock trees becomes more difficult in large FPGAs. As such, in large, fast FPGAs, the performance limiting element is often clock delay due to large clock networks. Phase locked loops (PLLs) are used to reduce the clock delays inherent in large FPGAs and, thereby improve performance.
FIG. 1 is a simplified diagram illustrating two internal clock tree branches. This is known to those skilled in the art as an “H tree” clock distribution scheme. The goal of a PLL is to minimize clock skew by having near equal delay in each branch of the clock network. As the FPGA grows, the number of branches is increased, and buffer sizes are tuned to equalize the delay between branches.
FIG. 2 shows the relationship between total clock delay and skew, or the difference in delay between the branches in the clock tree. Both total clock delay and clock skew are factors in high performance systems.
By anticipating the edges of the input clock, a PLL can generate new clocks with edges slightly earlier than the input clock. By tuning the amount of time these new clock edges precede the input clock edge to the delays of the various clock tree branches, all registers will see the clock edge at about the same time. This reduces the overall clock network delay as well as minimizing clock skew.
FIG. 3 is a simplified diagram illustrating the timing of a clock network using a PLL. As shown in FIG. 3, the internal clock (dotted lines) are being generated ahead of the input clock, so the internal clocks arrive at their destinations much closer to the input clock edge. Some clock skew still occurs due to the delay in each branch, however overall performance is improved by using a PLL.
Hence, PLLs are important tools to increase performance in large, fast FPGAs. There is need in the art for an apparatus for interfacing and testing PLLs in an FPGA.
SUMMARY OF THE SYSTEM
A better understanding of the features and advantages of the present invention will be obtained by reference to the following detailed description of the invention and accompanying drawings which set forth an illustrative embodiment in which the principles of the invention are utilized.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a simplified diagram illustrating two internal clock tree branches.
FIG. 2 is a simplified diagram showing the relationship between total clock delay and clock skew.
FIG. 3 is a simplified diagram illustrating the timing of a clock network using a PLL.
FIG. 4 is a simplified block diagram of an FPGA core tile incorporating the PLL clusters of the present system.
FIG. 5 is a simplified schematic diagram showing the PLL interface with the PLL clusters of the present system.
FIG. 6 is a simplified block diagram of a PLL cell.
FIG. 7 is a simplified block diagram of a PLL cluster of the present system.
FIG. 8 is a simplified schematic diagram showing the PLL interface including the test registers with the PLL clusters of the present system.
FIG. 9 is a simplified schematic diagram showing the test register circuit path for a PLL cell as disclosed in the present system.
FIG. 10 is a simplified schematic drawing of a microprobe of the test register circuit of FIG. 8 of the present system.



DETAILED DESCRIPTION OF THE DRAWINGS
Those of ordinary skill in the art will realize that the following description of the present invention is illustrative only and not in any way limiting. Other embodiments of the invention will readily suggest themselves to such skilled persons.
This disclosure may relate to data communications. Various disclosed aspects may be embodied in various computer and machine-readable data structures. Furthermore, it is contemplated that data structures embodying the teachings of the disclosure may be transmitted across computer and machine-readable media, and through communications systems by use of standard protocols such as those used to enable the Internet and other computer networking standards.
The disclosure may relate to machine-readable media on which are stored various aspects of the disclosure. It is contemplated that any media suitable for retrieving instructions is within the scope of the present disclosure. By way of example, such media may take the form of magnetic, optical, or semiconductor media, and may be configured to be accessible by a machine as is known in the art.
Various aspects of the disclosure may be described through the use of flowcharts. Often, a single instance of an aspect of the present disclosure may be shown. As is appreciated by those of ordinary skill in the art, however, the protocols, processes, and procedures described herein may be repeated continuously or as often as necessary to satisfy the needs described herein. Accordingly, the representation of various aspects of the present disclosure through the use of flowcharts should not be used to limit the scope of the present disclosure.
FIG. 4 is a simplified block diagram of an FPGA 100 incorporating the PLL interface, described in this application as a PLL cluster, as disclosed in the present system. As shown in FIG. 4, FPGA 100 comprises an array of logic clusters 110, a column of RCLK Row Dist 112, a row of HCLK Row Dist 114, a Clock tile Dist 116, a row of RAM clusters 108, RAM memory 106. Logic clusters 110 are surrounded by two rows of input/output (I/O) clusters 104 and I/O banks 102. On the north and south edges of FPGA core tile 100 there are eight phase locked loop clusters (PLL clusters) 120. Four PLL clusters 120 are located on the north edge of FPGA core tile 100 and four PPL clusters 120 are located on the southern edge of FPGA core tile 100. The eight PLL clusters 120 located on the northern and southern edges of FPGA core tile 100 displace eight I/O clusters 104. PLL clusters 120 are coupled to two I/O pads located in I/O banks 102. The interface between PLL clusters 120 and I/O banks 102 will be discussed in greater detail below.
FIG. 5 is a simplified schematic diagram showing the PLL interface with the PLL clusters of the present system. As illustrated in FIGS. 4 and 5, four PLL cells 218 are located adjacent to each other around the median on the north and south edges of FPGA core tile 100. Each PLL cell 218 is coupled to two I/O pads 200. I/O pad 200 is coupled to PLL cell 218 through a boundary scan register (BSR) 206, output buffer 203 and input buffer 205. The function of the BSR is to test the circuit to determine if it performs as programmed. The testing function, as it relates to the PLL cell 218 and PLL cluster 220 will be discussed in greater detail below.
In addition, I/O pad 200 may be coupled to PLL cell 218 though a plurality of multiplexers. As shown in FIG. 5, for illustrative purposes only, I/O pad is coupled to PLL cell 218 through multiplexers 208 and 210. As those skilled in the art having the benefit of this disclosure will readily realize, any number of multiplexers may be employed or not employed to coupled I/O pads 200 to PLL cell 218. PLL cells 218 are selectively coupled to PLL cluster 220 through multiplexers 212, 214 and 216. As those skilled in the art having the benefit of this disclosure will readily realize, any number of multiplexers may be employed or not employed to coupled PLL cluster 220 to PLL cell 218. Coupling PLL cell 218 to I/O pads 200 and PLL cluster 220 through multiplexers 208, 210, 212, 214 and 216 allows for greater signal selection flexibility. Multiplexers 208, 210, 212, 214 and 216 allow for different input signals to be received through the two input PLL cell 218. Multiplexers 208, 210, 212, 214 and 216 also allow for the routing of output signals from PLL cell 218 to adjacent PLL clusters 220.
Two routing buses connect PLL cell 218 directly to PLL cluster. Routing bus 226 connects an output of PLL cell 218 directly to PLL cluster 220. Routing bus 224 connects an output of PLL cluster 220 directly to PLL cell 218.
The I/O pads 200 attached to a PLL cluster 120 can be configured for regular functions through the inside I/O cluster 104 if they are not required by PLL cluster 120. I/O clusters 104 are beyond the scope of this disclosure and will not be discussed in detail herein. The path to I/O cluster 104 should be gated by control signals to minimize loading on the clock path. I/O pads 200 may also be configured in all modes available to the regular I/O pads in the same I/O bank. In particular, the REFN and REFP pads can be configured into a differential pair.
PLL cells 218 may share a pair of dedicated pads, pad 202 coupled to an analog power supply and pad 204 coupled to ground. Pad 204 is coupled to pad 202 through a decoupling capacitator (not shown) to reduce the jitter of the PLL. PLL cells may also share a common pad that supplies the analog ground (not shown).
FIG. 6 is a simplified block diagram of PLL cell 218. PLL cell 218 is comprised of a phased locked-loop (PLL) 240. The first input of PLL 240 receives the reference clock signal from input line 235 through delay line 232. PLL 240 has a second input coupled to an output of two-input multiplexer 234 through a delay line and a divider 1238. The first input of two-input multiplexer 230 receives the feedback port (FB) signal on FB signal line 231. The control input on two-input multiplexer 230 receives the feedback port multiplexer select signal through feedback port multiplexer select signal line 233. The feedback port multiplexer select signal determines whether the source of the feedback path is an internal feedback path or an external feedback path.
PLL 240 has a first output coupled to divider J 242 and delay 244. First output of PLL 240 provides both the clock 1 signal through clock 1 signal output line 247, which is coupled to the first output of PLL 240 though divider J 242, and the clock 2 signal through clock 2 signal output line 246, which is coupled to the first output of PLL 240 through delay circuit 244. The first output of PLL 240 may also be “looped” to the second input of PLL 240 through the second input of two-input multiplexer 230, delay line 234 and divider 1238. PLL 240 has a second output coupled to the lock signal output line 248.
Divider 1238 in the feedback path of the “loop” of PLL 240 is employed for clock signal multiplication. Divider 1238 sets the divide value for the feedback divider. Divider J 242 coupled to the output of PLL 240 is employed for clock signal division. Divider J 242 sets the divide value for the clock 1 divider.
FIG. 7 is a simplified block diagram of a PLL cluster of the present system. PLL cluster 220 is comprised of a left group of modules 250 and a right group of modules 252. According to the present invention, one can use any number of the logic components set forth below. The examples set forth below are for illustrative purposes only and are not meant to limit the present invention.
Left group of modules 250 is comprised of seventeen RT modules 254, an RO module 256, two RX modules 258 and a TY module 260. RX modules 258 receive a clock signal from a long distance. RO modules 256 provide the lock signal and the clock out signal selected between the clock 1 and clock 2 outputs of the PLL cell 218. RC module 264 provides the feedback port signal to PLL cell 218. RT modules configure the various multiplexer select lines or provide control signals to PLL cell 218.
Right group of modules is comprised of fourteen RT modules 254, an RO module 256, two RX modules 258, a TY module 260, a buffer module 262 and an RC module 264. In this example, RT modules 254, RC module 264 and TY module 260 are driver modules and RX modules 258 and RO modules 256 are receiver modules. Table 1 sets forth PLL cluster 220 signal assignments.










TABLE 1






WEST

EAST


WEST INPUTS
OUTPUTS
EAST INPUTS
OUTPUTS







RT1: ROOTSEL
RO: LOCK
RC: FBINT
RO: CLKOUT


RT2: PLLSEL[0]

RT1: REFSEL[0]


RT3: PLLSEL[1]

RT2: REFSEL[1]


RT4: CLKINT

RT3: FBSEL


RT5: Power Down

RT4: Delay line[0]


RT6: FBMuxSel

RT5: Delay line[1]


RT7: Osc[0]

RT6: Delay line[2]


RT8: Osc[1]

RT7: Delay line[3]


RT9. Osc[2]

RT8: Delay line[4]


RT10: LowFreq

RT9: DividerJ[1]


RT11: DividerI[0]

RT10: DividerJ[2]


RT12. DividerI[1]

RT11: DividerJ[3]


RT13: DividerI[2]

RT12: DividerJ[4]


RT14: DividerI[3]

RT13: DividerJ[5]


RT15: DividerI[4]

RT14: DividerJ[6]


RT16: DividerI[5]


RT17: OUTSEL









To avoid overcomplicating the disclosure and thereby obscuring the present invention, RT modules and RO module 256 are not described in detail herein. The implementation of RT modules 254 and RO module 256 suitable for use according to the present system is disclosed in U.S. patent application Ser. No. 10/448,259, filed May 28, 2003, now issued as U.S. Pat. No. 6,383,902, and hereby incorporated herein by reference.
To avoid overcomplicating the disclosure and thereby obscuring the present invention, receiver modules 258, transmitter modules 260 and buffer module 262 are not described in detail herein. The implementation of receiver modules 258 and transmitter modules 260 suitable for use according to the present system is disclosed in U.S. patent application Ser. No. 10/323,613, filed Dec. 18, 2002, now issued as U.S. Pat. No. 6,946,871, and hereby incorporated herein by reference. The implementation of buffer modules 262 suitable for use according to the present system is disclosed in U.S. patent application Ser. No. 10/293,895, filed Nov. 12, 2002, now issued U.S. Pat. No. 6,727,726, and hereby incorporated herein by reference.
FIG. 8 is a simplified schematic diagram showing the PLL interface including the test registers with the PLL clusters of the present system. While FIG. 8 includes many elements previously discussed in FIG. 5, which will not be discussed again herein, FIG. 8 also includes PLL test register 300. As shown in FIG. 8, the PLL test registers 300 are coupled between boundary scan registers 206.
FIG. 9 is a simplified schematic diagram showing the test register circuit path for a PLL cell 218 shown in FIG. 6. A special global control signal (TEST_PLL) is used to enable PLL testing. During PLL cell 218 testing, PLL test register 300 is inserted into the boundary scan register (not shown) at the points where PLL clusters 220 are located. The result is a variable-length boundary scan register chain which is dependent on the control bit (TEST_PLL).
Referring still to FIG. 9, each PLL test register 300 contains 31 PLL boundary scan register bits 304(0)-304(30). Each of PLL boundary scan register bit 304(0)-304(29) comprises two D flip-flops 306 and 308 and two two-input multiplexers 312 and 314. PLL boundary scan register bit 304(30) has only one multiplexer 310 to control multiplexer 314 in boundary scan register bits 304(0)-304(29). Table 2 illustrates PLL test register 300 signal assignments.








TABLE 2





BIT NUMBER
PLL CONTROL SIGNAL
















0
ROOTSEL


1
PLLSEL0


2
PLLSEL1


3
OUTSEL


4
REFSEL0


5
REFSEL1


6
FBSEL


7
PWRDOWN


8
EXTFBSEL


9
LOFREQ


10
OSC0


11
OSC1


12
OSC2


13
DELAYLINE0


14
DELAYLINE1


15
DELAYLINE2


16
DELAYLINE3


17
DELAYLINE4


18
DIV1DERJ0


19
DIVIDERJ1


20
DIVIDERJ2


21
DIVIDERJ3


22
DIVIDERJ4


23
DIVIDERJ5


24
DIVIDERI0


25
DIVIDERI1


26
DIVIDERI2


27
DIVIDERI3


28
DIVIDERI4


29
DIVIDERI5


30
PLLBSR MUX Control









PLL boundary scan register bit 304(30) is a special control bit. PLL boundary scan register bit 304(30) controls the output of multiplexers 314 of PLL boundary scan register bit 304(0) through 304(29) to determine whether PLL cell 218 is controlled by PLL cluster 220 or by PLL test register 300. PLL boundary scan register bit 304(30) controls the output of multiplexers 314 of PLL boundary scan register bit 304(0) through 304(29) through the output of multiplexer 310 which is coupled to the control input of multiplexers 314 in PLL boundary scan register bit 304(0) through 304(29) through flip-flop 332 and 334 in PLL boundary scan register bit 304(30). The output of flip-flop 334 is coupled via routing line 322 to the control input of multiplexers 314. The output of multiplexers 314 is then looped via routing line 324 to the second input of multiplexers 312. The output of multiplexer 314 is also coupled to output CBOUT via routing line 330.
PLL test register 300 may also be used to observe normal PLL cell 318 controls. Observing PLL cells 318 controls is accomplished by loading the data values from the outputs of multiplexers 314 through line 324 and multiplexers 312 into the PLL boundary scan register bits 340(0) through 340(30) and shifting them out through the output of the boundary scan register (BSR) for validation.
FIG. 10 is a simplified schematic drawing of a microprobe of the present system. The results of PLL cell 318 tests are seen though the output of a plurality of microprobes 400. In the present example, for illustrative purposes only, there are four microprobes 400 located on FPGA core tile 100. Two microprobes 400 on the North edge of FPGA core tile 100 and two microprobes on the South edge of FPGA core tile 100.
Microprobe 400 receives ROOT signals from the four PLL cells 318 on the same edge of FPGA core tile 100 through inputs 408, 410, 412, 414 of multiplexer 402. The output of multiplexer 402 is coupled to a first output of two-input multiplexer 404. The output of multiplexer 404 is coupled to microprobe 400 through buffer 406. As stated previously, the results of the testing of PLL cell 318 are read through microprobe 400.
In an alternate embodiment, microprobe 400 receives signals from the normal probe circuitry. When receiving normal probe circuitry signals, microprobe 400 is configured to observe the LOCK or CLKOUT signal of the PLLs. The frequency of the output signal on microprobes 400 may be limited to approximately 50 MHz by using the frequency divider in the PLLs.
It should be understood that various alternatives to the embodiments of the disclosed method and apparatus descried herein maybe employed in practicing the disclosed method and using the disclosed apparatus. It is intended that the following claims define the scope of the disclosed method and apparatus and that methods and structures within the scope of these claims and their equivalents be covered thereby.

## Claims

1. An apparatus for interfacing a phase locked loop in a field programmable gate array, said apparatus comprising:
a phase locked loop cluster comprising:
a plurality of logic components designed to provide lock signals and clock signals,
a plurality of logic components that configure and provide control signals,
at least one driver module,
a plurality of receiver modules, and
at least one buffer module; and

a phase locked loop selectively coupled to an input/output pad and said phase locked loop cluster through a plurality of multiplexers.

2. The apparatus of claim 1 wherein said phase locked loop is selectively coupled to said input/output pad through said phase locked loop cluster and through a plurality of multiplexers.

3. The apparatus of claim 1, wherein said phase locked loop cluster further comprises a feedback module that provides a feedback port signal to said phase locked loop.

4. The apparatus of claim 3, wherein said phase locked loop comprises a first input and a second input, said first input receiving a reference clock signal from an input line through a delay line, and said second input is coupled to an output of a multiplexer through a delay line and a divider.

5. The apparatus of claim 4, wherein said multiplexer receives said feedback port signal.

6. A method of interfacing a phase locked loop between a field programmable gate array core and at least one of a plurality of input/output pads comprising:
coupling a phase locked loop cell to the field programmable gate array core through a phase locked loop cluster, said phase locked loop cluster comprising a plurality of logic components designed to provide lock signals and clock signals, a plurality of logic components that configure and provide control signals, at least one driver module, a plurality of receiver modules, and at least one buffer module; and
coupling the at least one of a plurality of input/output pads to the phase locked loop cell,
wherein said phase locked loop cell is selectively coupled to said at least one of a plurality of input/output pads and said phase locked loop cluster through a plurality of multiplexers.

7. The method of claim 6 wherein the phase locked loop cluster is further coupled to the field programmable gate array core through an input/output cluster.

8. The method of claim 7 wherein the phase locked loop cluster is further coupled to the field programmable gate array core through at least one of a plurality of multiplexers.

9. The method of claim 6, wherein said phase locked loop cluster further comprises a feedback module that provides a feedback port signal to said phase locked loop cell.

10. The method of claim 9, wherein said phase locked loop cell comprises a first input and a second input, said first input receiving a reference clock signal from an input line through a delay line, and said second input is coupled to an output of a multiplexer through a delay line and a divider.

11. The method of claim 10, wherein said multiplexer receives said feedback port signal.