WO2002065291A2 - Dispositif de reconfiguration d'un ensemble memoire presentant des defauts - Google Patents

Dispositif de reconfiguration d'un ensemble memoire presentant des defauts Download PDF

Info

Publication number
WO2002065291A2
WO2002065291A2 PCT/FR2002/000523 FR0200523W WO02065291A2 WO 2002065291 A2 WO2002065291 A2 WO 2002065291A2 FR 0200523 W FR0200523 W FR 0200523W WO 02065291 A2 WO02065291 A2 WO 02065291A2
Authority
WO
WIPO (PCT)
Prior art keywords
modules
flip
multiplexer
repair
rank
Prior art date
Application number
PCT/FR2002/000523
Other languages
English (en)
Other versions
WO2002065291A3 (fr
Inventor
Michaël NICOLAIDIS
Original Assignee
Iroc Technologies
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Iroc Technologies filed Critical Iroc Technologies
Priority to US10/468,265 priority Critical patent/US6946985B2/en
Publication of WO2002065291A2 publication Critical patent/WO2002065291A2/fr
Publication of WO2002065291A3 publication Critical patent/WO2002065291A3/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring

Definitions

  • the present invention relates to a device for reconfiguring a set of N electronic modules associated with k replacement modules or redundant modules.
  • the electronic modules are memory modules which can be blocks of a large memory and / or rows or columns of a memory. It should nevertheless be borne in mind that the invention relates generally to the reconfiguration of a set of electronic modules.
  • FIGS. 1A and 1B illustrate in a very simplified manner the problem which the present invention aims to solve.
  • Four blocks of memory cells M Q to M3 are considered. In practice, these will, for example, be columns of a memory which may include more than a thousand columns. Some of these memory blocks may have a fault. So we plan to replace the faulty block with a replacement block. Two replacement blocks S Q and S] _ have been shown. In fact, we can provide several tens of replacement blocks.
  • each multiplexer will include k + 1 outputs.
  • FIGS. 1A and 1B it is assumed that the second, M ⁇ , of the basic memory blocks and the first, S Q , of the replacement memory blocks are in default.
  • each multiplexer can be connected to the block of the same rank and to the two blocks of immediately higher rank.
  • the input dg is connected to the block Mg
  • the input d ⁇ is connected to the block M2 (instead of the block Ml)
  • the input d2 is connected to the block M3 (instead of the block M2)
  • the input d3 is connected to the block S ⁇ _ (instead of the block M3 or S Q ).
  • the multiplexer M ⁇ Xg performs a zero offset, the multiplexers MUX ⁇ and MUX2 a shift of one step, and the multiplexer MUX3 a shift of two steps.
  • any faulty block is replaced not by one of its non-faulty neighbors but by one of the replacement blocks.
  • the input dg is connected to the block Mg, the input d ⁇ to the block S] _ and the inputs d2, d3 to the blocks M2, M3.
  • each multiplexer includes an output to the corresponding block and two outputs to the blocks Sg and S ⁇ .
  • the multiplexers MUXg, MTj ⁇ 2 and MUX3 carry out a zero shift and the multiplexer M ⁇ X ⁇ a shift of two steps.
  • the present invention aims to provide an automatic reconfiguration (rerouting) device between access terminals and non-faulty memory blocks, that is to say that the faulty memory blocks are replaced by other chosen blocks depending on the case among the neighbors of the faulty block (case of FIG. 1A), or directly among redundant blocks (case of FIG. 1B).
  • this problem is relatively complex because, for a given block, to determine towards which block rerouting must be carried out, account must be taken of the state of the blocks already examined, for example those located to the right (or left) of a block considered, and the state of the possible replacement blocks.
  • the present invention provides for each of the cases (near to near offset or distant offset) a method using sequential operations or a method using a combinatorial system. Furthermore, in each of the two cases considered, the present invention contemplates that the operations can be carried out in hardware or software.
  • the present invention provides for using an algorithm according to which: one begins with the block situated at a first end of a series of blocks, one counts for each block the number of faulty blocks situated on the side of the first end (the faulty blocks possibly comprising the block considered itself), each block is associated with a set of reserve blocks arranged in an ordered sequence (the neighboring blocks in the case of FIG. 1A or redundant blocks in the case of FIG. 1B), there are, among these reserve blocks, successive blocks until a number of non-faulty blocks is found equal to the number of faulty blocks previously counted, and once this result obtained, we replace the block considered, by the block shifted in a corresponding manner from the reserve blocks, the non-faulty blocks not being replaced in the case of direct passage to the redundant blocks.
  • FIGS. 1A and 1B represent examples of reconfiguration of memory blocks intended to illustrate the problem posed by the present invention
  • FIG. 2 represents an exemplary embodiment of a device for reconfiguring memory blocks of the sequential type and with a step-by-step shift
  • FIG. 3 represents a variant of part of the logic circuit of FIG. 2
  • FIG. 4 represents an exemplary embodiment of devices for reconfiguring memory blocks of sequential type and replacing faulty blocks with redundant blocks
  • FIG. 5 represents two examples of counters of 1 used in the logic circuit of FIG. 4
  • FIGS. 6 to 10 illustrate variants of rerouting devices. 1. NOTATIONS
  • N the number of basic blocks of memory likely to present failures
  • k the maximum number of faulty blocks that can be replaced.
  • a basic block of the initial memory will be called Ui with i between 0 and Nl.
  • the replacement blocks will be indifferently called S 0 to S ] ⁇ or U N to U N + k _ !.
  • the multiplexers associated with the blocks Ug to Uj ⁇ -i will be called MDXg to MU -i. di designates the input of a MUX ⁇ multiplexer.
  • Flip-flops Fg to _ ⁇ and S ⁇ to S ⁇ are respectively associated with the basic and replacement blocks and indicate the initial state of the corresponding block. These rockers are with 1 if the block is initially bad and with 0 if the block is initially good. These flip-flops are initialized in a conventional manner during a test step during which the operation of each block is verified. According to the invention, the case where the base blocks as well as replacement blocks are likely to fail. 2.
  • FIG. 2 represents an example of a sequential reconfiguration structure for a step-by-step repair of possibly faulty cells.
  • each multiplexer MDXg to MDX ] * j _ ⁇ is associated with a counter Cg to C jj _. which is incremented by a signal Rj_ (Rg ... R Nl) produced by a sequential circuit so that the signal R j _ takes the value 1 during several consecutive clock cycles.
  • the flip-flops Fg to Fjj + j ⁇ -i are initially loaded with a 0 if the corresponding block is good and with a 1 if the corresponding block is bad.
  • the signals Rj_ to be supplied to a multiplexer control circuit Cj_ depend on the value of the corresponding flip-flop F- £ but also on flip-flops of lower rank since, when a position has to be shifted to the left, any position of a top row should also be shifted to the left.
  • the value of R also depends on the values of the rockers of rank higher than i. Indeed, it must be ensured that the block which one aims to choose as a replacement block is a good block.
  • each time a signal - ⁇ is activated it forces all the signals of rank higher than the active state.
  • R Fj_ + Rj__ ] _.
  • b) When the signal R- ⁇ is activated (Ri l), the value of the rocker F ⁇ + i is transferred to the flip-flop F ⁇ and, if there is no flip-flop Fi + i, a 0 is transferred to flip-flop Fj_.
  • rocker Fj_ must indicate the state which was previously indicated by rocker F ⁇ + ⁇ .
  • Fi (t + 1) iF + ⁇ (t), where t and t + 1 indicate two successive instants.
  • FIG. 2 represents a logic circuit implementing the above logic equations.
  • each flip-flop is connected to a first input of an OR gate 11 the output of which is connected by an AND gate 12 to the input of this flip-flop Fi.
  • the output of the OR gate 11 also provides the signal Ri-.
  • the second input of the OR gate 11 is connected to the output of the OR gate 11 of the previous stage.
  • the output of the flip-flop Fi + ⁇ is returned to the second input of the AND gate 12.
  • Each of the flip-flops is punctuated by a clock signal which also controls the counters C ⁇ .
  • the first flip-flop Fi to 1 which will send a signal Ri to the counters Ci to C ] s j _i and which will shift the outputs of the multiplexer MUXi and of all the following multiplexers.
  • the contents of all the flip-flops F to FN + JI will be shifted by one step to the right and the cycle will be repeated.
  • the multiplexers MUXg to MU _ ⁇ will be set in the appropriate configuration by the counters Cg to G ⁇ r_ ⁇ .
  • equations (1) and (2) above are implemented by a cascade of OR gates in series. This can result in relatively long delays, which can lead to a relatively long time for the repair phase. Note however that this has neither impact on the duration of the test phase nor on the subsequent duration of normal memory operation. Thus, one can use a specific low frequency clock for the repair phase or use the same clock signal as on the other phases but reduce the frequency of the clock during the repair phase.
  • FIG. 3 represents an example of a circuit usable for supplying eight signals Rg to R7 from eight flip-flop states Fg to F 7 .
  • One of the signals R ⁇ _ ⁇ to Rft + k can be used for this purpose.
  • the signal R ⁇ -i is more interesting because its value 0 will indicate earlier than the others the end of the repair.
  • equations (1) and (2) can be simplified if we consider that the redundant blocks are free from defects. In this case, the Fpj flip-flops can be eliminated.
  • the complexity of the circuit can be reduced by making certain assumptions. For example, if we suppose that when we arrive at a module of rank i, i being clearly less than N, there is inevitably a number of faults i ⁇ , we can reduce the number of outputs of the corresponding multiplexers which, instead to be multiplexers with k outputs may be multiplexers with ki outputs. At the same time, the counters associated with these multiplexers can be simplified.
  • the circuit described above is a sequential circuit.
  • each multiplexer MUXi has ak command inputs M ⁇ - to M 2 - ⁇ which must all be zero except the input which corresponds to the offset that we want the multiplexer adopted. For example, if the block Ug is faultless, the multiplexer MUXg must cause no offset, that is to say that its control input M 0 g must be at 1 and that all of its other control inputs M 1 at M ⁇ g must be zero.
  • repair operations step by step as illustrated in FIG. 1A from remote repair operations as illustrated in FIG. 1B in which the good modules remain associated with their initial inputs while the faulty modules are replaced by modules chosen from the group of redundant modules.
  • Sequential reconfiguration Figure 4 illustrates a diagram of an embodiment of a sequential repair system.
  • multiplexers MUXg to MUXJJ_ ] _ associated with inputs dg to d ⁇ -i intended to be connected to non-faulty modules.
  • the multiplexers are arranged from right to left instead of being arranged from left to right as before.
  • Each control module is associated with a control circuit which, instead of being as before, a counter this time consists of a set of k + 1 flip-flops for storing the exact values of the control signals in a code of 1 among k 1.
  • the flip-flops indicating the good or bad state of the blocks initially associated with the various multiplexers are designated as previously by the references Fg to Fj- j- for the flip-flops associated with the basic blocks and by the references S] _ to S k in the example shown for redundant blocks.
  • flip-flops for controlling the multiplexers one could also use a smaller number of flip-flops in each set to code the values of these signals into a more compact code, for example a binary code, combined with a decoder which produces the code of 1 among k + 1.
  • This set of flip-flops can be constructed so as to perform only the load function. In this case, another circuit will have to be used to calculate the number of positions whose input and output terminal di must be shifted towards the redundant blocks and load these results in the repair flip-flops.
  • repair scales are provided according to a counter configuration as was done previously. It will be noted that in the case of FIG. 4, the repair is carried out according to an offset to the right, which means that the leftmost functional module is first repaired. We will use two sequential functions acting at the rate of a clock which, at each cycle, activates in particular the flip-flops Fg to F N _i and Si to S k .
  • Each flip-flop Fi is connected to the control circuit Bi by an AND gate 21 which also receives the inverse of the OR function of all the preceding flip-flops. Thus, if a flip-flop Fi contains a 0 (corresponding block good), the control circuit Bi is inhibited and the multiplexer UXi is not shifted.
  • the output of the flip-flop Fi is connected by an AND gate 22 to the input of this flip-flop Fi.
  • the flip-flop initially contains a 0 its state always remains at 0.
  • the second input of AND gate 22 receives the OR function of all the previous scales. Thus, during a clock cycle, only the control circuit associated with the faulty block not yet repaired, located to the left, is activated.
  • the second functional sequence is implemented using the ST flip-flops. at S k and produces at any time the number of positions whose faulty block, at the cycle considered, signaled by an active signal ENi, must be shifted to one of the redundant blocks (not shown in FIG. 4).
  • the output of each flip-flop Si is connected to its input by an OR gate 23, the second input of which is connected to the output of an AND gate 24 which receives the outputs of the flip-flop Si_ ⁇ and of the preceding AND gate.
  • Li is called the output of the AND gate which follows the latch Si.
  • the outputs Li are supplied to a counter of 1 combinatorial 25 which receives a 1 on its first input.
  • the counter 25 provides the number of positions whose faulty base block indicated by the active signal ENi must be shifted in the redundant blocks in order to carry out a repair.
  • FA and half-adders (with two inputs) HA are shown in Figure 5. These counters provide a binary coded result. Other embodiments can provide a result coded in another way, for example according to a code of 1 from k + 1.
  • a sequential 1 counter could also be implemented. For example this can be done using an offset circuit at k + 1 cells. Cell 0 is loaded with 1. The signals L ] _, L2 -... L k are loaded in the following cells. The contents will be shifted to the right until the first 0 is supplied to the output.
  • Fi (t + 1) FIi_i.Fi (t), with O ⁇ i ⁇ Nl (6)
  • the circuit formed from flip-flops Si updates the content of these flip-flops at each clock cycle. This update is such that at all cycles the flip-flops Si indicating an available module contain a 0 and that the other flip-flops Si contain a 1.
  • an available redundant block is a fault-free block which is not yet occupied by the repair of a faulty functional block.
  • a faulty redundant block always remains unavailable, that is to say that Si always remains equal to 1.
  • the redundant block j + 1 is the first redundant block available to carry out a repair.
  • Repair can also be done using repair counters rather than repair flip-flops B.
  • the repair counter can be a binary counter followed by a decoder to produce a code of 1 from k + 1, or a shift register.
  • the counter 25 can be replaced by a sequential counter of 1 such as a circuit offset.
  • the value 1 of the leftmost cell of this shift circuit will be used to keep the states of flip-flops F and S.
  • the value 0 of this cell will be used to maintain the state of the sequential counter until its next loading.
  • the signal ENi will be kept at the value 1 for ki clock cycles.
  • the remote repair system can also be implemented by a combinatorial function which will be defined incrementally.
  • MI ° j M ° j for 0 ⁇ j ⁇ k (11)
  • MI i + lj Mjij. F 1 + 1 + Mi + lj.F i + 1
  • the variable M 1 + 1 g is equal to 1 if the block U ⁇ + is free from faults.
  • the variable M 1 + 1 j + ⁇ is equal to 0 if the block u i + l is free from faults. If U + ⁇ is in default, M ⁇ +1 J +: L becomes equal to 1 if Sj + ⁇ is free of faults and if there exists an integer r ⁇ j such that r redundant blocks in fault and free of faults are already busy to repair the Ug modules with q ⁇ i, and the redundant blocks S r + i, S r + 2 ... Sj are faulty.
  • M recursively and can be implemented by any appropriate software or hardware.
  • each state indication flip-flop is associated with validation signals so that, in a test mode, it is loaded according to the good or bad state of the corresponding block, and, in repair mode, operates from the as previously described.
  • the data can be propagated: - modules U x to U ⁇ . ! to terminals d 0 to d ⁇ .., . (for example in the case where d 0 to cL ⁇ are the data bus reading from a memory).
  • This case will be called read type configuration.
  • - terminals d 0 to ⁇ towards modules O x to U ⁇ for example in the case where d 0 to d ⁇ are the data bus in writing of a memory, or in the case where d 0 to d ⁇ are the module selection signals).
  • This case will be called the write type configuration.
  • - in both directions for example in the case where d 0 to d ⁇ . ! are the bidirectional bus for reading / writing a memory).
  • bidirectional configuration for example in the case where d 0 to d ⁇ . ! are the bidirectional bus for reading / writing a memory.
  • the multiplexers used must allow bidirectional propagation of the signals.
  • a multiplexer of the l-among-4 type is presented in FIG. 6.
  • a bidirectional multiplexer can also be used in the case of configurations of the read type and of the write type.
  • the signal G takes the value 0 in the inactive state. In this case, it will be necessary to use a multiplexer produced as in figure 7.
  • a final case of multiplexing circuits corresponds to circuits performing the same functions as those described above, except that values are applied complementary to their entries.
  • switching circuits are used, as presented in FIGS. 6, 7, and 8.
  • FIG. 9 will use bidirectional multiplexers.
  • the circuits of FIG. 1A are 1-among-k multiplexers, like the circuit of FIG. 7,
  • FIG. 9 will use switching circuits of the MUX r-among-1 type, like the circuit of FIG. 8.
  • FIG. 9 will use multiplexers 1-among-r, like the circuit of FIG. 7.
  • FIG. 9 uses circuits of the MUX r-among-1 type. Terminal d of each of these circuits is connected to the input / output signal of one of the modules U ⁇ , U 2 , ..., U JJ ⁇ . J ⁇ .
  • Terminal d of each of these circuits is connected to the input / output signal of one of the modules U ⁇ , U 2 , ..., U JJ ⁇ . J ⁇ .
  • CMi the switching circuit connected to
  • the terminals O ⁇ of the switching circuits are combined to generate the signals d 0 , d x , ..., d ⁇ .
  • the signal M ⁇ selects the connection of the terminal Di of the circuit CM ⁇ to the input / output terminal of the module UM ⁇ .
  • the signal M ⁇ selects the connection of terminal D j ,. ⁇ Of circuit CM ⁇ to the input and output terminal of module UM ⁇ .
  • the terminals D ⁇ selected by the signals M 1 ,,, M, ..., M are combined to generate the signal d L.
  • the connections will be exactly the same if the switching circuits of Figure 9 were 1-among-r multiplexers.
  • the signal M 1 selects the connection of the input / output terminal of the module O i to the terminal D 0 of the switching circuit CMi, which in fact has a single terminal of the type Di .
  • the signal M ⁇ selects the connection of the input / output terminal of the module O n + i to the terminal ⁇ of the routing circuit CM ⁇ .
  • the terminals D £ selected by the signals M x 0 , M x x , ..., M are combined to generate the signal d.
  • the repair will consist in re-routing the signals d 0 , d ⁇ ; ..., c ⁇ g . ! so as to replace each faulty functional module with a faultless module.
  • the repair system may possibly supply signals indicating the reduction in the number of modules so that the rest of the system uses only the resources of the non-faulty modules which will be seen by the system as being the N + kq first modules of the configuration.
  • the modules U 0 , U x , ..., U ⁇ are blocks of a memory, each including R addresses.
  • the system can use a memory including a total of RN addresses. In this configuration, it offers the best performance, but it can also operate with a memory of lower capacity.
  • the signals d 0 , d x , ..., d ⁇ are generated for example, by decoding a number of addressing bits equal to
  • the modules missing to have a number of redundant modules equal to r are the modules U N + r . ⁇ such as l ⁇ i ⁇ rk.
  • the groups of control signals which select any module U N + r . i such that l ⁇ i ⁇ rk are the signals M " ⁇ such as l ⁇ i ⁇ rk and l ⁇ j ⁇ i.
  • This group of control signals will not enter the multiplexer of rank Nj, which will thus have r + ji control inputs instead of r + 1.
  • This multiplexer will also have r + ji type D terminals q instead of r + 1.
  • the missing terminals will be the terminals D r . j + 1 such that l ⁇ j ⁇ i .
  • the control signals not used by the multiplexers may be used to indicate the invalid address space. To do this, we will form the binary signals @i for all i, such that l ⁇ i ⁇ rk. These signals are determined by:
  • Repair for CACHE memory A final repair solution leading to very low costs, concerns the case of CACHE memories. These memories can have a storage point or flag, hereinafter called the validity flag or Fg. Fg indicates whether a memory word is valid or invalid.
  • the system performs the operation in another of its memories.
  • the value of the storage point is manipulated during system operation, making it possible to manage the consistency of access to the CACHE memories and to the other memories.
  • CACHE (or for a set of words) another memorization point of the flag type, hereinafter called the default flag or F d .
  • the content of F d is blocked at its value fixed during the test phase. Then, if F d indicates a faulty word, the operation will be carried out in another memory.
  • CACHE memories are used to reduce the frequency of accesses to system memory.
  • the cells of a word in a CACHE memory are shared in a part called the key and in a data part.
  • the address bits of the system memory are divided into two parts, hereinafter called first part and second part.
  • the first part of the addressing bits is used to select a word from the CACHE memory.
  • the second part of the address bits is stored in the key part of the selected word, while the data of the write operation is stored in the data part.
  • the key part and the data part of the selected word are read. The content of the key part is compared with the second part of the address bits of the write operation.
  • each value in the first part of the addressing bits selects a single word from the CACHE memory. But in some CACHE memories the same value of the first part of the address bits can select several words. So, in the first case, if a word is invalid because its fault flag indicates a faulty word, then each operation, such as the value of the first part of the addressing bits selects this word, will be carried out in the memory of the system. In the second case, an operation selecting a word whose fault flag indicates that it has failed will not necessarily access the system memory, because the operation can succeed in one of the other words in the CACHE memory selected by the same value of the first part of the addressing bits.
  • a similar technique can be used for memories of the CAM (Content Addressable Memory) type.
  • a CAM memory can be seen as a CACHE memory, the first part of the address bits of which is empty. Thus, all the addressing bits are stored in the key part. However, the key part of each word has a comparator. Thus, in a read operation, the read address is compared in parallel with the content of the key part of each word. If the comparison is successful for a word, the comparator output for that word selects the data portion of the word. Thus, one can read the content of the data part of this word at the output of the memory. In writing, there are two possible cases.
  • the address is compared to the key part of the words. If the comparison succeeds for a word of the CAM, the output of the comparator of this word selects the data part of the word and the writing is carried out in this part.
  • the value 1 of the flag Fd prohibits any access to the faulty word. Operations targeting the faulty word can then be performed in another memory of the system.
  • a CACHE memory in a CAM memory any word can be replaced by any other word.
  • each word is selected only by the content of its key part, there is no differentiation of words according to the value of the address bits.
  • the CAM memory can comprise a sufficient number of words so as to have, after repair, a capacity satisfactory for the system.
  • the CAM memory proposed here can also be used to repair another memory by replacing each faulty word in the memory with a non-faulty word in the CAM memory. To do this, we proceed according to the following steps.
  • the data to be written is written in the data part of this word of the CAM, and in the event of reading the data part of this word from the CAM and the result is supplied to the system instead of the data that should be read from memory.
  • the repair system can be provided so that the memory can be reconfigured not only during the test of manufacturing but also during the various test phases carried out during the life of the circuit.
  • Fd will be stored in a reprogrammable storage point (volatile or non-volatile).
  • Fd could be stored in a non-reprogrammable storage point, for example in a device fixing a logic value using a fuse.
  • type 1 codings have been described among k + 1 of the states M ⁇ g to M 1 ] ⁇ of the demultiplexer inputs.
  • Binary coding systems could also have been provided. Those skilled in the art can carry out a one-to-one correspondence between these two types of coding. In this case, the binary signals will take the value q when the signal M ⁇ -g is equal to 1 and that all the other signals M 1 g to M 1 ] ⁇ are 0. Those skilled in the art will moreover be able to apply this principle for coding the number of shifts of a position according to any other code.

Abstract

L'invention concerne un dispositif de reconfiguration d'un ensemble de N modules électroniques de base associés à k modules redondants, comprenant: N multiplexeurs ayant chacun une première borne (di) susceptible d'être connectée à l'une de k+1 deuxièmes bornes connectées aux k+1 bornes d'entrée/sortie d'un groupe ordonné de modules composé d'un module de base (Ui) et de k autres modules; N+k bascules (Fi) indicatrices d'un état bon ou mauvais d'un des N+k modules; et un moyen logique associé à chaque multiplexeur de rang j, j étant un entier compris entre 0 et N, pour déterminer le nombre de bascules de rang 0 à j indiquant un état mauvais, déterminer le nombre de modules du groupe ordonné associé au module de rang j, à compter pour trouver un nombre de modules bons égal au premier nombre, et connecter la première borne du multiplexeur à sa deuxième borne de rang égal au deuxième nombre.

Description

DISPOSITIF DE RECONFIGURATION D'UN ENSEMBLE MEMOIRE PRESENTANT
DES DEFAUTS
La présente invention concerne un dispositif permettant de reconfigurer un ensemble de N modules électroniques associés à k modules de remplacement ou modules redondants. On considérera ici le cas où les modules électroniques sont des mo- dules mémoire qui peuvent être des blocs d'une mémoire de grande dimension et/ou des lignes ou colonnes d'une mémoire. On gardera néanmoins à l'esprit que l'invention concerne de façon générale la reconfiguration d'un ensemble de modules électroniques.
Les figures 1A et 1B illustrent de façon très simpli- fiée le problème que vise à résoudre la présente invention. On considère quatre blocs de cellules mémoire MQ à M3. En pratique, il s'agira par exemple de colonnes d'une mémoire pouvant comprendre plus de mille colonnes. Il est possible que certains de ces blocs mémoire présentent un défaut. Alors, on prévoit de remplacer le bloc en défaut par un bloc de remplacement. On a représenté deux blocs de remplacement SQ et S]_. En fait, on pourra prévoir plusieurs dizaines de blocs de remplacement.
Pour réaliser ce remplacement, au lieu de connecter les bornes d'entrée/sortie de données do, d^, d2, d3 directement aux blocs mémoire Mg, M]_, M2, 3, on prévoit de relier ces bornes aux blocs mémoire par 1 ' intermédiaire de multiplexeurs MUXQ, MϋXi, MUX2/ MUX3, respectivement commandés par des blocs de commande CQ, C^, C2, C3. Dans le cas où il y a k blocs de remplacement, chaque multiplexeur comprendra k+1 sorties. Dans l'exemple des figures 1A et 1B, on suppose que le deuxième, M^, des blocs mémoire de base et le premier, SQ, des blocs mémoire de remplacement sont en défaut.
Dans le mode de réalisation de la figure 1A, on propose de remplacer chaque bloc mémoire défaillant par son voisin non défaillant le plus proche. On réalise une substitution "de proche en proche". Chaque multiplexeur est susceptible d'être relié au bloc du même rang et aux deux blocs de rang immédiatement supérieur. Dans le cas de la figure 1A, 1 'entrée dg est reliée au bloc Mg, l'entrée d^ est reliée au bloc M2 (au lieu du bloc Ml), l'entrée d2 est reliée au bloc M3 (au lieu du bloc M2) , et l'entrée d3 est reliée au bloc Sι_ (au lieu du bloc M3 ou SQ ) . Le multiplexeur MϋXg réalise un décalage nul, les multiplexeurs MUX^ et MUX2 un décalage d'un pas, et le multiplexeur MUX3 un décalage de deux pas.
Dans le bloc de réalisation de la figure 1B, tout bloc en défaut est remplacé non pas par l'un de ses voisins non défaillant mais par 1 'un des blocs de remplacement . On réalise une substitution "distante". Ainsi, l'entrée dg est reliée au bloc Mg, l'entrée d^ au bloc S]_ et les entrées d2, d3 aux blocs M2, M3. Ainsi, chaque multiplexeur comprend une sortie vers le bloc correspondant et deux sorties vers les blocs Sg et S^. Les multiplexeurs MUXg, MTjχ2 et MUX3 réalisent un décalage nul et le multiplexeur MϋX^ un décalage de deux pas.
La présente invention vise à prévoir un dispositif de reconfiguration (de reroutage) automatique entre des bornes d'accès et des blocs mémoire non en défaut, c'est-à-dire que les blocs mémoire en défaut sont remplacés par d'autres blocs choisis selon le cas parmi les voisins du bloc défaillant (cas de la figure 1A) , ou directement parmi des blocs redondants (cas de la figure 1B) . On comprendra que ce problème est relativement complexe car, pour un bloc donné, pour déterminer vers quel bloc le reroutage doit être effectué, il faut tenir compte de l'état des blocs déjà examinés, par exemple ceux situés à droite (ou à gauche) d'un bloc considéré, et de l'état des blocs de remplacement possibles. Pour permettre cette reconfiguration, la présente invention prévoit pour chacun des cas (décalage de proche en proche ou décalage distant) un procédé faisant appel à des opérations séquentielles ou un procédé faisant appel à un système combinatoire. De plus, dans chacun des deux cas consi- dérés, la présente invention envisage que les opérations puissent être faites de manière matérielle ou logicielle.
De façon générale, la présente invention prévoit d'utiliser un algorithme selon lequel : on commence par le bloc situé à une première extrémité d'une suite de blocs, on compte pour chaque bloc le nombre de blocs défaillants situés du côté de la première extrémité (les blocs défaillants comprenant éventuellement le bloc considéré lui-même) , on associe à chaque bloc, un ensemble de blocs de réserve disposés selon une suite ordonnée (les blocs voisins dans le cas de la figure 1A ou des blocs redondants dans le cas de la figure 1B) , on compte, parmi ces blocs de réserve, des blocs successifs jusqu'à ce que l'on trouve un nombre de blocs non défaillants égal au nombre de blocs défaillants précédemment comptés, et une fois ce résultat obtenu, on remplace le bloc considéré, par le bloc décalé de façon correspondante des blocs de réserve, les blocs non défaillants n'étant pas remplacés dans le cas du passage direct aux blocs redondants.
Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : les figures 1A et 1B représentent des exemples de reconfiguration de blocs mémoire destinés à illustrer le problème posé par la présente invention ; la figure 2 représente un exemple de réalisation de dispositif de reconfiguration de blocs mémoire de type séquentiels et à décalage de proche en proche ; la figure 3 représente une variante d'une partie du circuit logique de la figure 2 ; la figure 4 représente un exemple de réalisation de dispositifs de reconfiguration de blocs mémoire de type séquentiels et à remplacement de blocs défaillants par des blocs redondants ; la figure 5 représente deux exemples de compteurs de 1 utilisés dans le circuit logique de la figure 4 ; et les figures 6 à 10 illustrent des variantes de dispositifs de reroutage. 1. NOTATIONS
Dans la présente demande, on désignera par :
N : le nombre de blocs de base de la mémoire suscep- tible de présenter des défaillances, et k : le nombre maximum de blocs défaillants que l'on pourra remplacer.
Un bloc de base de la mémoire initiale sera appelé Ui avec i compris entre 0 et N-l. Les blocs de remplacement seront indifféremment appelés S0 à S]^ ou UN à UN+k_!.
Les multiplexeurs associés aux blocs Ug à Uj^-i seront appelés MDXg à MU -i. di désigne l'entrée d'un multiplexeur MUX^. Des bascules Fg à _χ et S^ à S^ sont respectivement associées aux blocs de base et de remplacement et indiquent l'état initial du bloc correspondant. Ces bascules sont à 1 si le bloc est initialement mauvais et à 0 si le bloc est initialement bon. Ces bascules sont initialisées de façon classique lors d'une étape de test pendant laquelle on vérifie le fonctionnement de chaque bloc. Selon l'invention, on traite le cas où les blocs de base aussi bien que les blocs de remplacement sont susceptibles d'être défaillants. 2. REPARATION DE PROCHE EN PROCHE
On considérera d'abord le cas où le processus de répa- ration est du type illustré en figure LA dans lequel, à chaque multiplexeur associé à un bloc, sont également associés des blocs adjacents à ce bloc. 2.1 Reconfigurâtion séquentielle
La figure 2 représente un exemple de structure de reconfiguration séquentielle pour une réparation de proche en proche de cellules éventuellement défaillantes. Dans l'exemple représenté, chaque multiplexeur MDXg à MDX]*j_ι est associé à un compteur Cg à Cjj_. qui est incrémenté par un signal Rj_ (Rg... RN-l) produit par un circuit séquentiel de sorte que le signal Rj_ prend la valeur 1 pendant plusieurs cycles d'horloge consécutifs .
Les bascules Fg à Fjj+jζ-i sont initialement chargées d'un 0 si le bloc correspondant est bon et d'un 1 si le bloc correspondant est mauvais. Les signaux Rj_ à fournir à un circuit de commande de multiplexeur Cj_ dépendent de la valeur de la bascule F-£ correspondante mais également des bascules de rang inférieur étant donné que, quand une position doit être décalée vers la gauche, toute position d'un rang supérieur doit également être décalée vers la gauche. La valeur de R dépend égale- ment des valeurs des bascules de rang supérieur à i. En effet, il faut s'assurer que le bloc que l'on vise à choisir comme bloc de remplacement est un bloc bon.
Pour résoudre ce problème, la présente invention propose 1 ' algorithme suivant . a) Fi=l entraîne que i=l, puisque, pour un bloc u"i en défaut, il doit y avoir au moins un décalage. De plus, chaque fois qu'un signal -^ est activé, il force tous les signaux de rang supérieur à l'état actif. On doit donc avoir R = Fj_+Rj__]_. b) Quand le signal R-^ est activé (Ri=l) , la valeur de la bascule F^+i est transférée à la bascule F^ et, s'il n'y a pas de bascule Fi+i, un 0 est transféré à la bascule Fj_. Ceci exprime que, à la fin du présent cycle d'horloge, l'entrée d est connectée au bloc sur lequel l'entrée d^+ι était précédemment connectée. Ainsi, la bascule Fj_ doit indiquer l'état qui était précédemment indiqué par la bascule F±+± . On déduit des points précédents l'équation séquentielle suivante pour les bascules Fi :
Fi (t+1) = i-F +ι(t), où t et t+1 indiquent deux instants successifs.
En résumé, l'algorithme séquentiel est :
Ri = Ri_ι + Fi, pour N+k-l>i 0 (1) Fi (t+1) = Ri.Fi+1(t), pour N+k-l>i>0 (2)
Les conditions aux limites sont que, pour la bascule Rg, on considère que la bascule fictive R_χ est à l'état 0 et, pour la bascule Fj^+j^-i, on considère que la bascule fictive F^r+k est à l'état 0. La figure 2 représente un circuit logique mettant en oeuvre les équations logiques ci-dessus.
La sortie Fi de chaque bascule est connectée à une première entrée d'une porte OU 11 dont la sortie est connectée par une porte ET 12 à l'entrée de cette bascule Fi. La sortie de la porte OU 11 fournit également le signal Ri- La deuxième entrée de la porte OU 11 est connectée à la sortie de la porte OU 11 de l'étage précédent. La sortie de la bascule Fi+ι est renvoyée à la deuxième entrée de la porte ET 12.
Chacune des bascules est rythmée par un signal d'hor- loge qui commande également les compteurs C^ .
On voit que ce circuit permet de satisfaire aux équations logiques susmentionnées.
On peut également comprendre le fonctionnement en considérant les étapes suivantes. Au premier coup d'horloge, on suppose que les premières bascules Fg et F]_ sont à l'état 0. Elles ne fourniront donc pas de signal de décalage aux entrées Rg et R^ des compteurs Cg et Ci. La première bascule à l'état 1, par exemple la bascule F2 , fournira un signal R2 au compteur C2 pour 1 ' incré enter. Ce signal sera également transmis par la chaîne de portes OU à toutes les bascules suivantes et incrêmentera les compteurs C3 à CN-1- Les sorties des multiplexeurs MU∑2 à UXjvj_ι seront donc toutes décalées d'un pas. Simultanément, toutes les portes ET 12 qui suivent la bascule F2 auront une première entrée validée et leur sortie passera à l'état de la deuxième entrée de la porte ET 12 correspondante, c'est-à-dire à l'état de la bascule suivante, la dernière bascule F^+jζ.i prenant l'état 0. Ainsi, si la bascule F3 n'était pas à 1, la bascule F2 prend l'état 0.
Au coup d'horloge suivant, c'est la première bascule Fi à 1 qui enverra un signal Ri aux compteurs Ci à C]sj_i et qui décalera les sorties du multiplexeur MUXi et de tous les multiplexeurs suivants. A nouveau, les contenus de toutes les bascules F à FN+J-I seront décalés d'un pas vers la droite et le cycle se reproduit. En autant de coups d'horloge qu'il y a de 1 dans les bascules Fg à FJJ+]Ç_;L, les multiplexeurs MUXg à MU _ι seront mis dans la configuration appropriée par les compteurs Cg à Gβr_ι.
Avec le schéma de la figure 2, les équations (1) et (2) ci-dessus sont mises en oeuvre par une cascade de portes OU en série. Il peut en résulter des retards relativement impor- tants, ce qui peut entraîner une durée relativement longue pour la phase de réparation. On notera toutefois que ceci n'a d'impact ni sur la durée de la phase de test ni sur la durée ultérieure de fonctionnement normal de la mémoire. Ainsi, on peut utiliser une horloge de fréquence basse spécifique pour la phase de réparation ou utiliser le même signal d'horloge que sur les autres phases mais réduire la fréquence de 1 'horloge pendant la phase de réparation.
On pourrait aussi mettre en oeuvre les équations précédentes en utilisant un circuit à plus faible retard. La figure 3 représente un exemple de circuit utilisable pour fournir huit signaux Rg à R7 à partir de huit états de bascule Fg à F7.
On notera en outre que le signal R +k-1 fourni par la dernière porte OU 11 associée à la dernière bascule Fjg-^.i est en théorie inutile puisqu'il n'est pas destiné à commander un multiplexeur (il y a seulement N multiplexeurs) . Toutefois, ce signal pourra être utilisé pour indiquer la réussite ou l'échec du processus de réparation. Si R +k-l=0 a rès k cycles d'horloge de la phase de réparation, la réparation a été couronnée de succès. Par contre, si RN+k-l=1 après k cycles d'horloge, la réparation a échoué car cela signifie qu'il y avait plus de k blocs en défaut. R^+k-l put également être utilisé comme signal d'achèvement de la phase de réparation. C'est-à-dire que l'on n'a pas besoin d'attendre k cycles d'horloge pour parachever la phase de réparation. On peut s'arrêter dès que RN+JOI devient égal à 0. Un des signaux R^_ι à Rft+k peut être utilisé à cet effet. Le signal R^-i est plus intéressant car sa valeur 0 indiquera plus tôt que les autres la fin de la réparation.
Par ailleurs, la présente invention est susceptible de diverses variantes qui apparaîtront à l'homme de l'art. Par exemple, les équations (1) et (2) peuvent être simplifiées si l'on considère que les blocs redondants
Figure imgf000010_0001
sont exempts de défauts. Dans ce cas, on peut éliminer les bascules Fpj à
FN+k-l associées à ces blocs et les circuits logiques associés.
On peut réduire la complexité du circuit en faisant certaines suppositions. Par exemple, si l'on suppose que quand on arrive à un module de rang i, i étant nettement inférieur à N, il existe inévitablement un nombre de défauts i< , on peut réduire le nombre de sorties des multiplexeurs correspondants qui, au lieu d'être des multiplexeurs à k sorties pourront être des multiplexeurs à ki sorties. On pourra parallèlement simplifier les compteurs associés à ces multiplexeurs.
Diverses autres simplifications apparaîtront à 1 'homme de l'art en fonction d'hypothèses pratiques qu'il pourra effectuer sur la réparation de défauts possibles. 2.2 Reconfiguration combinatoire
Le circuit décrit précédemment est un circuit à fonctionnement séquentiel.
On cherche maintenant à déterminer directement le décalage à conférer à chaque multiplexeur en fonction de 1 ' état de diverses bascules Fg à Fjsj+^.i, par exemple par itération. Pour fixer l'état d'un multiplexeur, on considère que chaque multiplexeur MUXi a k entrées de commande M^- à M2-^ qui doivent toutes être à zéro sauf l'entrée qui correspond au décalage que l'on veut que le multiplexeur adopte. Par exemple, si le bloc Ug est sans défaut, le multiplexeur MUXg doit ne provoquer aucun décalage, c'est-à-dire que son entrée de commande M0g doit être à 1 et que toutes ses autres entrées de commande M1 à M^g doivent être à zéro.
En appelant Fi l'état de la bascule Fi et F} l'état complémentaire, les entrées du multiplexeur MUXg s'expriment en fonction de 1 ' état des blocs Ug à U associés comme suit : °g = F0
Figure imgf000011_0001
(3) M°k = Fk.Fk_!... .Fg.
Dans ces équations, les points désignent des fonctions ETo. Ces équations se comprennent bien en notant que, si par exemple les modules Ug et U]_ sont en défaut, le multiplexeur MUXg doit effectuer deux décalages, c'est-à-dire que M°g et M°χ seront à zéro, que M°2 sera à 1 et que tous les M03 à M°k seront à zéro.
De façon générale, on peut exprimer 1 ' état de chacune des entrées M1+1j du multiplexeur MUXi+ι en fonction des entrées du multiplexeur UXi de la façon suivante : Mi+l = Fi+j+1(Mij+Mij_1.Fi+j+Mij_2.Fi+j_1.Fi+j+ ...
+Mig.Fi+1.Fi+2 -.Fi+j), pour O≤j≤k. (4) A partir des équations (3) et (4) , on peut obtenir de façon générale les équations de M1j pour toute valeur de i et de j en fonction des variables Fi. Ceci peut être effectué par un algorithme simple. Un tel algorithme établit d'abord dans l'équation (4) la valeur i+l=l pour obtenir les équations des signaux M1^ en fonction des variables Fi et des variables M°r. Ensuite, il remplace dans les équations résultantes les variables M°r par leurs expressions en fonction des variables Fi comme cela est décrit par les équations (3) . Alors, on peut calculer les fonctions M2j de façon similaire en fixant i+l=2 dans l'équation (4) puis en remplaçant les expressions des fonctions M°r et M1g obtenues à 1 ' étape précédente et ainsi de suite dans les fonctions M3j, M4j,... MN_1j . Le calcul s'arrête bien entendu pour la position N puisque, comme on l'a vu précé- demment, au-delà de cette position, il n'y a pas de multiplexeurs. Le signal Rf = M^g-M^. • • -MNk Peut être utilisé pour signaler la réussite (Rf=l) ou l'échec (Rf=0) d'une réparation. 3. REPARATION DISTANTE
Comme on l'a rappelé dans l'introduction de la présente demande, on distingue les opérations de réparation de proche en proche telles qu'illustrées en figure 1A des opérations de réparation distante telles qu'illustrées en figure 1B dans laquelle les modules bons restent associés à leurs entrées initiales tandis que les modules en défaut sont remplacés par des modules choisis dans le groupe des modules redondants.
Pour ce mode de réparation distante, on distinguera comme précédemment un mode de réparation séquentiel et un mode de réparation combinatoire . 3.1. Reconfiquration séquentielle La figure 4 illustre un schéma d'un mode de réalisation d'un système de réparation séquentiel.
Comme dans le schéma de la figure 2, on trouve des multiplexeurs MUXg à MUXJJ_]_ associés à des entrées dg à d^-i destinées à être connectées à des modules non en défaut. Dans cet exemple, les multiplexeurs sont disposés de droite à gauche au lieu d'être disposés de gauche à droite comme précédemment. On aurait également pu choisir de modifier la numérotation et de partir de N-l pour aller vers 0 au lieu de partir de 0 pour aller à N-l. A chaque module est associé un circuit de commande qui au lieu d'être comme précédemment un compteur est cette fois-ci constitué d'un ensemble de k+1 bascules pour mémoriser les valeurs exactes des signaux de commande dans un code de 1 parmi k+1. Ces circuits de commande sont désignés en figure 4 par les références Bg à B>J_]_. Les bascules indiquant l'état bon ou mauvais des blocs initialement associés aux divers multiplexeurs sont désignées comme précédemment par les références Fg à Fj- j- pour les bascules associées aux blocs de base et par les références S]_ à Sk dans l'exemple représenté pour les blocs redondants.
En ce qui concerne les bascules de commande des multiplexeurs, on pourrait également utiliser un nombre plus faible de bascules dans chaque ensemble pour coder les valeurs de ces signaux en un code plus compact, par exemple un code binaire, combiné à un décodeur qui produit le code de 1 parmi k+1. Cet ensemble de bascules peut être constitué de façon à réaliser seulement la fonction de charge. Dans ce cas, on devra utiliser un autre circuit pour calculer le nombre de positions dont la borne d'entrée et de sortie di doit être décalée vers les blocs redondants et charger ces résultats dans les bascules de réparation.
Une autre possibilité est de prévoir les bascules de réparation selon une configuration de compteur comme on 1 'avait fait précédemment. On notera que dans le cas de la figure 4, on effectue la réparation selon un décalage vers la droite ce qui signifie que l'on répare d'abord le module fonctionnel le plus à gauche. On va utiliser deux fonctions séquentielles agissant au rythme d'une horloge qui, à chaque cycle, active notamment les bascules Fg à FN_i et Si à Sk.
La première séquence utilisant les bascules Fg à
Figure imgf000013_0001
produit des signaux ENg à EN_I qui valident ou non les circuits de commande correspondants. Chaque bascule Fi est reliée au circuit de commande Bi par une porte ET 21 qui reçoit également 1 ' inverse de la fonction OU de toutes les bascules précédentes . Ainsi, si une bascule Fi contient un 0 (bloc correspondant bon) , le circuit de commande Bi est inhibé et le multiplexeur UXi n'est pas décalé. La sortie de la bascule Fi est reliée par une porte ET 22 à l'entrée de cette bascule Fi. Ainsi, si la bascule Fi contient initialement un 0, son état reste toujours à 0. La deuxième entrée de la porte ET 22 reçoit la fonction OU de toutes les bascules précédentes. Ainsi, lors d'un cycle d'horloge, seul le circuit de commande associé au bloc en défaut non encore réparé, situé le plus à gauche, est activé.
La seconde séquence fonctionnelle est mise en oeuvre en utilisant les bascules ST. à Sk et produit à tout instant le nombre de positions dont le bloc en défaut, au cycle considéré, signalé par un signal ENi actif, doit être décalé vers l'un des blocs redondants (non représentés en figure 4) . La sortie de chaque bascule Si est connectée à son entrée par une porte OU 23 dont la deuxième entrée est connectée à la sortie d'une porte ET 24 qui reçoit les sorties de la bascule Si_χ et de la porte ET précédente. On appelle Li la sortie de la porte ET qui suit la bascule Si. Les sorties Li sont fournies à un compteur de 1 combinatoire 25 qui reçoit un 1 sur sa première entrée. Ainsi, le compteur 25 fournit le nombre de positions dont le bloc de base en défaut indiqué par le signal ENi actif doit être décalé dans les blocs redondants pour réaliser une réparation.
Un compteur de 1 combinatoire peut être réalisé de diverses façons. Deux exemples de telles réalisations pour k=3 et k=5 en utilisant des additionneurs complets (à trois entrées)
FA et des demi-additionneurs (à deux entrées) HA sont représentés en figure 5. Ces compteurs fournissent un résultat codé en binaire. D'autres réalisations peuvent fournir un résultat codé d'une autre manière, par exemple selon un code de 1 parmi k+1. Un compteur de 1 séquentiel pourrait également être mis en oeuvre. Par exemple ceci peut être réalisé en utilisant un circuit de décalage à k+1 cellules. La cellule 0 est chargée de 1. Les signaux L]_, L2-...Lk sont chargés dans les cellules suivantes. Les contenus seront décalés vers la droite jusqu'à ce que le premier 0 soit fourni vers la sortie.
Pour le calcul des décalages, on utilisera des fonctions intermédiaires Fli. La fonction Fli est à 1 si l'un quelconque des signaux Fi, Fi+]_ ... Fj$-± est à 1. Ceci donne les équations récursives suivantes : Fli = FIi-l + Fi' avec 0<i<N-l et FI_1=0 (5) La bascule Fi maintient son état tant que l'une des bascules Fi_χ, Fi_2, • • -^ -l est à 1. Cette condition implique que FIi_i = 1. On obtient ainsi :
Fi (t+1) = FIi_i.Fi(t), avec O≤i≤N-l (6) Le signal ENi passe à 1 si Fi est à 1 et que toutes les bascules Fi_ι à Fg sont à 0. Ceci implique que FIi_ι = 0. On obtient ainsi :
ENi = FÏi-l -Fi (7)
Le circuit formé à partir des bascules Si met à jour le contenu de ces bascules à chaque cycle d'horloge. Cette mise à jour est telle que à tout cycle les bascules Si indiquant un module disponible contiennent un 0 et que les autres bascules Si contiennent un 1. Ainsi un bloc redondant disponible est un bloc exempt de défauts qui n'est pas encore occupé par la réparation d'un bloc fonctionnel en défaut. Un bloc redondant en défaut reste toujours indisponible, c'est-à-dire que Si reste toujours égal à 1. Un bloc redondant exempt de défaut devient indisponible à un cycle t+1 si au cycle t toutes les bascules Si précédentes sont à 1. Ainsi on a : Lg = 1, Li = Li_i.Si, 1 < i < k (8)
S (t+1) = Si(t) + Li_ι 1 < i < k (9)
D'après ces équations, les signaux L^, L2-...Lk prennent les valeurs
Figure imgf000015_0001
où j est le plus petit entier pour lequel Sj = 0. Dans ce cas, le bloc redondant j+1 est le premier bloc redondant disponible pour réaliser une réparation.
Les signaux Lk et FIjvj_ι peuvent être utilisés pour achever la phase de réparation.
Figure imgf000015_0002
indique que toutes les positions sont correctes et que la réparation peut s'achever. Lk=l indique qu'il n'y a plus de module redondant disponible.
La réparation peut également être réalisée en utilisant des compteurs de réparation plutôt que des bascules de réparation B . Le compteur de réparation peut être un compteur binaire suivi d'un décodeur pour produire un code de 1 parmi k+1, ou un registre à décalage. Dans ce cas, le compteur 25 peut être remplacé par un compteur séquentiel de 1 tel qu'un circuit de décalage. La valeur 1 de la cellule la plus à gauche de ce circuit de décalage sera utilisée pour conserver les états des bascules F et S. La valeur 0 de cette cellule sera utilisée pour maintenir l'état du compteur séquentiel jusqu'à son chargement suivant .
La cellule la plus à gauche du circuit de décalage sera à 1 pendant ki cycles d'horloge, où ki est égal au nombre de signaux Lj ayant la valeur 1, plus 1. Alors, ki est égal au nombre de positions dont le bloc Ui en défaut indiqué par l'état EN =l doit être décalé vers les modules redondants. Le signal ENi sera maintenu à la valeur 1 pendant ki cycles d'horloge. Ainsi, en utilisant le signal ENi en tant que signal qui valide l'opération de comptage du compteur de réparation de position i, on pourra produire les valeurs requises sur les signaux de commande du multiplexeur de réparation de position i.
Avec cette dernière mise en oeuvre, on peut également charger dans le registre mettant en oeuvre le compteur de 1 les signaux S^, S2... Sk au lieu des signaux L^, L2... Lk. La raison en est que ces signaux sont égaux jusqu'à et y compris la posi- tion la plus à gauche dont l'état est 0. Ces positions sont celles qui déterminent le fonctionnement du circuit. 3.2 Reconfiguration combinatoire
Comme précédemment, le système de réparation à distance peut également être réalisé par une fonction combina- toire que l'on définira de façon incrémentielle. En reprenant les notations de la section 2.2, on a les équations : °g = F g M0! = Si-Fg
(10) M°k = S k . Sk_1 . . . S1 . Fg .
Les équations correspondant à une borne arbitraire dj impliquent les variables F et S. Pour calculer les variables jyji+1. on ne eut utiliser les variables M1 ]- comme indicateurs du nombre de blocs redondants occupés après la réparation de cer- tains blocs de base. Ceci est dû au fait que si le bloc de base Ui est exempt de défaut, toutes les fonctions M1! à Mx k sont à 0 bien que certains des blocs Ug à U _ι puissent être en défaut. Ainsi, on introduit des variables intermédiaires MI1^ qui comptent le nombre de blocs redondants occupés par les blocs de base en défaut. Ces variables sont déterminées par les équations suivantes .
Pour la position 0, les variables MI sont égales aux variables M :
MI°j = M°j pour 0 < j < k (11)
Pour la position i+1, les variables Mli+1j sont égales aux variables MI1^ si le bloc Ui+ι est exempt de défauts. Sinon elles sont égales à M1+1j . Ainsi, on a :
MIi+l.j = Mjij. F1+1 + Mi+lj.Fi+1
0 < i < N-2 et 0 < j < k (12) La variable M1+1g est égale à 1 si le bloc U±+ est exempt de défaut. La variable M1+1j+ι est égale à 0 si le bloc ui+l est exempt de défauts. Si U +ι est en défaut, MÏ+1J+:L devient égal à 1 si Sj+χ est exempt de défauts et s'il existe un entier r<j tel que r blocs redondants en défaut et exempts de défauts sont déjà occupés pour réparer les modules Ug avec q<i, et les blocs redondants Sr+i, Sr+2 ... Sj sont en défauts . Cette analyse conduit aux équations : Mi+10 = Fi+1/ Mi+1j+l = S j +iFi+ι (Mlij +Mlij _1Sj +Mlij _2Sj _1Sj+ ...
+MIi 0SιS2...Sj) , pour 0<j<k-l, 0<i<k-2, (13) Ainsi, les équations (10) à (13) décrivent la fonction
M de façon récursive et peuvent être mises en oeuvre par tout logiciel ou matériel approprié.
Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, chaque bascule d'indication d'état est associée à des signaux de validation pour, dans un mode de test se charger en fonction de l'état bon ou mauvais du bloc correspondant, et, en mode de réparation, fonctionner de la façon décrite précédemment. Variantes de multiplexage
En figure 2 les données peuvent se propager : - des modules Ux à U^.! vers les bornes d0 à d^..,. (par exemple dans le cas où d0 à cL^^ sont le bus de données en lecture d'une mémoire) . On appellera ce cas configuration de type lecture. - des bornes d0 à à^^ vers les modules Ox à U^^ (par exemple dans le cas où d0 à d^^ sont le bus des données en écriture d'une mémoire, ou dans le cas où d0 à d^^ sont les signaux de sélection des modules) . On appellera ce cas configuration de type écriture. - dans les deux directions (par exemple dans le cas où d0 à d^.! sont le bus bidirectionnel de lecture/écriture d'une mémoire) . On appellera ce cas configuration bidirectionnelle.
Dans le cas de la configuration bidirectionnelle, les multiplexeurs utilisés doivent permettre une propagation bidirectionnelle des signaux. Un multiplexeur du type l-parmi-4 est présenté en figure 6. Un multiplexeur bidirectionnel peut être également utilisé dans le cas des configurations du type lecture et du type écriture.
Dans le cas de la configuration du type lecture, on peut aussi utiliser un multiplexeur permettant uniquement la propagation des k signaux D0 à Dk.x de sortie des modules Ux à U N+k-ι vers le signal d. Un tel multiplexeur pour le cas k=4 est présenté en figure 7.
Dans le cas de la configuration du type écriture, on peut aussi utiliser un "multiplexeur" permettant uniquement la propagation du signal d vers les k signaux D0 à D^. Ce circuit, qui n'est pas un multiplexeur au sens habituel du terme, sera appelé MUX k-parmi-1. Un circuit de ce type pour le cas k=4 est représenté en figure 8. On remarque que dans cette figure M^≈l implique Dj=0. Par conséquent, si on doit générer un signal G en combinant plusieurs signaux Dj en provenance des sorties de plusieurs circuits de type k-parmi-1, il faut utiliser une porte OU recevant les signaux Dj et fournissant le signal G. Par contre, si on utilise un multiplexeur bidirectionnel, réalisé comme dans la figure 6, la porte OU ne sera pas utilisée, car le signal G sera généré en utilisant une connexion câblée des signaux Dj . Ainsi, une configuration de type écriture, utilisant des circuits de type MUX k-parmi-1, nécessitera de remplacer la connexion câblée des signaux Dj par des portes OU, tandis que l'utilisation de multiplexeurs bidirectionnels ne nécessite pas l'utilisation de portes OU. Néanmoins, dans certains cas, le signal fourni à un module doit prendre la valeur 1 à 1 'état actif et la valeur 0 à l'état inactif. Cette contrainte n'est pas satisfaite quand on utilise le multiplexeur bidirectionnel de la figure 6 ; par contre elle est satisfaite quand on utilise le circuit de type MUX k-parmi-1 présenté dans la figure 8, combiné avec la porte OU. Il se peut aussi que le signal fourni à un module doive prendre la valeur 0 à 1 ' état actif, et la valeur 1 à l'état inactif. Dans ce cas on utilisera des circuits de type MUX k-parmi-1 réalisant la fonction Mj i=l implique Di=d et Mj^O implique Dj_=l, combinés avec des portes ET.
Dans d'autres implémentations, il se peut qu'on combine les sorties d des plusieurs multiplexeurs 1-parmi-k pour générer un signal G. Si on utilise des multiplexeurs bidirectionnels, on peut générer le signal G en utilisant une connexion câblée des signaux d. Par contre, si on utilise des multiplexeurs 1-parmi-k, réalisés comme dans la figure 7, la connexion câblée doit être remplacée par une porte OU. La raison est que le multiplexeur de la figure 7 réalise la fonction : M^, , ...M , ...M = 00...1...0 implique d=Dj et M0 i=M1 i, ...≈ j 1, ...≈M^≈O implique d=0. Ainsi, il sera moins coûteux d'utiliser un multiplexeur bidirectionnel. Néanmoins, il se peut que le signal G prenne la valeur 0 à l'état inactif. Dans ce cas, il sera nécessaire d'utiliser un multiplexeur réalisé comme dans la figure 7. D'autre part, si le signal G doit prendre la valeur 1 à l'état inactif, on doit utiliser des multiplexeurs de type 1-parmi-k, réalisant la fonction : M;,1, M,1, ...M , . . .Mk = 00...1...0 implique d=Dj , et M0 X = M,1, ...≈M,.1, ... =Mk L = 0 implique d=l.
Un dernier cas des circuits de multiplexage correspond à des circuits réalisant les mêmes fonctions que celles décrites précédemment, à l'exception près qu'on applique des valeurs complémentaires à leurs entrées. Par exemple, l'implication M^, M , ...Mj 1, ...M; = 00...1...0 implique d=Dj , devient , M , ...Mj 1, ...M^ = 11...0...1 implique d=Dj .
Une autre façon de réaliser l'aiguillage de proche en proche est représentée en figure 9, dans laquelle N=3 et k=2. Pour réaliser le multiplexage, on utilise des circuits d'aiguillage, tels que présentés dans les figures 6, 7, et 8. Si les circuits de la figure 1A sont des multiplexeurs bidirectionnels, la figure 9 utilisera des multiplexeurs bidirectionnels. Si les circuits de la figure 1A sont des multiplexeurs 1-parmi- k, comme le circuit de la figure 7, la figure 9 utilisera des circuits d'aiguillage du type MUX r-parmi-1, comme le circuit de la figure 8. Si les circuits de la figure 1A sont des circuits du type MUX k-parmi-1, comme le circuit de la figure 8, la figure 9 utilisera des multiplexeurs 1-parmi-r, comme le circuit de la figure 7.
On considère que la figure 9 utilise des circuits du type MUX r-parmi-1. La borne d de chacun de ces circuits est connectée sur le signal d'entrée/sortie d'un des modules Uα, U2, ... , UJJ^.J^. On appellera CMi le circuit d' aiguillage connecté à
1 ' entrée/sortie du module Ui.
Les bornes O^ des circuits d'aiguillage sont combinées pour générer les signaux d0, dx, ..., d^^^. Pour les circuits d'aiguillage CMi du type r-parmi-1, les valeurs de r seront : r = i + 1, pour 0≤i≤k-l, r = k + 1, pour k≤i<N-l, r = N + k - i, pour N≤i≤N+k-1.
Pour 0<i+j≤N-l, le signal M^ sélectionne la connexion de la borne Di du circuit CM^ à la borne d'entrée/sortie du module UM^ . Pour N≤i+j≤N+k-1, le signal M^ sélectionne la connexion de la borne Dj,.^ du circuit CM^ à la borne d'entrée sortie du module UM^. Les bornes D± sélectionnés par les signaux M1,,, M , ..., M sont combinées pour générer le signal dL . La connectique sera exactement la même si les circuits d'aiguillage de la figure 9 étaient des multiplexeurs 1-parmi-r. Une transformation similaire peut être utilisée dans le cas du système de configuration distante illustré dans la figure 1B. Dans ce cas le paramètre r des circuits d'aiguillage prend les valeurs suivantes : r = 1, pour O≤i≤N-1, et r = k + 1, pour N<i<N+k-l.
Pour 0<i≤N-l, le signal M1,, sélectionne la connexion de la borne d'entrée/sortie du module Oi à la borne D0 du circuit d'aiguillage CMi, qui a en effet une seule borne du type Di. Pour 0<i≤N-l, et l≤j≤k, le signal M^ sélectionne la connexion de la borne d'entrée/sortie du module On+i à la borne ^ du circuit d'aiguillage CM^^. Les bornes D£ sélectionnées par les signaux Mx 0, Mx x, ..., M sont combinées pour générer le signal d .
Dans les systèmes obtenus par les transformations pré- cédentes, les signaux M^ prennent les mêmes valeurs que dans le système d'origine. Les solutions de génération des signaux M^ que nous avons présentées sont donc valables pour les systèmes obtenus par ces transformations. Réparation utilisant une redondance insuffisante On considère maintenant un système incluant N modules fonctionnels, k modules redondants et capables de réparer jusqu'à r modules défaillants, avec r>k>0. Dans le cas où le nombre de modules défaillants ne dépasse pas k, le système, après réparation, fonctionnera avec N modules. Si le nombre de modules défaillants est q avec k<q≤r, le système fonctionnera avec N+k-q modules. On suppose qu'on dispose de N signaux de sélection d0, d1 ..., dχ_lt chacun sélectionnant un module. La réparation consistera à rerouter les signaux d0, dι; ..., c^g.! de façon à remplacer chaque module fonctionnel défaillant par un module sans faute. De plus, le système de réparation pourra éventuellement fournir des signaux indiquant la réduction du nombre de modules de façon que le reste du système utilise seulement les ressources des modules non défaillants qui seront vus par le système comme étant les N+k-q premiers modules de la configuration. Pour illustrer l'intérêt de cette solution, considérons que les modules U0, Ux, ..., U^^, sont des blocs d'une mémoire, chacun incluant R adresses. Le système peut exploiter une mémoire incluant un total de R-N adresses. Dans cette confi- guration, il offre les meilleures performances, mais il pourra aussi fonctionner avec une mémoire de capacité plus faible.
Les signaux d0, dx, ..., d^ sont générés par exemple, par le décodage d'un nombre de bits d'adressage égal à
[log2(N)]. La valeur 00...0 de ces bits active le signal d0, la valeur 00...1 active le signal dx, etc., jusqu'à la valeur N-l exprimée en binaire qui activera d^. Dans le cas de q modules défaillants où le système utilisera un espace mémoire incluant seulement R(N+k-q) adresses, il est important que cet espace d'adressage ne soit pas fragmenté, c'est-à-dire que le système dispose d'une mémoire couvrant l'espace d'adressage 0, 1, ...R(N+k-q). Le système de réparation proposé, permet cette unification par le reroutage de signaux d0, dx, ..., du^.^ et fournit éventuellement des signaux indiquant l'espace d'adressage invalide. La technique que nous proposons pour faire cette réparation implëmente le même circuit de réparation dans le cas où le nombre k des modules redondants est égal au nombre r de modules défaillants que nous envisageons de réparer, à l'exception près de certains multiplexeurs, comme cela sera décrit dans ce qui suit.
Nous considérons ici une réparation locale. Les modules manquants pour avoir un nombre de modules redondants égal à r sont les modules U N + r . ± tels que l≤i≤r-k.
Les groupes des signaux de contrôle qui sélectionnent tout module U N + r . i tel que l≤i≤r-k sont les signaux M " ^^ tels que l≤i≤r-k et l≤j≤i. Ce groupe de signaux de contrôle ne rentrerons pas dans le multiplexeur de rang N-j , qui aura ainsi r+j-i entrées de contrôle au lieu de r+1. Ce multiplexeur aura par ailleurs r+j-i bornes de type Dq au lieu de r+1. Les bornes manquantes seront les bornes Dr.j+1 tels que l≤j≤i. Par ailleurs, les signaux de contrôle non utilisés par les multiplexeurs pourront servir pour indiquer 1 'espace d'adressage invalide. Pour ce faire, on formera les signaux binaires @i pour tout i, tel que l≤i≤r-k. Ces signaux sont déterminés par :
Dans cette formule, e ET logique de tous les termes Gj tels que l
Figure imgf000023_0001
au plus petit indice i tel que @i=l indique que l'espace d'adressage est limité aux seules (N+k+i-r-l)R premières adresses.
La figure 10 donne l'exemple de la technique pour N=4 modules fonctionnels, k=2 modules redondants et r=3 modules défaillants réparables. On observe que 1 ' implémentation est la même que dans le cas N=4, k=r=3 (4 modules fonctionnels, 3 modules redondants et 3 modules défaillants réparables) , avec l'exception du dernier multiplexeur qui est un multiplexeur l-parmi-3 au lieu de l-parmi-4. Le signal @1=M3 3 indique que les R dernières adresses sont invalides. Réparation pour mémoire CACHE Une dernière solution de réparation amenant à des coûts très faibles, concerne le cas des mémoires CACHE. Ces mémoires peuvent disposer d'un point de mémorisation ou flag, appelé ci-après flag de validité ou Fg. Fg indique si un mot mémoire est valide ou invalide. Par exemple, Fg=l indique que le mot est valide et Fg=0 indique que le mot est invalide. Dans ce dernier cas, le système effectue l'opération dans une autre de ses mémoires. La valeur du point de mémorisation est manipulée pendant le fonctionnement du système, permettant de gérer la cohérence des accès aux mémoires CACHE et aux autres mémoires. Nous proposons ici d'introduire pour chaque mot de la mémoire
CACHE (ou pour un ensemble de mots) un autre point de mémorisation du type flag, appelé ci-après flag de défaut ou Fd. Le contenu de Fd est manipulé uniquement durant le test du circuit, et il est fixé à la valeur indiquant un mot défaillant (par exemple pour Fd=l) ou à la valeur indiquant un mot non défaillant (par exemple pour Fd=0) . Lors du fonctionnement du système, le contenu de Fd est bloqué à sa valeur fixée lors de la phase du test. Ensuite, si Fd indique un mot défaillant, l'opération s'effectuera dans une autre mémoire. Etant donné que la valeur de Fd a été fixée avant que l'opération du système débute, aucune opération ne sera effectuée dans le mot défaillant, et toute donnée qui aurait pu être stockée dans le mot s'il avait été non défaillant, sera stockée dans une autre mémoire, permettant un fonctionnement cohérent du système. Etant donné que le nombre des défaillances dans un circuit intégré est généralement faible, cette approche réduit de façon non significative la capacité de la CACHE et elle n'a qu'une influence minime sur les performances du système.
Les mémoires CACHE sont utilisées pour réduire la fréquence des accès dans la mémoire du système. Les cellules d'un mot d'une mémoire CACHE sont partagées dans une partie appelée clé et dans une partie de données. Les bits d'adressage de la mémoire du système sont partagés en deux parties, ci-après appelées première partie et deuxième partie. La première partie des bits d'adressage est utilisée pour sélectionner un mot de la mémoire CACHE. Dans une opération d'écriture, la deuxième partie des bits d'adressage est stockée dans la partie clé du mot sélectionné, tandis que les données de l'opération d'écriture sont stockées dans la partie de données. Dans une opération de lecture, la partie clé et la partie de données du mot sélec- tionné sont lues. Le contenu de la partie clé est comparé à la deuxième partie des bits d'adressage de l'opération écriture. Si la comparaison réussit, on dit que l'accès à la mémoire CACHE est réussi, et on utilise les valeurs lues dans la partie données comme résultat de l'opération de lecture. Si la compa- raison échoue, on accède à la mémoire du système pour effectuer la lecture. Dans la plupart des cas, chaque valeur de la première partie des bits d'adressage sélectionne un seul mot de la mémoire CACHE. Mais dans certaines mémoires CACHE la même valeur de la première partie des bits d'adressage peut sélec- tionner plusieurs mots. Ainsi, dans le premier cas, si un mot est invalide car son flag de défaut indique un mot défaillant, alors chaque opération, telle que la valeur de la première partie des bits d'adressage sélectionne ce mot, va s'effectuer dans la mémoire du système. Dans le deuxième cas, une opération sélectionnant un mot dont le flag de défaut indique qu'il est défaillant n'accédera pas nécessairement à la mémoire du système, car l'opération peut réussir dans un des autres mots de la mémoire CACHE sélectionné par la même valeur de la première partie des bits d'adressage.
Une technique similaire peut être utilisée pour des mémoires de type CAM (Content Adressable Memory) . On peut voir une mémoire CAM comme une mémoire CACHE dont la première partie des bits d'adressage est vide. Ainsi, tous les bits d'adressage sont stockés dans la partie clé. Néanmoins, la partie clé de chaque mot possède un comparateur. Ainsi, dans une opération de lecture, l'adresse de lecture est comparée en parallèle au contenu de la partie clé de chaque mot. Si la comparaison réussit pour un mot, la sortie du comparateur de ce mot sélectionne la partie de données du mot. Ainsi, on peut lire le contenu de la partie de données de ce mot à la sortie de la mémoire. En écriture, il y a deux cas possibles.
- Comme pour une lecture, l'adresse est comparée à la partie clé des mots. Si la comparaison réussit pour un mot de la CAM, la sortie du comparateur de ce mot sélectionne la partie de données du mot et on effectue l'écriture dans cette partie.
- Il n'y a pas de comparaison de l'adresse, mais on utilise un critère pour sélectionner un mot de la CAM, et on écrit l'adresse d'écriture dans la partie clé du mot, et la donnée de l'opération d'écriture dans la partie de données du mot. Dans ce cas, pour sélectionner le mot à écrire, divers critères sont utilisés d'un système à l'autre. Souvent, ce type d'écriture sélectionne le mot auquel on a accédé le moins récemment, mais d'autres critères sont aussi utilisés selon le système. L'utilisation des flags qui permettent ou interdisent l'accès à un mot est aussi une pratique courante. Pour effectuer la réparation d'une mémoire CAM, on rajoute à chaque mot une cellule de flag de défaut Fd. En phase de test, si un défaut est détecté dans un mot, on écrit 1 dans la cellule du flag Fd du mot. En fonctionnement normal, la valeur 1 du flag Fd interdit tout accès au mot défaillant. Les opérations visant le mot défaillant peuvent alors être effectuées dans une autre mémoire du système. Néanmoins, en contraste avec une mémoire CACHE, dans une mémoire CAM tout mot est remplaçable par tout autre mot. En fait, étant donné que chaque mot est sélectionné uniquement par le contenu de sa partie clé, il n'y a pas de différenciation de mots en fonction de la valeur des bits d'adressage. Ainsi, dans le cas présent, on n'a pas besoin d'accéder à une autre mémoire du système, car on peut effectuer toutes les opérations dans les mots non défaillants de la mémoire CAM réparée. Par ailleurs, la mémoire CAM peut comporter un nombre de mots suffisant de façon à avoir après réparation une capacité satisfaisante pour le système.
La mémoire CAM proposée ici, peut être utilisée en outre pour effectuer la réparation d'une autre mémoire en remplaçant chaque mot défaillant de la mémoire par un mot non défaillant de la mémoire CAM. Pour ce faire, on procède selon les étapes suivantes.
- On teste d'abord la mémoire CAM et, chaque fois qu'on détecte un défaut dans un mot, on écrit 1 dans le flag Fd de ce mot. Le contenu des flags Fd n'est plus modifié après la fin du test de la mémoire CAM.
- On teste la mémoire à réparer et, chaque fois qu'on détecte un défaut dans un mot, on écrit la valeur de l'adresse qui a sélectionné le mot défaillant dans la partie clé d'un mot de la mémoire CAM. Pour sélectionner le mot de la CAM dans lequel on va effectuer cette écriture, on peut utiliser diverses procédures. Une telle procédure consiste à utiliser, pendant la phase du test de la mémoire, un compteur binaire avec un décodeur. Chaque sortie du décodeur sélectionne en phase de test de la mémoire un mot de la CAM. A chaque écriture dans la CAM on incrémente le compteur. Ainsi, la pro- chaine écriture d'une adresse se fera dans un autre mot. Pendant cette phase, on vérifie aussi la valeur du flag Fd. Si pour un mot de la CAM on trouve Fd = 1, on sélectionne un autre mot de la CAM pour effectuer une écriture d'adresse. Dans 1 ' implémentation utilisant le compteur et le décodeur, chaque fois qu'on sélectionne un mot avec Fd=l, on incrémente de nouveau le compteur, avant d'effectuer une écriture d'adresse. Bien sûr, le compteur et le décodeur peuvent être remplacés par un registre à décalage dont un bit est initia- lise à 1, et tous les autres bits à 0.
- En fonctionnement normal, chaque adresse d'une opération d'écriture ou de lecture dans la mémoire est comparée en parallèle aux parties clés de tous les mots de la CAM. Si la comparaison réussit pour un mot, qui a par ailleurs Fd=0, on effectue l'opération courante dans ce mot de la CAM, au lieu de l'effectuer dans la mémoire. Ainsi, dans le cas d'une opération destinée à faire une écriture dans la mémoire, on écrit les données à écrire dans la partie de données de ce mot de la CAM, et en cas de lecture on lit la partie de don- nées de ce mot de la CAM et on fournit le résultat au système au lieu des données qu'on devrait lire dans la mémoire.
On réussit ainsi à réparer les mots défaillants dans la mémoire, tout en se protégeant contre les défauts dans les mots de la CAM. Notons que, si un mot de la CAM contient une faute dans la cellule de flag Fd, et dans une autre partie du mot, le flag défaillant pourrait indiquer que le mot n'est pas défaillant. Pour réduire la probabilité de cet événement, on peut répliquer la cellule de ce flag une ou plusieurs fois, et invalider le mot si une au moins de ces cellules de flag est à 1. Néanmoins, la probabilité d'occurrence de tels défauts reste très faible pour les technologies actuelles et on utilisera une seule cellule pour le flag Fd. L'augmentation de la densité des défauts prévue pour les nanotechnologies pourrait apporter un intérêt à la réplication des cellules de flag Fd. Le système de réparation peut être prévu pour qu'on puisse reconfigurer la mémoire non seulement durant le test de fabrication mais aussi pendant les différentes phases de test exécutées durant la vie du circuit. Dans ce cas, Fd sera stocké dans un point de mémorisation reprogrammable (volatil ou non- volatil) . D'autre part, si la réparation s'effectue uniquement pendant le test de fabrication, Fd pourrait être stocké dans un point de mémorisation non reprogrammable, par exemple dans un dispositif fixant une valeur logique à l'aide d'un fusible.
Dans la description précédente des systèmes à reconfiguration combinatoire, on a décrit des codages de type 1 parmi k+1 des états M^g à M1 ]^ des entrées de démultiplexeurs. On aurait également pu prévoir des systèmes à codage binaire. L'homme de métier pourra réaliser une correspondance biunivoque entre ces deux types de codage. Dans ce cas, les signaux binaires prendront la valeur q quand le signal M^-g est égal à 1 et que tous les autres signaux M1g à M1]^ sont à 0. L'homme du métier pourra par ailleurs appliquer ce principe pour coder le nombre de décalages d'une position selon tout autre code.

Claims

REVENDICATIONS
1. Dispositif de reconfiguration d'un ensemble de N modules électroniques de base associés à k modules redondants, k des N+k modules étant susceptibles de présenter un défaut, comprenant : N multiplexeurs de 1 parmi k+1 (MUXi) ' chaque multiplexeur ayant une première borne (di) susceptible d'être connectée à l'une de k+1 deuxièmes bornes respectivement connectées aux k+1 bornes d'entrée/sortie d'un groupe ordonné de modules composé d'un module de base (Ui) et de k autres modules ; N+k bascules (Fi) , chaque bascule étant indicatrice d'un état bon ou mauvais d'un des N modules de base et des k modules dudit groupe ordonné ; et un moyen logique associé à chaque multiplexeur de rang j , j étant un entier compris entre 0 et N, pour - déterminer un premier nombre correspondant au nombre de bascules de rang 0 à j indiquant un état mauvais,
- déterminer un deuxième nombre correspondant au nombre de modules du groupe ordonné associé au module de rang j , à compter, en partant du premier module dudit groupe ordonné, pour trouver un nombre de modules bons égal au premier nombre,
- connecter la première borne du multiplexeur à sa deuxième borne de rang égal au deuxième nombre, et
- inhiber éventuellement le décalage des multiplexeurs correspondant à des blocs bons.
2. Dispositif de reconfiguration selon la revendication 1, dans lequel la réparation est effectuée de proche en proche et de façon séquentielle, caractérisé en ce que le moyen logique (Fi, 11, 12, Ci) fournit à chaque cycle d'une horloge une commande de décalage éventuel des multiplexeurs et une commande des contenus (F ) des bascules selon les équations suivantes :
Ri = Ri_ι + Fi, pour N+k-l>i>0 (1)
F (t+1) = Ri.Fi+1(t), pour N+k-l>i>0 (2) où t et t+1 indiquent deux instants successifs.
3. Dispositif de reconfiguration selon la revendication 1, dans lequel le moyen logique comprend : une porte OU (11) recevant la sortie de chaque bascule de rang i (Fi) et de la bascule précédente (Fi_χ) ; une porte ET (12) recevant les sorties de la porte OU
(11) et de la bascule de rang i+1 (F +]_) ; et un compteur (Ci) de commande du multiplexeur (MUXi) recevant la sortie de la porte OU (11)
4. Dispositif de reconfiguration selon la revendica- tion 1, dans lequel la réparation est effectuée de proche en proche et est réalisée selon l'équation combinatoire : Mi+l = Fi+j+1(Mij+Mij_1.Fi+j+Mij_2.Fi+j_1.Fi+j+ ...
+Mig.Fi+1.Fi+2 ..Fi+j), pour O≤j≤k. (4)
5. Dispositif de reconfiguration selon la revendica- tion 1, dans lequel la réparation est effectuée de façon distante et de façon séquentielle, caractérisé en ce que le moyen logique (Fi, Sj , 21-25, Bi) fournit à chaque cycle d'une horloge une commande de décalage éventuel d'un multiplexeur en défaut et une commande des contenus (Fi, Sj) des bascules selon les équations suivantes :
Fli = FIi-l + Fi' si O≤i≤N-1, avec FI_!=0 (5) Fi (t+1) ≈ FIi_!.Fi(t), Si O≤i≤N-1 (6)
EN± = Ii-l- i (7)
Lg = 1, Li = Li^.Si, 1 ≤ i ≤ k (8)
Si (t+1) = Si(t) + Li_χ, 1 ≤ i ≤ k (9) où : Fli est υne variable,
Fi(t) désigne l'état d'une bascule associée à un module de base à 1 ' instant t, ENi désigne un signal de validation appliqué à un circuit de commande de multiplexeur,
Li désigne un signal tel que la somme des Li, plus 1, est appliquée à un circuit de commande de multiplexeur à l'instant t, Si(t) désigne l'état d'une bascule associée à un module de remplacement à l'instant t.
6. Dispositif de reconfiguration selon la revendication 1, dans lequel la réparation est effectuée de façon distante et est réalisée selon l'équation combinatoire :
M^+ g = Fi+1, Mi+1j+1 = Sj+1Pi+1 (Mli +Mlij _XS +MI j _2Sj _ lSj+ ... +MIi 0SιS2... Sj ) pour 0<j<k-l, 0<i<k-2, (13) où : Fi désigne l'état d'une bascule associée à un module de base,
S désigne l'état d'une bascule associée à un module de remplacement .
MI1j est une variable telle que MIi+1j = Mlij. ?i+1 + Mi+1j.Fi+1
0<i<N-2 et 0<j<k (12)
PCT/FR2002/000523 2001-02-12 2002-02-12 Dispositif de reconfiguration d'un ensemble memoire presentant des defauts WO2002065291A2 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/468,265 US6946985B2 (en) 2001-02-12 2002-02-12 Device for reconfiguring a faulty storage assembly

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR01/01884 2001-02-12
FR0101884A FR2820844B1 (fr) 2001-02-12 2001-02-12 Dispositif de reconfiguration d'un ensemble memoire presentant des defauts

Publications (2)

Publication Number Publication Date
WO2002065291A2 true WO2002065291A2 (fr) 2002-08-22
WO2002065291A3 WO2002065291A3 (fr) 2004-08-19

Family

ID=8859908

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2002/000523 WO2002065291A2 (fr) 2001-02-12 2002-02-12 Dispositif de reconfiguration d'un ensemble memoire presentant des defauts

Country Status (3)

Country Link
US (1) US6946985B2 (fr)
FR (1) FR2820844B1 (fr)
WO (1) WO2002065291A2 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203873B1 (en) 2004-06-04 2007-04-10 Magma Design Automation, Inc. Asynchronous control of memory self test

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060182187A1 (en) * 2005-02-11 2006-08-17 Likovich Robert B Jr Automatic reconfiguration of an I/O bus to correct for an error bit
JP4821198B2 (ja) * 2005-07-12 2011-11-24 ソニー株式会社 半導体集積回路とその製造方法
JP4552803B2 (ja) * 2005-08-10 2010-09-29 ソニー株式会社 半導体集積回路
US20090177919A1 (en) * 2008-01-04 2009-07-09 International Business Machines Corporation Dynamic redundancy for microprocessor components and circuits placed in nonoperational modes
US7783940B2 (en) * 2008-06-06 2010-08-24 Syntest Technologies, Inc. Apparatus for redundancy reconfiguration of faculty memories
MA55238B1 (fr) * 2021-12-23 2023-10-31 Nabil Guennoun Dispositif de protection, de réparation ou de changement de comportement d’un circuit électrique ou électronique utilisant une fonction de remplacement d’un composant à l'aide d'une commutation redondante.

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151263A (en) * 1997-12-04 2000-11-21 Samsung Electronics Co., Ltd. Integrated circuit memory devices having data input and output lines extending along the column direction

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5833577B2 (ja) * 1977-03-17 1983-07-20 富士通株式会社 集積回路
US4355391A (en) * 1980-03-31 1982-10-19 Texas Instruments Incorporated Apparatus and method of error detection and/or correction in a data set

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151263A (en) * 1997-12-04 2000-11-21 Samsung Electronics Co., Ltd. Integrated circuit memory devices having data input and output lines extending along the column direction

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203873B1 (en) 2004-06-04 2007-04-10 Magma Design Automation, Inc. Asynchronous control of memory self test

Also Published As

Publication number Publication date
FR2820844B1 (fr) 2003-05-30
FR2820844A1 (fr) 2002-08-16
US20040075461A1 (en) 2004-04-22
US6946985B2 (en) 2005-09-20
WO2002065291A3 (fr) 2004-08-19

Similar Documents

Publication Publication Date Title
CH634937A5 (fr) Installation de traitement d&#39;information, procede de mise en action de cette installation.
TW200823909A (en) Semiconductor memory device and redundancy method of the same
EP0666572A1 (fr) Bascule bistable non volatile programmable, à état initial prédéfini, notamment pour circuit de redondance de mémoire
FR2666425A1 (fr) Procede et dispositif de mise a jour d&#39;informations dans une memoire et leur utilisation dans les cartes a memoire.
EP1292889B1 (fr) Memoire eeprom securisee comprenant un circuit de correction d&#39;erreur
JPH0963300A (ja) 半導体メモリ試験装置のフェイル解析装置
FR2900294A1 (fr) Chargement de la memoire d&#39;entree d&#39;un decodeur ldpc avec des donnees a decoder
EP0920157A1 (fr) Dispositif de gestion de mémoire tampon partagée
WO2002065291A2 (fr) Dispositif de reconfiguration d&#39;un ensemble memoire presentant des defauts
FR2824415A1 (fr) Systeme et procede pour eliminer d&#39;une matrice de memoire des cellules de memoire defaillantes
WO2003038620A2 (fr) Procede de memorisation de donnees avec correction d&#39;erreur
JP2004192792A (ja) 複数の冗長性を有するメモリの修復手段
EP0020255B1 (fr) Niveau de commutation d&#39;un opérateur pour réseau de commutation de données numériques par paquets
WO2015197979A1 (fr) Procédé de fabrication automatisée d&#39;un circuit électronique adapté pour détecter ou masquer des fautes par redondance temporelle, programme d&#39;ordinateur et circuit électronique associés
WO2006042736A1 (fr) Systeme de processeur parallele reconfigurable, modulaire et hierarchique
WO2003015282A2 (fr) Ensemble de circuits electroniques comportant des moyens de decontamination de parties contaminees par des erreurs
CN101789268A (zh) 存储器装置及其操作方法
FR2546319A1 (fr) Agencement de circuit capable d&#39;empecher l&#39;acces a une partie d&#39;une memoire de commande lors de l&#39;apparition d&#39;une erreur dans cette partie
FR2736737A1 (fr) Dispositif de gestion de relations entre des objets
EP0895159B1 (fr) Procédé de purge des tampons de liaisons séries à haut débit et dispositif de mise en oeuvre du procédé
JP5426926B2 (ja) 光ディスク再生装置および光ディスク再生方法
EP0635786A1 (fr) Dispositif de stockage de données
FR2997208A1 (fr) Procede de gestion d&#39;une memoire flash
FR2617302A1 (fr) Circuit pour memoriser des etats de disponibilite de ressources logiques, telles que cellules de memoire, et etablir des adresses de ressources libres
EP0344052A1 (fr) Mémoire modulaire

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 10468265

Country of ref document: US

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP