Effective Switching resistance

image-20231114001209252

https://www.eecis.udel.edu/~vsaxena/courses/ece445/s19/Lecture%20Notes/lec15_ece445.pdf

wire delay

The Elmore Delay

image-20230624234813719

image-20230624234940864

image-20230625001756173

Basic idea: use of mean of \(v'(t)\) to approximate median of \(v'(t)\)

image-20230624235148246

image-20230625002239199

Elmore delay approximates the median of \(h(t)\) by the mean of \(h(t)\)

Distributed RC-Line

image-20230624224005736

Lumped approximations

\(rc\)-models

If your simulator does not support a distributed \(rc\)-model, or if the computational complexity of these models slows down your simulation too much, you can construct a simple yet accurate model yourself by approximating the distributed \(rc\) by a lumped RC network with a limited number of elements

image-20230624230057265

The accuracy of the model is determined by the number of stages. For instance, the error of the \(\Pi -3\) model is less than 3%, which is generally sufficient.

Why use "\(\Pi\) Model"

image-20230624230800255

examples

image-20230624224643487

image-20230624224923241

Wire Inductive Effect

  • RC delay increases quadratically with length
  • LC delay (speed of light flight time) increases linearly with length

Inductance will only be important to the delay of low-resistance signals such as wide clock lines

wave

Signal propagates over the wire as a wave (rather than diffusing as in \(rc\) only models)

Signal propagates by alternately transferring energy from capacitive to inductive modes

reference

Akio Kitagawa, Analog layout design https://mixsignal.files.wordpress.com/2013/03/analog-layout.pdf

THE WIRE http://bwrcs.eecs.berkeley.edu/Classes/icdesign/ee141_f01/Notes/chapter4.pdf

Anoop Veliyath, Design Engineer, Cadence Design Systems. Accurately Modeling Transmission Line Behavior with an LC Network-based Approach [pdf]

Mark Horowitz. Lecture 2: Wires and Wire Models [pdf]

Neil Weste and David Harris. 2010. CMOS VLSI Design: A Circuits and Systems Perspective (4th. ed.). Addison-Wesley Publishing Company, USA.

Cheng-Kok Koh. EE695K Modeling and Optimization of High Performance Interconnect [lec3a_pdf]

Vishal Saxena. ECE 445 Intro to VLSI Design: Lectures for Spring 2019 https://www.eecis.udel.edu/~vsaxena/courses/ece445/s19/ECE445.htm

image-20241106231114717

Ensemble average

[https://ece-research.unm.edu/bsanthan/ece541/stat.pdf]

[https://www.nii.ac.jp/qis/first-quantum/e/forStudents/lecture/pdf/noise/chapter1.pdf]

  • Time average: time-averaged quantities for the \(i\)-th member of the ensemble
  • Ensemble average: ensemble-averaged quantities for all members of the ensemble at a certain time

image-20241116113758119

image-20241116215119239

image-20241116215140298

where \(\theta\) is one member of the ensemble; \(p(x)dx\) is the probability that \(x\) is found among \([x, x + dx]\)

autocorrelation, Stationarity & Ergodicity

autocorrelation

image-20241116112504606

The expectation returns the probability-weighted average of the specific function at that specific time over all possible realizations of the process

Stationarity

[https://ece-research.unm.edu/bsanthan/ece541/station.pdf]

image-20241123221623537

image-20240720140527704

Ergodicity

ensemble autocorrelation and temporal autocorrelation (time autocorrelation)

image-20240719230346944

image-20240719210621021


image-20241123004051314

LTI Filtering of WSS process

mean

image-20240917104857284

image-20240917104916086


image-20240827221945277

autocorrelation

deterministic autocorrelation function

image-20240427170024123

\[ R_{yy}(\tau) = h(\tau)*R_{xx}(\tau)*h(-\tau) =R_{xx}(\tau)*h(\tau)*h(-\tau) \]

image-20240907211343832

why \(\overline{R}_{hh}(\tau) \overset{\Delta}{=} h(\tau)*h(-\tau)\) is autocorrelation ? the proof is as follows:

\[\begin{align} \overline{R}_{hh}(\tau) &= h(\tau)*h(-\tau) \\ &= \int_{-\infty}^{\infty}h(x)h(-(\tau - x))dx \\ &= \int_{-\infty}^{\infty}h(x)h(-\tau + x))dx \\ &=\int_{-\infty}^{\infty}h(x+\tau)h(x))dx \end{align}\]


PSD

image-20240827222224395

image-20240827222235906

Topic 6 Random Processes and Signals [https://www.robots.ox.ac.uk/~dwm/Courses/2TF_2021/N6.pdf]

Alan V. Oppenheim, Introduction To Communication, Control, And Signal Processing [https://ocw.mit.edu/courses/6-011-introduction-to-communication-control-and-signal-processing-spring-2010/a6bddaee5966f6e73450e6fe79ab0566_MIT6_011S10_notes.pdf]

Balu Santhanam, Probability Theory & Stochastic Process 2020: LTI Systems and Random Signals [https://ece-research.unm.edu/bsanthan/ece541/LTI.pdf]


Time Reversal \[ x(-t) \overset{FT}{\longrightarrow} X(-j\omega) \]

if \(x(t)\) is real, then \(X(j\omega)\)​ has conjugate symmetry \[ X(-j\omega) = X^*(j\omega) \]

Derivatives of Random Processes

since \(x(t)\) is stationary process, and \(y(t) = \frac{dx(t)}{dt}\)

Using \(R_{yy}(\tau) = h(\tau)*R_{xx}(\tau)*h(-\tau)\)

\[\begin{align} R_{yy}(\tau) &= \mathcal{F}^{-1}[H(j\omega)\Phi_{xx}(j\omega)H(-j\omega)] \\ &= \mathcal{F}^{-1}[-(j\omega)^2\Phi_{xx}(j\omega)] \end{align}\]

we obtain the autocorrelation function of the output process as \[ R_{yy}(\tau) = -\frac{d^2}{d\tau^2}R_{xx}(\tau) \]

Liu Congfeng, Xidian University. Random Signal Processing: Chapter 5 Linear System: Random Process [https://web.xidian.edu.cn/cfliu/files/20121125_153218.pdf]

[https://sharif.ir/~bahram/sp4cl/PapoulisLectureSlides/lectr14.pdf]

Periodogram

The periodogram is in fact the Fourier transform of the aperiodic correlation of the windowed data sequence

image-20240907215822425

image-20240907215957865

image-20240907230715637

estimating continuous-time stationary random signal

periodogram.drawio

The sequence \(x[n]\) is typically multiplied by a finite-duration window \(w[n]\), since the input to the DFT must be of finite duration. This produces the finite-length sequence \(v[n] = w[n]x[n]\)

image-20240910005608007

image-20240910005927534

image-20240910005723458

\[\begin{align} \hat{P}_{ss}(\Omega) &= \frac{|V(e^{j\omega})|^2}{LU} \\ &= \frac{|V(e^{j\omega})|^2}{\sum_{n=0}^{L-1}(w[n])^2} \tag{1}\\ &= \frac{L|V(e^{j\omega})|^2}{\sum_{k=0}^{L-1}(W[k])^2} \tag{2} \end{align}\]

image-20240910010638376

That is, by \((1)\) \[ \hat{P}_{ss}(\Omega) = T_s\hat{P}_{xx(\omega)} = \frac{T_s|V(e^{j\omega})|^2}{\sum_{n=0}^{L-1}(w[n])^2}=\frac{|V(e^{j\omega})|^2}{f_{res}L\sum_{n=0}^{L-1}(w[n])^2} \]

That is, by \((2)\) \[ \hat{P}_{ss}(\Omega) = T_s\hat{P}_{xx(\omega)} = \frac{T_sL|V(e^{j\omega})|^2}{\sum_{k=0}^{L-1}(W[k])^2} = \frac{|V(e^{j\omega})|^2}{f_{res}\sum_{k=0}^{L-1}(W[k])^2} \]

!! ENBW

Wiener-Khinchin theorem

Norbert Wiener proved this theorem for the case of a deterministic function in 1930; Aleksandr Khinchin later formulated an analogous result for stationary stochastic processes and published that probabilistic analogue in 1934. Albert Einstein explained, without proofs, the idea in a brief two-page memo in 1914

\(x(t)\), Fourier transform over a limited period of time \([-T/2, +T/2]\) , \(X_T(f) = \int_{-T/2}^{T/2}x(t)e^{-j2\pi ft}dt\)

With Parseval's theorem \[ \int_{-T/2}^{T/2}|x(t)|^2dt = \int_{-\infty}^{\infty}|X_T(f)|^2df \] So that \[ \frac{1}{T}\int_{-T/2}^{T/2}|x(t)|^2dt = \int_{-\infty}^{\infty}\frac{1}{T}|X_T(f)|^2df \]

where the quantity, \(\frac{1}{T}|X_T(f)|^2\) can be interpreted as distribution of power in the frequency domain

For each \(f\) this quantity is a random variable, since it is a function of the random process \(x(t)\)

The power spectral density (PSD) \(S_x(f )\) is defined as the limit of the expectation of the expression above, for large \(T\): \[ S_x(f) = \lim _{T\to \infty}\mathrm{E}\left[ \frac{1}{T}|X_T(f)|^2 \right] \]

The Wiener-Khinchin theorem ensures that for well-behaved wide-sense stationary processes the limit exists and is equal to the Fourier transform of the autocorrelation \[\begin{align} S_x(f) &= \int_{-\infty}^{+\infty}R_x(\tau)e^{-j2\pi f \tau}d\tau \\ R_x(\tau) &= \int_{-\infty}^{+\infty}S_x(f)e^{j2\pi f \tau}df \end{align}\]

Note: \(S_x(f)\) in Hz and inverse Fourier Transform in Hz (\(\frac{1}{2\pi}d\omega = df\))

image-20240910003805151

[https://www.robots.ox.ac.uk/~dwm/Courses/2TF_2011/2TF-L5.pdf]


Example

image-20240904203802604

Remember: impulse scaling

image-20240718210137344 \[ \cos(2\pi f_0t) \overset{\mathcal{F}}{\longrightarrow} \frac{1}{2}[\delta(f -f_0)+\delta(f+f_0)] \]

Energy Signal

image-20240910004411501

image-20240910004421791

image-20240910004448439

Wiener Process (Brownian Motion)

Dennis Sun, Introduction to Probability: Lesson 49 Brownian Motion [https://dlsun.github.io/probability/brownian-motion.html]

Wiener process (also called Brownian motion)

unnamed-chunk-178-1

image-20241202001449997

reference

L.W. Couch, Digital and Analog Communication Systems, 8th Edition, 2013

Alan V Oppenheim, George C. Verghese, Signals, Systems and Inference, 1st edition

R. Ziemer and W. Tranter, Principles of Communications, Seventh Edition, 2013

PSS and HB Overview

The steady-state response is the response that results after any transient effects have dissipated.

The large signal solution is the starting point for small-signal analyses, including periodic AC, periodic transfer function, periodic noise, periodic stability, and periodic scattering parameter analyses.

Designers refer periodic steady state analysis in time domain as "PSS" and corresponding frequency domain notation as "HB"

image-20231028163033255

Harmonic Balance Analysis

The idea of harmonic balance is to find a set of port voltage waveforms (or, alternatively, the harmonic voltage components) that give the same currents in both the linear-network equations and nonlinear-network equations

that is, the currents satisfy Kirchoff's current law

Define an error function at each harmonic, \(f_k\), where \[ f_k = I_{\text{LIN}}(k\omega) + I_{\text{NL}}(k\omega) \] where \(k=0, 1, 2,...,K\)

Note that each \(f_k\) is implicitly a function of all voltage components \(V(k\omega)\)

Newton Solution of the Harmonic-Balance Equation

Iterative Process and Jacobian Formulation

image-20231108222451147

The elements of the Jacobian are the derivatives \[ \frac{\partial F_{\text{n,k}}}{\partial _{V_\text{m,l}}} \] where \(n\) and \(m\) are the port indices \((1,N)\), and \(k\) and \(l\) are the harmonic indices \((0,...,K)\)

Selecting the Number of Harmonics and Time Samples

In theory, the waveforms generated in nonlinear analysis have an infinite number of harmonics, so a complete description of the operation of a nonlinear circuit would appear to require current and voltage vectors of infinite dimension.

Fortunately, the magnitudes of frequency components invariably decrease with frequency; otherwise the time wavefroms would represent infinite power.

Initial Estimate

One important property of Newton's method is that its speed and reliability of convergence depend strongly upon the initial estimate of the solution vector.

Shooting Newton

TODO 📅

Nonlinearity & Linear Time-Varying Nature

Nonlinearity Nature

The nonlinearity causes the signal to be replicated at multiples of the carrier, an effect referred to as harmonic distortion, and adds a skirt to the signal that increases its bandwidth, an effect referred to as intermodulation distortion

image-20231029093504162

It is possible to eliminate the effect of harmonic distortion with a bandpass filter, however the frequency of the intermodulation distortion products overlaps the frequency of the desired signal, and so cannot be completely removed with filtering.

Time-Varying Linear Nature

image-20231029101042671

linear with respect to \(v_{in}\) and time-varying

Given \(v_{in}(t)=m(t)\cos (\omega_c t)\) and LO signal of \(\cos(\omega_{LO} t)\), then \[ v_{out}(t) = \text{LPF}\{m(t)\cos(\omega_c t)\cdot \cos(\omega_{LO} t)\} \] and \[ v_{out}(t) = m(t)\cos((\omega_c - \omega_{LO})t) \]

A linear periodically-varying transfer function implements frequency translation

Periodic small signal analyses

Analysis in Simulator

  1. LPV analyses start by performing a periodic analysis to compute the periodic operating point with only the large clock signal applied (the LO, the clock, the carrier, etc.).
  2. The circuit is then linearized about this time-varying operating point (expand about the periodic equilibrium point with a Taylor series and discard all but the first-order term)
  3. and the small information signal is applied. The response is calculated using linear time-varying analysis

Versions of this type of small-signal analysis exists for both harmonic balance and shooting methods

PAC is useful for predicting the output sidebands produced by a particular input signal

PXF is best at predicting the input images for a particular output

image-20241109110936909

image-20241109110958641

Conversion Matrix Analysis

Large-signal/small-signal analysis, or conversion matrix analysis, is useful for a large class of problems wherein a nonlinear device is driven, or "pumped" by a single large sinusoidal signal; another signal, much smaller, is applied; and we seek only the linear response to the small signal.

The most common application of this technique is in the design of mixers and in nonlinear noise analysis

  1. First, analyzing the nonlinear device under large-signal excitation only, where the harmonic-balance method can be applied
  2. Then, the nonlinear elements in the device's equivalent circuit are then linearized to create small-signal, linear, time-varying elements
  3. Finally, a small-signal analysis is performed

Element Linearized

Below shows a nonlinear resistive element, which has the \(I/V\) relationship \(I=f(V)\). It is driven by a large-signal voltage

image-20220511203515431

Assuming that \(V\) consists of the sum of a large-signal component \(V_0\) and a small-signal component \(v\), with Taylor series \[ f(V_0+v) = f(V_0)+\frac{d}{dV}f(V)|_{V=V_0}\cdot v+\frac{1}{2}\frac{d^2}{dV^2}f(V)|_{V=V_0}\cdot v^2+... \] The small-signal, incremental current is found by subtracting the large-signal component of the current \[ i(v)=I(V_0+v)-I(V_0) \] If \(v \ll V_0\), \(v^2\), \(v^3\),... are negligible. Then, \[ i(v) = \frac{d}{dV}f(V)|_{V=V_0}\cdot v \]

\(V_0\) need not be a DC quantity; it can be a time-varying large-signal voltage \(V_L(t)\) and that \(v=v(t)\), a function of time. Then \[ i(t)=g(t)v(t) \] where \(g(t)=\frac{d}{dV}f(V)|_{V=V_L(t)}\)

The time-varying conductance \(g(t)\), is the derivative of the element's \(I/V\) characteristic at the large-signal voltage

By an analogous derivation, one could have a current-controlled resistor with the \(V/I\) characteristic \(V = f_R(I)\) and obtain the small-signal \(v/i\) relation \[ v(t) = r(t)i(t) \] where \(r(t) = \frac{d}{dI}f_R(I)|_{I=I_L(t)}\)

A nonlinear element excited by two tones supports currents and voltages at mixing frequencies \(m\omega_1+n\omega_2\), where \(m\) and \(n\) are integers. If one of those tones, \(\omega_1\) has such a low level that it does not generate harmonics and the other is a large-signal sinusoid at \(\omega_p\), then the mixing frequencies are \(\omega=\pm\omega_1+n\omega_p\), which shown in below figure

image-20231108223600922

A more compact representation of the mixing frequencies is \[ \omega_n=\omega_0+n\omega_p \] which includes only half of the mixing frequencies:

  • the negative components of the lower sidebands (LSB)
  • and the positive components of the upper sidebands (USB)

image-20220511211336437

For real signal, positive- and negative-frequency components are complex conjugate pairs

Conversion Matrix as Bridge

The frequency-domain currents and voltages in a time-varying circuit element are related by a conversion matrix

The small-signal voltage and current can be expressed in the frequency notation as \[ v'(t) = \sum_{n=-\infty}^{\infty}V_ne^{j\omega_nt} \] and \[ i'(t) = \sum_{n=-\infty}^{\infty}I_ne^{j\omega_nt} \] where \(v'(t)\) and \(i'(t)\) are not Fourier series due to \(\omega_n=\omega_0+n\omega_p\)

The conductance waveform \(g(t)\) can be expressed by its Fourier series \[ g(t)=\sum_{n=-\infty}^{\infty}G_ne^{jn\omega_pt} \] Which is harmonics of large-signal \(\omega_p\)

Then the voltage and current are related by Ohm's law \[ i'(t)=g(t)v'(t) \] Then \[ \sum_{k=-\infty}^{\infty}I_ke^{j\omega_kt}=\sum_{n=-\infty}^{\infty}\sum_{m=-\infty}^{\infty}G_nV_me^{j\omega_{m+n}t} \]

A linear periodically-varying transfer function implements frequency translation

Linear Time Varying

The response of a relaxed LTV system at a time \(t\) due to an impulse applied at a time \(t − \tau\) is denoted by \(h(t, \tau)\)

The first argument in the impulse response denotes the time of observation.

The second argument indicates that the system was excited by an impulse launched at a time \(\tau\) prior to the time of observation.

Thus, the response of an LTV system not only depends on how long before the observation time it was excited by the impulse but also on the observation instant.

The output \(y(t)\) of an initially relaxed LTV system with impulse response \(h(t, \tau)\) is given by the convolution integral \[ y(t) = \int_0^{\infty}h(t,\tau)x(t-\tau)d\tau \] Assuming \(x(t) = e^{j2\pi f t}\) \[ y(t) = \int_0^{\infty}h(t,\tau)e^{j2\pi f (t-\tau)}d\tau = e^{j2\pi f t}\int_0^{\infty}h(t,\tau)e^{-j2\pi f\tau}d\tau \] The (time-varying) frequency response can be interpreted as \[ H(j2\pi f, t) = \int_0^{\infty}h(t,\tau)e^{-j2\pi f\tau}d\tau \] Linear Periodically Time-Varying (LPTV) Systems, which is a special case of an LTV system whose impulse response satisfies \[ h(t, \tau) = h(t+T_s, \tau) \] In other words, the response to an impulse remains unchanged if the time at which the output is observed (\(t\)) and the time at which the impulse is applied (denoted by \(t_1\)) are both shifted by \(T_s\) \[ H(j2\pi f, t+T_s) = \int_0^{\infty}h(t+T_s,\tau)e^{-j2\pi f\tau}d\tau = \int_0^{\infty}h(t,\tau)e^{-j2\pi f\tau}d\tau = H(j2\pi f, t) \] \(H(j2\pi f, t)\) of an LPTV system is periodic with timeperiod \(T_s\), it can be expanded as a Fourier series in \(t\), resulting in \[ H(j2\pi f, t) = \sum_{k=-\infty}^{\infty} H_k(j2\pi f)e^{j2\pi f_s k t} \] The coefficients of the Fourier series \(H_k(j2\pi f)\) are given by \[ H_k(j2\pi f) = \frac{1}{T_s}\int_0^{T_s} H(j2\pi f, t) e^{-j2\pi k f_s t}dt \]

reference

K. S. Kundert, "Introduction to RF simulation and its application," in IEEE Journal of Solid-State Circuits, vol. 34, no. 9, pp. 1298-1319, Sept. 1999, doi: 10.1109/4.782091. [pdf]

Stephen Maas, Nonlinear Microwave and RF Circuits, Second Edition , Artech, 2003.

Karti Mayaram. ECE 521 Fall 2016 Analog Circuit Simulation: Simulation of Radio Frequency Integrated Circuits [pdf1, pdf2]

The Value Of RF Harmonic Balance Analyses For Analog Verification: Frequency domain periodic large and small signal analyses. [https://semiengineering.com/the-value-of-rf-harmonic-balance-analyses-for-analog-verification/]

Shanthi Pavan, "Demystifying Linear Time Varying Circuits"

S. Pavan and G. C. Temes, "Reciprocity and Inter-Reciprocity: A Tutorial— Part I: Linear Time-Invariant Networks," in IEEE Transactions on Circuits and Systems I: Regular Papers, vol. 70, no. 9, pp. 3413-3421, Sept. 2023, doi: 10.1109/TCSI.2023.3276700.

S. Pavan and G. C. Temes, "Reciprocity and Inter-Reciprocity: A Tutorial—Part II: Linear Periodically Time-Varying Networks," in IEEE Transactions on Circuits and Systems I: Regular Papers, vol. 70, no. 9, pp. 3422-3435, Sept. 2023, doi: 10.1109/TCSI.2023.3294298.

S. Pavan and R. S. Rajan, "Interreciprocity in Linear Periodically Time-Varying Networks With Sampled Outputs," in IEEE Transactions on Circuits and Systems II: Express Briefs, vol. 61, no. 9, pp. 686-690, Sept. 2014, doi: 10.1109/TCSII.2014.2335393.

Prof. Shanthi Pavan. Introduction to Time - Varying Electrical Network. [https://youtube.com/playlist?list=PLyqSpQzTE6M8qllAtp9TTODxNfaoxRLp9]

Shanthi Pavan. EE5323: Advanced Electrical Networks (Jan-May. 2015) [https://www.ee.iitm.ac.in/vlsi/courses/ee5323/start]

R. S. Ashwin Kumar. EE698W: Analog circuits for signal processing [https://home.iitk.ac.in/~ashwinrs/2022_EE698W.html]

Piet Vanassche, Georges Gielen, and Willy Sansen. 2009. Systematic Modeling and Analysis of Telecom Frontends and their Building Blocks (1st. ed.). Springer Publishing Company, Incorporated.

Beffa, Federico. (2023). Weakly Nonlinear Systems. 10.1007/978-3-031-40681-2.

Wereley, Norman. (1990). Analysis and control of linear periodically time varying systems.

Hameed, S. (2017). Design and Analysis of Programmable Receiver Front-Ends Based on LPTV Circuits. UCLA. ProQuest ID: Hameed_ucla_0031D_15577. Merritt ID: ark:/13030/m5gb6zcz. Retrieved from https://escholarship.org/uc/item/51q2m7bx

Matt Allen. Introduction to Linear Time Periodic Systems. [https://youtu.be/OCOkEFDQKTI]

Fivel, Oren. "Analysis of Linear Time-Varying & Periodic Systems." arXiv preprint arXiv:2202.00498 (2022).

RF Harmonic Balance Analysis for Nonlinear Circuits [https://resources.pcb.cadence.com/blog/2019-rf-harmonic-balance-analysis-for-nonlinear-circuits]

Steer, Michael. Microwave and RF Design (Third Edition, 2019). NC State University, 2019.

Steer, Michael. Harmonic Balance Analysis of Nonlinear RF Circuits - Case Study Index: CS_AmpHB [link]

Vishal Saxena, "SpectreRF Periodic Analysis" URL:https://www.eecis.udel.edu/~vsaxena/courses/ece614/Handouts/SpectreRF%20Periodic%20Analysis.pdf

Josh Carnes,Peter Kurahashi. "Periodic Analyses of Sampled Systems" URL:https://slideplayer.com/slide/14865977/

Kundert, Ken. (2006). Simulating Switched-Capacitor Filters with SpectreRF. URL:https://designers-guide.org/analysis/sc-filters.pdf

Article (20482538) Title: Why is pnoise sampled(jitter) different than pnoise timeaverage on a driven circuit? URL:https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O0V000009EStcUAG

Article (20467468) Title: The mathematics behind choosing the upper frequency when simulating pnoise jitter on an oscillator URL:https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O0V000007MnBUUA0

Andrew Beckett. "Simulating phase noise for PFD-CP". URL:https://groups.google.com/g/comp.cad.cadence/c/NPisXTElx6E/m/XjWxKbbfh2cJ

Dr. Yanghong Huang. MATH44041/64041: Applied Dynamical Systems [https://personalpages.manchester.ac.uk/staff/yanghong.huang/teaching/MATH4041/default.htm]

Jeffrey Wong. Math 563, Spring 2020 Applied computational analysis [https://services.math.duke.edu/~jtwong/math563-2020/main.html]

Jeffrey Wong. Math 353, Fall 2020 Ordinary and Partial Differential Equations [https://services.math.duke.edu/~jtwong/math353-2020/main.html]

Tip of the Week: Please explain in more practical (less theoretical) terms the concept of "oscillator line width." [https://community.cadence.com/cadence_blogs_8/b/rf/posts/please-explain-in-more-practical-less-theoretical-terms-the-concept-of-quot-oscillator-line-width-quot]

Rubiola, E. (2008). Phase Noise and Frequency Stability in Oscillators (The Cambridge RF and Microwave Engineering Series). Cambridge: Cambridge University Press. doi:10.1017/CBO9780511812798

Dr. Ulrich L. Rohde, Noise Analysis, Then and Today [https://www.microwavejournal.com/articles/29151-noise-analysis-then-and-today]

Nicola Da Dalt and Ali Sheikholeslami. 2018. Understanding Jitter and Phase Noise: A Circuits and Systems Perspective (1st. ed.). Cambridge University Press, USA.

Kester, Walt. (2005). Converting Oscillator Phase Noise to Time Jitter. [https://www.analog.com/media/en/training-seminars/tutorials/MT-008.pdf]

Drakhlis, B.. (2001). Calculate oscillator jitter by using phase-noise analysis: Part 2 of two parts. Microwaves and Rf. 40. 109-119.

Explanation for sampled PXF analysis. [https://community.cadence.com/cadence_technology_forums/f/custom-ic-design/45055/explanation-for-sampled-pxf-analysis/1376140#1376140]

模拟放大器的低噪声设计技术2-3实践 아날로그 증폭기의 저잡음 설계 기법2-3실습 [https://youtu.be/vXLDfEWR31k?si=p2gbwaKoTxtfvrTc]

2.2 How POP Really Works [https://www.simplistechnologies.com/documentation/simplis/ast_02/topics/2_2_how_pop_really_works.htm]

Jaeha Kim. Lecture 11. Mismatch Simulation using PNOISE [https://ocw.snu.ac.kr/sites/default/files/NOTE/7037.pdf]

Hueber, G., & Staszewski, R. B. (Eds.) (2010). Multi-Mode/Multi-Band RF Transceivers for Wireless Communications: Advanced Techniques, Architectures, and Trends. John Wiley & Sons. https://doi.org/10.1002/9780470634455

B. Boser,A. Niknejad ,S.Gambin 2011 EECS 240 Topic 6: Noise Analysis [https://mixsignal.files.wordpress.com/2013/06/t06noiseanalysis_simone-1.pdf]

VCO Phase Noise

pnoise - timeaverage

  1. Direct Plot/Pnoise/Phase Noise or

    image-20220511112856934

  2. manually calculate by definition

    image-20220511112806122

  3. output noise with unit dBc

    Direct Plot/Pnoise/Output Noise Units:dBc/Hz and Noise convention: SSB

    image-20220511113248984

The above method 2 and 3 only apply to timeaveage pnoise simulation,

pnoise - sampled(jitter)/Edge Crossing

EdgePhaseNoise.drawio

Direct Plot/Pnoise/Edge Phase Noise or

image-20220515214901120

Another way, the following equation can also be used for sampled(jitter)/Edge Crossing

1
PhaseNoise(dBc/Hz) = dB20( OutputNoise(V/sqrt(Hz)) / slopeCrossing / Tper*twoPi ) - dB10(2)

where dB10(2) is used to obtain SSB from DSB

image-20220511150337318

Output Noise of sampled(jitter) pnoise

The last section's Output Noise (V**2/Hz) can be obtained by transient noise simulation

The idea is that sample waveform with ideal clock, subtract DC offset, then fft(psd)

  • samplesRaw = sample(wv)
  • samplePost = samplesRaw - average(samplesRaw)
  • Output Noise (V**2/Hz) = psd(samplePost)

image-20220516184543148

image-20220516184844296

Expression:

image-20220516185506348

The computation cost is typically very high, and the accuracy is lesser as compared to PSS/Pnoise

Pnoise Sampled(jitter): Sampled Phase Option

  • Identical to noisetype=timedomain in old GUI
  • Use model:
    • Sampleds Per Period: number of ponits
    • Add Specific Points: specific time point, still time points

image-20220712085426461

image-20220712085836315

image-20220712090011204

pss beat freq = 5GHz

pnoise sweeptype: absolute, from 100k to 2.5GHz

Transient noise

phase noise from transient noise analysis

  1. The Phase Noise function is now available in the Direct Plot form (Results-Direct Plot-Main Form) after Transient Analysis is run
    • Absolute jitter Method
    • Direct Power Spectral Density Method
  2. PN phase noise function
    • Absolute jitter Method
    • Direct Power Spectral Density Method

Absolute jitter Method: Phase noise is defined as the power spectral density of the absolute jitter of an input waveform

and absolute jitter method is the default method

In below discussion, we only think about the absolute jitter method

PSD and Phase Noise

  • phase noise is single-sideband
  • psd is double-sideband
  • Then the ratio is 2

By PSS_Pnoise

jee

1
rfEdgePhaseNoise(?result "pnoise_sample_pm0" ?eventList 'nil) + 10 * log10(2)

convert single-sideband phase noise to psd by multiplying 2 or 10 * log10(2)

By trannoise PN function

1
PN(clip(VT("/Out1") 2.60417e-08 0.000400052) "rising" 1.65 ?Tnom (1 / 3.84e+07) ?windowName "Rectangular" ?smooth 1 ?windowSize 15000 ?detrending "None" ?cohGain 1 ?methodType "absJitter")

double-sideband psd

By trannoise psd and abs_jitter function

1
dB10(psd(abs_jitter(clip(VT("/Out1") 2.60417e-08 0.000400052) "rising" 1.65 ?Tnom (1 / 3.84e+07)) 2.60417e-08 0.000400052 15360 ?windowName "Rectangular" ?smooth 1 ?windowSize 15000 ?detrending "None" ?cohGain 1))

double-sideband psd

abs_jitter Y-Unit default is rad

Comparison

image-20220506225324377

PN's result is same with psd's

RMS value

  • build the abs_jitter function with seconds as the Y axis and add the stddev function to determine the Jee jitter value
  • or integrate psd

The RMS \(x_{\text{RMS}}\) of a discrete domain signal \(x(n)\) is given by \[ x_{\text{RMS}}=\sqrt{\frac{1}{N}\sum_{n=0}^{N-1}|x(n)|^2} \] Inserting Parseval's theorem given by \[ \sum_{n=0}^{N-1}|x(n)|^2=\frac{1}{N}\sum_{n=0}^{N-1}|X(k)|^2 \] allows for computing the RMS from the spectrum \(X(k)\) as \[ x_{\text{RMS}}=\sqrt{\frac{1}{N^2}\sum_{n=0}^{N-1}|X(k)|^2} \]

Remarks

Cadence Spectre's PN function may call abs_jitter and psd function under the hood.

reference

Article (11514536) Title: How to obtain a phase noise plot from a transient noise analysis URL: https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nb1CEAQ

Article (20500632) Title: How to simulate Random and Deterministic Jitters URL: https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O3w000009fiXeEAI

Tutorial on Scaling of the Discrete Fourier Transform and the Implied Physical Units of the Spectra of Time-Discrete Signals Jens Ahrens, Carl Andersson, Patrik Höstmad, Wolfgang Kropp URL: https://appliedacousticschalmers.github.io/scaling-of-the-dft/AES2020_eBrief/

PSRR (Power Supply Rejection Ratio)

A good PSRR is important when an LDO is used as a sub-regulator in cascade with a switching regulator

image-20241206225227534

image-20241206225557514

The LDO would need to have a sufficiently high rejection at the switching frequency of the switching converter to filter out the ripples at that frequency

PMOS LDO

A large output capacitor solves the sudden load change problem, but the stability decreases because the large output capacitor forces the output pole toward the origin with the role of dominant pole

DC output impedance

The output impedance of the LDO at DC is known as its load regulation

DC output impedance of NMOS and PMOS LDO is the same for the same error amplifier gain

\[ R_{\text{out}} = \frac{1}{\beta A_{o1} g_{m2}} \]

image-20241202230138520

The NMOS LDO has a faster response to line transients than the PMOS LDO since it has better (smaller) PSRR

Power MOS gain affect on PMOS LDO

pwm_miller.drawio

DC gain \[ A_{dc} = g_mR_\text{ota} A_2 \] 3dB bandwidth \[ \omega_p = \frac{1}{R_\text{ota}(C_g+A_2C_c)} \] and GBW \[ \omega_u = \frac{g_m}{\frac{C_g}{A_2}+C_c} \]

image-20240803102158612

Feedforward Compensation with \(C_\text{FF}\)

  • Improved Noise
  • Improved Stability and Transient Response
  • Improved PSRR

outCc.drawio

\[\begin{align} R_1 \parallel \frac{1}{sC_{FF}} &= \frac{R_1}{1+sR_1C_{FF}} \\ Z_o &= \left( R_1\parallel \frac{1}{sC_{FF}}+R_2\right)\parallel \frac{1}{sC_L} \\ &=\frac{R_1+R_2+sR_1R_2C_{FF}}{s^2R_1R_2C_{FF}C_L + s[(R_1+R_2)C_L+R_1C_{FF}]+1} \\ A_{V2} &= g_m Z_o \\ &= g_m \frac{R_1+R_2+sR_1R_2C_{FF}}{s^2R_1R_2C_{FF}C_L + s[(R_1+R_2)C_L+R_1C_{FF}]+1} \\ \beta &= \frac{R_2}{\frac{R_1}{1+sR_1C_{FF}}+R_2} \\ &= \frac{R_2(1+sR_1C_{FF})}{R_1+R_2+sR_1R_2C_{FF}} \\ A_{V2}\beta &= \frac{g_mR_2(1+sR_1C_{FF})}{s^2R_1R_2C_{FF}C_L+s[(R_1+R_2)C_L+R_1C_{FF}]+1} \end{align}\]

That is, adding a \(C_{FF}\) also introduces a zero (\(\omega_z\)) and pole (\(\omega_p\)) into the LDO feedback loop

\[\begin{align} \omega_{po} &= \frac{1}{(R_1+R_2)C_L} \\ \omega_z &= \frac{1}{R_1C_{FF}} \\ \omega_{p} &= \frac{1}{(R_1 \parallel R_2)C_{FF}} \end{align}\]

Application Report SBVA042–July 2014, Pros and Cons of Using a Feedforward Capacitor with a Low-Dropout Regulator [https://www.ti.com/lit/an/sbva042/sbva042.pdf]

LDO Basics: Noise – How a Feed-forward Capacitor Improves System Performance [https://www.ti.com/document-viewer/lit/html/SSZTA13]

LDO Basics: Noise – How a Noise-reduction Pin Improves System Performance [https://www.ti.com/document-viewer/lit/html/SSZTA40]

NMOS Slave LDO

nmos_slave_psrr.drawio

\[\begin{align} \frac{V_g}{V_i} &=\frac{R||\frac{1}{s(C_g+C_{gs})}}{R||\frac{1}{s(C_g+C_{gs})}+\frac{1}{sC_{gd}}} \\ &= \frac{sRC_{gd}}{sR(C+C_{gd}+C_{gs})+1} \end{align}\] \[ \frac{V_g}{V_i} = -\frac{sC_{ds}+g_{ds}}{sC_{gs}+g_m} \]

That is, \[ \omega_{z,d} \simeq \frac{1}{R(\frac{g_m}{g_{ds}}C_{gd}+C)} \]

The calculating PSRR pole approach similar with zero, just \(V_o\) to \(V_i\) zero \[ \omega_{p,d} \simeq \frac{1}{R(\frac{C_s}{g_mR}+C)} \]

DC PSRR \[ \text{PSRR} = \frac{1}{g_mr_o} \]


image-20240726205718920

image-20240726205738664


PSRR @Vgate

psrr_vgate.drawio

KCL at output node

\[ g_m(-V_o\beta A_{E} - V_o) + \frac{V_i - V_o}{r_o} = \frac{V_o}{R_1+R_2} \]

Hence \[ \frac{V_o}{V_i} = \frac{1}{A_E\beta g_mr_o+g_mr_o +\frac{r_o}{R_1+R_2}+1} \approx \frac{1}{A_E\beta g_m r_o} \]

Through feedback loop, we derive \[ V_g = V_o \beta (-A_E) \approx \frac{V_i}{A_E\beta g_m r_o} \beta (-A_E) = -\frac{V_i}{g_mr_o} \]

That is \[ \frac{V_g}{V_i} \approx -\frac{1}{g_mr_o} \]

Due to closed loop, \(V_g\) and \(V_o\) is not source follower

High frequency PSRR

high-psrr.drawio

feedback resistor divider noise

fb_res_noise.drawio

assuming \(\text{LG} \gg 1\)

\[\begin{align} I_\text{t} &= \frac{V_\text{ref} - v_\text{n2}}{R_\text{2}} \\ V_\text{o} &= V_\text{ref} +v_\text{n1} + I_\text{t}R_\text{1} \\ \end{align}\]

Then \[ V_\text{o} = \frac{R_1+R_2}{R_2}V_\text{ref} + v_\text{n1} - \frac{R_1}{R_2}v_\text{n2} \] that is

\[ v_\text{no}^2 = v_\text{n1}^2 + \left(\frac{R_1}{R_2}\right)^2 v_\text{n2}^2 \]


image-20240816172605226

image-20240816173559747

\[ \text{vno1}^2= \text{vn1}^2+\text{vn2}^2/6^2=16.5758 + 99.45453/6^2 = 19.338425833 \]

reference

Hinojo, J.M., Martinez, C.I., & Torralba, A.J. (2018). Internally Compensated LDO Regulators for Modern System-on-Chip Design.

Chen, K.-H. (2016). Power Management Techniques for Integrated Circuit Design. Wiley-IEEE Press.

Morita, B.G. (2014). Understand Low-Dropout Regulator ( LDO ) Concepts to Achieve Optimal Designs.

H. -S. Kim, "Exploring Ways to Minimize Dropout Voltage for Energy-Efficient Low-Dropout Regulators: Viable approaches that preserve performance," in IEEE Solid-State Circuits Magazine, vol. 15, no. 2, pp. 59-68, Spring 2023, doi: 10.1109/MSSC.2023.3262767.

Ali Sheikholeslami, Circuit Intuitions: Voltage Regulators IEEE Solid-State Circuits Magazine, Vol. 12, Issue 4, to appear, Fall 2020.

Operational Transconductance Amplifier II Multi-Stage Designs [https://people.eecs.berkeley.edu/~boser/courses/240B/lectures/M07%20OTA%20II.pdf]

Toshiba, Load Transient Response of LDO and Methods to Improve it Application Note [https://toshiba.semicon-storage.com/info/application_note_en_20210326_AKX00312.pdf?did=66268]

Carusone, Tony Chan, David Johns, and Kenneth Martin. Analog integrated circuit design. John wiley & sons, 2011. [https://mrce.in/ebooks/Analog%20Integrated%20Circuit%20Design%202nd%20Ed.pdf]


Pavan Kumar Hanumolu. CICC 2015. "Low Dropout Regulators" [https://uofi.app.box.com/v/CICC15-LDO]

Mingoo Seok. ISSCC 2020 T7: "Basics of Digital Low-Dropout (LDO) Integrated Voltage Regulator" [https://www.nishanchettri.com/isscc-slides/2020%20ISSCC/TUTORIALS/T7Visuals.pdf]

Yan Lu, ISSCC2021 T10: "Fundamentals of Fully Integrated Voltage Regulators" [https://www.nishanchettri.com/isscc-slides/2021%20ISSCC/TUTORIALS/ISSCC2021-T10.pdf]

Hyun-Sik Kim, Low-Dropout (LDO) Voltage Regulators – From Basics to Recent Design Trends (presented in A-SSCC 2022) [pdf]

A. Raychowdhury. ISSCC 2024 T2: Fundamentals of Digital and Digitally-Assisted Linear Voltage Regulators

image-20241124184248887

image-20240704212740246


Voltage scattering

image-20241112201300108

characteristic impedance (\(Z_0\))

TODO 📅


Remember, S-parameters don't mean much unless you know the value of the reference impedance (it's frequently called Z0).

simulator will read sp file's Z0 parameter

image-20220430214052538

image-20220430214136970

image-20220430214419283

The default Z0 exported by EMX is 50

Voltage Transfer Function

image-20241030220203806

image-20241030220131714

image-20241030222403947

Reflection Coefficients

image-20241030222906229

image-20241030222923491

Rational Fit

Matlab/rationalfit

To resolve the convergence problem of s-parameter in Spectre simulator - rationalfit and write Verilog-A

image-20220630224525565

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
filename  = 'touchstone/ISI.S4P';
s4p = read(rfdata.data, filename);
sdd_params = s2sdd(s2p.S_Parameters, 2);
sdd21 = squeeze(sdd_params(2, 1, :)); % s21
freq = s4p.Freq;

% rational fitting
weight = ones(size(sdd21));
weight(floor(end*3/4):end) = 0.2;
weight(2:10) = 0;

[hfit, errb] = rationalfit(freq, sdd21, 'IterationLimit', [4, 16], 'Delayfactor', 0.98, ...
'Weight', weight, 'Tolerance', -38, 'NPoles', 32);
[sdd21_fit, ff] = freqresp(hfit, freq);

figure(1)
plot(freq/1e9, db(sdd21), 'b-'); hold on;
plot(ff/1e9, db(sdd21_fit), 'r-'); hold off; grid on;
legend('sdd21', 'sdd21\_fit');
xlabel('Freq (GHz)');
ylabel('magnitude (dB)');


ts = 1e-12;
n = 2^18;
trise = 4e-14;
[yout, tout] = stepresp(hfit, ts, n, trise);
figure(2)
plot(tout*1e12, yout, 'b-'); grid on;
xlabel('Time (ps)');
ylabel('V');
title('Step Response');


% write verilog-A
writeva(hfit, 'channel_32poles.va');

reference

microwaves101, S-parameters (https://www.microwaves101.com/encyclopedias/s-parameters)

Pupalaikis, P. (2020). S-Parameters for Signal Integrity. Cambridge: Cambridge University Press. doi:10.1017/9781108784863

Coelho, C. P., Phillips, J. R., & Silveira, L. M. (n.d.). Robust rational function approximation algorithm for model generation. Proceedings 1999 Design Automation Conference (Cat. No. 99CH36361). doi:10.1109/dac.1999.781313

Cadence IEEE IMS 2023, Introducing the Spectre S-Parameter Quality Checker and Rational Fit Model Generator [https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O3w000009lplhEAA]

The Complex Art Of Handling S-Parameters: The importance of extraction and fitting to circuit simulation involving S-parameters [https://semiengineering.com/the-complex-art-of-handling-s-parameters]

Dr. John Choma. EE 541, Fall 2006: Course Notes #2 Scattering Parameters: Concept, Theory, and Applications [https://www.ieee.li/pdf/essay/scattering_parameters_concept_theory_applications.pdf]

Dr. Ray Kwok . Network Techniques: Conversion between Filter Transfer Function and Filter Scattering (SMatrix) Parameters [https://www.sjsu.edu/people/raymond.kwok/docs/project172/FTF%20to%20S-Matrix%20Spring%202011.pdf]

Three fast time-domain system simulation techniques:

  • single-bit response method
  • double-edge response method
  • multiple-edge response method

Single-Bit Response (SBR) Method

Overlapping portions of a pulse response from neighboring bits are referred to as intersymbol interference (ISI). A received waveform is formed by superimposing, in time, the pulse responses of each bit in the sequence, as illustrated in Figure 9, assuming symmetric positive and negative pulses are transmitted for 1s and 0s

image-20240824193208821

To avoid spurious glitches between consecutive ones, rising and falling edge responses shall be symmetric. This is the limitation of SBR method.

Let \(p(t)\) be the SBR of the channel, \(t_s\) be the data sampling phase, \(T\) be the bit time, \(N_c\) is the number of UI in stored pulse response and \(b_m\) be the \(m\)th transmitted symbol. The voltage seen by the receiver's data sampler at the \(m\)th data sample is determined by \[ y_m = \sum_{k=m-N_c+1}^{m}b_kp(t_s+(m-k)T) \] where \(b_k \in [0, 1]\) and \(p(t) \ge 0\)

We always prepend \(Nc-1\) 0s in random bit stream for consistency.

image-20220429112902281

For computation convenient, the pulse need to be positive. For differential signal and amplitude \(V_{peak}\), the peak to peak is \(-V_{peak}\) to \(+V_{peak}\). After pulse added by \(V_{peak}\), peak to peak is \(0\) to \(+2V_{peak}\).

image-20220429154336080

image-20220429154423247

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
hold on;

yy_sum = zeros(OSR*Ns, Ns);
for idxBit = 1:Ns
bs_split = zeros(1, Ns+Nc-1);
bs_split(idxBit) = bs(idxBit);
yy = zeros(OSR, Ns);
for ii = Nc:Nc+Ns-1
bb = bs_split(ii:-1:ii-Nc+1);
yy(:,ii-Nc+1) = sum(bb.*yrps, 2);
end
yy_cont2 = reshape(yy, [], 1);
h = plot(yy_cont2);
h.Annotation.LegendInformation.IconDisplayStyle = 'off';
yy_sum(:, idxBit) = yy_cont2;
end
yy_sum = sum(yy_sum, 2); % merge
plot(yy_sum, 'k--');
plot(yy_cont, 'm-.');
grid on;
legend('sum', 'syn');
title('merge all single bit');
ylabel('mag');
xlabel('Time (\times Ts)');

The pulse response contain rising and falling edge. The 1 bit first rise from -1 to 1, then fall to -1; The 0 bit just do nothing for synthesized waveform with the help of falling edge of 1 bit.

The DC shift help deal with continuous 0 bits.

image-20220429174330324

another SBR example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
A = zeros(10,21);
n = [1:10];

% post cursor
for m = 1:3
A(m, 11+n(m)) = 0.5;
A(m, 11-n(m)) = 0.5;
end

% one
for m = 4:10
A(m, 11) = 1;
end

% h0 or main cursor
h0 = zeros(1, 21);
h0(1, 1) = 0.5;
h0(1, 21) = 0.5;
out = h0;

for m = 1:10
out = conv(out, A(m, :), "full");
end


stem(out)

143512636-0878e0fd-fe87-414c-9c73-52577eeb7593

143512677-ccefdf22-4e30-4e72-9220-bbe667671e79

Double-Edge Response (DER) Method

To handle the more general cases, with asymmetric rising and falling edges, the system response can be constructed in terms of edge transitions instead of bit responses.

The DER method decomposes the input data pattern, in terms of rising and falling edge transitions. The system response can be calculated by superimposing the shifted versions of the rising and falling edge responses : \[ y_m = \sum_{k=m-N_c+1}^{m}(b_k-b_{k-1})s_k(t_s+(m-k)T) + y_{int} \] where

\[\begin{align} s_i(t) &= r(t) -V_{low} \quad \text{if} \: (b_i\gt b_{i-1}) \\ &= V_{high}-f(t) \quad \text{otherwise} \end{align}\]

\(r(t)\) and \(f(t)\) are the rising and falling edge responses,respectively. \(V_{high}\) and \(V_{low}\) are the steady state DC levels, in response to a constant stream of ones and zeros, respectively. \(y_{int}\) is the initial DC state (either \(V_{high}\) or \(V_{low}\) ).

We always prepend \(Nc\) 0s in random bit stream for consistency.

image-20220429191941805

der.drawio

image-20220430010336977

image-20220430013715680

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
figure(1)
subplot(3, 1, 1)
plot(yrc);
hold on;
plot(yfc);
hold off;
legend('rising', 'falling')
grid on;
ylabel('mag');
xlabel('Time (\times Ts)');
title('step response');

subplot(3, 1, 2)
stem(bs, 'k'); grid on;
hold on;
stem((idxPreRspStart:idxPreRspEnd), bs(idxPreRspStart:idxPreRspEnd), "filled", 'r');
stem(idxPreRspStart, bs(idxPreRspStart), 'go');
stem(idxCurData, bs(idxCurData), "filled", 'm');
stem((idxPreRspStart:idxPreRspEnd)+0.5, 0.1.*bd(idxPreRspStart:idxPreRspEnd), 'bd-.');
hold off;
legend('', 'Nc bits', 'y_{int}', 'Current bit', 'Edge Transitions');
ylabel('mag');
xlabel('Time (\times UI)');
title('input stream');

subplot(3, 1, 3)
yy_cont = reshape(yy, [], 1); % continuous version
plot(yy_cont); grid on;
title('continuous yout')
ylabel('mag');
xlabel('Time (\times Ts)');

figure(2)
hold on;
for idx = idxPreRspStart+1-Nc:idxCurData+32-Nc
ys = yy(:, idx);
tt = ((idx-1)*OSR+1:idx*OSR);
h = plot(tt(:), ys(:), 'LineWidth',3);
h.Annotation.LegendInformation.IconDisplayStyle = 'off';
end
plot(yy_cont, 'm--', 'LineWidth',1);
hold off;
legend('syn')
ylabel('mag');
xlabel('Time (\times Ts)');
title('synthesize with step response');
grid on;

Reference

T. C. Carusone, "Introduction to Digital I/O: Constraining I/O Power Consumption in High-Performance Systems," in IEEE Solid-State Circuits Magazine, vol. 7, no. 4, pp. 14-22, Fall 2015

Oh, Kyung Suk Dan, and Xing Chao Chuck Yuan. High-Speed Signaling: Jitter Modeling, Analysis, and Budgeting. Prentice Hall, 2011.

Ren, Jihong and Kyung Suk Oh. “Multiple Edge Responses for Fast and Accurate System Simulations.” IEEE Transactions on Advanced Packaging 31 (2008): 741-748.

Shi, Rui. “Off-chip wire distribution and signal analysis.” (2008).

X. Chu, W. Guo, J. Wang, F. Wu, Y. Luo and Y. Li, "Fast and Accurate Estimation of Statistical Eye Diagram for Nonlinear High-Speed Links," in IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 29, no. 7, pp. 1370-1378, July 2021, doi: 10.1109/TVLSI.2021.3082208.

Matlab - pulse2stateye

Due to this function only output PDF of eye, postprocessing is needed which cumulative sum PDF.

Probability Density Function(PDF) plot

PDF

Bit Error Rate(BER) plot

BER

pulse response

image-20220502134522549

DC shift don't affect pulse2stateye function normally

Both pulse [0 0 0 0 .. 0 1 0 0 0 0 0 ...] and [1 1 1 1 ... 1 0 1 1 1 1 ...] can be fed into

pulse2stateye function

CAUTION: the 0 don't mean common voltage but bit 0 , which is -Vpeak in differential link

postprocessing function

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
% REF: https://www.mathworks.com/help/serdes/ref/pulse2stateye.html
load('PulseResponseReflective100ps.mat');
modulation = 2;
pulsewave = zeros(size(pulse, 1), 1);
pulsewave = pulse(:, 1);
pulsewave(:,1) = pulsewave - pulsewave(1); % DC shift, although `pulse2stateye` shift internally

[stateye,vh,th] = pulse2stateye(pulsewave,SamplesPerSymbol,modulation);
%stateye(1:200, 1:200) = 10000;
cmap = serdes.utilities.SignalIntegrityColorMap;
figure(1);
imagesc(th*SymbolTime*1e12,vh,stateye)
colormap(cmap)
colorbar
axis('xy')
xlabel('ps')
ylabel('V')
title('Statistical Eye PDF')

[ysize, xsize] = size(stateye);
ymid = floor((ysize+1)/2);
upperEyePDF = stateye(ymid:end,:);
lowerEyePDF = stateye(ymid:-1:1,:); % upside down

upperEyeCDF = cumsum(upperEyePDF, 1);
lowerEyeCDF = cumsum(lowerEyePDF, 1);


berlist = [1e-12, 1e-6, 0.01];
lenBer = length(berlist);
upperBERIdx = zeros(lenBer, xsize);
lowerBERIdx = zeros(lenBer, xsize);

for i = 1:lenBer
for j = 1:xsize
upperBERIdx(i, j) = find(upperEyeCDF(:, j) >= berlist(i), 1);
lowerBERIdx(i, j) = find(lowerEyeCDF(:, j) >= berlist(i), 1);
end
end

% shift idx to algin original stateye
upperBERIdx = ymid - 1 + upperBERIdx;
lowerBERIdx = ymid + 1 - lowerBERIdx;

upperBERVal = vh(upperBERIdx);
lowerBERVal = vh(lowerBERIdx);

tticks = th*SymbolTime*1e12;
figure(2);
lgd = cell(lenBer*2,1) ;
hold on;
for i = 1:lenBer% REF: https://www.mathworks.com/help/serdes/ref/pulse2stateye.html
load('PulseResponseReflective100ps.mat');
modulation = 2;
pulsewave = zeros(size(pulse, 1), 1);
pulsewave = pulse(:, 1); % remove crosstalk pulse responses

[stateye,vh,th] = pulse2stateye(pulsewave,SamplesPerSymbol,modulation);
cmap = serdes.utilities.SignalIntegrityColorMap;
figure(1);
imagesc(th*SymbolTime*1e12,vh,stateye)
colormap(cmap)
colorbar
axis('xy')
xlabel('ps')
ylabel('V')
title('Statistical Eye PDF')

[ysize, xsize] = size(stateye);
ymid = floor((ysize+1)/2);
upperEyePDF = stateye(ymid:end,:);
lowerEyePDF = stateye(ymid:-1:1,:); % upside down

upperEyeCDF = cumsum(upperEyePDF, 1);
lowerEyeCDF = cumsum(lowerEyePDF, 1);


berlist = [1e-12, 1e-6, 0.01];
lenBer = length(berlist);
upperBERIdx = zeros(lenBer, xsize);
lowerBERIdx = zeros(lenBer, xsize);

for i = 1:lenBer
for j = 1:xsize
upperBERIdx(i, j) = find(upperEyeCDF(:, j) >= berlist(i), 1);
lowerBERIdx(i, j) = find(lowerEyeCDF(:, j) >= berlist(i), 1);
end
end

% shift idx to algin original stateye
upperBERIdx = ymid - 1 + upperBERIdx;
lowerBERIdx = ymid + 1 - lowerBERIdx;

upperBERVal = vh(upperBERIdx);
lowerBERVal = vh(lowerBERIdx);

tticks = th*SymbolTime*1e12;
figure(2);
lgd = cell(lenBer*2,1) ;
hold on;
for i = 1:lenBer
plot(tticks, upperBERVal(i, :), 'Color', cmap(i*15, :));
lgd{i*2-1} = strcat('BER=',num2str(berlist(i)));
plot(tticks, lowerBERVal(i, :), 'Color', cmap(i*15, :));
lgd{i*2} = "";
end
hold off;
legend(lgd)
axis('xy')
xlabel('ps')
ylabel('V')
title('Statistical Eye BER')

figure(3)
tt = [0:size(pulsewave, 1)-1]*dt;
plot(tt*1e9, pulsewave, 'k', tt*1e9, pulsewave-pulsewave(1), 'r--');
legend('original', 'dc shift');
xlim([0 10]);
ylim([-0.65 0.65])
xlabel('Time (ns)');
ylabel('voltage (V)');
title('pulse response');
grid on;
plot(tticks, upperBERVal(i, :), 'Color', cmap(i*15, :));
lgd{i*2-1} = strcat('BER=',num2str(berlist(i)));
plot(tticks, lowerBERVal(i, :), 'Color', cmap(i*15, :));
lgd{i*2} = "";
end
hold off;
legend(lgd)
axis('xy')
xlabel('ps')
ylabel('V')
title('Statistical Eye BER')

figure(3)
tt = [0:size(pulsewave, 1)-1]*dt;
plot(tt*1e9, pulsewave);
xlabel('Time (ns)');
ylabel('voltage (V)');
title('pulse response');
grid on;

pulse without ISI

Vp2p = 1V

image-20220502135551321

image-20220502135535943

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
modulation = 2;
SamplesPerSymbol = 32;
pulsewave = zeros(SamplesPerSymbol*16, 1);
pulsewave(3*SamplesPerSymbol:4*SamplesPerSymbol-1, 1) = 1;

[stateye,vh,th] = pulse2stateye(pulsewave,SamplesPerSymbol,modulation);
cmap = serdes.utilities.SignalIntegrityColorMap;
figure(1);
imagesc(th*SymbolTime*1e12,vh,stateye)
colormap(cmap)
colorbar
axis('xy')
xlabel('ps')
ylabel('V')
title('Statistical Eye PDF')


figure(2)
tt = [0:size(pulsewave, 1)-1]*dt;
plot(tt*1e9, pulsewave, 'k', tt*1e9, pulsewave-pulsewave(1), 'r--');
legend('original', 'dc shift');
xlabel('Time (ns)');
ylabel('voltage (V)');
title('pulse response');
grid on;

HSPICE - snpsSimADE

use StatEye Analysis in HSPICE

create netlist with hspiceD in Virtuoso

image-20220708011315422

modify netlist

1
2
3
4
5
P1 vi 0  port=1  Z0=0 LFSR (1 0 0 100p 100p 1G 1 [5,2])
P2 vo 0 port=2 Z0=1G
.stateye T=1ns trf=100p incident_port=1 probe_port=2
.probe stateye eye(2) berC(2) eyeBW(2)
.print stateye eye(2) berC(2) eyeBW(2)

Note bothZ0=0 and Z0=1G are used to remove port's effect, which is used as ideal voltage source and voltage monitor

image-20220708012542135

The .probe stateye command generates netlist.stet# and netlist.stev# for following purposes:

  • netlist.stet#: eye(t,v), eyeBW(t,v), eyeV(t), ber(t,v) and bathtubV(t)
  • netlist.stet#: eye(t,v), eyeBW(t,v), eyeV(t), ber(t,v) and bathtubV(t)

setup

.cdsinit

1
load( strcat( getShellEnvVar("HSPICE_HOME") "/hspice/interface/snpsSimADE.ile" ))

environment variable

1
2
export CDS_LOAD_ENV=CSF
export SNPSSIMADE_LOAD_MODE=HSPICE

references

Sanders, Anthony, Michael Resso and John D'Ambrosia. “Channel Compliance Testing Utilizing Novel Statistical Eye Methodology.” (2004).

X. Chu, W. Guo, J. Wang, F. Wu, Y. Luo and Y. Li, "Fast and Accurate Estimation of Statistical Eye Diagram for Nonlinear High-Speed Links," in IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 29, no. 7, pp. 1370-1378, July 2021, doi: 10.1109/TVLSI.2021.3082208.

HSPICE® User Guide: Signal Integrity Modeling and Analysis, Version Q-2020.03, March 2020

IA Title: Common Electrical I/O (CEI) - Electrical and Jitter Interoperability agreements for 6G+ bps, 11G+ bps, 25G+ bps I/O and 56G+ bps IA # OIF-CEI-04.0 December 29, 2017 [pdf]

Chris Li Ph.D. student at the University of Toronto [pystateye repo]

Jitter measurements can be classified into three categories: cycle-to-cycle jitter, period jitter, and long-term jitter

Jitter is a key performance parameter. Need to know what matters in each case:

  • PJ for digital timing
  • LTJ for data converters and serial data
  • Phase noise for communications (not all bandwidths matter)

image-20240714095712249

The above Cycle-Cycle Jitter equation is wrong, \(\tau_1\) and \(\tau_2\) are not independent

Short Term Jitter

image-20230916235240675

image-20230916235314423

Period jitter, Jper is the short term variation in clock period compared to the average (mean) clock period.

Cycle-to-Cycle, Jcc is the time difference of two adjacent clock periods

Long Term Jitter (LTJ)

image-20230916235647723

image-20230916235709504

measuring LTJ

image-20230916235033464

Jitter Calculation Examples

image-20230917003028143

Jcc vs Jper

Estimating the RMS cycle-to-cycle jitter if all you have available is the RMS period jitter.

  • Cycle-to-cycle jitter - The short-term variation in clock period between adjacent clock cycles. This jitter measure, abbreviated here as \(J_{CC}\), may be specified as either an RMS or peak-to-peak quantity.
  • Period jitter - The short-term variation in clock period over all measured clock cycles, compared to the average clock period. This jitter measure, abbreviated here as \(J_{PER}\), may be specified as either an RMS or peak-to-peak quantity.

Let the variable below represent the variance of a single edge’s timing jitter, i.e. the difference in time of a jittery edge versus an ideal edge, \(\sigma^2_j\)

If each edge’s jitter is independent then the variance of the period jitter can be written as \[\begin{align} \sigma^2_\text{jper} &= (\sigma_\text{j(n+1)}-\sigma_\text{j(n)})^2 \\ &= \sigma_\text{j(n+1)}^2-2\sigma_\text{j(n+1)}\sigma_\text{j(n)})+\sigma_\text{j(n)})^2\\ &= \sigma_\text{j(n+1)}^2+\sigma_\text{j(n)})^2 \\ &=2\sigma^2_j \end{align}\]

In every cycle-to-cycle measurement we use one "interior" clock edge twice and therefore we must account for this

\[\begin{align} \sigma^2_\text{jcc} &= (\sigma_\text{jper(n+1)}-\sigma_\text{jper(n)})^2 \\ &=(\sigma_\text{j(n+2)}-2\sigma_\text{j(n+1)}+\sigma_\text{j(n)})^2 \end{align}\]

Since each edge's jitter is assumed to be independent and have the same statistical properties we can drop the cross correlation terms and write:

\[\begin{align} \sigma^2_\text{jcc} &=(\sigma_\text{j(n+2)}-2\sigma_\text{j(n+1)}+\sigma_\text{j(n)})^2 \\ &=\sigma_\text{j(n+2)}^2+4\sigma_\text{j(n+1)}^2+\sigma_\text{j(n)}^2 \\ &=6\sigma_\text{j}^2 \end{align}\]

The ratio of the variances is therefore \[ \frac{\sigma^2_\text{jcc}}{\sigma^2_\text{jper}} = \frac{6\sigma_\text{j}^2} {2\sigma_\text{j}^2}=3 \] Then \[ \sigma_\text{jcc} = \sqrt{3}\sigma_\text{per} \]

[Timing 101 #8: The Case of the Cycle-to-Cycle Jitter Rule of Thumb, Silicon Labs]

Cadence Sampled Phase Noise

How to derive edge phase noise from Output Noise in sampled Pnoise simulation, [https://community.cadence.com/cadence_technology_forums/f/custom-ic-design/56929/how-to-derive-edge-phase-noise-from-output-noise-in-sampled-pnoise-simulation]

[Shawn Logan, Summary of Study of Cadence Sampled Phase Noise and Jitter Definitions with a Comparison to Conventional Time Interval Error (TIE) for a Driven Circuit]

General relationships between variance of jitter and phase noise

image-20240718225039432

Understanding jitter and phase noise : a circuits and systems perspective

references

AN10007 Clock Jitter Definitions and Measurement Methods, SiTime [pdf]

SERDES Design and Simulation Using the Analog FastSPICE Platform, Silicon Creations [pdf]

Flexible clocking solutions in advanced processes from 180nm to 5nm, Silicon Creations [pdf]

One-size-fits-all PLLs for Advanced Samsung Foundry Processes, Silicon Creations [pdf]

Circuit Design and Verification of 7nm LowPower, Low-Jitter PLLs, Silicon Creations, [pdf]

Lecture 10: Jitter, ECEN720: High-Speed Links Circuits and Systems Spring 2023 [pdf]

0%