• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. AMS Simulator in cadence virtuoso

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 125
  • Views 17181
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

AMS Simulator in cadence virtuoso

Pandurangaiah
Pandurangaiah over 8 years ago

I am using cadence IC 6.1 version.

 I am using verilog ams and created test bench in schematic,to simulate a cell i have created a config view for test bench.I came to know that we need to create a config file if verilog ams code and ams simulator is used.I could do transient analysis for config view using ams simulator, but may i know how to plot resistance on y-axis versus voltage on x-axis curve using ams simulator in cadence (i.e. how to do DC simulation plot for config view) .I have saved DC operating point,and seen results in results->print->Dc operating point.

The problem is as config file has no option of sweeping a variable while dc analysis, how to choose a sweep variable, let us say voltage  or current on x-axis.

Please give the response as soon as possible as i am struggling for this since 2 weeks.

 

Thank you.

  • Cancel
Parents
  • Pandurangaiah
    Pandurangaiah over 8 years ago
    This is the verilog AMS code, i have declared all the parameters but i am not showing them here now.

    module Model1(T1,T2,x,Ttrans,PI);

    inout T1, T2,x,Ttrans,PI;
    electrical T1, T2,x,Ttrans,PI;
    real PolaP;
    real PolaAP;

    real surface;
    real gp;
    real gap;

    real Em;

    real TMRR;
    real TMRRT;

    real Rap;
    real Rp;

    real Vb; //V(T1,T2)
    real Vc; //V(T2,T1)

    real Id; //Current of MTJ

    //critial current for the two states of STT-MTJ
    real IcAP; //Critial current for AP state
    real IcP; //Critial current for P state

    integer Teta;

    real ix;

    real tau;
    real p;

    real FA;


    real duration;
    analog begin

    if (SHAPE==1)
    begin
    surface=a*b; //SQUARE
    end
    else if (SHAPE==2)
    begin
    surface=`M_PI*a*b/4.0; //ELLIPSE
    end
    else
    begin
    surface=`M_PI*r*r; //ROUND
    end

    Vc=V(T2,T1);
    Vb=V(T1,T2);

    //initial conditions
    @(initial_step)
    begin

    FA=3322.53/RA;
    Ro=(tox*1.0e10/(FA*`sqrt(PhiBas)*surface*1.0e12))*exp(1.025*tox*1.0e10*`sqrt(PhiBas));


    Em=Ms*tsl*surface*Hk/2;

    ix=PAP;
    I(x)<+ ix;
    I(Ttrans)<+ix;

    I(PI)<+0;

    end
    if(V(Ttrans)==0)
    begin

    Teta=0;

    PolaP=`sqrt(TMR*(TMR+2))/(2*(TMR+1));

    gp=alpha*gamma*`e*Ms*tsl*Hk/(40*`M_PI*(`ub*PolaP));
    IcP=gp*surface;

    //TMR real
    TMRR=TMR/(1+Vb*Vb/(Vh*Vh));


    Rp=Ro;

    if(Vb>=IcP*Rp)
    begin


    duration=(`C+ln(`M_PI*`M_PI*(Em/(`Kb*T*40*`M_PI))/4))*`e*1000*Ms*surface*tsl*(1+P*P)/(4*`M_PI*2*`ub*P*10000*abs(Id-IcP)

    if((duration<Pwidth))
    begin //Switching of the free layer always occurs
    ix=-1.0; //change the current state of MTJ
    Id=Vb/Rp;
    end
    else
    begin
    ix=0.0;
    Id=Vb/Rp;
    end

    end

    else
    begin
    ix=0.0;

    Id=Vb/Rp;
    end

    end


    if(V(Ttrans)!=0)

    begin

    Teta=`M_PI;

    PolaAP=`sqrt(TMR*(TMR+2))/(2*(TMR+1));

    gap=alpha*gamma*`e*Ms*tsl*Hk/(40*`M_PI*(`ub*PolaAP));
    IcAP=gap*surface;


    TMRRT=TMR/(1+Vb*Vb/(Vh*Vh));


    Rap=Ro*(1+TMRRT);


    Rp=Ro;
    if(Vc>=(IcAP*Rap))

    begin
    duration=(`C+ln(`M_PI*`M_PI*(Em/(`Kb*T*40*`M_PI))/4))*`e*1000*Ms*surface*tsl*(1+P*P)/(4*`M_PI*2*`ub*P*10000*abs(-Id-IcAP));


    if((duration<Pwidth))
    begin
    ix=0.0;

    Id=Vb/(Rap);
    //Id=(Vb*(1+TMRRT))/(Rap);
    end
    else
    begin
    ix=-1.0;
    Id=Vb/(Rap);
    end

    end

    else
    begin

    ix=-1.0;
    Id=Vb/(Rap);
    end

    end

    I(x)<+ix; //Actualisation of the state of x with the value calculated

    V(T1,T2)<+I(T1,T2)*Rp;

    I(T1,T2)<+Id; //Actualisation of the current of MTJ with the value calculated

    I(PI)<+-p; //Probability density function

    end

    endmodule

    I am using product version 15.1, virtuoso version IC 6.1.6. 64-b. 500.4
    For this code i have created symbol->schematic testbench->config view for the testbench.
    In the above code, if i want to plot the graph between TMRR and Vb from the expression, TMRR=TMR/(1+Vb*Vb/(Vh*Vh)), then what is the procedure..

    Thanking you.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Pandurangaiah
    Pandurangaiah over 8 years ago
    This is the verilog AMS code, i have declared all the parameters but i am not showing them here now.

    module Model1(T1,T2,x,Ttrans,PI);

    inout T1, T2,x,Ttrans,PI;
    electrical T1, T2,x,Ttrans,PI;
    real PolaP;
    real PolaAP;

    real surface;
    real gp;
    real gap;

    real Em;

    real TMRR;
    real TMRRT;

    real Rap;
    real Rp;

    real Vb; //V(T1,T2)
    real Vc; //V(T2,T1)

    real Id; //Current of MTJ

    //critial current for the two states of STT-MTJ
    real IcAP; //Critial current for AP state
    real IcP; //Critial current for P state

    integer Teta;

    real ix;

    real tau;
    real p;

    real FA;


    real duration;
    analog begin

    if (SHAPE==1)
    begin
    surface=a*b; //SQUARE
    end
    else if (SHAPE==2)
    begin
    surface=`M_PI*a*b/4.0; //ELLIPSE
    end
    else
    begin
    surface=`M_PI*r*r; //ROUND
    end

    Vc=V(T2,T1);
    Vb=V(T1,T2);

    //initial conditions
    @(initial_step)
    begin

    FA=3322.53/RA;
    Ro=(tox*1.0e10/(FA*`sqrt(PhiBas)*surface*1.0e12))*exp(1.025*tox*1.0e10*`sqrt(PhiBas));


    Em=Ms*tsl*surface*Hk/2;

    ix=PAP;
    I(x)<+ ix;
    I(Ttrans)<+ix;

    I(PI)<+0;

    end
    if(V(Ttrans)==0)
    begin

    Teta=0;

    PolaP=`sqrt(TMR*(TMR+2))/(2*(TMR+1));

    gp=alpha*gamma*`e*Ms*tsl*Hk/(40*`M_PI*(`ub*PolaP));
    IcP=gp*surface;

    //TMR real
    TMRR=TMR/(1+Vb*Vb/(Vh*Vh));


    Rp=Ro;

    if(Vb>=IcP*Rp)
    begin


    duration=(`C+ln(`M_PI*`M_PI*(Em/(`Kb*T*40*`M_PI))/4))*`e*1000*Ms*surface*tsl*(1+P*P)/(4*`M_PI*2*`ub*P*10000*abs(Id-IcP)

    if((duration<Pwidth))
    begin //Switching of the free layer always occurs
    ix=-1.0; //change the current state of MTJ
    Id=Vb/Rp;
    end
    else
    begin
    ix=0.0;
    Id=Vb/Rp;
    end

    end

    else
    begin
    ix=0.0;

    Id=Vb/Rp;
    end

    end


    if(V(Ttrans)!=0)

    begin

    Teta=`M_PI;

    PolaAP=`sqrt(TMR*(TMR+2))/(2*(TMR+1));

    gap=alpha*gamma*`e*Ms*tsl*Hk/(40*`M_PI*(`ub*PolaAP));
    IcAP=gap*surface;


    TMRRT=TMR/(1+Vb*Vb/(Vh*Vh));


    Rap=Ro*(1+TMRRT);


    Rp=Ro;
    if(Vc>=(IcAP*Rap))

    begin
    duration=(`C+ln(`M_PI*`M_PI*(Em/(`Kb*T*40*`M_PI))/4))*`e*1000*Ms*surface*tsl*(1+P*P)/(4*`M_PI*2*`ub*P*10000*abs(-Id-IcAP));


    if((duration<Pwidth))
    begin
    ix=0.0;

    Id=Vb/(Rap);
    //Id=(Vb*(1+TMRRT))/(Rap);
    end
    else
    begin
    ix=-1.0;
    Id=Vb/(Rap);
    end

    end

    else
    begin

    ix=-1.0;
    Id=Vb/(Rap);
    end

    end

    I(x)<+ix; //Actualisation of the state of x with the value calculated

    V(T1,T2)<+I(T1,T2)*Rp;

    I(T1,T2)<+Id; //Actualisation of the current of MTJ with the value calculated

    I(PI)<+-p; //Probability density function

    end

    endmodule

    I am using product version 15.1, virtuoso version IC 6.1.6. 64-b. 500.4
    For this code i have created symbol->schematic testbench->config view for the testbench.
    In the above code, if i want to plot the graph between TMRR and Vb from the expression, TMRR=TMR/(1+Vb*Vb/(Vh*Vh)), then what is the procedure..

    Thanking you.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information