The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Apr 23rd, 2024, 1:42am
Pages: 1
Send Topic Print
Why HB-QPSS's result is far different from ADS-HB? (Read 21046 times)
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Why HB-QPSS's result is far different from ADS-HB?
Mar 11th, 2008, 1:11am
 
Hi.

I've never used SpectreRF mainly for RF circuit.
http://www.designers-guide.org/Forum/YaBB.pl?num=1125929808
http://www.designers-guide.org/Forum/YaBB.pl?num=1162921214/0#0
http://www.designers-guide.org/Forum/YaBB.pl?num=1170364605/2#2
http://www.designers-guide.org/Forum/YaBB.pl?num=1194765058/1#1

But design Kits I'm using now are provided as encrypted model file of Spectre only  :'(
I couldn't apply ADS(RFDE) for this Design Kits.  :'(
So I tried HB-QPSS-Ana of Cadence SpectreRF(Version 6.2.0.493 -- 19 Sep 2007).  :-?
But results of SpectreRF seemed to be very suspicious especially regarding accuracy.

I compared ADS-HB and Cadence HB-QPSS using familiar netlist.
Netlist is from ne600 which is well known in SpectreRF Training manual.
Cadence HB-QPSS takes very long time for simulation and results of SpectreRF are far different from ADS results.
The followings are extractions of log file from each simulator.
Cadence HB-QPSS is slower than ADS by 5 times.  >:(

[Log from Spectre]
Quote:
Cadence (R) Virtuoso (R) Spectre (R) Circuit Simulator
Version 6.2.0.493 -- 19 Sep 2007
Total time required for sweep analysis `sweepqpss' was 262.54 s (4m  22.5s).
Aggregate audit (4:08:06 PM, Tue Mar 11, 2008):
Time used: CPU = 263 s (4m  23.4s), elapsed = 271 s (4m  31.0s), util. = 97.2%.
Time spent in licensing: elapsed = 100 ms.
Virtual memory used = 17.3 Mbytes.
spectre completes with 0 errors, 15993 warnings, and 15948 notices.

[Log from ADSsim]
Quote:
ADS2006 Update3
hpeesofsim (*) 313.200 Sep 24 2007 (built: 09/24/07 22:21:49)
Copyright Agilent Technologies, 1989-2006.
Resource usage:
 User time                =    46.68 seconds.
 System time              =     0.14 seconds.
 Total CPU time           =    46.82 seconds.
 Stopwatch time           =    49.97 seconds.
 Physical memory used: 0 Bytes.
 Incremental virtual memory (data only) used:  15.5 MBytes.

I attached results of both simulator.
Left one shows RF power v.s. Fundamental and IM3 output at IF node.
Right one shows RF power v.s. derivative of left curve.

Why IM3 results of Cadence HB-QPSS rolls off for low RF input level ?  :(
If I use shooting PSS, I often observed such roll offs at low RF input level.
But this is HB not shooting....
Also why does Cadence HB-QPSS takes very long time although simulation conditions are almost same between ADS and SpectreRF ?

Model file of BJT(rfModels.scs)
Code:
simulator lang=spectre
model NPNlower bjt type=npn is=73.6e-18 bf=121 nf=1 vaf=35 ikf=96e-3 \
   ise=2543e-18 ne=1.9 br=6.76  nr=1  var=3.2 ikr=3.56e-3 \
   isc=2543e-18 nc=1.9 \
   rb=33.3 irb=240e-6 rbm=1.67 re=1.83 rc=12 \
   xtb=0.5 eg=1.2 xti=3 cje=179e-15 vje=0.895 mje=0.41 \
   tf=11e-12 xtf=15 vtf=1.5 itf=120e-3 ptf=10 \
   cjc=120e-15 vjc=0.642 mjc=0.33 xcjc=0.3 \
   tr=5e-9 cjs=138e-15 vjs=0.65 mjs=0.33 fc=0.875  \
   trb1=1.05e-3 trb2=4.4e-6 trc1=1e-3 trc2=3.1e-6 tre1=0 tre2=0 \
   bvbe=3 bvbc=14 bvsub=14 kf=0.55e-10 af=1.8 iss=1e-16

model NPNupper bjt type=npn is=24.5e-18 bf=121 nf=1 vaf=35 ikf=32e-3 \
   ise=847e-18 ne=1.9 br=3.81  nr=1  var=3.2 ikr=2e-3 \
   isc=847e-18 nc=1.9 \
   rb=100 irb=80e-6 rbm=5 re=3.5 rc=25 \
   xtb=0.5 eg=1.2 xti=3 cje=59.6e-15 vje=0.895 mje=0.41 \
   tf=11e-12 xtf=15 vtf=1.5 itf=40e-3 ptf=10 \
   cjc=45.8e-15 vjc=0.642 mjc=0.33 xcjc=0.3 \
   tr=5e-9 cjs=75.5e-15 vjs=0.65 mjs=0.33 fc=0.875  \
   trb1=1.05e-3 trb2=4.4e-6 trc1=1e-3 trc2=3.1e-6 tre1=0 tre2=0 \
   bvbe=3 bvbc=14 bvsub=14 kf=1.32e-10 af=1.8 iss=1e-16
 



Back to top
« Last Edit: Mar 12th, 2008, 1:09am by pancho_hideboo »  

heppoko_qpss.jpg
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Why HB-QPSS's result is far different from ADS-HB?
Reply #1 - Mar 11th, 2008, 1:43am
 
Netlist of Spectre(qpss_hb3.scs)
Quote:
simulator lang=spectre
// Generated for: spectre
// Generated on: Feb 17 16:36:13 2003
// Design library name: training
// Design cell name: ne600
// Design view name: schematic
global 0

include "rfModels.scs"

parameters flo=1G
parameters frf1=900M

//parameters frf2=frf1+25M
parameters frf2=frf1+200k

parameters prf=-10
parameters vlo=0.316227766

// Library name: training
// Cell name: ne600
// View name: schematic
lo (Plo 0) port r=50 num=2 type=sine freq=flo ampl=vlo fundname="FLO"
rf (Prf 0) port r=50 num=1 type=sine m=1
+ freq=frf1 dbm=prf fundname="FRF1"
+ freq2=frf2 dbm2=prf fundname2="FRF2"
rif (Pif 0) port r=1K num=3 type=dc
crf (net48 Prf) capacitor c=10n
C1 (net51 0) capacitor c=1 * 0.6p
C2 (net49 0) capacitor c=1 * 0.6p
cif (net65 Pif) capacitor c=10n
clo (net54 Plo) capacitor c=10n
L1 (net51 net48) inductor l=3n
ldc (net42 net65) inductor l=10u
L0 (net49 net54) inductor l=3n
vcc (net42 0) vsource dc=5 type=dc
vdc_lo (net46 0) vsource dc=3.37 type=dc
vdc_rf (net44 0) vsource dc=2.3 type=dc
rl1 (net42 net65) resistor r=1K
r46 (net46 net49) resistor r=60
r45 (net63 net51) resistor r=30
r44 (net63 0) resistor r=450
q56 (net65 net46 net62 0) NPNupper area=1
q57 (net42 net49 net62 0) NPNupper area=1
q58a (net62 net44 net63 0) NPNlower area=1
q58b (net62 net44 net63 0) NPNlower area=1

simulatorOptions options reltol=1e-4 vabstol=3e-8 iabstol=1e-13
+ temp=27 tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1
+ maxnotes=5 maxwarns=5 digits=5 cols=80 pivrel=1e-3 ckptclock=1800
+ sensfile="../psf/sens.output"

sweepqpss  sweep  param=prf
+ start=-40  stop=0  step=5
+ values=[-17.5  -12.5  -7.5  -2.5]
{
qpss  qpss
+  harmonicbalance=yes
+  funds=["FLO"  "FRF1"  "FRF2"]  maxharms=[5  5  5]  oversample=[1  1  1]
+  selectharm=diamond  maximorder=5
+  errpreset=moderate
//+  method=gear2only
+  annotate=status
//+  restart=no
+  tstab=0n
+  maxperiods=200
}

saveOptions options save=selected
save Prf Plo Pif

Netlist of ADSsim(qpss_hb3.ads)
Quote:
simulator lang=ads
Options ResourceUsage=yes UseNutmegFormat=no TopDesignName="qpss.ds"

simulator lang=spectre
// Generated for: spectre
// Generated on: Feb 17 16:36:13 2003
// Design library name: training
// Design cell name: ne600
// Design view name: schematic
global 0

include "rfModels.scs"

parameters flo=1G
parameters frf1=900M

//parameters frf2=frf1+25M
parameters frf2=frf1+200k

parameters prf=-10
parameters vlo=0.316227766

// Library name: training
// Cell name: ne600
// View name: schematic
lo (Plo 0) port r=50 num=2 type=sine freq=flo ampl=vlo fundname="FLO"
rf (Prf 0) port r=50 num=1 type=sine m=1
+ freq=frf1 dbm=prf fundname="FRF1"
+ freq2=frf2 dbm2=prf fundname2="FRF2"
rif (Pif 0) port r=1K num=3 type=dc
crf (net48 Prf) capacitor c=10n
C1 (net51 0) capacitor c=1 * 0.6p
C2 (net49 0) capacitor c=1 * 0.6p
cif (net65 Pif) capacitor c=10n
clo (net54 Plo) capacitor c=10n
L1 (net51 net48) inductor l=3n
ldc (net42 net65) inductor l=10u
L0 (net49 net54) inductor l=3n
vcc (net42 0) vsource dc=5 type=dc
vdc_lo (net46 0) vsource dc=3.37 type=dc
vdc_rf (net44 0) vsource dc=2.3 type=dc
rl1 (net42 net65) resistor r=1K
r46 (net46 net49) resistor r=60
r45 (net63 net51) resistor r=30
r44 (net63 0) resistor r=450
q56 (net65 net46 net62 0) NPNupper area=1
q57 (net42 net49 net62 0) NPNupper area=1
q58a (net62 net44 net63 0) NPNlower area=1
q58b (net62 net44 net63 0) NPNlower area=1

simulator lang=ads
Options:Options1  Temp=27 Tnom=27 TopologyCheck=yes ForceS_Params=yes \
V_RelTol=1e-4 V_AbsTol=3e-8 V I_RelTol=1e-4 I_AbsTol=1e-13 A \
GiveAllWarnings=yes MaxWarnings=10 ForceM_Params=yes \
InitialGuessAnnotation=0 TopologyCheckMessages=no  

HB:HB1 \
Freq[1]=flo Freq[2]=frf1 Freq[3]=frf2 Order[1]=5 Order[2]=5 Order[3]=5 \
Oversample[1]=1 Oversample[2]=1 Oversample[3]=1 \
MaxOrder=5 \
StatusLevel=2 OutputPlan="HB1_Output" \
SweepVar="prf" SweepPlan="SwpPlan1"

Tran:HB1_tran HB_Sol=1 SteadyState=1 StatusLevel=3 \
Freq[1]=flo Order[1]=5 \
OutputPlan="HB1_Output"

Component:tahb_HB1 Module="ATAHB" Type="ModelExtractor" \
Tran_Analysis="HB1_tran" HB_Analysis="HB1"

SweepPlan:SwpPlan1 \
SweepPlan[1]="SwpPlan1_seg1" \
SweepPlan[2]="SwpPlan1_seg2" \
SweepPlan[3]="SwpPlan1_seg3" \
SweepPlan[4]="SwpPlan1_seg4" \
SweepPlan[5]="SwpPlan1_seg5"

SweepPlan:SwpPlan1_seg1 Pt=-2.5
SweepPlan:SwpPlan1_seg2 Pt=-7.5
SweepPlan:SwpPlan1_seg3 Pt=-12.5
SweepPlan:SwpPlan1_seg4 Pt=-17.5
SweepPlan:SwpPlan1_seg5 Start=-40 Stop=0 Step=5

OutputPlan:HB1_Output \
     Type="Output" \
     UseNodeNestLevel=no \
     NodeNestLevel=2 \
     NodeName[1]="Prf" \
     NodeName[2]="Plo" \
     NodeName[3]="Pif" \
     UseEquationNestLevel=no \
     EquationNestLevel=2 \
     UseSavedEquationNestLevel=no \
     SavedEquationNestLevel=2
Back to top
 
« Last Edit: Mar 11th, 2008, 9:44pm by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: Why HB-QPSS's result is far different from ADS
Reply #2 - Mar 11th, 2008, 3:04am
 
I tried HB-QPSS without specifying "selectharm" and "maximorder"
and with "restart=no" like following.

IM3 curve of SpectreRF come not to show roll off at low RF input.
But in this case, IM3 curve is upshifted by 8dB compared to ADS's result.
And still simulation speed is slow. Memory consumption is huge.

qpss  qpss
+  harmonicbalance=yes
+  funds=["FLO"  "FRF1"  "FRF2"]  maxharms=[5  5  5]  oversample=[1  1  1]
//+  selectharm=diamond  maximorder=5
+  errpreset=moderate
//+  method=gear2only
+  annotate=status
+  restart=no
+  tstab=0n
+  maxperiods=200

[Log]
Total time required for sweep analysis `sweepqpss' was 196.75 s (3m  16.8s).
Aggregate audit (6:59:51 PM, Tue Mar 11, 2008):
Time used: CPU = 198 s (3m  17.6s), elapsed = 200 s (3m  20.0s), util. = 98.8%.
Time spent in licensing: elapsed = 90 ms.
Virtual memory used = 59.1 Mbytes.
spectre completes with 0 errors, 31 warnings, and 31 notices.
Back to top
 

hyottoko_qpss.jpg
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: Why HB-QPSS's result is far different from ADS
Reply #3 - Mar 11th, 2008, 4:22am
 
I tried PSS(Shooting)/PAC.
But results of IM3 curve doesn't match witn both QPSS(HB) and ADS(ADS).
I think PSS(Shooting)/PAC result is most reliable.
How do you think ?

Netlist of Spectre(pss_pac.scs)
Quote:
simulator lang=spectre
// Generated for: spectre
// Generated on: Feb 17 16:36:13 2003
// Design library name: training
// Design cell name: ne600
// Design view name: schematic
global 0

include "rfModels.scs"

parameters flo=1G
parameters frf1=900M

//parameters frf2=frf1+25M
parameters frf2=frf1+200k

parameters prf=-10
parameters vlo=0.316227766

// Library name: training
// Cell name: ne600
// View name: schematic
lo (Plo 0) port r=50 num=2 type=sine freq=flo ampl=vlo fundname="FLO"
rf (Prf 0) port r=50 num=1 type=sine m=1
+ freq=frf1 dbm=prf fundname="FRF1"
+ pacdbm=prf
rif (Pif 0) port r=1K num=3 type=dc
crf (net48 Prf) capacitor c=10n
C1 (net51 0) capacitor c=1 * 0.6p
C2 (net49 0) capacitor c=1 * 0.6p
cif (net65 Pif) capacitor c=10n
clo (net54 Plo) capacitor c=10n
L1 (net51 net48) inductor l=3n
ldc (net42 net65) inductor l=10u
L0 (net49 net54) inductor l=3n
vcc (net42 0) vsource dc=5 type=dc
vdc_lo (net46 0) vsource dc=3.37 type=dc
vdc_rf (net44 0) vsource dc=2.3 type=dc
rl1 (net42 net65) resistor r=1K
r46 (net46 net49) resistor r=60
r45 (net63 net51) resistor r=30
r44 (net63 0) resistor r=450
q56 (net65 net46 net62 0) NPNupper area=1
q57 (net42 net49 net62 0) NPNupper area=1
q58a (net62 net44 net63 0) NPNlower area=1
q58b (net62 net44 net63 0) NPNlower area=1

simulatorOptions options reltol=1e-4 vabstol=3e-8 iabstol=1e-13
+ temp=27 tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1
+ maxnotes=5 maxwarns=5 digits=5 cols=80 pivrel=1e-3 ckptclock=1800
+ sensfile="../psf/sens.output"

sweeppss  sweep  param=prf
+ start=-40  stop=0  step=5
+ values=[-17.5  -12.5  -7.5  -2.5]
{
pss  pss  fund=100M  harmsvec=[1]  errpreset=moderate
+    method=gear2only  maxacfreq=5G  annotate=status
+    outputtype=freq
pac  pac  values=[frf2]  sidebands=[-10  -8]
+    annotate=status  freqaxis=absout
}

saveOptions options save=selected
save Prf Plo Pif
Back to top
« Last Edit: Mar 12th, 2008, 1:16am by pancho_hideboo »  

aho_pss_pac.jpg
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: Why HB-QPSS's result is far different from ADS
Reply #4 - Mar 12th, 2008, 4:33am
 
Sorry, I mistook in specifying a mixing index for 3 tone HB-QPSS in figure, "hyottoko_qpss.jpg" and "aho_pss_pac.jpg".
In these figure, I wrongly chose (1 2 -1) as mixing index. I should choose (1 1 -2) or (1 -2 1).
But there is no mistake in first figure, "heppoko_qpss.jpg" which shows roll off at low RF input level.

I attached correct figure.
In this figure, I added HB 2tone with one tone small signal analysis results of ADS which is similar to QPSS(2tone)/QPAC.

In Agilent ADS, "selectharm" is restricted to "diamond" although other options are provided as "selectharm"
in new Agilent simulator, GoldenGate.

But in Spectre, I must not select "diamond".
If I don't specify "selectharm" and "maximorder" and do set "restart=no" in Cadence HB-QPSS,
it seems that I can get relative reasonable results from 3 tone HB-QPSS of Cadence Spectre.

But I think simulation speed is very slow and memory consumption is huge compared to ADS.

[Netlist of HB 2tone with one small signal Analysis in ADS]
qpss_hb2ss.ads
Quote:
simulator lang=ads
Options ResourceUsage=yes UseNutmegFormat=no TopDesignName="qpss_hb2ss.ds"

simulator lang=spectre
// Generated for: spectre
// Generated on: Feb 17 16:36:13 2003
// Design library name: training
// Design cell name: ne600
// Design view name: schematic
global 0

include "rfModels.scs"

parameters flo=1G
parameters frf1=900M

//parameters frf2=frf1+25M
parameters frf2=frf1+200k

parameters prf=-10
parameters vlo=0.316227766

// Library name: training
// Cell name: ne600
// View name: schematic
lo (Plo 0) port r=50 num=2 type=sine freq=flo ampl=vlo fundname="FLO"
rf (Prf 0) port r=50 num=1 type=sine m=1
+ freq=frf1 dbm=prf fundname="FRF1"
+ pacdbm=prf
rif (Pif 0) port r=1K num=3 type=dc
crf (net48 Prf) capacitor c=10n
C1 (net51 0) capacitor c=1 * 0.6p
C2 (net49 0) capacitor c=1 * 0.6p
cif (net65 Pif) capacitor c=10n
clo (net54 Plo) capacitor c=10n
L1 (net51 net48) inductor l=3n
ldc (net42 net65) inductor l=10u
L0 (net49 net54) inductor l=3n
vcc (net42 0) vsource dc=5 type=dc
vdc_lo (net46 0) vsource dc=3.37 type=dc
vdc_rf (net44 0) vsource dc=2.3 type=dc
rl1 (net42 net65) resistor r=1K
r46 (net46 net49) resistor r=60
r45 (net63 net51) resistor r=30
r44 (net63 0) resistor r=450
q56 (net65 net46 net62 0) NPNupper area=1
q57 (net42 net49 net62 0) NPNupper area=1
q58a (net62 net44 net63 0) NPNlower area=1
q58b (net62 net44 net63 0) NPNlower area=1

simulator lang=ads
Options:Options1  Temp=27 Tnom=27 TopologyCheck=yes ForceS_Params=yes \
V_RelTol=1e-4 V_AbsTol=3e-8 V I_RelTol=1e-4 I_AbsTol=1e-13 A \
GiveAllWarnings=yes MaxWarnings=10 ForceM_Params=yes \
InitialGuessAnnotation=0 TopologyCheckMessages=no  

HB:HB1 \
Freq[1]=flo Freq[2]=frf1 Order[1]=5 Order[2]=5 \
Oversample[1]=1 Oversample[2]=1 \
MaxOrder=5 UseKrylov=0 \
OutputBudgetIV=no SS_Freq=frf2-frf1 \
StatusLevel=2 OutputPlan="HB1_Output" \
SweepVar="prf" SweepPlan="SwpPlan1"

Tran:HB1_tran HB_Sol=1 SteadyState=1 StatusLevel=3 \
Freq[1]=flo Order[1]=5 \
OutputPlan="HB1_Output"

Component:tahb_HB1 Module="ATAHB" Type="ModelExtractor" \
Tran_Analysis="HB1_tran" HB_Analysis="HB1"

SweepPlan:SwpPlan1 \
SweepPlan[1]="SwpPlan1_seg1" \
SweepPlan[2]="SwpPlan1_seg2" \
SweepPlan[3]="SwpPlan1_seg3" \
SweepPlan[4]="SwpPlan1_seg4" \
SweepPlan[5]="SwpPlan1_seg5"

SweepPlan:SwpPlan1_seg1 Pt=-2.5
SweepPlan:SwpPlan1_seg2 Pt=-7.5
SweepPlan:SwpPlan1_seg3 Pt=-12.5
SweepPlan:SwpPlan1_seg4 Pt=-17.5
SweepPlan:SwpPlan1_seg5 Start=-40 Stop=0 Step=5

OutputPlan:HB1_Output \
     Type="Output" \
     UseNodeNestLevel=no \
     NodeNestLevel=2 \
     NodeName[1]="Prf" \
     NodeName[2]="Plo" \
     NodeName[3]="Pif" \
     UseEquationNestLevel=no \
     EquationNestLevel=2 \
     UseSavedEquationNestLevel=no \
     SavedEquationNestLevel=2

Back to top
« Last Edit: Mar 13th, 2008, 3:14am by pancho_hideboo »  

boke_qpss.jpg
View Profile WWW Top+Secret Top+Secret   IP Logged
yzhu
New Member
*
Offline



Posts: 1

Re: Why HB-QPSS's result is far different from ADS
Reply #5 - Mar 12th, 2008, 5:12pm
 
Hi,

1. HB has much lower numeric noise level, so it should not give roll off at low Prf.  That "roll off" may be caused by a bug in SpectreRF's "diamondcut".  So SpectreRF has to use the regular "boxcut", it could be a little slower.

2. Even I use boxcut, I can finish it much faster than yours and use only 17.6MB.

Aggregate audit (4:45:54 PM, Wed Mar 12, 2008):
Time used: CPU = 141 s (2m  21.1s), elapsed = 142 s (2m  22.0s), util. =
       99.3%.
Time spent in licensing: elapsed = 10 ms.
Virtual memory used = 17.6 Mbytes.

3. Don't compare shooing PSS+PAC with ADS's HB.  Shooting is only for strongly nonlinear circuits like SCF. You should try SpectreRF's 2Tone QPSS+QPAC, and compare it with ADS.  I ran Spectre and finish in 13 seconds and guess it is much faster than ADS.  My setting is:

sweeppss  sweep  param=prf
+ start=-40  stop=0  step=5
+ values=[-17.5  -12.5  -7.5  -2.5]
{
qpss  qpss
+  harmonicbalance=yes
+  funds=["FLO"  "FRF1"]  maxharms=[5  5]  oversample=[1  1]
//+  selectharm=diamond  maximorder=5
+  errpreset=moderate
//+  method=gear2only
+  annotate=status
+  restart=no
+  tstab=0n
+  maxperiods=200
qpac  qpac  values=[frf2] sidevec=[-1 0 1-2] annotate=status  freqaxis=absout
}

So the conlusion is SpectreRF should verify their "diamondcut". Other than that, SpectreRF is better than ADS.

YZ
Back to top
 
 
View Profile   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: Why HB-QPSS's result is far different from ADS
Reply #6 - Mar 12th, 2008, 11:22pm
 
Quote:
1. HB has much lower numeric noise level, so it should not give roll off at low Prf.  That "roll off" may be caused by a bug in SpectreRF's "diamondcut".  So SpectreRF has to use the regular "boxcut", it could be a little slower.  

Even in HB-QPSS of SpecreRF, "diamond" is default setting of selectharm when maximorder is set.
So "selectharm=diamond" has to be reliable.

Quote:
3. Don't compare shooing PSS+PAC with ADS's HB.  Shooting is only for strongly nonlinear circuits like SCF.

The reason why I use PSS(Shooting)/PAC as reference is that there is no issue about setting order, mutual order and selectharm in PSS(Shooting)/PAC.
So I think results of PSS(Shooting)/PAC is most reliable except for small and large RF input level.
I don't compare speed and memory consumption of PSS(Shooting)/PAC with HB-Analysis.

Quote:
2. Even I use boxcut, I can finish it much faster than yours and use only 17.6MB.

Maybe your computer is superior than mine. But still speed is slow by 3 times than my 3 tone HB using ADS.
Again I list results of benchmark.
Quote:
(1) 3 tone HB-QPSS with  selectharm=box  maximorder=5 in SpectreRF
sweepqpss  sweep  param=prf
+ start=-40  stop=0  step=5
+ values=[-17.5  -12.5  -7.5  -2.5]  {
qpss  qpss  harmonicbalance=yes
+  funds=["FLO"  "FRF1"  "FRF2"]  maxharms=[5  5  5]  oversample=[1  1  1]
//+  selectharm=diamond  maximorder=5
+  selectharm=box  maximorder=5
+  errpreset=moderate
//+  method=gear2only
+  annotate=status  restart=no  tstab=0n  maxperiods=200
}

Total time required for sweep analysis `sweepqpss' was 196.72 s (3m  16.7s).
Aggregate audit (12:53:34 PM, Thur Mar 13, 2008):
Time used: CPU = 198 s (3m  17.5s), elapsed = 201 s (3m  21.0s), util. = 98.3%.
Time spent in licensing: elapsed = 90 ms.
Virtual memory used = 59.1 Mbytes.
spectre completes with 0 errors, 31 warnings, and 31 notices.

Quote:
(2) 3 tone HB-QPSS without setting selectharm and maximorder in SpectreRF
sweepqpss  sweep  param=prf
+ start=-40  stop=0  step=5
+ values=[-17.5  -12.5  -7.5  -2.5]  {
qpss  qpss  harmonicbalance=yes
+  funds=["FLO"  "FRF1"  "FRF2"]  maxharms=[5  5  5]  oversample=[1  1  1]
//+  selectharm=diamond  maximorder=5
//+  selectharm=box  maximorder=5
+  errpreset=moderate
//+  method=gear2only
+  annotate=status  restart=no  tstab=0n  maxperiods=200
}

Total time required for sweep analysis `sweepqpss' was 198.55 s (3m  18.6s).
Aggregate audit (12:59:08 PM, Thur Mar 13, 2008):
Time used: CPU = 199 s (3m  19.3s), elapsed = 201 s (3m  21.0s), util. = 99.1%.
Time spent in licensing: elapsed = 50 ms.
Virtual memory used = 59.1 Mbytes.
spectre completes with 0 errors, 31 warnings, and 31 notices.

Quote:
(3) 2 tone HB-QPSS/QPAC without setting selectharm and maximorder in SpectreRF
sweepqpss  sweep  param=prf
+ start=-40  stop=0  step=5
+ values=[-17.5  -12.5  -7.5  -2.5]  {
qpss  qpss  harmonicbalance=yes
+  funds=["FLO"  "FRF1"]  maxharms=[5  5]  oversample=[1  1]
//+  selectharm=diamond  maximorder=5
//+  selectharm=box  maximorder=5
+  errpreset=moderate
//+  method=gear2only
+  annotate=status  restart=no  tstab=0n  maxperiods=200
qpac  qpac
+  values=[frf2] sidevec=[-1 0  1 -2]  annotate=status  freqaxis=absout
}

Total time required for sweep analysis `sweepqpss' was 22.36 s.
Aggregate audit (2:44:32 PM, Thur Mar 13, 2008):
Time used: CPU = 23.1 s, elapsed = 25 s, util. = 92.4%.
Time spent in licensing: elapsed = 60 ms.
Virtual memory used = 9.24 Mbytes.
spectre completes with 0 errors, 15 warnings, and 15 notices.

Back to top
 
« Last Edit: Mar 13th, 2008, 9:08pm by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: Why HB-QPSS's result is far different from ADS
Reply #7 - Mar 12th, 2008, 11:30pm
 
Quote:
(4) 3 tone HB in Agilent ADS
HB:HB1 \
Freq[1]=flo Freq[2]=frf1 Freq[3]=frf2 Order[1]=5 Order[2]=5 Order[3]=5 \
Oversample[1]=1 Oversample[2]=1 Oversample[3]=1 \
MaxOrder=5 \
StatusLevel=2 OutputPlan="HB1_Output" \
SweepVar="prf" SweepPlan="SwpPlan1"

Resource usage:
 User time                =    43.83 seconds.
 System time              =     0.08 seconds.
 Total CPU time           =    43.91 seconds.
 Stopwatch time           =    44.93 seconds.
 Physical memory used: 0 Bytes.
 Incremental virtual memory (data only) used:  15.5 MBytes.


Quote:
(5) 2 tone HB with one small signal Analysis in ADS (Solver=Krylov)
HB:HB1 \
Freq[1]=flo Freq[2]=frf1 Order[1]=5 Order[2]=5 \
Oversample[1]=1 Oversample[2]=1 \
MaxOrder=5 \
SS_Freq=frf2-frf1 \
StatusLevel=2 OutputPlan="HB1_Output" \
SweepVar="prf" SweepPlan="SwpPlan1"

Resource usage:
 User time                =     6.68 seconds.
 System time              =     0.07 seconds.
 Total CPU time           =     6.75 seconds.
 Stopwatch time           =     7.76 seconds.
 Physical memory used: 0 Bytes.
 Incremental virtual memory (data only) used:  11.3 MBytes.


Quote:
(6) 2 tone HB with one small signal Analysis in ADS (Solver=Direct)
HB:HB1 \
Freq[1]=flo Freq[2]=frf1 Order[1]=5 Order[2]=5 \
Oversample[1]=1 Oversample[2]=1 \
MaxOrder=5 UseKrylov=0 \
SS_Freq=frf2-frf1 \
StatusLevel=2 OutputPlan="HB1_Output" \
SweepVar="prf" SweepPlan="SwpPlan1"

Resource usage:
 User time                =    12.00 seconds.
 System time              =     0.09 seconds.
 Total CPU time           =    12.09 seconds.
 Stopwatch time           =    12.45 seconds.
 Physical memory used: 0 Bytes.
 Incremental virtual memory (data only) used:  18 MBytes.



Quote:
You should try SpectreRF's 2Tone QPSS+QPAC, and compare it with ADS.
I ran Spectre and finish in 13 seconds and guess it is much faster than ADS.

Compare (1) and (2) with (4), these are 3 tone HB Analysis.
And compare (3) with (5) and (6), these are 2 tone HB with one small signal Analysis.
HB-QPSS is apparently slow compared to ADS in all cases.
In 3 Tone HB-QPSS, memory consumption is huge and simulation speed is veryl slow.
In 2 Tone HB-QPSS/QPAC, memory consumption is almost same as ADS but simulation speed is still slow.

Quote:
So the conlusion is SpectreRF should verify their "diamondcut". Other than that, SpectreRF is better than ADS.

I've heard such claim regarding not only speed but also accuracy from Cadence many many times since shooting PSS/QPSS days.

The followings are my conclusion.
In 3 Tone HB-QPSS, memory consumption is huge and simulation speed is very slow.
In 2 Tone HB-QPSS/QPAC, memory consumption is almost same as ADS but simulation speed is still slow.

Now my first problem that only encrypted Spectre models are provided from foundary is resolved.
Foundary provided me model file for ADS(RFDE).
And I'm now moving to GoldenGate from ADS(RFDE).
So I don't use HB-QPSS of SpectreRF. Tongue

I've evaluated HB analysis in SpectreRF using 6.0USR1, 6.0USR2, 6.1, 6.2 versions.
In addition to supporting autonomous QPSS, I expect any remarkable improvement of HB analysis in SpectreRF at 6.3 or later versions.

Cool
Back to top
 
« Last Edit: Mar 13th, 2008, 9:52pm by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: Why HB-QPSS's result is far different from ADS
Reply #8 - Mar 18th, 2008, 4:49am
 
Recently I've updated ADS from ADS2006Update3 to ADS2008.
The followings are benchmark results of ADS2008.
hpeesofsim (*) 2008.500 Jan 22 2008 (built: 01/22/08 22:43:36)
Copyright Agilent Technologies, 1989-2008.

ADS is little improved from ADS2006Update3 and very very fast compared to HB-QPSS of SpectreRF.
Now I have GoldenGate, I expect more superior performance of GoldenGate.

Quote:
(4) 3 tone HB in Agilent ADS
HB:HB1 \
Freq[1]=flo Freq[2]=frf1 Freq[3]=frf2 Order[1]=5 Order[2]=5 Order[3]=5 \
Oversample[1]=1 Oversample[2]=1 Oversample[3]=1 \
MaxOrder=5 \
StatusLevel=2 OutputPlan="HB1_Output" \
SweepVar="prf" SweepPlan="SwpPlan1"

Resource usage:
 User time                =    39.36 seconds.
 System time              =     0.09 seconds.
 Total CPU time           =    39.45 seconds.
 Stopwatch time           =    39.97 seconds.
 Physical memory used: 0 Bytes.
 Incremental virtual memory (data only) used:  14.7 MBytes.


Quote:
(5) 2 tone HB with one small signal Analysis in ADS (Solver=Krylov)
HB:HB1 \
Freq[1]=flo Freq[2]=frf1 Order[1]=5 Order[2]=5 \
Oversample[1]=1 Oversample[2]=1 \
MaxOrder=5 \
SS_Freq=frf2-frf1 \
StatusLevel=2 OutputPlan="HB1_Output" \
SweepVar="prf" SweepPlan="SwpPlan1"

Resource usage:
 User time                =     5.95 seconds.
 System time              =     0.05 seconds.
 Total CPU time           =     6.00 seconds.
 Stopwatch time           =     6.49 seconds.
 Physical memory used: 0 Bytes.
 Incremental virtual memory (data only) used:  10.4 MBytes.


Quote:
(6) 2 tone HB with one small signal Analysis in ADS (Solver=Direct)
HB:HB1 \
Freq[1]=flo Freq[2]=frf1 Order[1]=5 Order[2]=5 \
Oversample[1]=1 Oversample[2]=1 \
MaxOrder=5 UseKrylov=0 \
SS_Freq=frf2-frf1 \
StatusLevel=2 OutputPlan="HB1_Output" \
SweepVar="prf" SweepPlan="SwpPlan1"

Resource usage:
 User time                =    10.13 seconds.
 System time              =     0.03 seconds.
 Total CPU time           =    10.16 seconds.
 Stopwatch time           =    10.65 seconds.
 Physical memory used: 0 Bytes.
 Incremental virtual memory (data only) used:  17.2 MBytes.

Back to top
 
« Last Edit: Mar 18th, 2008, 6:52am by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.