Abstract:
The present invention provides systems, devices and methods for generating user-defined test patterns within serial controller to facilitate signal testing and verification. These user-defined test patterns may be generated to more accurately reflect the actual traffic of a device-under-test or system, as well as allow a test engineer to more accurately test the boundaries of the device or system. In various embodiments of the invention, a programmable patterns generator is provided for generating user-defined test patterns that may be used during a testing procedure. This programmable pattern generator allows a user to define a particular test pattern by providing bit-by-bit test values, by defining a combination of canned sequences, or by supplementing one or more canned sequences with additional test bits.

Description:
BACKGROUND 
     A. Technical Field 
     The present invention relates to test pattern generation and, more particularly, to the generation of user-defined test patterns for signal characterization and testing. 
     B. Background of the Invention 
     The application and importance of test pattern generators is well known. Pattern generators provide a test signal used for signal characterization and analysis within various electrical components and systems. These test patterns are used for testing devices such as integrated chips, systems, and communication paths to ensure proper operation of these devices and systems. 
     The current solution for pattern generation allows a user to select one or more pre-stored “canned data patterns” within the memory of a testing device or device-under-test. Typically, the canned patterns are generated by looping a small pattern over multiple times in sequence to generate a longer test pattern. For example, the SAS/Fibre Channel specification defines a test pattern called “JPAT” that is composed of five smaller pieces or patterns. These five smaller patterns are effectively repeated a number of times to build a larger pattern that is compliant with the specification. 
     During a test procedure using the pattern, a state machine may be adapted to count the number of repeats and to transmit a previous part to the next part of the pattern; thereby creating the full pattern in real time. This is generally used in conjunction with a pattern checker for comparing the data coming into the device under test and logging errors. 
     It is important that a test engineer be able to test the boundaries of a system so that as many potential errors may be identified prior to the device or system being activated. If an envelope of performance is to be tested, a system level test will eventually fail and require a long startup time to get back to a working point. In order to determine these limits, an engineer needs to be able to toggle around the potential failing points and tune the test equipment to zoom in on the actual parameters that cause the failure. 
       FIG. 1  depicts an exemplary prior art operation of generating a test pattern in a chip  101  and analyzing the same in an external analysis device  105 . This existing solution uses stored or “canned” patterns within a memory  103  to generate the test pattern. The stored patterns may be a small pattern or sequence that may be repeatedly used by a pattern generator  102  to generate the large test patterns. The stored patterns in the memory  103  may be selected by a user and transmitted one-by-one over a high-speed serial interface  104  such as a PCI express bus, USB or other type of interface known to one of skill in the art. 
     The canned test pattern may be generated in a burst by propagating the pattern bits one at a time using the serial interface. Building these large sequences is important to comply with various rules and regulations of certain standard protocols. The canned pattern bits may be transmitted to an external analysis device  105 , such as an oscilloscope for analysis. However, the sequence of data within the large test pattern is specifically limited by the canned patterns stored within the memory  103 . 
     These pattern generators cannot be dynamically configured since they are confined to the pre-stored sequences thereof. Accordingly, what is desired are a system, apparatus and method that provides more dynamic generation of test patterns. 
     SUMMARY OF THE INVENTION 
     The present invention provides systems, devices and methods for generating user-defined test patterns within serial controllers to facilitate signal testing and verification. These user-defined test patterns may be generated to more accurately reflect the actual traffic of a device-under-test or system, as well as allow a test engineer to more accurately test the boundaries of the device or system. 
     In various embodiments of the invention, a programmable pattern generator is provided for generating user-defined test patterns that may be used during a testing procedure. This programmable pattern generator allows a user to define a particular test pattern by providing bit-by-bit test values, by defining a combination of canned sequences, or by supplementing one or more canned sequences with additional test bits. If canned patterns are used in the generation of user-defined test patterns, these canned patterns may be retrieved in a memory and the user-defined pattern may be generated by accessing an internal register of the chip. As a result, a user may define a particular test pattern for a certain device or system to improve the corresponding test procedure. 
     The patterns may be generated in either a serial stream or parallel streams to meet the characterization requirements of the device-under-test. For example, the device-under-test may require the characterization of various parameters including signal quality, speed, bandwidth, bit error rate etc. The test pattern stream may be configured to certain testing parameters, such as high-speed interfaces having a defined word length. In one embodiment of the invention, the generated pattern is a 40-bit test pattern word that meets the requirement parameters of certain transmitters. 
     In accordance with various embodiments, the generated patterns may be transmitted serially to an external device by using a serializer/deserializer (“SERDES”). Since the characterization of the signal parameters of a transmitter may take place at a lower speed at the external analysis device, the patterns generated are serially transferred to the external testing device, such as an oscilloscope. 
     Other objects, features and advantages of the invention will be apparent from the drawings, and from the detailed description that follows below. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Reference will be made to embodiments of the invention, examples of which may be illustrated in the accompanying figures. These figures are intended to be illustrative, not limiting. Although the invention is generally described in the context of these embodiments, it should be understood that it is not intended to limit the scope of the invention to these particular embodiments. 
         FIG. 1  illustrates generation of test pattern using canned data pattern contained in the memory of a chip. 
         FIG. 2  illustrates generation of test pattern using programmable pattern generator according to various embodiments of the invention. 
         FIG. 3  illustrates generation of test pattern using programmable pattern generator and canned data pattern according to various embodiments of the invention. 
         FIG. 4  illustrates test pattern analysis method according to various embodiments of the invention. 
         FIG. 5  illustrates example sequences of the test pattern generated according to various embodiments of the invention. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Systems, devices and methods for generating user-defined test patterns are described. In one embodiment of the invention, a programmable pattern generator is provided that generates test patterns as defined by a user. The test pattern may be generated at a bit-by-bit granularity or use one or more canned patterns stored within a memory. 
     In the following description, for purpose of explanation, specific details are set forth in order to provide an understanding of the invention. It will be apparent, however, to one skilled in the art that the invention may be practiced without these details. One skilled in the art will recognize that embodiments of the present invention, some of which are described below, may be incorporated into a number of different systems and devices. The embodiments of the present invention may also be present in software, hardware or firmware. 
     Structures and devices shown below in block diagram are illustrative of exemplary embodiments of the invention and are meant to avoid obscuring the invention. Furthermore, connections between components and/or modules within the figures are not intended to be limited to direct connections. Rather, data between these components and modules may be modified, re-formatted or otherwise changed by intermediary components and modules. 
     Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, characteristic, or function described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
       FIG. 2  illustrates an on-chip user-defined programmable test pattern generator according to various embodiments of the invention. In one embodiment, a programmable pattern generator  202  is integrated within a chip that allows a user to set up rules for generating the test patterns. An interface is provided on the programmable pattern generator  202  that allows a user to define the test patterns. The programmable pattern generator  202  may be adapted in a digital logic chip  201  environment that has a client/master structure on an internal bus. The internal bus may be accessed to any number of other primary buses that the chip can use. These primary buses may include PCI express, USB, fiber etc. that interface the pattern generator  202  at the interrupt side of the chip  201 . Inside the chip  201 , the master bus interprets the read/write signals traversing between different components of the chip  201 . 
     The programmable pattern generator  202  generates the user-defined pattern and transmits the same to a serial interface  203 . In certain embodiments of the invention, the serial interface  203  receives a parallel stream of user-defined patterns and outputs the same in series to an external analysis device  204 . The serial interface  203  comprises a SERDES that converts the received parallel data into the serial data stream. In various implementations, the SERDES may be used to modify the effective speed of the parallel data stream so that it matches the speed of the external analysis device  204 , such as an oscilloscope. The external analysis device  204  may be used to view or otherwise characterize each bit of the received signal, at a bit-by-bit granularity, to determine a bit error rate (hereinafter, “BER”) of the received signal. The external analysis device  204  may also include other analysis devices, such as a real time spectrum analyzer or a sophisticated box for measuring jitter and pattern quality. 
     In certain embodiments, the parallel stream of a pattern is provided to a multiplexer adapted within the chip  201  environment. In one example, the multiplexer is located between the source of real data that a user may want to send, and the SERDES. The multiplexer multiplexes the real data and sends it to the SERDES. As previously described, the SERDES may be used to facilitate the transmission of parallel data as a serial data stream between the programmable pattern generator  202  and the external analysis device  204 . The SERDES device may operate in a full-duplex mode, which means that the test data is converted simultaneously in both directions, or operate in a half-duplex mode in which the test data is converted in a single direction. 
     The external analysis device  204  receives the serial data from the SERDES and characterizes the received signal according to user&#39;s requirement. One skilled in the art will recognize that this characterization may include analysis of signal quality, speed, bandwidth, bit error rate, etc. 
       FIG. 3  illustrates a system in which a programmable pattern generator and a memory, on which canned data pattern(s) are stored, generate user-defined test patterns according to certain embodiments herein. The programmable pattern generator  202  generates the test pattern by supplementing canned data patterns with certain other bits or combines canned data patterns in accordance with user instructions. The generation of the test pattern may be driven by a state machine (not shown) in which a counter value in a user-accessible register is maintained. Thereafter, the data patterns may be accessed for performing the repetitions of the data patterns to generate a test pattern. For example, a frame in a SAS may consist of six separate patterns including Align(0) as a start of frame, particular data, the pattern to be transmitted, some error identification values (e.g., CRC data), and an end of frame. The Align(0) is used to achieve word sync and is required to be sent at the start of the test pattern. 
     The pattern to be transmitted may include the following pattern choices, which may be repeated by using an external programming device  302  as required by a user in order to generate a desired pattern and using the same for characterization of signals. An exemplary list of patterns is shown below: 
     0 Align (0) 
     1 CJTPAT (SAS and Fibre have slightly different patterns with the same name) 
     2 LTDP 
     3 HRQR 
     4 LFSC 
     5 SSOP 
     6 COMP 
     7 SOF 
     8 EOF 
     9 SYNC 
     A IDLE 
     B 
     . . . 
     F-1F Reserved for future use. 
     20 User defined 40 bit (the length of one character) 
     Typically, the test pattern, illustrated from 0-A, are used to create an entire test frame in compliance with a particular standard protocol or specification. A user-definable pattern may be used to enhance the test frame because the commonly used protocols may have errors or loopholes, which may more effectively test the error boundaries of a chip or system. In addition, the user definable pattern may not require coding. For example a user may create a single bit pattern by making all the bits of the pattern be zero, alternating ones and zeros in a particular pattern, a random one and zero combination, or all ones to test specific aspects of the system or device-under-test. 
     As explained above, the canned pattern from 0 to A may be stored in a memory  301 . The user may repeat the stored pattern as a particular user-defined pattern or supplement the canned pattern with certain bit sequences. The pattern may be created as a parallel stream of data that goes to a multiplexer and/or SERDES that combines the test data into a single serial stream. This serial stream is outputted on a serial interface as a serial test pattern. 
     A clock pattern can be generated using the user-definable pattern by simply writing the appropriate data to the register that defines it. One skilled in the art will recognize that various user-defined sequences of data may be mixed and matched with the existing protocol data to create a pattern in order to meet several requirements of a device-under-test. 
     A user may measure a bit error rate using a particular pattern to define path characteristics between a transmitter and receiver. Using these characteristics, certain requirements may be placed on a transmitter to ensure that readable data is provided to a receiver. For example, a jitter profile may be identified by analyzing a known test pattern at a receiver. Using this jitter profile, a transmitter can adjust certain characteristics of its transmission to provide a more readable signal to the receiver. Intermediary devices, such as a regenerator node, may also be inserted within the path to compensate for this jitter and adjusted to better compensate for the identified jitter profile. 
       FIG. 4  illustrates a method for generating a complex test pattern for characterizing a serial data stream according to various embodiments of the invention. Although this particular method describes the pattern generation as leveraging at least one stored or canned pattern, one skilled in the art will recognize that the test pattern may also be generated by a user defining each bit within the test pattern. 
     The method may be initiated by selecting  401  at least one stored pattern sequence. The stored pattern sequence may be obtained from various standard protocols used in the industry for testing and analyzing signals, may be provided by a vendor for testing the particular device, or may be a stored pattern from a previous test performed by a user. According to various embodiments, the pattern sequence may be stored in hardware such as a memory device. Once the standard pattern sequence is selected  401 , it may be supplemented  402  with a user-defined pattern sequence. The user-defined sequence may be generated by a user at a bit-by-bit granularity, another stored pattern, or a combination of multiple stored patterns. This user-defined test pattern may be based on various signal parameters such as bandwidth, speed, quality, bit error rate, jitter etc. 
     The user-defined test pattern is used to test a particular device, such as a signal transmitted  403  from a chip. The chip may have an internal bus and registers where the pattern sequence are accessed and forwarded to an external device for analysis. The external analysis device displays, analyzes, or otherwise characterizes  404  the signal from the chip and allows the user to determine whether the chip-under-test is functioning within parameters, and define operational boundaries for the chip. 
       FIG. 5  illustrates certain example sequences of user-defined hexadecimal test patterns according to various embodiments of the invention. As previously discussed, the pattern choices 0-20 may be used to produce user-defined pattern wherein 0-A are the canned patterns. According to one embodiment of the invention, the pattern 0-20 may be repeated as explained below. 
     
       
         
               
               
             
           
               
                   
               
             
             
               
                 0- 
                 This may be a special case where the pattern may repeat until 
               
               
                   
                 a second register value is cleared., which allows the alignment 
               
               
                   
                 of test equipment. It may be setup such that it could be cleared 
               
               
                   
                 under state machine control when a specific character was 
               
               
                   
                 received. 
               
               
                 1- 
                 Single repeat 
               
               
                   
                 . . . 
               
               
                 7F 
                 Repeat forever. 
               
               
                 80 . . . FF 
                 Bits used for linking of sequences 
               
               
                   
               
             
          
         
       
     
     80h=1000 0000b are bits in which setting the most significant bit would indicate that this pattern is to be linked to another pattern. For example, if the value is 80h, then link the pattern to the next pattern in the order they appear within the register map. Otherwise, link them to the pattern indicated by the remaining 7 bits, which may be used to create large complex patterns. 
     Examples of frames  501  using the above explained repeat choices are shown in  FIG. 5 . The frame  501  may be sent on the serial bus and the frame  501  may be repeated to generate repeat sequences  502  and  503  as shown. 
     In certain implementations of the invention, a register bit, called repeat sequence, may be employed in which a register setting would allow the repeat of the sequence based off the pattern repeat option. In other words, any pattern with a repeat option of a specific value, such as 80, is continually repeated if the repeat sequence bit is set. 
     In certain other implementations of the invention, a second sequence  503  replaces the repeat=81 with 80 and the repeat sequence bit set to 1. This will result in the pattern 1 being sent until a qualifying event causes it to end. Patterns 2-6 will execute in order because the sequence bit is set resulting in patterns 2-6 being repeated indefinitely. 
     Both implementations allow special alignment or synchronizing characters to be present at the beginning of the sequence, but to be excluded once testing begins. A disparity checker could be added to guarantee that charging of the line will not occur. This checker if enabled could be used to automatically modify any user defined data patterns to maintain disparity, and properly choose the encoding for “canned data patterns”. 
     The pattern generation scheme, described above, extends the current capabilities of pattern generation to enable a user to create a particular data pattern regardless of its complexity, and maintain disparity. A natural consequence of this approach is the preservation of much of the existing hardware, while allowing the user to produce data patterns that resemble live data patters seen on a serial bus. The flexibility of the pattern generation extends the possibilities of signal characterization. 
     While the present invention has been described with reference to certain exemplary embodiments, those skilled in the art will recognize that various modifications may be provided. Accordingly, the scope of the invention is to be limited only by the following claims.