SRAM cell controlled by non-volatile memory cell

First and second complimentary static random-access-memory cell bit lines are coupled to first and second bit nodes through first and second access transistors controlled by a word line. A first inverter has an input coupled to the first bit node and an output coupled to the second bit node. A second inverter has an input coupled to the second bit node and an output coupled to the first bit node through a first transistor switch. A transistor switch is coupled between the output of a non-volatile memory cell and the first bit node. A control circuit coupled to the gate of the transistor switch. Either the drive level of the non-volatile memory cell is selected to overpower the output of the second inverter or the second inverter is decoupled from the first bit node while the output of the non-volatile memory cell is coupled to the first bit node.

BACKGROUND

Field of the Invention

The present invention relates to programmable integrated circuit devices that include static random access memory. More particularly, the present invention relates to controlling a static random-access memory cell from the output of a non-volatile memory cell such as a flash memory cell.

Traditional static-random-access memory (SRAM) cells used as the programmable elements of a programmable logic device such as a field-programmable gate array (FPGA) are shown below inFIG. 1. These cells each employ a pair of head-to-tail connected inverters10and12connected between complementary data bit nodes14and16.

These SRAM cells can be employed as programming elements of the programmable logic device by activating configuration wordline (CFGWL)18to drive configuration bit lines20and22by turning on transistors24and26. One or both of these configuration bit lines20and22are used to control the circuit node to be “programmed.” The SRAM cell can be written to or read from by activating distributed SRAM word line (DSWL)28, turning on transistors30and32to drive complementary data from the data bit nodes14and16to SRAM bit lines34and36or use data from SRAM bit lines34and36to force the states of data bit nodes14and16and of inverters10and12.

The SRAM cell may also have its state set by clocking in data using MOS transistors38,40,42,44, and46and inverter48as a serial shift register as shown. Data is entered onto data node14through transistor38and is clocked by the two complementary SHCLK clock signals as shown inFIG. 1to implement a master-slave flip-flop. The complement of the data is generated at transistor40and entered onto data node16through transistor42. Transistors44and46and inverter48pass the data to the next SRAM cell in the shift register chain.

SRAM cells shown inFIG. 1are similar to the types of SRAM cells used, for example, in the Virtex series of FPGAs, available from Xilinx, Inc. These types of cells are loaded from an off-chip non-volatile memory such as a standard flash memory chip.

FPGA devices available from Lattice Semiconductor Corporation and Altera Corporation use on-chip blocks of flash memory to load and control SRAM programmable elements in single chips of the type shown inFIG. 2. This adds an advantage of not needing a separate non-volatile memory chip, but the SRAM configuration still has to be loaded from the non-volatile memory block during power-up.

As shown inFIG. 2, the ispXP (eXpanded Programmability) technology available from Lattice Semiconductor combines the features of electrically-erasable-programmable-read-only memory (EEPROM) and SRAM technologies. A non-volatile EEPROM array50distributed within an ispXP device stores the device configuration. At power-up this information is transferred in a massively parallel fashion into SRAM cells shown as small squares inFIG. 2within dashed-line rectangle52that control the operation of the device under the control of control logic54. Configuration data may be entered through JTAG port56or sysCONFIG port58.

Numerous examples of non-volatile memory cells employable in programmable logic devices are known in the art. See, for example, the ProASIC line of field programmable gate arrays available from Actel Corporation and U.S. Pat. Nos. 5,587,603; 5,847,993; 6,144,580; and 6,356,478.

BRIEF DESCRIPTION OF THE INVENTION

According to one aspect of the present invention, a static random-access memory cell may be controlled by the output of a non-volatile memory cell. The non-volatile memory bit is located substantially adjacent to the SRAM bit. A circuit selectively couples the non-volatile memory cell to the SRAM memory cell so that the SRAM memory cell may be controlled by the output of the non-volatile memory cell.

According to another aspect of the present invention, a static random-access memory cell may be controlled by the output of a non-volatile memory cell such as a flash memory cell.

First and second complimentary static random-access-memory cell bit lines are coupled to first and second bit nodes through first and second access transistors controlled by a word line. A first inverter has an input coupled to the first bit node and an output coupled to the second bit node. A second inverter has an input coupled to the second bit node and an output coupled to the first bit node through a first transistor switch. A transistor switch is coupled between the output of a non-volatile memory cell and the first bit node. A control circuit is coupled to the gate of the transistor switch. Either the drive level of the non-volatile memory cell is selected to overpower the output of the second inverter or the second inverter is decoupled from the first bit node while the output of the non-volatile memory cell is coupled to the first bit node.

Another embodiment of the present invention improves on the operability of the circuit ofFIG. 1by adding the function of non-volatile memory control to the SRAM cell. A static random-access-memory cell has a bit node. A static random-access-memory cell bit line is coupled to the static random-access-memory cell bit node through a first access transistor having a gate coupled to a static random-access-memory cell word line. A configuration bit line is coupled to the static random-access-memory cell bit node through a second access transistor having a gate coupled to a configuration word line. A serial shift register stage has a clock line and coupled to the static random-access-memory cell bit node. A non-volatile memory cell has an output. A transistor switch is coupled between the output of the non-volatile memory cell and the static random-access-memory cell bit node. A control circuit is coupled to the gate of the transistor switch.

In an illustrative embodiment, first and second complimentary static random-access-memory cell bit lines are coupled to first and second bit nodes through first and second access transistors controlled by a SRAM word line. First and second complimentary configuration bit lines are coupled to first and second bit nodes through third and fourth access transistors controlled by a configuration word line. A first inverter has an input coupled to the first bit node and an output coupled to the second bit node. A second inverter has an input coupled to the second bit node and an output coupled to the first bit node. A serial shift register stage is coupled to the first and second bit nodes. The contents of a non-volatile memory bit and its complement are coupled to the first and second bit nodes through fifth and sixth access transistors controlled by a non-volatile memory clock line.

DETAILED DESCRIPTION OF THE INVENTION

The present invention uses the advantages of SRAM (distributed SRAM in lookup tables (LUTs), reprogrammable) and combines it with the advantages of non-volatile memory (live on powerup, reprogrammable in background) such as floating-gate (e.g., flash) technology, nanocrystal, SONOS, MONOS, solid-electrolyte switching devices, etc., to provide the programmable element for a programmable logic device such as an FPGA. The present invention also allows the introduction of non-volatility into known SRAM architectures, with minimal disruption to existing designs and products.

The present invention provides a non-volatile memory-controlled SRAM programmable element for an FPGA where a non-volatile programmable element is directly connected to, and proximately located to the SRAM programmable element. In contrast to the prior art, the non-volatile programmable elements are distributed throughout the configurable logic blocks of the FPGA rather than grouped together in a separate array.

According to one aspect of the present invention, a static random-access memory cell may be controlled by the output of a non-volatile memory cell such as a flash memory cell.

First and second complimentary static random-access-memory cell bit lines are coupled to first and second bit nodes through first and second access transistors controlled by a word line. A first inverter has an input coupled to the first bit node and an output coupled to the second bit node. A second inverter has an input coupled to the second bit node and an output coupled to the first bit node through a first transistor switch. A transistor switch is coupled between the output of a non-volatile memory cell and the first bit node. A control circuit is coupled to the gate of the transistor switch. Either the drive level of the non-volatile memory cell is selected to overpower the output of the second inverter or the second inverter is decoupled from the first bit node while the output of the non-volatile memory cell is coupled to the first bit node.

Another embodiment of the present invention improves on the operability of the circuit ofFIG. 1by adding the function of non-volatile memory control to the SRAM cell. A static random-access-memory cell has a bit node. A static random-access-memory cell bit line is coupled to the static random-access-memory cell bit node through a first access transistor having a gate coupled to a static random-access-memory cell word line. A configuration bit line is coupled to the static random-access-memory cell bit node through a second access transistor having a gate coupled to a configuration word line. A serial shift register stage has a clock line and coupled to the static random-access-memory cell bit node. A non-volatile memory cell has an output. A transistor switch is coupled between the output of the non-volatile memory cell and the static random-access-memory cell bit node. A control circuit is coupled to the gate of the transistor switch.

In an illustrative embodiment, first and second complimentary static random-access-memory cell bit lines are coupled to first and second bit nodes through first and second access transistors controlled by a SRAM word line. First and second complimentary configuration bit lines are coupled to first and second bit nodes through third and fourth access transistors controlled by a configuration word line. A first inverter has an input coupled to the first bit node and an output coupled to the second bit node. A second inverter has an input coupled to the second bit node and an output coupled to the first bit node. A serial shift register stage is coupled to the first and second bit nodes. The contents of a non-volatile memory bit and its complement are coupled to the first and second bit nodes through fifth and sixth access transistors controlled by a non-volatile memory clock line.

Referring now toFIG. 3, a schematic diagram shows a circuit including a static random-access memory cell controlled by a non-volatile memory cell according to one aspect of the present invention. The SRAM cell60of the present invention includes complementary bit nodes62and64. A first inverter66has its input coupled to the first bit node62and its output coupled to the second bit node64. A second inverter68has its input coupled to the second bit node64and its output coupled to the first bit node62through n-channel MOS control transistor70. Non-volatile memory cell72has its output coupled to first bit node62through n-channel MOS control transistor74. First bit node62is coupled to first bit line76through n-channel MOS access transistor78and second bit node64is coupled to second bit line80through n-channel MOS access transistor82. The gates of n-channel MOS access transistors78and82are coupled together to SRAM word line84. The gates of n-channel MOS control transistors70and74are coupled to control logic86. Inverter88may be used to drive a node at its output that may be controlled by SRAM cell60in the manner known for programming an FPGA or other programmable logic device. WhileFIG. 3shows inverter88coupled to second bit node64, persons of ordinary skill in the art will appreciate that it could instead be coupled to first bit node62.

It may be seen that SRAM cell60may be written to or read from in the conventional manner by activating SRAM word line84. Persons of ordinary skill in the art are familiar with pre-charging first and second bit lines76and80for read operations and driving complementary signals onto first and second bit lines76and80for write operations.

Control logic86is used to write the contents of non-volatile memory cell72into SRAM cell60. During normal operation of SRAM cell60, n-channel MOS control transistor70is turned on and n-channel MOS control transistor74is turned off. When a write operation to update the SRAM cell is desired, control logic86turns off n-channel MOS control transistor70to isolate first bit node62from the output of second inverter68to prevent the output of second inverter68from potentially “fighting” the output of non-volatile memory cell72. N-channel MOS control transistor74is then turned on, driving first bit node62to the logic level stored in non-volatile memory cell72. First inverter66inverts this logic state and second inverter68inverts the output of first inverter66. At this point n-channel MOS control transistor70can be turned back on and n-channel MOS control transistor74can be turned off. The SRAM cell60will be in a stable state with the logic level from non-volatile memory cell72on the first bit node62. From the foregoing discussion, it is seen that the design of control logic76is simple and straightforward for a person of ordinary skill in the art.

Persons of ordinary skill in the art will observe that n-channel MOS control transistor70can be omitted if the output of non-volatile memory cell72is buffered by a device stronger than second inverter68. In this case, the output of inverter68is connected directly to bit node62and control logic86becomes even simpler since it is required only to present a “update” pulse to the gate of n-channel control transistor74.

With the circuit shown inFIG. 3, the loading of the configuration on power-up does not take as long as with either off-chip flash memory or on-chip block non-volatile memory because the non-volatile programmable element is directly connected to the SRAM programmable element. In theory, the entire FPGA could be reprogrammed in a single load operation, though there are electrical reasons why an orderly series of operations might be used instead (e.g., to prevent current inrush/outrush on Vcc/Gnd due to too many devices turning on at once).

Referring now toFIG. 4, a schematic diagram shows how a prior-art circuit like that ofFIG. 1can be modified to incorporate the features of the present invention. SRAM cell90employs a pair of head-to-tail connected inverters92and94connected between complementary data bit nodes96and98.

SRAM cell90can be employed as a programming element for the programmable device by activating configuration word line (CFGWL)100to drive configuration bit lines102and104by turning on transistors106and108. As in the circuit ofFIG. 1, one or both of these configuration bit lines102and104are used to read or write the SRAM cell90. Similarly, SRAM cell90can be written to or read from by activating distributed SRAM word line110, thus turning on transistors112and114to either drive complementary data from the data bit nodes96and98to SRAM bit lines116and118or drive data from SRAM bit lines116and118onto data bit nodes96and98to force the states of inverters92and94.

SRAM cell90may also have its state set by clocking in data using MOS transistors120,122,124,126, and128and inverter130as a serial shift register as shown. Data (SHDATA) is clocked onto data node96through transistor120. The complement of the data is generated by transistor122and clocked onto data node98through transistor124using inverted one of the two complementary shift clocks (SHCLK!) coupled to the gates of transistors120and124to function as a master/slave flip-flop. Transistors126and128and inverter130pass the data to the next SRAM cell in the shift register chain.

In addition to this functionality of SRAM cell90, which is the same as its prior-art counterpart inFIG. 1, SRAM cell90may be directly loaded from non-volatile memory cell132by turning on transistors134and136by applying the FLCLK signal on line138to the gates of transistors134and136. Transistor140inverts the logic level of the bit in the non-volatile memory cell to place on bit node98. Persons of ordinary skill in the art will understand that either the non-volatile memory cell output needs to be buffered to overcome the outputs of inverter94or a non-volatile memory cell of sufficient strength must be used.

As shown inFIGS. 3 and 4, a non-volatile memory cell is connected to the SRAM cell via a NMOS transistor. Depending on the style of non-volatile memory cell used (e.g., how high a voltage is applied to a flash transistor to program or erase it), this may need to be a middle or high voltage transistor to protect the low-voltage transistors in the SRAM cell. A second function performed by this n-channel transistor is to logically isolate the non-volatile memory cell from the SRAM cell to allow the contents of the SRAM cell to be used as distributed SRAM or as a shift register. This would not be possible if the non-volatile memory cell was continuously forcing the SRAM cell to the state of the bit in the non-volatile memory cell. In such a case, the SRAM cell would be unnecessary.

In addition to the non-volatile memory cell circuit protection/isolation transistor, and feedback control transistor shown inFIG. 2, control circuitry may need to be added to the SRAM circuit ofFIG. 1in order to have it controlled by the non-volatile memory cell. This detailed circuit design of this control circuitry is beyond the scope of this disclosure; it could require some local logic or it could be done globally or some combination thereof. The important point is that the isolation transistor, the feedback control transistor, and the various other word lines and bit lines and controls inFIG. 1andFIG. 1Amust be controlled at all times—including when the non-volatile memory cell is loading the SRAM cell so that this operation works correctly. persons of ordinary skill in the art will appreciate that each non-volatile memory cell will need its own continuous sensing transistor since it is not disposed in an array having sense amplifiers.

The embodiments of an SRAM circuit controlled by a non-volatile memory cell shown inFIGS. 2 and 2Aare useful for configuring look-up tables (LUTs), or other applications where it is important to maintain SRAM features while employing non-volatile memory. For example, elsewhere on an FPGA device, where SRAM functionality such as configuring a LUT is not required, the non-volatile memory cell may be used to control a buffer or inverter directly as known in the art.

The SRAM cells controlled by non-volatile memory cells of the present invention can be arranged in arrays or otherwise organized into larger circuits to perform logic functions in a programmable logic device such as a field programmable gate array. In one embodiment, an array is formed from a group of memory cells organized into rows and columns, with each memory cell including a non-volatile memory cell controlling an SRAM cell. In another embodiment, the programmable logic in a programmable logic device is controlled by a combination of memory cells that include non-volatile cells controlling SRAM cells (these may be referred to as “compound” memory cells because they include both volatile (i.e., loses its state when power is turned off, such as SRAM) and non-volatile cells) and memory cells that include non-volatile cells, but do not control corresponding SRAM cells (these may be referred to as “basic” or “stand-alone” non-volatile cells because they do not include a volatile memory cell). For example, in a programmable logic architecture employing LUTs and multiplexers, the memory cells in the LUTs may be comprised of compound memory cells, while the cells performing other functions, such as controlling settings on multiplexers that control routing or other static functions, may be comprised of basic memory cells (i.e., stand-alone non-volatile cells). In other words, the address space of a non-volatile array in a programmable logic device may or may not be fully populated with SRAM bits.

While embodiments and applications of this invention have been shown and described, it would be apparent to those skilled in the art that many more modifications than mentioned above are possible without departing from the inventive concepts herein. For example, the SRAM cells have been shown as a six transistor (6T) cell, persons skilled in the art will understand that other SRAM cells are contemplated as being within the scope of the invention. The invention, therefore, is not to be restricted except in the spirit of the appended claims.