The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> RF Simulators >> which is accurate for IM3 simulation? ADS or Spectre?
https://designers-guide.org/forum/YaBB.pl?num=1262828862

Message started by waseda-rfic on Jan 6th, 2010, 5:47pm

Title: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 6th, 2010, 5:47pm

I did IM3 simulation using HB of ADS ,and I also used HB and PSS of  Spectre. there is a big difference in simulation results. for a fix input power, the simulation result of Spectre HB is -25 dBc, the simulation result of Spectre pss is -32dBc and ADS  HB is -40 dBc. so which is believable? and for ACPR simulation which is best?        Thanks!!!!!

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by sheldon on Jan 7th, 2010, 12:04am

Waseda,

 It sounds like a setup problem, why don't you contact your local
support team?

                                                               Best Regards,

                                                                  Sheldon

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 7th, 2010, 1:08am


waseda-rfic wrote on Jan 6th, 2010, 5:47pm:
the simulation result of Spectre HB is -25 dBc,
the simulation result of Spectre pss is -32dBc
and ADS  HB is -40 dBc.
Show me your netlist regarding analysis statement, signal source and accuracy setting for both ADS and Spectre.

HB PSS analysis of Cadence Spectre can give same results as Agilent ADS or Agilent GoldenGate if your settings are proper, although HB QPSS analysis of Cadence Spectre very often can not give same results as Agilent ADS or Agilent GoldenGate.

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by Andrew Beckett on Jan 7th, 2010, 3:11am


Quote:
HB QPSS analysis of Cadence Spectre very often can not give same results as Agilent ADS or Agilent GoldenGate.

That's not true. HB QPSS in spectre is pretty robust these days. Like all RF simulations, it must be properly set up though.

You may be basing your view on old information. Also, in the past, HB QPSS required more tuning by the user than it does these days, so maybe you also had incorrect settings when you used it in some older version.

Andrew.

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 12:57am

thanks everyone!  here I send the set of PAC+PSS ,PAC+HB and the simulation results in the picture

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 12:58am

continue

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 12:58am

continue

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 12:58am

continue

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 12:59am

continue

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 12:59am

continue

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 12:59am

continue

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 8th, 2010, 1:52am

Maybe you invoked two-large-tones-HB in Agilent ADS. My guess is correct ?

You can do one-large-tone-HB with one small signal Analysis also in ADS which is conceputually same as PSS/PAC of Cadence Spectre.
http://www.designers-guide.org/Forum/YaBB.pl?num=1191464825/1#1
http://www.designers-guide.org/Forum/YaBB.pl?num=1241681618/1#1

Of course, IM3 has to be same even if you invoke two-large-tones-HB or one-large-tone-HB with one small signal Analysis.

Anyway show me your netlist regarding analysis statement, signal source and accuracy setting for both ADS and Spectre.
About netlist of them see http://www.designers-guide.org/Forum/YaBB.pl?num=1205223090

In your case, try to increase HB_Order or HB_Oversample in HB Analysis.
Here HB_Oversample means "Nyquist rate oversample factor".
http://www.designers-guide.org/Forum/YaBB.pl?num=1237890768/10#10

The above example is for Agilent ADSsim.

In Agilent GoldenGate, HB_Sample_Number is provided like following which is different from ADSsim.
HB_Sample_Number=(2*HB_Oversample+1)*HB_Order

HB-PSS/PAC of Cadence Spectre can give same results as 1tone-HB-SS(SmallSignal) of Agilent ADSsim,
if HB_Order and HB_Oversample are same for Cadence Spectre and Agilent ADSsim.

About setting of Shooting PSS and slave small signal analysis of Cadence Spectre, see the following.
http://www.designers-guide.org/Forum/YaBB.pl?num=1208334972

Also see http://www.designers-guide.org/Forum/YaBB.pl?num=1190971685/7#7

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by Andrew Beckett on Jan 8th, 2010, 3:19am

I agree with Pancho Hideboo here - seeing the netlist (the sources and analysis statements) would really help. Whilst you showed lots of forms, you didn't show the small-signal settings on the RF source, which I assume were set - seeing the netlist would allow us to see that.

Out of interest, what kind of circuit is it that you're analysing? (not that it necessarily matters)

Regards,

Andrew.

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 6:22pm

ADS netlist
 
Options ResourceUsage=yes UseNutmegFormat=no TopDesignName="C:\users\default\cmospahi11\networks\highoutdiff33"
define rpolyrf_070608 ( PLUS  MINUS  SUB )
parameters    Ns=1  Np=1  wr=1  r=10  tc1=0  tc2=0  R1=0  R1multi=0  rpolyx=1

Lsu=((((r*Np*(wr-0.03)/315)-0.55)/Ns))
R:Rp2  _net12 SUB R=(1/(Lsu*wr*4.81206e-5))/(Np*Ns)*Np Tnom=27 Noise=yes
R:Rp1  _net11 SUB R=(1/(Lsu*wr*4.81206e-5))/(Np*Ns)*Np Tnom=27 Noise=yes
C:Cp1  PLUS _net11 C=(Lsu*wr*0.10755e-15*(Np*Ns))/Np
C:Cp2  MINUS _net12 C=(Lsu*wr*0.10755e-15*(Np*Ns))/Np
R:rpolyrf  PLUS MINUS R=rpolyx*r*Np Tnom=27 TC1=tc1 TC2=tc2 Noise=yes
end rpolyrf_070608
define cmimrf_070608_mim_orig ( PLUS  MINUS  SUB )
parameters    c=0  C1=0  C1multi=1  aratio=1.0  cmimx=1.0
R:Rsub  _net33 SUB R=11202*ws^(-1.1094) Tnom=27 Noise=yes
C:Cox  MINUS _net33 C=(0.0048*wx*wy+0.1769*ws)*1e-15
L:Ls  _net11 _net84 L=(0.9591*ws+0.194)*1e-12 Noise=yes  
R:Rp  PLUS _net3 R=-0.0429*ws+6.852 Tnom=27 Noise=yes

wx=(sqrt(16.0*1.108*aratio*(c*cmimx*1e15/C1multi)+(1+aratio)*(1+aratio)*0.4548*0.4548)-(1+aratio)*0.4548)/(4*1.108*aratio)
wy=aratio*wx
ws=0.5*(wx+wy)
C:cmimrf  _net84 MINUS C=c*cmimx/C1multi
R:Rs  PLUS _net11 R=14.394*(ws-5.3)^(-0.414) Tnom=27 Noise=yes
L:Lp  _net3 _net11 L=(531.09*(ws-4)^(-0.9279))*1e-12 Noise=yes  
end cmimrf_070608_mim_orig
define nmosvsrf_070608 ( d  g  s  b )
parameters  mgate=2  W=5.2u  L=0.11u  lneck=0.4u  LD2=0.58u  KC=0.01603  KRo=62.4  KR=56.21622  KL=0.2519  KCGB=0.02  nddg=0  nsdg=2  Mmulti=1
model c3_fast_n_model MOSFET NMOS=1 PMOS=0 Idsmod=8 Version=3.22 Mobmod=1 Capmod=3 Noimod=1 Paramchk=1 Binunit=1 Rsh=80 Js=1E-015 Lint=1.253e-008+_dlintn_fv Ll=-1.911E-015 Lln=1 Lw=0 Lwn=0 Lwl=0 Wint=9.391e-008+_dwintn_fv Wl=-1.567E-015 Wln=1.097 Ww=-1.714E-014 Wwn=1 Wwl=4.38083E-022 Tnom=27 Tox=2.9E-009+_dtox_fv Cj=0.00124 Mj=0.314 Cjsw=6.449E-011 Mjsw=3.997E-016 Pb=0.6575 Pbsw=0.9632 Cjswg=6.449E-011 Mjswg=3.997E-016 Pbswg=0.9632 Cgso=1.913E-010 Cgdo=1.913E-010 Cgbo=1E-012 Xpart=0 Dwg=-5.012E-009 Ldwg=0 Wdwg=0 Pdwg=0 Dwb=6.31E-010 Ldwb=0 Wdwb=0 Pdwb=0 Nch=2.57E+017 Lnch=0 Wnch=0 Pnch=0 Nsub=5E+014 Xj=2E-007 Lxj=0 Wxj=0 Pxj=0 U0=347.4 Lu0=0 Wu0=0 Pu0=0 Vth0=0.1449+_dvth0n_fv Lvth0=_dlvthn_fv Wvth0=0 Pvth0=0 K1=0.3452 Lk1=0 Wk1=0 Pk1=0 K2=-0.04056 Lk2=0 Wk2=0 Pk2=0 K3=-0.2908 Lk3=0 Wk3=0 Pk3=0 K3b=0.8059 Lk3b=0 Wk3b=0 Pk3b=0 W0=0 Lw0=0 Ww0=0 Pw0=0 Nlx=3.186E-007 Lnlx=0 Wnlx=0 Pnlx=0 Dvt0=0.3807 Ldvt0=0 Wdvt0=0 Pdvt0=0 Dvt1=0.192 Ldvt1=0 Wdvt1=0 Pdvt1=0 Dvt2=-0.05377 Ldvt2=0 Wdvt2=0 Pdvt2=0 Dvt0w=0.5 Ldvt0w=0 Wdvt0w=0 Pdvt0w=0 Dvt1w=7.9E+006 Ldvt1w=0 Wdvt1w=0 Pdvt1w=0 Dvt2w=0.01 Ldvt2w=0 Wdvt2w=0 Pdvt2w=0 Ua=-6.488E-010 Lua=0 Wua=0 Pua=0 Ub=1.808E-018 Lub=0 Wub=0 Pub=0 Uc=7.6E-011 Luc=0 Wuc=0 Puc=0 Delta=0.02319 Rdsw=1.98 Lrdsw=0 Wrdsw=0 Prdsw=0 Prwg=4.908 Lprwg=0 Wprwg=0 Pprwg=0 Prwb=-4.44089E-019 Lprwb=0 Wprwb=0 Pprwb=0 Wr=0.8233 Lwr=0 Wwr=0 Pwr=0 Vsat=96420 Lvsat=0 Wvsat=0 Pvsat=0 A0=2 La0=0 Wa0=0 Pa0=0 Keta=-0.04359 Lketa=0 Wketa=0 Pketa=0 Ags=1 Lags=0 Wags=0 Pags=0 A1=0 La1=0 Wa1=0 Pa1=0 A2=1 La2=0 Wa2=0 Pa2=0 B0=1.709E-008 Lb0=0 Wb0=0 Pb0=0 B1=1E-009 Lb1=0 Wb1=0 Pb1=0 Alpha0=2.605E-014 Lalpha0=0 Walpha0=0 Palpha0=0 Beta0=0.3255 Lbeta0=0 Wbeta0=0 Pbeta0=0 Voff=-0.1676 Lvoff=0 Wvoff=0 Pvoff=0 Nfactor=1 Lnfactor=0 Wnfactor=0 Pnfactor=0 Cdsc=8.495E-005 Lcdsc=0 Wcdsc=0 Pcdsc=0 Cdscb=5.514E-005 Lcdscb=0 Wcdscb=0 Pcdscb=0 Cdscd=-0.0002088 Lcdscd=0 Wcdscd=0 Pcdscd=0 Cit=0 Lcit=0 Wcit=0 Pcit=0 Eta0=0.2734 Leta0=0 Weta0=0 Peta0=0 Etab=-0.07382 Letab=0 Wetab=0 Petab=0 Dsub=0.8813 Ldsub=0 Wdsub=0 Pdsub=0 Drout=0.5473 Ldrout=0 Wdrout=0 Pdrout=0 Pclm=1.682 Lpclm=0 Wpclm=0 Ppclm=0 Pdiblc1=0.0171 Lpdiblc1=0 Wpdiblc1=0 Ppdiblc1=0 Pdiblc2=0.01 Lpdiblc2=0 Wpdiblc2=0 Ppdiblc2=0 Pdiblcb=0 Lpdiblcb=0 Wpdiblcb=0 Ppdiblcb=0 Pscbe1=2.163E+007 Lpscbe1=0 Wpscbe1=0 Ppscbe1=0 Pscbe2=5.383E-009 Lpscbe2=0 Wpscbe2=0 Ppscbe2=0 Pvag=1.369 Lpvag=0 Wpvag=0 Ppvag=0 Ute=-1.346 Lute=0 Wute=0 Pute=0 At=24320 Lat=0 Wat=0 Pat=0 Ua1=2.538E-009 Ub1=-3.138E-018 Uc1=-1.477E-010 Kt1=-0.1599 Lkt1=0 Wkt1=0 Pkt1=0 Kt1l=5.55112E-025 Lkt1l=0 Wkt1l=0 Pkt1l=0 Kt2=4.441E-016 Lkt2=0 Wkt2=0 Pkt2=0 Prt=2.165 Lprt=0 Wprt=0 Pprt=0 Cgsl=0 Cgdl=0 Ckappa=0.6 Cf=0 Clc=1E-007 Cle=0.6 Dlc=34E-009 Dwc=1E-009 Noff=1 Voffcv=0 Alpha1=2.354E-008 Acde=1 Moin=15 Tpb=0.001262 Tpbsw=1E-009 Tpbswg=1E-009 Tcj=0.0006052 Tcjsw=4.441E-018 Tcjswg=4.441E-018 Llc=0 Lwc=0 Lwlc=0 Wlc=0 Wwc=0 Wwlc=0 Gdsnoi=1 Kf=5.7e-26 Af=1.4 Ef=1.03 Imax=1 Acm=20 Eg=1.12452 Sc=1.0e20 W=5e-6 L=5e-6

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 6:23pm


_dvth0n_fv=0
_dtox_fv=0
_dwintn_fv=0
_dlintn_fv=0
_dlvthn_fv=0
C:Cdgsb  s b C=nsdg*(12.00f*KC*1e6*W+(1.913e-010*W))
C:Cdgdb  d b C=nddg*(12.00f*KC*1e6*W+(1.913e-010*W))
C:Cgbx  g b C=KCGB*0.34e-6*L*mgate*(1-(110/111)*(1.05-0.08*ln(mgate))*exp(-L*1e6/1.0))
R:Rg  g gg R=(12.93*KR*(1.1*L*1e6+0.11/L/1e6)*(0.02*W*1e6+1/W/1e6)/mgate)+Rg2 Tnom=27 TC1=0 TC2=0 Noise=yes
C:Cfgd  gg d C=12.00f*KC*1e6*Wmg
C:Cfgs  gg s C=12.00f*KC*1e6*Wmg
"c3_fast_n_model":nmosvsrf  d gg s bb Length=LENGTH Width=WIDTH Ad=1e-018 As=1e-018 Pd=1e-018 Ps=1e-018 Nrd=0 Nrs=0 Mode=1 Noise=yes _M=mgate
R:Rsub3  sb bb R=36.90*KRo/(1e6*Wmg) Tnom=27 Noise=yes
R:Rsub2  db_n bb R=36.90*KRo/(1e6*Wmg) Tnom=27 Noise=yes
R:Rsub4  sb b R=124.0*KRo/(1e6*W*(mgate+nsdg)) Tnom=27 Noise=yes
R:Rsub1  db_n b R=124.0*KRo/(1e6*W*(mgate+nddg)) Tnom=27 Noise=yes
"DIODE_s":Djsb  sb s Mode=1 Noise=yes
"DIODE_d":Djdb  db_n d Mode=1 Noise=yes
model DIODE_s Diode Cjo=56.47f*KC*1e6*KRLD2*W*(mgate+nsdg) Vj=0.6575 M=0.314 AllowScaling=0 Tnom=27 Eg=1.124481
model DIODE_d Diode Cjo=56.47f*KC*1e6*KRLD2*W*(mgate+nddg) Vj=0.6575 M=0.314 AllowScaling=0 Tnom=27 Eg=1.124481

Wmg=W*mgate
WIDTH=W
LENGTH=L
KRLD2=LD2/0.42u
Rg2=7*(lneck-0.12u)/L/mgate
end nmosvsrf_070608
Short:iout  _net9041 vout Mode=0 SaveCurrent=yes
HB:HB1 MaxOrder=Max_IMD_order Freq[1]=RFfreq-fspacing/2 Freq[2]=RFfreq+fspacing/2 Order[1]=7 Order[2]=7 StatusLevel=2 FundOversample=1 \
Restart=no UseAllSS_Freqs=yes UseOutFile=no UseInFile=no SweepVar="RFpower" SweepPlan="Coarse" OutputPlan="HB1_Output" ConvMode=2 MaxIters=10 ArcLevelMaxStep=0.0 MaxStepRatio=100 MaxShrinkage=1.0e-5 ArcMaxStep=0.0 \
UseKrylov=yes SamanskiiConstant=2 \

OutputPlan:HB1_Output \
     Type="Output" \
     UseNodeNestLevel=yes \
     NodeNestLevel=2 \
     UseEquationNestLevel=yes \
     EquationNestLevel=2 \
     EquationName[1]="Max_IMD_order" \
     UseSavedEquationNestLevel=yes \
     SavedEquationNestLevel=2

Tran:HB1_tran HB_Sol=1 SteadyState=1 StatusLevel=3 \
Freq[1]=RFfreq-fspacing/2 Order[1]=7 \
OutputPlan="HB1_Output"

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


SweepPlan:Fine SweepPlan[1]="Fine_seg1"
SweepPlan:Fine_seg1 Start=3 Stop=9 Step=1

RFfreq=5800 MHz
fspacing=-2000 kHz
RFpower=10 _dBm
Max_IMD_order=3
Vhigh=2.5
Vlow=0.35 notune{ 0.17 to 0.51 by 0.034 }

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 6:24pm


SweepPlan:Coarse SweepPlan[1]="Coarse_seg1" SweepPlan[2]="Coarse__Fine"  
SweepPlan:Coarse__Fine Sort=no Reverse=no SweepPlan="Fine"
SweepPlan:Coarse_seg1 Start=-20 Stop=3 Step=1
Port:PORT1  in 0 Num=1  Z=50  Freq[1]=RFfreq-fspacing/2 Freq[2]=RFfreq+fspacing/2    P[1]=dbmtow(RFpower-3) P[2]=dbmtow(RFpower-3) Noise=yes Pac=polar(dbmtow(0),0)
rpolyrf_070608:X7  _net9020 rfin 0 _M=1 Ns=1 Np=1 wr=1 r=500 tc1=0 tc2=0 R1=0 R1multi=0 rpolyx=1
cmimrf_070608_mim_orig:X22  _net9016 0 0 _M=1 c=0.5p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
cmimrf_070608_mim_orig:X46  _net9014 0 0 _M=1 c=0.5p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
nmosvsrf_070608:M4  _net8972 rfin 0 0 mgate=120 W=10u L=0.11u lneck=0.4u LD2=0.58u KC=0.01603 KRo=62.4 KR=56.21622 KL=0.2519 KCGB=0.02 nddg=0 nsdg=2 Mmulti=1
nmosvsrf_070608:M6  _net9020 _net9020 0 0 mgate=8 W=10u L=0.11u lneck=0.4u LD2=0.58u KC=0.01603 KRo=62.4 KR=56.21622 KL=0.2519 KCGB=0.02 nddg=0 nsdg=2 Mmulti=1
nmosvsrf_070608:M5  vout _net9016 vout1 vout1 mgate=40 W=10u L=0.11u lneck=0.4u LD2=0.58u KC=0.01603 KRo=62.4 KR=56.21622 KL=0.2519 KCGB=0.02 nddg=0 nsdg=2 Mmulti=1
nmosvsrf_070608:M3  vout _net9014 vout1 vout1 mgate=72 W=10u L=0.11u lneck=0.4u LD2=0.58u KC=0.01603 KRo=62.4 KR=56.21622 KL=0.2519 KCGB=0.02 nddg=0 nsdg=2 Mmulti=1
nmosvsrf_070608:M8  0 0 0 0 mgate=4 W=10u L=0.11u lneck=0.4u LD2=0.58u KC=0.01603 KRo=62.4 KR=56.21622 KL=0.2519 KCGB=0.02 nddg=0 nsdg=2 Mmulti=1
nmosvsrf_070608:M7  vout1 vout1 vout1 vout1 mgate=4 W=10u L=0.11u lneck=0.4u LD2=0.58u KC=0.01603 KRo=62.4 KR=56.21622 KL=0.2519 KCGB=0.02 nddg=0 nsdg=2 Mmulti=1
Short:DC_Block1  _net8956 rfin Mode=1

c4=0.53 tune{ 0.1 to 1.5 by 0.1 } opt{ 0.1 to 2 }
R=2550 notune{ 2000 to 4000 by 0.1 } opt{ 1000 to 4000 }
L3=0.60551 notune{ 0.1 to 1.5 by 0.1 } opt{ 0.1 to 1 }
c3=0.6 tune{ 0.1 to 3 by 0.1 } opt{ 0.1 to 2 }
Port:Term1  Vload 0 Num=2 Z=50 Noise=yes
cmimrf_070608_mim_orig:X43  _net8956 _net8949 0 _M=0.8 c=0.8 p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
cmimrf_070608_mim_orig:X45  _net8949 _net8615 0 _M=1 c=0.6 p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
cmimrf_070608_mim_orig:X44  _net8956 _net8949 0 _M=0.8 c=0.8 p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
#uselib "ckt" , "S2P"
S2P:SNP7  _net8949 0 0 File="C:\users\default\cmospahi11\.\data\Inductor_066nh_mom_a.s2p" Type="touchstone" InterpMode="linear" InterpDom="" ExtrapMode="constant" Temp=27.0 CheckPassivity=0
R:R8  _net8747 _net9020 R=2550 Ohm Noise=yes

L1=0.777977 notune{ 0.5 to 2 by 0.1 } opt{ 0.4 to 1.6 }
L2=1 notune{ 0.5 to 2 by 0.1 } opt{ 0.4 to 1.6 }
c1=1 notune{ 0.1 to 5 by 0.1 } opt{ 1 to 5 }
V_Source:SRC13  _net8734 0 Vdc=2 V notune{ 0.185 V to 0.555 V by 0.005 V } SaveCurrent=1
Short:Is_low  Vs_low _net8687 Mode=0 SaveCurrent=yes
V_Source:SRC2  Vs_low 0 Vdc=0.345 notune{ 0.17 to 0.51 by 0.01 } SaveCurrent=1
cmimrf_070608_mim_orig:X32  _net9041 _net8684 0 _M=1 c=1 p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
cmimrf_070608_mim_orig:X39  _net9041 _net8684 0 _M=1 c=1 p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
cmimrf_070608_mim_orig:X40  _net9041 _net8684 0 _M=1 c=1 p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
Short:I_input  in _net8615 Mode=0 SaveCurrent=yes
C:C8  0 vdd C=5 pF
R:R7  _net8623 _net9016 R=500 Ohm Noise=yes
Short:iout1  vout1 _net8972 Mode=0 SaveCurrent=yes
Short:Iload  _net8684 Vload Mode=0 SaveCurrent=yes
V_Source:SRC12  _net8747 0 Vdc=2 V notune{ 0.185 V to 0.555 V by 0.005 V } SaveCurrent=1
cmimrf_070608_mim_orig:X23  _net9016 0 0 _M=1 c=1p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
cmimrf_070608_mim_orig:X24  _net9014 0 0 _M=1 c=1p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
cmimrf_070608_mim_orig:X33  _net9020 0 0 _M=1 c=1 p C1=0 C1multi=1 aratio=1.0 cmimx=1.0
rpolyrf_070608:X34  _net8734 _net9014 0 _M=1 Ns=1 Np=1 wr=1 r=530 tc1=0 tc2=0 R1=0 R1multi=0 rpolyx=1
rpolyrf_070608:X35  _net9014 0 0 _M=1 Ns=1 Np=1 wr=1 r=900 tc1=0 tc2=0 R1=0 R1multi=0 rpolyx=1
R:R10  _net9016 0 R=2625 Ohm Noise=yes
V_Source:SRC11  _net8623 0 Vdc=2 V notune{ 0.75 V to 2.25 V by 0.02 V } SaveCurrent=1
Short:Is_high  Vs_high vdd Mode=0 SaveCurrent=yes
#uselib "ckt" , "S2P"
S2P:SNP1  _net8684 0 0 File="C:\users\default\cmospahi11\.\data\inductor110_mom_a.s2p" Type="touchstone" InterpMode="linear" InterpDom="" ExtrapMode="constant" Temp=27.0 CheckPassivity=0
#uselib "ckt" , "S2P"
S2P:SNP6  vdd _net9041 0 File="C:\users\default\cmospahi11\.\data\inductor76_mom_a.s2p" Type="touchstone" InterpMode="linear" InterpDom="" ExtrapMode="constant" Temp=27.0 CheckPassivity=0
V_Source:G3  Vs_high 0 Vdc=2 SaveCurrent=1

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 6:25pm

spectre netlist is in following

// Generated for: spectre
// Generated on: Jan  8 17:45:14 2010
// Design library name: liu
// Design cell name: pa_mult1_test
// Design view name: schematic
simulator lang=spectre
global 0
include "/cad00/cadence/IC5141ISR200803280340/tools/dfII/samples/artist/ahdlLib/quantity.spectre"
parameters amp=1 frf=5.8G resltc1=1.0 resltc2=1.0 prf=7 Scl=1.0 rpolyx=1 \
   cmimx=1 cmomx=1 cnmosx=1 cpmosx=1 vmosdx=1 vmossx=1 vpmosdx=1 vpmossx=1
include "/home/PDK/CMOS3R/CMOS3R_PDK/models/cmos3r.scs" section=tt
include "/home/PDK/ToshibaCMOS3/lib/models/toshiba_cmos3_spiral_ind_half_turn_enc.scs"
include "/home/PDK/ToshibaCMOS3/lib/models/toshiba_cmos3_diff_ind_full_turn_enc.scs"

// Library name: liu
// Cell name: pa_mult1
// View name: schematic
subckt pa_mult1 rfin rfout sub vb1 vb2 vcc vcc1 inh_subnet
   NPORT9 (sub sub net086 sub) nport interp=spline thermalnoise=yes \
       datafmt=touchstone \
       file="/home/liuqing/sp/Inductor_066nh_mom_a.s2p"
   NPORT7 (sub sub rfout sub) nport interp=spline thermalnoise=yes \
       datafmt=touchstone file="/home/liuqing/sp/inductor110_mom_a.s2p"
   NPORT4 (net61 sub vcc sub) nport interp=spline thermalnoise=yes \
       datafmt=touchstone file="/home/liuqing/sp/inductor76_mom_a.s2p"
   M2 (net61 net84 net65 net65) nmosvsrf m=4 W=10u L=0.11u mgate=10 \
       Mmulti=4 nddg=0 nsdg=2 lneck=0.4u LD2=0.58u
   M0 (net61 net78 net65 net65) nmosvsrf m=4 W=10u L=0.11u mgate=18 \
       Mmulti=4 nddg=0 nsdg=2 lneck=0.4u LD2=0.58u
   M1 (net65 net98 sub sub) nmosvsrf m=10 W=10u L=0.11u mgate=12 \
       Mmulti=10 nddg=0 nsdg=2 lneck=0.4u LD2=0.58u
   M5 (net57 net57 sub sub) nmosvsrf m=8 W=10u L=0.11u mgate=1 Mmulti=8 \
       nddg=1 nsdg=1 lneck=0.4u LD2=0.58u
   R10 (vb2 net84 inh_subnet) rpolyrf r=500 wr=2 R1=500 R1multi=1 Ns=1 \
       Np=1 tc1=resltc1 tc2=resltc2 m=1
   R11 (sub net84 inh_subnet) rpolyrf r=2.625K wr=2 R1=5.25K R1multi=2 \
       Ns=1 Np=2 tc1=resltc1 tc2=resltc2 m=2
   R6 (sub net78 inh_subnet) rpolyrf r=900 wr=3 R1=900 R1multi=1 Ns=1 \
       Np=1 tc1=resltc1 tc2=resltc2 m=1
   R2 (net57 net98 inh_subnet) rpolyrf r=4000 wr=3 R1=4K R1multi=1 Ns=1 \
       Np=1 tc1=resltc1 tc2=resltc2 m=1
   R4 (vb1 net78 inh_subnet) rpolyrf r=530 wr=3 R1=530 R1multi=1 Ns=1 \
       Np=1 tc1=resltc1 tc2=resltc2 m=1
    R1 (vcc1 net57 inh_subnet) rpolyrf r=2550 wr=3 R1=2.55K R1multi=1 Ns=1 \
       Np=1 tc1=resltc1 tc2=resltc2 m=1
   C1 (net98 net086 inh_subnet) cmimrf m=2 c=1.6p C1=800f C1multi=2 \
       aratio=1.0
   C5 (net086 rfin inh_subnet) cmimrf m=1 c=0.6p C1=600f C1multi=1 \
       aratio=1.0
   C0 (net84 sub inh_subnet) cmimrf m=3 c=1.5p C1=500f C1multi=3 \
       aratio=1.0
   C4 (vcc sub inh_subnet) cmimrf m=5 c=5p C1=1p C1multi=5 aratio=1.0
   C9 (net57 sub inh_subnet) cmimrf m=1 c=1p C1=1p C1multi=1 aratio=1.0
   C2 (net78 sub inh_subnet) cmimrf m=3 c=1.5p C1=500f C1multi=3 \
       aratio=1.0
   C3 (net61 rfout inh_subnet) cmimrf m=3 c=3p C1=1p C1multi=3 aratio=1.0
ends pa_mult1
// End of subcircuit definition.

// Library name: liu
// Cell name: pa_mult1_test
// View name: schematic
I22 (net015 net4 0 net010 net010 net1 net10 0) pa_mult1
PORT0 (net015 0) port r=50 num=1 type=sine freq=frf dbm=prf pacdbm=prf \
       offset=0 scale=1 stretch=1 wave=[ 10n 0 10.1n amp ] fundname="frf"
PORT1 (net4 0) port r=50 num=2 type=dc
V1 (net010 0) vsource dc=2 type=dc
V2 (net10 0) vsource dc=2 type=dc
V0 (net1 0) vsource dc=2 type=dc
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 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 sensfile="../psf/sens.output" \
   checklimitdest=psf
sweeppss  sweep  param=prf  start=-30  stop=3  step=1  {
 pss  pss  fund=5.8G  harms=10  errpreset=moderate  annotate=status

 pac  pac  start=5.802G  maxsideband=10  annotate=status
}

modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
primitives info what=primitives where=rawfile
subckts info what=subckts  where=rawfile
save PORT0:p PORT1:p
saveOptions options save=allpub  

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 8th, 2010, 10:05pm


Andrew Beckett wrote on Jan 8th, 2010, 3:19am:
I agree with Pancho Hideboo here - seeing the netlist (the sources and analysis statements) would really help. Whilst you showed lots of forms, you didn't show the small-signal settings on the RF source, which I assume were set - seeing the netlist would allow us to see that.

Out of interest, what kind of circuit is it that you're analysing? (not that it necessarily matters)
I am analysing a PA . thank you!
Regards,

Andrew.


Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 9th, 2010, 3:10am

As I guessed, you are invoking two-large-tones-HB in Agilent ADS.

It seems that you are not familiar with Agilent ADS.
There are many many many improper issues in your netlist
for comparing Agilent ADS with Cadence Spectre

Extractions from your ADS's Netlist
Quote:
RFfreq=5800 MHz
fspacing=-2000 kHz
RFpower=10 _dBm
Max_IMD_order=3

Port:PORT1  in 0 Num=1  Z=50  Freq[1]=RFfreq-fspacing/2 Freq[2]=RFfreq+fspacing/2 \
  P[1]=dbmtow(RFpower-3) P[2]=dbmtow(RFpower-3) Noise=yes Pac=polar(dbmtow(0),0)

Port:Term1  Vload 0 Num=2 Z=50 Noise=yes

Short:DC_Block1  _net8956 rfin Mode=1

#uselib "ckt" , "S2P"
S2P:SNP7  _net8949 0 0 \
File="C:\users\default\cmospahi11\.\data\Inductor_066nh_mom_a.s2p" Type="touchstone" \
InterpMode="linear" InterpDom="" ExtrapMode="constant" Temp=27.0 CheckPassivity=0

#uselib "ckt" , "S2P"
S2P:SNP1  _net8684 0 0 \
File="C:\users\default\cmospahi11\.\data\inductor110_mom_a.s2p" Type="touchstone" \
InterpMode="linear" InterpDom="" ExtrapMode="constant" Temp=27.0 CheckPassivity=0

#uselib "ckt" , "S2P"
S2P:SNP6  vdd _net9041 0 \
File="C:\users\default\cmospahi11\.\data\inductor76_mom_a.s2p" Type="touchstone" \
InterpMode="linear" InterpDom="" ExtrapMode="constant" Temp=27.0 CheckPassivity=0


HB:HB1 MaxOrder=Max_IMD_order \
Freq[1]=RFfreq-fspacing/2 Freq[2]=RFfreq+fspacing/2 Order[1]=7 Order[2]=7 \
StatusLevel=2 FundOversample=1 \
Restart=no UseAllSS_Freqs=yes UseOutFile=no UseInFile=no \
SweepVar="RFpower" SweepPlan="Coarse" \
OutputPlan="HB1_Output" \
ConvMode=2 MaxIters=10 ArcLevelMaxStep=0.0 MaxStepRatio=100 MaxShrinkage=1.0e-5 ArcMaxStep=0.0 \
UseKrylov=yes SamanskiiConstant=2


SweepPlan:Coarse SweepPlan[1]="Coarse_seg1" SweepPlan[2]="Coarse__Fine"  
SweepPlan:Coarse_seg1 Start=-20 Stop=3 Step=1
SweepPlan:Coarse__Fine Sort=no Reverse=no SweepPlan="Fine"
SweepPlan:Fine SweepPlan[1]="Fine_seg1"
SweepPlan:Fine_seg1 Start=3 Stop=9 Step=1

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 9th, 2010, 3:27am

It seems that you are also not familiar with Cadence Spectre.

Extractions from your Spectre's Netlist
Quote:
parameters frf=5.8G prf=7

PORT0 (net015 0) port r=50 num=1 type=sine freq=frf dbm=prf pacdbm=prf fundname="frf"

PORT1 (net4 0) port r=50 num=2 type=dc

NPORT9 (0 0 net086 0) nport interp=spline thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/Inductor_066nh_mom_a.s2p"

NPORT7 (0 0 rfout 0) nport interp=spline thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/inductor110_mom_a.s2p"

NPORT4 (net61 0 vcc 0) nport interp=spline thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/inductor76_mom_a.s2p"

simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 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 sensfile="../psf/sens.output" \
  checklimitdest=psf

sweeppss  sweep  param=prf  start=-30  stop=3  step=1  {
pss  pss  fund=5.8G  harms=10  errpreset=moderate  annotate=status
pac  pac  start=5.802G  maxsideband=10  annotate=status
}

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 9th, 2010, 4:14am

If you want to compare Agilent ADS with Cadence Spectre correctly, you had better consider the followings.

(1) Don't use "DC_Block" component in ADS.

(2) You have to put "OPTIONS" component in ADS to set temperature and etc.
Default analysis temperature of ADS is 25degC if my memory is correct.
If you put "OPTIONS" component in ADS, the followings are included in your ADS's netlist.

Quote:
Options:Options1  Temp=27 Tnom=27 TopologyCheck=yes ForceS_Params=yes \
V_RelTol=1e-3 V_AbsTol=1e-6 V I_RelTol=1e-3 I_AbsTol=1e-12 A \
GiveAllWarnings=yes MaxWarnings=10 ForceM_Params=yes \
InitialGuessAnnotation=0 TopologyCheckMessages=no

(3) If you invoke one fundamental frequency based PSS/PAC in Spectre,
you should invoke HB1SS(one-large-tone HB with one small signal Analysis) also in Agilent ADS
like following.

Quote:
RFfreq1=5.800 GHz
RFfreq2=5.802 GHz

Port:PORT1  in 0 Num=1  Z=50  Freq[1]=RFfreq1 P[1]=dbmtow(RFpower) \
P_USB[1]=dbmtow(RFpower) P_LSB[1]=0 Noise=yes  

HB:HB1 Freq[1]=RFfreq1 Order[1]=10 Oversample[1]=1 MaxOrder=5 StatusLevel=2 \
UseKrylov=1 SS_Freq=RFfreq2-RFfreq1 \
SweepVar="RFpower" SweepPlan="Coarse" \
OutputPlan="HB1_Output"

SweepPlan:Coarse SweepPlan[1]="Coarse_seg1"
SweepPlan:Coarse_seg1 Start=-30 Stop=3 Step=1

Agilent ADS can interpret Spectre's netlist except for analysis statement directly
even if your ADS is Windows Version not Unix Version.
Agilent ADS can also interpret hybrid style netlist of Agilent ADS and Cadence Spectre Syntax.
http://www.designers-guide.org/Forum/YaBB.pl?num=1216663909/7#7

For example, if you prefer Cadence Spectre Syntax as signal source statement, you can use following in your ADS netlist.

Quote:
simulator lang=spectre
PORT1 (in 0) port r=50 num=1 type=sine freq=RFfreq1 dbm=RFpower pacdbm=RFpower
simulator lang=ads

So if you are very familiar with both Agilent ADS and Cadence Spectre,
you can run Spectre's netlist for PSS/PAC directly by using ADS's one-large-tone-HB with one small signal Analysis.

But these are not so critical for you.

Your critical misunderstandings are others which have no relation to specific EDA vendor's simulator.
Your critical misunderstandings exist in your IM3 definition.
IM3 has to be same even if you invoke HB2(two-large-tones-HB) or HB1SS(one-large-tone-HB with one small signal Analysis).
Many RF beginners often have same misunderstandings as yours.

waseda-rfic wrote on Jan 6th, 2010, 5:47pm:
for a fix input power,
the simulation result of Spectre HB is -25dBc,
the simulation result of Spectre pss is -32dBc
and ADS HB is -40dBc.
If I correct your IM3 value for ADS's HB2 Analysis, IM3 of ADS's HB2 Analysis will be -34dBc.

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 9th, 2010, 7:54am

If you use Shooting-PSS/PAC of Cadence Spectre, try to use following settings.

Quote:
NPORT9 (0 0 net086 0) nport interp=linear thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/Inductor_066nh_mom_a.s2p"

NPORT7 (0 0 rfout 0) nport interp=linear thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/inductor110_mom_a.s2p"

NPORT4 (net61 0 vcc 0) nport interp=linear thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/inductor76_mom_a.s2p"

sweeppss  sweep  param=prf  start=-30  stop=3  step=1  {
pss  pss  flexbalance=no  fund=5.8G  harms=1  maxacfreq=58G
+    outputtype=freq  errpreset=moderate  annotate=status
pac  pac  values=[5.802G]  sidebands=[-2 0]  annotate=status
}


If you use HB-PSS/PAC of Cadence Spectre, try to use following settings.

Quote:
NPORT9 (0 0 net086 0) nport interp=linear thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/Inductor_066nh_mom_a.s2p"

NPORT7 (0 0 rfout 0) nport interp=linear thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/inductor110_mom_a.s2p"

NPORT4 (net61 0 vcc 0) nport interp=linear thermalnoise=yes \
datafmt=touchstone file="/home/liuqing/sp/inductor76_mom_a.s2p"

sweeppss  sweep  param=prf  start=-30  stop=3  step=1  {
pss  pss  flexbalance=yes  fund=5.8G  harms=10  oversamplefactor=4
+    restart=no  tstab=0n  maxperiods=200
+    outputtype=freq  errpreset=moderate  annotate=status
pac  pac  values=[5.802G]  sidebands=[-2 0]  annotate=status
}


In your settings for HB2(two-large-tones-HB) of Agilent ADS, your "Max_IMD_order" is too small.
Increase "Max_IMD_order" to 5 at least.
And try to increase "FundOversample" until results will not change.

Try to use following settings for HB2(two-large-tones-HB) of Agilent ADS.

Quote:
Max_IMD_order=5

Port:PORT1  in 0 Num=1  Z=50  Freq[1]=RFfreq-fspacing/2 Freq[2]=RFfreq+fspacing/2 \
 P[1]=dbmtow(RFpower) P[2]=dbmtow(RFpower) Noise=yes Pac=polar(dbmtow(0),0)

HB:HB1 MaxOrder=Max_IMD_order \
Freq[1]=RFfreq-fspacing/2 Freq[2]=RFfreq+fspacing/2 Order[1]=7 Order[2]=7 \
StatusLevel=2 FundOversample=2 \
Restart=no UseAllSS_Freqs=yes UseOutFile=no UseInFile=no \
SweepVar="RFpower" SweepPlan="Coarse" \
OutputPlan="HB1_Output" \
ConvMode=2 MaxIters=10 ArcLevelMaxStep=0.0 MaxStepRatio=100 MaxShrinkage=1.0e-5 ArcMaxStep=0.0 \
UseKrylov=yes SamanskiiConstant=2

SweepPlan:Coarse SweepPlan[1]="Coarse_seg1"
SweepPlan:Coarse_seg1 Start=-30 Stop=3 Step=1


Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 9th, 2010, 5:16pm


Andrew Beckett wrote on Jan 8th, 2010, 3:19am:
I agree with Pancho Hideboo here - seeing the netlist (the sources and analysis statements) would really help. Whilst you showed lots of forms, you didn't show the small-signal settings on the RF source, which I assume were set - seeing the netlist would allow us to see that.

Out of interest, what kind of circuit is it that you're analysing? (not that it necessarily matters)

Regards,

Andrew.

I made a mistake in the last reply. I am analysing a PA for WLNA.

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 9th, 2010, 6:50pm

Dear pancho_hideboo:
        thank you very much for your advice. I did my simulation again. the Max_IMD_order=7  FundOversample=4 . the themulation resulat seems a 2 db difference .
   and i also resimulate it in spectre. the netlist is as follows:
"simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 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 sensfile="../psf/sens.output" \
   checklimitdest=psf
sweeppss  sweep  param=prf  start=-30  stop=3  step=1  {
 pss  pss  flexbalance=yes  oversamplefactor=4  fund=5.8G  harms=10
+      errpreset=moderate  annotate=status

 pac  pac  start=5.802G  maxsideband=10  annotate=status
}"
the simulation seems same as before. there is also a 10db difference.
I know the mistake made before is the Max_IMD_order and FundOversample is too low in hb simulation. i changed these parameters. but no obvious improve.
again thank you  very much!
   

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 9th, 2010, 8:33pm


waseda-rfic wrote on Jan 9th, 2010, 6:50pm:
I know the mistake made before is the Max_IMD_order and FundOversample is too low in hb simulation.
i changed these parameters. but no obvious improve.
No, you are still misunderstanding.

Most serious misunderstanding is your IM3 definition for HB2 of ADS.

Quote:
Port:PORT1  in 0 Num=1  Z=50  Freq[1]=RFfreq-fspacing/2 Freq[2]=RFfreq+fspacing/2 \
 P[1]=dbmtow(RFpower-3) P[2]=dbmtow(RFpower-3) Noise=yes Pac=polar(dbmtow(0),0)
You have to set dbmtow(RFpower) not dbmtow(RFpower-3) as Power.


waseda-rfic wrote on Jan 6th, 2010, 5:47pm:
for a fix input power,
the simulation result of Spectre HB is -25dBc,
the simulation result of Spectre pss is -32dBc
and ADS HB is -40dBc.
If I correct your IM3 value for ADS's HB2 Analysis, IM3 of ADS's HB2 Analysis will be -34dBc.

Again see http://www.designers-guide.org/Forum/YaBB.pl?num=1262828862/20#20

Also try to run HB1SS in ADS.

Show me both results.


waseda-rfic wrote on Jan 9th, 2010, 6:50pm:
I did my simulation again. the Max_IMD_order=7  FundOversample=4.
the themulation resulat seems a 2 db difference.
So your new IM3 however still based on improper definition is -38dBc ?
If I correct this new value, IM3 of ADS's HB2 Analysis will be -32dBc.
This is matched to IM3 of Shooting-PSS/PAC of Cadence Spectre.


Difference of IM3 between Shooting-PSS/PAC and HB-PSS/PAC in Cadence Spectre is another issue.
Did you surely set HB-PSS like following ?

Quote:
pss  pss  flexbalance=yes  fund=5.8G  harms=10  oversamplefactor=4
+    restart=no  tstab=0n  maxperiods=200
+    outputtype=freq  errpreset=moderate  annotate=status


In your case, even results for 5.802GHz are different between them.
I suspect no convergence in HB-PSS.
Show me log files for both Shooting-PSS/PAC and HB-PSS/PAC.

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 9th, 2010, 9:15pm

If you show me the followings, I can resimulate using both ADS and Spectre with correct settings.

Quote:
include "/home/PDK/CMOS3R/CMOS3R_PDK/models/cmos3r.scs" section=tt
include "/home/PDK/ToshibaCMOS3/lib/models/toshiba_cmos3_spiral_ind_half_turn_enc.scs"
include "/home/PDK/ToshibaCMOS3/lib/models/toshiba_cmos3_diff_ind_full_turn_enc.scs"

file="/home/liuqing/sp/Inductor_066nh_mom_a.s2p"
file="/home/liuqing/sp/inductor110_mom_a.s2p"
file="/home/liuqing/sp/inductor76_mom_a.s2p"


(1) HB1SS in Agilent ADS
(2) HB2 in Agilent ADS

(3) SSNA(=HB1SS) in Agilent GoldenGate
(4) CR(=HB2) in Agilent GoldenGate

(5) Shooting-PSS/PAC in Cadence Spectre
(6) HB-PSS/PAC in Cadence Spectre

(7) HB2-QPSS in Cadence Spectre

Your simulations are (2), (5) and (6).
And your IM3 definition in (2) is improper, if you compare IM3 with (1), (3), (5) and (6).

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 10th, 2010, 10:18pm


pancho_hideboo wrote on Jan 9th, 2010, 8:33pm:
You have to set dbmtow(RFpower) not dbmtow(RFpower-3) as Power.

this set is the original set in IM3 simulation in ADS example. because the IM3 is displayed with the output power. so it has no effect on the IM3. the cadence is displayed with the input power. so i have to caculate with the LSSP gain and compare the results.
By the way, I do not find the hb1ss in ADS 2009. could you send the intrductions of hb1ss.  and could you give me the your email address please? I will send you the .scs file and other more detail files.
Can ADS and spectre simulation with only the netlist? could you give me some introduction files?
thank you again for your patient help!

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 10th, 2010, 10:31pm


waseda-rfic wrote on Jan 10th, 2010, 10:18pm:
this set is the original set in IM3 simulation in ADS example.
because the IM3 is displayed with the output power.
so it has no effect on the IM3.
No.
You are still misunderstanding.

Your IM3 is defined for "fix input power" like following,
So your setting affect on IM3.

waseda-rfic wrote on Jan 6th, 2010, 5:47pm:
for a fix input power,
the simulation result of Spectre HB is -25dBc,
the simulation result of Spectre pss is -32dBc
and ADS HB is -40dBc.

waseda-rfic wrote on Jan 6th, 2010, 5:47pm:
the cadence is displayed with the input power.
so i have to caculate with the LSSP gain and compare the results.
It seems that you are also wrong in post processing of ADS's HB2 results.
LSSP is never needed.

Many RF beginners often have same misunderstandings as yours.

Anyway set dbmtow(RFpower) not dbmtow(RFpower-3) as Power in HB2 of Agilent ADS.

Also try to run HB2-QPSS in Cadence Spectre.
And compare results between Shooting-PSS/PAC, HB-PSS/PAC in Cadence Spectre and HB2-QPSS in Cadence Spectre.

If you compare ADS's HB2 with HB2-QPSS of Cadence Spectre, set Max_IMD_order=7 in ADS's HB2.
See http://www.designers-guide.org/Forum/YaBB.pl?num=1205223090


waseda-rfic wrote on Jan 10th, 2010, 10:18pm:
By the way, I do not find the hb1ss in ADS 2009. could you send the intrductions of hb1ss.
HB1SS exists in any Version of ADS.
And it has existed since 1988, a start day of Agilent MDS which is an ancestor of ADS.
See "Setting Up Small-Signal Simulations" of http://edocs.soco.agilent.com/display/ads2009/Harmonic+Balance+Basics

See parameter of "P_USB" in http://edocs.soco.agilent.com/display/ads2009/P+1Tone+%28Power+Source%2C+Single+Frequency%29

Also see the followings.
http://edocs.soco.agilent.com/display/ads2009/Large+Signal+Amplifier+Simulations
http://edocs.soco.agilent.com/display/ads2009/Simulation+of+a+Differential-Mode+Mixer

Again see netlist for HB1SS in http://www.designers-guide.org/Forum/YaBB.pl?num=1262828862/20#20.
If you modify your netlist for HB1SS manually, you can run HB1SS analysis from Windows command line.

% hpeesofsim [-r output_rawfile_name] [netlist_inputfile_name]

See "Running a Simulation from the Command Line" of the following.
http://edocs.soco.agilent.com/display/ads2009/ADS+Simulator+Input+Syntax

HB1SS doesn't consume computer resources such as memory compared to HB2.
So HB1SS was effective method in the ancient day if you don't require IM5, IM7, etc.

The reason why One-Large-Tone with One Small Signal Analysis(=PSS/PAC) is major in Cadence Spectre is
due to very bad performance of Two-Large-Tone Analysis of Cadence Spectre(Shooting-Pdisto analysis which is called as Shooting-QPSS currently).

Actually Cadence SpectreRF was released with only Shooting-PSS/PAC/PXF/PNoise for driven circuits first in 1995.
So we couldn't run Two-Large-Tone Analysis where two tones have no common divisor frequency or common divisor frequency is too small in Cadence Spectre.

About PSS and QPSS, see http://www.designers-guide.org/Forum/YaBB.pl?num=1234783833/2#2

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 10th, 2010, 11:19pm


waseda-rfic wrote on Jan 10th, 2010, 10:18pm:
Can ADS and spectre simulation with only the netlist?
Netlist for ADS is not needed.
And you already posted Spectre's netlist without S-parameter and device model files.

I need followings in Spectre format.

Quote:
include "/home/PDK/CMOS3R/CMOS3R_PDK/models/cmos3r.scs" section=tt
include "/home/PDK/ToshibaCMOS3/lib/models/toshiba_cmos3_spiral_ind_half_turn_enc.scs"
include "/home/PDK/ToshibaCMOS3/lib/models/toshiba_cmos3_diff_ind_full_turn_enc.scs"

file="/home/liuqing/sp/Inductor_066nh_mom_a.s2p"
file="/home/liuqing/sp/inductor110_mom_a.s2p"
file="/home/liuqing/sp/inductor76_mom_a.s2p"

If you provide the aboves, I can resimulate by using any of ADS, GoldenGate and Spectre.

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by pancho_hideboo on Jan 11th, 2010, 2:28am


waseda-rfic wrote on Jan 6th, 2010, 5:47pm:
for ACPR simulation which is best ?
For ACPR evaluation, you have to consider not only IM3 but also IM5, IM7 and IM9, etc.
Again see http://www.designers-guide.org/Forum/YaBB.pl?num=1190971685/7#7

And if noise effects are not included, spectrum floor is too low.
So you have to include noise effects in simulation.

Generally you need to run Envelope Analysis for evaluation of ACPR of transistor level circuits.

Envelope Analysis of Agilent RFDE(ADSsim) and GoldenGate can include noise effect.
But Envelope Analysis of Cadence Spectre can not do.

See http://www.designers-guide.org/Forum/YaBB.pl?num=1260978648/1#1

But there is a difference in noise of Envelope Analysis between Agilent RFDE(ADSsim) and GoldenGate.
http://www.designers-guide.org/Forum/YaBB.pl?num=1232220194/5#5

Since noise in Envelope Analysis of Agilent RFDE(ADSsim) is monte carlo type, so results are largely affected by time step used for analysis.
On the other hand, noise in Envelope Analysis of Agilent GoldenGate is small signal type, so I recommend you to use Envelope Analysis of Agilent GoldenGate for evaluation of ACPR.

Of course, even in Envelope Analysis of Agilent GoldenGate, system noise bandwidth is 1/Tstep.
This is same as noise bandwidth in Agilent Ptolemy, although noise in Agilent Ptolemy is monte calro type.

Problems of Agilent GoldenGate are :
   - Concept of Simulator Use Model is fairly different
     compared to Agilent RFDE(ADSsim) and Cadence Spectre.
   - Versatilities as Simulator are poor compared to Agilent RFDE(ADSsim).
   - There are still many many bugs especially regarding user interface in ADE.
   - Standard Verilog-A Compiler(va2gg) is very buggy.
        Note :  We can choose two compilers,  Verilog-A (va2gg) or Verilog-AMS (tiburon) in GoldenGate.

Title: Re: which is accurate for IM3 simulation? ADS or Spectre?
Post by waseda-rfic on Jan 12th, 2010, 5:27am

Dear pancho_hideboo
  thank you so much !  I will carefully read these files and resimulate it again.  
best regards!
                                                       waseda

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.