The present disclosure relates to the field of integrated circuit test and in particular to the test of data interfaces using a loop back.
High speed data links in and out of a CPU (Central Processing Unit) are tested after the CPU is produced to ensure that the CPU is functional and meets expected quality levels. Higher speed links are more difficult to test and require more expensive test equipment, such as ATE (Automated Test Equipment). Typically, the die is attached to a testing socket or test bed and then programmed to produce commands or data on its output pins. These are received and analyzed by the test equipment. Similarly, the test equipment can be programmed to send data and commands to the CPU inputs. The CPU performance can then be analyzed by the CPU or by other equipment. In some tests, the commands and data fed to the CPU are designed so that the CPU produces a corresponding output on a different link. This output can be evaluated to determine whether the input was properly received.
Connected functional testers used for such tests are expensive and require time for the appropriate connections to be made. For PCIe and other high speed links, ATE (Automated Test Equipment) testers as well as system-based test initiatives typically use expensive custom PCIe ASICs (Application-Specific Integrated Circuits) on test cards.
Embodiments of the invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
Full coverage functional testing of PCIe (Peripheral Component Interconnect-express) and similar types of links can be built in to a CPU (Central Processing Unit). CPU cores generate a request packet to a PCI-express or DMI (Direct Media Interface) link which then translates the header & data of the packet creating a new request that either targets main memory with a read/write, or represents a message class packet. The resulting request is then looped back from the Tx (Transmit) port of the CPU to the Rx (Receive) port of the CPU, appearing as an inbound request to the CPU.
In one embodiment, the invention includes PCIe header translation logic to steer addresses from MMIO (Memory Mapped Input/Output) to main memory. A PCIe data drop mode aids with WRITE to READ conversion. PCIe data translation logic enables the injection of arbitrary PCIe request types. An ASM code configures the test mode and sends requests.
This approach can be used to provide deterministic coverage of non-deterministic interfaces such as PCIe in high volume situations. The testing can be performed using on-die testing instead of a connected functional tester. Expensive functional testers and external high speed test cards can therefore be eliminated. This includes ATE (Automated Test Equipment) testers as well as system-based test initiatives which typically use expensive custom PCIe ASICs (Application-Specific Integrated Circuits) on test cards.
This functional testing can be used with CPU packages that include a CPU in combination with graphics and chipset devices that are coupled with other external devices, such as memory (e.g., flash/DRAM (Dynamic Random Access Memory)/SRAM (Static Random Access Memory)/etc.) and circuit boards (e.g., motherboards, etc.)
PCIe translation and loopback has been used on legacy chipsets with a very limited test stimulus capability. Some embodiments of the present invention use CPU cores to generate the test stimulus, providing a programmable and high-speed mechanism for flooding PCIe links with request traffic. In addition, the CPU cores can “write” data to MMIO which the link then translates into PCIe request packets to be driven on the Rx port for the link.
In other words, CPU cores may be run in a test mode as PCIe test generators. The CPU cores generate outgoing WRITE requests as DATA writes from the CPU cores. These are stored to MMIO and translated to incoming READ requests. The incoming read requests then appear on the inbound PCIe port.
This allows software running from the CPU core to spoof all possible PCIe messages and request types. Running the test in an internal test mode from the CPU core also allows non-deterministic or asynchronous interfaces to be tested.
Referring again to
After translating the header, or at the same time as translating the header, the dummy data 107 is translated using a data ATM 113. In this example the data ATM removes the dummy data to leave only the memory READ header 111. The dummy data is included so that the original MMIO WRITE command is processed as a standard MMIO WRITE command, however, for a memory READ no data is included. The dummy data having been stripped out from the command, the command is looped back 115 as a test packet to an input port.
The loop back 115 can be implemented in a variety of different ways as described in more detail below. A switchable jumper on the die can be used. Alternatively, a jumper can be attached to the die or to a socket into which the die has been inserted. As a further alternative, the die may be installed onto a motherboard or into a socket on a motherboard and the loop back can be performed using a special card. In one example, the operations of
In one example, the test headers are additional memory READ commands. In another example, the test headers are directed to another external device such as another PCIe interface or to internal or external graphics. In another example, the test headers are vendor defined messages (VDM) in the PCIe context that can relate to identification, operation, or use of attached PCIe peripheral devices.
In the upstream path, the upstream test packet received at the core 219 consists of a memory READ command plus 4 test headers. As in
In
The multiplexer 317 has two inputs. One input is the PCIe transmit output loopback line 315. The other input is the PCIe receive line 307. The multiplexer's output is the PCIe receive line to the core, shown as carrying a DDR request 319 which is sent up to the core 309. The multiplexer 317 is controlled by a loop back enable line 321 into the multiplexer. The enable line determines which of the two inputs is transmitted up to the core. The enable line may be controlled by an external pin or by setting an internal configuration register, or in other ways. The loopback line 315, enable pin 321, and multiplexer 317 allow the CPU 303 to switch from normal operation in which the PCIe input receives data externally to the loopback operation shown in
The CPU may be caused to generate test packets using any of a variety of different techniques. In one example, the CPU runs a software program that causes it to generate test packets. In another example the instructions to generate test packets are loaded directly into an instruction cache of a core of the CPU so that, upon power up, the CPU runs the loaded instruction cache directly without boot up or software being used. These two different techniques allow different aspects of the CPU and system operation to be tested independently of each other.
Referring to
The input/output controller hub 505 includes interfaces to additional PCIe devices 531, universal serial bus devices 533, and other external peripheral input/output devices 533. These interfaces are used for mass storage, displays, and user input/output devices, such as a keyboard and mouse. The input/output controller hub may also include a display interface and other additional interfaces.
The loop back connectors described above may be integrated into the CPU 503 and the ICH 505 as shown, for example, in
The CPU 503 also includes a DMI interface which is a second high speed interface between the CPU and the ICH. This interface may be tested in the same way as the PCIe interface. Other interfaces such as USB and Thunderbolt may be tested using approaches similar to those described herein.
The memory interface 515 is shown coupled to a test device 516. In the example described above, the CPU core that initiates the test packets also receives the looped back test packets and can count and compare the input packets received to the output packets that it generated. In another example, a test detector 516 is coupled to the system memory interface. If the output test packets are looped back as MEM READ commands, then those commands will be sent to the MEM interface 515. The test detector 516 can detect those commands as they are placed on the memory interface bus.
While the CPU and ICH are shown as coupled together, each can be tested without being connected to the other. The DMI interface of the CPU can be tested by connecting a loop back connector instead of the ICH. Alternatively, an internal loop back connection as shown in
A wide range of additional and alternative devices may be coupled to the computer system 501 shown in
It is to be appreciated that a lesser or more equipped system than the examples described above may be preferred for certain implementations. Therefore, the configuration of the exemplary systems and circuits may vary from implementation to implementation depending upon numerous factors, such as price constraints, performance requirements, technological improvements, or other circumstances.
Embodiments may be implemented as any or a combination of: one or more microchips or integrated circuits interconnected using a motherboard, hardwired logic, software stored by a memory device and executed by a microprocessor, firmware, an application specific integrated circuit (ASIC), and/or a field programmable gate array (FPGA). The term “logic” may include, by way of example, software or hardware and/or combinations of software and hardware.
References to “one embodiment”, “an embodiment”, “example embodiment”, “various embodiments”, etc., indicate that the embodiment(s) of the invention so described may include particular features, structures, or characteristics, but not every embodiment necessarily includes the particular features, structures, or characteristics. Further, some embodiments may have some, all, or none of the features described for other embodiments.
In the following description and claims, the term “coupled” along with its derivatives, may be used. “Coupled” is used to indicate that two or more elements co-operate or interact with each other, but they may or may not have intervening physical or electrical components between them.
As used in the claims, unless otherwise specified the use of the ordinal adjectives “first”, “second”, “third”, etc., to describe a common element, merely indicate that different instances of like elements are being referred to, and are not intended to imply that the elements so described must be in a given sequence, either temporally, spatially, in ranking, or in any other manner.
The drawings and the forgoing description give examples of embodiments. Those skilled in the art will appreciate that one or more of the described elements may well be combined into a single functional element. Alternatively, certain elements may be split into multiple functional elements. Elements from one embodiment may be added to another embodiment. For example, orders of processes described herein may be changed and are not limited to the manner described herein. Moreover, the actions any flow diagram need not be implemented in the order shown; nor do all of the acts necessarily need to be performed. Also, those acts that are not dependent on other acts may be performed in parallel with the other acts. The scope of embodiments is by no means limited by these specific examples. Numerous variations, whether explicitly given in the specification or not, such as differences in structure, dimension, and use of material, are possible. The scope of embodiments is at least as broad as given by the following claims.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US11/66406 | 12/21/2011 | WO | 00 | 6/28/2013 |