The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> Circuit Simulators >> Passing Device operating point during transient analysis
https://designers-guide.org/forum/YaBB.pl?num=1526968137

Message started by ElShater on May 21st, 2018, 10:48pm

Title: Passing Device operating point during transient analysis
Post by ElShater on May 21st, 2018, 10:48pm

Dear All,

I was attempting the following in Cadence Environment. I need to create a device, lets say, a resistor, whose value is function of ron (1/gds) of a MOSFET, in a transient simulation.

There are two parts to this.
1) A resistor who is function of a changing input.
Solution that works : using bsource
2) Getting the MOSFET gds to be a dynamic parameter passed to the resistor, that is where I haven't been successful.

So, all the posts I've found for days now, ask "How to plot /view/ print a device operating point in transient?" and I have successfully been able to do so using the save function in cadence. So in the results browser, I can see Mxx:gds as a signal which I can plot versus time in a transient simulation.

The bsource function mentions inputs as "netlist parameters, current simulation time, node voltages and branch currents". If only that included "device operating points", I wouldn't have been asking this question :)

Any one has a smart idea ? Thanks in advance.

Regards,
Ahmed

P.S.: So far, I've actually did a brute force. Have two devices with slightly different vds, and calculating the rds as DeltaVDS/DeltaID.

Works great till the point I have capacitance currents in transient messing up DeltaID through.

Title: Re: Passing Device operating point during transient analysis
Post by Ken Kundert on May 21st, 2018, 11:27pm

It is really better to use Verilog-A for these kind of things.

You can save plot the local variables.

-Ken

Title: Re: Passing Device operating point during transient analysis
Post by ElShater on May 21st, 2018, 11:32pm

Hello Ken,

Thank you for the quick reply. Can you please elaborate. So can Verilog-A extract the operating point of my BSIM MOSFET and make it available in transient simulation?

Regards,
Ahmed

Title: Re: Passing Device operating point during transient analysis
Post by ElShater on May 22nd, 2018, 12:34am


Ken Kundert wrote on May 21st, 2018, 11:27pm:
It is really better to use Verilog-A for these kind of things.

You can save plot the local variables.

-Ken


So, I took your hint and looked at VerilogA Manual. The section that looks promising to me is the " Dynamic simulation probe function ".
The $simprobe function. I will dive into this but If you think that's not the way to go, I'd appreciate a heads up!

Title: Re: Passing Device operating point during transient analysis
Post by ElShater on May 22nd, 2018, 1:03am


ElShater wrote on May 22nd, 2018, 12:34am:

Ken Kundert wrote on May 21st, 2018, 11:27pm:
It is really better to use Verilog-A for these kind of things.

You can save plot the local variables.

-Ken


So, I took your hint and looked at VerilogA Manual. The section that looks promising to me is the " Dynamic simulation probe function ".
The $simprobe function. I will dive into this but If you think that's not the way to go, I'd appreciate a heads up!



Thank you, Thank you, Thank you !!!!

Okay guys,
probe= $simprobe(Mxx,gds) in a verilogA model can parse device operating points from schematic into a real variable in real time in transient. And then you can basically do what you please with the real variable. In my case, I created an electrical output monout and sent the real output. From there, using the bsource r = 1/V(monout).

Thank you again Ken!

Title: Re: Passing Device operating point during transient analysis
Post by Ken Kundert on May 23rd, 2018, 10:38am

That was not actually my point. I was recommending that you Verilog-A to write your model rather than using a bsource. Then you can use the results browser to plot the local variables in the Verilog-A model. I was assuming that you would make gds a local variable in the Verilog-A model and plot that.

-Ken

Title: Re: Passing Device operating point during transient analysis
Post by ElShater on May 23rd, 2018, 12:03pm


Ken Kundert wrote on May 23rd, 2018, 10:38am:
That was not actually my point. I was recommending that you Verilog-A to write your model rather than using a bsource. Then you can use the results browser to plot the local variables in the Verilog-A model. I was assuming that you would make gds a local variable in the Verilog-A model and plot that.

-Ken


I understand your suggestion. But my issue was not with plotting since I could do that with the save function. My issue was letting gds available during transient to influence a dependant resistor. To be more specific, I need to model in^2=4kTgds since current models I am using is missing that for some reason. Once I got into VerilogA mode, I found I could just directly :
probe = $simprobe(Mxx,gds);
I(d,s) <+ white_noise(4*'P_K*$temperature*probe);

It works like a charm in dc, ac, transient. In pss, for some reason, it didnt work until I passed it out to a voltage and back in. Seems like forcing the analog side to generate gds as a signal.

probe = $simprobe(Mxx,gds);
V(gdsmon) = transition(probe,0,0);
I(d,s) <+ white_noise(4*'P_K*$temperature*V(gdsmon));

Now it works in pss when I add it to a small circuit. Tested S/H kT/C noise. I'm struggling with convergence now with a larger circuit. Circuit converges well w/o the verilog noise model. I am tempted to go back to bsource a resistor followed by a current controlled current source to generate the noise and see if it converges.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.