Determine the complete current loop path in order to
calculate loop inductance of that current loop
The complete path for the current depends on the frequency of the
current. For one frequency, the return current will take a particular
path, but for a higher frequency the path of the return current may be
entirely different!
partial inductance
The first problem with using loop inductance to model the
conductors of a loop is that at different frequencies, the return
path
Y. Massoud and Y. Ismail, "Gasping the impact of on-chip inductance,"
in IEEE Circuits and Devices Magazine, vol. 17, no. 4, pp. 14-21, July
2001, doi: 10.1109/101.950046.
⭐ where \(S_{x_n}^T=\frac{\partial
T}{\partial x_n}\frac{x_n}{T}\) is relative
sensitivity
relative sensitivity connect \(\frac{dx_n}{x_n}\) with total relative
variation \(\frac{dT}{T}\)
And \(dT\) can be expressed as \[
dT =\sum_{n=1}^N S_{x_n}^T T\cdot \frac{dx_n}{x_n} = \sum_{n=1}^N
x_n'\cdot \frac{dx_n}{x_n}
\] ⭐ where \(x_n'= S_{x_n}^T
T\) is the contribution of \(x_n\) in \(T\)
⭐ For parallel or series resistors, it can prove \(\sum_{n=1}^N S_{x_n}^T = 1\) and $ _{n=1}^N
x_n'=T$
Here \(T= R_1 \parallel R_2 =
\frac{R_1R_2}{R_1+R_2}\), and \(T|_{R_1=8000, R_2=2000} = 1600\)
The contribution of \(R_1\) and
\(R_2\) to \(T\)\[\begin{align}
R_1' &= S_{R_1}^T T | _{R_1=8000, R_2=2000} = 320 \\
R_2' &= S_{R_2}^T T | _{R_1=8000, R_2=2000} = 1280
\end{align}\]
similarly finger 1 \[
\overline{i_{tot,1}^2} =
g_m^2\left(4kT\frac{R_G}{3}\right)\frac{1}{2^2\cdot 2}
\] Assuming uncorrelated \[
\overline{i_{tot}^2} = \sum_{N=0}^1\overline{i_{tot,N}^2}
=g_m^2\left(4kT\frac{R_G}{3}\right)\frac{1}{2^2\cdot 2} \cdot 2 =
g_m^2\left(4kT\frac{R_G}{3}\right)\frac{1}{2^2}
\] Generally \[
\overline{i_{tot}^2} = g_m^2\left(4kT\frac{R_G}{3}\right)\frac{1}{N^2}
\] where the gate is decomposed into \(N\) parallel fingers
two-side poly contact
We fracture Gate poly at the center point, then we obtain 2
segments, both have same \(\frac{g_m}{2}\) and \(R_G/2\).
The derivation procedure is same with folding structure, i.e. plug
\(N=2\) into \(\overline{i_{tot}^2} =
g_m^2\left(4kT\frac{R_G}{3}\right)\frac{1}{N^2}\)
That is \[
\overline{i_{tot}^2} = g_m^2\left(4kT\frac{R_G}{12}\right)
\] The input referred noise of gate resistance \[
\overline{V_{nRG}^2} = 4kT\frac{R_G}{12}
\]
Gate
resistance handling by parasitic extraction tools
They fracture the poly line at the intersection with the active
(diffusion) layer, breaking it into "gate poly"(poly over
active) and "field poly" (poly outside
active)
gploy, fpoly
Gate poly is also fractured at the center point. Gate instance pin of
the MOSFET (SPICE model) is connected to the center point of the gate
poly. Gate poly is described by two parasitic resistors,
connecting the fracture points.
MOSFET extrinsic parasitic capacitance between gate poly and source /
drain diffusion and contacts is calculated by parasitic extraction
tools, and assigned to the nodes of the resistive networks.
Different extraction tools do this differently - some tools connect
these parasitic capacitances to the center point of the gate poly, while
some other tools connect them to the end points of the gate poly
resistors.
\(\Delta\)
gate model
This distributed network has a different AC and transient response
than a simple lumped one-R and one-C circuit.
It was shown [B. Razavi] that such RC network behaves approximately
the same as a network with one R and one C element, where C is the
total capacitance, and R=1/3 * W/L rsh for single-side
connected poly, and R=1/12 W/L * rsh for double-sided connected
poly.
These coefficients - 1/3 and 1/12 - effectively enable an accurate
reduced order model for the gate, reducing a large number of R and C
elements to two (or three) resistors and one capacitor.
Gate Delta Model: where a gate is described by two
positive and one negative resistors
only applicable to contacts on gate overhangs
invalid for self-aligned gate contacts, where gate contact land
directly on top of gate, not gate overhang
Some SPICE simulators have problems handling negative
resistors, that's possibly why this model did not get a wide
adoption. Some foundries and PDKs support delta gate model, while some
others don't.
Vertical component of
gate resistance
In "old" technologies (pre-16nm), gate resistance was dominated by
lateral resistance. However, in advanced technologies, multiple
interfaces between gate material layers lead to a large vertical gate
resistance.
It's very easy to check this in DSPF file - if gate instance pin is
connected directly to the center of the gate poly - vertical resistance
is not accounted for. If it is connected by a positive resistor to the
center of the gate poly - that resistors represents the vertical gate
resistance.
decap
leakage current is determined by \(R_s +
R_p\), and \(R_p \gg R_s\)
low freq: \(Z=R_s + R_p\)
high freq: \(Z=R_s\)
An example: \(R_s=200\space
\Omega\), \(R_p = 8 \space
M\Omega\) and \(C_\text{gate}=10\space
fF\)
reference
⭐ B. Razavi, Y. Ran, and K. F. Lee, “Impact of Distributed Gate
Resistance on the Performance of MOS Devices,” IEEE Trans. Circuits and
Systems, Part I, pp. 750–754, Nov. 1994.
⭐ Maxim Ershov, Diakopto. "Gate Resistance in IC design flow", [link,
pdf]
Saha, Samar K.. “FinFET Devices for VLSI Circuits and Systems.”
(2020).
Harpe, Pieter J. A., Andrea Baschirotto and Kofi A. A. Makinwa.
“Hybrid ADCs, Smart sensors for the IoT, and Sub-1V and Advanced node
analog circuit design: Advances in Analog Circuit Design 2017.”
(2018).
Chauhan, Yogesh Singh. FinFET Modeling for IC Simulation and Design:
Using the BSIM-CMG Standard. London, UK: Academic Press, 2015.
A.J.Sholten et al., "FinFET compact modelling for analogue and RF
applications", IEDM'2010, p.190.
W. Wu and M. Chan, “Gate resistance modeling of multifin MOS
devices,” IEEE Electron Device Letters, vol. 27, no. 1, pp. 68-70, Jan.
2006.
A. L. S. Loke, C. K. Lee and B. M. Leary, "Nanoscale CMOS
Implications on Analog/Mixed-Signal Design," 2019 IEEE Custom Integrated
Circuits Conference (CICC), Austin, TX, USA, 2019, pp. 1-57, doi:
10.1109/CICC.2019.8780267.
// %t format will scale the rounded value to represent timeprecision // 1.1002*10e-9/1e-12 = 11002 $display("$realtime %%t = %t", $realtime); $display("$time %%t = %t", $time); end endmodule
The time unit and time precision can be specified in the following
two ways: - Using the compiler directive `timescale - Using
the keywords timeunit and timeprecision
1 2 3 4 5 6 7 8 9 10
module D (...); timeunit100ps; timeprecision10fs; ... endmodule
module E (...); timeunit100ps / 10fs; // timeunit with optional second argument ... endmodule
The minimum of timeprecision determine %t
output, the nearest timeunit and timeprecision
determine the round of $realtime and $time. Of
course, the simulator follow the time tick shown by
$realtime.
The spectral density format is appropriate for random or noise
signals but inappropriate for discrete frequency components because the
latter theoretically have zero bandwidth
Amplitude Correction
A finite-duration window \(w[n]\)
DTFT is \(W[e^{j\omega}]\) and the
maximum magnitude is is at DC frequency, which \(\sum_n w_n\)
Sinusoidal signal \(x[n]\)
DFS is \(X_k\), and DTFT shall be
\(\frac{2\pi}{N}X_k(e^{j\omega})\)
the windowed sequence \(v[n] =
x[n]w[n]\)
with multiplication property, DTFT of \(v[n]\) shall be \(\frac{X_k(e^{j\omega})}{N}\sum_n w_n\)
As we know, DFT of \(v[n]\) is
samples of its DTFT, that is \[
\frac{X_k(e^{j\omega})}{N}\sum_n w_n = X_v[k]
\] Therefore, \[
\frac{X_k(e^{j\omega})}{N} = \frac{X_v[k]}{\sum_n w_n}
\]
Effective Noise BandWidth
(ENBW)
General derivation
The relationship between a power spectrum (\(PS, V^2\)) and a power spectral
density (\(PSD, V^2/Hz\)) is given
by the effective noise bandwidth (ENBW), which
can easily be determined at the time when the DFT is computed.
ENBW should always be recorded when a spectrum or spectral density is
computed, such that the result can be converted to the other form at a
later stage, when the information about the frequency resolution \(f_{res}\) and the window that was used is
normally not easily available any more.
The normalized equivalent noise bandwidth (NENBW) of
the window is given by
\[
\text{NENBW} = \frac{NS_2}{S_1^2}
\] where \(S_1 = \sum
_{k=0}^{N-1}w_k\) and \(S_2 = \sum
_{k=0}^{N-1}w_k^2\)
Equivalent noise bandwidth (ENBW) compares a window to an
ideal, rectangular time-window. It is the bandwidth of the
rectangular window's frequency-domain shape that passes the same
amount of white noise energy as the frequency-domain
shape defined by the other window.
Therefore, the equivalent noise bandwidth \(B_{enbw}\) is given by
Assuming the windowed sequence \(v[n] =
x[n]w[n]\)
\(W[k]\): Fourier Transform of
finite sequence window
\(X_{sig}\): Fourier Transform
of signal
\(X_{n}\): Fourier Transform of
noise
\(X_{v,sig}\): Fourier Transform
of windowed signal
\(X_{v,n}\): Fourier Transform
of windowed noise
From Fig. 6,, we observe that the amplitude of the harmonic estimate
at a given frequency is biased by the accumulated broad-band noise
included in the bandwidth of the window.
In this sense, the window behaves as a filter, gathering
contributions for its estimate over its bandwidth
The Fourier Transform of windowed signal can be expressed as
DFT bin's output noise standard deviation (rms)
value is proportional to \(\sqrt{N}\),
and the DFT's output magnitude for the bin containing the signal
tone is proportional to \(N\)
signal tone power \[
P_{\text{sig}} = 2 \frac{X_{w,sig}^2}{N^2}
\]
+/- frequency spectrum and apply Parseval's theorem
noise power \[\begin{align}
P_n &= \sum_{k=0}^{N-1}{\frac{(X_{w,n}(k))^2}{N^2}} \\
&= \frac{X_{w,n}^2}{N^2}\cdot N \\
&= \frac{X_{w,n}^2}{N}
\end{align}\]
note white noise, that is \(X_n(i) =
X_n(j)\) for any \(i \neq
j\)
If we increase a DFT's size from \(N\) to \(2N\), the DFT's output SNR increased by
3dB. So we say that a DFT's processing gain increases
by 3dB whenever \(N\) is doubled.
The problem with sine-wave scaling is that the noise power is, on
average, evenly distributed over all FFT bins, whereas the
sine-wave power is concentrated in only a few bins. With
sine-wave scaling, the power of individual sine-wave components can be
read directly from the spectral plot, but in order to determine the
noise power, the powers of all the noise bins must be added
together.
%Clear variables. clear command window, close all figures: clc; clear all; close all; %%%Setup and define variables f0=10; %frequency of sinusoidal signal (Hz) fs=100; %sampling frequency (Hz) Ts=1/fs; %sampling period (seconds) N0=3000; %number of samples t=[0:Ts:Ts*(N0-1)]; %Sample times noise_PSD=.5; %This is the desired noise power spectral density in W/Hz. variance=noise_PSD*fs;% Variance = sigma^2 sigma=sqrt(variance); noise=transpose(sigma*randn(N0,1));%create sampled white Gaussian noise. xsignal=20*sin(2*pi*f0*t); %create sampled sinusoidal signal x=xsignal+noise; %Add signal to noise figure(1) histogram(noise,30) %plot histogram set(gca,'FontSize',14) %set font size of axis tick labels to 18 xlabel('Noise amplitude','fontsize',14) ylabel('Frequency of occurance','fontsize',14) title('Simulated histogram of white Gaussian noise','fontsize',14) SNR_try1=snr(xsignal,noise); %calculate SNR using built in "snr" function. SNR_try2=10*log10(sum(xsignal.^2)/sum(noise.^2)); %manually calculate SNR. %If everything is correct, the two SNR calculations above should agree. %Plot noise in time-domain figure(2) plot(t,x) set(gca,'FontSize',14) %set font size of axis tick labels to 18 xlabel('Time (s)','fontsize',14) ylabel('Amplitude','fontsize',14) title('Noisey sinusoid','fontsize',14) grid on %Plot power spectral density (PSD) of noise using three different methods: % %Method 1. Calcululate PSD from amplitude spectrum N=2^16; %Number of discrete points in the FFT y=fft(x,N)/fs; %fft of noise z=fftshift(y);%center noise spectrum f_vec=[0:1:N-1]*fs/N-fs/2; %designate sample frequencies amplitude_spectrum=abs(z); %compute two-sided amplitude spectrum ESD1=amplitude_spectrum.^2; %ESD = |F(w)|^2; PSD1=ESD1/((N0-1)*Ts);% PSD=ESD/T where T = total time of sample figure(3) plot(f_vec,10*log10(PSD1)); xlabel('Frequency [Hz]','fontsize',14) ylabel('dB/Hz','fontsize',14) title('Power spectral density - method 1','fontsize',14) grid on set(gcf,'color','w'); %set background color from grey (default) to white axis tight %calculate average power using PSD calclated from method 1: Average_power_method_1=sum(PSD1)*fs/N; % Pav=sum(PSD)*delta_f where delta_f=fs/N; % %Method 2 - Calculate PSD from autocorrelation time_lag=((-length(x)+1):1:(length(x)-1))*Ts; auto_cor=xcorr(x,x)/fs; %Use xcorr function to find PSD y=1/fs*fft(auto_cor,N); %fft of auto correlation function PSD2=abs(1/(N0-1)*fftshift(fft(auto_cor,N))); figure(4) plot(f_vec,10*log10(PSD2));%use convolution xlabel('Frequency [Hz]','fontsize',14) ylabel('dB/Hz','fontsize',14) title('Power spectral density - method 2','fontsize',14) grid on set(gcf,'color','w'); %set background color from grey (default) to white axis tight %calculate average power using PSD calclated from method 1: Average_power_method_2=sum(PSD2)*fs/N; %Pav=sum(PSD)*delta_f where delta_f=fs/N; % %Method 3 - Calculate PSD using built in pwelch function figure(5) PSD3=periodogram(x,[],N,fs,'centered'); plot(10*log10(PSD3)) xlabel('Frequency [Hz]','fontsize',14) ylabel('dB/Hz','fontsize',14) title('Power spectral density - method 3','fontsize',14) grid on set(gcf,'color','w'); %set background color from grey (default) to white axis tight Average_power_method_3=sum(PSD3)*fs/N; %Pav=sum(PSD)*delta_f where delta_f=fs/N; % %Calculate mean and average PSD of noise: PSD_noise=periodogram(noise,[],N,fs,'centered'); Average_noise_PSD=mean(PSD_noise); Mean_noise=mean(noise);
The power spectral density plots for methods 2 and 3 exactly match
that for method 1 (shown above).
A variety of techniques can be used to minimize this noise, for
example by keeping analog devices surrounded by guard rings, or using a
separate supply for the substrate/well taps.
However guard rings alone cannot prevent noise coupling deep in
the substrate, only surface currents.
PMOS are less noisy than NMOS since PMOS has its nwell which isolates
the substrate noise, but such is not valid for NMOS .
DNW
The N-channel devices built directly into the P-type substrate are
not as effectively isolated as P-channel devices in their N-wells. This
is because despite creating a P+ guard ring around the devices, there
remains an electrical path below the guard ring for charge to flow.
To overcome this issue, a deep N-well can be used to more
effectively isolate these N-channel devices.
the P-well is separated, allowing the voltage to be controlled
because the circuit within the deep N-well is separated from the
p-substrate in this structure, there is the benefit that this circuitry
is less susceptible to noise that propagates through the
p-substrate.
reference
Chew, K.W., Zhang, J., Shao, K., Loh, W., & Chu, S.F. (2002).
Impact of Deep N-well Implantation on Substrate Noise Coupling and RF
Transistor Performance for Systems-on-a-Chip Integration. 32nd European
Solid-State Device Research Conference, 251-254. URL:[slides,
paper]
A finite-length data record = an infinite record multiplied by a
rectangular window
Windowing is unavoidable
Applying the Hanning window (or any window) to a periodic
signal creates leakage.
leakage:
The component at one frequency leaks into the vicinity of another
compnent owing to the spectral smearing introdued by
window.
Notice side lobes adding out of phase can reduce
the heights of the peaks
Windowed Signal
Short transient signals in the time domain produce high, broadband
frequency content.
To reduce leakage, a mathematical function called a
window is applied to the data. Windows are designed to
reduce the sharp transient in the re-created signal as much as
possible.
Because the sharp transients are reduced and smoothed, the broadband
frequency of the spectral leakage is also reduced.
Periodic versus
Non-Periodic Background
When performing a Fourier Transform on measurement data, a window
affects periodic and non-periodic data differently:
Periodic (No Window needed): A signal captured
in a periodic manner does not require a window, and a resulting Fourier
Transform has no leakage. Applying a window alters the resulting Fourier
transform, and even creates spectral leakage where there would have been
no leakage otherwise.
Non-periodic (Window needed): Windows are used
on signals that are captured in a non-periodic manner to reduce spectral
leakage and get closer to the periodic results. A window can minimize
the leakage present in a non-periodic signal, but cannot eliminate
it.
The signal is repeated and appended mathematically because the
measured data is assumed to be representative of the entire original
signal
Periodic
When a measurement signal is captured in a periodic manner, the
Fourier Transform of the captured signal will have no
leakage in the frequency domain.
A window is not recommended for a periodic signal as it will distort
the signal in an unnecessary manner, and actually creates spectral
leakage.
Non-periodic
The same sine wave, with a different measurement time, results in a
non-periodic captured signal. Here, when the captured signal is
repeated, the original sine wave signal is not re-created.
In fact, several broadband transient events (circled in red) are
introduced. These transients create a broadband response, or
leakage.
Windows are used to minimize this leakage effect in
the frequency domain.
Hanning
When doing operational noise and vibration measurements, the Hanning
window is commonly used.
Random data has spectral leakage due to the abrupt cutoff at
the beginning and end of the time block. It is
non-periodic.
There is no way to ensure that the captured random
signal is periodic by varying the measurement time.
Hanning windows are often used with random data
because they have moderate impact on the frequency resolution and
amplitude accuracy of the resulting frequency spectrum.
The maximum amplitude error of a Hanning window is
15%
In the cited article, all spectral data had an amplitude
correction factor applied.
while the frequency leakage is typically confined to 1.5
spectral lines to each side of the original sine wave
signal
periodic signal
Applying the Hanning window (or any window) to a periodic signal
creates leakage.
The periodically captured sine wave with the Hanning window
(blue) is wider in frequency than the original signal (red)
In the figure, the sine wave with the Hanning window (blue) is
wider in frequency than the original signal (red).
non-periodic signal
When a Hanning window is applied to a non-periodic signal, the
leakage is greatly reduced and the amplitude is higher.
A non-periodically captured sine wave (magenta) has a
spectral leakage over the entire bandwidth, applying a Hanning window
minimized the leakage (green)
RMS calculation
A RMS calculationsums up the energy within a
frequency range.
both the RMS of the periodic and non-periodic signals with a
Hanning window are equal to the RMS of the leakage-free sine
wave.
Only the RMS of the non-periodic sine wave without a window
applied is not equal to the others
With the leakage spread over a smaller frequency range, doing
analysis calculations like RMS yields more accurate
results.
Flattop
The Flattop window has a better amplitude accuracy in
frequency domain compared to the Hanning window,
The maximum amplitude error of a Flattop window is less than
0.01%. By contrast, the Hanning window maximum amplitude error is
15%.
A Flattop window confines leakage to 3.43 spectral lines
to each side of the original signal.
amplitude errors
These maximum amplitude errors assume that amplitude correction
factors are applied to the frequency spectrums. These amplitude
correction factors compensate for any reduction caused by applying a
window.
leakage
The frequency accuracy of the Flattop window is more coarse compared
to a Hanning window. As a result, the Flattop window is typically
employed on data where frequency peaks are distinct and well separated
from each other.
When the frequency peaks are not guaranteed to be well separated, the
Hanning window is preferred because it is less likely to cause
individual peaks to be lost in the spectrum
Spectrum of two periodically captured tones that are \(4Hz\) apart with a \(1Hz\) frequency resolution. The spectrum
with a Hanning window (green) shows two peaks while the spectrum with a
Flattop window (blue) shows one peak.
Note that at the original frequencies of the tones the amplitude is
correct and equal to one for both windows.
One common application for a flattop window is performing
calibration. For example, a sound pistonphone only produces
one single and distinct frequency during microphone
calibration.
Uniform
A Uniform window has a value of 1.0 across the entire
measurement time. In reality, a Uniform window could be
called no window.
Depending on the data acquisition system used, sometimes the term
Rectangular window is also used.
A Uniform window creates no frequency or amplitude distortion
when the measured signal is periodic.
When a measured signal is not periodic, the amplitude is reduced
by a maximum of 36% and the frequency content is spread over
the entire bandwidth of the measurement.
This is due to sharp transients that are created by
repeating and appending the measured signal.
Whenever a measurement signal is periodic, a Uniform window is
preferred.
Applying a Hanning or Flattop window to a periodic signal will
actually create amplitude and frequency distortion.
Benefit of Reducing Leakage
The benefit is not that the captured signal is
perfectly replicated.
The main benefit is that the leakage is now confined over a
smaller frequency range, instead of affecting the entire
frequency bandwidth of the measurement.
With the leakage spread over a smaller frequency range, doing
analysis calculations like RMS yields more accurate results.
It is impossible to calculate the proper RMS amplitude estimate over
a limited frequency range of the un-windowed sine wave, since
the leakage is over the full frequency range. Therefore the RMS
amplitude is not correct.
Two tones
In the case of two closely spaced sine tones, without a window being
applied, two tones frequencies would leak into each other, which make
determining the true amplitude of individual peaks very difficult.
The window makes it easier to separate and distinguish each tone so a
proper analysis could be performed.
window function in
frequency domain
The transfer function \(a(f)\) of a
window \(w_j, j \in [0, N-1]\)
expresses the response of the window to a sinusoidal signal at an offset
of \(f\) frequency bins, i.e. DFT .
real part:\[
a_r(f)=\sum_{j=0}^{N-1}w_j\cos (2\pi f j/N)
\]
imaginary part:\[
a_i(f)=\sum_{j=0}^{N-1}w_j\sin (2\pi f j/N)
\]
frequency response can be obtained as \[
a(f) = \frac{\sqrt{a_r^2+a_i^2}}{S_1}
\] where \(S_1 = \sum
_{k=0}^{N-1}w_k\)
rectangle window example
aka. Uniform window, "Rectangular" window, "no window"
Whenever a measurement signal is periodic, a Uniform window is
preferred. Applying a Hanning or Flattop window to a periodic signal
will actually create amplitude and frequency distortion.
When \(f=0\)
\[
a_r(f) + ja_i(f) = \sum_{k=0}^{N-1}w_k = N
\]
When \(f \neq 0\)
\[\begin{align}
a_r(f) + ja_i(f) &= \sum_{k=0}^{N-1} e^{\frac{j2\pi k f}{N}} \\
&= \sum_{k=0}^{N/2} e^{\frac{j2\pi k f}{N}} + e^{\frac{j2\pi (k+N/2)
f}{N}} \\
&= \sum_{k=0}^{N/2} e^{\frac{j2\pi k f}{N}} + e^{j\pi}
e^{\frac{j2\pi k f}{N}} \\
&= \sum_{k=0}^{N/2} e^{\frac{j2\pi k f}{N}} - e^{\frac{j2\pi k
f}{N}} \\
&= 0
\end{align}\]
A Uniform window creates no frequency or amplitude distortion when
the measured signal is periodic.
However, if the signal cannot be guaranteed to be periodic, a Uniform
window should be avoided.
Window Properties
There is no possibility of trade-off between
main-lobe width and sied-lobe amplitude, since the
window length is the only variable parameter.
The rectangular window has the narrowest main lobe for a given
length, i.e. \(\Delta
_{ml}=4\pi/L\)
Other windows include the Bartlett, Hann, and Hamming windows. The
DTFTs of all these windows have main-lobe width \(\Delta _{ml}=8\pi/(L-1)\), which is
approximately twice that of the rectangular window, but they have
significantly smaller side-lobe amplitudes.
figure(1) plot(ff, X, 'r-o', ff, X_rect, 'b-s'); xlabel('Frequency(Hz)'); ylabel('|X|') title('Amplitude spectrum of periodically captured sine wave'); legend('w/ hanning', 'w/ rect'); grid on grid minor % rectangular window provide higher frequency resolution % hanning window induce leakage for the periodically captured sine wave
% fin - 0.5fres fin_lkg0d5 = fin - 0.5*fres; wv_lkg0d5 = cos(2*pi*fin_lkg0d5*tt); power_lkg0d5 = periodogram(wv_lkg0d5, whan, N, fs, 'power'); X_lkg0d5 = (power_lkg0d5).^0.5*2^0.5; psd_lkg0d5 = periodogram(wv_lkg0d5, whan, N, fs, 'psd'); rms_lkg0d5 = sum(psd_lkg0d5*fres)^0.5; fprintf('RMS@-0.5fres & hanning: %.5f\n', rms_lkg0d5);
Normally, if the layout connectivity extractor finds disjoint,
unconnected geometries with the same net name text attached, the
extractor will view this as an open circuit.
Virtual connection results in the extraction of a single net from
two or more disjoint physical nets when the physical net segments share
the same name.
Virtual connectivity is triggered by the rule file VIRTUAL
CONNECT COLON and VIRTUAL CONNECT NAME
specification statements.
Virtual connectivity can also be specified through the Calibre
Interactive GUI.
VIRTUAL CONNECT COLON
Virtual Connect Colon is used to virtually connect
nets that share a common prefix before a colon, like
VDD:1, VDD:2, and so forth.
If you specify YES, then the connectivity extractor first
strips off all characters from the first colon to the end of
the label names.
Next, the extractor forms a virtual connection between any two labels
that have the same name and that originally contained a
colon.
Colons can appear anywhere in the name with the exception that a
colon at the beginning of a name is treated as a regular character (that
is, it has no special effect).
up to the first colon character encountered
The colon is discarded in the extracted net
name
VIRTUAL CONNECT NAME
Virtual Connect Name virtually connects nets that
share the same name
Each name is a net name and can be optionally enclosed in quotes.
The connectivity extractor forms a virtual connection between any two
labels having the same name such that the label name appears in a
Virtual Connect Name specification statement in the
rule file.
VIRTUAL CONNECT NAME ? == Connect all nets by name
Note that if Virtual Connect Colon YES is also
specified, then Virtual Connect Name operates on names
after all colon suffixes have been stripped off.
For a dspf format, it will be treated as a spice
netlist format, which is by default case insensitive
Pay attention to VerilogIn block, which may contain upper
case / lower case net name, e.g NET1 and net1.
The extracted DSPF using extraction tool also contain NET1 and net1,
which shall not be shorted together.
Port Order
If you use .dspf_include, the following rules apply:
The subcircuit description is taken from the DSPF file even if the
same subcircuit description is available in the schematic netlist.
Depending on the port_order option, the port order of
the subcircuit definition is taken from the pre-layout schematic netlist
or from the DSPF file subcircuit definition, as shown below.
port_order=sch – (Default). The port order is taken
from schematic subcircuit definition. The same port number and names are
required. If the schematic subcircuit definition is not available, a
warning is issued in the log file, and DSPF port order is used.
port_order=spf – The port order is taken from the DSPF
subcircuit definition.
SPICE_SUBCKT_FILE of StarRC
The StarRC tool reads the files specified by the
SPICE_SUBCKT_FILE command to obtain port ordering
information. The files control the port ordering of the top
cell as well. The port order and the port list members read from the
.subckt for a skip cell are preserved in the output
netlist.
The file usually is the cdl netlist of extracted cell, this
way, port order is not problem
CDF termOrder
DSPF same order
DSPF
input.scs
different order
manual change DSPF's pin order shown as below
port_order=sch
dspf port is mapping to schematic by name, and the
simulation result is right
port_order=spf
dspf pin order is retained, and no mapping between
spectre netlist and dspf.
The simulation result is wrong
bus_delim="_ <>"
The way this works is that the first part of bus_delim is
the "schematic" delimiter (i.e. what's in the spectre netlist), and the
other part is the DSPF delimiter