Hi,
I have the same question as this 10 year old post:
community.cadence.com/.../is-there-a-way-to-prevent-monte-carlo-runs-from-accumulating-ever-more-ram-space-memory
I try to run Monte-Carlo on a large circuit.
For example running 8 MC points with 4 jobs, each job has to run 2 points consecutively.
The issue is that the memory (RAM) seems to fill up. One simulation takes about ~150GB of RAM (which is OK, the system has 256GB).
After a job finishes the first point, I would expect it to clear the RAM, and continue with the second point with almost 0 RAM usage at the beginning.
But apparently the data from the finished point stays in the RAM, filling it up, and the simulation gets killed before the second point can finish.
Is it possible to start a new job for each Monte-Carlo Point, and running each point consecutively?
Informations:
- In the Job Policy Setup, Distribution method is set to "Command".
- Cadence Version is IC6.1.8-64b.500.8
Monte Carlo - RAM usage issue, run each point consecutively?
Simulating a DAC in Cadence
hi
I am trying to simulate a 8-bit DAC in Cadence I want to input all digitial input combinations from 00000000 to 11111111 (0 to 256) incrementing by 1 each time and also I can also hold it on a specific output to test the circuit. The problem is that is it not very feasible to set these inputs using 8 vpulse function
how can i solve this problem
thanks
deepprobe gives error when probing: --- WARNING (SPECTRE-8281): `p0' is not a node nor an instance name.
I am instaniating an analogLib/deepprobe instance at the top level of my schematic to allow probing inside an extracted netlist.
This instance shows up like this in the netlist:
IPRB2 (xcdr_vco.xvco_biasvosc.xosc.XOSCHI_Xosc_Xbfr1_XBFRP_MN0_GATE n0) iprobe
I am also saving the voltage like this:
save n0
For some reason, I get these warnings in the output file:
WARNING (SPECTRE-8281): `n0' is not a node nor an instance name.
WARNING (SPECTRE-8286): Ignoring invalid item `n0' in save statement.
And the voltage waveform on n0 is not saved during the simulation.
Am I doing something wrong here? Is there a better way to probe a net inside an extraction. My ultimate goal is to run PSS simulation and set the "oscillator node" to an internal node of an extracted netlist. But the PSS dialog box doesn't allow you to type in a hierarchical net name, it must be something present in the schematic.
Reconciling phase-noise obtained using pss+pnoise analysis with that obtained using transient noise and PN() function
Hi Andrew,
The phase-noise simulation results obtained using pss+pnoise analysis is found to be around 10dB lower at various offsets than that obtained from transient noise analysis. The nominal frequency of the oscillator is around 350kHz. The simulation results are attached. What could be the issue here?
In the below, the green curve shows the pss+pnoise simulation results, while the red one shows the results obtained from transient noise. The PN() function uses a windowSize=32768 for the below results.
The below shows a comparison similar to the above, the only difference being the window size=52488
The settings of the transient analysis are as below:
The function PN() is set up as below:
The simulation is setup to run for a time of 5s so as the large window size can be used.
Thanks.
How can I change several tests on Assembler simultaneously?
Hello,
If I have an Assembler maestro setup with several sub-tests and I want to make the same change to all of the sub-tests how would I do that?
E.g. say I want to change the model files used, or change the outputs saved, or the simulator settings and have that change common to several tests.
With the old ADE-XL I could just make the changes in one test, save the state, then load that state onto the other tests. But since there's no states anymore I don't see how to do that with Assembler.
I'm still getting used to the L/XL -> Explorer / Assembler change.
Thank you,
Bill Huff
Developing LPE with a custom ICT file
Hi all,
For a research project, I need to develop a Layout Parasitic Extraction tool for a novel technology as an addition to a developed PDK. To do this through Quantus I had to write my own ICT file. I did this following the TechGen manual, however, I am stuck now and not sure what to do next. I can make the layer_setup file from the lvsdata, however, I am not sure how to proceed. Can I input these files in Quantus and start extraction immediately?
I have never worked with Cadence before, all the help would be appreciated!
Thank you in advance.
*ERROR* (AMS-1245): AMS UNL netlisting" in AMS simulation
Dear All,
I am running a AMS simulation for a testbench. When add a particular cell form a library to it, I see the following error.
*ERROR* (AMS-1245): AMS UNL netlisting
*ERROR* (AMS-1245): AMS UNL netlisting has failed because of errors in the design.
Right-click the test name on the Outputs assistant pane
and check Output Log->Netlister Log for errors.
Correct your design and netlist again.
*Error* Error during netlisting of design for the point ID (4 1).
("error" 0 t nil ("*Error* "))
When I search, netlister Log file, I don't see any error report.
But, when I removed this particular cell, it works fine.
Could anybody please tell what is the cause for it ? and how to get over this issue.
Kind Regards,
Spectre/APS: how to save only subckt and some level below it
I think this might be an old topic, but I just could not locate some of them.
My question
Thank you.
Andrew
Plotting a Graph in cadence with different axis variables DC-Analysis Design variable
I implemented a cascade current mirror circuit as shown blow.
And I want to plot the output voltage Vout relative to the changes of input current (0<Iref<800uA) . I use DC-Analysis>Design-variable>start=0 / stop=800u then run the simulation
x-axis of chart in term of voltage and y-axis of chart in term of Iref
how can I change x-axis=Iref and y-axis=Vout
Like the figure below
[AWR Microwave Office] Issue related to plot of contours
Dear All,
I've quite big problem related to contours in AWR. I can generate LP_Data file of an amplifier from load-pull analysis implemented in AWR. Moreover, I can plote parameters such as PAE, Gain, etc. from load point of view, for particulat input gamma points. However, when I want to plot results for input - source side (for particular gamma loads points) I receive error: Measurement - LP_Data:G_LPCM_EX(G_Power,0.5,5,50,0)[8,1,X] : Unable to compute G_LPCM_EX measurement. Moreover, only "plot all traces" option is working, however I see then every single solution, for all gamma input points:
The error above is related to other parameter in which I want to change gamma of source (by using a marker on different plot). As you can see, this is quite...unreadable. This is AWR issue ? Can it be my mistake ? I use AWR 12, 14 and 15 - and in all version I see errors but with different cause (for 12 is related to not defined sweep, for 15 is related to license - I use student versions from University).
Best Regards,
E.
ERROR EMX in virtuoso
I am trying to simulate an inductor in EMX.
I am getting following error:-
*Error* hiGetTextWidth: argument #1 should be a string (type template = "t") - text
Please help me with this.
Variable set in corners overrides variable locally defined in test
Cadence_icadvm v18.10.130
ADE Assembler
I am running a trimming (calibration) simulation. The trimming must be done at a fixed supply voltage. Thereafter, I want the post-trim test to take the value set in the corners for the supply voltage.
In the trim test, I set the supply voltage to the desired trimming value LOCALLY i.e. vsup=vsupTrim where vsupTrim is a global variable with a fixed value.
In the corners, vsup has a range of values.
When I run the two tests together across corners, the trimming test simply picks up the value for vsup defined in the corners, ignoring the local override.
I have tried setting the local variable, vsup=VAR("vsupTrim") and also avoiding the global altogether i.e. vsup=3, but neither works.
I appreciate that this may be expected behaviour but is there a workaround to achieve a constant supply voltage for the trim test even though the corners want to vary this variable
Note: A similar approach for temperature seem to work OK i.e. ....
trim test: temperature = VAR("trimTemp") with trimTemp set as a global
2nd test: temperature = VAR("simTemp") with simTemp varied across corners
Temperature in the trim test is not varied across corners in this case.
Problem in simulating an inverter using BSIMCMG
Techgen Error: Starting Triangle not defined
HI all,
I am trying to generate a qrcTechFile using Techgen and my own ICT file. However, I have run into a problem. My first question is whether I am running Techgen correctly (I have never worked with Cadence before). I try to run the Techgen simulation with my ICT file as an input, is this correct or should I use a different file. If this is the case: which file?
When running "Techgen -si <ICTfile> " I get the following error statement:
------------------------------------------------------------------------
Interconnect Capacitance Modeler Techgen64 Version s18.1.2132
-----------------------------------------------------------------
Copyright (c) 2018 Cadence Design Systems, Inc.
ERROR: Link error, starting Triangle not defined!
ERROR: Link error, starting Triangle not defined!
ERROR: There is a error in 2d field solver during solution. Please contact
with developer.
ERROR (EXTNXC-31) : Exiting due to a fatal error reported by the operating
system's runtime environment:invalid data () at
(/vols/ssvcmbuilds1/ws/builds/builds_ext_1812_ext_cm/ext/src/libfem/src/fem_common.cpp
[68], void libfem_ERROR(FILE*, const char*, ...))
Error, process analyzing failed
Does anybody have an idea how to fix this error?
Virtuoso schematic set net to default to a certain color
Hi
Is it possible to set a default color for specific nets that are local to a schematic? I have some mildly complicated schematics and they're very repetitive and some signals go everywhere and other signals only go in little areas and I was wondering if there's a way to set a net's default color in schematic editor? Right now I've been doing them after the fact by looking at the "Nets" objects within the schematic cell view and setting the color for all the nets there but I was wondering if there's an easier way to do it. I'm using 6.1.8, HF120 which I think is the latest (we're taping out in a couple of weeks so unless there's a huge emergency fix I'm not updating until then)
Thanks
Chris
Analysis was skipped due to inability to compute operating point.
I am trying to simulate a very simple design using a dc current source and a switch. I keep getting Analysis was skipped due to inability to compute operating point.
Could you please help me with this?
try to select any parameter to the design, it doesn't mater and it will keep getting errors as long as there is a dc current source.
Convergence issue with Verilog-A model
I have developed Verilog-A model of a device that I am trying to simulate and every time it gives different value and at most of the occasions it just stops at a certain time of the simulation.
I have seen multiple posts around the same issue and it seems that this is due to a bad Verilog-A model or varying a bit the convergence parameters.
I would like to get your suggestions of either updating the model or changing the convergence parameters in a matter to get this module working properly.
The model is as follows;
//Start
`resetall
`include "constants.vams"
`include "disciplines.vams"
// check this for later updates//////////////////////////////
nature Magnetization
access = Mgn;
units = "SI";
abstol = 1;
endnature
nature Ange
access = Ang;
units = "rad";
abstol = 1;
endnature
discipline magnetization
potential Magnetization;
enddiscipline
discipline ange
potential Ange;
enddiscipline
/////////////////////////////////////////////////////////////
//Constants
//Define various physical constants in SI units
`define Pi 3.141592653589793 //rad
//`define m_Bohr 9.27401E-24 // J/T Bohr Magneton
//`define h 6.626070040E-34 // J.s Plank's constant
`define hbar 1.054571800e-34 // J.s Reduced Planck's constant
//`define eV 1.60217653E-19 // C Electron charge
`define KB 1.38064852E-23 // J/K Boltzman constant
`define mu0 1.256637061435917E-06 // N/A^2 Permeability of free space
//`define ep0 8.854187817620389E-12 // F/m Permativity of free space
`define e 1.60217653E-19 // C Electron charge
//`define me 9.1093826E-31 // Kg Electron rest mass
//`define a0 5.29177E-11 // m Bohr radius
module asdw(T1,T2,R_out1,R_out2);
/*-------T1~2: Actual terminals coressponding to pinned layer and free layer--------*/
inout T1,T2;
electrical T1,T2;
/*-------Tmz: Virtual terminal for monitoring the Magnetization-------*/
output R_out1,R_out2;
electrical R_out1,R_out2;
// magnetization Tmx,Tmy,Tmz;
ange Th1, Ph1;
ange Th2, Ph2;
///////////////////////////////////////////////////////////////////////////////////////////
/* Simulation time step bound */
///////////////////////////////////////////////////////////////////////////////////////////
parameter real Ts = 2p; // Speed-accuracy tradeoff
parameter integer TN = 0;
///////////////////////////////////////////////////////////////////////////////////////////
/* TN is a model parameter to enable Thermal fluctuations */
/* TN = 1 : Thermal fluctuations is activated */
/* TN = 0 : Thermal fluctuations is NOT activated */
///////////////////////////////////////////////////////////////////////////////////////////
// parameter integer STT = 0;
///////////////////////////////////////////////////////////////////////////////////////////
/* JH is a model parameter */
/* JH = 1 : Joule heating mechanism is activated */
/* JH = 0 : Joule heating mechanism is NOT activated */
///////////////////////////////////////////////////////////////////////////////////////////
// parameter integer JH = 0;
///////////////////////////////////////////////////////////////////////////////////////////
/* SHAPE is a model parameter */
/* SHAPE = 1 : MTJ cross section is circular */
/* SHAPE = 0 : MTJ cross section is rectangular */
///////////////////////////////////////////////////////////////////////////////////////////
// parameter integer SHAPE = 1;
///////////////////////////////////////////////////////////////////////////////////////////
/* Device parameters */
///////////////////////////////////////////////////////////////////////////////////////////
// parameter real Ms0 = 8E5;
parameter real Ms0 = 1.2E6;
// parameter real alpha1 = 0.01;
parameter real alpha1 = 0.02;
parameter real gamma = 2.21276E5;
///////////////////////////////////////////////////////////////////////////////////////
/* Device size */
///////////////////////////////////////////////////////////////////////////////////////
// parameter real t_FL = 2e-9; /
parameter real t_FL = 1.1E-9;
// parameter real w_FL = 70e-9; //
parameter real w_FL1 = 170E-9; //
// parameter real l_FL = 140e-9; // (
parameter real l_FL1 = 60E-9; // (
parameter real w_FL2 = 170E-9; //
// parameter real l_FL = 140e-9; //
parameter real l_FL2 = 60E-9; // (m)
// parameter real t_ox = 0.8e-9; // (m)
parameter real t_ox = 1.1E-9; // (m)
///////////////////////////////////////////////////////////////////////////////////////
/* Magnetoresistance and electrical parameters */
///////////////////////////////////////////////////////////////////////////////////////
// parameter real b_h = 3.28; //ev
parameter real b_h = 0.39; //ev
// parameter real v_h = 0.75; //V
parameter real v_h = 0.75; //V
parameter real alpha_sd = 1.4e-5; // K^(-3/2)
parameter real P01 = 0.591; //59.1%
parameter real P02 = 0.591; //59.1%
parameter real S = 1.5e-12; //(ohm.(um)^2)^-1 . K^(-4/3)
parameter real TMR0 = 1.5; // TMR @ zero voltage
///////////////////////////////////////////////////////////////////////////////////////
/* Effective field parameters */
///////////////////////////////////////////////////////////////////////////////////////
// parameter real Ki0 = 2.6E5 * t_FL * 0.1; //0.32e-3 //
parameter real Ki0 = 0; //0.32e-3 //(J/m^2) v=0
parameter real eta_VCMA = 0; // J/(V.m)
//External Field
parameter real hx_external= 0; //-31830 A/m external magnetic field along x axis
parameter real hy_external= 0; // A/m mexternal magnetic field along y axis
parameter real hz_external= 0; // A/m external magnetic field along z axis
//Demagnetization Fields, Shape anistropy field
// parameter real Nx= 0.018;//0.0168 X-axis component of the demagnetization facator
// parameter real Ny= 0.038;//0.0168; Y-axis component of the demagnetization facator
// parameter real Nz= 0.94;//0.9664; Z-axis component of the demagnetization facator
parameter real Nx= 0.0045;//0.0168 X-axis component of the demagnetization facator
parameter real Ny= 0.0152;//0.0168; Y-axis component of the demagnetization facator
parameter real Nz= 0.9803;//0.9664; Z-axis component of the demagnetization facator
//////////////////////////////////////////////////////////////////////////////////////////
/* Spin Transfer Torque Parameters */
///////////////////////////////////////////////////////////////////////////////////////
parameter real th_initial1= `Pi/2; // Azimuth initial angle (with Z direction)
// parameter real ph_initial1= 0.001; // Elevation angle (with X direction in X-Y plane)
parameter real ph_initial1= `Pi-0.1; // Elevation angle (with X direction in X-Y plane)
parameter real th_initial2= `Pi/2; // Azimuth initial angle (with Z direction)
// parameter real ph_initia2= 0.001; // Elevation angle (with X direction in X-Y plane)
parameter real ph_initial2= `Pi-0.1; // Elevation angle (with X direction in X-Y plane)
// parameter real pin_x= 0; // pinned layer orientation
// parameter real pin_y=0; // pinned layer orientation
// parameter real pin_z=1; // pinned layer orientation
parameter real pin_x= 1; // pinned layer orientation
parameter real pin_y=0; // pinned layer orientation
parameter real pin_z=0; // pinned layer orientation
// parameter real zeta= 1;//%0.58; // Spin polarized percent STT Coefficent
// parameter real zeta_FL= 0; // Field-like STT torque coefficient
parameter real zeta_FL= 1;//%0.58; // Spin polarized percent STT Coefficent
parameter real zeta_DL= 0; // Field-like STT torque coefficient
integer seed;
parameter real Ta = 300; // Ambient temperature (K)
///////////////////////////////////////////////////////////////////////////////////////
// Model computing parameters: //
///////////////////////////////////////////////////////////////////////////////////////
real gamma_llg, surface1, surface2,volume1,volume2;
real H_Demx1, H_Demy1, H_Demz1,H_Demx2, H_Demy2, H_Demz2;
real Hkp1,Hkp2;
real H_effx1, H_effy1, H_effz1,H_effx2, H_effy2, H_effz2;
real Hlx1, Hly1, Hlz1,Hlx2, Hly2, Hlz2, Temp, Q1,Q2;
real AJ1, BJ1,AJ2, BJ2;
// real AJ_polarizer, BJ_polarizer;
real st1, ct1, sp1, cp1,st2, ct2, sp2, cp2;
real Heff_spherical_theta1, Heff_spherical_phi1, dMdt_eff_theta1, dMdt_eff_phi1;
real Heff_spherical_theta2, Heff_spherical_phi2, dMdt_eff_theta2, dMdt_eff_phi2;
real T_STT_spherical_pinned_theta1, T_STT_spherical_pinned_phi1, dMdt_STT_pinned_theta1, dMdt_STT_pinned_phi1;
real T_STT_spherical_pinned_theta2, T_STT_spherical_pinned_phi2, dMdt_STT_pinned_theta2, dMdt_STT_pinned_phi2;
// real T_STT_spherical_polarizer_theta, T_STT_spherical_polarizer_phi, dMdt_STT_polarizer_theta, dMdt_STT_polarizer_phi;
real dMdt_theta1, dMdt_phi1,dMdt_theta2, dMdt_phi2;
real M_theta1, M_phi1, M_theta2, M_phi2;
real I_STT,R1,R2;
real TD,Time1,Time2;
real C,sin_temp,G_T1,G_T2, G_V, G_SI, P1_T, P2_T, G1,G2;
real t_ox_angestrom,C0,C1,C2,A_cm2_1,A_cm2_2,G01,G02,TMR_mod,F;
///////////////////////////////////////////////////////////////////////////////////////
/* Branches */
///////////////////////////////////////////////////////////////////////////////////////
// branch (T1,T2) res_mtj;
///////////////////////////////////////////////////////////////////////////////////////
/* Main */
///////////////////////////////////////////////////////////////////////////////////////
analog begin
$bound_step(Ts); // define simuation time step
@(initial_step) begin
M_theta1= th_initial1;
M_phi1=ph_initial1;
M_theta2=th_initial2;
M_phi2=ph_initial2;
seed = 25;
//T1 = 0;
F=1;
t_ox_angestrom =t_ox*1e10;
surface1 = `Pi*l_FL1*w_FL1/4; // (m^2) Surface area
surface2 = `Pi*l_FL2*w_FL2/4; // (m^2) Surface area
volume1 = surface1*t_FL; // (m^3) Surface area
volume2 = surface2*t_FL; // (m^3) Surface area
gamma_llg = gamma/(1+alpha1*alpha1); // Hz/T (1/T.m) Reduced gyromagnetic ratio
A_cm2_1 = surface1*1e4;
A_cm2_2 = surface2*1e4;
G01 = ((3.16*1e10)*sqrt(b_h)/t_ox_angestrom) * exp(-1.025 * t_ox_angestrom * sqrt(b_h)) * A_cm2_1 * F; // 1/ohm
G02 = ((3.16*1e10)*sqrt(b_h)/t_ox_angestrom) * exp(-1.025 * t_ox_angestrom * sqrt(b_h)) * A_cm2_2 * F; // 1/ohm
// G0=2.77414e-4; //(APPLY kAZ PARAMETERS)
end
Time2 = $abstime;
TD = Time2 - Time1; //Time duration
Time1 = Time2;
Temp = Ta;
if (TN == 1)
begin
Q1 = sqrt((2 * alpha1 * `KB * Temp / (`mu0*gamma_llg * Ms0 * volume1 * TD)));
Q2 = sqrt((2 * alpha1 * `KB * Temp / (`mu0*gamma_llg * Ms0 * volume2 * TD)));
end
else
begin
Q1 = 0;
Q2 = 0;
end
Hlx1 = $rdist_normal(seed,0,Q1); //$dist_normal (seed, mean, standard_deviation) ; seed const means get const random value
Hly1 = $rdist_normal(seed,0,Q1);
Hlz1 = $rdist_normal(seed,0,Q1);
Hlx2 = $rdist_normal(seed,0,Q2); //$dist_normal (seed, mean, standard_deviation) ; seed const means get const random value
Hly2 = $rdist_normal(seed,0,Q2);
Hlz2 = $rdist_normal(seed,0,Q2);
st1 = sin(Ang(Th1));
ct1 = cos(Ang(Th1));
sp1 = sin(Ang(Ph1));
cp1 = cos(Ang(Ph1));
st2 = sin(Ang(Th2));
ct2 = cos(Ang(Th2));
sp2 = sin(Ang(Ph2));
cp2 = cos(Ang(Ph2));
// as H_dem = - Ms (N(vector).M(vector) (Nx,Ny,Nz). (M_theta,Mphi) cross product
H_Demx1= Nx*Ms0 * st1 * cp1 ;
H_Demy1= Ny*Ms0 * st1 * sp1;
H_Demz1= Nz*Ms0 * ct1;
H_Demx2= Nx*Ms0 * st1 * cp1 ;
H_Demy2= Ny*Ms0 * st1 * sp1;
H_Demz2= Nz*Ms0 * ct1;
//Anisotropy Field, Interfacial
Hkp1= (2*Ki0/(t_FL*`mu0*Ms0)-2*eta_VCMA*V(T1,T2)/(t_FL*`mu0*Ms0*t_ox))*ct1; // The effective anistropy with VCMA effect
Hkp2= (2*Ki0/(t_FL*`mu0*Ms0)-2*eta_VCMA*V(T1,T2)/(t_FL*`mu0*Ms0*t_ox))*ct2; // The effective anistropy with VCMA effect
//Effective anistropy field with VCMA
H_effx1= Hlx1 + hx_external- H_Demx1;
H_effy1= Hly1 + hy_external- H_Demy1;
H_effz1= Hlz1 + hz_external- H_Demz1 + Hkp1;
H_effx2= Hlx2 + hx_external- H_Demx2;
H_effy2= Hly2 + hy_external- H_Demy2;
H_effz2= Hlz2 + hz_external- H_Demz2 + Hkp2;
// write disturbance
//Spin Transfer Torque components
AJ1= (`hbar*zeta_FL*I(T1,T2)/(2*`e*`mu0*Ms0*surface1*t_FL)); //0; %0.3e4; //A/m STT coefficient Normalized
BJ1= (`hbar*zeta_DL*I(T1,T2)/(2*`e*`mu0*Ms0*surface1*t_FL)); // Normalized
AJ2= (`hbar*zeta_FL*I(T1,T2)/(2*`e*`mu0*Ms0*surface2*t_FL)); //0; %0.3e4; //A/m STT coefficient Normalized
BJ2= (`hbar*zeta_DL*I(T1,T2)/(2*`e*`mu0*Ms0*surface2*t_FL)); // Normalized
//
T_STT_spherical_pinned_theta1= pin_x * ct1 * cp1 + pin_y * ct1 * sp1 - pin_z * st1;
T_STT_spherical_pinned_phi1= -pin_x * sp1 + pin_y * cp1;
T_STT_spherical_pinned_theta2= pin_x * ct2 * cp2 + pin_y * ct2 * sp2 - pin_z * st2;
T_STT_spherical_pinned_phi2= -pin_x * sp2 + pin_y * cp2;
// Heff_spherical = @(t,M) [cos(M(1)).* cos(M(2)), cos(M(1)).*sin(M(2)), -sin(M(1)); -sin(M(2)), cos(M(2)), 0] * H(t,M); %A/m Magnetic Field Strength normalized
Heff_spherical_theta1= H_effx1 * ct1 * cp1 + H_effy1 * ct1 * sp1 - H_effz1 * st1;
Heff_spherical_phi1= -H_effx1 * sp1 + H_effy1 * cp1;
Heff_spherical_theta2= H_effx2 * ct2 * cp2 + H_effy2 * ct2 * sp2 - H_effz2 * st2;
Heff_spherical_phi2= -H_effx2 * sp2 + H_effy2 * cp2;
dMdt_eff_theta1= alpha1 * Heff_spherical_theta1 + Heff_spherical_phi1;
dMdt_eff_phi1= -Heff_spherical_theta1/st1 + alpha1 * Heff_spherical_phi1 / st1;
dMdt_eff_theta2= alpha1 * Heff_spherical_theta2 + Heff_spherical_phi2;
dMdt_eff_phi2= -Heff_spherical_theta2/st2 + alpha1 * Heff_spherical_phi2 / st2;
dMdt_STT_pinned_theta1= (-AJ1 - alpha1 * BJ1) * T_STT_spherical_pinned_theta1 + (alpha1 * AJ1 - BJ1) * T_STT_spherical_pinned_phi1;
dMdt_STT_pinned_phi1= (BJ1 - alpha1 * AJ1) * T_STT_spherical_pinned_theta1/st1 + (- AJ1 - alpha1 * BJ1) * T_STT_spherical_pinned_phi1 / st1;
dMdt_STT_pinned_theta2= (-AJ2 - alpha1 * BJ2) * T_STT_spherical_pinned_theta2 + (alpha1 * AJ2 - BJ2) * T_STT_spherical_pinned_phi2;
dMdt_STT_pinned_phi2= (BJ2 - alpha1 * AJ2) * T_STT_spherical_pinned_theta2/st2 + (- AJ2 - alpha1 * BJ2) * T_STT_spherical_pinned_phi2 / st2;
dMdt_theta1= gamma_llg * (dMdt_eff_theta1 + dMdt_STT_pinned_theta1 );
dMdt_phi1= gamma_llg * (dMdt_eff_phi1 + dMdt_STT_pinned_phi1 );
dMdt_theta2= gamma_llg * (dMdt_eff_theta2 + dMdt_STT_pinned_theta2 );
dMdt_phi2= gamma_llg * (dMdt_eff_phi2 + dMdt_STT_pinned_phi2 );
//idtmod(integrand x, initial condition y0, modulus m, offset b, tolerance) preferable than just idt
M_theta1 = idtmod(dMdt_theta1,th_initial1,2*`Pi);
M_phi1 = idtmod(dMdt_phi1,ph_initial1,2*`Pi);
M_theta2 = idtmod(dMdt_theta2,th_initial2,2*`Pi);
M_phi2 = idtmod(dMdt_phi2,ph_initial2,2*`Pi);
// MTJ resistance
C = 1.387e-4 * t_ox_angestrom/sqrt(b_h); //Check the parameters later
sin_temp = sin(C*Temp);
G_T1 = G01* (C*Temp)/(sin_temp);
G_T2 = G02* (C*Temp)/(sin_temp);
G_SI = S*pow(Temp,(4/3)); //
//Method1
P1_T = P01*(1-alpha_sd*pow(Temp,1.5));
P2_T = P02*(1-alpha_sd*pow(Temp,1.5));
G1 = G_T1*(1+P1_T*P2_T*cp1 + G_SI); //
G2 = G_T2*(1+P1_T*P2_T*cp2 + G_SI); //
R1 = 1 / (G1);
R2 = 1 / (G2);
// I(T1,T2) <+ V(T1,T2)/R;
V(T1,T2) <+ I(T1,T2) * (R1+R2);
V(R_out1) <+ R1;
V(R_out2) <+ R2;
Ang(Th1) <+ M_theta1;
Ang(Ph1) <+ M_phi1;
Ang(Th2) <+ M_theta2;
Ang(Ph2) <+ M_phi2;
//
end // end of analog
endmodule // end of module
the input.scs
simulator lang=spectre
global 0
parameters I=600u
// View name: schematic
I1 (0 Vout) isource dc=I type=dc
I5 (Vout 0 Rout1 Rout2) asdw Ts=2e-12 TN=0 Ms0=1.2e+06 alpha1=0.02 \
gamma=221276 t_FL=1.1e-09 w_FL1=1.7e-07 l_FL1=6e-08 w_FL2=1.5e-07 \
l_FL2=5e-08 t_ox=1.1e-09 b_h=0.39 v_h=0.75 alpha_sd=1.4e-05 \
P01=0.591 P02=0.591 S=1.5e-12 TMR0=1.5 Ki0=0 eta_VCMA=0 \
hx_external=0 hy_external=0 hz_external=0 Nx=0.0045 Ny=0.0152 \
Nz=0.9803 th_initial1=1.5708 ph_initial1=0.1 th_initial2=1.5708 \
ph_initial2=0.1 pin_x=1 pin_y=0 pin_z=0 zeta_FL=1 zeta_DL=0 Ta=300
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \
checklimitdest=psf
tran tran stop=800n param=I param_vec=[0 0 30n 450u 50n 0 70n 600u 100n 0 \
150n -620u 170n 0 200n -630u 250n 0 280n 450u 300n 0 330n -630u 360n \
0] step=100000 write="spectre.ic" writefinal="spectre.fc" \
annotate=status maxiters=5
finalTimeOP info what=oppoint where=rawfile
modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
primitives info what=primitives where=rawfile
subckts info what=subckts where=rawfile
save I5:T1
saveOptions options save=allpub
ahdl_include "/Directory/asdw/veriloga/veriloga.va"
The circuit
Mismatch simulation in Monte Carlo
Hi,
I am investigating Mismatch in the multipliers. I made a very simple testbench with two transistors having identical VGS voltage, one with 1 multiplier and the other with exact same sizing and 64 as multiplier. I then ran the Monte Carlo simulation of 300 samples to compare the std-dev of the current of these two transistor. Based on the Pelgrom equations for mismatch, we expect the std-dev of the N multiplier to be sart(N) times larger than the std-dev of the unit size. However, in my testbench instead of 8X( sqrt(64)), I get 47X larger std-dev in 64-multiplier than 1-multiplier. I also checked with N= 16 and 8 but still doesn't get the expected ratio.
Since the testbench is pretty simple, I was thinking the Monte Carlo simulation for mismatch in Cadence may use some specific approach for choosing samples that causes this discrepancy between results and what is expected. So is there any document or sources that explains how Cadence does the Monte Carlo simulation? The version of Cadence is IC 6.1.8 .
Thank you for your help in advance.
The Principle of Automatic Sweeping
Hi all.
I want to know how automatic sweep of dc analysis works.
I'm doing now a DC sweep analysis with 192 corner patterns.
In this simulation, I need to verify thresholds of a CMOS Inverter in 1 mV order sweeping the input voltage.
I've already known the rough value of the threshold(which is under 1V), so the sweeping steps need to be fine only around the threshold.
However, I also have to check the leak current at the input voltage = 0V/3.5V/5.5V.
So I want set the sweeping range from 0V to 5.5V,
but if I run this simulation with linear sweep of 1mV step from 0V to 5.5V, it takes over 1 hour.
So I want to make sure if sweeping step become finer when the output values abruptly changes in automatic sweeping method,
and how the principle is like.
Thank you.
Problem in doing pss pnoise simulation to get PFD CP output current noise
I tied an ideal voltage source to the output of my charge pump and selected this voltage source as the port of my pnoise simulation. However, after my pss pnoise simulation is finished, the output noise of my simulation is in voltage type not in current type. I want to get the output current noise of my design. My cadence version is IC6.17. The test bench is shown below.