The present invention relates to memory systems, and more particularly to testing of address lines without requiring the presence of memory devices addressable by all the address lines.
Many data processing systems contains a memory controller, which is an electronic component that assists a processor to interface with random access memory (RAM) devices. Typically, a memory controller controls a number of address lines, which defines the maximum amount of addressable memory. In order to make sure that the memory controller works properly, the full addressing capacity need to be tested. In conventional testing, the memory controller is connected to memory devices that span the maximum addressable memory. This allows the testing of the full addressing capacity.
In advanced systems, the amount of addressable memory is large. In some situations, it may be very difficult to have memory devices that occupy the full span. One example of such a situation can be found in system-on-a-chip (SoC) devices that contain a processor, memory, and input-output peripherals. The amount of physical memory in the SoC is generally much less than the maximum addressable memory of the processor. Even though it may be possible to attach external memory devices to the SoC, it is desirable to conduct all testing within the SoC.
Consequently, there is a need for a new method of testing that does not requires large amount of memory.
One embodiment of the present invention is a system for testing a set of address lines. The set of address lines has a first group (e.g., the least significant group) and a second group. The second group is further divided into a number of subgroups. At least one memory device is used. It has a first set of address inputs and a second set of address inputs. The first set of address inputs (e.g., the least significant bits) is connected to the first group of address lines. The second set of address inputs (e.g., the rest of the address inputs of the memory device) is connected to separate subgroups at different times. A program is stored in the memory device and accessible by using the first set of address input. Thus, all the subgroups can access the program. The program contains instructions that branch from one subgroup to a different subgroup. After all the subgroups are accessed, all the address lines are tested.
In another embodiment of the present invention the set of address lines having at least a first group and a second group. At least one memory device has a set of address inputs that is connected to the first group and the second group at different times. A program pre-loads a first set of predetermined data into a first set of locations of the memory device and writes a second set of predetermined data into a second set of locations that is associated with the first set of locations. The first and second sets of locations are chosen such that each of the set of address inputs is exercised in accessing the first and the second sets of locations. The program further reads the first and second sets of locations to determine if they are correctly accessed by using the first and the second sets of predetermined data.
The above summary of the present invention is not intended to describe each disclosed embodiment of the present invention. The figures and detailed description that follow provide additional example embodiments and aspects of the present invention.
The present invention relates to a new method for testing address lines. In the following description, numerous specific details are set forth in order to provide a more thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known features have not been described in detail in order to avoid obscuring the present invention.
System 100 can be implemented in a field programmable gate array (FPGA). For example, Xilinx, Inc. recently announced a new FPGA, the Virtex-II Pro, that contains a processor core (comprising a PowerPC core), an instruction-side on-chip memory (ISOCM) controller, a data-side on-chip memory (DSOCM) controller, a plurality of block random access memory (BRAM), and a plurality of high speed transceivers. The ISOCM and DSOCM controllers can each interface with 22-bit address buses, which means that the they can address up to a maximum of 16 MBytes of on-chip memory. However, the amount of BRAM in the FPGA is much less than 16 MBytes. Consequently, it is difficult to test the ISOCM and DSOCM controllers using conventional methods.
In one version of the Virtex-TI Pro, the most significant 8 bits, address [0:7], are used to select the address space, and the remaining 22 bits, address [8:29], are used to access the on-chip memory in those address space. It should be note that other types of integrated circuits may have different architecture.
The present invention uses memory devices that span a subset of the addressable capacity, but allows the full capacity to be tested. In the present invention, the instruction-side and data-side are treated differently. In order to illustrate the present invention, the architecture of the Virtex-II Pro is used.
ISOCM controller 156 generates another set of signals for controlling the operation of its associated memory devices (such as memory devices 160 and 162). Examples of the signals are ABus_init, DBus_init, OddWrEn, EyenWrEn, ABus, and InstrDbus. In one embodiment, ISOCM controller 156 has a data width of 64 bits. The bus ABus_init is the address bus that the ISOCM controller uses to initialize the on-chip memory with instructions under user's (test) program control. DBus_init is the data bus that ISOCM controller 156 uses to write instructions to on-chip memory to initialize the on-chip memory with instructions under user's (test) Program Control. The signal OddWrEn is a signal that ISOCM controller 156 uses to write instructions to the odd word (bits [32:63]) of the on-chip memory. The signal EvenWrEn is a signal that ISOCM controller 156 uses to write instructions to the even word (bits [0:31]) of the On-chip memory. The bus ABus is an address bus that ISOCM controller 156 uses to fetch instructions from the on-chip memory. The bus InstrDBus is a data bus that carries the pair of instructions fetched from the BRAMs.
In instruction-side 150, each of memory devices 160 and 162 is a two-port device (designated ports A and B). As an example, each memory device can be a 512×32 bit BRAM. They are connected together to form a double word, as required by the exemplary 64-bit ISOCM controller of
In
The connection between the ABus_init and ABus buses of ISOCOM 156 and the BRAMs depend on the addresses being tested. To test each address line bit of ABus[8:28] of ISOCM controller 156, the address lines to the BRAMs are connected in three distinct groups, ABus[8:13], ABus[14:19], and ABus[20:28], and three separate test programs are applied. To test address line bits of ABus[20:28] in test program 1, the address lines are connected to ADDRA[0:8] of BRAMs 160 and 162. To test address line bits of ABus[14:19] in test program 2, the address lines ABus[14:19] are connected to ADDRA[0:5] of BRAMs 160 and 162 and address lines ABus[26:28] are connected to ADDRA[6:8] of BRAMs 160 and 162. To test address line bits of ABus[8:13] in test program 3, the address lines ABus[8:13] are connected to ADDRA[0:5] of BRAMs 160 and 162 and address lines ABus[26:28] are connected to ADDRA[6:8] of BRAMs 160 and 162.
A table is provided to illustrate the relationship between the connection of ADDRA (shown as ABus* in
Test 1: ABus[20:28];
Test 2: {ABus[14:19], ABus[26:28]}; and
Test 3 {ABus[8:13], ABus[26:28]}.
Similarly, a table is provided to illustrate the relationship between the connection of ADDRB (shown as ABus_init* in
Test 1: ABus_init[20:28];
Test 2: {ABus_init[14:19], ABus_init[26:28]}; and
Test 3 {ABus_init[8:13], ABus_init[26:28]}.
If instruction-side 150 is implemented in a FPGA, the connection between the ADDRA and ADDRB ports of the BRAMs and the ABus and ABus_init buses of the ISOCM controller can be configured separately in each of the three tests. Thus, a new configuration is performed before running each test. As a result, there is no need to use extra circuitry in the connection. If the implementation is conducted on a non-programmable device, switching circuit elements (e.g., multiplexers) can be used to implement the different connections.
To verify that the address lines are operating properly, each address line bit needs to be toggled. In one embodiment, program instructions are pre-load into different address space regions of BRAMs 160 and 162. The address lines of the BRAMs and ISOCM controller 156 are connected in the innovative way described above. The address lines are asserted to fetch those instructions for execution. If an address line bit is defective or stucked in a deasserted state, the test program cannot fetch the required instruction for execution, thereby causing test failure. On the other hand, if an address line bit is stucked at an asserted state, then the test program is fetching instruction from a wrong address or undefined memory location, again causing failure in the test. Thus, this embodiment consists of a combination of address bus connection scheme in hardware and associated test program in software.
In operation, processor core 154 first initializes BRAMs 160 and 162 by sending test instructions to ISOCM controller 156 via a device control register bus C_dcrDBus[0:31]. ISOCM controller 156 then generates the necessary address and control signals (ABus_init[8:28], OddWrEn and EvenWrEn) and writes those test instructions into BRAMs 160 and 162 through DBus_init[0:31]. After initializing the BRAMs, the test program branches to ISOCM address space and starts executions instructions fetched from the BRAMs. The test instructions stored in each address space region in BRAMs 160 and 162 basically directs the test program to branch from one address space region to another address space region, creating the effect of toggling the next higher significant bit of the address line. In conjunction with the address line connections described above in connection with
If instruction-side 150 is implemented on a FPGA, the test instructions can be pre-loaded into the BRAMs during the configuration of the FPGA at power-up. In this case, there is no need to pre-load through ISOCM controller 156 using the device control register bus.
An exemplary code fragment of the test instructions contained in the address space regions in BRAMs is illustrated in
In
“addi” (Add Immediate): The format is “addi RT, RA, IM”. The contents of register RA is added to contents of IM field and the sum, sign-extended to 32-bits, is placed into register RT.
“addis” (Add Immediate Shifted): The format is “addis RT, RA, IM”. When RA is 0, the contents of IM field is shifted to the left most 16 significant bits and the right is concatenated with 16 0-bits. The result is placed into register RT.
“ori” (OR Immediate): The format is “ori RA, RS, IM”. An extended IM field is formed by concatenating 16 0-bits to the left with IM field. Register RS is ORed with the extended IM field, and the result is placed into register RA.
“mtctr” (Move to Count (CTR) Register): The format is “mtctr RS”. The contents of register RS are placed into CTR register.
“bctr” (Branch): The format is “bctr”. Branch unconditionally to address in CTR register.
Turning now to the data side, a block diagram of a data side 180 of a data processing system is shown in
The bus C_dABus is an address bus that the processor core uses to deliver the address to DSOCM controller 186 to get the data located in the data-side on-chip memory address space. The bus C_dWrDBus is a data bus that the processor core uses to deliver data to DSOCM controller 186 to write the data into the data-side on-chip memory address space. The bus D_cRdDBus is the data bus that DSOCM controller 186 uses to transport the read data to the processor core from the BRAMs. The bus ABus is the address bus that DSOCM controller 186 uses to get data from the on-chip memory. The bus wDBus is the data bus that DSOCM controller 186 uses to write data to on-chip memory. The signal WE[0:3] is the write enable signals for byte write. The signal EN is the signal for enabling BRAMs for reading or writing. The bus rDbus is the read data bus that delivers data from BRAMs to DSOCM controller 186.
In an exemplary implementation, the BRAMs are set as single port 2Kx8 bits memory devices. They are connected in parallel so as to be compatible with the interface of DSOCM controller 186 (e.g., 32-bit word in this implementation). Four BRAMs are used because the exemplary DSOCM interface supports byte writes. In the present invention, only these BRAMs (with a total of 8 K Bytes) are needed to test the entire address space of DSOCM controller 186 (e.g., 16 MBytes).
In
In order to test the DSOCM controller, each address line bit needs to be toggled to verify the proper functioning of the address lines. In one embodiment, data is pre-loaded into the BRAMs in the selected address word locations where each address line bit is to be exercised. Preferably, the locations are selected such that the next higher significant bit of address line is toggled. The data value in each location is preferably unique. The pre-loading of data words into the BRAMs is performed by a software program when the integrated circuit is initialized (for example, during configuration when a FPGA is powered-up). The test program writes a known data byte or halfword into those word locations. The data word in those locations now consists of bytes from pre-loaded data word and bytes from data that is written in. Upon read back, the bytes from pre-loaded data word create a “signature” to indicate that the read back data word comes from the correct location. The written bytes indicate that the address bit line being exercised sends the data to the correct address location. As a result, the test program can check the data word and can certify that the address line bits are exercised correctly.
In
A table is provided to illustrate the relationship between the connection of ADDR (shown as ABus* in
Test 1: ABus[19:29]; and
Test 2: ABus[8:18].
If data-side 180 is implemented in a FPGA, the connection between the ADDR port of the BRAMs and the ABus bus of the DSOCM can be configured separately in each of the two tests. As a result, there is no need to use extra circuitry in the connection. If the implementation is conducted on a non-programmable device, switching circuit elements (e.g., multiplexers) can be used to implement the different connections.
In the exemplary examples described in
It can be seen from the above description that a novel routing method has been disclosed. Those having skill in the relevant arts of the invention will now perceive various modifications and additions which may be made as a result of the disclosure herein. Accordingly, all such modifications and additions are deemed to be within the scope of the invention, which is to be limited only by the appended claims and their equivalents.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4758985 | Carter | Jul 1988 | A |
| 4855669 | Mahoney | Aug 1989 | A |
| 5072418 | Boutaud et al. | Dec 1991 | A |
| 5142625 | Nakai | Aug 1992 | A |
| RE34363 | Freeman | Aug 1993 | E |
| 5274570 | Izumi et al. | Dec 1993 | A |
| 5311114 | Sambamurthy et al. | May 1994 | A |
| 5339262 | Rostoker et al. | Aug 1994 | A |
| 5347181 | Ashby et al. | Sep 1994 | A |
| 5361373 | Gilson | Nov 1994 | A |
| 5457410 | Ting | Oct 1995 | A |
| 5473267 | Stansfield | Dec 1995 | A |
| 5500943 | Ho et al. | Mar 1996 | A |
| 5504738 | Sambamurthy et al. | Apr 1996 | A |
| 5537601 | Kimura et al. | Jul 1996 | A |
| 5543640 | Sutherland et al. | Aug 1996 | A |
| 5550782 | Cliff et al. | Aug 1996 | A |
| 5552722 | Kean | Sep 1996 | A |
| 5574930 | Halverson, Jr. et al. | Nov 1996 | A |
| 5574942 | Colwell et al. | Nov 1996 | A |
| 5581745 | Muraoka et al. | Dec 1996 | A |
| 5600845 | Gilson | Feb 1997 | A |
| 5640527 | Pecone et al. | Jun 1997 | A |
| 5652904 | Trimberger | Jul 1997 | A |
| 5671355 | Collins | Sep 1997 | A |
| 5705938 | Kean | Jan 1998 | A |
| 5732250 | Bates et al. | Mar 1998 | A |
| 5737631 | Trimberger | Apr 1998 | A |
| 5740404 | Baji | Apr 1998 | A |
| 5742179 | Sasaki | Apr 1998 | A |
| 5742180 | DeHon et al. | Apr 1998 | A |
| 5748979 | Trimberger | May 1998 | A |
| 5752035 | Trimberger | May 1998 | A |
| 5760607 | Leeds et al. | Jun 1998 | A |
| 5774409 | Yamazaki et al. | Jun 1998 | A |
| 5809517 | Shimura | Sep 1998 | A |
| 5835405 | Tsui et al. | Nov 1998 | A |
| 5874834 | New | Feb 1999 | A |
| 5889788 | Pressly et al. | Mar 1999 | A |
| 5892961 | Trimberger | Apr 1999 | A |
| 5914902 | Lawrence et al. | Jun 1999 | A |
| 5933023 | Young | Aug 1999 | A |
| 5940342 | Yamazaki et al. | Aug 1999 | A |
| 5970254 | Cooke et al. | Oct 1999 | A |
| 5974498 | Hopkins | Oct 1999 | A |
| 6011407 | New | Jan 2000 | A |
| 6020755 | Andrews et al. | Feb 2000 | A |
| 6026481 | New et al. | Feb 2000 | A |
| 6031391 | Couts-Martin et al. | Feb 2000 | A |
| 6096091 | Hartmann | Aug 2000 | A |
| 6154051 | Nguyen et al. | Nov 2000 | A |
| 6163166 | Bielby et al. | Dec 2000 | A |
| 6172990 | Deb et al. | Jan 2001 | B1 |
| 6178541 | Joly et al. | Jan 2001 | B1 |
| 6181163 | Agrawal et al. | Jan 2001 | B1 |
| 6191998 | Reddy et al. | Feb 2001 | B1 |
| 6211697 | Lien et al. | Apr 2001 | B1 |
| 6242945 | New | Jun 2001 | B1 |
| 6272451 | Mason et al. | Aug 2001 | B1 |
| 6279045 | Muthujumaraswathy et al. | Aug 2001 | B1 |
| 6282627 | Wong et al. | Aug 2001 | B1 |
| 6301696 | Lien et al. | Oct 2001 | B1 |
| 6343207 | Hessel et al. | Jan 2002 | B1 |
| 6353331 | Shimanek | Mar 2002 | B1 |
| 6356987 | Aulas | Mar 2002 | B1 |
| 6389558 | Herrmann et al. | May 2002 | B1 |
| 6434735 | Watkins | Aug 2002 | B1 |
| 6460172 | Insenser Farre et al. | Oct 2002 | B1 |
| 6507942 | Calderone et al. | Jan 2003 | B1 |
| 6510548 | Squires | Jan 2003 | B1 |
| 6518787 | Allegrucci et al. | Feb 2003 | B1 |
| 6519753 | Ang | Feb 2003 | B1 |
| 6522167 | Ansari et al. | Feb 2003 | B1 |
| 6532572 | Tetelbaum | Mar 2003 | B1 |
| 6539508 | Patrie et al. | Mar 2003 | B1 |
| 6541991 | Horncheck et al. | Apr 2003 | B1 |
| 6542969 | Sato | Apr 2003 | B1 |
| 6587995 | Duboc et al. | Jul 2003 | B1 |
| 6588006 | Watkins | Jul 2003 | B1 |
| 6601227 | Trimberger | Jul 2003 | B1 |
| 6604228 | Patel et al. | Aug 2003 | B1 |
| 6611951 | Tetelbaum et al. | Aug 2003 | B1 |
| 20010049813 | Chan et al. | Dec 2001 | A1 |
| 20020023197 | Miura et al. | Feb 2002 | A1 |
| 20030062922 | Douglass et al. | Apr 2003 | A1 |
| Number | Date | Country |
|---|---|---|
| 0315272 | Oct 1989 | EP |
| 0 905 906 | Mar 1999 | EP |
| 1 235 351 | Aug 2002 | EP |
| WO 93 25968 | Dec 1993 | WO |