Home > Community > Forums > RF Design > Verilog-A large-signal model for an ohmic cantilever RF MEMS switch


* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Verilog-A large-signal model for an ohmic cantilever RF MEMS switch 

Last post Wed, Dec 15 2010 9:13 AM by vcaeken. 0 replies.
Started by vcaeken 15 Dec 2010 09:13 AM. Topic has 0 replies and 1523 views
Page 1 of 1 (1 items)
Sort Posts:
  • Wed, Dec 15 2010 9:13 AM

    • vcaeken
    • Not Ranked
    • Joined on Fri, Aug 13 2010
    • Posts 3
    • Points 15
    Verilog-A large-signal model for an ohmic cantilever RF MEMS switch Reply

    /* Verilog-A large-signal model for a ohmic cantilever RF MEMS switch
    Content of OHMIC_CANTILEVER_RF_MEMS_SWITCH.va. Open-source code covered by BSD license.

    The Verilog-A large signal model can be used for operating point, small signal (AC, SP)
    and large signal (HB, PSS, QPSS) simulations, using ADS, SpectreRF or Qucs. It includes
    large-signal electromechanical effects, as well as small-signal Brownian and
    Johnson-Nyquist noise.

    Electromechanical: C-V hysteresis, hold-down, self-actuation,
        displacement-compensated squeeze-film damping
    Noise: Brownian noise, Johnson-Nyquist noise (not included: 1/f noise)

    23th of July, 2011
    K. Van Caekenberghe (vcaeken@umich.edu)
    Check for update: http://www-personal.umich.edu/~vcaeken
    Reference: "RF MEMS Theory, Design and Technology", by G. M. Rebeiz, Wiley, 2003 */

    `include "disciplines.vams"
    `include "constants.vams"

        inout s, d, g;
        electrical s, d, g;
        kinematic z, velocity;

        // Dimensions
        parameter real g_0=0.6e-6 from (0:inf); // nominal gap height [m]
        parameter real g_d=0.2e-6 from (0:inf); // nominal gap height minus dimple thickness [m]
        parameter real l=75e-6 from (0:inf); // beam length [m]
        parameter real t=5e-6 from (0:inf); // beam thickness [m]
        parameter real w=30e-6 from (0:inf); // beam width [m]
        parameter real W_c=10e-6 from (0:inf); // contact width [m]
        parameter real W=10e-6 from (0:inf); // electrode width [m]
        parameter real x=30e-6 from (0:inf); // beam anchor to electrode edge distance [m]
        // Electrical parameters
        parameter real R_c=1.0 from [0:inf); // contact resistance [Ohm]
        // Material parameters: beam (gold)
        parameter real rho=19.2e3 from (0:inf); // mass density [kg/m^3]
        parameter real E=78e9 from (0:inf); // Young's modulus [Pa]
        // Material parameters: gas (air):
        parameter real lambda=1.5e-7 from [0:inf); // mean-free path [m]
        parameter real mu=1.845e-5 from (0:inf); // viscosity coefficient [kg/(m.s)]
        // van der Waals and nuclear force coefficients
        parameter real c_1=10e-80 from [0:inf); // van der Waals force coefficient [N.m]
        parameter real c_2=10e-75 from [0:inf); // nuclear force coefficient [N.m^8]

        real A, b, C_ds, C_gs, C_u, F_c, F_e, F_s, f_m_0, I1, I2, IIP3, k_1, m, Q_e, Q_m, t_s_max, t_s_min, V_H, V_P, V_S;

        analog begin

        @ ( initial_step ) begin
            $strobe("\n%M: A (electrode area [m^2]) = %E",A);
            $strobe("%M: m (effective beam mass [kg]) = %E",m);
            $strobe("%M: k_1 (spring constant [N/m]) = %E",k_1);
            $strobe("%M: V_H (hold-down voltage [V]) = %E",V_H);
            $strobe("%M: V_P (pull-in voltage [V]) = %E",V_P);
            $strobe("%M: f_m_0 (mechanical resonant frequency [Hz]) = %E",f_m_0);
            $strobe("%M: Q_m (mechanical quality factor [) = %E",Q_m);
            $strobe("%M: t_s_max (maximum switching time [s], V_S = V_P) = %E",t_s_max);
            $strobe("%M: t_s_min (minimum switching time [s], V_S = V_P) = %E",t_s_min);
            $strobe("%M: C_u (up-state capacitance [F]) = %E",C_u);
            $strobe("%M: IIP3 (third order intercept [dBm], C=C_u, delta_f < f_m_0, f=10 GHz, Z=50 Ohm) = %E",IIP3);

        // b: damping coefficient [N.s/m] (displacement-compensated squeeze-film damping)
        $strobe("\n%M: Q_e (displacement-compensated mechanical quality factor [) = %E",Q_e);
        $strobe("%M: b (damping coefficient [N.s/m]) = %E",b);

        // Forces
        $strobe("%M: F_c (attractive van der Waals and repulsive nuclear forces [N]) = %E",F_c);
        //F_e=`P_EPS0*A*pow(V(s,g),2)/2*1/pow(g_0-g_d*tanh(Pos(z)/g_d),2); // Envelope simulation
        $strobe("%M: F_e (electrostatic force [N]) = %E",F_e);
        //F_s=k_1*g_d*tanh(Pos(z)/g_d); // Envelope simulation
        $strobe("%M: F_s (spring force [N]) = %E",F_s);

        // Nonlinear state-space description
        Pos(z):ddt(Pos(velocity))==1/m*(-b*Pos(velocity)-F_s+F_e+F_c+white_noise(4*`P_K*$temperature*b, "BROWNIAN_NOISE"));

        I2=V(d,s)/R_c+white_noise(4*`P_K*$temperature/R_c, "JOHNSON_NYQUIST_NOISE_R_c");
        if (Pos(z)<g_d)




    Filed under:
    • Post Points: 5
Page 1 of 1 (1 items)
Sort Posts:
Started by vcaeken at 15 Dec 2010 09:13 AM. Topic has 0 replies.