# Butterflies, Nullclines, and Arrows

In my last post, I began with three questions:

- Each line of the butterfly curve is the DC transfer function of one inverter in the SRAM cell. Why does it make sense to draw the DC transfer function of an isolated two transistor circuit on top of a plot that represents a closed loop six transistor circuit?
- Why is SNM measured by fitting the largest box possible inside of the butterfly curve lobes? Why not a line, or a circle?
- When a cell is written to, do the cell node voltages follow the paths shown by the butterfly curve?

Question #2 was answered as we discovered that the butterfly curve of a 6T SRAM cell is really just the nullcline points of its state space, and that the ideal 6T SRAM cell has nullclines that form square boxes. A perfect cell would have squares whose sides are Vdd/2 – so the closer our noise margin is to that, the better.

Now let’s turn our attention to answering questions #1 and #3. First, recall the following figure showing how the cell nodes (represented by the orange ball) move through the state space from an arbitrary point to one of the stable solutions.

At each point along the trajectory, there are two vectors “pushing” on the cell nodes. In the last post, we drew the state space in 3D with different heights to visualize the forces being exerted on the cell. In reality, for a 6T cell, these forces are currents being injected into the cell node capacitances by the cross coupled inverters. Take a look at this schematic showing the 6T cross-coupled core. To see why these vectors are important, I’ve added two DC voltage supplies to “force” the cell nodes to stay at various points in the trajectory above.

Since inverter *f *is trying to moves the cell’s Vx voltage, then the DC supply must sink/source a current If to keep it from moving. Similarly, inverter *g *is trying to move Vy, so it’s DC supply must sink/source a different amount of current Ig. These currents are equivalent to the vectors in the trajectory plot above. Now, this is all well and good for positions (1,2,4,5) along the trajectory. But what about position (3)? At position (3), there is no red current component since it is a nullcline point (inflection point.) This means that inverter *f* is doing nothing! So whatever Vy and Vx are at position (3) must be a point on inverter *f*‘s DC voltage transfer curve. To put this another way, *all of the points on inverter f’s DC transfer curve are nullcline points.* So to get a butterfly curve, all we need to do is simulate the transfer curve for the two inverters by themselves. Then we can draw them on top of the SRAM cell state space and be confident that these points are nullcline points. This is the method described in Seevinck’s 1987 JSSC paper. He simply simulates the DC transfer curve of the inverter in isolation, and uses voltage controlled voltage sources to rotate this curve 45 degrees to make SNM calculation simpler.

Knowing this nullcline – butterfly equivalence answers question #1. We can also now answer question #3. When a 6T SRAM cell is read / written to, the butterfly curve has nothing to do with the actual path of the cell nodes. As we have shown, the butterfly curves only tells us the points of inflection in the cell node path, not the path itself.

Up to this point, we have only considered the 6T cell. What about other cell types? 4T resistor load, 5T, Portless, 7T, 8T, 10T? For these cells, the situation can get more complex. Take a look at the next figure, which shows a Portless cell during a read operation.

As you can see, there is an additional current Iaxs to account for. This means that we can no longer simply plot the transfer curve of the inverters on the cell’s state space to find the nullclines. If we did, then the AXS transistor would be unaccounted for.

So how do we find the nullclines for non-6T cells? My suggestion is to map out the vectors in the entire state space, and then look for the nullclines directly. Without getting into the gory details, you basically pick a bunch of points in the state space (quantize it) and then for each point, figure out the cell node currents. These currents can be found using the method we’ve been talking about – inserting DC voltage supplies and measuring how much current is required to hold the cell nodes at one location in the state space. Using the* I = C(dV/dt)* relation, we can quickly back calculate *dV/dt* for every *I* that we measure. These *dV/dt* values describe the state space vectors and can be used to locate the nullclines.

In the next figure, you’ll see a vector field for a 6T cell. For every point in the space, I ran a DC simulation using the described method to extract *dV/dt* for each dimension. The trends look exactly as expected with the vectors funneling the cell toward the stable nodes.

If we want to figure out the butterfly curve and the SNM, we simply trace the nullclines by interpolating the vectors to locate points of inflection. An example is shown in the next figure where the nullclines are traced and the SNM is calculated using the largest square method.

This type of analysis is great since it allows us to analyze stability for ANY type of SRAM cell without doing anything special to the cell schematic. In addition, by having the entire vector field mapped out, we can do a great deal more than simply finding nullclines and butterfly curves. Such vector fields can be used for dynamic stability measurements, separatrix tracing, separatrix affinity measurements, and quasi-transient qualification, to name a few examples. Unfortunately, generating the vector fields by hand or with PERL / SPICE scripts can be quite tedious. To address this need, I’ve built a Python tool for automatically generating vector fields and analyzing them. In fact, the examples above are direct outputs from this tool. Feel free to read more about it and download it for your own use at: http://vlsitools.com/?req=arrows.

Please tell me the method how SNM is calculated using the largest square method and what will be its equations on matlab.

snm equation and cuve for 4t sram,5t,6t,7t

thanx a lot in advance

some insights i got was that, given the butterfly curve and its meaning:

1. Multiple rectangles of differnt sizes may be embedded in the curve . They all reffer to different values of noise that will cause a switch in the value held in the cross couple inverter pair.

2. Lets say the size of these rectangles is (a,b). All the nodes of the rectangles reffer to (voh,vol etc levels)

2. Inserting a noise voltage at any node makes the buterfly curve tighter (less area) .

3. Inserting noise of voltage (a,b) will make the curve linear ! This is the condition where it progessess to metastablitity.

So if you make a random rectangle in the butterfly curve and insert approproate (a,b) noise voltages the state will flip known.

Why a square ? noise is as likely to be on one node as another . Given that the sqaure represents the minimum noise equally applied to both nodes that will cause an error .

IEEl TRANSACTIONS ON EDUCATION, VOL 36

Noise Margin

, NO. 4 , NOVEMBER 1993

Criteria for Digital Logic Circuits

John R. Ha u s e r , Fellow, IEEE is an excellent paper regarding this

sir please tell me how to find butterfly curve for 6t SRAM cell anfd 4t SRAM cell .

Pravin – Take a look at the Arrows user manual / DATE paper in the Software link above.

Hi, do you have a matlab code for plotting the butterfly curve for the inverter?

Thanks

Good day I am so happy I found your site, I really found you by mistake, while I was looking on Digg for something else, Anyways I am here now and would just like to say thanks a lot for a incredible post and a all round interesting blog (I also love the theme/design), I don抰 have time to look over it all at the minute but I have book-marked it and also included your RSS feeds, so when I have time I will be back to read more, Please do keep up the awesome job.

Firstly sir explanation was very good.

Right now I got SNM curve of SRAM while it is reading.Sir the first stable point is not coming (0,1), it is coming around(0.3,1). Can you explain why?

My best guess would be leakage current.