Quantcast
Channel: Cadence Custom IC Design Forum
Viewing all 4923 articles
Browse latest View live

Monte Carlo - RAM usage issue, run each point consecutively?

$
0
0

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


Simulating a DAC in Cadence

$
0
0

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.

$
0
0

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

$
0
0

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?

$
0
0

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

$
0
0

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

$
0
0

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

$
0
0

I think this might be an old topic, but I just could not locate some of them. 

My question

1> How to save all voltage signals from a certain block and its sub levels? For example, we have a fullchip and subblock called buck_core. I would like to save all the voltage signals on buck_core level and its 3 level down. 
2> How to save port current signals from a certain block and its sub levels?  Device current is optional to save. 

Thank you. 

Andrew 


Plotting a Graph in cadence with different axis variables DC-Analysis Design variable

$
0
0

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

$
0
0

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

$
0
0

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

$
0
0

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

$
0
0
Dear All,
I'm using BSIM CMG model for simulating GAAfet behaviour so I have created (by importing verilogA files) 2 different symbols for ntype and ptype transistors.
I managed to plot their transcharacteristics and everything is ok. However when i try to realize the inverter adding the ntype and ptype symbols created, the input/output characteristic is completely wrong. By ckecking the model parameters after simulations through calculator, i found that the problem is that both symbols used are recognized as "ptype" by cadence in the inverter schematic. This Is very strong since in the symbols created they are correctly setted by me as ntype and ptype by DEVTYPE model parameter.
Can anyone help me?
Thanks a lot.

    Techgen Error: Starting Triangle not defined

    $
    0
    0

    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

    $
    0
    0

    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.

    $
    0
    0

    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

    $
    0
    0

    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

    $
    0
    0

    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

    $
    0
    0

    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

    $
    0
    0

    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.

    Viewing all 4923 articles
    Browse latest View live


    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>