Abstract:
A method of operating a data processing system to generate a jitter-injected signal from an input signal that is a function of time is disclosed. A time offset corresponding to a first time is generated according to a jitter specification that specifies the offset as a function of time. The jitter-injected signal at the first time is generated by evaluating the input signal at a time equal to a sum of the time offset and the first time. If the jitter specification only provides offsets at signal crossing times, interpolation is used to derive time offsets at non-signal crossing times.

Description:
BACKGROUND 
     Circuit simulation is widely used to test circuit designs prior to the actual implementation of the circuit in hardware. One circuit behavior that is important to emulate in simulators is the effect of jitter. For the purposes of the present discussion, jitter is defined to be the difference between the signal&#39;s expected threshold crossing time and the actual crossing time. Jitter can be the result of a number of effects in a circuit including imperfections in the clock signals and inter-symbol-interference. To analyze the effects of jitter on a circuit, a mechanism for injecting the jitter into an input or output signal to or from a component in the circuit is needed. Jitter injection to continuous signals has important applications in system analyses and measurements. For example, jitter is injected into input signals to study system tolerances to timing impairments. In system level designs, jitter is injected to outputs of functional blocks when simulating full system performances to simulate the jitter introduced by that functional block. A complex system can be studied by allowing one or more functional blocks to inject jitter into the signals being processed by the blocks. 
     SUMMARY 
     The present invention includes a method of operating a data processing system to generate a jitter signal from an input signal that is a function of time. The method includes generating a time offset corresponding to a first time according to a jitter specification that specifies the offset as a function of time, and generating a jittered signal at the first time by evaluating the input signal at a time equal to a sum of the time offset and the first time. 
     In one aspect of the invention, the jitter specification is only defined for jitter times that are related to the crossing times at which the input signal crosses a threshold value. The method of the present invention determines the jitter times by detecting the crossing times in the input signal. 
     In another aspect of the invention, the jitter times are defined in terms of a clock frequency and the detected crossing times are used to determine the clock frequency. 
     In yet another aspect of the invention, a plurality of time offsets are generated according to the jitter specification at times corresponding to the jitter times. For times other than the jitter times, the time offset is generated by interpolating the generated time offsets at the jitter times. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates the use of jitter injectors according to the present invention to simulate jitter. 
         FIG. 2  is a flow chart of an algorithm for generating τ(t) values at times other than crossing times. 
     
    
    
     DETAILED DESCRIPTION 
     The manner in which the present invention provides its advantages can be more easily understood with reference to  FIG. 1 , which illustrates the use of jitter injectors according to the present invention to simulate jitter. To simulate jitter in an input signal to a circuit component  13 , a jitter injector  12  converts the input signal to a jittered input signal. To simulate jitter added by circuit component  13 , a jitter injector  14  processes the output of circuit component  13  to generate an output signal. It should be noted that this arrangement provides an output signal that has an accumulation of jitter effects. For the purposes of the present discussion, a “jittered signal” based on a signal V(t) is defined to be
 
 V   j ( t )= V ( t +τ( t )),
 
where τ(t) is a function that characterizes the jitter. This function will be referred to as the jitter specification in the following discussion. It should be noted that τ(t) can be a continuous smooth function such as a sinusoidally time-varying jitter function or a random or pseudo random sequence. In the case of random jitter with a uniform probability distribution function between −τ max  and τ max , τ(t) at jitter times can be generated by randomly picking values between −τ max  and τ max .
 
     Consider the case in which V(t) is a continuous signal that crosses a threshold repeatedly. The injected jitter causes the signal to cross the threshold at times that are different from the original crossing times. If τ(t) is known for all t values, V j (+τ(t)) can be evaluated directly. However, in some cases of interest, τ(t) is only known at the signal crossing times. For example, in a randomly varying τ(t), the probability function may only be defined as the uncertainty in the crossing times at bit boundaries. In such cases, it is important that discontinuities are not introduced into V j (t) by the unknown values of τ(t) between the points at which the jitter specification is defined. 
     In one aspect of the invention, the values of τ(t) at the times other than the times at which τ is defined are obtained by interpolating the known values of τ(t). Consider the case in which τ(t) is defined in terms of a random distribution that specifies the probability of a given τ value at times relative to a bit boundary. In this case, the τ values at times other than the bit crossing times are not defined. The times for which τ(t) is defined by the jitter specification will be referred to as “jitter times” in the following discussion. If τ(t) were set to zero at times other than the jitter times, discontinuities would be introduced in V j (t). The present invention avoids these discontinuities by generating τ(t) for the jitter times using the jitter specification. This set of discrete τ(t) values is then interpolated to provide τ(t) values at times other than the jitter times. 
     The jitter times are often defined for the bit boundaries in the input signal. The locations of some of these boundaries can be determined by determining the times at which the input signal crosses a threshold value corresponding to a transition between a one and a zero in the input signal. If it is assumed that the boundaries occur at regular intervals such as clock boundaries, the observed crossings can be used to deduce the clock frequency. Hence, the location of the other jitter times can be inferred from the observed clock frequency and the observed signal crossings. It should be noted that the input signal could also be a signal that has been subjected to jitter by some prior processing of a non-jittered signal. In this case, the clock frequency and signal crossing points will be approximations to actual clock crossings. For the case in which the jitter times are defined by a clock, denote the k th  clock time by t clk   k . The jitter specification provides the values for τ(t clk   k ). For times other than these jitter times, τ(t) is determined by smoothly interpolating a plurality of τ(t clk   k ) values that are nearest to t. In the simplest case, a linear interpolation of the nearest two τ(t clk   k ) values is utilized. However, higher order interpolation schemes including least squares interpolation can also be utilized. 
     As noted above, the input signal itself could be a jittered signal. For example, the input to jitter injector  14  shown in  FIG. 1  includes the effects of the jitter introduced by jitter injector  12 . In one exemplary embodiment, the clock recovery algorithm assumes that the clock times are approximated by a constant clock frequency that is determined by observing the recent crossings in the input signal. This approximated clock frequency and the location of the most recent crossings are used to predict the time of the next clock boundaries at which the jitter specification is applied. That is, the values of τ(t clk   k ) are computed for these time values of t clk   k . Those values are then interpolated to provide the values of z at times other than t clk   k . It should be noted that the input signal could have significant segments in which no thresholds are crossed. For example, a binary signal for a string of 1s or 0s presents such a problem. During such segments, the clock times are assumed to be those predicted from the previously computed clock frequency and last threshold boundary crossings. When a new threshold crossing is finally detected, the clock frequency and crossing times are updated accordingly. 
     Refer now to  FIG. 2 , which is a flow chart of an algorithm for generating τ(t) values at times other than crossing times. Initially, the clock times (signal crossing times) are recovered from V(t) as shown at  21 . Next, the τ values for each of the clock times are computed using the jitter specification as shown at  23 . The form of the specification will depend on the particular jitter model. In general, the specification provides a method for computing τ(t) at the signal crossing points of the non-jittered signal. For example, the specification may be based on a probability distribution as discussed above. Next, the τ(t) values at each sample point are generated by interpolation of the τ(t clk   k ) values as shown at  24 . Finally, the jitter injected signal V j (t) is computed for the various sample times as shown at  25 . 
     In real-time systems, the necessary samples of the signal V to evaluate V(t n +τ(t n )) may not be known at t n . In such systems, a delay of one or more samples or clock periods can be introduced into the computation to allow for the required value to be determined. 
     The present invention can be practiced on any circuit simulation hardware. Such hardware includes general purpose data processing systems and specialized hardware that accelerate such computations. 
     The present invention also includes a computer readable medium that stores instructions that cause a data processing system to execute the method of the present invention. A computer readable medium is defined to be any medium that constitutes patentable subject matter under 35 U.S.C. 101 and excludes any media that does not constitute patentable subject matter under 35 U.S.C. 101. Examples of such media include non-transitory media such as computer memory devices that store information in a format that is readable by a computer or data processing system. 
     The above-described embodiments of the present invention have been provided to illustrate various aspects of the invention. However, it is to be understood that different aspects of the present invention that are shown in different specific embodiments can be combined to provide other embodiments of the present invention. In addition, various modifications to the present invention will become apparent from the foregoing description and accompanying drawings. Accordingly, the present invention is to be limited solely by the scope of the following claims.