Patent Description:
New integrated circuit fabrication technologies may involve or lead to new failure mechanisms. Some failure mechanisms may take several years of mass production to be identified and described before appropriate tests can be developed and deployed. This is particularly relevant for new processes that involve down-scaling feature sizes and for new topologies such as FinFETs. New failure mechanisms may be especially noticeable in memories, which tend to be more affected by failures due to the use of minimal-size transistors. In respect of FinFET RAMs, one possible failure mechanism is known as dynamic Deceptive Read Destructive Fault (dDRDF). This failure mechanism involves charge being successively added (or removed) to a memory cell's internal node, leading to a read failure after several consecutive read accesses. This fault may be detectable during production testing but may also appear after aging of a memory during use. Standard methods to detect and handle errors during use, such as ECC (Error Check and Correction) and MBIST (Memory Built-In Self-Test), may be insufficient to handle such faults. ECC may be unable to correct errors because several bits of a word may fail after aging. MBIST at power-up may also be insufficient because errors may only appear after some self-heating during operation.

The above mentioned dDRDF mechanism is considered to be the dominant failure mechanism due to aging of initially defect-free FinFET RAMs. This is understood to be caused by Bias Temperature Instability (BTI), in which a shift of a transistor's threshold voltage occurs due to charge carriers migrating into the transistor's gate oxide layer. Other failure modes, however, may also be present.

To fulfil functional safety requirements for reliability, standard ECC and self-testing at regular intervals are usually considered sufficient. This may not, however, be the case for new failure mechanisms such as dDRDF because standard testing may not provide a sufficiently early warning for an increasing failure rate. This may lead to unexpected failures during operation, which can be especially problematic in critical systems such as in automotive safety-critical systems. Obtaining a warning in advance of such a failure would therefore be advantageous, particularly if doing so can be achieved while being transparent and without disturbing operation.

<CIT> discloses an apparatus, system and method for predicting failures in solid-state storage, in which a determination module determines that data stored in an ECC chunk contains ECC correctable errors and further determines a bit error count for the ECC chunk.

<CIT> discloses a method and apparatus for refreshing and data scrubbing memory device, in which a refresh without scrubbing is performed on a corresponding portion of the memory device with a first frequency and a refresh with scrubbing is performed with a second frequency less than the first frequency to prevent data error accumulation.

<CIT> discloses shifting reference values to account for voltage sag in stored data values, in which charge is applied to multiple memory cells and each memory cell is charged to a target voltage corresponding to a data value. An adjustment is performed based on a difference between a detected voltage level in a reference cell and a predetermined voltage.

<NPL>, disclose determining bit error rates in the context of persistent and transient errors to estimate system reliability and energy consumption of different error correction approaches.

<CIT> discloses apparatus and methods for determining memory device faults, in which a test circuit includes a read circuit configured to read memory cell contents in a memory device at a first time instant and a second time instant, the test circuit including a comparator that compares the contents at the first and second time instants. If the contents are different the comparator indicates a fault has occurred.

According to a first aspect there is provided a test method of detecting an error in a memory module to provide early warning of an increasing failure rate, the method comprising the sequential steps of:.

During step i) a first multiplexer receives a first address input for an application to address the memory module and a second address input from the error detection module. During step iii) a second multiplexer receives a first read enable input for the application and a second read enable input from the error detection module. During step iii) the error detection module provides a control signal to the first and second multiplexers to enable the address and further read request to be provided to the memory module if a new read or write request is not received by the memory module and disables the control signal if a new request for a read or write request is received by the memory module, thereby enabling an application to access the memory module without delay.

Steps iii) and iv) may be repeated by the error detection module until either a new request for a read or write operation is received or until steps iii) and iv) have been carried out N times, where N is an integer greater than <NUM>. Repeating the process of generating further read requests and receiving error correction codes enables the method to detect particular types of faults that may occur in memory cells, particularly those in FinFet RAM.

The number of repeats, N, may be <NUM>, <NUM>, <NUM>, <NUM>, <NUM> or more. In practical implementations, an upper limit for N may be <NUM>.

The alert output may be provided by the error detection module during or after steps iii) and iv) have been performed N times.

According to a second aspect there is provided a memory system arranged to perform a test to provide early warning for an increasing failure rate, the memory system comprising:
a memory module configured to:.

A first multiplexer is configured to receive a first address input for an application to address the memory module and a second address input from the error detection module. A second multiplexer is configured to receive a first read enable input for the application and a second read enable input from the error detection module. The error detection module is configured to provide a control signal to the first and second multiplexers to enable the address and further read request to be provided to the memory module if a new read or write request is not received by the memory module and to disable the control signal if a new read or write request is not received by the memory module.

The error detection module may be configured to perform steps i) and ii) after the memory module receives the request for a read or write operation and if a new read or write request is not received by the memory module.

The error detection module may be configured to perform steps i) and ii) N times, where N is an integer greater than <NUM>. N may be <NUM>, <NUM>, <NUM>, <NUM>, <NUM> or more, and may be no more than <NUM>.

The memory module may be a RAM, for example SRAM or DRAM, comprising FinFETs, for example having minimum feature sizes of around <NUM>, <NUM>, <NUM> or smaller.

The memory system may be implemented as an integrated circuit comprising the memory module and error detection module.

Embodiments will be described, by way of example only, with reference to the drawings, in which:.

It should be noted that the Figures are diagrammatic and not drawn to scale. Relative dimensions and proportions of parts of these Figures have been shown exaggerated or reduced in size, for the sake of clarity and convenience in the drawings. The same reference signs are generally used to refer to corresponding or similar feature in modified and different embodiments.

Testing for bit cell faults during operation of a memory system can be done by reading data words from a location identified by a RAM address and observing the error correction code (ECC) result, which indicates whether there is no error, a correctable error or an uncorrectable error. In the case of a correctable error, the corrected data word can be written into the RAM. Unlike other memory self-test methods that may be performed during operation, ECC checks do not slow down or interrupt operation of an application while the application is using the memory. The application may be a computer program being executed by a processor requiring access to the memory during execution.

Besides defects following known physical models, such as BTI (as mentioned above), hot carrier injection (HCl) or electromigration, other unmodelled faults may also arise. A method of self-testing memory during operation, i.e. in the field, that can uncover a range of defects is therefore desirable.

<FIG> illustrates an example memory system <NUM>, which may form part or all of an integrated circuit, comprising a memory module <NUM> and an error detection module <NUM>. The memory module <NUM> comprises error correction code logic 103a, 103b on the input and output interfaces of the memory module <NUM>. On the input side, the memory module <NUM> receives inputs from a clock signal <NUM>, a chip select input <NUM>, a write enable input <NUM>, a data input <NUM>, a read enable input <NUM> and an address input <NUM>. The read enable and address inputs <NUM>, <NUM> are also provided as inputs <NUM>, <NUM> to the error detection module <NUM>. The memory module <NUM> provides outputs via the ECC logic 103b in the form of an ECC error output <NUM> and data output <NUM>. The output ECC logic 103b is also provided as an ECC error input <NUM> to the error detection module <NUM>.

The error detection module <NUM> provides a read enable output <NUM>, an address output <NUM> and a control output <NUM>. The control output <NUM> is provided to first and second multiplexers <NUM>, <NUM> to control address and read enable inputs respectively to the memory module <NUM> via the input ECC logic 103a. The error detection module <NUM> may thereby take control of read requests to the memory module <NUM> and define the address to which a read request is made.

An alert output <NUM> from the error detection module <NUM> provides an alert signal in the event an error is detected after an error check has been performed on the memory module <NUM>.

<FIG> illustrates in further detail an example logic model of the error detection module <NUM>. The error detection module <NUM> receives inputs from the ECC error output <NUM>, clock signal <NUM>, read enable input <NUM>, write enable input <NUM> and address input <NUM>. The error detection module <NUM> provides outputs in the form of the alert output <NUM>, read enable output <NUM>, address output <NUM> and control output <NUM>.

The read and write enable inputs <NUM>, <NUM> are connected to an OR gate <NUM>, which provides a logic output to a reset input <NUM> of a counter <NUM>. The counter <NUM> receives the clock signal <NUM> and begins a count at zero when reset, incrementing upon subsequent clock cycles. When the counter <NUM> reaches a predetermined count a reset signal is provided to a reset input <NUM> of an R/S flip-flop <NUM>. The R/S flip-flop <NUM> provides an output signal <NUM> indicating a state of the error detection module <NUM>. An output of <NUM> indicates the module <NUM> is inactive and not performing read requests, while an output of <NUM> indicates that the module <NUM> is performing ("dummy") read requests. The counter <NUM> counts the number of dummy read requests made to the memory module <NUM> and stops the read requests being made by resetting the flip-flop <NUM> after a predefined number.

As described herein, a logical false value is defined as a <NUM>, while a logical true value is defined as a <NUM>. These values may correspond to low and high voltages respectively. In alternative arrangements the reverse may be used, i.e. where a logical false is represented by a high voltage and a logical true is represented by a low voltage. The OR gate <NUM> provides a positive (or true) output if either an application read access or an application write access occurs. In both cases the counter <NUM> is asynchronously reset and the output signal <NUM> set to <NUM> such that the module <NUM> immediately gives control back to the application requesting access to the memory module <NUM>.

A first AND gate <NUM> receives an inverted input from the output of the OR gate <NUM> and the output signal <NUM> from the flip-flop <NUM>, and outputs the read enable and control output signals <NUM>, <NUM>. In other words, if (a read OR write request is NOT being made) AND the status of the module <NUM> is active, the read enable and control signals <NUM>, <NUM> are active, allowing the module <NUM> to access the memory module <NUM>.

An address latch <NUM> stores the address of the first application read access, which the module <NUM> then uses in subsequent read access requests to the memory module. A logic <NUM> at the output <NUM> of the R/S flip-flop <NUM> indicates that the dummy read mode is active. In this state, a possible ECC error signal <NUM> may propagate to the alert output <NUM> and the multiplexers <NUM>, <NUM> (<FIG>) are set by the control output <NUM> to receive the address and read enable signals for the dummy read mode from the address output <NUM> and read enable output <NUM> respectively of the error detection module <NUM>.

A second AND gate <NUM> gates the ECC error signal <NUM> so that the alert signal <NUM> is provided only if the state of the module <NUM> is active and the current received error signal <NUM> is high. The alert signal <NUM> is provided to further logic (not shown) that acts upon the alert signal <NUM>, for example to maintain a log of addresses showing errors and/or to provide an indication that the memory system <NUM> should be replaced when possible due to failure being imminent.

<FIG> illustrates a sequence of steps illustrating operation of the error detection module <NUM>. The process starts <NUM> with a read or write request being made <NUM> by an application requesting access to the memory module <NUM>. This triggers the counter <NUM> being reset to zero at step <NUM>. Data is provided from or written to the memory module at step <NUM>. If, at step <NUM>, a further read/write request is not being made, at step <NUM> a dummy read request is made by the error detection module <NUM>. An ECC error output <NUM> is then provided at step <NUM> and the counter <NUM> is incremented at step <NUM>. If, at step <NUM>, the counter has reached a predefined limit and the ECC error output <NUM> is high (step <NUM>), an alert output <NUM> is provided at step <NUM> and the process ends at step <NUM>. If, at step <NUM>, the ECC error output <NUM> is not high, the process ends without providing an alert output <NUM>. If, at step <NUM>, the counter <NUM> has not reached the predefined limit, the process of requesting a further dummy read request is repeated unless a read or write request has been made by the application requesting access to the memory module <NUM>, in which case the counter resets (step <NUM>) and data is provided from or written to the memory module at step <NUM>.

The error detection process described above will only proceed to completion if there is no further read or write request made while the error detection process is in progress. An application requesting access to the memory module <NUM> is therefore not held up by the error detection process.

The number, N, of dummy read cycles, i.e. the predefined limit for the counter <NUM>, may be one or more. In some examples N may be two, three, four, five, six or more, given that dDRDF has been known to occur after several consecutive read requests. In practical implementations, N may be as high as around <NUM>.

<FIG> illustrates schematically an example series of operations involving the memory system described herein. A first read or write request <NUM> is made by the application for an address identifying a location in the memory module <NUM>. This is followed by six consecutive dummy read requests <NUM>-<NUM> while no further application read or write requests are made. In each dummy read request <NUM>-<NUM> the output data from the memory module is compared with the output data from the first read request <NUM>. After some idle time <NUM>, a second application read or write request <NUM> is made for another address. The error detection module then begins making dummy read requests for this address but is stopped after three dummy requests <NUM>-<NUM> by a third application read or write request <NUM>, which then triggers another series of dummy read requests <NUM>-<NUM>. This series of dummy read requests <NUM>-<NUM> completes and provides an alert output if an error is detected.

<FIG> illustrates an example processor <NUM> connected to a memory system <NUM> of the type described herein. The processor <NUM> may execute an application that requires access to the memory module <NUM>, providing read and write requests to the memory module <NUM>. Read requests are responded to by providing data output from the memory module <NUM> to the processor <NUM> and write requests are responded to by writing data from the processor into memory cells identified by addresses provided to the memory module <NUM>. During execution of the application by the processor <NUM>, the error detection module <NUM> provides further dummy read requests after each read or write request made by the application being executed on the processor <NUM>. Any alert output resulting from an error output during such dummy read requests may be provided to the processor <NUM> for further action. The processor <NUM> and memory system <NUM> may be provided on separate integrated circuits connected by a communication bus.

The error detection module <NUM> and method of error detection as described herein enables detection of memory defects according to particular failure modes involving repeated read requests and enables checks for such defects to be carried out concurrently with an application that requires access to the memory. An advantage is that an early warning can be provided of impending memory failure, depending on the number of consecutive read requests made. An error arising after six repeated read requests, for example, may indicate an expected memory failure within a period of years, although this can depend on other factors such as a temperature of the memory during operation. The error detection module and method may be particularly applicable to memory modules comprising FinFETs, for example with minimum feature sizes of around <NUM> or smaller.

From reading the present disclosure, other variations and modifications will be apparent to the skilled person. Such variations and modifications may involve equivalent and other features which are already known in the art of memory systems, and which may be used instead of, or in addition to, features already described herein.

Although the appended claims are directed to particular combinations of features, it should be understood that the scope of the disclosure of the present invention also includes modifications thereof within the scope of the appended claims.

Features which are described in the context of separate embodiments may also be provided in combination in a single embodiment. Conversely, various features which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable sub-combination.

Claim 1:
A test method of detecting an error in a memory module (<NUM>) to provide early warning of an increasing failure rate, the method comprising the sequential steps of:
i) receiving (<NUM>) a request from a processor executing an application for a read or write operation at a location of the memory module (<NUM>) identified by an address;
ii) outputting data (<NUM>) from, or writing to, the location of the memory module (<NUM>);
iii) generating (<NUM>) by an error detection module (<NUM>) a further read request for the location of the memory module (<NUM>) identified by the address;
iv) receiving (<NUM>) at the error detection module (<NUM>) an error correction code from the memory module (<NUM>) for the location identified by the address; and
vi) providing (<NUM>) by the error detection module (<NUM>) an alert output for the address if the error correction code indicates an error,
characterised in that:
during step i) a first multiplexer (<NUM>) receives a first address input (<NUM>) for an application to address the memory module (<NUM>) and a second address input (<NUM>) from the error detection module (<NUM>);
during step iii) a second multiplexer (<NUM>) receives a first read enable input (<NUM>) for the application and a second read enable input (<NUM>) from the error detection module; and
during step iii) the error detection module (<NUM>) provides a control signal (<NUM>) to the first and second multiplexers (<NUM>, <NUM>) to enable the address and further read request to be provided to the memory module (<NUM>) if a new read or write request is not received by the memory module (<NUM>) and disables the control signal (<NUM>) if a new request for a read or write request is received by the memory module (<NUM>).