The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Apr 28th, 2024, 5:44pm
Pages: 1 2 3 
Send Topic Print
which is accurate for IM3 simulation? ADS or Spectre? (Read 594 times)
waseda-rfic
Community Member
***
Offline



Posts: 46

Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #15 - Jan 08th, 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
Back to top
 
 
View Profile   IP Logged
waseda-rfic
Community Member
***
Offline



Posts: 46

Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #16 - 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
Back to top
 
 
View Profile   IP Logged
waseda-rfic
Community Member
***
Offline



Posts: 46

Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #17 - 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.

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



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #18 - 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
Back to top
 
« Last Edit: Jan 9th, 2010, 6:19am by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #19 - 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
}
Back to top
 
« Last Edit: Jan 9th, 2010, 6:21am by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #20 - 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.
Back to top
 
« Last Edit: Jan 9th, 2010, 12:11pm by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #21 - 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

Back to top
 
 
View Profile WWW Top+Secret Top+Secret   IP Logged
waseda-rfic
Community Member
***
Offline



Posts: 46

Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #22 - 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.
Back to top
 
 
View Profile   IP Logged
waseda-rfic
Community Member
***
Offline



Posts: 46

Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #23 - 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!
Back to top
 
 
View Profile   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #24 - 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.
Back to top
 
« Last Edit: Jan 10th, 2010, 2:07am by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #25 - 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).
Back to top
 
« Last Edit: Jan 10th, 2010, 12:37am by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
waseda-rfic
Community Member
***
Offline



Posts: 46

Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #26 - 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!
Back to top
 
 
View Profile   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #27 - 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+...

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

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
Back to top
« Last Edit: Jan 11th, 2010, 7:30am by pancho_hideboo »  

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



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #28 - 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.
Back to top
 
 
View Profile WWW Top+Secret Top+Secret   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: which is accurate for IM3 simulation? ADS or Spectre?
Reply #29 - 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.
Back to top
 
« Last Edit: Jan 12th, 2010, 2:17am by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
Pages: 1 2 3 
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.