+ Post New Thread
Results 1 to 7 of 7
  1. #1
    Newbie level 6
    Points: 189, Level: 2

    Join Date
    Mar 2012
    Posts
    12
    Helped
    3 / 3
    Points
    189
    Level
    2

    Memristor simulation in HSPICE

    Hi,

    I am working with memristors and have been trying to simulate their behavior using HSPICE without success. Am using the non-linear dopant drift model from http://www.radioeng.cz/fulltexts/2009/09_02_210_214.pdf

    Just to confirm that the SPICE code I was using was correct I tried it in Pspice, as the testing in the above paper was done on Pspice. It worked on Pspice and I was able to simulate the code, i.e., observe the hysteresis, using it. The code I used in PSpice is very similar to the one available at:
    Simulation problem with pspice model of memristor

    Am including it here (from the above thread, but my code is similar):

    PSpice Code:

    * Ron, Roff - Resistance in ON / OFF States
    * Rinit - Resistance at T=0
    * D - Width of the thin film
    * uv - Migration coefficient
    * p - Parameter of the WINDOW-function
    * for modeling nonlinear boundary conditions
    * x - W/D Ratio, W is the actual width
    * of the doped area (from 0 to D)
    *
    .SUBCKT memristor Plus Minus PARAMS:
    + Ron=100 Roff=16K Rinit=11K D=10N uv=10F p=10

    * DIFFERENTIAL EQUATION MODELING *

    Gx 0 x value={ I(Emem)*uv*Ron/D^2*f(V(x),p)}
    Cx x 0 1 IC={(Roff-Rinit)/(Roff-Ron)}
    Raux x 0 1T
    * RESISTIVE PORT OF THE MEMRISTOR *

    Emem plus aux value={-I(Emem)*V(x)*(Roff-Ron)}
    Roff aux minus {Roff}

    *Flux computation*

    Eflux flux 0 value={SDT(V(plus,minus))}

    *Charge computation*

    Echarge charge 0 value={SDT(I(Emem))}

    * WINDOW FUNCTIONS
    * FOR NONLINEAR DRIFT MODELING *

    *window function, according to Joglekar
    .func f(x,p)={1-(2*x-1)^(2*p)}
    *proposed window function
    ;.func f(x,i,p)={1-(x-stp(-i))^(2*p)}
    .ENDS memristor

    Xmemrist aa 0 memristor
    Vtest aa 0 SIN(0 1.2V 1 0 0 0)

    .tran 0 3s 0 3m skipbp
    .probe
    .end

    ----------------------------------------------

    But when I try to use it with HSPICE it does not work, i.e., I am unable to observe the hysteresis when plotting the I-V characteristics. The I-V plot is linear, representing a simple resistor.

    My HSPICE code is shown below:


    * MEMRISTOR
    * Ron, Roff - Resistance in ON / OFF States
    * Rinit - Resistance at T=0
    * D - Width of the thin film
    * uv - Migration coefficient
    * p - Parameter of the WINDOW-function
    * for modeling nonlinear boundary conditions
    * x - W/D Ratio, W is the actual width
    * of the doped area (from 0 to D)
    *

    .SUBCKT memristor Plus Minus
    + Ron=100 Roff=16K Rinit=11K D=10N uv=10F p=10

    * DIFFERENTIAL EQUATION MODELING *

    . PARAM f(x,p)= '1-pow((2*x-1),(2*p))'
    Gx 0 x value='I(Emem)*uv*Ron/pow(D,2)*f(V(x),p)'
    Cx x 0 1 IC='(Roff-Rinit)/(Roff-Ron)'
    Raux x 0 1T

    * RESISTIVE PORT OF THE MEMRISTOR *
    Emem plus aux value='-I(Emem)*V(x)*(Roff-Ron)'
    Roff aux minus Roff

    *Flux computation*

    *Eflux flux 0 value={SDT(V(plus,minus))}

    *Charge computation*

    *Echarge charge 0 value={SDT(I(Emem))}

    * WINDOW FUNCTIONS
    * FOR NONLINEAR DRIFT MODELING *

    *window function, according to Joglekar
    *.func f(x,p)={1-(2*x-1)^(2*p)}
    *proposed window function
    *;.func f(x,i,p)={1-(x-stp(-i))^(2*p)}
    .ENDS memristor

    Xmemrist aa 0 memristor Ron=100 Roff=16K Rinit=11K D=10N uv=10F p=10
    Vtest aa 0 SIN(0 1.2V 1 0 0 0)
    .tran 100U 5
    .plot tran V(aa) I(Vtest)
    .option list node post=2 ingold=2
    .end

    ---------------------------------------------

    The changes I made from Pspice to HSPICE are:
    1. changed the 'window' function definition from Pspice to HSPICE equivalent,
    2. commented the flux and charge computation sections, as HSPICE does not have a 'SDT' equivalent function and they are not needed to observe the memristor characteristics.

    Am not able to figure out the issue, any help would be useful.

    --
    Thanks,
    Basawaraj

    •   Alt31st March 2012, 03:21

      advertising

        
       

  2. #2
    Newbie level 6
    Points: 189, Level: 2

    Join Date
    Mar 2012
    Posts
    12
    Helped
    3 / 3
    Points
    189
    Level
    2

    Re: Memristor simulation in HSPICE

    Hi,

    Came up with a idea to fix my HSPICE code. For this I have to access the nodes inside the subcircuit. This is pretty easy in HSPICE, but am not sure how to do this in PSPICE.

    I tried by changing my memristor symbol, that is added another port at node "aux" of the subcircuit so that I could probe it. As I am only interested in probing it this port was left unconnected in the circuit. The simulation failed because this node was left unconnected.

    Hence, is it possible to probe nodes inside a PSPICE subcircuit? If so how?



  3. #3
    Newbie level 6
    Points: 189, Level: 2

    Join Date
    Mar 2012
    Posts
    12
    Helped
    3 / 3
    Points
    189
    Level
    2

    Re: Memristor simulation in HSPICE

    Hi,

    Found a solution, have to turn off the runlvl parameter, i.e., set it to zero



    •   Alt28th May 2012, 22:42

      advertising

        
       

  4. #4
    Newbie level 1
    Points: 30, Level: 1

    Join Date
    Oct 2012
    Posts
    1
    Helped
    0 / 0
    Points
    30
    Level
    1

    Re: Memristor simulation in HSPICE

    I tried to run your posted code and turned off runlvl as you suggested,
    .option list node post=2 ingold=2 runlvl=0

    However, it did not work as I was not able to observe hysteresis. Anything else should I modify to get it working? Do you mind to post your final working HSPICE code? Thanks in advance.



  5. #5
    Newbie level 2
    Points: 159, Level: 2

    Join Date
    Nov 2012
    Posts
    2
    Helped
    0 / 0
    Points
    159
    Level
    2

    Re: Memristor simulation in HSPICE

    Hi basawaraj,

    Would you mind sharing your final HSPICE description? For any reason, no matter I made the changes you recommended it does not work for me. We are using Synopsys' HSPICE 2010.

    Thanks in advance!



  6. #6
    Newbie level 1
    Points: 13, Level: 1

    Join Date
    May 2013
    Posts
    1
    Helped
    1 / 1
    Points
    13
    Level
    1

    Re: Memristor simulation in HSPICE

    Hi,
    I tested this code with hspice(V2008).At first it doesn't work and give me this error " **warning** (c:\users\sh.k\desktop\mem12.sp:17) ignore unrecognizable command card ." and then I checked every thing in this program. Finally I think I found what is wrong!
    In this line: ". PARAM f(x,p)= '1-pow((2*x-1),(2*p))' " you should be delete the spice between "." and "PARAM". you do it and check again!
    By the way, in Hspice it is better that "STD" changed to "INTEG".

    ---------
    Shahab


    1 members found this post helpful.

  7. #7
    Newbie level 2
    Points: 159, Level: 2

    Join Date
    Nov 2012
    Posts
    2
    Helped
    0 / 0
    Points
    159
    Level
    2

    Re: Memristor simulation in HSPICE

    Shahab, Thank you so much for the reply! I'm going to give ti a try!



+ Post New Thread
Please login