Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Can I use Random variables in Cadence ADE?

Status
Not open for further replies.

terryssw

Full Member level 3
Full Member level 3
Joined
Apr 18, 2004
Messages
176
Helped
20
Reputation
40
Reaction score
6
Trophy points
1,298
Activity points
2,312
temperature variable in cadence

As titled. For example, I want to simulate the performance of an ideal resistor with the resistance follow the gaussian distribution (I want to just self control the standard deviation of R, not by the process parameters). So I just assign an aritbrary variable R0 in the schematic, and can I set this R0 as random in ADE (Analog Design Environment) interface? As I know, I can only enter a deterministic value in ADE. Thanks for all of your helps in advance.
 

temperature random variable spectre

Shouldn't you be able to ie create file with random values and then source those into ADE ?
 

cadence ade temperature variable

You can use the monte-carlo option but it works only on the spice netlist preprocessing within Spectre. So within ADE you could not trigger different monte-carlo runs. I think in ADE there is no built random uniform/gaussian source. But you should be able to built them with Skill.
 

cadence random variable

Probably I don't need to be run in Monte Carlo Analysis (I also hope to do that). Is there is some method to set random variation on R0, then use parameteric analysis to run it many times?

Added after 1 minutes:

Teddy said:
Shouldn't you be able to ie create file with random values and then source those into ADE ?

Hi Teddy, Could I do that? Could you explain in more details?
 

cadence random voltage

Dam... you made me thinking.

I do not know if you can do that.
Correct way would be to use MonteCarlo - if you can. You would need process variation model file for that.
Also you can try to set R as a variable and then use Optimization tool - there you can set min, max, start values etc.
Optimization is in my opinion the simplest method. You can specify the target (ie current through resistor0 and run it. It is easy but MonteCarlo is better

Another way would be to create your own model which would do that.
In the Edit-Properties form:
R1: Resistance = res(1k) Ohms
R2: Resistance = res(2k) Ohms
Create ~/models/myFunction.s file, with contents:
FUNCTION res(r)=r*(1+(temperature-25)*.01)
set temperature=125
In the simulation window:
Setup Environment Init File = ~/models/myFunction (leave off .s) - I think it works for cds 4.3 !!!!
The simulator result should show: R1 = 2k and R2 = 4k

This should work with let say analog lib resistor.

Good luck
 

Hi Teddy:
I also really want to use Monte Carlo Analysis (Actually any analysis can do the purpose is ok), but it only affect the random variables specified by the process. I want to have a random variables that is specified by the user. For example, I want to statistical simulate the effect of opamp offset on my system performance. If I can use this method, I can put a simple voltage source in the virtual ground of the "ideal" opamp, and set the random variable in the voltage source, that's all. This is very simple and save much more design and computation time.

However now my only approaches is to rather to build a whole opamp (with many of transistors), then do Monte-Carlo simulation to simulate mismatches by transistors (that is specified by the process only, not yourself). Also by this ways I also don't know how many sigma(offset) is enough for my applications. Furhtermore, Many design and simulation time is envoloved which is quite expensive.


Teddy said:
Another way would be to create your own model which would do that.
In the Edit-Properties form:
R1: Resistance = res(1k) Ohms
R2: Resistance = res(2k) Ohms
Create ~/models/myFunction.s file, with contents:
FUNCTION res(r)=r*(1+(temperature-25)*.01)
set temperature=125
In the simulation window:
Setup Environment Init File = ~/models/myFunction (leave off .s) - I think it works for cds 4.3 !!!!
The simulator result should show: R1 = 2k and R2 = 4k

This should work with let say analog lib resistor.

Good luck

But do R1 and R2 variate randomly?
 

as a function you can put anything you want - (I am not sure but I think it is in section 3 of the ase manual) see there.

In the simulator language there are some random commands like Gauss (again not sure - look into a manual)
but I believe you have to run MC for this one.
In other words - you can specify the resistor (or any other device) model function as you want to.

Another way could be to use VerilogA - if there is a rnd function. But I am not sure if you can run it without re-netlisting....
 

    terryssw

    Points: 2
    Helpful Answer Positive Rating
Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top