The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Modeling >> Behavioral Models >> How to perform current division Cadence Virtuoso
https://designers-guide.org/forum/YaBB.pl?num=1508470068

Message started by lummiuster on Oct 19th, 2017, 8:27pm

Title: How to perform current division Cadence Virtuoso
Post by lummiuster on Oct 19th, 2017, 8:27pm

Hi,

I need to use dependent sources in my circuit. I am only aware of PCCCS and PVCCS.
What I need to do is have a current that has the following current equation:
Current =
(2.753*y^2*log(805444*x^3 + 26223*x^2 + 115*x + 1.0e-60))/(0.95930*y^2 + 1.0)/y

x is the current that flows through a DC voltage source.
y is the voltage at a node of the circuit.

How can I implement such equation?
My issue with CCCS is that we can't divide by the controlling input. i.e, we cannot do current= a/x + b/x^2...
Second issue is that I don't know any instance that lets me take as input a current and a voltage.
Third issue is to use log in my equation.

Anybody knows how I can implement such thing?

Thanks a million

Title: Re: How to perform current division Cadence Virtuoso
Post by Geoffrey_Coram on Oct 23rd, 2017, 7:22am

There is a "bsource" element that allows arbitrary expressions, which could probably handle this.

I'd be concerned about the expression you have, though. Eg, on the first iteration of the dc solution, many simulators start with a v-vector that is all zeros. This would probably mean that y=0 on the very first iteration, and the resulting division by zero would prevent the simulator from knowing how to change that voltage. Newton's method could also produce a negative current (x) during one iteration.

Title: Re: How to perform current division Cadence Virtuoso
Post by lummiuster on Oct 24th, 2017, 9:35pm

Hi,

Thanks a lot for your answer, this is bringing me hope. However I am having some issues with it. First I can't find it in my library. Second, I tried to follow some steps I found online on how to create a symbol but I get completely lost.

I'm a beginner. All I know is Virtuoso/Cadence, create schematic and create a symbol out of a schematic.

Can you please give me more detail on how to create the bsource symbol?
You mentioned that it might lead to some error with DC simulation. I don't think it is an issue with me as I only need transient simulation.

Thanks in advance!

Title: Re: How to perform current division Cadence Virtuoso
Post by Geoffrey_Coram on Oct 25th, 2017, 7:50am

But any transient simulation starts with a computation of the time-0 solution, which is a dc solution.

Title: Re: How to perform current division Cadence Virtuoso
Post by Geoffrey_Coram on Oct 25th, 2017, 7:54am

You shouldn't have to create the bsource symbol; it should be in a library.
Do you have an analogLib library? Where do you get the symbols for resistors, capacitors, voltage sources, etc. when you're making a schematic? Don't you see bsource in that list?

Title: Re: How to perform current division Cadence Virtuoso
Post by lummiuster on Oct 25th, 2017, 8:16am

Hi,

Yes I have analogLib. However bsource is not in it.
Do you think the first iteration could completely ruin the whole transient simulation?

Title: Re: How to perform current division Cadence Virtuoso
Post by Geoffrey_Coram on Oct 27th, 2017, 6:24am

It could ruin the sim - if the simulator doesn't know where to start, how can it proceed?

Could you use 1/(abs(y) + 1e-30) instead of 1/y?

Title: Re: How to perform current division Cadence Virtuoso
Post by lummiuster on Oct 27th, 2017, 12:32pm

I don't think I can use abs(y) instead of y. because I don't know if the voltage across the resistor (y) will go negative.

Do you know how I can add bsource to my library?

Thanks

Title: Re: How to perform current division Cadence Virtuoso
Post by Geoffrey_Coram on Oct 31st, 2017, 10:23am

If the voltage y can go negative, then it might also be zero, in which case your expression involving 1/y blows up. So, I think you need to think about what should happen in that case, and whether your equation is correct.

I don't know how to add bsource. Are you using a recent version of the software? (If you have a really old version, maybe bsource is not supported.)

Title: Re: How to perform current division Cadence Virtuoso
Post by Andrew Beckett on Dec 21st, 2017, 7:53am

The bsource component was added in analogLib in IC617 ISR6 (so relatively recently - within the last 2 years). If you're using an older version, there's this Cadence Online Support article which tells you how to create your own.

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