The various circuits relate generally to integrated circuit devices, and in particular to circuits for and methods of testing the operation of an input/output port.
Data transmission is an important part of many integrated circuits and systems having integrated circuits. Data is typically communicated with an integrated circuit by way on an input/output (I/O) port. Data may be communicated in a system in different formats and according to a variety data communication protocols. However, the input/output circuits can significantly affect the performance of an integrated circuit device. Accordingly, I/O ports are often monitored to determine performance characteristics of the I/O port, and therefore the integrated circuit device and possibly a system implementing the integrated circuit device.
Conventional integrated circuits implement process monitor vehicle (PMV) circuits to monitor input/output (I/O) transistor process corners. However, the PMV circuits are not true representation of I/O circuits because of their structure, causing difficulties of correlation between the PMV results and I/O performance. Also, I/O performance tests and product tests usually involve fabric circuits, making it hard to isolate and characterize the true IO performance. In some cases, the delay contribution from FPGA fabric for example can be significant. For example, the delay can be up to 50%. In conventional devices, a typical configuration for I/O performance characterization applies an input signal to an I/O pad, through a Rx buffer and input multiplexer, and then to the fabric. The signal is then routed back from fabric to a transmitter through an output multiplexer to another I/O pad to be observed. In this configuration, circuits from both IO and fabric impact the signal, making it hard to isolate the contributions of delay, jitter and duty cycle distortion of the fabric from I/O circuit.
A circuit for testing the operation of an input/output port of an integrated circuit device is described. The circuit comprises a first input/output port having a first input/output pad for receiving a test signal; a second input/output port having a second input/output pad; and a selection circuit for routing the test signal received by way of a test signal output to the second input/output pad.
Another circuit for testing the operation of an input/output port of an integrated circuit device comprises a plurality of input/output ports, each input/output port having a test signal input, a test signal output, and a selection circuit, wherein the selection circuit of each input/output port enables coupling a test signal to the test signal input of another input/output port by way of the test signal output; and a control circuit coupled to control the plurality of input/output ports to operate in a test mode or an operational mode.
A method of testing the operation of an input/output port of an integrated circuit device is also described. The method comprises configuring a first input/output port to operate in a test mode; receiving a test signal from a second input/output port at a test signal input of the first input/output port; and routing the test signal to a first input/output pad of the first input/output port by way of the test signal input.
The various circuits and methods set forth below relate to circuits for and methods of testing the operation of an input/output port. At least one input/output port enables receiving a test signal from another input/output port by way of circuits associated with the input/output ports. Because the input/output ports include the circuits necessary to loop an input signal back from one input/output port to another input/output port, the performance of the input/output port, such as the speed of the transistors of the input/output ports, can be more accurately determined.
By providing a loop back circuit to route the input signal received at a first input/output port back to another input/output port, the circuit can advantageously test the input/output port receiver and transmitter performance by direct internal loopback between receiver and transmitter without using fabric of the integrated circuit. The test/characterization results represent the input/output performance more accurately than if a loopback were to use the fabric. While only two input/output ports are required to determine the performance of an input/output port, all the input/output circuits in an input/output bank can advantageously be chained together to form a ring oscillator (RO), where one of the input/output circuits in the chain may be configured as an inverter instead of a buffer to start the oscillation. The oscillating frequency of the RO is dependent of the input/output receiver and transmitter buffer delay. Because the ring oscillator is formed by the input/output circuits, the ring oscillator frequency advantageously represents the true performance of input/output circuit and can be used to monitor the input/output transistor process corners. The loopback connections between the adjacent IOs are preferably optimized to minimize the distortion to the signal, and buffered if wire load is significant.
While the specification includes claims defining the features of one or more implementations of the invention that are regarded as novel, it is believed that the circuits and methods will be better understood from a consideration of the description in conjunction with the drawings. While various circuits and methods are disclosed, it is to be understood that the circuits and methods are merely exemplary of the inventive arrangements, which can be embodied in various forms. Therefore, specific structural and functional details disclosed within this specification are not to be interpreted as limiting, but merely as a basis for the claims and as a representative basis for teaching one skilled in the art to variously employ the inventive arrangements in virtually any appropriately detailed structure. Further, the terms and phrases used herein are not intended to be limiting, but rather to provide an understandable description of the circuits and methods.
Turning first to
Turning now to
Turning now to
As shown in
The output of the selection circuit is an input signal which is provided to circuits of the integrated circuit. A transmitter circuit 326 is also coupled to the input/output pad 304, and coupled to receive one of a plurality of signals which will be generated as at the input/output pad 304. In addition to an output signal from the circuits of the integrated circuit, a multiplexer 328, which has a control terminal 330 receiving a control signal 332 that may also be data stored in a configuration memory element, may also receive the input signal of another input/output port by way of a test signal input 206. The test signal may be considered a loopback signal from another input/output port. The selection circuit 328 may also receive other signals by way of another selection circuit 334 having a control terminal 336 which is controllable by another selection signal 338, such as a signal from a JTAG or configuration circuit for example.
During a testing operation, a test signal coupled to an input/output pad 312 associated with the input/output port 310 is detected at the input/output pad 304 of input/output port 302 to test the operation of input/output ports. In a test mode of operation, the selection circuit 328 of the input/output port 302 is configured to route the test signal from the input/output pad 312 to the input/output pad 304. In particular, rather than selecting the output signal to be routed to the input/output pad as during normal operation, the selection circuit 328 is configured to select the input signal generated at the output of the selection circuit 320 (which is the test signal) on the test signal input 206. During normal operation, the selection circuit 328 is configured to select the output signal, or some other desired signal. Accordingly, as can be seen, two input/output ports are required to test operating characteristics, such as speed and particularly the speed of transistors, associated with a receiver of one input/output port and a transmitter of another input/output port, in response to configuring a selection circuit of one of the input/output ports. While input/output ports 302 and 310 were described by way of example, input/output port 306 could be configured to test the input/output ports 302 and 306. Accordingly, pairs of input/output ports can be configured to test all of the input/output ports.
Further, as shown in the arrangement of
Turning now to
Additionally, the I/O portion 504 may be configured as a latch. When an I/O port is used exclusively as an input, an optional pull-up resistor 526 may be selected by way of a passive pull-up bit 528 and coupled to the gate of a transistor 530. The resistor 526 is decoupled when the I/O block is configured as an output or as a bidirectional I/O block. The I/O pad 506 is also coupled to an input driver 532, the output of which is coupled to a register 534. Accordingly, a direct input signal or a registered input signal may be generated. The values of output invert control bit 512, output select control bit 518, tri-state invert bit 520, slew rate bit 524, and passive pull up bit 528 may be stored in configuration memory elements which are set by configuration bits of a configuration bitstream. A first protection diode 535 extends between the input/output pad 506 and the reference potential (VCC) and a second protection diode 536 extends between the input/output pad 506 and ground (GND), as shown.
The clock control portion 504 includes a first multiplexer 538 coupled to receive a first clock (CK1) and an inverted first clock, and a second multiplexer 540 coupled to receive a second clock (CK2) and a inverted second clock. Programmable interconnect points 542 enable routing a desired clock signal of the various clock signals to the registers 510 and 534. While the circuit of
Turning now to
The multiplexing circuit 602 comprises stages of multiplexers including multiplexers 608 and 610 in a first stage and a multiplexer 612 in a second stage. The multiplexer circuit 602 as shown receives 8 digital input signals DI0-DI7 which may be selected to be coupled to output buffer 604. The multiplexer 608 comprises a transistor 614 having a gate for receiving the input DI0, a transistor 616 having a gate for receiving the input DI1, a transistor 618 having a gate for receiving the input DI2, and a transistor 620 having a gate for receiving the input DI3. Similarly, the multiplexer 610 comprises a transistor 622 having a gate for receiving the input D14, a transistor 624 having a gate for receiving the input DI5, a transistor 626 having a gate for receiving the input DI6, and a transistor 628 having a gate for receiving the input DI7. The multiplexer 612 comprises a first transistor 630 enabling routing the output of the multiplexer 608 and a second transistor 632 enabling routing the output of the multiplexer 610.
The output buffer 604 comprises and inverter 634 and an inverter 636. A transistor 638 is coupled at its gate to the output of the inverter 634 and its source to the output of the inverter 636. The output buffer circuit 604 receives a selected input to the multiplexing circuit 602, and generates an output which is coupled to the demultiplexer circuit 606.
The demultiplexer 606 comprises stages of de-multiplexers including demultiplexer 640 in a first stage and demultiplexers 642 and 644 in a second stage. The demultiplexer circuit 640 receives the output of the buffer circuit 604 at its input and generates an output using transistors 646 and 648. The multiplexer 642 comprises a transistor 650 for generating the output DO0, a transistor 652 for generating the output DO1, a transistor 654 for generating the output DO2, and a transistor 658 for generating the output DO3. Similarly, the multiplexer 644 comprises a transistor 658 for generating the output DO4, a transistor 660 for generating the output DO5, a transistor 662 for generating the output DO6, and a transistor 664 for generating the output DO7. The control circuit 634 also generates the appropriate control signals D0-D11 to couple the appropriate input data to the appropriate data outputs. The control circuit 601 may comprise memory elements for storing configuration data, for example. Accordingly, when configuring an integrated circuit, the interconnect circuits would provide the desired connects between various signals, such as between the input/output ports and other circuitry of the integrated circuit.
Turning now to
The device of
In some FPGAs, each programmable tile includes a programmable interconnect element (INT) 711 having standardized connections to and from a corresponding interconnect element in each adjacent tile. Therefore, the programmable interconnect elements taken together implement the programmable interconnect structure for the illustrated FPGA. The programmable interconnect element 711 also includes the connections to and from the programmable logic element within the same tile, as shown by the examples included at the top of
For example, a CLB 702 may include a configurable logic element (CLE) 712 that may be programmed to implement user logic plus a single programmable interconnect element 711. A BRAM 703 may include a BRAM logic element (BRL) 713 in addition to one or more programmable interconnect elements. The BRAM includes dedicated memory separate from the distributed RAM of a configuration logic block. Typically, the number of interconnect elements included in a tile depends on the height of the tile. In the pictured implementation, a BRAM tile has the same height as five CLBs, but other numbers may also be used. A DSP tile 706 may include a DSP logic element (DSPL) 714 in addition to an appropriate number of programmable interconnect elements. An IOB 704 may include, for example, two instances of an input/output logic element (IOL) 715 in addition to one instance of the programmable interconnect element 711. The location of connections of the device is controlled by configuration data bits of a configuration bitstream provided to the device for that purpose. The programmable interconnects, in response to bits of a configuration bitstream, enable connections comprising interconnect lines to be used to couple the various signals to the circuits implemented in programmable logic, or other circuits such as BRAMs or the processor.
In the pictured implementation, a columnar area near the center of the die is used for configuration, clock, and other control logic. The config/clock distribution regions 709 extending from this column are used to distribute the clocks and configuration signals across the breadth of the FPGA. Some FPGAs utilizing the architecture illustrated in
Note that
Turning now to
In the pictured implementation, each memory element 802A-802D may be programmed to function as a synchronous or asynchronous flip-flop or latch. The selection between synchronous and asynchronous functionality is made for all four memory elements in a slice by programming Sync/Asynch selection circuit 803. When a memory element is programmed so that the S/R (set/reset) input signal provides a set function, the REV input terminal provides the reset function. When the memory element is programmed so that the S/R input signal provides a reset function, the REV input terminal provides the set function. Memory elements 802A-802D are clocked by a clock signal CK, which may be provided by a global clock network or by the interconnect structure, for example. Such programmable memory elements are well known in the art of FPGA design. Each memory element 802A-802D provides a registered output signal AQ-DQ to the interconnect structure. Because each LUT 801A-801D provides two output signals, O5 and O6, the LUT may be configured to function as two 5-input LUTs with five shared input signals (IN1-IN5), or as one 6-input LUT having input signals IN1-IN6.
In the implementation of
Turning now to
Turning now to
Turning now to
The various elements of the methods of
It can therefore be appreciated that the new and novel circuits and methods of testing the operation of an input/output port has been described. It will be appreciated by those skilled in the art that numerous alternatives and equivalents will be seen to exist which incorporate the disclosed invention. As a result, the invention is not to be limited by the foregoing embodiments, but only by the following claims.
Number | Name | Date | Kind |
---|---|---|---|
4527115 | Mehrotra | Jul 1985 | A |
4691161 | Kant | Sep 1987 | A |
4703484 | Rolfe | Oct 1987 | A |
4970410 | Matsushita | Nov 1990 | A |
5146161 | Kiser | Sep 1992 | A |
5369646 | Shikatani | Nov 1994 | A |
5390191 | Shiono | Feb 1995 | A |
5457381 | Farwell | Oct 1995 | A |
5594694 | Roohparvar | Jan 1997 | A |
5661690 | Roohparvar | Aug 1997 | A |
5734661 | Roberts | Mar 1998 | A |
5786703 | Piirainen | Jul 1998 | A |
5815511 | Yamamoto | Sep 1998 | A |
5828827 | Mateja | Oct 1998 | A |
5936448 | Ohie | Aug 1999 | A |
6180426 | Lin | Jan 2001 | B1 |
6275428 | Fukuda | Aug 2001 | B1 |
6303996 | Lin | Oct 2001 | B2 |
RE37500 | Lee | Jan 2002 | E |
6356095 | Komoriya | Mar 2002 | B1 |
6397361 | Saitoh | May 2002 | B1 |
6469396 | Kawai | Oct 2002 | B1 |
6548910 | Kawai | Apr 2003 | B2 |
6560734 | Whetsel | May 2003 | B1 |
6586266 | Lin | Jul 2003 | B1 |
6643810 | Whetsel | Nov 2003 | B2 |
6721913 | Azimi | Apr 2004 | B1 |
6771087 | Oz | Aug 2004 | B1 |
6807505 | De Jong | Oct 2004 | B2 |
6832348 | Kawabe | Dec 2004 | B2 |
6888414 | Albean | May 2005 | B2 |
6944810 | Oberle | Sep 2005 | B2 |
7013415 | Kamei | Mar 2006 | B1 |
7124340 | Bos | Oct 2006 | B2 |
7134059 | Jeon | Nov 2006 | B2 |
7190593 | Aiki | Mar 2007 | B2 |
7272764 | Rich | Sep 2007 | B2 |
7352169 | Abraham | Apr 2008 | B2 |
7378735 | Lin | May 2008 | B2 |
7409614 | Rich | Aug 2008 | B2 |
7461310 | Wang | Dec 2008 | B2 |
7484188 | Duan | Jan 2009 | B2 |
7535102 | Lin | May 2009 | B2 |
7590902 | Tabatabaei | Sep 2009 | B1 |
7609079 | Von Staudt | Oct 2009 | B2 |
7640474 | Seibold | Dec 2009 | B2 |
7663163 | Ojiro | Feb 2010 | B2 |
7750656 | Del Gatto | Jul 2010 | B2 |
7814386 | Seibold | Oct 2010 | B2 |
7868454 | Lin | Jan 2011 | B2 |
7868463 | Lin | Jan 2011 | B2 |
7888965 | Street | Feb 2011 | B2 |
7923848 | Lin | Apr 2011 | B2 |
7932735 | Von Staudt | Apr 2011 | B2 |
7941781 | Duan | May 2011 | B1 |
7999381 | Lin | Aug 2011 | B2 |
8164966 | Stratz | Apr 2012 | B2 |
8386980 | Murray | Feb 2013 | B2 |
8399988 | Lin | Mar 2013 | B2 |
8548071 | Collins | Oct 2013 | B2 |
9140751 | Ong | Sep 2015 | B2 |
9214941 | Sewani | Dec 2015 | B2 |
20050108603 | Spirkl | May 2005 | A1 |
20080130388 | Mimoto | Jun 2008 | A1 |
20110171906 | Canegallo | Jul 2011 | A1 |
20110179325 | Gupta | Jul 2011 | A1 |
20120017118 | Barakat | Jan 2012 | A1 |
20120324302 | Arslan | Dec 2012 | A1 |
20150346274 | Gorman | Dec 2015 | A1 |