• 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. Simulating kT/C noise in discrete-time delta-sigma

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 125
  • Views 3055
  • 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

Simulating kT/C noise in discrete-time delta-sigma

Nicolas Callens
Nicolas Callens over 6 years ago

Hi, 

I am trying to get the transient noise of my switched-capacitor delta-sigma in VerilogAMS. The building blocks are all ideal except the switches, which are modelled as follows:


`timescale 1ns / 1ps
`include "disciplines.vams"
`include "constants.vams"

module noisySwitch(in, n, s);
    parameter real ron = 10.0 from (0:inf);    // on resistance (ohms)
    parameter real roff = 100.0M from (ron:inf);// off resistance (ohms)
    parameter real td = 0.0;            // delay time (s)
    parameter real tr = 20n;            // rise time (on -> off) (s)
    parameter real tf = 20n;            // fall time (off -> on) (s)
    input s;
    logic s;
    electrical in, p, n;
    real reff;

    analog begin
    @(posedge s) reff = ron;
    @(negedge s) reff = roff;
    @(initial_step) reff = (s ? ron : roff);
    V(in,p) <+ white_noise(4*`P_K*$temperature*reff,"thermal");
    I(p, n) <+ V(p, n) / transition(reff, td, tr, tf);
    end
endmodule

However, I am getting zero transient noise while simulating in transient mode. I have the feeling that the white_noise can only be seen in small-signal analysis and not in transient simulations? If so, how can I get the transient noise from these switches?

Thanks

Kind regards, 

Nicolas

PS: I actually need transient noise for my own purposes and not pnoise results...

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    Nicolas,

    A few things:

    1. This appears to be an incomplete VerilogAMS model (not VerilogA). It doesn't define p, for example. Was also missing the include of constants.vams too.
    2. I'm assuming you're therefore running AMS Designer
    3. Did you specify noise fmax on the transient noise section of the transient form with AMS as the simulator? Without this, no noise will be produced

    I'm not entirely certain your model makes sense, but that's just because I don't know precisely what it's attempting to model, and it's incomplete. However, simply declaring p as electrical and then simulating in AMS Designer and setting the noise fmax and looking at the voltage on both in and n pins of the sw component shows noise.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Nicolas Callens
    Nicolas Callens over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    My apologies, I have shown you the wrong VerilogAMS code. I have edited my code (see above). In the meantime, I have tried it with a network which consists of a switch (VerilogAMS model) and a capacitor in series (see attachment), but still it does not work.

    To answer your remaining questions:

    2. Yes, I am using AMS Designer.

    3. Yes, I have given in an fmax; actually I have tried with several fmax (e.g. 1G and 100G) just to test if I am getting transient noise in the simulation. I have also turned on the noise contribution and selected instance noisy-switch.

    Kind regards,

    Nicolas 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to Nicolas Callens

    You don't need to explicitly tell it to turn on noise contributions - in fact that wouldn't have made any difference unless your model had a special parameter isnoisy which allowed the noise to be turned on or off.

    I used your model (renamed to "sw") and in my simple testbench:

    Which corresponds to this netlist:

    sw I0 (.in( o1 ), .n( o2 ), .s( net2 ));
    resistor #(.r(1000), .isnoisy("no")) R1 (o2, cds_globals.\gnd! );
    resistor #(.r(1000), .isnoisy("no")) R0 (o1, cds_globals.\gnd! );
    vsource #(.type("pulse"), .val0(0), .val1(1.8), .period(2e-07), .rise(2e-08), .fall(2e-08), .width(1e-07)) V0 (net2, cds_globals.\gnd! );

    (so you can see all the parameters), I get:

    So clearly I'm getting noise.

    I didn't try to check with the same testbench as you as I don't know the parameters - but clearly noise is being produced.

    So it either means your circuit is such that the noise is insignificant, or that you're using a version of AMS Designer where this wasn't supported, maybe. What INCISIVE or XCELIUM version are you using? (The AMS simulation log - probably irun.log or xrun.log - will tell you this).

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Nicolas Callens
    Nicolas Callens over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks for trying. The version of INCISIVE that I am using now is 15.20.

    I have tried with your circuit and I am getting the noise in the transient simulation. Step-by-step I have replaced the instances towards the circuit I have. Though, after adding the capacitor it did not work out. Then I realised that 1pF for the C would be to large to see the noise... Indeed,  I changed the value to 1fF and I get a huge amount of noise like It should be. 

    Kind regards,

    Nicolas

    • 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