Embodiments described herein relate generally to data storage, and particularly to methods and systems for recovering data failing in multiple word lines.
In various storage systems, a controller stores data in multiple memory devices using a redundant storage scheme supporting data recovery, such as, for example, a redundant array of independent disks (RAID) scheme. Methods for data recovery in nonvolatile storage systems are known in the art. For example, U.S. Pat. No. 9,996,417 describes a controller that communicates with a multi-plane memory comprising: multiple memory cells organized in at least two different memory planes that are accessible in parallel; and multiple word lines (WLs), wherein each WL traverses the different memory planes and is connected to respective cell-groups of the memory cells in the different memory planes, wherein in a first failure mode, two or more cell-groups belonging to different WLs fail but only in a single memory plane, and wherein in a second failure mode, a plurality of cell-groups belonging to a single WL fail in multiple memory planes; and a processor, which is configured to assign multiple cell-groups of the memory cells to a parity group, such that (i) no two cell-groups in the parity group belong to a same WL, and (ii) no two cell-groups in the parity group belong to adjacent WLs in a same memory plane, wherein the processor is further configured to, upon detecting a failure to access a cell-group in the parity group due to either the first failure mode or the second failure mode but not both the first and second failure modes simultaneously, recover data stored in the cell-group using one or more remaining cell-groups in the parity group.
An embodiment that is described herein provides a controller, including an interface and storage circuitry. The interface is configured to communicate with a memory including multiple memory cells that store data in a number of programming levels higher than two. The memory cells are organized in multiple Word Lines (WLs), each WL connects to one or more cell-groups of the memory cells. The memory cells in some of the cell-groups suffer from an impairment that has a different severity for reading data units of different respective bit-significance values. The storage circuitry is configured to assign multiple parity groups to multiple data units stored in cell-groups belonging to multiple consecutive WLs, so that a same parity group is assigned to data units of different bit-significance values in neighboring groups of Nwl consecutive WLs, and upon detecting a failure to access a given data unit of a given parity group, due to the impairment, to recover the given data unit using one or more other data units assigned to the given parity group, and that are stored in cell-groups other than the cell-group storing the given data unit.
In some embodiments, the storage circuitry is configured to calculate redundancy data over the given data unit and the other data units, to store the redundancy data prior to reading the given data unit, and to recover the given data unit upon failure by retrieving the redundancy data and the other data units, and reproducing the given data unit based on the retrieved redundancy data and the other data units. In other embodiments, the impairment is caused due to memory cells in the given cell-group that are erased to an erasure programming level, but are read falsely as being programmed to a programming level other than the erasure programming level. In yet other embodiments, the impairment is caused due to a difference in temperature in programming and reading the memory cells of the given cell-group, causing a shift of an optimal setting of at least one read threshold beyond a voltage range that the memory supports for setting read thresholds.
In an embodiment, the data units span a cell-group defined in a list consisting of an entire WL, one or more data pages, and one or more code words (CWs) calculated using an error correction code (ECC). In another embodiment, the storage circuitry is configured to assign a number Npg of different parity groups to Npg respective data units stored in a group of Nwl consecutive WLs, in accordance with a first pattern, and to assign the Npg parity groups to data units stored in another group of Nwl consecutive WLs, in accordance with a second pattern including a permutation of the first pattern. In yet another embodiment, the memory cells in each WL are organized in multiple strings, and the storage circuitry is configured to assign a same parity group to data units belonging to different strings, in selected neighboring groups of Nwl consecutive WLs.
In some embodiments, the memory cells in each WL are organized in multiple planes, and the storage circuitry is configured to assign a same parity group to data units belonging to different planes, in selected neighboring groups of Nwl consecutive WLs. In other embodiments, the memory cells in each WL are organized in multiple strings and multiple planes, and the storage circuitry is configured to assign a same parity group to data units belonging to one of (i) different strings and same planes (ii) different planes and same strings or (iii) both different strings and different planes, in selected neighboring groups of Nwl consecutive WLs.
There is additionally provided, in accordance with an embodiment that is described herein, a method for data storage, including, in a controller that communicates with a memory including multiple memory cells that store data in a number of programming levels higher than two, the memory cells are organized in multiple Word Lines (WLs), each WL connects to one or more cell-groups of the memory cells, and the memory cells in some of the cell-groups suffer from an impairment that has a different severity for reading data units of different respective bit-significance values, assigning multiple parity groups to multiple data units stored in cell-groups belonging to multiple consecutive WLs, so that a same parity group is assigned to data units of different bit-significance values in neighboring groups of Nwl consecutive WLs. Upon detecting a failure to access a given data unit of a given parity group, due to the impairment, the given data unit is recovered using one or more other data units assigned to the given parity group, and that are stored in cell-groups other than the cell-group storing the given data unit.
These and other embodiments will be more fully understood from the following detailed description of the embodiments thereof, taken together with the drawings in which:
Various storage systems comprise a controller that stores data in one or more memory devices. The memory devices comprise memory cells that are typically arranged in one or more arrays of rows and columns. A row of memory cells is also referred to as a word line (WL). In some embodiments, the memory cells are arranged in multiple sub-arrays such as “planes” that share a common WL. In a three-dimensional configuration, sub-arrays may comprise planes, “strings” or both.
The controller may store data to WLs in units that are referred to as data pages. In a multi-level cell (MLC) device, the controller stores both a least significant bit (LSB) page and a most significant bit (MSB) page to a group of memory cells, using two programming levels. Similarly, in a three-level cell (TLC) device, the controller stores a LSB data page, a MSB data page and an upper-significant (USB) page to a group of the memory cells, using eight programming levels. A quad-level cell (QLC) device can be programmed to assume one of sixteen possible programming levels.
Embodiments that are described herein provide methods and systems for recovering data in a nonvolatile memory, in which some of the memory cells may suffer from an impairment that has a different severity for reading data of different respective bit-significance values. Impairments of this sort are caused, for example, due to “erase penetration” or due to a difference in the temperatures between the time of programming and the time of reading, also referred to herein as “cross-temperature.” In erase penetration, threshold voltages of erased memory cells are shifted to higher values and may be falsely interpreted as programmed to a programming level other than the erasure level. In a cross-temperature situation, an optimal setting of a read threshold may fall outside a supported range of read thresholds. In such cases, setting of a read threshold non-optimally may result in a read failure. The erase penetration impairment described above tends to cause read failures in multiple consecutive WLs, possibly in a common plane or string.
In the disclosed embodiments, the memory controller defines a recovery scheme that supports recovery of data that failed due to impairments such as erase penetration and cross-temperature that may occur over multiple consecutive WLs. The recovery scheme is defined for a certain type of data units that the controller reads from respective cell-groups in the memory. Each data unit corresponds to some bit-significance value. A data unit may span, for example, the memory cells of an entire WL, or part thereof such as, for example, one or more data pages, one or more code words (CW) that were encoded using a suitable error correction code (ECC).
In some embodiments, in defining the recovery scheme, the memory controller assigns a number Npg of parity groups to multiple data units stored in cell-groups belonging to multiple consecutive WLs, wherein a same parity group is assigned to data units of different bit-significance values in neighboring groups of Nwl consecutive WLs. For example, in an MLC device, a common parity group alternates between LSB data unit and MSB data unit in neighboring groups of Nwl consecutive WLs. Such alternation of the bit-significance value increases the number of consecutive WLs from Nwl to 2·Nwl that are recoverable with high probability. By alternating between two different data units (e.g., code words CW0 and CW1) every 2·Nwl consecutive WLs, the number of consecutive WLs that are recoverable with high probability increases to 4·Nwl, in this example. Alternatively, a recovery scheme can be designed, in which the number of parity groups reduces by a respective factor of two or four for protecting Nwl consecutive WLs.
Recovery schemes for TLC and QLC can be designed using similar principles. For example, in TLC and QLC, a common parity group alternates among data units of three (TLC) or four (QLC) bit-significance values in neighboring groups of Nwl consecutive WLs.
In some embodiments, the memory controller calculates redundancy data over multiple data units assigned to a given parity group, and that are stored in different respective cell-groups, and stores the calculated redundancy data, e.g., in the memory device. Upon detecting a failure to access a given data unit of the given parity group, due to the impairment, the memory controller recovers the given data unit by retrieving the redundancy data and the other data units used in calculating that redundancy data. The memory controller reproduces the given data unit based on the retrieved redundancy data and the other data units.
In some embodiments, the memory controller assigns Npg different parity groups to Npg respective data units stored in a group of Nwl consecutive WLs, in accordance with a first pattern, and further assigns these Npg parity groups to data units stored in another group of Nwl consecutive WLs, in accordance with a second pattern comprising a permutation of the first pattern.
In an embodiment, the memory controller assigns a same parity group to data units belonging to one of (i) different strings and same planes, (ii (different planes and same strings or (iii) both different strings and different planes, in selected neighboring groups of Nwl consecutive WLs.
In the disclosed techniques, a redundancy-based recovery scheme modifies the assignment of a parity group to data units having different bit-significance values, and possibly different physical dimension such as string and/or plane, in neighboring groups of Nwl consecutive WLs. In the disclosed recovery schemes, the number of consecutive WLs that are recoverable with high probability increases without increasing the number of parity groups required, and thus retaining low storage footprint for redundancy information.
Memory system 20 comprises a Non-Volatile Memory (NVM) device 24, which stores data in a memory array 28 that comprises multiple memory cells 32, such as analog memory cells. The memory cells are arranged in multiple memory blocks 34. In the context of the present patent application, the term “analog memory cell” is used to describe any memory cell that holds a continuous, analog value of a physical parameter, such as an electrical voltage or charge. Memory array 28 may comprise solid-state memory cells 32 of any kind, such as, for example, NAND, NOR and Charge Trap Flash (CTF) Flash cells, phase change RAM (PRAM, also referred to as Phase Change Memory—PCM), Nitride Read Only Memory (NROM), Ferroelectric RAM (FRAM) or Resistive RAM (RRAM). Although the embodiments described herein refer mainly to analog memory, the disclosed techniques may also be used with various other memory types.
The charge levels stored in the memory cells and/or the analog voltages or currents written into and read out of the memory cells are referred to herein collectively as analog values, storage values or analog storage values. Although the embodiments described herein mainly address threshold voltages, the methods and systems described herein may be used with any other suitable kind of storage values. In the description that follows, the terms “analog values” and “threshold voltages” are used interchangeably.
Memory system 20 stores data in analog memory cells 32 by programming the memory cells to assume respective memory states, which are also referred to as programming levels. The programming levels are selected from a finite set of possible levels, and each programming level corresponds to a certain nominal storage value. For example, a 2 bit/cell Multi-Level Cell (MLC) can be programmed to assume one of four possible programming levels by writing one of four possible nominal storage values into the cell. Similarly, a 3 bit/cell device and a 4 bit/cell device, also referred to as a Triple-Level Cell (TLC) and Quad-Level Cell (QLC), can be programmed to assume one of eight and one of sixteen possible programming levels, respectively. A memory cell that stores a single bit (i.e., using two programming levels) is also referred to as a Single-Level Cell (SLC).
Memory device 24 comprises a reading/writing (R/W) module 36, which converts data for storage in the memory device to analog storage values and writes them into memory cells 32. In alternative embodiments, the R/W module does not perform the conversion, but is provided with voltage samples, i.e., with the storage values for storage in the memory cells. When reading data out of memory array 28, R/W module 36 converts the storage values of memory cells 32 into digital samples having an integer resolution of one or more bits. Data is typically written to and read from the memory cells in data units that are referred to as data pages (or simply pages, for brevity).
For reading a data page, the R/W module typically sets one or more read thresholds, e.g., at about mid-points between adjacent nominal programming levels, and senses the threshold voltages of the memory cells relative to the read thresholds. In some embodiments, the R/W module supports setting read thresholds only within a predefined range of voltages.
Memory system 20 comprises a memory controller 40 that performs storage and retrieval of data in and out of memory device 24. Memory controller 40 comprises a memory interface 44 for communicating with memory device 24, a processor 48, and an error correction code (ECC) module 50. The memory controller communicates with the memory device via memory interface 44 over a communication link 46. Communication ink 46 may comprise any suitable link or communication bus, such as, for example, a PCIe bus.
In some embodiments, the memory controller communicates with the memory device storage commands such as erase, program and read command. The memory controller may communicate with the memory device control commands, e.g., for configuring read thresholds. The disclosed techniques can be carried out by memory controller 40, by R/W module 36, or both. Thus, in the present context, memory controller 40 and R/W module 36 are referred to collectively as “storage circuitry” that carries out the disclosed techniques.
Memory controller 40 communicates with a host 52, for accepting data for storage in the memory device and for outputting data retrieved from the memory device. In some embodiments, ECC module 50 encodes the data for storage using a suitable ECC and decodes the ECC of data retrieved from the memory. ECC module 50 may comprise any suitable type of ECC, such as, for example, Low Density Parity Check (LDPC), Reed-Solomon (RS) or Bose-Chaudhuri-Hocquenghem (BCH), can be used. The word produced by the ECC encoder in a single encoding operation, in accordance with the rules defining the underlying code, is also referred to as a code word (CW).
Data read from a group of memory cells may contain one or more errors. The number of errors typically increases when the read threshold used for sensing the memory cells is positioned non-optimally. A read operation fails, for example, when the number of errors in the read data exceeds the ECC capabilities.
Memory controller 40 may be implemented in hardware, e.g., using one or more Application-Specific Integrated Circuits (ASICs) or Field-Programmable Gate Arrays (FPGAs). Alternatively, the memory controller may comprise a microprocessor that runs suitable software, or a combination of hardware and software elements.
The configuration of
In the example memory system configuration shown in
In some embodiments, processor 48 of memory controller 40 comprises a general-purpose processor, which is programmed in software to carry out the functions described herein. The software may be downloaded to the processor in electronic form, over a network, for example, or it may, alternatively or additionally, be provided and/or stored on non-transitory tangible media, such as magnetic, optical, or electronic memory.
In an example configuration of memory array 28, memory cells 32 are arranged in multiple rows and columns, and each memory cell comprises a floating-gate transistor. The gates of the transistors in each row are connected by word lines, and the sources of the transistors in each column are connected by bit lines. The memory array is typically divided into multiple memory pages, i.e., groups of memory cells that are programmed and read simultaneously.
In the example of
In some embodiments, memory pages are sub-divided into sectors. Data pages may be mapped to word lines in various manners. Each word line may store one or more data pages. A given data page may be stored in all the memory cells of a word line, or in a subset of the memory cells (e.g., the odd-order or even-order memory cells). To access a specific word line or data page, the memory device is provided with a respective physical address.
Erasing of the memory cells in memory array 28 is usually carried out in blocks that contain multiple memory pages. Typical memory devices may comprise thousands of erasure blocks, also referred to as “memory blocks” 34. In a typical two-dimensional (2D) two-bit-per-cell MLC device, each erasure block is on the order of 128 word lines, each comprising several tens of thousands of memory cells. Two-bit-per-cell devices having 128 word lines per erasure block that store a data page per bit-significance value would have 256 data pages per erasure block, and three-bit-per-cell devices would have 384 data pages per block. A typical three-dimensional (3D) device that stores three bits per cell may comprise, for example, 4 strings per block, wherein each string comprises several thousand layered columns that each comprises 48 layers of cell columns. Such a 3D device has 12 data pages per a physical word line, or 576 data pages per an erasure block. Alternatively, other block sizes and configurations can also be used.
Nonvolatile memories may suffer from various types of impairments that typically cause a large number of errors in reading stored data, e.g., beyond the error correction capabilities of ECC 50. Impairments resulting in severe reliability degradation may result, for example, due to physical defects in the storage array created at manufacturing time, or develop during the lifetime of the memory device. Alternatively or additionally, storage reliability may degrade due to varying environmental conditions such as temperature.
In the present context, we refer mainly to impairments in which data units of different bit-significance values experience different severity levels of degradation. Such impairments may affect multiple WLs that are physically close to one another in the memory array, e.g., due to short circuit.
Consider a group of memory cells 32 in which a least significant bit (LSB) data page and a most significant bit (MSB) data page are stored. The diagrams in
Each of programming levels L0 . . . L3 corresponds to a pair of bits comprising a LSB and a MSB. In the present example, in storing data to the group of the memory cells, the memory controller encodes 2-bit groups into the four programming levels using a Gray code so that only one bit-significance value changes between neighboring programming levels. In this example, programming level L0 is assigned to erased memory cells and is associated with (LSB, MSB) bit pair ‘11’, whereas programming levels L1, L2 and L3 correspond to respective (LSB, MSB) bit pairs ‘10’, ‘00’ and ‘01’, thus implementing a Gray code.
As noted above, reading the memory cells of memory device 24 typically involves setting one or more read thresholds and sensing the threshold voltages of the memory cells being read. In
In
The upper diagram in
The lower diagram in
As noted above,
A similar scenario occurs in the lower diagram of
In the
Although in
In some embodiments, memory controller 40 applies to the memory device 24 a data recovery scheme by assigning to data units stored in the memory device a predefined number of parity groups. A data unit for a given bit-significance value may be stored in memory cells of an entire WL, a data page, a code word of the underlying ECC, or any other suitable type of data unit. In some embodiments, a data unit comprises multiple code words, or multiple page types.
In some embodiments, the memory controller calculates a redundancy over multiple data units that belong to a common parity group. The memory controller calculates respective redundancy data for each parity group, for example, by applying a bitwise XOR operation over multiple data units belonging to the parity group in question. The memory controller stores the resulting redundancy data, for example, in a memory block containing one or more of the data units that were used for calculating the redundancy data, or in a different memory block.
To recover a data unit whose reading has failed, the memory controller (i) reads other data units of the parity group assigned to the failing data unit that were used in calculating the redundancy data (ii) reads the relevant redundancy data and (iii) applies a bitwise XOR operation over the read data units and the redundancy data. Such a recovery method requires that all of the other data units and the redundancy data are retrieved correctly from the memory array.
In some embodiments, the memory controller defines recovery scheme 70 by assigning parity groups 74 to data units stored, wherein each data unit is associated with a bit-significance value. The bit-significance value is also referred to herein as a “page type”, denoted “PT” in the figure. In the present MLC example, the page types supported comprise bit-significance values LSB and MSB.
In recovery scheme 70, each WL is associated with one or more dimension types. A dimension type (denoted DIM in the figure) comprises, for example, a data unit, a memory string or a memory plane. In
In some embodiments, the recovery scheme in
In some embodiments, the memory controller defines recovery scheme 70 by assigning different parity groups to a plurality of data units in a number Nwl of consecutive WLs. In the present example, the memory controller assigns 12 parity groups denoted 0 . . . 11 to LSB and MSB data units over three consecutive WLs (Nwl=3) and two code words, as depicted by a dotted line rectangle that includes WL0, WL1 and WL2. For example, LSB CW0 and LSB CW1 in WL0 are assigned respective parity groups 0 and 2. As another example, MSB CW0 and MSB CW1 in WL1 are assigned respective parity groups 5 and 7. In the present example, the total number of parity groups, denoted Npg, is given by:
Npg=Nwl·Npt·Ndim Equation 1:
wherein Nwl denotes the number of consecutive WLs over which the parity groups are defined, Npt denotes the number of page types (bit-significance values) used, and Ndim denotes the number of dimension values. In
In the present context, the term “pattern” refers to an order in which the Npg parity groups are assigned to data units over bit-significance values and physical dimensions in a group of Nwl consecutive WLs. The pattern initially assigned to a group of Nwl consecutive WLs (e.g., WL0 . . . WL2) is referred to herein as a “default pattern.”
In
In some embodiments, the memory controller defines the recovery scheme, by assigning permutations of the default pattern defined over WL0 . . . WL2, to data units in subsequent groups of Nwl consecutive WLs. In the example of
In some embodiments, the pattern of assigning parity groups to data units in a subsequent group of Nwl consecutive WLs uses the same bit-significance value as the default pattern, but modifies one dimension value. Such permutations apply, for example, in WLs whose indices are separated by K·Nwl WLs, wherein K is an integer number and 2≤K. In the example of
By assigning parity groups to data units using one or more permutations of a default assignment pattern, a cycle of the recovery scheme can be extended beyond Nwl consecutive WLs. For example, by modifying the page type between neighboring groups of Nwl consecutive WLs, the cycle of the recovery scheme extends from Nwl consecutive WLs to Npt·Nwl consecutive WLs, e.g., to 2·Nwl in the example of
The recovery scheme of
The memory device in
In some embodiments, the recovery scheme is specified for a single dimension type, such as the DATA UNIT dimension in
A recovery scheme that is specified over multiple different dimension types may be specified, e.g., over both the DATA UNIT and STRING dimension types. In such embodiments, between selected neighboring groups of Nwl consecutive WLs, (i) only one dimension type is modified, or (ii) multiple dimension types are modified together. Example recovery schemes that are defined for both the DATA UNIT dimension type and the STRING dimension type are depicted in Table 1 and Table 2 below. In this example, the DATA UNIT dimension type has dimension values CW0 and CW1, and the STRING dimension type has dimension values STR0 and STR1. For the sake of clarity, Table 1 and Table 2 include only the first WLs in the respective groups of 3 consecutive WLs, in this case, WL0, WL3, WL6, WL9 and so on.
As seen in Table 1, the parity group assigned to LSB/MSB data units alternates between 0/1 and 1/0 between WLO, WL3, WL6, WL9 and so on. In addition, the 0/1 assignment in CWO, is modified from STRO in WLO to STR1 in WL6.
In Table 2, in the transition from WL0 to WL3, the LSB/MSB assignment of parity groups 0/1 in STR0 is modified to 1/0 in STR1, so that both the page type and the string are modified together.
The method begins with processor 48 defining (or receiving) design parameters required for constructing a recovery scheme, at a parameter definition step 100. The design parameters comprise, for example, the number Npg of parity groups, the default pattern of assigning parity groups to data units over Nwl consecutive WLs, and one or more dimension types and their respective dimension values. At step 100, the processor additionally specifies assignment rules to be applied among multiple groups of Nwl consecutive WLs. The assignment rules specify, for example, the order in which a given parity group is assigned across multiple dimension types. An example recovery scheme 70 was described in
At an initial assignment step 104, the processor assigns the Npg parity groups to data units of multiple bit-significance values in accordance with the default pattern. In some embodiments, based on the design parameters, the processor calculates the total number of consecutive WLs in one cycle of the recovery scheme. The number of WLs in the cycle is an integer multiple of Nwl.
At a loop assignment step 108, the processor assigns parity groups to data units of a subsequent group of Nwl consecutive WLs. Typically, at step 108 the indices of the respective first WLs in the previous and current groups of Nwl consecutive WLs differ by Nwl. At a loop termination step 112, the processor checks whether the recovery scheme is complete, and if not, loops back to step 108 to assign parity groups to data units in a subsequent group of Nwl consecutive WLs. The processor may check, for example, whether the total number of WLs in a full cycle of the recovery scheme has been processed.
When at step 112, the recovery scheme is complete, the processor proceeds to a redundancy calculation step 116. At step 116, the processor calculates Npg redundancy values, i.e., a respective redundancy value for each of the Npg parity groups, over multiple data units stored in multiple WLs and that share the same parity group, in accordance with the recovery scheme. For example, when using the recovery scheme of
At a reading step 120, which the processor typically performs at some later time, the processor reads a data unit of some bit-significance value from the memory device. The read operation may fail, for example, due to erase penetration, cross-temperature or any other impairment whose severity level depends on the bit-significance of the data unit read.
At a verification step 124, the processor checks whether the read operation of step 120 has failed, and if not, loops back to step 120 to read another data unit from the memory device. In some embodiments, the processor identifies that reading the data unit has failed, by decoding the read data unit using ECC 50. In other embodiments, the processor may apply any other verification method, such as, for example, receiving from the memory device any suitable read failure indication. When at step 124 the processor detects that the read operation has failed, the processor proceeds to a recovery step 128. At step 128, the processor retrieves from the memory device all of the data units that were used in calculating a corresponding redundancy value. The processor additionally retrieves the relevant redundancy value, and calculates a logical bitwise XOR operation among the retrieved redundancy value and the retrieved data units to reproduce the failing data unit. Following step 128 the processor loops back to step 120, to perform another read operation.
The embodiments describe above are given by way of example, and other suitable embodiments can also be used.
In the embodiments described above, a recovery scheme is designed for protecting data units of various types, such as code words, from read failures caused by impairments whose severity depends on the bit-significance values, e.g., erase penetration and cross-temperature. In alternative embodiments, recovery schemes for recovering failing code words due to other types of impairments can also be used. For example, the parity group assignment in the example recovery scheme of Table 3 below, alternates between CW0 and CW1 and also between PLANE0 and PLANE1, but does not alternate between LSB and MSB.
It will be appreciated that the embodiments described above are cited by way of example, and that the following claims are not limited to what has been particularly shown and described hereinabove. Rather, the scope includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art. Documents incorporated by reference in the present patent application are to be considered an integral part of the application except that to the extent any terms are defined in these incorporated documents in a manner that conflicts with the definitions made explicitly or implicitly in the present specification, only the definitions in the present specification should be considered.
Number | Name | Date | Kind |
---|---|---|---|
4841482 | Kreifels | Jun 1989 | A |
5181025 | Ferguson et al. | Jan 1993 | A |
5331594 | Hotta | Jul 1994 | A |
5372712 | Petit | Dec 1994 | A |
5428621 | Mehrotra et al. | Jun 1995 | A |
5440516 | Slemmer | Aug 1995 | A |
5581509 | Golla et al. | Dec 1996 | A |
5602778 | Futatsuya et al. | Feb 1997 | A |
5606527 | Kwack et al. | Feb 1997 | A |
5684747 | Urai | Nov 1997 | A |
5748545 | Lee et al. | May 1998 | A |
5796653 | Gaultier | Aug 1998 | A |
5847995 | Kobayashi et al. | Dec 1998 | A |
5898637 | Lakhani et al. | Apr 1999 | A |
6031772 | Nagatomo | Feb 2000 | A |
6545910 | Byeon et al. | Apr 2003 | B2 |
6650585 | Chevallier | Nov 2003 | B2 |
6707078 | Shiraiwa et al. | Mar 2004 | B1 |
6813183 | Chevallier | Nov 2004 | B2 |
7089460 | Fu | Aug 2006 | B2 |
7212454 | Kleveland et al. | May 2007 | B2 |
7319623 | Yuan et al. | Jan 2008 | B1 |
7440347 | Vogelsang | Oct 2008 | B1 |
7463529 | Matsubara | Dec 2008 | B2 |
7856528 | Frost et al. | Dec 2010 | B1 |
7873803 | Cheng | Jan 2011 | B2 |
8176284 | Frost et al. | May 2012 | B2 |
8305807 | Shah et al. | Nov 2012 | B2 |
8379454 | Kochar et al. | Feb 2013 | B2 |
8432732 | Li et al. | Apr 2013 | B2 |
8473780 | Shalvi | Jun 2013 | B2 |
8478796 | Post et al. | Jul 2013 | B2 |
8514630 | Huynh et al. | Aug 2013 | B2 |
8645749 | Reche | Feb 2014 | B2 |
8645776 | Byom et al. | Feb 2014 | B2 |
8730722 | Koh et al. | May 2014 | B2 |
8732557 | Ratnam et al. | May 2014 | B2 |
8767459 | Kasorla et al. | Jul 2014 | B1 |
8775901 | Sharon et al. | Jul 2014 | B2 |
8832357 | Yao et al. | Sep 2014 | B2 |
8892981 | Post et al. | Nov 2014 | B2 |
8902657 | Iwai et al. | Dec 2014 | B2 |
8977813 | Burd | Mar 2015 | B2 |
9021339 | Lu et al. | Apr 2015 | B2 |
9021343 | Hu et al. | Apr 2015 | B1 |
9032272 | Yoon et al. | May 2015 | B2 |
9053809 | Anholt et al. | Jun 2015 | B2 |
9058261 | Jean et al. | Jun 2015 | B1 |
9092363 | Avila et al. | Jul 2015 | B2 |
9105349 | Avila et al. | Aug 2015 | B2 |
9128822 | Michael et al. | Sep 2015 | B2 |
9135112 | Chen et al. | Sep 2015 | B2 |
9177610 | D'Abreu et al. | Nov 2015 | B2 |
9330783 | Rotbard | May 2016 | B1 |
9355713 | Huang et al. | May 2016 | B2 |
9390809 | Shur et al. | Jul 2016 | B1 |
9406346 | D'Abreu et al. | Aug 2016 | B2 |
9454429 | Ojalvo et al. | Sep 2016 | B2 |
9489263 | Hyun et al. | Nov 2016 | B2 |
9529663 | Srinvasan et al. | Dec 2016 | B1 |
9619321 | Haratsch et al. | Apr 2017 | B1 |
9811413 | Ojalvo et al. | Nov 2017 | B2 |
9847141 | Sagiv | Dec 2017 | B1 |
9928126 | Shappir | Mar 2018 | B1 |
9959168 | Achtenberg et al. | May 2018 | B2 |
9984771 | Bonke | May 2018 | B2 |
9996417 | Shappir | Jun 2018 | B2 |
10474530 | Yeh | Nov 2019 | B2 |
10740476 | Shappir | Aug 2020 | B2 |
20020174295 | Ulrich et al. | Nov 2002 | A1 |
20080052446 | Lasser et al. | Feb 2008 | A1 |
20090157964 | Kasorla | Jun 2009 | A1 |
20090225607 | Chen et al. | Sep 2009 | A1 |
20100128525 | Mokhlesi | May 2010 | A1 |
20100329052 | Chen et al. | Dec 2010 | A1 |
20110066793 | Burd | Mar 2011 | A1 |
20110209028 | Post et al. | Aug 2011 | A1 |
20120148255 | Liu | Jun 2012 | A1 |
20120159281 | Shalvi et al. | Jun 2012 | A1 |
20130024748 | Sharon et al. | Jan 2013 | A1 |
20130031429 | Sharon et al. | Jan 2013 | A1 |
20130117606 | Anholt et al. | May 2013 | A1 |
20130229868 | Koh et al. | Sep 2013 | A1 |
20130268724 | Seo et al. | Oct 2013 | A1 |
20130294168 | Shirakawa | Nov 2013 | A1 |
20140047291 | Shalvi et al. | Feb 2014 | A1 |
20140095259 | Tam et al. | Mar 2014 | A1 |
20140157078 | Danilak et al. | Jun 2014 | A1 |
20140189421 | Werner et al. | Jul 2014 | A1 |
20140189438 | Arbel et al. | Jul 2014 | A1 |
20140254264 | Dutta et al. | Sep 2014 | A1 |
20140269071 | Pandya et al. | Sep 2014 | A1 |
20140321202 | Yang et al. | Oct 2014 | A1 |
20150154069 | Tuers et al. | Jun 2015 | A1 |
20150178150 | Silberman et al. | Jun 2015 | A1 |
20160034353 | Tuers et al. | Feb 2016 | A1 |
20160098216 | Huang et al. | Apr 2016 | A1 |
20180203774 | Srinivasan | Jul 2018 | A1 |
20190095116 | Igahara et al. | Mar 2019 | A1 |
20190198113 | Ben-Rubi et al. | Jun 2019 | A1 |
20190317672 | Linnen et al. | Oct 2019 | A1 |
20200005873 | Yazovitsky | Jan 2020 | A1 |
20200005874 | Shappir | Jan 2020 | A1 |
Entry |
---|
U.S. Appl. No. 16/202,130 office action dated Jan. 8, 2020. |
Shappir et al., U.S. Appl. No. 16/202,130, filed Nov. 28, 2018. |
U.S. Appl. No. 16/202,127 office action dated Dec. 11, 2019. |
Yazovitsky et al., U.S. Appl. No. 16/202,127, filed Nov. 28, 2018. |
Number | Date | Country | |
---|---|---|---|
20200257598 A1 | Aug 2020 | US |