• 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. How to control "isnoisy" property for analogLib's "switch...

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 125
  • Views 5672
  • 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

How to control "isnoisy" property for analogLib's "switch" component?

dontpanic
dontpanic over 5 years ago

According to the documentation (spectre -h relay), this component supports the "isnoisy" parameter. However, it cannot be set from the component's properties (see screenshot below).

As you can see, I tried manually adding it as a user string property, but it is being ignored by the netlister (Spectre).

How can I control this flag?

Thanks and regards, Jorge.

ICADVM 18.1.500.6 / Spectre 18.1.0.421.isr9

  • Cancel
Parents
  • dontpanic
    dontpanic over 5 years ago

    P.S. Using "Simulation->Options->Analog->Noise contribution" to filter noise contributions seems to work, but it gets messy for a big number of instances. Thus I'd rather control the individual contributions by setting the isnoisy properties.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to dontpanic

    Hi Jorge,

    Follow these steps:

    1. Copy the cell switch from analogLib to your own library (using Right Mouse Button -> Copy in the library manager over the cell name)
    2. In the CIW, use Tools->CDF->Edit
    3. Pick yourLib and switch as the cell, and choose "Base" for the CDF type
    4. Add a new row with parameter name "isnoisy", Type "cyclic", and prompt "Generate noise". In the fields at the bottom, set the choices to "yes no" (without quotes) and the default to "yes".
    5. Use the arrow icons to move the isnoisy to the place you want in the order of parameters (e.g. at the bottom).
    6. Pick the Simulation Information  tab.
    7. Change the simulator cyclic to "spectre"
    8. Add isnoisy into the instParameters list.
    9. OK the form
    10. Contact customer support to ask for the analogLib switch component to be enhanced to have this field as standard.

    Now you can instantiate your own switch component which has an isnoisy parameter.

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • dontpanic
    dontpanic over 5 years ago in reply to Andrew Beckett

    Thanks so much for the detailed reply, Andrew. I followed the procedure and behaviorally, it works (the relay component is netlisted with the appropriate isnoisy property value); however, it seems I accidentally found a bug in the noise behavior of the relay component (I checked the below results with the analogLib switch component, and the behavior is the same, so I believe it's a bug).

    In a nutshell, the relay component fails to update the generated noise as its control voltage changes. In the example below I simulated voltage of a DUT (transient noise simulation) where the control voltage changes halfway the simulation (the "DUT_switched"), and compared with that of "static" DUTs where the control voltage is kept constant throughout the simulation ("DUT_static_Ropen" and "DUT_static_Rclosed"). For reference and further comparison, I also included the noise of two analogLib resistors with the same "Ropen" and "Rclosed" resistances (1kOhm & 10Ohm, respectively). I actually did two simulations, where I just changed the polarity of the clock signal ("CLK") controlling the switched relay.

    As can be seen from the waveforms, the noise of the switched relay fails to update properly when the control voltage changes.

    It seems this requires further debugging (I could fill a case, but I'll take some time as currently I'm overloaded).

    Thanks and regards, Jorge.

    (P.S. BTW, the legend entries in the waveform viewer show purple boxes for blue traces... I noticed this when switching to ICADVM 18.1.500.6).

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dontpanic
    dontpanic over 5 years ago in reply to dontpanic

    P.S.2: This is the netlist I am using:

    // Generated for: spectre
    // Generated on: Dec  6 18:18:17 2019
    simulator lang=spectre
    global 0
    parameters CLKGEN__Freq=100M CLKGEN__Trisefall=20p \
        SIM__TRAN__Noise_Fmax=1T SW__Rclosed=10 SW__Ropen=1k VDD=900m VSS=0 \
        CLKGEN__Tperiod=1/CLKGEN__Freq SW__vClosed=0.6*(VDD+VSS) \
        SW__vOpen=0.4*(VDD+VSS) CLKGEN__Tdelay=0.5*CLKGEN__Tperiod \
        CLKGEN__Tguard=0.05*CLKGEN__Tperiod*0 \
        CLKGEN__Twidth=0.5*CLKGEN__Tperiod-CLKGEN__Trisefall \
        SIM__TRAN__Tstop=1.0*CLKGEN__Tperiod \
        SIM__TRAN__Noise_Fmin=1/SIM__TRAN__Tstop

    // Library name: jlagos__models__analogLib
    // Cell name: jlagos__switch__testbench__cds_testcase
    // View name: schematic__analogLib_switch
    PHI1__vpulse (CLK 0) vsource type=pulse val0=0 val1=VDD \
            period=CLKGEN__Tperiod delay=CLKGEN__Tdelay rise=CLKGEN__Trisefall \
            fall=CLKGEN__Trisefall width=CLKGEN__Twidth-CLKGEN__Trisefall
    W2 (0 DUT_static_Rclosed vdd 0) relay vt1=SW__vOpen vt2=SW__vClosed \
            ropen=SW__Ropen rclosed=SW__Rclosed
    W1 (0 DUT_static_Ropen 0 0) relay vt1=SW__vOpen vt2=SW__vClosed \
            ropen=SW__Ropen rclosed=SW__Rclosed
    DUT (0 DUT_switched CLK 0) relay vt1=SW__vOpen vt2=SW__vClosed \
            ropen=SW__Ropen rclosed=SW__Rclosed
    V0 (vdd 0) vsource dc=VDD type=dc
    R2 (0 REF_Ropen) resistor r=SW__Ropen isnoisy=yes
    R3 (0 REF_Rclosed) resistor r=SW__Rclosed isnoisy=yes
    simulatorOptions options psfversion="1.1.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 noiseon_inst=[ DUT W1 \
        W2 R3 R2]
    tran tran stop=SIM__TRAN__Tstop errpreset=conservative \
        noisefmax=SIM__TRAN__Noise_Fmax noisefmin=SIM__TRAN__Noise_Fmin \
        noiseseed=1151 maxstep=1p 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 CLK DUT_switched DUT_static_Ropen DUT_static_Rclosed REF_Ropen REF_Rclosed
    saveOptions options save=allpub saveahdlvars=all

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to dontpanic

    Jorge,

    I think it would have taken you the same amount of effort to log this netlist to support.cadence.com as it did to post it here, and then one of my colleagues could have filed the CCR and have it associated with you as a customer (which would have been better for the likelihood of it being fixed sooner), rather than it being dependent upon me to take care of it.

    Anyway, because it bothered me, I found the time today and filed two CCRs:

    2196116 Legend color is purple for blue trace
    2196115 relay produces incorrect noise after switching with transient noise

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dontpanic
    dontpanic over 5 years ago in reply to Andrew Beckett

    Thanks so much, Andrew!. Please note the main reason why I sometimes prefer not to file the CCRs myself is because it can potentially take more time to properly follow-up on the case (provide additional info, test cases, further experimenting, etc.); but I'll try to do it myself as time allows! Thanks again for your help!.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to dontpanic

    Hi Jorge,

    A little update on this old thread. Both CCRs are now fixed:

    2196116 Legend color is purple for blue trace (fixed in IC6.1.8 ISR13 - available a few months ago)
    2196115 relay produces incorrect noise after switching with transient noise (fixed in SPECTRE20.1 ISR4 - scheduled to be released around 5th March 2021)

    I tested the first a while ago, and the second I just tested. It now behaves properly in both transient noise and pnoise analyses.

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to dontpanic

    Hi Jorge,

    A little update on this old thread. Both CCRs are now fixed:

    2196116 Legend color is purple for blue trace (fixed in IC6.1.8 ISR13 - available a few months ago)
    2196115 relay produces incorrect noise after switching with transient noise (fixed in SPECTRE20.1 ISR4 - scheduled to be released around 5th March 2021)

    I tested the first a while ago, and the second I just tested. It now behaves properly in both transient noise and pnoise analyses.

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Children
  • dontpanic
    dontpanic over 4 years ago in reply to Andrew Beckett

    That's good news, Andrew! Thanks for the update and for your following up on this.

    Regards,

    Jorge.

    • 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