Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Cadence PSS Pnoise Analysis

Status
Not open for further replies.

ashrafsazid

Advanced Member level 4
Joined
Sep 17, 2016
Messages
104
Helped
1
Reputation
2
Reaction score
2
Trophy points
18
Location
Germany
Activity points
935
Hi,

When I run pnoise analysis (with PSS first) from 1 to 100MHz it always stops at ~43.2 KHz. I am new at pnoise analysis. Is there any guidance that could help me?
Thanks.
 

Show me Netlist regarding analysis statements and signal sources.
And show me simulation logfile.
 

Show me Netlist regarding analysis statements and signal sources.

Code:
// Library name: playground_tb
// Cell name: study_p2004_noise_tb
// View name: schematic
I0 (vcm bgAdj\<2\> bgAdj\<1\> bgAdj\<0\> vd bgBufN bgBufP vd clkChp az \
        ir\<3\> ir\<2\> ir\<1\> ir\<0\> vd selBuffCM selBuffGain vcmH vs \
        ctat8 ctat1 vbgN vbgP vd vs vs) p2004_ana_bg
V5 (vcm 0) vsource dc=0.5*vd type=dc
V4 (selBuffCM 0) vsource dc=selbuff*vd type=dc
V3 (selBuffGain 0) vsource dc=selgain2*vd type=dc
V2 (vcmH 0) vsource dc=0.66*vd type=dc
V1 (vs 0) vsource dc=vs type=dc
V0 (vd 0) vsource dc=vd type=dc
I6 (vd ir\<3\>) isource dc=iref0 type=dc
I5 (vd ir\<2\>) isource dc=iref1 type=dc
I4 (vd ir\<1\>) isource dc=iref2 type=dc
I1 (vd ir\<0\>) isource dc=iref3 type=dc
V8 (clkSH 0) vsource dc=0 type=pulse edgetype=halfsine val0=vs \
        val1=chopping*vd period=2/f_chop delay=0 rise=10p fall=10p \
        width=1/f_chop
VAZ (az 0) vsource dc=vs type=pulse val0=vs val1=AZ*vd period=2/f_chop \
        delay=0 rise=10p fall=10p width=0.25/f_chop
VCLK (clkChp 0) vsource dc=0 type=pulse edgetype=halfsine val0=vs \
        val1=chopping*vd period=1/f_chop delay=0 rise=10p fall=10p \
        width=0.5/f_chop
C4 (bgn vs) capacitor c=1n
C3 (vbgN vs) capacitor c=c_load
C2 (vbgP vs) capacitor c=c_load
C0 (bgp vs) capacitor c=1n
I12 (bgAdj\<2\> bgAdj\<1\> bgAdj\<0\>) module_dec2bin vdd=vd \
        value=bgAdjsel tol=1e-10
W1 (bgBufN bgn clkSH vs) relay vt1=2 vt2=3 ropen=1T rclosed=1.0
W0 (bgBufP bgp clkSH vs) relay vt1=2 vt2=3 ropen=1T rclosed=1.0
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=30.0 \
    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 
dcOp dc write="spectre.dc" maxiters=150 maxsteps=10000 annotate=status
dcOpInfo info what=oppoint where=rawfile
pss  pss  fund=976.5625  harms=10  errpreset=conservative  tstab=0
+    annotate=status
pnoise  (  bgBufP  bgBufN  )  pnoise  start=1  stop=100M  log=100
+       pnoisemethod=fullspectrum  maxsideband=6  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
saveOptions options save=allpub
ahdl_include "/home/aalam/cadence_libs/playground_tb/module_dec2bin/veriloga/veriloga.va"

And show me simulation logfile.

Code:
**********************************************************
Periodic Noise Analysis `pnoise': freq = (1 Hz -> 100 MHz)
**********************************************************

Opening the PSF file ../psf/pnoise.pnoise ...
Using the operating-point information generated by PSS analysis `pss'.

Warning from spectre during PNoise analysis `pnoise'.
    WARNING (SPCRTRF-15027): Sweep truncated: 1 Hz -> 43.6516 kHz.
    WARNING (SPCRTRF-15029): The following results might not be accurate due to undersampling of the actual frequencies above 48.8281 kHz:
        Upper side band of 6th harmonic for stimulus frequencies above 42.9687 kHz.
        Set `maxacfreq' on PSS analysis `pss' to 100.006 MHz.
    WARNING (CMI-2751): I0.i_buf.I28.I78.I35.M0: Vds(=5.55213 V) has exceeded vds_max(=5.5 V).
    WARNING (CMI-2755): I0.i_buf.I28.I78.I35.M0: Vbd(=-5.55213 V) has exceeded vbd_max(=5.5 V).
    WARNING (CMI-2752): I0.i_buf.I28.I78.I36.M0: Vgs(=5.55213 V) has exceeded vgs_max(=5.5 V).
    WARNING (CMI-2753): I0.i_buf.I28.I78.I36.M0: Vgb(=5.55213 V) has exceeded vgb_max(=5.5 V).
    WARNING (CMI-2751): I0.i_buf.I28.I78.I35.M0: Vds(=5.62293 V) has exceeded vds_max(=5.5 V).
    WARNING (CMI-2755): I0.i_buf.I28.I78.I35.M0: Vbd(=-5.62293 V) has exceeded vbd_max(=5.5 V).
    WARNING (CMI-2752): I0.i_buf.I28.I78.I36.M0: Vgs(=5.62293 V) has exceeded vgs_max(=5.5 V).
    WARNING (CMI-2753): I0.i_buf.I28.I78.I36.M0: Vgb(=5.62293 V) has exceeded vgb_max(=5.5 V).
    WARNING (CMI-2751): I0.i_buf.I28.I78.I35.M0: Vds(=5.6918 V) has exceeded vds_max(=5.5 V).
    WARNING (CMI-2755): I0.i_buf.I28.I78.I35.M0: Vbd(=-5.6918 V) has exceeded vbd_max(=5.5 V).
    WARNING (CMI-2752): I0.i_buf.I28.I78.I36.M0: Vgs(=5.6918 V) has exceeded vgs_max(=5.5 V).
    WARNING (CMI-2753): I0.i_buf.I28.I78.I36.M0: Vgb(=5.6918 V) has exceeded vgb_max(=5.5 V).
    WARNING (CMI-2751): I0.i_buf.I28.I78.I35.M0: Vds(=5.7094 V) has exceeded vds_max(=5.5 V).
    WARNING (CMI-2755): I0.i_buf.I28.I78.I35.M0: Vbd(=-5.7094 V) has exceeded vbd_max(=5.5 V).
    WARNING (CMI-2752): I0.i_buf.I28.I78.I36.M0: Vgs(=5.7094 V) has exceeded vgs_max(=5.5 V).
    WARNING (CMI-2753): I0.i_buf.I28.I78.I36.M0: Vgb(=5.7094 V) has exceeded vgb_max(=5.5 V).
    WARNING (CMI-2754): I0.i_buf.I28.I78.I36.M0: Vgd(=5.5076 V) has exceeded vgd_max(=5.5 V).
    WARNING (CMI-2754): I0.i_buf.I28.I78.I36.M1: Vgd(=5.5076 V) has exceeded vgd_max(=5.5 V).
    WARNING (CMI-2751): I0.i_buf.I28.I78.I35.M0: Vds(=5.74677 V) has exceeded vds_max(=5.5 V).
        Further occurrences of this warning will be suppressed.
    WARNING (CMI-2755): I0.i_buf.I28.I78.I35.M0: Vbd(=-5.74677 V) has exceeded vbd_max(=5.5 V).
        Further occurrences of this warning will be suppressed.
    WARNING (CMI-2752): I0.i_buf.I28.I78.I36.M0: Vgs(=5.74677 V) has exceeded vgs_max(=5.5 V).
        Further occurrences of this warning will be suppressed.
    WARNING (CMI-2753): I0.i_buf.I28.I78.I36.M0: Vgb(=5.74677 V) has exceeded vgb_max(=5.5 V).
        Further occurrences of this warning will be suppressed.
    WARNING (CMI-2754): I0.i_buf.I28.I78.I36.M0: Vgd(=5.53456 V) has exceeded vgd_max(=5.5 V).
    WARNING (CMI-2754): I0.i_buf.I28.I78.I36.M1: Vgd(=5.53456 V) has exceeded vgd_max(=5.5 V).
    WARNING (CMI-2754): I0.i_buf.I28.I78.I36.M0: Vgd(=5.54648 V) has exceeded vgd_max(=5.5 V).
        Further occurrences of this warning will be suppressed.
    WARNING (CMI-2682): I0.i_buf.I28.I78.I35.M1: The bulk-drain junction forward bias voltage (957.077 mV) exceeds `VjdmFwd' = 951.38 mV.  The results are now incorrect because the junction current model has been linearized
Notice from spectre during PNoise analysis `pnoise'.
    I0.i_buf.I28.I78.I35.M1: The bulk-drain junction returns to normal bias condition
Warning from spectre during PNoise analysis `pnoise'.
    WARNING (CMI-2682): I0.i_buf.I28.I78.I35.M1: The bulk-drain junction forward bias voltage (956.961 mV) exceeds `VjdmFwd' = 951.38 mV.  The results are now incorrect because the junction current model has been linearized
Notice from spectre during PNoise analysis `pnoise'.
    I0.i_buf.I28.I78.I35.M1: The bulk-drain junction returns to normal bias condition

    pnoise: freq = 1.445 Hz    (3.45 %), step = 243.2 mHz    (1.72 %)
    pnoise: freq = 1.738 Hz    (5.17 %), step = 292.4 mHz    (1.72 %)
    pnoise: freq = 2.089 Hz     (6.9 %), step = 351.5 mHz    (1.72 %)
    pnoise: freq = 2.512 Hz    (8.62 %), step = 422.6 mHz    (1.72 %)
    pnoise: freq = 3.02 Hz     (10.3 %), step = 508.1 mHz    (1.72 %)
    pnoise: freq = 3.631 Hz    (12.1 %), step = 610.8 mHz    (1.72 %)
    pnoise: freq = 4.365 Hz    (13.8 %), step = 734.4 mHz    (1.72 %)
    pnoise: freq = 5.248 Hz    (15.5 %), step = 882.9 mHz    (1.72 %)
    pnoise: freq = 6.31 Hz     (17.2 %), step = 1.061 Hz     (1.72 %)
    pnoise: freq = 7.586 Hz      (19 %), step = 1.276 Hz     (1.72 %)
    pnoise: freq = 9.12 Hz     (20.7 %), step = 1.534 Hz     (1.72 %)
    pnoise: freq = 10.96 Hz    (22.4 %), step = 1.845 Hz     (1.72 %)
    pnoise: freq = 13.18 Hz    (24.1 %), step = 2.218 Hz     (1.72 %)
    pnoise: freq = 15.85 Hz    (25.9 %), step = 2.666 Hz     (1.72 %)
    pnoise: freq = 19.05 Hz    (27.6 %), step = 3.206 Hz     (1.72 %)
    pnoise: freq = 22.91 Hz    (29.3 %), step = 3.854 Hz     (1.72 %)
    pnoise: freq = 27.54 Hz      (31 %), step = 4.634 Hz     (1.72 %)
    pnoise: freq = 33.11 Hz    (32.8 %), step = 5.571 Hz     (1.72 %)
    pnoise: freq = 39.81 Hz    (34.5 %), step = 6.698 Hz     (1.72 %)
    pnoise: freq = 47.86 Hz    (36.2 %), step = 8.052 Hz     (1.72 %)
    pnoise: freq = 57.54 Hz    (37.9 %), step = 9.681 Hz     (1.72 %)
    pnoise: freq = 69.18 Hz    (39.7 %), step = 11.64 Hz     (1.72 %)
    pnoise: freq = 83.18 Hz    (41.4 %), step = 13.99 Hz     (1.72 %)
    pnoise: freq = 100 Hz      (43.1 %), step = 16.82 Hz     (1.72 %)
    pnoise: freq = 120.2 Hz    (44.8 %), step = 20.23 Hz     (1.72 %)
    pnoise: freq = 144.5 Hz    (46.6 %), step = 24.32 Hz     (1.72 %)
    pnoise: freq = 173.8 Hz    (48.3 %), step = 29.24 Hz     (1.72 %)
    pnoise: freq = 208.9 Hz      (50 %), step = 35.15 Hz     (1.72 %)
    pnoise: freq = 251.2 Hz    (51.7 %), step = 42.26 Hz     (1.72 %)
    pnoise: freq = 302 Hz      (53.4 %), step = 50.81 Hz     (1.72 %)
    pnoise: freq = 363.1 Hz    (55.2 %), step = 61.08 Hz     (1.72 %)
    pnoise: freq = 436.5 Hz    (56.9 %), step = 73.44 Hz     (1.72 %)
    pnoise: freq = 524.8 Hz    (58.6 %), step = 88.29 Hz     (1.72 %)
    pnoise: freq = 631 Hz      (60.3 %), step = 106.1 Hz     (1.72 %)
    pnoise: freq = 758.6 Hz    (62.1 %), step = 127.6 Hz     (1.72 %)
    pnoise: freq = 912 Hz      (63.8 %), step = 153.4 Hz     (1.72 %)
    pnoise: freq = 1.096 kHz   (65.5 %), step = 184.5 Hz     (1.72 %)
    pnoise: freq = 1.318 kHz   (67.2 %), step = 221.8 Hz     (1.72 %)
    pnoise: freq = 1.585 kHz     (69 %), step = 266.6 Hz     (1.72 %)
    pnoise: freq = 1.905 kHz   (70.7 %), step = 320.6 Hz     (1.72 %)
    pnoise: freq = 2.291 kHz   (72.4 %), step = 385.4 Hz     (1.72 %)
    pnoise: freq = 2.754 kHz   (74.1 %), step = 463.4 Hz     (1.72 %)
    pnoise: freq = 3.311 kHz   (75.9 %), step = 557.1 Hz     (1.72 %)
    pnoise: freq = 3.981 kHz   (77.6 %), step = 669.8 Hz     (1.72 %)
    pnoise: freq = 4.786 kHz   (79.3 %), step = 805.2 Hz     (1.72 %)
    pnoise: freq = 5.754 kHz     (81 %), step = 968.1 Hz     (1.72 %)
    pnoise: freq = 6.918 kHz   (82.8 %), step = 1.164 kHz    (1.72 %)
    pnoise: freq = 8.318 kHz   (84.5 %), step = 1.399 kHz    (1.72 %)
    pnoise: freq = 10 kHz      (86.2 %), step = 1.682 kHz    (1.72 %)
    pnoise: freq = 12.02 kHz   (87.9 %), step = 2.023 kHz    (1.72 %)
    pnoise: freq = 14.45 kHz   (89.7 %), step = 2.432 kHz    (1.72 %)
    pnoise: freq = 17.38 kHz   (91.4 %), step = 2.924 kHz    (1.72 %)
    pnoise: freq = 20.89 kHz   (93.1 %), step = 3.515 kHz    (1.72 %)
    pnoise: freq = 25.12 kHz   (94.8 %), step = 4.226 kHz    (1.72 %)
    pnoise: freq = 30.2 kHz    (96.6 %), step = 5.081 kHz    (1.72 %)
    pnoise: freq = 36.31 kHz   (98.3 %), step = 6.108 kHz    (1.72 %)
    pnoise: freq = 43.65 kHz    (100 %), step = 7.344 kHz    (1.72 %)
Total time required for pnoise analysis `pnoise': CPU = 119.713 s (1m  59.7s), elapsed = 55.6425 s.
Time accumulated: CPU = 176.388 s (2m  56.4s), elapsed = 82.7789 s (1m  22.8s).
Peak resident memory used = 283 Mbytes.


Notice from spectre.
    813 warnings suppressed.

modelParameter: writing model parameter values to rawfile.

Opening the PSF file ../psf/modelParameter.info ...
element: writing instance parameter values to rawfile.

Opening the PSF file ../psf/element.info ...
outputParameter: writing output parameter values to rawfile.

Opening the PSF file ../psf/outputParameter.info ...
designParamVals: writing netlist parameters to rawfile.

Opening the PSFASCII file ../psf/designParamVals.info ...
primitives: writing primitives to rawfile.

Opening the PSFASCII file ../psf/primitives.info.primitives ...
subckts: writing subcircuits to rawfile.

Opening the PSFASCII file ../psf/subckts.info.subckts ...

Aggregate audit (11:08:06 AM, Thur Jul 19, 2018):
Time used: CPU = 177 s (2m  56.7s), elapsed = 83.4 s (1m  23.4s), util. = 212%.
Time spent in licensing: elapsed = 5.52 s, percentage of total = 6.62%.
Peak memory used = 284 Mbytes.
Simulation started at: 11:06:43 AM, Thur Jul 19, 2018, ended at: 11:08:06 AM, Thur Jul 19, 2018, with elapsed time (wall clock): 83.4 s (1m  23.4s).
spectre completes with 0 errors, 120 warnings, and 30 notices.

FYI, I defined a variable maxacfreq as 200M in my ADE L Environment.
 

FYI, I defined a variable maxacfreq as 200M in my ADE L Environment.
No.
Set maxacfreq in PSS setting.

pss pss fund=976.5625 harms=10 errpreset=conservative tstab=0
+ maxacfreq=100.1M
+ annotate=status

Even if you set pnoisemethod=fullspectrum which is effective only for APS mode, you have to increase maxsideband.
See https://www.designers-guide.org/Forum/YaBB.pl?num=1438976388/2#2
pnoise ( bgBufP bgBufN ) pnoise start=1 stop=100M log=100
+ pnoisemethod=fullspectrum maxsideband=6 annotate=status
 
Last edited:

Even if you set pnoisemethod=fullspectrum which is effective only for APS mode, you have to increase maxsideband.
See https://www.designers-guide.org/Forum/YaBB.pl?num=1438976388/2#2

Hi Pancho,

Thanks for your reply. For the fullspectrum method, If I set the maxacfreq as = "maxsideband*beat_freq + f_stop", still do I need to increase the maxsideband parameter? I noticed that the simulator truncates the frequency sweep by a number equal to "maxsideband*beat_freq/2" or less. If that so, why it takes the entry of f_stop from the user?

From the DesignersGuide forum link you provided, they discussed that "maxacfreq" is okay when it is higher than the circuit bandwidth. For my case, I am using chopper clock which is determining the beat frequency, and the chopper clock has to be higher than the circuit BW itself. Therefore, the maxacfreq formula is violated when it is set a bit higher than circuit BW. What's your opinion in this case?

In General,On which basis I can select a f_stop value for the noise/pnoise sweep?

Thanks.
 

There is no beat frequency in PSS Analysis of Cadence Spectre.
It is a fundamental frequency not beat frequency.

See the followings.
https://www.designers-guide.org/Forum/YaBB.pl?num=1232036048/4#4
https://www.designers-guide.org/Forum/YaBB.pl?num=1268969030/7#7

For the fullspectrum method,
If I set the maxacfreq as = "maxsideband*beat_freq + f_stop",
still do I need to increase the maxsideband parameter?
Yes.
However you can not understand maxacfreq and maxsideband at all.

maxsideband has to be almost maxacfreq/fund_freq.

I noticed that the simulator truncates the frequency sweep by a number equal to "maxsideband*beat_freq/2" or less.
If that so, why it takes the entry of f_stop from the user?
Even if f_stop is small, large maxsideband is required due to multiple noise folding.

From the DesignersGuide forum link you provided,
they discussed that "maxacfreq" is okay when it is higher than the circuit bandwidth.
For my case, I am using chopper clock which is determining the beat frequency,
and the chopper clock has to be higher than the circuit BW itself.
You can not understand the circuit BW in PSS analysis.
It is a highest frequency in circuit.
So it is a chopper clock in your case.

Therefore, the maxacfreq formula is violated
when it is set a bit higher than circuit BW.
I can not understand what you want to mean at all.

In General,On which basis I can select a f_stop value for the noise/pnoise sweep?
At most less than 5*Circuit BW.
Here this Circuit BW is not a highest frequency in circuit.
It is a BW which you have interest. For example, input signal bandwidth.

Again don't use term of "beat frequency".
It is "fundamental frequency".


parameters fclk=1k
pss pss fund=fclk harms=0 errpreset=conservative tstab=0
+ maxacfreq=10*fclk
+ annotate=status

pnoise ( bgBufP bgBufN ) pnoise start=1 stop=5*fclk log=100
+ pnoisemethod=fullspectrum maxsideband=10 annotate=status
 
Last edited:

For the fullspectrum method,
If I set the maxacfreq as = "maxsideband*beat_freq + f_stop",
still do I need to increase the maxsideband parameter?


Yes

Could you please clarify me why I still need to increase the maxsideband as it is matches with the formula.

I can not understand what you want to mean at all.

On designers forum link, it is said that the maxacfreq is okay when I set it to a value bit higher than my circuit bandwidth. Say BW 100kHz, so 150 KHz is okay.
But If I have a f_chop = 1MHz (Normally 10 times than BW), the PSS see f_fund of 1M, and with maxsideband of 10 the "maxacfreq= f_stop + maxsideband*f_fund" will be definitely more than 150K which is estimated on the above line.
That is the violation I mean.

Again don't use term of "beat frequency".
It is "fundamental frequency".

I had the same confusion with beat and fundamental frequency as one is the difference and the other is the divisor. However, used it for specific simulator term.
 
Last edited:

Could you please clarify me why I still need to increase the maxsideband as it is matches with the formula.
What is formula ?

Again you can not understand maxacfreq and maxsideband at all.

maxsideband often has to be almost maxacfreq/fund_freq even for pnoisemethod=fullspectrum.

On designers forum link, it is said that the maxacfreq is okay when I set it to a value bit higher than my circuit bandwidth. Say BW 100kHz, so 150 KHz is okay.
But If I have a f_chop = 1MHz (Normally 10 times than BW),
the PSS see f_fund of 1M, and with maxsideband of 10 the "maxacfreq= f_stop + maxsideband*f_fund" will be definitely more than 150K which is estimated on the above line.
That is the violation I mean.

Again you can not understand maxacfreq and maxsideband at all.

"fund=f_chop harms=10" is equivalent to "maxacfreq=10*f_chop".
I prefer "fund=f_chop harms=0 maxacfreq=10*f_chop"
f_stop=100kHz or 150kHz << maxacfreq
maxsideband=maxacfreq/f_chop
 
Last edited:
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top