Abstract:
Methods and corresponding test systems for generating a chip facility waveform from a series of chip snapshots. The methods including, (i) testing an integrated chip multiple times, each time increasing a clockstop delay delaying a clockstop generated by triggered error condition each time determining the state of state holding elements of the integrated circuit and (ii) testing an integrated circuit chip one time to generate a error condition and determining multiple times the states of state holding elements of the integrated circuit based on previous states of the state holding elements.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to the field of error management in integrated circuit chip technology; more specifically, it relates a method and system for generating a chip facility waveform from a series of chip snapshots. 
       BACKGROUND OF THE INVENTION 
       [0002]    Complex integrated circuit chips can experience a type error conditions that is data dependent and generates a clockstop condition making it difficult to determine the origin of the error condition. Therefore, there is a need to mitigate the deficiencies and limitations described hereinabove. 
       SUMMARY OF THE INVENTION 
       [0003]    A first aspect of the present invention is a method, comprising: (a) selecting a set of state holding elements of an integrated circuit; (b) configuring a clockstop request delay to an initial number of clock cycles; (c) generating an error condition in the integrated circuit chip; (d) generating a clockstop request in response to the error condition; (e) delaying the clockstop request by a number of clock cycles equal to the clockstop request delay; after (e), (f) reading out a state of each state holding element of the set of state holding elements; after (f), (g) incrementing the clockstop request delay by a fixed number of clock cycles; and after (g), (h) repeating steps (c) through (f) a predetermined number of times or until an instruction to stop. 
         [0004]    A second aspect of the present invention is a test system including a computer comprising a processor, an address/data bus coupled to the processor, and a computer-readable memory unit coupled to communicate with the processor, the memory unit containing instructions that when executed by the processor implement a method for generating a chip facility waveform, the method comprising the computer implemented steps of: (a) selecting a set of state holding elements of an integrated circuit; (b) configuring a clockstop request delay to an initial number of clock cycles; (c) generating an error condition in the integrated circuit chip; (d) generating a clockstop request in response to the error condition; (e) delaying the clockstop request by a number of clock cycles equal to the clockstop request delay; after (e), (f) reading out a state of each state holding element of the set of state holding elements; after (f), (g) incrementing the clockstop request delay by a fixed number of clock cycles; and after (g), (h) repeating steps (c) through (f) a predetermined number of times or until an instruction to stop. 
         [0005]    A third aspect of the present invention is a method comprising: (a) selecting a set of state holding elements of an integrated circuit; (b) generating an error condition in the integrated circuit chip; (c) generating and executing a clockstop request in response to the error condition; after (c), (d) generating a snapshot of actual states of each of the state holding elements of the set of state holding elements; (e) determining next previous states of each state holding element of the set of state holding elements based on respective states of each state holding element of the set of state holding element of a last generated snapshot and based on a description of circuit elements of the integrated circuit chip and interconnections between the circuit elements; after (e), (f) generating a snapshot of the next previous states of each state holding element of the set of state holding elements; and after (f), (g) repeating steps (e) and (f) a predetermined number of times or until an instruction to stop. 
         [0006]    A fourth aspect of the present invention is a test system including a computer comprising a processor, an address/data bus coupled to the processor, and a computer-readable memory unit coupled to communicate with the processor, the memory unit containing instructions that when executed by the processor implement a method for generating a chip facility waveform, the method comprising the computer implemented steps of: (a) selecting a set of state holding elements of an integrated circuit; (b) generating an error condition in the integrated circuit chip; (c) generating and executing a clockstop request in response to the error condition; after (c), (d) generating a snapshot of actual states of each of the state holding elements of the set of state holding elements; (e) determining next previous states of each state holding element of the set of state holding elements based on respective states of each state holding element of the set of state holding element of a last generated snapshot and based on a description of circuit elements of the integrated circuit chip and interconnections between the circuit elements; after (e), (f) generating a snapshot of the next previous states of each state holding element of the set of state holding elements; and after (f), (g) repeating steps (e) and (f) a predetermined number of times or until an instruction to stop. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    The features of the invention are set forth in the appended claims. The invention itself, however, will be best understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein: 
           [0008]      FIG. 1  illustrates basic components of an exemplary integrated circuit chip to which embodiments of the present invention may be applied; 
           [0009]      FIG. 2  is a flowchart of a method of generating a chip facility waveform according to a first embodiment of the present invention; 
           [0010]      FIG. 3  is a flowchart of a method of generating a chip facility waveform according to a second embodiment of the present invention; 
           [0011]      FIG. 4  is an exemplary chip faculty waveform generated by the embodiments of the present invention; and 
           [0012]      FIG. 5  is a schematic block diagram of a general-purpose computer portion of a tester for practicing the embodiments of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0013]    A clock signal is defined as a repeating pulsed signal and a clock cycle is defined at the time between adjacent rising edges of the pulsed signal. A state holding element is defined as an element that may be in a logical zero state or a logical one state. Examples of state holding elements include but are not limited to latches and memory elements. Examples of memory elements include but are not limited to dynamic random access memory cells, and static random access memory cells. 
         [0014]      FIG. 1  illustrates basic components of an integrated circuit chip to which embodiments of the present invention may be applied. The exemplary integrated circuit chip of  FIG. 1  is an I/O subsystem integrated circuit chip  100  that performs protocol conversions and checking as well as fan-out functionality in a computer network environment. Chip  100  includes a higher link unit  105  connected to a root complex of functional units  110 ,  115 ,  120  and  125  arranged in a logical tree (the arrangement is exemplary of any cone of logic or arrangement of functional circuits), and lower link units  130 ,  135 ,  140  and  145 . In one example, upper link unit  105  and lower links units  130 ,  135 ,  140  and  1435  support a same link protocol. Chip  100  also includes a clockstop-trace stop preparation logic (CTPL)  150 , which includes a clock cycle counter  152 , a clock control unit  155 , a trace unit and an error-handling unit  165 . Data paths (for transferring data packets) from higher link unit  105 , through functional logic units  110 ,  115 ,  120  and  125  to lower link units  130 ,  135 ,  140 , and  145  are labeled “DATA.” Clockstop request paths are labeled “CSR”, trace stop request paths are labeled TSR and inter-chip clockstop communications are labeled “ICC.” CTPL  150  and trace unit  160  are linked to a tester  170  and initialization, control signals and data collected in trace unit  160  are passed between CTPL  150  and trace unit  160  and tester  170  by paths labeled “TEST.” 
         [0015]    In operation, when an error condition that is too severe to handled within functional unit  125  is detected by an internal error detection unit in functional unit  125 , a clockstop request is generated which is transmitted to error handling unit  165 . Error handling unit  165  generates a clockstop request, which is transmitted to CTPL  150  and delayed based on the contents of counter  152  before being transmitted to clock control unit  155  (as a delayed clockstop request), which will stop the functional chip clock (the clocks for higher link unit  105 , functional units  110 ,  115 ,  120  and  125  and lower link units  130 ,  135 ,  140  and  145 , but not non-functional clocks for the other components of chip  100 . Clock cycle counter  153  is initialized (e.g., to 0) by tester  170  to an initial number of counts. After each clock cycle starting with a clock cycle on which a clockstop request is issued by functional circuit  125 , clock cycle counter  152  is incremented (e.g., by 1 clock cycle). When clock cycle counter  152  reaches a predefined number clock cycles CTPL then passes the clockstop request as a delayed clockstop request to clock control unit  155 . At this time CTPL  150  also can be setup to transmit a trace stop request to trace unit  160 , which collects the current state of selected state holding elements of chip  100  and transmits the data to tester  170 . The specific state holding elements from which data is collected is also determined during initialization. Alternatively, the chip may be designed to perform a “chip dump” which is a readout of the state of all the state holding elements (e.g., latches in scan chains) of the chip so only a chip dump command is required. Tester  170  also initializes chip  100  and sends test data into higher link unit  105  via the normal DATA path. 
         [0016]    In one example CTPL  150  is implemented in hardware. In one example, CTPL  150  is implemented as a software application. 
         [0017]    While an I/O subsystem chip has been used as an example circuit, the embodiments of the present invention may be applied to other integrated circuit chips such as processors and memory controllers] having a CTPL configured according to the operational requirements of those chips. 
         [0018]      FIG. 2  is a flowchart of a method of generating a chip facility waveform according to a first embodiment of the present invention. In step  200 , for a particular integrated circuit chip, a reproducible error condition that generates a clockstop request and a trigger (e.g., in the example of  FIG. 1 , processing a particular data packet) for that error condition are selected. In step,  205  the chip to be tested is initialized. Initialization includes “normal” initialization tasks such as initialing clocks, routings, and loading data (other than the trigger data). Initialization can also include selecting which state holding elements will be read out after a clockstop request is executed. Again, alternatively, the chip may be designed to perform a “chip dump” which is a readout of the state of all the state holding elements (e.g., latches in scan chains) of the chip so only a chip dump command is required. In step  210 , the chip is configured to generate a clockstop request when the error condition occurs. In step  215 , a clockstop request delay is configured to either an initial number of clock cycles the first time through step  215  or to an incremented number of clock cycles on subsequent times through step  215 . In step  220 , the error condition is generated, for example, by inputting trigger data (e.g., from a data file  225 ) to the chip that is known to cause the error condition. In the example of chip  100  of  FIG. 1 , this would be a data packet introduced into higher link unit  105  (see  FIG. 1 ). As processing of the trigger data by the chip progresses at some point the trigger data causes a clockstop request in step  230 . In step  235 , the clockstop is delayed by the initialized number of clock cycles and in step  240 , the clockstop is executed stopping further processing of data. In step  245 , the data from the selected state holding elements along with the clock cycle number since the start of processing of the trigger data is readout and stored (e.g., in a snapshot file  250 ). The selected state holding elements may include all (if a chip dump is performed) or a subset of the state holding elements (selected during initialization step  205 ) of the chip. In step  255 , it is determined if additional snapshots are required. 
         [0019]    If in step  255 , additional snapshots are required the method proceeds to step  260  where the clockstop request delay is incremented by a fixed number of clock cycles and then back to step  205  to start another loop. This looping is repeated as many times as required to build up the snapshots required to generate a chip facility waveform, each loop generating a snapshot at a later clock cycle then the previous loop. The only difference between loops is the delay in the execution of the clockstop request becoming progressively longer. 
         [0020]    If in step  255 , no additional snapshots are required then in step  265  a chip facility waveform is generated from the snapshots stored in snapshot file  250 . Alternatively, step  265  may be executed after each loop is completed and the chip facility waveform displayed as an animation of a group of snapshots with the older snapshots dropping off left side of the display as new snapshots are added to the right side of the display. The number of loops can be pre-programmed into the tester or stopped by an operator observing the animation. 
         [0021]    It should be appreciated that steps  205 ,  210 ,  215 ,  245 ,  255 ,  260  and  265  are performed by a tester connected to a physical chip under test and steps  220 ,  230 ,  235  and  240  are automatically performed by the chip. The tester includes a computer or is linked to a computer. 
         [0022]    Because the clockstop may not occur for several clock cycles after introducing trigger data into the chip, the tester may be configured to readout snapshots of these earlier clock cycles by inserting optional step  270  between steps  215  and  220  and linking step  270  to file  250 . Physically this capability may reside in trace unit  160  of  FIG. 1  or within the tester itself. 
         [0023]      FIG. 3  is a flowchart of a method of generating a chip facility waveform according to a second embodiment of the present invention. In step  300 , for a particular integrated circuit chip, a reproducible error condition that generates a clockstop request and a trigger (e.g., in the example of  FIG. 1 , processing a particular data packet) for that error condition are selected. In step,  305  the chip to be tested is initialized. Initialization includes “normal” initialization tasks such as initialing clocks, routings, and loading data (other than the trigger data). Initialization also includes selecting which state holding elements will be read out after a clockstop is executed. Again, alternatively, the chip may be designed to perform a “chip dump” which is a readout of the state of all the state holding elements (e.g., latches in scan chains) of the chip so only a chip dump command is required. In step  310 , the error condition is generated, for example, by inputting trigger data (e.g., from a data file  315 ) to the chip that is known to cause a fail. In the example of chip  100  of  FIG. 1 , this would be a data packet introduced into higher link unit  105  (see  FIG. 1 ). As processing of the trigger data by the chip progresses at some point the trigger data results in a clockstop request being generated and executed in step  320 . In step  325 , the actual states of the selected state holding elements are determined and stored with a corresponding clock cycle value as a snapshot. 
         [0024]    It should be appreciated that steps  305  and  310  are performed by a tester connected to a physical chip under test and step  320  is automatically performed by the chip. Subsequent steps  330 ,  335 ,  340 ,  350  and  355  are performed using a simulator running on a computer that is linked to or part of the tester. 
         [0025]    In a first time through step  330 , the states of the state holding elements determined in step  325  are combined with circuit design information (e.g., from a netlist  335 ) to determine next previous states of the selected state holding elements. Thereafter, each time through step  330  the last determined states of the selected state holding elements, which are also the states of the last generated snapshot, are used to calculate next previous states of the selected state holding elements. The selected state holding elements may include all (if a chip dump is performed) or a subset of the state holding elements (selected during initialization step  305 ) of the chip. In step  340 , the determined state holding element states along with the clock cycle associated with the determined state holding element states are stored in a snapshot file  345 . In step  350 , it is determined if additional snapshots are required. 
         [0026]    Next previous states of state holding elements are defined as the state of the state holding elements one clock cycle before the clock cycle associated with the last generated snapshot. If the clock cycle of the first (and actual) snapshot is n, then the next previous states of the state holding elements occur in sequence at clock cycle n−1, n−2, n−3 etc. The n snapshot contains actual state holding element states. The n−1 snapshot contains calculated state holding element states based on the actual state holding element states of the n snapshot. The n−2 through n−x (where x is one less than the total number of snapshots) contain calculated state holding element states based on previously calculated state holding element states of the n−1 through x snapshots respectively. 
         [0027]    A netlist is a data file describing circuit elements such as logic gates, state holding elements, registers, memory elements, to give a few examples, and interconnections between the elements. In the example of  FIG. 1 , the portion of the netlist of chip  100  of interest in step  330  is higher link unit  105 , functional units  110 ,  115 ,  120  and  125  and lower link units  130 ,  135 ,  140  and  150 . Other types of data files besides netlists, such as high level description language files (e.g., VHDL, verilog, SystemC) or any other suitable description of the circuit elements and interconnections between the circuit elements may be used. 
         [0028]    If in step  350 , additional snapshots are required the method loops back to step  330  where the next previous states of the selected state holding elements are calculated one clock cycle earlier than the clock cycle than the clock cycle to the last loop through step  330  using netlist  335  and the state holding element states of the previous snapshot. This looping is repeated as many times as required to build up the snapshots required to generate a chip facility waveform/chip facility waveform, each loop generating a snapshot at an earlier clock cycle. It should be understood that it may not be possible to determine a state of any given state holding element after several loops and provision should be made to include indications of “unknown” states in snapshots. 
         [0029]    If in step  350 , no additional cycles are required then in step  355  a chip facility waveform is generated from the snapshots stored in snapshot file  345 . Alternatively, step  355  may be executed after each loop is completed and the chip facility waveform displayed as an animation of a group of snapshots with the older snapshots dropping left side of the display as new snapshots are added to the right side if the display. The number of loops can be pre-programmed into the simulator or stopped by an operator observing the animation. The looping may also be automatically terminated when the number of “unknown” states exceeds a predetermined threshold value (e.g., 50%). 
         [0030]      FIG. 4  is an exemplary chip faculty waveform generated by the embodiments of the present invention. In  FIG. 4 , a chip facility waveform includes a row for each selected state holding element, a first column of state holding element names, a second column of the value of the state holding element at a particular clock cycles, and a waveform section having a waveform for each state holding element extending over a number of clock cycles. Because there may be hundreds of clock cycles, when a chip facility waveform is displayed on display device such as a computer screen, the waveform section may be scrollable left and right and a cursor provided (dashed line) to select the values displayed in second column. 
         [0031]      FIG. 5  is a schematic block diagram of a computer portion of a tester for practicing the embodiments of the present invention. Generally, the method described herein with respect to a method for generating a chip facility waveform from a series of chip snapshots is practiced with a computer linked to or included in a test system and the methods described supra in the flow diagrams of  FIGS. 2 and 3  may be coded as a set of instructions on removable or hard media for use by the computer. 
         [0032]    In  FIG. 5 , computer  400  has at least one microprocessor or central processing unit (CPU)  405 . CPU  405  is interconnected via a system bus  410  to a random access memory (RAM)  415 , a read-only memory (ROM)  420 , an input/output (I/O) adapter  425  for a connecting a removable data and/or program storage device  430  and a mass data and/or program storage device  435 , a user interface adapter  440  for connecting a keyboard  445  and a mouse  450 , a port adapter  455  for connecting a data port  460  and a display adapter  465  for connecting a display device  470 . The tester may be connected to computer system  400  through an additional port adapter  455 . 
         [0033]    ROM  420  contains the basic operating system for computer system  400 . The operating system may alternatively reside in RAM  415  or elsewhere as is known in the art. Examples of removable data and/or program storage device  630  include magnetic media such as floppy drives and tape drives and optical media such as CD ROM drives. Examples of mass data and/or program storage device  435  include electronic, magnetic, optical, electromagnetic, infrared, and semiconductor devices. Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. In addition to keyboard  445  and mouse  450 , other user input devices such as trackballs, writing tablets, pressure pads, microphones, light pens and position-sensing screen displays may be connected to user interface  440 . Examples of display devices include cathode-ray tubes (CRT) and liquid crystal displays (LCD). 
         [0034]    A computer program with an appropriate application interface may be created by one of skill in the art and stored on the system or a data and/or program storage device to simplify the practicing of this invention. In operation, information for or the computer program created to run the present invention is loaded on the appropriate removable data and/or program storage device  430 , fed through data port  460  or typed in using keyboard  445 . 
         [0035]    Thus the embodiments of the present invention provide a method and system for generating a chip facility waveform from a series of chip snapshots that allow enhanced determination of the origin of integrated circuit chip clockstops and subsequent chip fails. 
         [0036]    The description of the embodiments of the present invention is given above for the understanding of the present invention. It will be understood that the invention is not limited to the particular embodiments described herein, but is capable of various modifications, rearrangements and substitutions as will now become apparent to those skilled in the art without departing from the scope of the invention. Therefore, it is intended that the following claims cover all such modifications and changes as fall within the true spirit and scope of the invention.