Hi.

The attached code is a simple Verilog-A code of amplifier with Noise Figure.

Here Noise Figure is implemented by equivalent input noise using "white_noise()".

We can use equivalent input current or voltage noise.

Attached code is equivalent input noise case.

If we use equivalent current noise,

activate the following two lines,

//I(in_int) <+ white_noise(noise_current*noise_current, "LNA_PB");

//V(in, in_int) <+ 0.0;

and comment out the following,

Â V(in, in_int) <+ white_noise(noise_voltage*noise_voltage, "LNA_PB");

For current noise case, ADS sp-noise analysis gives expected NF correctly, but it doesn't expected NF for voltage noise case.

For voltage noise case, ADS gives NF=0dB regardless of noise_voltage value.

On the other hand, Cadence Spectre gives expected NF for both cases.

Why can't ADS give expected NF for equivalent voltage noise case ?

?????????

I use HPEESOFSIM (*) 2004A.501 Oct 13 2004 (built: 10/13/04 00:16:23).

===================================================

`include "constants.h"

`include "discipline.h"

module LNA_PB(in, out);

inout in,out;

electrical in,out;

parameter real gain = 40 from [0:inf);

parameter real nf = 2 from [0:inf];

parameter real rin = 50 from (0:inf);

parameter real rout = 50 from (0:inf);

real a,rnf;

real noise_current,noise_voltage;

electrical in_int;

analog begin

Â @(initial_step) begin

Â Â a = sqrt(pow(10,gain/10)*rout/rin);

Â Â rnf = pow(10,nf/10);

Â Â noise_current = sqrt(4*(rnf-1)*`P_K*$temperature/rin);

Â Â noise_voltage = sqrt(4*(rnf-1)*`P_K*$temperature*rin);

Â end

Â I(in_int) <+ V(in_int)/rin;

Â I(out) <+ (-2*a*V(in_int) + V(out))/rout;

Â //I(in_int) <+ white_noise(noise_current*noise_current, "LNA_PB");

Â //V(in, in_int) <+ 0.0;

Â V(in, in_int) <+ white_noise(noise_voltage*noise_voltage, "LNA_PB");

end

endmodule

The attached code is a simple Verilog-A code of amplifier with Noise Figure.

Here Noise Figure is implemented by equivalent input noise using "white_noise()".

We can use equivalent input current or voltage noise.

Attached code is equivalent input noise case.

If we use equivalent current noise,

activate the following two lines,

//I(in_int) <+ white_noise(noise_current*noise_current, "LNA_PB");

//V(in, in_int) <+ 0.0;

and comment out the following,

Â V(in, in_int) <+ white_noise(noise_voltage*noise_voltage, "LNA_PB");

For current noise case, ADS sp-noise analysis gives expected NF correctly, but it doesn't expected NF for voltage noise case.

For voltage noise case, ADS gives NF=0dB regardless of noise_voltage value.

On the other hand, Cadence Spectre gives expected NF for both cases.

Why can't ADS give expected NF for equivalent voltage noise case ?

?????????

I use HPEESOFSIM (*) 2004A.501 Oct 13 2004 (built: 10/13/04 00:16:23).

===================================================

`include "constants.h"

`include "discipline.h"

module LNA_PB(in, out);

inout in,out;

electrical in,out;

parameter real gain = 40 from [0:inf);

parameter real nf = 2 from [0:inf];

parameter real rin = 50 from (0:inf);

parameter real rout = 50 from (0:inf);

real a,rnf;

real noise_current,noise_voltage;

electrical in_int;

analog begin

Â @(initial_step) begin

Â Â a = sqrt(pow(10,gain/10)*rout/rin);

Â Â rnf = pow(10,nf/10);

Â Â noise_current = sqrt(4*(rnf-1)*`P_K*$temperature/rin);

Â Â noise_voltage = sqrt(4*(rnf-1)*`P_K*$temperature*rin);

Â end

Â I(in_int) <+ V(in_int)/rin;

Â I(out) <+ (-2*a*V(in_int) + V(out))/rout;

Â //I(in_int) <+ white_noise(noise_current*noise_current, "LNA_PB");

Â //V(in, in_int) <+ 0.0;

Â V(in, in_int) <+ white_noise(noise_voltage*noise_voltage, "LNA_PB");

end

endmodule

The workaround for earlier versions is to add a parallel contribution (that is electrically insignificant) to the noise source.

Â V(inn,in) <+ I(inn,in)*1e99;

Â V(inn,in) <+ white_noise(noise_voltage*noise_voltage, "LNA_PB");