Home > Community > Blogs > RF Design > using the composite triple beat source to speed up qpss analysis
Login with a Cadence account.
Not a member yet?
Create a permanent login account to make interactions with Cadence more conveniennt.

Register | Membership benefits
Get email delivery of the RF Design blog (individual posts).


* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

Using The Composite Triple Beat Source to Speed up QPSS Analysis

Comments(2)Filed under: RF design, RF Block Simulation, Virtuoso Spectre, Virtuoso Spectre Simulator GXL, Spectre RF, Virtuoso Spectre Simulator XL, Harmonic Balance, spectreRF, RFIC, MMSIM, QPSS Analysis, Composite Triple Beat, CTB

Say you have a design with 4 input frequencies: 3164M (vco), 1449M (tone0), 1456M (tone1), 1442M (tone2). Currently when you do a qpss analysis, you are inserting a total of 4 separate ports in your schematic and running a simulation.   There is a divide by 2 in your circuit, so one of the frequencies of interest is 1582M.  You'd like to take advantage of the multi-tone port and run a qpss analysis using 2  sources, rather than having to set up 4 individual ports.  

What you'll want to use is the CTB source (composite triple beat source) feature. In the port/vsource components, CTB allows one to compose a set of evenly and closely spaced tones by using only two frequencies.  This is useful in qpss analysis and  greatly speeds up simulation time.

Here is an example of what the port or vsource looks like in the netlist:

PORT1 (net1 net2) port r=50 type=sine
+  freq=fcenter freq2=fspacing
+  fundname="fcenter" fundname2=fspacing"
+  freqvec=[fcenter  (fcenter+fspacing)  (fcenter+2*fspacing) 
+ (fcenter+3*fspacing)]  dbmvec=[p0  p1  p2  p3]

V1 (net1 net2) vsource type=sine
+  freq=fcenter freq2=fspacing
+  fundname="fcenter" fundname2="fspacing"
+  freqvec=[fcenter (fcenter+fspacing)  (fcenter+2*fspacing) 
+ (fcenter+3*fspacing)]  amplvec=[v0  v1  v2  v3]

Note that (  ) and [  ] are needed around vector expressions, such as freqvec/amplvec for parsing purposes.

It is easiest to show how to use the CTB source by example.  So, for your particular example....

1. Here's how you set up your CTB port:

See the screen shots below.  The center frequency is put as the first sinusoid.  The spacing frequency is put as the second sinusoid.  Note that the "display multi sinusoid" button is selected.


In particular, note when you select "Display multi sinusoid", the form expands to allow you to select multiple frequencies.  Here, enter the frequency, magnitude, phase, and maximum number of harmonics for each tone:




2. Next, here's how to set up your Choosing Analyses form for Harmonic Balance qpss or hb analyses:



Or, if you are using Harmonic Balance QPSS, your Choosing Analyses form setup will look like this:




 3. If you are using a frequency divider in your circuit, remember to set the large signal frequency division parameter in the Options form:




4. Comparing your original netlist snippet with the CTB netlist snippet:

This is how your ports and qpss statements look in the original netlist:

PORT5 (net058 0) port r=50 type=sine dbm=-20 freq=1456M  fundname="tone1"
PORT7 (net060 0) port r=50 type=sine dbm=-20 freq=1442M  fundname="tone2"
PORT8 (net062 0) port r=50 type=sine dbm=-20 sinephase=90 freq=1.449G fundname="tone0"
V8 (net081 0) vsource type=sine ampl=1 freq=3164M fundname="vco"

qpss  qpss  funds=["vco"  "tone1"  "tone0"  "tone2"]  maxharms=[20
+     3  3  3]  errpreset=conservative  tstab=0  annotate=status
+     flexbalance=yes freqdivide=2

And your new netlist (showing both qpss and hb analyses) will look like this:

PORT0 (net058 0) port r=50 num=1 type=sine freq=1.449G freq2=7M \
        fundname="Fcenter" fundname2="Fspacing" freqvec=[ 1449M+7M \
        1449M-7M 1.449M+7M ] dbmvec=[ -20 -20 -20 ] phasevec=[ 90 0 0 ] \
        maxharms=[ 3 3 3 ]
VCOsource (net081 0) vsource type=sine freq=7M*226*2 ampl=1 fundname="vco"
qpss  qpss  flexbalance=yes  oversample=[1  1  1]  funds=["vco"
+     "Fcenter"  "Fspacing"]  maxharms=[20  3  3]  errpreset=moderate
+     annotate=status  freqdivide=2
hb  hb  oversample=[1  1  1]  funds=["vco"  "Fcenter"  "Fspacing"]
+   maxharms=[20  3  3]  errpreset=moderate  freqdivide=2 
+ annotate=status


Have fun with your simulations!

Tawna Wilsey


By sameer Vora on March 23, 2010
Can you explain if doing (a) hb analysis or, (b) QPSS analysis with hb engine one and the same thing? If so why there are two options?

By Tawna on March 23, 2010
Hi Sameer,
This is described in more detail in support.cadence.com solution 11575904:
What is the difference between hb/hbac/hbnoise and the harmonic balance Q/PSS Q/PAC, Q/Pnoise ?
A brief summary of the solution:
In mmsim 7.1, we introduced new analyses:  hb, hbac, and hbnoise.  We recommend using these analyses in MMSIM 7.1 and onward.  The analyses are essentially the same as the old harmonic balance Q/PSS and small signal analyses, but the hb/hbac/hbnoise GUIs are easier and more intuitive to use.
A good way to get started using the new analyses is to go through the RF Workshops located in the hierarchy at mmsim_hierarchy/tools/spectre/examples/SpectreRF_workshop/rfworkshop_hb.tar.gz

Leave a Comment

E-mail (will not be published)
 I have read and agree to the Terms of use and Community Guidelines.
Community Guidelines
The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.