Product Documentation
Spectre Circuit Simulator Reference
Product Version 23.1, September 2023

HB Noise Analysis (hbnoise)

Description

The Periodic or Quasi-Periodic Noise (HBNOISE) analysis is similar to the conventional noise analysis, except that HBNOISE analysis includes frequency conversion effects. Hence, it is useful for predicting the noise behavior of mixers, switched-capacitor filters, and other periodically or quasi-periodically driven circuits. It is particularly useful for predicting the phase noise of autonomous circuits, such as oscillators.

HBNOISE analysis linearizes the circuit about the periodic or quasi-periodic operating point computed in the prerequisite HB analysis. It is the periodically or quasi-periodically time-varying nature of the linearized circuit that accounts for the frequency conversion. In addition, the effect of a periodically or quasi-periodically time-varying bias point on the noise generated by the various components in the circuit is also included.

The time-average of the noise at the output of the circuit is computed in the form of a spectral density versus frequency. The output of the circuit is specified with either a pair of nodes or a probe component. To specify the output of a circuit with a probe, specify it using the oprobe parameter. If the output is voltage (or potential), choose a resistor or port as the output probe. If the output is current (or flow), choose a vsource or iprobe as the output probe.

If the input-referred noise or noise figure is desired, specify the input source using the iprobe parameter. For input-referred noise, use either a vsource or isource as the input probe; for noise figure, use a port as the probe. Currently, only a vsource, an isource, or a port can be used as an input probe. If the input source is noisy, as is a port, the noise analysis computes the noise factor (F) and noise figure (NF). To match the IEEE definition of noise figure, the input probe must be a port with no excess noise and its noisetemp must be set to 16.85C (290K). In addition, the output load must be a resistor or port and must be identified as the oprobe.

If port is specified as the input probe, both input-referred noise and gain are referred back to the equivalent voltage source inside the port. S-parameter analysis calculates those values in traditional sense.

The reference sideband (refsideband) specifies which conversion gain is used when computing input-referred noise, noise factor, and noise figure. The reference sideband specifies the input frequency relative to the output frequency with:

|f(input)| = |f(out) + refsideband frequency shift|.

For periodic noise (only one tone in HB analysis), 'refsideband' is a number. Use refsideband=0 when the input and output of the circuit are at the same frequency, such as with amplifiers and filters. When refsideband differs from 0, the single side-band noise figure is computed.

While for quasi-periodic noise (multiple tones in HB analysis), reference sidebands are vectors. Assume that there is one large tone and one moderate tone in HB. A sideband Ki is a vector [Ki_1 Ki_2]. It gives the frequency at

Ki_1 * fund(large tone of HB) + Ki_2 * fund(moderate tone of HB)

Use refsideband=[0 0 ...] when the input and output of the circuit are at the same frequency, such as with amplifiers and filters.

The reference sideband option ('refsidebandoption') specifies whether to consider the input at the frequency or the input at the individual quasi-periodic sideband specified. Note that different sidebands can lead to the same frequency.

The noise analysis always computes the total noise at the output, which includes contributions from the input source and the output load. The amount of the output noise that is attributable to each noise source in the circuit is also computed and output individually. If the input source is identified (using iprobe) and is a vsource or isource, the input-referred noise is computed, which includes the noise from the input source itself. Finally, if the input source is identified (using iprobe) and is noisy, as is the case with ports, the noise factor and noise figure are computed. Therefore, if:

No = total output noise

Ns = noise at the output due to the input probe (the source)

Nsi = noise at the output due to the image harmonic at the source

Nso = noise at the output due to harmonics other than input at the source

Nl = noise at the output due to the output probe (the load)

IRN = input referred noise

G = gain of the circuit

F = noise factor

NF = noise figure

Fdsb = double sideband noise factor

NFdsb = double sideband noise figure

Fieee = IEEE single sideband noise factor

NFieee = IEEE single sideband noise figure

Then:

IRN = sqrt(No^2/G^2)

F = (No^2 - Nl^2)/Ns^2

NF = 10*log10(F)

Fdsb = (No^2 - Nl^2)/(Ns^2+Nsi^2)

NFdsb = 10*log10(Fdsb)

Fieee = (No^2 - Nl^2 - Nso^2)/Ns^2

NFieee = 10*log10(Fieee).

When the results are output, No is named out, IRN is named in, G is named gain, F, NF, Fdsb, NFdsb, Fieee, and NFieee are named F, NF, Fdsb, NFdsb, Fieee, and NFieee respectively.

The computation of gain and IRN for quasi-periodic noise in HBNOISE assumes that the circuit under test is impedance-matched to the input source. This can introduce inaccuracy into the gain and IRN computation.

An HBNOISE analysis must follow an HB analysis.

Note: Unlike other analyses in Spectre, this analysis can only sweep frequency.

Syntax

Name  [p]  [n] ... hbnoise parameter=value ...

The optional terminals (p and n) specify the output of the circuit. If you do not specify the terminals, you must specify the output with a probe component.

Parameters

Sweep interval parameters

start

0

Start sweep limit.

stop

Stop sweep limit.

center

Center of sweep.

span

0

Sweep limit span.

step

Step size, linear sweep.

lin

50

Number of steps, linear sweep.

dec

Points per decade.

log

50

Number of steps, log sweep.

values

[...]

Array of sweep values.

valuesfile

Name of the file containing the sweep values.

sweeptype

unspecified

Specifies if the sweep frequency range is the absolute frequency of input or if it is relative to the port harmonics. When the unspecified value is used, Spectre RF sweeps using relative when autonomous simulation is performed or when the analysis is PSP; for other cases Spectre RF sweeps the absolute value of the input. Possible values are absolute, relative and unspecified.

relharmvec

[...]

Sideband - vector of HB harmonics - to which relative frequency sweep should be referenced.

stophalffund

no

If yes, automatically choose stop frequency of pnoise/hbnoise to be half of the fundamental frequency obtained from pss/hb analysis. Only works for noisetype = sampled/pmjitter/timedomain. Possible values are no and yes.

Probe parameters

oprobe

Compute total noise at the output defined by this component.

iprobe

Refer the output noise to this component.

refsideband

[...]

Conversion gain associated with this sideband is used when computing input-referred noise or noise figure.

refsidebandoption

individual

Whether to view the sideband as a specification of a frequency or a specification of an individual sideband. Possible values are freq and individual.

Sampled analysis parameters

ptvtype

timeaveraged

Specifies whether the PTV analysis will be traditional or sampled under certain conditions. Possible values are timeaveraged and sampled.

extrasampletimepoints

[...]

Additional time points for sampled PTV analysis.

sampleprobe

The crossing event at this port triggers the sampled small signal computation.

sampleratio

1

The ratio between sampled frequency and fund frequency (sampled frequency/fund frequency)..

noiseskipcount

-1

Calculate time-domain noise on only one of every noiseskipcount time points. When < 0, the parameter is ignored. When >=0, the simulator uses this parameter and ignores numberofpoints.

noisetimepoints

[...]

Additional time points for time-domain noise analysis.

numberofpoints

5

Number of time points of interest in the period where time domain PSD is calculated. Simulator divides the period evenly into N segments (N=numberofpoints) and calculates time domain PSD on the starting time point of each segment. When < 0, the parameter is ignored.

thresholdvalue

0

Sampled measurement is done when the signal crosses this value.

crossingdirection

all

Specifies the transitions for which sampling must be done. Possible values are all, rise, fall and ignore.

maxsamples

16

Maximum number of sampled events to be processed during the sampled analysis.

measurement

NULL

Specifies the jitter event list that will be measured.

Output parameters

noisetype

timeaverage

Specifies computation of time-averaged or time-sampled noise information. Possible values are timeaverage, correlations, timedomain, pmjitter and sampled.

maxsideband

This parameter determines the maximum sideband that is included when computing noise, that is either up-converted or down-converted to the output by the periodic drive signal. This parameter also determines the size of the small signal system when hbnoise is performed. It is critical for the accuracy of hbnoise analysis. Using a small maxsideband may cause accuracy loss. The default value is the harms/maxharms setting in the HB large signal analysis.

noiseout

usb

Specify noise output. You can set a vector like noiseout=[usb am pm]. And all are using single sideband(SSB) convention, half of the total power. Possible values are usb, lsb, am and pm.

sidevec

[...]

Array of relevant sidebands for the analysis.

save

Signals to output. The option 'save' specifies the signals to be saved in the result. 'allpub' saves all signals at all levels of hierarchy in the schematic, including the internal signals of device models. 'all' works like 'allpub'. 'lvl' saves all signals through the level of hierarchy set in 'nestlvl' option. 'lvlpub' works like 'lvl'. 'selected' is not recommended to use here. Possible values are all, lvl, allpub, lvlpub and selected.

nestlvl

Levels of subcircuits to output.

saveallsidebands

no

Save noise contributors by sideband. Possible values are no and yes.

output_xf

no

If set to no, there are no xf results output in hbnoise. Possible values are no and yes.

stimuli

sources

Stimuli used for XF analysis in hbnoise. Possible values are sources and nodes_and_terminals.

separatenoise

no

Separate noise into sources and transfer functions. Possible values are no and yes.

cyclo2txtfile

no

Output cyclo-stationary noise to text file as input source of next stage. Possible values are no and yes.

Convergence parameters

tolerance

Tolerance for linear solver. The default value is 1.0e-9 for shooting-based solver and 1.0e-4 for harmonic balance-based solver.

relativeTol

Relative tolerance for harmonic balance-based linear solver. Default value is 1.0e-2.

resgmrescycle

short

Restarts GMRES cycle. Possible values are instant, short, long, recycleinstant, recycleshort, recyclelong and custom.

hbprecond_solver

autoset

Select a linear solver for the GMRES preconditioner. Default is autoset. With autoset, the simulator will automatically select the appropriate precondtioner. The preconditioner affects the rate of convergence of the linear matrix solver used in periodic small-signal analysis. When autoset is selected, the simulator may decide to switch to a different preconditioner after the analysis begins. When that happens, the simulator may issue a warning instructing you to choose a different preconditioner during subsequent runs. Although not required, choosing a different preconditioner according to the simulator's instructions may speed up subsequent analyses. Possible values are basicsolver, blocksolver, autoset, blockdense, blocksolver2 and directsolver.

lowmem

0

Harmonic balance low memory mode; Possible values are 0, 1, or number (>=10). The default value is '0', the low memory mode is turned off; if '1' is set, the standard low memory mode is turned on; If a number no less than 10 is set, Spectre interprets the value as the memory requested in GigaBytes..

ppv

no

If set to yes, save the oscillator PPV after performing noise analysis. Possible values are no and yes.

augmented

yes

This parameter will be removed in future release soon. The parameter 'noiseout' is recommended. If set to yes, the frequency-aware PPV method is used to calculate the total noise of the oscillator; if set to pmonly, only the PM part of the oscillator noise is calculated; if set to amonly, only the AM part of the oscillator noise is calculated. The output of AM/PM noise is using double sideband convention. Possible values are no, yes, pmonly and amonly.

lorentzian

cornerfreqonly

This option determines if the Lorentzian plot is used in the oscillator noise analysis. 'lorentzian=yes' is only valid for 'noisetype=timeaverage'. Possible values are no, cornerfreqonly and yes.

krylov_size

200

This parameter is used to set maximum iteration count of the linear matrix solver used in periodic small-signal analysis. After reaching 1.25*krylov_size  iterations, the iteration is forced to terminate because of the poor rate of convergence. Increase the krylov_size if the simulation reports insufficient norm reduction errors in GMRES.

Annotation parameters

annotate

sweep

Degree of annotation. Possible values are no, title, sweep, status, steps and detailed_hb.

title

Analysis title.

oscmacrogene

no

If set to yes, harmonic balance steady-state and phase noise data are saved. Applies only if there is pm noise out. Possible values are no and yes.

oscmacrosave

File to which harmonic balance steady-state solution and phase noise data are to be written.

In practice, noise can mix with each of the harmonics of the periodic drive signal applied in the HB analysis and end up at the output frequency. However, the HBNOISE analysis includes only the noise that mixes with a finite set of harmonics that are typically specified using the maxsideband parameter.

If Ki represents sideband i, then for periodic noise:

f(noise_source) = f(out) + Ki * fund(hb)

For quasi-periodic noise with multi-tone in HB analysis, assuming that there is one large tone and one moderate tone, Ki is represented as [Ki_1 Ki_2]. Corresponding frequency shift is as follows:

Ki_1 * fund(large tone of HB) + Ki_2 * fund(moderate tone of HB)

If there are L large and moderate tones in HB analysis and a set of n integer vectors representing the sidebands:

Then

f(noise_source) = f(out) + SUM_j=1_to_L{ Ki_j * fund_j(hb) }

The maxsideband parameter specifies the maximum |Ki| included in the HBNOISE calculation. For quasi-periodic noise, only the large tone, which is the first fundamental, is affected by this entry. All the other tones, which are the moderate tones, are limited by maxharms specified for an HB analysis.

The number of requested sidebands changes the simulation time substantially.

You can designate a voltage to be the output by specifying a pair of nodes on the HBNOISE analysis statement or by using the 'oprobe' parameter. Any component with two or more terminals can be a voltage probe. When there are more than two terminals, they are grouped in pairs, and you use the portv parameter to select the appropriate pair.

Any component that naturally computes current as an internal variable can be a current probe. If the probe component computes more than one current, you use the porti parameter to select the appropriate current. You must not specify both portv and porti. If you specify neither, the probe component provides a reasonable default.

You can use the stimuli parameter to specify what serves as the inputs for the transfer functions. There are two choices: stimuli=sources and stimuli=nodes_and_terminals.

stimuli=sources indicates that the sources present in the circuit are to be used. You can use the xfmag parameters provided by the sources to adjust the computed gain to compensate for gains or losses in a test fixture. You can limit the number of sources in hierarchical netlists by using the save and nestlvl parameters.

stimuli=nodes_and_terminals indicates that all possible transfer functions are to be computed. This is useful when it is not known in advance which transfer functions are interesting. Transfer functions for nodes are computed assuming that a unit magnitude flow (current) source is connected from the node to ground. Transfer functions for terminals are computed assuming that a unit magnitude value (voltage) source is connected in series with the terminal. By default, the transfer functions from a small set of terminals are computed. If you want transfer functions from specific terminals, specify the terminals in the save statement. You must use the :probe modifier (for example, Rout:1:probe) or specify useprobes=yes on the options statement. If you want transfer functions from all terminals, specify currents=all and useprobes=yes on the options statement.

You can specify sweep limits by specifying the end points, or the center value and span of the sweep. Steps can be linear or logarithmic, and you can specify the number of steps or the size of each step. You can specify a step size parameter (step, lin, log, or dec) to determine whether the sweep is linear or logarithmic. If you do not specify a step size parameter, the sweep is linear when the ratio of stop to start values is less than 10 and logarithmic when this ratio is 10 or greater. Alternatively, you can use the values parameter to specify the values that the sweep parameter should take. If you provide both a specific set of values and a set specified using a sweep range, the two sets are merged and collated before being used. All frequencies are in Hertz.


Return to top
 ⠀
X