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'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.
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.
The manner in which the present invention provides its advantages can be more easily understood with reference to
Vj(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, Vj(+τ(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 Vj(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 Vj(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 kth clock time by tclkk. The jitter specification provides the values for τ(tclkk). For times other than these jitter times, τ(t) is determined by smoothly interpolating a plurality of τ(tclkk) values that are nearest to t. In the simplest case, a linear interpolation of the nearest two τ(tclkk) 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
Refer now to
In real-time systems, the necessary samples of the signal V to evaluate V(tn+τ(tn)) may not be known at tn. 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.
Number | Name | Date | Kind |
---|---|---|---|
5031230 | Sandahl | Jul 1991 | A |
5124597 | Stuebing | Jun 1992 | A |
7839747 | Tieke | Nov 2010 | B2 |
7932729 | Watanabe | Apr 2011 | B2 |
8060054 | Dinan | Nov 2011 | B1 |
20010002799 | Saeki | Jun 2001 | A1 |
20020080812 | Stadler | Jun 2002 | A1 |
20040120628 | Tuyl | Jun 2004 | A1 |
20050060597 | Albonesi | Mar 2005 | A1 |
20070036256 | Yamaguchi et al. | Feb 2007 | A1 |
20070203418 | Starc | Aug 2007 | A1 |
20090157376 | Hollis | Jun 2009 | A1 |