Abstract:
A system for modifying the output of individual bits of a fixed memory such as a ROM. Means are provided for recognizing the address of bit-locations requiring modification. The recognized addresses are organized into (a) those requiring the addition of a logic 1 bit or (b) those requiring deletion of a logic 1 bit. An output-data control package combines this information logically with the data bit existing in memory to provide a corrected data output bit on the required line of the ROM output bus. The system is also adaptable to &#34;Word-oriented&#34; ROM&#39;s such that an improper word in memory may be modified to provide a corrected output word from the ROM.

Description:
FIELD OF THE INVENTION 
     This invention relates to memory systems for data processing equipment and particularly to methods for storing and recalling data in a reliable fashion even though certain bits or portions of the memory storage device are improper and/or desired to be other than what they are. The invention also relates to systems and methods for altering the output of data stored in a read only storage device (of the permanent or unalterable type or even programmable ROMs or PROMs,) wherein, once the data is stored, it is not economically feasible to change or alter the data stored therein. 
     BACKGROUND OF THE INVENTION 
     Much of the memory storage devices produced for use in modern computer systems, mini-computers and micro-computers in the present, make use of read only memories or ROMs. Their fabrication is such that, once produced by large scale manufacturing processes, there is no economically feasible way to alter the contents of any word or any individual bit therein in a practical manner without destroying the memory because ROMs today are made in the form of integrated circuits. They generally include a large number of ROM memories in an array, and there is a significant probability that one or more of the data storage locations may need alteration. 
     Thus, after final tests are made on such a memory, it is possible to determine which memories are completely perfect in all respects and which memories contain data-bit locations which are improper and which would output undesired or inaccurate data. The problem arises as to whether to scrap such memory arrays which are incorrect, often at a very large cost, or to do something to rehabilitate those portions of the memory which have inaccurate or defective portions. 
     These ROMs, or memory arrays of ROMs, are generally manufactured in large scale batch techniques which involve very considerable expense. Generally only a moderate percentage of such manufactured memory devices turn out to be perfect, and thus the question of rehabilitation of the imperfect devices, or the data therein, becomes of some importance. Thus a number of efforts have been made in the prior art to make such defective memories into usable units which will not have to be scrapped or thrown away. This concept can also apply to &#34;Programmable ROMs&#34; when the reprogramming costs for each ROM are excessive for minor changes. 
     SUMMARY OF THE INVENTION 
     The present invention involves a system which is organized to apply to known &#34;defective&#34; bit locations in an unalterable memory in order to provide that, when such defective bit locations are addressed, the memory output line from that bit will be so controlled as to provide the correct and the desired output data on that specific line of the memory output. Broadly here, the concept of &#34;defective&#34; bit locations means that there is data involved which is desired to be modified. 
     In the present system a &#34;Patch Package&#34; is used in conjunction with a memory having defective bit locations such that the Patch Package will sense any address which requests data from a memory location having a defective bit. 
     The Patch Package may comprise a Decoder, which is connected to the ROM Address Register, the Decoder working in conjunction with a plurality of AND gates wherein each AND gate is responsive to a specific address which calls for data from a defective bit location. The outputs of the AND gates are wired to a pair of OR gates in order to distinguish whether the corrective action should be that of &#34;adding&#34; a bit of information to the defective location in the memory, or whether that of &#34;deleting&#34; a bit from a defective location in memory. 
     There is further provided an &#34;Output-data Control Package,&#34; which is placed between the output lines of the addressed bit location and the memory chip output lines. The &#34;Add-bit&#34; line and the &#34;Delete-bit&#34; line of the Patch Package work in conjunction with the Output-data Control to insure that any defective or inaccurate bit locations which are addressed, are properly compensated for and corrected by means of the Output-data Control which provides the bus output from the ROM array. 
     Thus, sometimes after a computer system is built, it is desirable to correct and or improve its hardware performance without incurring excessive costs to the machines in the field and the machines presently being manufactured. The costs may involve extensive documentation, physical rework of the hardware, and also the amount of hardware which may have to be scrapped. The scrapped material may also include the manufacturing inventory of existing parts which could represent a substantial overall cost factor. 
     Now if the storage memory system involves the use of high speed ROMs (read only memories) in the form of integrated circuit chips, these constitute very expensive items, and the need to alter these items could result in problems since these ROM chips are not normally alterable without being destroyed. 
     One way of improving the performance of a defective ROM chip is to add in a faster ROM or even a faster equivalent, such as a RAM (random access memory). 
     In one embodiment of the present invention, the method is to add a &#34;Patch Package&#34;  to the existing machine hardware in order to effectuate an alteration in selected lines of the ROM outputs. Usually it is desirable to alter only a few bits within the various words and usually the words are randomly ordered. 
     The present method described herein allows the alteration of a few bits here and there as required and in a rather economically simple and easy fashion. 
     When the ROM bits are grouped into Fields, it is desirable to have various bits of the group capable of being affected by Disable and/or Expand Signals. The effect of this is to Delete or to Add bits as required. If the selected address bit is True at the desired read-out time and it is required to have it be False, then a Delete Bit is required. Likewise to change a False to a True, an Add bit is required. This is accomplished by an Output-data Control which is provided for each ROM having specific address locations whose contents must be modified. 
     The added Output-data Control for each memory bit to be modified requires an additional gate or two but this is very small in cost and trouble considering the scrappage cost of losing an entire memory array. This is also much cheaper and easier than using a flexible and expensive Read/Write Control Storage (RAM) mechanism. Also with the use of a RAM there is an excessive amount of overhead logic control required. 
     In the present system, an address input to a ROM Address Register is fed by buses to the ROM array which is a conglomeration of individual ROM memories arrayed on a chip. 
     In addition, the ROM Address Register signal is fed to an Address Decoder and a group of AND gates which select out and identify those addresses which refer to each defective bit in the ROM memory array. A recognition signal of a defective bit location is conveyed from the AND gate group to a pair of OR gates, one gate of which controls those defective bit locations which will require the &#34;addition&#34; of a bit, and the other OR gate which controls those defective bit locations which will require the &#34;deletion&#34; of a data bit. 
     Each Read Only Memory in the array of ROMs is provided with an Output-data Control package so that each bit location of the ROM which has been addressed will convey its output through the Output-data Control package. This control package, in combination with the &#34;Add Bit&#34;  and &#34;Delete Bit&#34; signals from the Patch Package, will operate to alter any defective bits on a given output line in order that the correctly desired bit will appear on the ROM array output lines. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of the overall system showing how the Patch Package senses the address of a bit location having undesired contents and provides, to the array of ROM chips, the necessary &#34;add or delete&#34;  bits to correct and adjust the final pattern of output bits from the array of ROMs. 
     FIG. 2 is a schematic drawing of one embodiment of the system showing in detail the elements of the Patch Package and how it provides outputs to the Output-data Control of each ROM chip. 
     FIG. 3 is an overall system diagram showing another embodiment, with more detail, of aspects of the array of ROM chips, the Output-data Control circuitry and their relation to the Patch Package. 
     FIG. 4 is a schematic showing in more detail how the Address Decoder is wired to a Detector for address recognition of a specified memory storage location whose output is required to be modified. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1 there is seen an overall block diagram of the system for modifying a ROM array output without replacing all or part of the ROM. An address input bus 9 feeds address data to a ROM Address Register 10. The output of the ROM Address Register 10 proceeds along a bus 11 to an array of ROM chips 20, so that specific data bit locations, as addressed by the address input, may be selected in a given ROM chip. Another part of the ROM Address Register output is bus 12 which conveys address data to the Patch Package 30, which has two output lines 36 na  and 36 nd  which respectively provide signals for &#34;Add Bit&#34;, that is to say to turn a false (logic &#34;0&#34; ) signal into a true (logic &#34;1&#34; ) signal, and a &#34;Delete Bit&#34;  which will turn a true signal into a false signal. 
     FIG. 2 shows in greater detail the circuitry of the Patch Package 30 and group of Output-data Control packages 41, 42, 43, 44, which are associated with individual ROMs on the array 20. 
     The Patch Package 30 includes the ROM Address Decoder 31 which has a series of output line groups responsive to any selected address desired to be modified. These groups of selected address lines from the Decoder 31 provide input lines to a group 32 of AND gates, designated as 32 a , 32 b , 32 c , 32 d , and 32 x . 
     Thus a given ROM address &#34;A&#34; would be recognized by AND gate 32 a  when the three input lines were activated by Decoder 31. Likewise, other specific addresses would be recognized by specific AND gates such as ROM address &#34;X,&#34; which would be recognized by AND gate 32 x . 
     The output lines of each individual AND gate are designated 33 a , 33 b , 33 c , 33 d , 33 x . These outputs of the AND gates are selectively wired to the inputs of various OR gates of the OR gate group 34, which constitutes a series of OR gates 34 oa , 34 od  ; 34 1a , 34 1d  ; 34 2a , 34 2d  ; 34 na , 34 nd . 
     These OR gates are organized so as to constitute one pair of OR gates for each ROM chip in the ROM array 20. For example, OR output lines 36 oa  and 36 od  convey signals to Output-data Control 41 of ROM (&#34;0&#34; ) designated as element 21 and having an output bus 44. 
     Likewise OR output lines 36 1a  and 36 1d  convey signals to Output-data Control 42 of ROM (&#34;1&#34; ) designated as element 22. Likewise OR output lines 36 2a  and 36 2d  connect to Output-data Control 43 of ROM (&#34;2&#34; ) designated as element 23; and OR output lines 36 na  and 36 nd  connect to Output-data Control 44 of ROM (&#34;n&#34;) designated as element 24. 
     Each of the ROM chips in the array are seen to have output bus lines which convey signal information outside of the ROM array 20. 
     Referring again in FIG. 2 to the AND group 32, it will be seen that the outputs of each of the AND gates are connected as input to one or more of the OR gates of the OR gate group 34 in order to provide signal information that a selected address location will require the addition of a data bit or the deletion of a data bit. 
     Further detail of the ROM chips 21, 22, 23, 24, etc., and the Output-data Control for each ROM chip such as control 41, 42, 43, 44, etc., will be discussed in greater detail in connection with FIG. 3. 
     Referring to FIG. 3, the overall system is seen in greater detail showing the array of ROMs 20 having a plurality of individual ROM chips 21, 22, etc., and wherein each ROM chip has an Output-data Control package 41, 42, etc. to work in conjunction therewith. 
     Referring to FIG. 3 the ROM Address Register 10 has an output bus 11 which is fed to ROM 21 through bus lines 11 a , and to ROM 22 through bus lines 11 b . 
     ROM 21, for example, is shown in diagrammatic form as a series of bit locations, wherein for example, bit locations 21 A  and 21 B  are locations which are either improper or defective in data-carrying capacity and which require modification of the data contained therein. 
     Lines 21 oa , 21 ob , 21 oc , and 21 od  are output lines which read out the contents of any given bit location as it is addressed by the ROM Address Register 10. 
     Each output readout line from ROM 21 is fed through the Output-data Control package 41, such as, for example, output line 21 oa  which forms one input to AND gate 42 a  ; while the other input to AND gate 42 a  is from the Delete Bit line 36 od  (through the inverter 41 a ). The output of AND gate 42 a  is fed to OR gate 43 a  ; the other input to OR gate 43 a  comes from the Add Bit line 36 oa  which results in an output line from OR gate 43 a  which is conveyed from within the chip to the outside and designated as line 44 a . 
     Since the contents of the data in address bit 21 B  also requires modification, it is seen that the line 21 ob  is conveyed to the Output-data Control package 41 where it is subjected to a similar gate and inversion in order to form the final output line 44 b . Line 21 ob  is fed as input to AND gate 42 b  whose other input is from Delete Bit line 36 od  (through inverter 41 b ). The output of AND gate 42 b  is wired to the input of OR gate 43 b  which also has an input from Add Bit line 36 oa , then OR gate 43 b  provides an output line 44 b  which conveys the signal outside the ROM chip. 
     Now if, for example, the other two columnar bit positions of ROM 21 were completely proper, then there would be no need for lines 21 oc  and lines 21 od  to be modified in the Output-data Control package 41. Thus the final ROM array output lines 44 c  and 44 d  would directly reflect the signals on ROM chip output lines 21 oc  and 21 od  without the need for alteration by the Output-data Control package 41 and its internal gates. 
     Again in FIG. 3 it is seen that a ROM 22 is provided with output lines feeding to an Output-data Control package 42 which has input signal lines from the Delete Bit line 36 1d  and from the Add Bit line 36 1a . These latter 2 lines will be also seen in FIG. 2 as the OR-pair which connect to ROM 22 via Output-data Control 42. The Output-data Control Package or Circuit 41 is made up of a series of &#34;line control units&#34;, each of which unit is devoted to the handling of a particular output line from the read only memory; for example ROM 21 has four output lines, 21 oa , 21 ob , 21 oc , and 21 od , and each of these lines passes through a separate line control unit made up of an AND gate, an OR gate and an inverter, such as inverter 41 a , AND gate 42 a , and OR gate 43 a  to output line 44 a . 
     Referring to one embodiment shown in FIG. 3 it will be seen that an array 20 of ROM memory chips 21, 22, etc., is provided. In ROM chip 21 there may be seen address bit locations 21 A  and 21 B  which represent memory locations which are defective or which have a content which is desired to be modified when such bit locations are read out of the ROM 21. 
     When the input bus 9 is presented with a memory address for ROM 21, for example, to access the contents of memory location 21 A , the ROM Address Register receives the specific address for ROM location 21 A  and conveys this information via bus 12 to Decoder 31. The ROM Address Register information is also conveyed on bus 11 and 11 a  to ROM 21 in order to select out the contents of location 21 A . 
     Assuming, for example, that the ROM Address Register carries 10 bits, and assuming that these 10 bits are broken down into two groups of 4-bits each and one group of 2-bits: this may be better understood by reference to FIG. 4 wherein the Decoder 31 is split into three portions 31 x , 31 y , 31 z . In group I, the address bits 0 through 3 are decoded in order to select one of 16 outputs which are conveyed to AND gate 32 a . Likewise, for group II, the address bits 4 through 7 can select one of 16 output lines to be conveyed to AND gate 32 a . In group III, the two input bits 8 and 9 can select one of four output lines of the decoder portion 31 z . 
     The input lines to AND gate 32 a  are selected to reflect the address location 21 A  of ROM 21. Thus, when the input bus 9 and the ROM Address Register 10 receive the address bit location 21 A , each input line to the AND gate 32 a  will be &#34;true&#34; and provide &#34;true&#34; output on line 33 a . 
     Referring to FIG. 3 and the AND gate group 32, it will be seen that other AND gates such as 32 b  and 32 c  etc. are provided for each address bit location in memory which it is desired to modify. 
     If, for example, in FIG. 3, the data in bit location 21 A  is a &#34;logical 0&#34;  which is desired to be read out as a &#34;logical 1&#34; , then, when the bit location 21 A  is read out from ROM 21, there will be provided a logic 0 signal on line 21 oa . The logic 0 signal on line 21 oa  is fed to the input of AND gate 42 a . Now since the output signal along the Delete Bit line 36 od  is a logical 1 which is inverted by inverter 41 a  to a logical 0, then AND gate 42 a  conveys a logical 0 output to the OR 43 a . However, OR gate 43 a  receives a logical 1 input or &#34;Add Bit&#34;  from OR gate 34 oa , and thus the output line 44 a  reflects a logical 1 on its output, as was desired (even though location 21 A  contained a logical 0). 
     Referring again to FIG. 3 and the address bit location 21 B  thereof, let us assume that inadvertently or defectively there resides a logical 1 bit in location 21 B . It is desired that this logical 1 bit be &#34;Deleted&#34;, to provide a logical 0 output. 
     When the ROM Address Register 10 receives the digital address corresponding to location 21 B , it is decoded by Decoder 31 and causes AND gate 32 b  to provide a logic 1 signal on output line 33 b  which is conveyed to the input of OR gate 34 od . No signal is provided to OR gate 34 oa  and thus there is no output signal on the Add Bit line 36 oa . 
     The &#34;Delete Bit&#34;  signal of a logic 1 on line 36 od  is conveyed to inverter 41 b  to provide a logic 0 signal at the input of AND gate 42 b . The other input line to AND gate 42 b  is the logic 1 signal on input line 21 ob . Thus, AND gate 42 b  has one input at logic 0 and one input at logic 1 (which could be called a &#34;disable&#34; signal to the output line 21 ob  of the ROM 21) so that the output AND gate 42 b  is a logic 0 which is inputted to OR gate 43 b . 
     Now it will be seen that OR gate 43 b  has a logic 0 signal from AND gate 42 b  and also has a logic 0 signal input from the &#34;Add Bit&#34;  line 36 oa  ; thus, the output of the ROM chip at line 44 b  is now a logic 0 instead of the logic 1 signal which was residing at bit location 21 B  of ROM 21. 
     Thus, it will be seen that the Patch Package 30 provides means for detecting the address of a bit location which is required to be modified, and the Patch Package is further combined with the Output-data Control 41 to determine whether that particular address bit location is to be modified from a true to a false output (Delete Bit) or whether that location is to be modified from a false to a true output (Add Bit). 
     In a sense it could be looked at from the viewpoint that a particular ROM memory will have one or more of its output lines either disabled or added to (expanded). 
     Referring to FIG. 2 there is seen another versatile embodiment wherein a series of AND output lines 33 a , 33 b  . . . 33 x  provide inputs to the OR gate Group 34. 
     The OR gate Group 34 is organized in pairs to provide an ADD bit and a DELETE bit to each ROM in the array 20 as follows: 
     
         ______________________________________Gate     Line     Function  ROM    Element No.______________________________________OR 34.sub.oa    35.sub.oa             ADD       ROM(O) 21OR 34.sub.od    35.sub.od             DELETE    ROM(O) 21OR 34.sub.1a    35.sub.1a             ADD       ROM(1) 22OR 34.sub.1d    35.sub.1d             DELETE    ROM(1) 22OR 34.sub.2a    35.sub.2a             ADD       ROM(2) 23OR 34.sub.2d    35.sub.2d             DELETE    ROM(2) 23OR 34.sub.na    35.sub.na             ADD       ROM(3) 24OR 34.sub.nd    35.sub.nd             DELETE    ROM(3) 24______________________________________ 
    
     Referring to Patch Package 30 as seen in FIG. 2 the output 33 a  (of AND gate 32 a ) is wired as input to: 
     (i) OR gate 34 oa  -- so as to convey an ADD bit on line 36 oa  to ROM 21 via Output-data Control 41 (when a specified bit location in ROM(0) is addressed). 
     (ii) OR gate 34 la  -- so as to convey an ADD bit on line 36 1a  to ROM 22 (when a specified bit location in ROM(2) is addressed). 
     (iii) OR gate 34 2d  -- so as to convey a DELETE bit on line 36 2d  to ROM 23 via Output-data Control 43 (when a specified bit location in ROM(2) is addressed). 
     (iv) OR gate 34 nd  -- so as to convey a DELETE bit on line 36 nd  to ROM 24 via Output-data Control 44 (when a specified bit location in ROM(n) is addressed). 
     Likewise AND gate 32 b  will cause (upon receipt of a specified address): 
     an ADD bit to ROM 21 (ROM 0) 
     a DELETE bit to ROM 22 (ROM 1) 
     an ADD bit to ROM 23 (ROM 2) 
     Likewise AND gate 33 c  will cause: 
     a DELETE bit to ROM 23 (ROM 2) 
     an ADD bit to ROM 24 (ROM n) 
     Likewise AND gate 32 d  will cause: 
     an ADD bit to ROM 23 (ROM 2) 
     an ADD bit to ROM 24 (ROM n) 
     Likewise AND gate 32 x  will cause: 
     a DELETE bit to ROM 24 (ROM n) 
     Thus, taking an array of ROMs of which various ROM chips have bit locations which are desired to be modified, it is then possible by means of the Patch Package and the Output-data Control package to insure that the ROM chip output is modified to the desired pattern of logic signal output. 
     Having thus described a relatively efficacious and inexpensive system for rehabilitating the inadequacies in an array of ROM memory chips, and which is also applicable to any desired modification of memory outputs, the following claims are made herein.