The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Design Languages >> Verilog-AMS >> Verilog-A model Monte Carlo simulation with spectre
https://designers-guide.org/forum/YaBB.pl?num=1357726478

Message started by yueguoguo on Jan 9th, 2013, 2:14am

Title: Verilog-A model Monte Carlo simulation with spectre
Post by yueguoguo on Jan 9th, 2013, 2:14am

Hi all,
I am simulating my verilog-a model using Cadence spectre.
To study the process variations of the device, I need to vary the model parameters during each of my simulation analysis to get the statistics.
Can any of you provide me with help on how to do this?
Thanks in advance.

Title: Re: Verilog-A model Monte Carlo simulation with spectre
Post by Geoffrey_Coram on Jan 9th, 2013, 6:49am

You should read the documentation on Monte-Carlo (spectre -help montecarlo), set up a netlist, and post that netlist.  Then someone might help you debug the netlist and Monte-Carlo setup.

Title: Re: Verilog-A model Monte Carlo simulation with spectre
Post by yueguoguo on Jan 9th, 2013, 6:51pm

Hi,
Thanks for your suggestion.
I am new to behavioral modelling using verilog-a, therefore my problem is not how to debug it but how to do it.  :)
I have read the help doc provided by spectre but found no clues about how to access parameters in a verilog-a model and vary them in the simulations.
For example,
I have a verilog-a module A in which there are parameter P.
I instantiate it in my netlist as a component and simulated with the circuit.
Can I directly change the parameter P in my simulations? I mean, not change the verilog-a code, but change it as a variable in spectre.

Thanks.

Title: Re: Verilog-A model Monte Carlo simulation with spectre
Post by Geoffrey_Coram on Jan 11th, 2013, 7:54am

What I meant by "debug your Monte-Carlo setup" was that you would create a netlist, using your best understanding of the documentation, and we would help you figure out if you misunderstood.

From the documentation, you should be able to set up a netlist with some statistics blocks, use the parameters in those stat blocks to set the parameter P of your Verilog-A model, and run the simulation.  The only trick I can see you might have trouble with is making sure the netlist contains a parameter assignment for the Verilog-A module:

X1 (a b) my_va_module

isn't good enough, you need

X1 (a b) my_va_module P=value

so that you can pass the statistically-determined value into the module.

Title: Re: Verilog-A model Monte Carlo simulation with spectre
Post by yueguoguo on Jan 12th, 2013, 3:40am

Hi Geoffrey,

Thanks for your suggestions.
I have already successfully set up the netlist with the monte-carlo analysis.
Exactly as you said, I need to assign the parameters of the verilog-a model I defined and then give them randomly distributed values in the statistical blocks.

Now I encountered with another problem.
As you may know, in the monte carlo analysis session, we need to set some child analysis, and in order to record down the output values into a ASCII file we need to use the oceanEval statement to export the scalar values.
I used the expression as
m1 montecarlo xxxx xxxx {
 tran tran start=0 stop=50n
 export v1=oceanEval("v(\"net013\") 50n")
}
which means I want to record down the voltage of node "net013" at the time point of 50ns in each of the transient analysis.
The monte carlo simulation can be successfully run with no errors, however the output values seemed not to be as that I expected.
I would like to know whether there are any problems with my oceanEval expressions? I have been looking for any references but without any satisfactory results. This expression is not introduced in the ocean reference manual.
Or there may be other problems?

Thanks.

-yueguoguo

Title: Re: Verilog-A model Monte Carlo simulation with spectre
Post by Geoffrey_Coram on Jan 14th, 2013, 6:05am

What if you just do
export v1=oceanEval("v(\"net013\")")

since your tran analysis stops at 50n?

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