Abstract:
A system and method for testing memory systems in accordance with the present invention increases efficiency and reduces initial diagnostic and power up time for microprocessor-based units. The method includes copying a test process sequence into a memory system; updating an address indicative of the segment of the memory system being tested; comparing the address to an end of memory system address; copying the test process sequence to a next block of the memory system, and iterating through the method until the addresses are equal and the end of the memory system is reached.

Description:
RELATED APPLICATIONS 
     This application claims priority to U.S. Provisional Application No. 60/249,155 filed Nov. 16, 2000, the entire teaching of which is incorporated herein by reference. 
    
    
     FIELD OF THE INVENTION 
     This present invention relates to memory systems, and more particularly to a system and method for testing memory systems. 
     BACKGROUND OF THE INVENTION 
     Recent developments in semiconductor memory technology have substantially increased the use of memories, in particular Random Access Memory (RAM). RAM is the place in a computer where the operating system, application programs, and data in current use are kept so that they can be quickly reached by the computer&#39;s process. RAM is much faster to read from and write to than the other kinds of storage devices in a computer, such as, for example the hard disk, floppy disk, and CD-ROM. However, the data in RAM stays there only as long as a computer is running. When the computer is turned off, RAM loses its data. When the computer is turned on again, the operating system and other files are once again loaded into RAM, usually from the hard disk. 
     RAM can be compared to a person&#39;s short-term memory and the hard disk to the long-term memory. The short-term memory focuses on work at hand, but can only keep so many facts in view at one time. If short-term memory fills up, the brain sometimes is able to refresh it from facts stored in long-term memory. A computer also works similarly. If RAM fills up, the processor needs to continually go to the hard disk to overlay old data in RAM with new, slowing down the computer&#39;s operation. Unlike the hard disk which can become completely full of data so that it won&#39;t accept any more, RAM may be paged to and from an alternate storage area. It keeps operating, but much more slowly than is desirable. 
     RAM is small, both in physical size, as it is stored in a microchip and in the amount of data it can hold. It is much smaller than the hard disk. A typical computer may come with thirty-two (32) million bytes of RAM and a hard disk that can hold four (4) billion bytes. RAM comes in the form of a “discrete” microchip and also in the form of modules that may connect to the computer&#39;s motherboard. These modules connect through a bus or set of electrical paths to the processor. The hard drive, on the other hand, stores data on a magnetized surface that looks like a phonograph record. 
     Today&#39;s personal computers come with sixteen (16) or more megabytes of RAM, usually increasing in multiples of eight (8) megabytes. Users of graphic applications usually need thirty-two (32) or sixty-four (64) megabytes of memory. Most personal computers are designed to allow the user to add additional RAM modules up to a certain limit (for example, up to 64 or 128 megabytes). Having more RAM in the computer reduces the number of times that the computer processor has to read data in from the hard disk, an operation that takes much longer than reading data from RAM. RAM access time takes nanoseconds while hard disk access time takes milliseconds. 
     RAM is called “random access” because any storage location can be accessed directly. Originally, the term distinguished regular core memory from offline memory, usually on magnetic tape in which an item of data could only be accessed by starting from the beginning of the tape and finding an address sequentially. RAM is organized and controlled in a way that enables data to be stored and retrieved directly to specific locations. Another term for RAM is direct access storage or memory. Note that other forms of storage such as the hard disk and CD-ROM are also accessed directly (or “randomly”) but the term random access is not applied to these forms of storage. 
     Nonvolatile random access memory (NVRAM) is a form of static random access memory whose contents are saved when a computer is turned off or if a computer loses its external power source. NVRAM can be implemented by providing static RAM with backup battery power or by saving its contents and restoring them from an electrically erasable programmable Read-Only Memory (ROM). Some modems use NVRAM as a place to keep preset or user-specified phone numbers and modem profiles. 
     Testing memory systems remains a major concern even though there are many techniques and procedures available. However, there are no efficient means of testing Random Access Memory (RAM) in a single pass. Most systems today run a variety or combination of tests to ensure that execution is possible from a given memory space. These multiple pass or multiple tests consume precious boot-up time. 
     Therefore, there is still a need to be able to test memory systems, such as RAM, in a single pass and verify that it is suitable for program execution. 
     SUMMARY OF THE INVENTION 
     The present invention includes a method of and system for high-speed functional and/or execution testing of memory systems such as, but not limited to, Random Access Memories (RAM) in microprocessor-based units or boards. The system and method of the present invention reduces the number of tests run on memory systems thereby increasing efficiency and reducing initial diagnostic and power up time. The system and method of the present invention can test, for example, but not limited to, aspects such as burst read, burst write, execution and dataline. The memory test of the present invention includes a system that is effectively coupled to the microprocessor-based unit under bus structure during test execution and operates on the unit under its own clock rate. The test process sequence may be stored in the unit in its own memory, or may be electrically transferred to the test system&#39;s memory via an external device such as, for example, an In-Circuit Emulator (ICE memory overlay). 
     In accordance with a preferred embodiment, the method for testing a memory system includes copying a test process sequence into the memory system, updating a first address indicative of a segment of the memory system being tested and resetting a timer such as a watchdog timer. The method further includes comparing the first address to a second address indicative of the end of the segment of the memory system; and copying the test process sequence to a next segment or block of the memory system and iterating through the previous method steps until the first address indicative of the segment of the memory system being tested is equal to the second address indicative of the end of the memory system. The test process sequence may be thought of as self-propagating as it copies itself through the plurality of segments of the memory system, tests the particular segment for burst read, burst write, execution and dataline aspects as a minimum and moves to the next sequential segment. 
    
    
     The foregoing and other features and advantages of the system and method for testing memory systems will be apparent from the following more particular description of preferred embodiments of the system and method as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. 
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Preferred embodiments of the present invention are described with reference to the following drawings, wherein: 
     FIGS. 1A-1C are diagrams illustrating preferred embodiments of an apparatus to test memory systems in accordance with the present invention; 
     FIG. 2 is a flowchart illustrating a preferred embodiment of the power on self test system and method for testing memory in accordance with the present invention; 
     FIG. 3 is a flowchart illustrating a method for testing a memory system in accordance with a preferred embodiment of the present invention; 
     FIG. 4 is a listing of an exemplary code of a memory test process sequence in accordance with a preferred embodiment of the present invention; and 
     FIG. 5 is a listing of an exemplary code of a memory test process sequence in accordance with another preferred embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     The present invention is directed to a system and method for testing memory systems such as, but not limited to, Random Access Memory (RAM). 
     FIGS. 1A-1C are preferred embodiments of systems to test memory in accordance with the present invention. The memory test of the present invention includes a system that is effectively coupled to the microprocessor-based unit  14 ,  36 ,  46  under bus structure  12 ,  38 ,  44  during test execution and operates on the unit under its own clock rate. The memory test of the present invention includes a test process sequence  20  which may be stored in the unit in its own memory, or may be electrically transferred to the test system&#39;s memory via an external device  24  such as, for example, an In-Circuit Emulator (ICE memory overlay). Memory overlay is a technique that allows a test system to electrically substitute its own instructions for the instructions that its microprocessor attempts to read from the program memory of the unit being tested. Memory testing speed may be increased by taking advantage of block read and block write (burst) features of some microprocessors. 
     As illustrated in FIG. 1A the Executable Burst Ram Test (EBRT)  20  process sequence is copied from its source into RAM  16  at the desired starting address. In another preferred embodiment, the source may be local Read Only Memory (ROM)  18  within the same CPU/memory subsystem. 
     As illustrated in FIG. 1B, with the EBRT  34  process sequence loaded into RAM  32 , the execution address of the Central Processing Unit (CPU)  36  is switched to the address where the process sequence was loaded or resident. 
     As illustrated in FIG. 1C, the EBRT  48  process sequence executing through the CPU  46  propagates itself through RAM  42  until the address at the end of the memory is reached or a failure forces a reboot or watchdog timer hit. 
     An operating environment for the system  10 ,  30 ,  40  includes a processing system with at least one high speed processing unit  14 ,  36 ,  46  and a memory system  16 ,  18 ,  32 ,  42 . In accordance with the practices of persons skilled in the art of computer programming, the present invention is described with reference to acts and symbolic representations of operations or instructions that are performed by the processing system, unless indicated otherwise. Such acts and operations or instructions are sometimes referred to as being “computer-executed”, or “processing unit executed.” 
     It will be appreciated that the acts and symbolically represented operations or instructions include the manipulation of electrical signals by the processing unit. An electrical system with data bits causes a resulting transformation or reduction of the electrical signal representation, and the maintenance of data bits at memory locations in the memory system to thereby reconfigure or otherwise alter the processing unit&#39;s operation, as well as other processing of signals. The memory locations where data bits are maintained are physical locations that have particular electrical, magnetic, optical, or organic properties corresponding to the data bits. 
     The data bits may also be maintained on a computer readable medium including magnetic disks, optical disks, organic disks, and any other volatile or non-volatile mass storage system readable by the processing unit. The computer readable medium includes cooperating or interconnected computer readable media, which exist exclusively on the processing system or is distributed among multiple interconnected processing systems that may be local or remote to the processing system. 
     In a preferred embodiment, the processing unit is capable of burst access to external memories, i.e., read and write. In addition, it has interim storage for the information read, i.e. temporary registers, at least one pointer to an external location, or internal memory. The processor and software calling the memory test described herein has eight temporary registers and two word-length non-volatile storage areas for the test access and/or update. “Burst” access, in a preferred embodiment, implies cache-line and therefore block or segment size. 
     Processors capable of caching memory typically burst a section of memory into cache (or internal storage) and access the required area from cache (or the internal storage). The amount of memory “cached” is called a cache-line, typically word-aligned, and its length is determined by the pipe length of the processor or the tag size of the cache memory. Many processors have a minimum cache-line size of eight words. Thus, a single byte access in a cached memory region causes an effective eight word read. Since most accesses are for more information than a byte or word, and most processor architectures provide for non-taxing cache fill, caching of memory becomes efficient. 
     It should also be noted that central processing unit (CPU) memory systems have inherent boundaries that usually center around powers of two. These boundaries may affect either the data or address bus. Selecting a number of instructions that are not powers of two, may force the execution of the method of testing memory systems in accordance with the present invention across the boundaries. 
     The system and method for testing memory systems in accordance with a preferred embodiment of the present invention exploits caching functionality for the benefit of rapid memory evaluation. It carefully selects a small amount of instructions that fit within a cache-line and designs a test that operates within that amount of instructions to be efficient and reduce initial diagnostic and power up time. 
     FIG. 2 is a flowchart illustrating a Power On Self Test (POST) method  50  in accordance with a preferred embodiment of the present invention. The system powers up or reboots and performs Central Processing Unit (CPU) initialization per step  52 . The NVRAM is checked to determine if a previous burst memory test, in particular, a RAM test had failed per step  54 . An execution test flag may be used to check the NVRAM to determine if any previous test had failed. 
     If a previous burst RAM test was running, more tests need to be run to determine the exact cause of the previous RAM failure. Per step  58 , specific RAM test or tests based upon the previous test are called. The “execution test flag” and “execution address” in NVRAM are cleared. The “execution test flag” is used to determine if a previous burst RAM test failed. This flag is set before a test and indicates that a test is in progress. This flag is cleared upon successful completion of the burst RAM test. The “execution address” is used to indicate the location in RAM where the burst RAM test is running. The execution address is used to determine the approximate location of a burst RAM test failure. The user is alerted to the RAM problem with specific test results per step  60 . These tests may concentrate on the area of RAM near the “execution address” to pinpoint the RAM failure quickly. Once the exact cause of the RAM failure is determined, the user can be alerted to take a specific course of action to fix the problem. Normal operation is aborted per step  62  as problems exist with the memory system. 
     If a previous burst RAM test was not running as determined in step  54 , the burst RAM test process sequence in accordance with the present invention is called in step  56  and is copied into RAM and is executed as discussed with respect to the flowchart described in FIG.  3 . It is determined in step  64  if there has been a normal return from the RAM test as described herein below. If not, then the system reboots due to either a watchdog hit or a bus error per step  66  and the method  50  iterates through the process steps as discussed herein. To simplify the method of testing memory in accordance with a preferred embodiment, a failure is presented in the form of a reboot. The reboot is caused by one of the following possibilities: an illegal central processing unit (CPU) operation (access or instruction) which causes a “trap” or an “interrupt” that leads to a reset or an errant execution path (continuous loop, improper instruction read from any tested address), which causes a “watchdog” timer to reset the CPU. However, if there is a normal return from the RAM test, then the microprocessor-based unit continues with normal operation per step  68 . 
     FIG. 3 is a flowchart illustrating a preferred embodiment of the method  100  of a memory test process sequence in accordance with the present invention. The method  100  is described with respect to a RAM system, however it is applicable to any memory system that provides read and write functionality. The execution of the method  100  is a repetitive process of the following steps beginning with the executable test process sequence getting copied to RAM, setting an executable test flag, clearing an executable address and starting the RAM test per step  112 . In step  114 , the executable address is updated and a timer such as a watchdog timer is reset. Thus, the execution address in NVRAM is updated with the current program counter. In step  116 , it is determined if the next segment or block address is the same as the end block address by comparing the “execution address” to the “end block address” to determine if the testing is complete. A burst RAM test completes successfully if the execution address is equal to or greater than the “end block address”. If the testing is completed successfully, then per step  118  the executable test flag is cleared and the test successful flag is set. Normal operation of the system continues from here. If the testing is not completed successfully, then per step  120 , the executable test process sequence is copied to the next block and the process iterates through from step  114 . 
     FIG. 4 is a listing of an exemplary code of a memory test process sequence in accordance with a preferred embodiment of the present invention. This test process sequence is configured to be executed on a microprocessor-based unit such as, for example, a millions of instructions per second (MIPS) computing device, a large computer server or mainframe. 
     FIG. 5 is another listing of an exemplary code of a memory test process sequence in accordance with a preferred embodiment of the present invention. This test process sequence is configured to be executed on a microprocessor-based unit such as, for example, a personal computer. 
     It should be understood that the programs, processes, methods and systems described herein are not related or limited to any particular type of computer or network system (hardware or software), unless indicated otherwise. Various types of general purpose or specialized computer systems may be used with or perform operations in accordance with the teachings described herein. 
     In view of the wide variety of embodiments to which the principles of the present invention can be applied, it should be understood that the illustrated embodiments are exemplary only, and should not be taken as limiting the scope of the present invention. For example, the steps of the flow diagrams may be taken in sequences other than those described, and more or fewer elements may be used in the block diagrams. While various elements of the preferred embodiments have been described as being implemented in software, in other embodiments hardware or firmware implementations may alternatively be used, and vice-versa. 
     It will be apparent to those of ordinary skill in the art that methods involved in the system and method for testing memory systems may be embodied in a computer program product that includes a computer usable medium. For example, such a computer usable medium can include a readable memory device, such as, a hard drive device, a CD-ROM, a DVD-ROM, or a computer diskette, having computer readable program code segments stored thereon. The computer readable medium can also include a communications or transmission medium, such as, a bus or a communications link, either optical, wired, or wireless having program code segments carried thereon as digital or analog data signals. 
     The claims should not be read as limited to the described order or elements unless stated to that effect. Therefore, all embodiments that come within the scope and spirit of the following claims and equivalents thereto are claimed as the invention.