zoukankan      html  css  js  c++  java
  • STT-MTJ(自旋转移矩磁隧道结)模型的Verilog-A语言描述(仅参考)

    模型的相关理论原理这里不作描述,直接上代码:

      1 `include"disciplines.vams"
      2 `include"constants.vams"
      3 module STT-MTJ(p,n,Vstate);
      4     input p,n;
      5     output Vstate;
      6     electrical p,n,Vstate;
      7     //===================== 模型参量初始化 ==============================  
      8     parameter real e      = 1.6e-19;   // 电子电荷量, 1.6*10^-19C
      9     parameter real m      = 9.1e-31;   // 电子质量, 9.1*10^-31kg
     10     parameter real hbar   = 6.626e-34; // 约化普朗克常量
     11     parameter real C      = 0.557;     // 欧拉常数
     12     parameter real alpha  = 0.027;     // 吉尔伯特阻尼系数
     13     parameter real ub     = 9.274e-24; // 波尔磁子常数, 9.274*10^-24J/T
     14     parameter real Kb     = 1.38e-23;  // 玻尔兹曼常数, 1.38*10^-23J/K
     15     parameter real P      = 0.52;      // 电子自旋极化率
     16     parameter real tox    = 0.85e-9;   // 绝缘层MgO的厚度, 0.85nm
     17     parameter real tfl    = 1.3e-9;    // 自由层厚度, 1.3nm
     18     parameter real r      = 65e-9;     // MTJ半径,65nm 
     19     parameter real F      = 332.2;     // R*A相关阻力系数,332.2
     20     parameter real PhiBar = 0.4;       // 绝缘层MgO势垒高度, 0.4eV
     21     parameter real TMR0   = 0.7;       // 零偏压下的TMR值, 0.7
     22     parameter real Vh     = 0.5;       // TMRreal=0.5*TMR0时MTJ结上的电压,0.5V 
     23     parameter real u0     = 1.2566e-6; // Permeability in free space.
     24     parameter real Ms     = 456e3;     // 饱和磁化强度
     25     parameter real Hk     = 113e3;     // 各向异性磁场强度
     26     parameter real T      = 300;       // 温度, 300K
     27     parameter real tau0   = 1.0e-9;    // 频率,1ns,1kHz
     28     parameter real InitState = 0;      // 初始状态,P=0, AP=1 
     29     
     30     real Area;                         // 磁隧道结面积
     31     real VF;                           // 自由层体积
     32     real R0;                           // MTJ结偏压为零时的电阻值
     33     real TMRreal;                      // MTJ上的实际TMR值
     34     real Vmtj;                         // MTJ上的电压
     35     real RP,RAP,Rreal;                 // MTJ上的电阻
     36     real gamma;                        // 旋磁比
     37     real gP,gAP;                       // 自旋极化效率因子
     38     real IcP,IcAP;                     // 开关电流
     39     real tau;                          // 翻转时间
     40     real tauNB;                        // 数据保持时间
     41     real E;                            // 
     42     real Eps;                          // 热稳定系数
     43     real Ireal,IrealAP,Imtj;           // MTJ上的实际电流
     44     real width;                        // 脉冲宽度
     45     real start;                        // 开始时间
     46     integer state;
     47         
     48     analog begin 
     49         @(initial_step)begin
     50             Area  = `M_PI*r*r;
     51             VF    = Area*tfl;
     52             R0    = tox*exp(1.025*tox*sqrt(PhiBar))/(F*sqrt(PhiBar)*Area);
     53             RP    = R0;
     54             Rreal = RP;
     55             gamma = 2*ub/hbar;
     56             gP    = 1/(-4+pow(sqrt(P)+1/sqrt(p),3)*0.5);
     57             gAP   = 1/(-4+pow(sqrt(P)+1/sqrt(p),3));
     58             IcP   = alpha*gamma*e/(ub*gP)*u0*Ms*Hk*VF;
     59             IcAP  = alpha*gamma*e/(ub*gAP)*u0*Ms*Hk*VF;
     60             E     = u0*Ms*Hk*VF/2;
     61             Eps   = E/(Kb*T);
     62             state = InitState;
     63             end
     64             
     65             Vmtj    = V(p,n);
     66             Imtj    = Vmtj/Rreal;
     67             TMRreal = TMR0/(1+Vmtj*Vmtj/(Vh*Vh));
     68             RAP     = RP*(1+TMRreal);
     69             
     70             @(cross(Vmtj))begin
     71                 start = $abstime;
     72             end
     73             $bound_step(0.05ns);
     74             
     75             if(state==0)begin    //初始状态为“0”
     76                 Ireal = Imtj;   
     77                 Rreal = RP;     //MTJ磁化方向为平行态
     78                 if(Ireal>=0)begin             //有电流通过,记录电流脉冲宽度
     79                     width = $abstime-start;
     80                     if(Ireal>=IcP)begin      //通过的电流大于开关电流,计算翻转时间
     81                         tau = (C/2+ln(`M_PI*`M_PI*Eps/4)/2)*e*Ms*Vol(1+P*P)/(2*ub*P*(Ireal-IcP));
     82                         if(width>=tau)begin  //电流脉冲宽度大于翻转时间,则磁化状态翻转,否则不变
     83                             state = 1;   
     84                         end
     85                         else state = 0;
     86                     end
     87                     else begin  //电流小于开关电流,计算保持时间
     88                         tauNB = tau0*exp(Eps*(1-(Ireal/IcP)));
     89                         if(width>=tauNB)begin //电流脉冲宽度大于保持时间,则磁化状态翻转,否则不变
     90                         state = 1;
     91                         end
     92                         else state = 0;
     93                     end
     94                 end
     95             end
     96             else begin //初始状态为“1”
     97                 IrealAP = -Imtj;
     98                 Rreal = RAP;
     99                 if(IrealAP>=0)begin
    100                     width = $abstime-start;
    101                     if(IrealAP>=IcAP)begin
    102                         tau = (C/2+ln(`M_PI*`M_PI*Eps/4)/2)*e*Ms*VF(1+P*P)/(ub*P*(IrealAP-IcAP));
    103                         if(width>=tau)begin
    104                             state = 0;
    105                         end
    106                         else state = 1;
    107                     end
    108                     else begin
    109                         tauNB = tau0*exp(Eps*(1-(IrealAP/IcAP)));
    110                         if(width>=tauNB)begin
    111                             state = 0;
    112                         end
    113                         else state = 1;
    114                     end
    115                 end
    116             end
    117             V(Vstate) <+ state;
    118             I(p,n) <+ Vmtj/Rreal;
    119         end
    120     endmodule
  • 相关阅读:
    Elasticsearch聚合 之 Date Histogram聚合
    Elasticsearch聚合 之 Terms
    Elasticsearch分析聚合
    mysql-聚合函数
    flask学习笔记(-操作数据库)
    在VS中调试javascript脚本
    jquery获取设置input值
    jquery后加Dom绑定事件
    Juicer——a fast template engine
    ASP.NET 一般处理程序
  • 原文地址:https://www.cnblogs.com/vilicute/p/12786163.html
Copyright © 2011-2022 走看看