Loopback configuration for bi-directional interfaces

Information

  • Patent Grant
  • 8724483
  • Patent Number
    8,724,483
  • Date Filed
    Monday, October 22, 2007
    16 years ago
  • Date Issued
    Tuesday, May 13, 2014
    10 years ago
Abstract
An interface for implementing a loopback configuration which offers improved calibration and/or testing of an electronic system is disclosed. More specifically, embodiments provide a bi-directional interface with at least two portions or partitions capable of communicating data in opposite directions and implementing a loopback configuration between components of an electronic system, thereby enabling more flexible, efficient and effective calibration and/or testing of the electronic system using a single interface. The loopback of the partitioned bi-directional interface may be used to perform data link training and/or electronic system testing. In one embodiment, the loopback configuration of the interface may be reversible. Additionally, the looped or coupled end of the partitions may be switched from one component to another, thereby reversing the configuration of the loopback in one embodiment. As such, embodiments enable different and/or additional calibration operations and/or tests to be performed when compared with conventional loopback configurations.
Description
BACKGROUND OF THE INVENTION

Loopback configurations are often used to calibrate and test integrated circuits. For example, a master component or circuit may send data and/or clock signals to a slave component to calibrate the slave component with respect to the master component (e.g., often referred to as “training”), where the responses received by the master component from the slave component indicate whether or not the slave component is calibrated. Additionally, this training using the loopback configuration can be performed periodically to recalibrate the system and compensate for variations (e.g., process variations, voltage variations, temperature variations, etc.) which occur over time. Loopback configurations may also be used to test or verify a slave component by sending test data (e.g., test vectors or patterns) to the slave component and comparing received responses with expected values to validate the operation of the slave component.


Some conventional loopback configurations utilize multiple dedicated unidirectional interfaces for sending the training data or test data between the master and slave components. For example, a first interface is used to send the data from the master component to the slave component, whereas a second interface is used to send data from the slave component to the master component. As such, each interface has a fixed (e.g., predetermined and unchangeable) direction of data communication.


Although conventional loopback configurations using multiple unidirectional interfaces enable integrated circuit calibration and testing, the results of the testing and the effectiveness of the calibration is limited. For example, the use of multiple interfaces makes it more difficult to isolate problems that may exist on one of the multiple interfaces. Additionally, since multiple interfaces are required to calibrate the system, the interfaces cannot be calibrated separately. As such, additional calibration steps are required to account for all the possible loopback configurations, where each configuration utilizes a different combination of interfaces and/or interface components (e.g., required to link the interfaces and implement the loopback). Further, the fixed master/slave relationship and the fixed direction of data communication between the components further limits the calibration and testing of the system and components thereof.


Other conventional loopback configurations use multiple bi-directional interfaces for communicating data between master and slave components. Conventional bi-directional interfaces comprise multiple paths or lanes, where each lane is capable of communicating information in either a forward or reverse direction depending upon the current configuration of each respective lane. Additionally, conventional bi-directional interfaces configure all lanes to communicate information in the same direction (e.g., all in the forward direction or all in the reverse direction), thereby operating similarly to a dedicated unidirectional interface at any given instant in time. As such, conventional loopback configurations using multiple bi-directional interfaces operate similarly to the conventional loopback configurations utilizing multiple unidirectional interfaces. Thus, conventional loopback configurations using multiple bi-directional interfaces suffer drawbacks similar to those discussed above with respect to conventional loopback configurations utilizing multiple unidirectional interfaces.


SUMMARY OF THE INVENTION

Accordingly, a need exists for a loopback configuration which improves calibration and/or testing capabilities of electronic systems. More specially, a need exists for a loopback configuration which enables more flexible, effective and meaningful calibration and/or testing of electronic systems. Embodiments of the present invention provide novel solutions to these needs and others as described below.


Embodiments are directed to an interface for implementing a loopback configuration which offers improved calibration and/or testing of an electronic system. More specifically, embodiments provide a bi-directional interface (e.g., communication bus) with at least two portions or partitions capable of communicating data in opposite directions and implementing a loopback configuration between components (e.g., a memory controller and a memory, a graphics processor and a memory, between other computer system components, etc.) of an electronic system, thereby enabling more flexible, efficient and effective calibration and/or testing of the electronic system (e.g., comprising the bi-directional interface) using a single interface. The loopback of the partitioned bi-directional interface may be used to perform data link training (e.g., for calibration of a data link, calibration of at least one of the components coupled to the bi-directional interface, compensation for PVT variations of the electronic system, etc.) and/or electronic system testing (e.g., automated testing of components and/or circuitry coupled to the bi-directional interface).


The loopback configuration of the interface may be reversible. For example, the direction in which each partition communicates data may be reversed to effectively reverse the direction of the loopback. Additionally, the looped or coupled end of the partitions may be switched from one component to another, thereby reversing the configuration of the loopback in one embodiment. As such, embodiments enable different and/or additional calibration operations and/or tests to be performed when compared with conventional loopback configurations.


In one embodiment, a bi-directional communication bus includes a first bi-directional portion configured for communicating signals in a first direction, wherein a size of the first bi-directional portion is configurable. The bi-directional communication bus also includes a second bi-directional portion configured for communicating signals in a second direction, wherein the second direction and the first direction are opposed, wherein a size of the second bi-directional portion is configurable. The first and second portions are configured to implement a loopback configuration for communicating signals between components coupled to the first and second portions. The components may include a first component and a second component, and wherein the first and second bi-directional portions communicatively couple the first and second components. In one embodiment, the first component is selected from a group consisting of a graphics processor and a memory controller, wherein the second component includes a memory, and wherein the first and second bi-directional portions implement a memory interface. The loopback configuration of the first and second bi-directional portions may be for performing operations selected from a group consisting of calibration of the bi-directional interface, calibration of at least one of the components, and testing of at least one of the components.


In another embodiment, a method of communicating signals includes partitioning a bi-directional communication bus into a first portion for performing read operations and a second portion for performing write operations. A training operation is performed to characterize signal delay across the communication bus using the first portion and the second portion. At a completion of a training operation, the bi-directional communication bus is reconfigured to communicate signals in a same direction over the first and second portions. Paths of the first portion and paths of the second portion may be interlaced. Additionally, the performing a training operation may include the first portion and the second portion performing read and write operations simultaneously. Alternatively, the performing a training operation may include the first portion and the second portion performing read and write operations sequentially. Further, the first portion may have a larger number of paths than the second portion in one embodiment.


In yet another embodiment, a method of configuring a bi-directional memory interface includes initiating a loopback configuration of a first portion and a second portion of the bi-directional interface, wherein the first and second portions couple a memory to a memory controller. Signals are communicated over the first portion from the memory controller to the memory. Signals are communicated over the second portion from the memory to the memory controller. The loopback configuration is exited and a normal operating mode of the bi-directional interface is commenced, wherein the normal operating mode comprises accessing the memory using the bi-directional interface, wherein the first and second portions of the bi-directional bus communicate signals in a same direction during the normal operating mode. The memory controller may be implemented within a graphics processor in one embodiment. The direction of signal communication over the first and second portions in the loopback configuration may be reversible. Additionally, communication of the signals over the first and second portions may include performing operations selected from a group consisting of calibration of the bi-directional interface, calibration of the memory, and testing of the memory.





BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements.



FIG. 1 shows an exemplary computer system platform upon which embodiments of the present invention may be implemented.



FIG. 2A shows a block diagram of an exemplary partitioning of a bi-directional interface for implementing an exemplary loopback configuration in accordance with one embodiment of the present invention.



FIG. 2B shows a block diagram of an exemplary partitioning of a bi-directional interface for implementing an exemplary loopback configuration in a reverse direction in accordance with one embodiment of the present invention.



FIG. 2C shows a block diagram of an exemplary partitioning of a bi-directional interface in an interlaced manner for implementing an exemplary loopback configuration in accordance with one embodiment of the present invention.



FIG. 3 shows a block diagram of an exemplary partitioning using more than two partitions of a bi-directional interface for implementing an exemplary loopback configuration in accordance with one embodiment of the present invention.



FIG. 4A shows an exemplary interface component comprising a flip-flop in accordance with one embodiment of the present invention.



FIG. 4B shows an exemplary interface component comprising a flip-flop and a buffer in accordance with one embodiment of the present invention.



FIG. 4C shows an exemplary interface component comprising a buffer in accordance with one embodiment of the present invention.



FIG. 5 shows an exemplary process of performing data link training using a loopback configuration of a bi-directional interface in accordance with one embodiment of the present invention.



FIG. 6 shows an exemplary process of performing automated testing using a loopback configuration of a bi-directional interface in accordance with one embodiment of the present invention.



FIG. 7 shows an exemplary process of configuring a bi-directional interface in accordance with one embodiment of the present invention.





DETAILED DESCRIPTION OF THE INVENTION

Reference will now be made in detail to embodiments of the present invention, examples of which are illustrated in the accompanying drawings. While the present invention will be discussed in conjunction with the following embodiments, it will be understood that they are not intended to limit the present invention to these embodiments alone. On the contrary, the present invention is intended to cover alternatives, modifications, and equivalents which may be included with the spirit and scope of the present invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, embodiments of the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the present invention.


Notation and Nomenclature


Some portions of the detailed descriptions which follow are presented in terms of procedures, logic blocks, processing and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. In the present application, a procedure, logic block, process, or the like, is conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system.


It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing the terms such as “accepting,” “accessing,” “adding,” “adjusting,” “analyzing,” “applying,” “assembling,” “assigning,” “calculating,” “capturing,” “combining,” “commencing,” “communicating,” “comparing,” “collecting,” “creating,” “defining,” “depicting,” “detecting,” “determining,” “displaying,” “establishing,” “executing,” “exiting,” “generating,” “grouping,” “identifying,” “initiating,” “interacting,” “modifying,” “monitoring,” “moving,” “outputting,” “performing,” “placing,” “presenting,” “processing,” “programming,” “querying,” “removing,” “repeating,” “sampling,” “sorting,” “storing,” “subtracting,” “tracking,” “transforming,” “using,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.


Embodiments of the Invention



FIG. 1 shows exemplary computer system platform 100 upon which embodiments of the present invention may be implemented. As shown in FIG. 1, portions of the present invention are comprised of computer-readable and computer-executable instructions that reside, for example, in computer system platform 100 and which may be used as a part of a general purpose computer network (not shown). It is appreciated that computer system platform 100 of FIG. 1 is merely exemplary. As such, the present invention can operate within a number of different systems including, but not limited to, general-purpose computer systems, embedded computer systems, laptop computer systems, hand-held computer systems, portable computer systems, stand-alone computer systems, or game consoles.


In one embodiment, depicted by dashed lines 130, computer system platform 100 may comprise at least one processor 110 and at least one memory 120. Processor 110 may comprise a central processing unit (CPU) or other type of processor. Depending on the configuration and/or type of computer system environment, memory 120 may comprise volatile memory (e.g., RAM), non-volatile memory (e.g., ROM, flash memory, etc.), or some combination of the two. Additionally, memory 120 may be removable, non-removable, etc.


In other embodiments, computer system platform 100 may comprise additional storage (e.g., removable storage 140, non-removable storage 145, etc.). Removable storage 140 and/or non-removable storage 145 may comprise volatile memory, non-volatile memory, or any combination thereof. Additionally, removable storage 140 and/or non-removable storage 145 may comprise CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store information for access by computer system platform 100.


As shown in FIG. 1, computer system platform 100 may communicate with other systems, components, or devices via communication interface 170. Communication interface 170 may embody computer readable instructions, data structures, program modules or other data in a modulated data signal (e.g., a carrier wave) or other transport mechanism. By way of example, and not limitation, communication interface 170 may couple to wired media (e.g., a wired network, direct-wired connection, etc.) and/or wireless media (e.g., a wireless network, a wireless connection utilizing acoustic, RF, infrared, or other wireless signaling, etc.). Communication interface 170 may also couple computer system platform 100 to one or more input devices (e.g., a keyboard, mouse, pen, voice input device, touch input device, etc.) and/or output devices (e.g., a display, speaker, printer, etc.).


Graphics processor 150 may perform graphics processing operations on graphical data stored in frame buffer 160 or another memory (e.g., 120, 140, 145, etc.) of computer system platform 100. In one embodiment, graphics processor 150 and processor 110 may be combined into a single unit (e.g., thereby forming a general purpose processor). Graphical data stored in frame buffer 160 may be accessed, processed, and/or modified by components (e.g., graphics processor 150, processor 110, etc.) of computer system platform 100 and/or components of other systems/devices. Additionally, the graphical data may be accessed (e.g., by graphics processor 150) and displayed on an output device coupled to computer system platform 100. Accordingly, one or more processors (e.g., processor 130, graphics processor 150, a hybrid processor formed by processor 130 and graphics processor 150, etc.) may access and/or execute instructions stored in a memory accessible to computer system platform 100 (e.g., 120, 140, 145, a memory accessed via communication interface 170, etc.) for performing one or more computer system operations.


As shown in FIG. 1, graphics processor 150 and frame buffer 160 may be communicatively coupled by bi-directional interface 180. It should be appreciated that graphics processor 150 may comprise or implement a memory controller in one embodiment, while frame buffer 160 may comprise or implement a memory component in one embodiment. In this manner, interface 180 may comprise a memory interface. Interface 180 may comprise multiple lanes or paths (e.g., each communicating a bit where bi-directional interface comprises a parallel interface) for communicating information (e.g., using data and/or clock signals) between graphics processor 150 and frame buffer 160. Each path may comprise one or more traces and/or other components for implementing differential signaling, single-ended signaling, or some combination thereof. Additionally, interface 180 may be partitioned into one or more portions or partitions, where at least two partitions are capable of communicating data in opposite directions and implementing a loopback configuration between graphics processor 150 and frame buffer 160 as discussed below.


And in other embodiments, one or more other components of computer system 100 may be communicatively coupled by interface 180. For example, interface 180 may couple processor 110 and graphics processor 150. Alternatively, interface 180 may couple processor 110 and memory 120. Additionally, in other embodiment, interface 180 may implement a chipset interface communicatively coupling a chipset component (e.g., northbridge, southbridge, etc.) to another chipset component and/or a non-chipset component (e.g., processor 110, memory 120, graphics processor 150, frame buffer 160, etc.). As such, although interface 180 is depicted in FIG. 1, and in FIGS. 2A through 3 below, as coupling graphics processor 150 and frame buffer 160, it should be appreciated that interface 180 may couple other components of computer system 100 in other embodiments.



FIG. 2A shows block diagram 200A of an exemplary partitioning of bi-directional interface 180 for implementing exemplary loopback configurations in accordance with one embodiment of the present invention. As shown in FIG. 2A, interface 180 comprises bi-directional partition 282 for transmitting data (e.g., performing a write operation) in a first direction (e.g., from graphics processor 150 to frame buffer 160) as indicated by arrow 283a. Interface 180 also comprises bi-directional partition 284 for transmitting data (e.g., performing a read operation) in a second direction (e.g., from frame buffer 160 to graphics processor 150) as indicated by arrow 285a. Partitions 282 and 284 may be bit-equal (e.g., where each partition is allocated an equal number of lanes, paths, bits, etc.) in one embodiment, or alternatively, the partitions (e.g., 282 and 284) may be bit-unequal (e.g., where each partition is allocated a different number of lanes, paths, bits, etc.) in another embodiment. Additionally, it should be appreciated that information may be communicated over partitions 282 and 284 simultaneously in one embodiment, or alternatively, information may be communicated over the partitions (e.g., 282 and 284) non-simultaneously or sequentially in another embodiment.


As shown in FIG. 2A, frame buffer 160 comprises interface component 265 for implementing a loopback configuration (e.g., depicted by arrows 283a, 267a and 285a) of interface 180 by looping or coupling partitions 282 and 284. For example, interface component 265 may receive signals (e.g., generated by components of graphics processor 150) transmitted over partition 282 and communicate signals over partition 284 in response thereto. The signals communicated over partition 284 by interface component 265 may be generated (e.g., by interface component 265, by another component of frame buffer 160, by a component of computer system 100, etc.) based upon signals received over partition 282, may comprise relayed or conveyed versions of signals communicated over partition 282, or some combination thereof.


Graphics processor 150 comprises interface component 255 for implementing a loopback configuration (e.g., depicted by arrows 285a, 257a and 283a) of interface 180 by looping or coupling partitions 282 and 284. For example, interface component 255 may receive signals (e.g., generated by components of frame buffer 160) transmitted over partition 284 and communicate signals over partition 282 in response thereto. The signals communicated over partition 282 by interface component 255 may be generated (e.g., by interface component 255, by another component of graphics processor 150, by a component of computer system 100, etc.) based upon signals received over partition 284, may comprise relayed or conveyed versions of signals communicated over partition 284, or some combination thereof.


Accordingly, interface 180 may be used to perform data link training (e.g., to calibrate for data link latency, latency attributable to interface components, etc.) when placed in a loopback configuration (e.g., using interface component 255, interface component 265, etc.). For example, training data may be communicated from graphics processor 150 over partition 282 and used to adjust the delay of a frame buffer clock such that subsequently-transferred data may be clocked out from partition 282 by interface component 265. Partition 284 may be used to transmit the received training data (e.g., in encoded or non-encoded form) and/or information related to the training (e.g., a training status indicator indicating whether or not the training is complete, a data bus inversion (DBI) bit to indicate whether the data transmitted over partition 284 is inverted or not, a CRC of the received data, etc.) back to graphics processor 150. Similar data link training may be performed by frame buffer 160 using the partitions (e.g., 282 and 284) and interface component 255. The loopback configuration of interface 180 used for data link training may be transitioned into from a normal or mission operating mode (e.g., where partitions 282 and 284 communicate signals in the same direction).


As such, a single bi-directional interface (e.g., interface 180) may be used to calibrate the interface itself and/or components coupled to the interface (e.g., portions of interface component 265, other components used to communicate data over interface 180, etc.). Although such data link training may be used before normal operation (e.g., mission mode operation) for initial calibration, it should be appreciated that similar data link training may be performed using interface 180 during or in between normal operations (e.g., reads/writes to frame buffer memory 160, etc.) to compensate for variations which may occur over time. Such variations occurring over time may comprise process-voltage-temperature, or PVT, variations. Alternatively, the variations may comprise process variations, voltage variations, temperature variations, or some combination thereof, in other embodiments.


Interface 180 may also be used to perform automated testing of components and/or circuitry of computer system 100 (e.g., coupled to interface 180). For example, test data (e.g., test patterns, test vectors, etc.) may be communicated from graphics processor 150 over partition 282 to interface component 265. The test data may be communicated to the component/circuitry being tested before being communicated back to graphics processor 150 over partition 284 for comparison with expected values to validate operation of components (e.g., portions of a memory core within frame buffer 160, input/output components used to access or communicate data over interface 180 or through components coupled to interface 180, etc.) and/or circuitry coupled to interface 180. The loopback configuration of interface 180 used for automated testing may be transitioned into from a normal or mission operating mode (e.g., where partitions 282 and 284 communicate signals in the same direction). Similar automated testing of graphics processor 150 and/or components thereof may be performed using the partitions (e.g., 282 and 284) and interface component 255. As such, a single bi-directional interface (e.g., interface 180) may be used to automatically test components and/or circuitry coupled to the interface (e.g., 180).



FIG. 2B shows block diagram 200B of an exemplary partitioning of bi-directional interface 180 for implementing exemplary loopback configurations in a reverse direction in accordance with one embodiment of the present invention. As shown in FIG. 2B contrasted with FIG. 2A, the direction of data communication over partitions 282 and 284 can be reversed (e.g., as shown by arrows 283b and 285b of FIG. 2B which point in the opposite direction of arrows 283a and 285a, respectively, of FIG. 2A). In this manner, interface component 265 may implement a first loopback configuration (e.g., depicted by arrows 285b, 267b and 283b) of interface 180, whereas interface component 255 may implement a second loopback configuration (e.g., depicted by arrows 283b, 257b and 285b) of interface 180. It should be appreciated that the loopback configurations of interface 180 implemented by interface components 255 and 265 as depicted in FIG. 2B may be used for calibration (e.g., data link training, etc.) and/or automated testing (e.g., of components coupled to interface 180) as described above with respect to FIG. 2A.


Accordingly, embodiments provide swappable loopback configurations which may be swapped by switching the active interface component between interface component 255 and interface component 265 to swap the looped or coupled end between graphics processor 150 and frame buffer 160 as depicted in FIGS. 2A and 2B. Additionally, embodiments provide reversible loopback configurations which may be reversed by switching the direction in which data is communicated over partitions 282 and 284 as depicted in FIGS. 2A and 2B. Thus, embodiments of the present invention enable different and/or additional calibration operations and/or tests to be performed when compared with conventional loopback configurations.


Although FIGS. 2A and 2B depict only two partitions (e.g., 282 and 284), it should be appreciated that interface 180 may comprise a larger number of partitions in other embodiments. Additionally, it should be appreciated that interface 180 may comprise at least one portion that is not used in a loopback configuration in other embodiments, where the unused portion or portions may be arranged in any fashion (e.g., between, beside, etc.) with respect to the portions used for the loopback configuration. It should also be appreciated that graphics processor 150 or frame buffer 160 may be implemented without an interface component (e.g., 255 and 265, respectively) for implementing the loopback configuration in other embodiments. Further, it should be appreciated that the loopback configuration depicted in FIGS. 2A and 2B may be implemented using any bi-directional interface coupling any two computer system components (e.g., of computer system 100 of FIG. 1, etc.) in other embodiments.



FIG. 2C shows block diagram 200C of an exemplary partitioning of a bi-directional interface in an interlaced manner for implementing an exemplary loopback configuration in accordance with one embodiment of the present invention. As shown in FIG. 2C, interface 180 comprises multiple bits or paths 287a-287n in an interlaced loopback configuration (e.g., where at least one of the paths is configured in a direction opposite from at least one other path) for communicating data or other signals between graphics processor 150 and frame buffer 160. For example, paths 287a-287n may alternate (e.g., the direction of every other bit or path is reversed) as shown in FIG. 2C. In other embodiments, paths 287a-287n may comprise an alternate interlaced configuration (e.g., the direction of every nth bit or path is reversed, the directions of the paths 287a-287n are randomly configured, etc.). As such, it should be appreciated that one or more of paths 287a-287n in a first direction (e.g., from graphics processor 160 toward frame buffer 160) may implement a first partition (e.g., 282) of interface 180, while one or more of paths 287a-287n in a second direction (e.g., from frame buffer 160 toward graphics processor 160) may implement a second partition (e.g., 284) of interface 180.


Accordingly, the interlaced loopback configuration of interface 180 as shown in FIG. 2C may be used to perform data link training (e.g., to calibrate for data link latency, latency attributable to interface components, etc.) in one embodiment. For example, interface 180 may be transitioned from a normal or mission operating mode (e.g., with all of paths 287a-287n in the same direction) to the interface configuration depicted in FIG. 2C to enable the communication of training data between graphics processor 150 and frame buffer 160. As such, interface 180 may be used to calibrate the interface itself and/or components coupled to the interface (e.g., portions of interface component 265, other components used to communicate data over interface 180, etc.). Although such data link training may be used before normal operation for initial calibration, it should be appreciated that similar data link training may be performed using interface 180 during or in between normal operations (e.g., reads/writes to frame buffer memory 160, etc.) to compensate for variations which may occur over time. Such variations occurring over time may comprise process-voltage-temperature, or PVT, variations. Alternatively, the variations may comprise process variations, voltage variations, temperature variations, or some combination thereof, in other embodiments.


Additionally, the interlaced loopback configuration of interface 180 as shown in FIG. 2C may be used to perform automated testing of components and/or circuitry of computer system 100 (e.g., coupled to interface 180) in one embodiment. For example, interface 180 may be transitioned from a normal or mission operating mode (e.g., with all of paths 287a-287n in the same direction) to the interface configuration depicted in FIG. 2C to enable the communication of test data (e.g., test patterns, test vectors, etc.) between graphics processor 150 and frame buffer 160. The test data may be communicated to the component/circuitry being tested before being communicated back to graphics processor 150 for comparison with expected values to validate operation of components (e.g., portions of a memory core within frame buffer 160, input/output components used to access or communicate data over interface 180 or through components coupled to interface 180, etc.) and/or circuitry coupled to interface 180. Similar automated testing of graphics processor 150 and/or components thereof may be also be performed using the interfaced loopback configuration of interface 180. As such, interface 180 may be used to automatically test components and/or circuitry coupled to the interface (e.g., 180).



FIG. 3 shows block diagram 300 of an exemplary partitioning using more than two partitions of bi-directional interface 180 for implementing an exemplary loopback configuration in accordance with one embodiment of the present invention. As shown in FIG. 3, interface 180 is partitioned into four partitions (e.g., 352a, 362a, 352b and 362b), where each partition comprises one or more paths/lanes. In one embodiment, partitions 352a and 362a may communicate even bits, while partitions 352b and 362b may communicate odd bits. Partitions 352a and 362a communicate information between interface component 355a of graphics processor 150 and interface component 365a of frame buffer 160. Partitions 352b and 362b communicate information between interface component 355b of graphics processor 150 and interface component 365b of frame buffer 160. Additionally, interface components 355a and 355b are clocked by a local graphics processor clock and coupled to memory controller logic 359, while interface components 365a and 365b are clocked by a local memory clock and coupled to memory core 369.


Interface components 355a and 365a are operable to couple or loop partitions 352a and 362a (e.g., as discussed above with respect to interface components 255 and 265 of FIGS. 2A and 2B), and therefore, implement loopback configurations (e.g., using interface component 355a, using interface component 365a, etc.) between graphics processor 150 and frame buffer 160. Similarly, interface components 355b and 365b are operable to couple or loop partitions 352b and 362b (e.g., as discussed above with respect to interface components 255 and 265 of FIGS. 2A and 2B), and therefore, implement loopback configurations (e.g., using interface component 355b, using interface component 365b, etc.) between graphics processor 150 and frame buffer 160. Interface components 355a-365b may be selectively activated and implement swappable loopback configurations (e.g., as discussed above with respect to FIGS. 2A and 2B) in one embodiment. Additionally, it should be appreciated that the direction of information communication over partitions 352a-362b may be reversed in one embodiment, thereby enabling interface 180 to implement reversible loopback configurations (e.g., as discussed above with respect to FIGS. 2A and 2B) in one embodiment. Accordingly, embodiments of the present invention enable different and/or additional calibration operations and/or tests to be performed when compared with conventional loopback configurations.


Data link training may be performed using two or more of partitions 352a-362b when the partitions are placed in a loopback configuration (e.g., using interface components 355a, 365a, 355b, 365b, or some combination thereof). For example, memory controller logic 359 may communicate training data over partition 352a using interface component 355a. The training data may be used by interface component 365a to adjust the delay of the local memory clock such that subsequently-transferred data may be clocked out from partition 352a by interface component 365a. Partition 362a may be used to transmit the received training data (e.g., in encoded or non-encoded form) and/or information related to the training (e.g., a training status indicator indicating whether or not the training is complete, a data bus inversion (DBI) bit to indicate whether the data transmitted over partition 284 is inverted or not, a CRC of the received data, etc.) back to memory controller logic 359 (e.g., to provide feedback and enable control of the data link training process) via interface component 355a. Similar data link training may be performed by memory controller logic 359 using partitions 352b and 362b, or alternatively, data link training may be performed by memory core 369 using any of the partitions (e.g., 352a-362b) and interface components (e.g., 355a and/or 355b). As such, a single bi-directional interface (e.g., interface 180) may be used to calibrate the interface itself and/or components coupled to the interface (e.g., portions of interface components 355a-365b, other components used to communicate data over interface 180, etc.). Although such data link training may be used before normal operation for initial calibration, it should be appreciated that similar data link training may be performed using interface 180 during or in between normal operations (e.g., reads/writes to frame buffer memory 160, etc.) to compensate for variations which may occur over time. Such variations occurring over time may comprise process-voltage-temperature, or PVT, variations. Alternatively, the variations may comprise process variations, voltage variations, temperature variations, or some combination thereof, in other embodiments.


Additionally, automated testing of components and/or circuitry of computer system 100 (e.g., coupled to interface 180) may be performed using two or more of partitions 352a-362b when the partitions are placed in a loopback configuration (e.g., using interface components 355a, 365a, 355b, 365b, or some combination thereof). For example, test data (e.g., test patterns, test vectors, etc.) may be communicated from memory controller logic 359 over partition 352a to interface component 365a. The test data may be communicated to the component/circuitry being tested before being communicated back to memory controller logic 359 over partition 362a for comparison with expected values to validate operation of components (e.g., portions of a memory core 369, input/output components used to access or communicate data over interface 180 or through components coupled to interface 180, etc.) and/or circuitry coupled to interface 180. Similar automated testing may be performed by memory controller logic 359 using partitions 352b and 362b, or alternatively, graphics processor 150 and/or components thereof (e.g., memory controller logic 359, etc.) may be tested using any of the partitions (e.g., 352a-362b) and interface components (e.g., 355a and 355b). As such, a single bi-directional interface (e.g., interface 180) may be used to automatically test components and/or circuitry coupled to the interface (e.g., 180).


Although FIG. 3 depicts four partitions, it should be appreciated that a larger or smaller number of partitions can be used in other embodiments. Additionally, it should be appreciated that a larger or smaller number of interface components (e.g., 355a-365b) may be used in other embodiments. Further, it should be appreciated that multiple interface components (e.g., 355a and 355b, 365a and 365b, etc.) may be combined into a single interface component in other embodiments. Additionally, although interface components 355a-365b are shown as clocked interface components in FIG. 3, it should be appreciated that one or more of the interface components (e.g., 355a and 355b, 365a and 365b, etc.) may not be clocked in other embodiments.



FIG. 4A shows exemplary interface component 400a comprising flip-flop 410 in accordance with one embodiment of the present invention. Interface component 400a may be used to implement interface component 255, 265, 355a, 355b, 365a, 365b, or some combination thereof.


As shown in FIG. 4A, flip-flop 410 is clocked by a clock input (e.g., a local memory clock) and receives data (e.g., communicated over partition 282, 284, 352a, 362a, 352b, 362b, or some combination thereof). The output of flip-flop 410 is output from interface component 400a as an auxiliary output (e.g., to memory core 369, to memory controller logic 359, etc.) and/or as a data output (e.g., communicated over partition 282, 284, 352a, 362a, 352b, 362b, or some combination thereof). Where the output from flip-flop 410 comprises an auxiliary output, interface component 400a may receive an auxiliary input (e.g., from the same component to which the auxiliary output is communicated) which may then be output from interface component 400a as a data output (e.g., communicated over partition 282, 284, 352a, 362a, 352b, 362b, or some combination thereof). For example, the auxiliary input and/or output may comprise data used for data link training (e.g., communicated to and/or from components for performing the clock delay and/or other operations used for data link training), data used for component/circuitry testing (e.g., communicated to and/or from the component being tested).



FIG. 4B shows an exemplary interface component 400b comprising flip-flop 410 and buffer 420 in accordance with one embodiment of the present invention. Interface component 400b may operate similarly to interface component 400a of FIG. 4A, except that data may be buffered by buffer 420 before being output from interface component 400b.



FIG. 4C shows exemplary interface component 400c comprising buffer 420 in accordance with one embodiment of the present invention. Interface component 400c may operate similarly to interface component 400b of FIG. 4B, except that data input to interface component 400c is not passed through a clocked flip-flop (e.g., 410) and instead communicated to buffer 420 and/or from interface component 400c as an auxiliary output.


Although FIGS. 4A-4C depict specific components (e.g., flip-flop 410 and/or buffer 420) for accessing the data signals, it should be appreciated that the interface components may comprise different components (e.g., logic components/circuitry, other components/circuitry, etc.) and/or different combinations of components in other embodiments. Additionally, it should be appreciated that flip-flop 410 and/or buffer 420 may be part of a larger logic block in other embodiments.



FIG. 5 shows exemplary process 500 of performing data link training using a loopback configuration of a bi-directional interface in accordance with one embodiment of the present invention. As shown in FIG. 5, step 510 involves initiating a loopback configuration of a bi-directional interface (e.g., 180). As such, a first partition (e.g., 282) may be identified for communicating information in a first direction and a second partition (e.g., 284) may be identified for communicating information in a second direction. The first and second partitions may couple a first and second component (e.g., graphics processor 150 and frame buffer 160), where each component may comprise a respective interface component (e.g., 255 and 265) for implementing the loopback configuration (e.g., by looping or coupling the partitions). The first and second directions may comprise opposite directions in one embodiment. Additionally, the directions of information communication over each partition may be reversible in one embodiment, thereby enabling the interface (e.g., 180) to implement reverse loopback configurations. And further, the bits or paths of interface 180 (e.g., 287a-287n) may be transitioned into an interlaced loopback configuration (e.g., as discussed with respect to FIG. 2C) in step 510 in one embodiment.


Step 520 involves performing initial data link training to calibrate the interface (e.g., 180 or portions thereof) and/or interface components (e.g., any component coupled to interface 180, interface components 255/265, etc.). The data link training may comprise communicating training data from the first component (e.g., graphics processor 150) over the first partition (e.g., 282) and used to adjust the delay of a frame buffer clock such that subsequently-transferred data may be clocked out from the first partition (e.g., 282) by an interface component (e.g., 265) of the second component (e.g., frame buffer 160). The second partition (e.g., 284) may be used to transmit the received training data (e.g., in encoded or non-encoded form) and/or information related to the training (e.g., a training status indicator indicating whether or not the training is complete, a data bus inversion (DBI) bit to indicate whether the data transmitted over partition 284 is inverted or not, a CRC of the received data, etc.) back to the first component (e.g., graphics processor 150). Similar data link training may be performed by the second component (e.g., frame buffer 160) using the partitions (e.g., 282 and 284) and an interface component (e.g., 255) of the first component (e.g., graphics processor 150).


As shown in FIG. 5, step 530 involves exiting the loopback configuration and commencing a normal operating mode. Where the bi-directional interface (e.g., 180) comprises a memory interface, the normal operating mode may comprise accessing a memory (e.g., frame buffer 160) coupled to the interface (e.g., 180).


Thereafter, process 500 may commence, or alternatively, step 540 may be performed. Step 540 involves initiating a loopback configuration of a bi-directional interface (e.g., 180). Step 540 may be performed analogously to step 510 in one embodiment.


As shown in FIG. 5, step 550 involves performing data link training to compensate for PVT variations by recalibrating the interface and/or interface components. Step 550 may be performed similarly to step 520 in one embodiment. Thereafter, step 530 may be repeated.



FIG. 6 shows exemplary process 600 of performing automated testing using a loopback configuration of a bi-directional interface in accordance with one embodiment of the present invention. As shown in FIG. 6, step 610 involves initiating a loopback configuration of a bi-directional interface (e.g., 180). As such, a first partition (e.g., 282) may be identified for communicating information in a first direction and a second partition (e.g., 284) may be identified for communicating information in a second direction. The first and second partitions may couple a first and second component (e.g., graphics processor 150 and frame buffer 160), where each component may comprise a respective interface component (e.g., 255 and 265) for implementing the loopback configuration (e.g., by looping or coupling the partitions). The first and second directions may comprise opposite directions in one embodiment. Additionally, the directions of information communication over each partition may be reversible in one embodiment, thereby enabling the interface (e.g., 180) to implement reverse loopback configurations. And further, the bits or paths of interface 180 (e.g., 287a-287n) may be transitioned into an interlaced loopback configuration (e.g., as discussed with respect to FIG. 2C) in step 610 in one embodiment.


Step 620 involves performing automated testing of components and/or circuitry coupled to the interface (e.g., 180). The automated testing may comprise communicating test data (e.g., test patterns, test vectors, etc.) from the first component (e.g., graphics processor 150) over the first partition (e.g., 282) to an interface component (e.g., 265) of the second component (e.g., frame buffer 160). The test data may be communicated to the component/circuitry being tested before being communicated back to the first component (e.g., graphics processor 150) over the second partition (e.g., 284) for comparison with expected values to validate operation of components (e.g., portions of a memory core within frame buffer 160, input/output components used to access or communicate data over interface 180 or through components coupled to interface 180, etc.) and/or circuitry coupled to the interface (e.g., 180). Similar automated testing of the first component (e.g., graphics processor 150) and/or components thereof may be performed using the partitions (e.g., 282 and 284) and the interface component (e.g., 255) of the first component (e.g., graphics processor 150).


As shown in FIG. 6, step 630 involves exiting the loopback configuration and commencing a normal operating mode. Where the bi-directional interface (e.g., 180) comprises a memory interface, the normal operating mode may comprise accessing a memory (e.g., frame buffer 160) coupled to the interface (e.g., 180).



FIG. 7 shows exemplary process 700 of configuring a bi-directional interface in accordance with one embodiment of the present invention. As shown in FIG. 7, step 710 involves initiating a loopback configuration of a first portion and a second portion of a bi-directional interface. The first portion or partition (e.g., 282) may communicate information in a first direction, whereas the second portion or partition (e.g., 284) may communicate information in a second direction. The first and second partitions may couple a first and second component (e.g., graphics processor 150 and frame buffer 160), where each component may comprise a respective interface component (e.g., 255 and 265) for implementing the loopback configuration (e.g., by looping or coupling the partitions). The first and second directions may comprise opposite directions in one embodiment. Additionally, the directions of information communication over each partition may be reversible in one embodiment, thereby enabling the interface (e.g., 180) to implement reverse loopback configurations.


Step 720 involves communicating signals over the first portion (e.g., 282) from a memory controller (e.g., memory controller logic 359) to a memory (e.g., frame buffer 160). The memory controller may be implemented within a graphics processor (e.g., 150) in one embodiment. In one embodiment, the signals communicated in step 720 may comprise calibration signals (e.g., data link training signals) for calibrating portions of the bi-directional interface (e.g., 180), components of the memory (e.g., frame buffer 160), components of the memory controller (e.g., memory controller logic 359), other components coupled to the interface (e.g., 180), etc. Alternatively, the signals communicated in step 720 may comprise test signals (e.g., test vectors, test patterns, etc.) for testing portions of the bi-directional interface (e.g., 180), components of the memory (e.g., frame buffer 160), components of the memory controller (e.g., memory controller logic 359), other components coupled to the interface (e.g., 180), etc.


As shown in FIG. 7, step 730 involves communicating signals over the second portion (e.g., 284) from the memory (e.g., frame buffer 160) to the memory controller (e.g., memory controller logic 359). In one embodiment, the signals communicated in step 720 may comprise calibration signals (e.g., data link training signals) for calibrating portions of the bi-directional interface (e.g., 180), components of the memory (e.g., frame buffer 160), components of the memory controller (e.g., memory controller logic 359), other components coupled to the interface (e.g., 180), etc. Alternatively, the signals communicated in step 730 may comprise test signals (e.g., test vectors, test patterns, etc.) for testing portions of the bi-directional interface (e.g., 180), components of the memory (e.g., frame buffer 160), components of the memory controller (e.g., memory controller logic 359), other components coupled to the interface (e.g., 180), etc.


Step 740 involves exiting the loopback configuration and commencing a normal operating mode. Where the bi-directional interface (e.g., 180) comprises a memory interface, the normal operating mode may comprise accessing a memory (e.g., frame buffer 160) coupled to the interface (e.g., 180).


In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is, and is intended by the applicant to be, the invention is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Hence, no limitation, element, property, feature, advantage, or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

Claims
  • 1. A bi-directional communication bus system comprising: a first component;a second component;a first portion configured to communicate signals between said first component and said second component, wherein said first portion is operable to implement a first lane; anda second portion configured to communicate signals between said first component and said second component, wherein said second portion is operable to implement a second lane; andwherein said first and second portions are operable to implement a plurality of loopback configurations one configuration at a time for communicating signals between said first and second components, wherein a first loopback configuration of said plurality of loopback configurations comprises a contemporaneous communication of signals in a first direction over said first portion and in a second direction over said second portion in a first configuration setting, wherein a second loopback configuration of said plurality of loopback configurations comprises a contemporaneous communication of signals in said second direction over said first portion and in said first direction over said second portion, wherein said second component comprises an interface component operable to couple said first and second portions in a second configuration setting, and wherein said interface component is further operable to couple said first and second portions to an auxiliary interface.
  • 2. The bi-directional communication bus system of claim 1, wherein said first component is a graphics processor, wherein said second component comprises a memory, and wherein said first and second portions comprise a memory interface.
  • 3. The bi-directional communication bus system of claim 1, wherein said first component is a memory controller, wherein said second component comprises a memory, and wherein said first and second portions comprise a memory interface.
  • 4. The bi-directional communication bus system of claim 1, wherein said interface component comprises logic circuit.
  • 5. The bi-directional communication bus system of claim 4, wherein said logic circuit comprises a flip-flop.
  • 6. The bi-directional communication bus system of claim 1, wherein said interface component comprises a buffer.
  • 7. The bi-directional communication bus system of claim 1, wherein said plurality of loopback configurations is operable to enable performance of at least one operation selected from a group consisting of calibration of a bi-directional communication bus, calibration of said first component, calibration of said second component, testing of said first component, and testing of said second component.
  • 8. The bi-directional communication bus system of claim 1, wherein said first and second portions are further operable to implement a mission mode of operation.
  • 9. The bi-directional communication bus system of claim 1, wherein said first portion is further operable to implement a third lane, and wherein said first lane, said second lane, and said third lane are interlaced.
  • 10. A method comprising: communicating signals between a first component and a second component over a first portion, wherein said first portion is operable to implement a first lane;communicating signals between said first component and said second component over a second portion, wherein said second portion is operable to implement a second lane; andimplementing a plurality of loopback configurations for communicating signals between said first and second components one configuration at a time, wherein a first loopback configuration of said plurality of loopback configurations comprises a contemporaneous communication of signals in a first direction over said first portion and in a second direction over said second portion in a first configuration setting, wherein a second loopback configuration of said plurality of loopback configurations comprises a contemporaneous communication of signals in said second direction over said first portion and in said first direction over said second portion in a second configuration setting, wherein said second component comprises an interface component operable to couple said first and second portions, and wherein said interface component is further operable to couple said first and second portions to an auxiliary interface.
  • 11. The method of claim 10, wherein said first component is a graphics processor, wherein said second component comprises a memory, and wherein said first and second portions comprise a memory interface.
  • 12. The method of claim 10, wherein said first component is a memory controller, wherein said second component comprises a memory, and wherein said first and second portions comprise a memory interface.
  • 13. The method of claim 10, wherein said interface component comprises logic circuit.
  • 14. The method of claim 13, wherein said logic circuit comprises a flip-flop.
  • 15. The method of claim 10, wherein said interface component comprises a buffer.
  • 16. The method of claim 10, wherein said plurality of loopback configurations is operable to allow performance of at least one operation selected from a group consisting of calibration of a bi-directional communication bus, calibration of said first component, calibration of said second component, testing of said first component, and testing of said second component.
  • 17. The method of claim 10, wherein said first and second portions are further operable to implement a mission mode of operation.
  • 18. The method of claim 10, wherein said first portion is further operable to implement a third lane, and wherein said first lane, said second lane, and said third lane are interlaced.
US Referenced Citations (374)
Number Name Date Kind
3940740 Coontz Feb 1976 A
4208810 Rohner et al. Jun 1980 A
4412281 Works Oct 1983 A
4541075 Dill et al. Sep 1985 A
4773044 Sfarti et al. Sep 1988 A
4885703 Deering Dec 1989 A
4918626 Watkins et al. Apr 1990 A
4949280 Littlefield Aug 1990 A
4951220 Ramacher et al. Aug 1990 A
4985988 Littlebury Jan 1991 A
5036473 Butts et al. Jul 1991 A
5077660 Haines et al. Dec 1991 A
5081594 Horsley Jan 1992 A
5107455 Haines et al. Apr 1992 A
5125011 Fung Jun 1992 A
5276893 Savaria Jan 1994 A
5287438 Kelleher Feb 1994 A
5313287 Barton May 1994 A
5379405 Ostrowski Jan 1995 A
5392437 Matter et al. Feb 1995 A
5400777 Olsson et al. Mar 1995 A
5408606 Eckart Apr 1995 A
5432898 Curb et al. Jul 1995 A
5446836 Lentz et al. Aug 1995 A
5448496 Butts et al. Sep 1995 A
5452104 Lee Sep 1995 A
5452412 Johnson, Jr. et al. Sep 1995 A
5455536 Kono et al. Oct 1995 A
5483258 Cornett et al. Jan 1996 A
5498975 Cliff et al. Mar 1996 A
5513144 O'Toole Apr 1996 A
5513354 Dwork et al. Apr 1996 A
5517666 Ohtani et al. May 1996 A
5530457 Helgeson Jun 1996 A
5543935 Harrington Aug 1996 A
5570463 Dao Oct 1996 A
5574847 Eckart et al. Nov 1996 A
5578976 Yao Nov 1996 A
5594854 Baldwin et al. Jan 1997 A
5623692 Priem et al. Apr 1997 A
5630171 Chejlava, Jr. et al. May 1997 A
5633297 Valko et al. May 1997 A
5634107 Yumoto et al. May 1997 A
5638946 Zavracky Jun 1997 A
5664162 Dye Sep 1997 A
5671376 Bucher et al. Sep 1997 A
5694143 Fielder et al. Dec 1997 A
5705938 Kean Jan 1998 A
5766979 Budnaitis Jun 1998 A
5768178 McLaury Jun 1998 A
5778348 Manduley et al. Jul 1998 A
5805833 Verdun Sep 1998 A
5809230 Pereira Sep 1998 A
5815162 Levine Sep 1998 A
5821949 Deering Oct 1998 A
5854631 Akeley et al. Dec 1998 A
5854637 Sturges Dec 1998 A
5872902 Kuchkuda et al. Feb 1999 A
5884053 Clouser et al. Mar 1999 A
5896391 Solheim et al. Apr 1999 A
5909595 Rosenthal et al. Jun 1999 A
5913218 Carney et al. Jun 1999 A
5937173 Olarig et al. Aug 1999 A
5956252 Lau et al. Sep 1999 A
5956505 Manduley Sep 1999 A
5968175 Morishita et al. Oct 1999 A
5977987 Duluk, Jr. Nov 1999 A
5996996 Brunelle Dec 1999 A
5999990 Sharrit et al. Dec 1999 A
6003100 Lee Dec 1999 A
6028608 Jenkins Feb 2000 A
6034699 Wong et al. Mar 2000 A
6038348 Carley Mar 2000 A
6049870 Greaves Apr 2000 A
6065131 Andrews et al. May 2000 A
6067262 Irrinki et al. May 2000 A
6067633 Robbins et al. May 2000 A
6069540 Berenz et al. May 2000 A
6072500 Foran et al. Jun 2000 A
6072686 Yarbrough Jun 2000 A
6085269 Chan et al. Jul 2000 A
6094116 Tai et al. Jul 2000 A
6098118 Ellenby et al. Aug 2000 A
6104407 Aleksic et al. Aug 2000 A
6104417 Nielsen et al. Aug 2000 A
6115049 Winner et al. Sep 2000 A
6118394 Onaya Sep 2000 A
6128000 Jouppi et al. Oct 2000 A
6129070 Jingu et al. Oct 2000 A
6137918 Harrington et al. Oct 2000 A
6160557 Narayanaswami Dec 2000 A
6160559 Omtzigt Dec 2000 A
6188394 Morein et al. Feb 2001 B1
6201545 Wong et al. Mar 2001 B1
6204859 Jouppi et al. Mar 2001 B1
6219070 Baker et al. Apr 2001 B1
6219628 Kodosky et al. Apr 2001 B1
6249288 Campbell Jun 2001 B1
6249853 Porterfield Jun 2001 B1
6255849 Mohan Jul 2001 B1
6256758 Abramovici et al. Jul 2001 B1
6259460 Gossett et al. Jul 2001 B1
6307169 Sun et al. Oct 2001 B1
6323699 Quiet Nov 2001 B1
6323874 Gossett Nov 2001 B1
6348811 Haycock et al. Feb 2002 B1
6359623 Larson Mar 2002 B1
6362819 Dalal et al. Mar 2002 B1
6363285 Wey Mar 2002 B1
6363295 Akram et al. Mar 2002 B1
6366289 Johns Apr 2002 B1
6370603 Silverman et al. Apr 2002 B1
6377898 Steffan et al. Apr 2002 B1
6388590 Ng May 2002 B1
6389585 Masleid et al. May 2002 B1
6392431 Jones May 2002 B1
6429288 Esswein et al. Aug 2002 B1
6429747 Franck et al. Aug 2002 B2
6429877 Stroyan Aug 2002 B1
6433657 Chen Aug 2002 B1
6437657 Jones Aug 2002 B1
6437780 Baltaretu et al. Aug 2002 B1
6452595 Montrym et al. Sep 2002 B1
6469707 Voorhies Oct 2002 B1
6480205 Greene et al. Nov 2002 B1
6486425 Seki Nov 2002 B2
6501564 Schramm et al. Dec 2002 B1
6504542 Voorhies et al. Jan 2003 B1
6504841 Larson et al. Jan 2003 B1
6522329 Ihara et al. Feb 2003 B1
6525737 Duluk, Jr. et al. Feb 2003 B1
6529207 Landau et al. Mar 2003 B1
6530045 Cooper et al. Mar 2003 B1
6530049 Abramovici et al. Mar 2003 B1
6535986 Rosno et al. Mar 2003 B1
6550030 Abramovici et al. Apr 2003 B1
6598194 Madge et al. Jul 2003 B1
6606093 Gossett et al. Aug 2003 B1
6611272 Hussain et al. Aug 2003 B1
6614444 Duluk, Jr. et al. Sep 2003 B1
6614448 Garlick et al. Sep 2003 B1
6624823 Deering Sep 2003 B2
6629181 Alappat et al. Sep 2003 B1
6633197 Sutardja Oct 2003 B1
6633297 McCormack et al. Oct 2003 B2
6646639 Greene et al. Nov 2003 B1
6662133 Engel et al. Dec 2003 B2
6671000 Cloutier Dec 2003 B1
6693637 Koneru et al. Feb 2004 B2
6693639 Duluk, Jr. et al. Feb 2004 B2
6697063 Zhu Feb 2004 B1
6700581 Baldwin et al. Mar 2004 B2
6701466 Fiedler Mar 2004 B1
6717474 Chen et al. Apr 2004 B2
6717576 Duluk, Jr. et al. Apr 2004 B1
6717578 Deering Apr 2004 B1
6718496 Fukuhisa et al. Apr 2004 B1
6734770 Aigner et al. May 2004 B2
6734861 Van Dyke et al. May 2004 B1
6738856 Milley et al. May 2004 B1
6741247 Fenney May 2004 B1
6741258 Peck, Jr. et al. May 2004 B1
6742000 Fantasia et al. May 2004 B1
6747057 Ruzafa et al. Jun 2004 B2
6747483 To et al. Jun 2004 B2
6765575 Voorhies et al. Jul 2004 B1
6778177 Furtner Aug 2004 B1
6782587 Reilly Aug 2004 B2
6785841 Akrout et al. Aug 2004 B2
6788101 Rahman Sep 2004 B1
6788301 Thrasher Sep 2004 B2
6794101 Liu et al. Sep 2004 B2
6798410 Redshaw et al. Sep 2004 B1
6803782 Koob et al. Oct 2004 B2
6803916 Ramani et al. Oct 2004 B2
6806788 Marumoto Oct 2004 B1
6819332 Baldwin Nov 2004 B2
6823283 Steger et al. Nov 2004 B2
6825847 Molnar et al. Nov 2004 B1
6833835 van Vugt Dec 2004 B1
6849924 Allison et al. Feb 2005 B2
6850133 Ma Feb 2005 B2
6861865 Carlson Mar 2005 B1
6862027 Andrews et al. Mar 2005 B2
6879207 Nickolls Apr 2005 B1
6906716 Moreton et al. Jun 2005 B2
6938176 Alben et al. Aug 2005 B1
6940514 Wasserman et al. Sep 2005 B1
6947057 Nelson et al. Sep 2005 B2
6956579 Diard et al. Oct 2005 B1
6961057 Van Dyke et al. Nov 2005 B1
6966020 Abramovici et al. Nov 2005 B1
6973608 Abramovici et al. Dec 2005 B1
6978317 Anantha et al. Dec 2005 B2
6982718 Kilgard et al. Jan 2006 B2
7002591 Leather et al. Feb 2006 B1
7009607 Lindholm et al. Mar 2006 B2
7009615 Kilgard et al. Mar 2006 B1
7020598 Jacobson Mar 2006 B1
7043622 Henry et al. May 2006 B2
7058738 Stufflebeam, Jr. Jun 2006 B2
7061495 Leather Jun 2006 B1
7064771 Jouppi et al. Jun 2006 B1
7069369 Chou et al. Jun 2006 B2
7069458 Sardi et al. Jun 2006 B1
7069558 Stone et al. Jun 2006 B1
7075542 Leather Jul 2006 B1
7075797 Leonard et al. Jul 2006 B1
7081902 Crow et al. Jul 2006 B1
7085824 Forth et al. Aug 2006 B2
7119809 McCabe Oct 2006 B1
7124318 Luick Oct 2006 B2
7126600 Fowler et al. Oct 2006 B1
7136953 Bisson et al. Nov 2006 B1
7154066 Talwar et al. Dec 2006 B2
7158148 Toji et al. Jan 2007 B2
7170315 Bakker et al. Jan 2007 B2
7170515 Zhu Jan 2007 B1
7174407 Hou et al. Feb 2007 B2
7174411 Ngai Feb 2007 B1
7184040 Tzvetkov Feb 2007 B1
7185135 Briggs et al. Feb 2007 B1
7185225 Sutardja et al. Feb 2007 B2
7187383 Kent Mar 2007 B2
7224364 Yue et al. May 2007 B1
7246274 Kizer et al. Jul 2007 B2
7260007 Jain et al. Aug 2007 B2
RE39898 Nally et al. Oct 2007 E
7293127 Caruk Nov 2007 B2
7305571 Cranford, Jr. et al. Dec 2007 B2
7307628 Goodman et al. Dec 2007 B1
7307638 Leather et al. Dec 2007 B2
7324458 Schoenborn et al. Jan 2008 B2
7340541 Castro et al. Mar 2008 B2
7362325 Anderson Apr 2008 B2
7373547 Sutardja et al. May 2008 B2
7382368 Molnar et al. Jun 2008 B1
7398336 Feng et al. Jul 2008 B2
7414636 Kokojima et al. Aug 2008 B2
7415551 Pescatore Aug 2008 B2
7424564 Mehta et al. Sep 2008 B2
7437021 Satoh Oct 2008 B2
7453466 Hux et al. Nov 2008 B2
7480808 Caruk et al. Jan 2009 B2
7483029 Crow et al. Jan 2009 B2
7525986 Lee et al. Apr 2009 B2
7548996 Baker et al. Jun 2009 B2
7551174 Iourcha et al. Jun 2009 B2
7594061 Shen et al. Sep 2009 B2
7633506 Leather et al. Dec 2009 B1
7634637 Lindholm et al. Dec 2009 B1
7663633 Diamond et al. Feb 2010 B1
7782325 Gonzalez et al. Aug 2010 B2
7791617 Crow et al. Sep 2010 B2
7793029 Parson et al. Sep 2010 B1
7965902 Zelinka et al. Jun 2011 B1
8063903 Vignon et al. Nov 2011 B2
8132015 Wyatt Mar 2012 B1
8144166 Lyapunov et al. Mar 2012 B2
8237738 Crow Aug 2012 B1
8412872 Wagner et al. Apr 2013 B1
8417838 Tamasi et al. Apr 2013 B2
20010005209 Lindholm et al. Jun 2001 A1
20020005729 Leedy Jan 2002 A1
20020026623 Morooka Feb 2002 A1
20020031025 Shimano et al. Mar 2002 A1
20020050979 Oberoi et al. May 2002 A1
20020059392 Ellis, III May 2002 A1
20020087833 Burns et al. Jul 2002 A1
20020091979 Cooke et al. Jul 2002 A1
20020097241 McCormack et al. Jul 2002 A1
20020120723 Forth et al. Aug 2002 A1
20020130863 Baldwin Sep 2002 A1
20020138750 Gibbs et al. Sep 2002 A1
20020140655 Liang et al. Oct 2002 A1
20020143653 DiLena et al. Oct 2002 A1
20020158869 Ohba et al. Oct 2002 A1
20020158885 Brokenshire et al. Oct 2002 A1
20020196251 Duluk, Jr. et al. Dec 2002 A1
20020199110 Kean Dec 2002 A1
20030020173 Huff et al. Jan 2003 A1
20030023771 Erickson et al. Jan 2003 A1
20030046472 Morrow Mar 2003 A1
20030051091 Leung et al. Mar 2003 A1
20030061409 RuDusky Mar 2003 A1
20030067468 Duluk, Jr. et al. Apr 2003 A1
20030076325 Thrasher Apr 2003 A1
20030093506 Oliver et al. May 2003 A1
20030101288 Tague et al. May 2003 A1
20030115500 Akrout et al. Jun 2003 A1
20030122815 Deering Jul 2003 A1
20030160795 Alcorn et al. Aug 2003 A1
20030163589 Bunce et al. Aug 2003 A1
20030164830 Kent Sep 2003 A1
20030179631 Koob et al. Sep 2003 A1
20030194116 Wong et al. Oct 2003 A1
20030201994 Taylor et al. Oct 2003 A1
20040012082 Dewey et al. Jan 2004 A1
20040012597 Zatz et al. Jan 2004 A1
20040046764 Lefebvre et al. Mar 2004 A1
20040064628 Chiu Apr 2004 A1
20040085313 Moreton et al. May 2004 A1
20040102187 Moller et al. May 2004 A1
20040130552 Duluk, Jr. et al. Jul 2004 A1
20040183148 Blasko, III Sep 2004 A1
20040183801 Deering Sep 2004 A1
20040188781 Bar Sep 2004 A1
20040196285 Rice et al. Oct 2004 A1
20040196290 Satoh Oct 2004 A1
20040207642 Crisu et al. Oct 2004 A1
20040225787 Ma et al. Nov 2004 A1
20040227599 Shen et al. Nov 2004 A1
20040246251 Fenney et al. Dec 2004 A1
20050030314 Dawson Feb 2005 A1
20050041031 Diard Feb 2005 A1
20050041037 Dawson Feb 2005 A1
20050044284 Pescatore Feb 2005 A1
20050045722 Park Mar 2005 A1
20050060601 Gomm Mar 2005 A1
20050066148 Luick Mar 2005 A1
20050088445 Gonzalez et al. Apr 2005 A1
20050122338 Hong et al. Jun 2005 A1
20050125629 Kissell Jun 2005 A1
20050134588 Aila et al. Jun 2005 A1
20050134603 Iourcha et al. Jun 2005 A1
20050172135 Wiersma Aug 2005 A1
20050173233 Kaelberer Aug 2005 A1
20050174353 Alcorn et al. Aug 2005 A1
20050179698 Vijayakumar et al. Aug 2005 A1
20050182881 Chou et al. Aug 2005 A1
20050210472 Accapadi et al. Sep 2005 A1
20050237083 Bakker et al. Oct 2005 A1
20050246460 Stufflebeam, Jr. Nov 2005 A1
20050251358 Van Dyke et al. Nov 2005 A1
20050251761 Diamond et al. Nov 2005 A1
20050259100 Teruyama Nov 2005 A1
20050261863 Van Dyke et al. Nov 2005 A1
20050275663 Kokojima et al. Dec 2005 A1
20050278666 Diamond Dec 2005 A1
20050285863 Diamond Dec 2005 A1
20060004536 Diamond et al. Jan 2006 A1
20060033745 Koselj et al. Feb 2006 A1
20060044317 Bourd et al. Mar 2006 A1
20060053188 Mantor et al. Mar 2006 A1
20060053189 Mantor Mar 2006 A1
20060055641 Robertus et al. Mar 2006 A1
20060106911 Chapple et al. May 2006 A1
20060123177 Chan et al. Jun 2006 A1
20060132495 Anderson Jun 2006 A1
20060170690 Leather Aug 2006 A1
20060190663 Lu Aug 2006 A1
20060203005 Hunter Sep 2006 A1
20060221086 Diard Oct 2006 A1
20060245001 Lee et al. Nov 2006 A1
20060252285 Shen Nov 2006 A1
20060267981 Naoi Nov 2006 A1
20060267987 Litchmanov Nov 2006 A1
20060282604 Temkine et al. Dec 2006 A1
20070038794 Purcell et al. Feb 2007 A1
20070067535 Liu Mar 2007 A1
20070088877 Chen et al. Apr 2007 A1
20070115271 Seo et al. May 2007 A1
20070115290 Polzin et al. May 2007 A1
20070115291 Chen et al. May 2007 A1
20070139440 Crow et al. Jun 2007 A1
20070268298 Alben et al. Nov 2007 A1
20070273689 Tsao Nov 2007 A1
20070296725 Steiner et al. Dec 2007 A1
20080024497 Crow et al. Jan 2008 A1
20080024522 Crow et al. Jan 2008 A1
20080100618 Woo et al. May 2008 A1
20080198163 Nakahashi et al. Aug 2008 A1
20080273218 Kitora et al. Nov 2008 A1
20090044003 Berthiaume et al. Feb 2009 A1
Foreign Referenced Citations (14)
Number Date Country
101093578 Dec 2007 CN
61020348 Jan 1986 JP
04266768 Sep 1992 JP
06180758 Jun 1994 JP
10134198 May 1998 JP
11195132 Jul 1999 JP
11328133 Nov 1999 JP
2002076120 Mar 2002 JP
2005182547 Jul 2005 JP
093127712 Jul 2005 TW
0013145 Mar 2000 WO
02054224 Jul 2002 WO
2004030127 Mar 2005 WO
2005029329 Mar 2005 WO
Non-Patent Literature Citations (19)
Entry
“Addressing the System-on-a-Chip Interconnect Woes Through Communication-Based Design” by Sgroi et al., DAC 2001, Jun. 18-22, 2001, copyright ACM.
Welch, D. “Building Self-Reconfiguring Distributed Systems Using Compensating Reconfiguration”, Proceedings Fourth International Journal Conference on Configurable Distributed Systems, May 4-6, 1998, pp. 18-25.
International Search Report. PCT/US2004/030127. Mail Date Jun. 30, 2005.
PCT International Preliminary Report on Patentability. PCT/US2004/030127. International Filing Date Sep. 13, 2004. Application: Nvidia Corporation. Date of Issuance of this Report: Mar. 16, 2006.
A parallel algorithm for polygon rasterization Juan Pineda Jun. 1988 ACM XX.
A VLSI architecture for updating raster-scan displays Satish Gupta, Robert F. Sproull, Ivan E. Sutherland Aug. 1981 ACM SIGGRAPH Computer Graphics, Proceedings of the 8th annual conference on Computer graphics and interactive techniques SIGGRAPH '81, vol. 15 Issue 3 Publisher: ACM Press. XX.
Boyer, et al.; “Discrete Analysis for Antialiased Lines,” Eurographics 2000; 3 pages. XX.
Crow; “The Use of Grayscale for Improves Raster Display of Vectors and Characters;” University of Texas, Austin, Texas; Work supported by the National Science Foundation unser Grants MCS 76-83889; pp. 1-5: ACM Press. XX, 1978.
“Addressing the System-on-a-Chip Interconnect Woes Through Communication-Based Design” by Sgrol et al., DAC 2001, Jun. 18-22, 2001, copyright ACM.
“OSI Reference Model-The ISO Model of Architecture for Open Systems Interconnection,” by Zimmermann, IEEE Transactions on Communicaions, Apr. 1980.
“SuperPaint: An Early Frame Buffer Graphics System”, by Richard Shoup, IEEE Annals of the History of Computing, copyright 2001.
“Multimedia Processors” by Kuroda et al., Proceedings of the IEEE, Jun. 1998.
“Test Requirements for Embedded Core-based Systems and IEEE P1500” by Yervant Zorian, International Test Conference,copyright IEEE 1997.
PCI Express Card Electromechanical Specification Rev. 1.1, 2005, p. 87.
A parallel algorithm for polygon rasterization Juan Pineda Jun. 1988 ACM.
A VLSI architecture for updating raster-scan displays Satish Gupta, Robert F. Sproull, Ivan E. Sutherland Aug. 1981 ACM SIGGRAPH Computer Graphics , Proceedings of the 8th annual conference on Computer graphics and interactive techniques SIGGRAPH '81, vol. 15 Issue 3 Publisher: ACM Press.
Blythe, OpenGL Section 3.4.1, “Basic Line Segment Rasterization”, Mar. 29, 1997, pp. 1-3.
Boyer, et al.; “Discrete Analysis for Antialiased Lines,” Eurographics 2000; 3 Pages.
Crow; “he Use of Grayscale for Improves Raster Display of Vectors and Characters;” University of Texas, Austin, Texas; Work supported by the National Science Foundation unser Grants MCS 76-83889; pp. 1-5: ACM Press, 1978.
Related Publications (1)
Number Date Country
20090103443 A1 Apr 2009 US