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

Quasi-Periodic AC Analysis (qpac)

Description

The quasi periodic AC (QPAC) analysis is used to compute transfer functions for circuits that exhibit multitone frequency translation. Such circuits include mixers, switched-capacitor filters, samplers, phase-locked loops, and the like. It is a small-signal analysis like AC analysis, except that the circuit is first linearized about a quasi-periodically varying operating point, as opposed to a simple DC operating point. Linearizing about a quasi-periodically time-varying operating point allows transfer-functions that include frequency translation, whereas simply linearizing about a DC operating point could not because linear time-invariant circuits do not exhibit frequency translation. In addition, the frequency of the sinusoidal stimulus is not constrained by the period of the large periodic solution.

Computing the small-signal response of a quasi-periodically varying circuit is a two-step process. First, the small stimulus is ignored and the quasi-periodic steady-state response of the circuit to possibly large periodic stimuli is computed using QPSS analysis. As part of the QPSS analysis, the quasi-periodically time-varying representation of the circuit is computed and saved for later use. The second step is to apply the small stimulus to the periodically varying linear representation to compute the small signal response. This is done using the QPAC analysis.

A QPAC analysis cannot be used independently; it must follow a QPSS analysis. However, any number of quasi-periodic small-signal analyses, such as QPAC, QPSP, QPXF, QPNOISE, can follow a QPSS analysis.

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

Syntax

Name qpac parameter=value ...

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

Specifies if the sweep frequency range is an absolute frequency, that is, actual frequency, or if it is relative to the "relharmvec" sideband frequency. Possible values are absolute and relative.

relharmvec

[...]

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

Output parameters

sidevec

[...]

Array of relevant sidebands for the analysis.

clockmaxharm

7

An alternative to the sidevec array specification, which automatically generates the array: [ -clockmaxharm ... 0 ... +clockmaxharms][-maxharms(QPSS)[2]...0...maxharms(QPSS)[2] ][...].

freqaxis

Specifies whether the results should be printed as per the input frequency, the output frequency, or the absolute value of the output frequency. The default is absout. Possible values are absout, out and in.

save

Signals to output. Possible values are all, lvl, allpub, lvlpub, selected, none and nooutput.

nestlvl

Levels of subcircuits to output.

Convergence parameters

tolerance

Tolerance for linear solver; the default value is 1.0e-9 for shooting-based solver and 1.0e-4 for harmonicbalance-based solver.

relativeTol

Relative tolerance for harmonicbalance-based linear solver; the default value is 1.0e-2.

gear_order

2

Gear order used for small-signal integration, 1 or 2.

solver

turbo

Solver type. Possible values are std and turbo.

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..

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.

You can select the set of periodic small-signal output frequencies of interest by setting either the clockmaxharm or the sidevec parameter. Sidebands are vectors in QPAC. Assuming that there is one large tone and one moderate tone in QPSS, a sideband K1 is represented as [K1_1 K1_2]. Corresponding frequency is as follows:

K1_1 * fund(large tone of QPSS) + K1_2 * fund(moderate tone of QPSS)

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

K1 = { K1_1,...K1_j..., K1_L} , K2, ... Kn. the output frequency at each sideband is computed as follows:

f(out)= f(in) + SUM_j=1_to_L{Ki_j * fund_j(qpss)},

Where, f(in) represents the (possibly swept) input frequency, and fund_j(qpss) represents the fundamental frequency used in the corresponding QPSS analysis. Thus, when analyzing a down-converting mixer while sweeping the RF input frequency, the most relevant sideband for IF output is  { -1, 0} . When simulating an up-converting mixer while sweeping IF input frequency, the most relevant sideband for RF output is { 1, 0}. You would enter sidevec as a sequence of integer numbers, separated by spaces. The set of vectors {1 1 0} {1 -1 0} {1 1 1} becomes sidevec=[ 1 1 0 1 -1 0 1 1 1]. For clockmaxharm, only the large tone - the first fundamental is affected by this entry; the rest moderate tones are limited by maxharms, specified for a QPSS analysis. Given maxharms=[k1max k2max ... knmax] in QPSS and clockmaxharm=Kmax all (2*Kmax + 1)*(2*k2max+1)*(2*k3max+1)*...*(2*knmax+1) sidebands are generated.

The number of requested sidebands changes substantially the simulation time.

With QPAC, the frequency of the stimulus and of the response are usually different (this is an important area in which QPAC differs from AC). The freqaxis parameter is used to specify whether the results should be output versus the input frequency (in), the output frequency (out), or the absolute value of the output frequency (absout).

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 may specify the values that the sweep parameter should take by using the values parameter. If you specify 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