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:
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:
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:
|
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:
|
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:
|
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:
(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:
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:
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:
|
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:
If you use HB-PSS/PAC of Cadence Spectre, try to use following settings. Quote:
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:
|
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 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:
Most serious misunderstanding is your IM3 definition for HB2 of ADS. Quote:
waseda-rfic wrote on Jan 6th, 2010, 5:47pm:
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:
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:
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:
(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:
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:
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:
waseda-rfic wrote on Jan 6th, 2010, 5:47pm:
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:
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:
And you already posted Spectre's netlist without S-parameter and device model files. I need followings in Spectre format. Quote:
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:
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. |