• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. Related to "How to specify phase noise as an instance parameter...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 125
  • Views 1379
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Related to "How to specify phase noise as an instance parameter in spectre sources (e.g. vsource, isource, port)"

mzn ehv
mzn ehv over 1 year ago

Hello,

I am trying to specify the phase noise as an instance parameter of spectre sources such as port and vsource as mentioned in the article  https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000tiraEAA&pageName=ArticleContent

When I create a test bench containing one port without specification of phase noise and other port with specification of phase noise, I do not see any difference in their time domain waveforms. So, it looks like it’s not incorporating the phase noise as required.

I am using cadence-icadvm-/20.10.340 and spectre 23.10.538.isr10. Attached is the netlist of the testbench.

// Generated for: spectre
// Design library name: AAA_AA
// Design cell name: pn_modelling_tb
// Design view name: schematic
simulator lang=spectre
global 0
parameters fin=20M tstop=1000/fin

// Cell name: pn_modelling_tb
// View name: schematic
R0 (clk 0) resistor r=50
R14 (ideal_clk 0) resistor r=50
PORT1 (clk 0) port r=50 type=sine freq=fin ampl=1 isnoisy=yes \
noisetype=ssbphasenoise noisevec=[ 1K -100 10K -100 100K -100 1M \
-100 10M -100 ]
PORT0 (ideal_clk 0) port r=50 type=sine freq=fin ampl=1
simulatorOptions options psfversion="1.4.0" 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
tran tran stop=tstop write="spectre.ic" writefinal="spectre.fc" \
annotate=status maxiters=5
finalTimeOP info what=oppoint where=rawfile
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 ideal_clk clk
saveOptions options save=allpub

Is there anything which I am missing here?

Thanks

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago

    You're not running transient noise (or a pnoise/hbnoise analysis), so you won't see any noise generated by this source.

    With noisefmax=fin*10 (say) on the transient analysis, the noise is generated - although you're unlikely to see it as it's small - in reality you'd have to do an DFT of the results, in which case you'd want to set strobeperiod and ensure that the DFT sampling interval coincides with the strobeperiod.

    Of course, if you do this, you'll also get the thermal noise from the resistor and the 50 ohms in the port - and any other devices in the real circuit. Note that the isnoisy=yes on the port is redundant because noise is enabled on sources by default, just doesn't appear in a non-noise-related analysis.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • mzn ehv
    mzn ehv over 1 year ago in reply to Andrew Beckett

    Thank you Andrew for your response.
    When I enable transient noise, I indeed see the difference between noisy and non noisy source. 
    To remove the impact of 50 ohms in the port, I changed the source to vsource keeping all other parameters same. With -100 dBc/Hz phase noise floor and fin = 20 MHz, I expect an rms jitter of 355 ps, but evaluation using calculator function 'rms_jitter' (integrated from 1 to 10M) yields number in the ballpark of 250 ps (with noisefmax swept from fin*5 to fin*20 and 1k-10k fin cycles). Why these two numbers are differing?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • mzn ehv
    mzn ehv over 1 year ago

    Hi,

    I am trying to specify the phase noise as an instance parameter of spectre component vsource. I can verify the applied phase noise profile in pss-pnoise is correct but when I enable transient noise, I do not see expected integrated rms jitter. With -100 dBc/Hz phase noise floor and fin = 20 MHz, I expect integrated rms jitter of 355 ps, but evaluation using calculator function 'rms_jitter' (integrated from 1 to 10M) yields 246 ps. Why are these two numbers differing? I am using cadence-icadvm-/20.10.340 and spectre 23.10.538.isr10. Attached is the netlist of the testbench.

    // Point Netlist Generated on: Aug 14 17:12:45 2024

    // Generated for: spectre

    // Design Netlist Generated on: Aug 14 17:12:44 2024

    // Design library name: AAA_AA

    // Design cell name: pn_modelling_tb

    // Design view name: schematic

    simulator lang=spectre

    global 0

    parameters fin=20M k=10k noisefmax=fin*100 tstop=k/fin

    // Library name: AAA_AA

    // Cell name: pn_modelling_tb

    // View name: schematic

    R0 (clk 0) resistor r=50

    R14 (ideal_clk 0) resistor r=50

    V1 (clk 0) vsource type=sine val0=-500m val1=500.0m period=1/fin rise=100f \

            fall=100f width=0.5*(1/fin) freq=fin ampl=1 sinedc=0 \

            noisetype=ssbphasenoise noisevec=[ 1K -100 10K -100 100K -100 1M \

            -100 10M -100 20M -100 ]

    V0 (ideal_clk 0) vsource type=sine freq=fin ampl=1 sinedc=0

    simulatorOptions options psfversion="1.4.0" 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

    tran tran stop=tstop noisefmax=noisefmax noiseseed=1 write="spectre.ic" \

        writefinal="spectre.fc" annotate=status maxiters=5

    finalTimeOP info what=oppoint where=rawfile

    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 ideal_clk clk

    saveOptions options save=allpub

    Thank you!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to mzn ehv

    Please don't ask the same question more than once (see Guidelines for the Custom IC Design Forum) otherwise this confuses where the answer should be given (if at all).

    Also, if this is urgent, you should contact customer support (submit a support case after logging in). I'd been hoping to reply but haven't had a chance to investigate due to the day job getting in the way (answering here is not part of my role at Cadence - we do so in our spare time, which has been lacking this week!)

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information