CROSS REFERENCE TO RELATED APPLICATIONSThe present application is a continuation application of U.S. patent application Ser. No. 14/921,155, filed Oct. 23, 2015, which is based on, and claims priority from Japanese Patent Application Serial Numbers 2014-217810 and 2014-217811, the entire contents of which are incorporated by reference.
BACKGROUNDTechnical FieldThe present disclosure relates to memory devices such as a semiconductor memory, and method for testing reliability of memory devices.
Related ArtIn general reliability tests on semiconductor memories, a testing device is used to write and read data to and from all regions in a memory array with a known test pattern, and the data written to the memory array by the testing device (expected value) is compared with the data read from memory array by the testing device, so as to check the reliability of the memory array.
In pre-shipment inspection of semiconductor memories, in order to reduce a testing cost, reliability test is generally performed concurrently on multiple semiconductor memories, by connecting multiple semiconductor memories to one testing device and writing and reading data to and from the multiple semiconductor memories with a common test pattern.
With semiconductor memories provided with a pseudo-random number generator for improving security, random number values of pseudo-random numbers are predictable, and thus multiple semiconductor memories can generate an identical pseudo-random number by using a common algorithm. Pre-shipment inspection can therefore be conducted concurrently on multiple semiconductor memories with one testing device, in the same way as on general semiconductor memories.
Random number generators are cryptographic technology employed for a wide variety of uses in many security systems.
Random numbers generated by random number generators are used for, for example, key information in a cryptographic algorithm, or authentication codes for mutual authentication between devices, and are closely related to the security strength of a system and thus highly confidential information.
Random numbers generated by random number generators therefore need to be highly random. At shipment of semiconductor devices provided with a random number generator, a random number test is normally performed to evaluate whether a random number generator generates random numbers that meet a required level.
JP2005-517998A and WO2005/124537A describe a technique to evaluate whether the frequencies of appearance of “0” and “1” in random numbers generated by a random number generator are within an allowable range.
SUMMARYA memory device according to an aspect of the present disclosure includes a memory array for storing content data, a random number generator configured to generate a true random number, and a memory controller connected to the memory array and the random number generator. The memory controller is configured to perform a reliability test only on the memory array out of the memory array and the random number generator on receipt of a first test command from an external device, and perform a reliability test only on the random number generator out of the memory array and the random number generator on receipt of a second test command from the external device.
A method according to another aspect of the present disclosure is a method for testing reliability of a memory device, the memory device including a memory array for storing content data and a random number generator configured to generate a true random number, the method including performing a reliability test only on the memory array out of the memory array and the random number generator on receipt of a first test command from an external device, and performing a reliability test only on the random number generator out of the memory array and the random number generator on receipt of a second test command from the external device.
These and other objects, features, aspects and advantages of the present disclosure will become more apparent from the following detailed description when taken in conjunction with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a diagram illustrating pre-shipment inspection conducted on a semiconductor memory according to an embodiment of the present disclosure.
FIG. 2 is a diagram illustrating a configuration of the semiconductor memory.
FIG. 3 is a diagram illustrating memory regions of a memory array.
FIG. 4 is a flow chart illustrating the sequence of a reliability test on the semiconductor memory.
FIG. 5 is a flow chart illustrating the sequence of a memory test by a memory controller.
FIG. 6 is a flow chart illustrating the sequence of a random number test by the memory controller.
FIG. 7 is a flow chart illustrating the sequence of a random number test by the memory controller.
FIG. 8 is a flow chart illustrating the sequence of a random number test by the memory controller.
DETAILED DESCRIPTIONIn the following detailed description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosed embodiments. It will be apparent, however, that one or more embodiments may be practiced without these specific details. In other instances, well-known structures and devices are schematically illustrated in order to simplify the drawing.
With semiconductor memories provided with a true random number generator for improving security, random number values of true random numbers are unpredictable, and thus multiple semiconductor memories cannot generate an identical true random number. Since expected values of the semiconductor memories vary with the random number values of true random numbers, pre-shipment inspection cannot be conducted concurrently on multiple semiconductor memories with one testing device, which consequently decreases productivity of pre-shipment inspection.
The present disclosure is directed to obtaining a memory device with increased productivity in pre-shipment inspection by realizing concurrent reliability tests on multiple memory devices, especially memory devices provided with a true random number generator, and a method for testing reliability of the same.
Generally proposed methods for random number evaluation include statistical testing such as “NIST Special Publication 800-22” and “DIEHARD”. Performing complicated random number evaluation according to the statistical testing in random number test performed at shipment of semiconductor devices provided with a random number generator increases processing load of testing devices and also elongates time required for testing, resulting in increase in testing cost for pre-shipment inspection.
The present disclosure is also directed to obtaining a semiconductor device, semiconductor memory, and a method for testing reliability of a semiconductor device that achieve simple and efficient reliability test of a random number generator on a semiconductor device provided with a random number generator.
According to an aspect of the present disclosure, the memory controller performs a reliability test only on the memory array out of the memory array and the random number generator on receipt of a first test command from an external device, while performing a reliability test only on the random number generator out of the memory array and the random number generator on receipt of a second test command from the external device. Separately performing the reliability test of the memory array independent from the random number value of the true random number and the reliability test of the random number generator dependent on the random number value of the true random number enables concurrently performed reliability tests on multiple memory devices with one external device. In consequence, concurrent reliability tests on multiple memory devices are realized for memory devices provided with a true random number generator, which increase productivity of pre-shipment inspection.
In some embodiments of the memory device, the memory controller includes an encryption/decryption circuit configured to perform encryption and decryption on a signal transmitted to and from a host device based on a true random number generated by the random number generator. In a reliability test of the memory array, the memory controller is configured to input a predetermined fixed random number value in place of a true random number generated by the random number generator to the encryption/decryption circuit, and the encryption/decryption circuit is configured to perform encryption and decryption on a signal transmitted to and from the external device based on the fixed random number value.
According to such embodiments, in a reliability test of the memory array the memory controller inputs a predetermined fixed random number value in place of a true random number generated by the random number generator to the encryption/decryption circuit, and the encryption/decryption circuit performs encryption and decryption on a signal transmitted to and from the external device based on the fixed random number value. Such use of a predetermined fixed random number value in place of a true random number makes encryption and decryption by the encryption/decryption circuit in the reliability test of the memory array independent from a true random number generated by the random number generator. In consequence, employing a common fixed random number value for multiple memory devices enables use of a common expected value, which enables concurrently performed reliability test of the memory array on multiple memory devices.
In some embodiments of the memory device, the memory controller further includes a register for storing the fixed random number value, the fixed random number value being contained in the first test command. The memory controller is configured to extract the fixed random number value from the first test command received from the external device and store the fixed random number value in the register.
According to such embodiments, the memory controller extracts the fixed random number value from the first test command received from the external device and stores the fixed random number value in the register. Use of the fixed random number value stored in the register enables the encryption/decryption circuit to perform encryption and decryption independently from a true random number generated by the random number generator. Including the fixed random number value in the first test command facilitates changing the fixed random number value by the external device.
In some embodiments of the memory device, the memory controller further includes a register for storing the fixed random number value, the fixed random number value being stored in a predetermined storage in the memory device, the memory controller being configured to read the fixed random number value from the storage and store the fixed random number value in the register.
According to such embodiments, the fixed random number value is stored in a predetermined storage in the memory device. The memory controller stores the fixed random number value read from the storage in the register. Use of the fixed random number value stored in the register enables the encryption/decryption circuit to perform encryption and decryption independently from a true random number generated by the random number generator.
In some embodiments of the memory device, the memory controller includes a self-test circuit configured to perform a reliability test of the random number generator. The self-test circuit is configured to input a predetermined control signal to the random number generator to cause the random number generator to generate a random number value, store the random number value generated by the random number generator in a predetermined storage in the memory device, and check irreproducibility of the random number value generated by the random number generator based on the random number value read from the storage.
According to such embodiments, the self-test circuit inputs a predetermined control signal to the random number generator to cause the random number generator to generate a random number value, stores the random number value generated by the random number generator in a predetermined storage in the memory device, and checks irreproducibility of the random number value generated by the random number generator based on the random number value read from the storage. The reliability test of a random number generator dependent on the random number value of a true random number is performed as a self test for each memory device by the self-test circuit of each memory device, which enables concurrently performed reliability tests of a random number generator on multiple memory devices. Limiting the reliability test of a random number generator to irreproducibility check of the random number values facilitates the test and reduces testing cost. Applying the embodiment of the present disclosure to a device whose uniformity of random numbers is assured in a separate processing block from the random number generator is particularly effective.
In some embodiments of the memory device, the second test command contains count information for specifying a number of counts to cause the random number generator to generate a random number value. The self-test circuit is configured to extract the count information from the second test command and cause the random number generator to sequentially generate a plurality of random number values based on the count information.
According to such embodiments, the self-test circuit extracts the count information from the second test command and cause the random number generator to sequentially generate a plurality of random number values based on the count information. A plurality of random number values sequentially generated by the random number generator is thus stored in the storage. The self-test circuit reads the plurality of random number values from the storage, so as to check irreproducibility of the random number values. Including the count information in the second test command facilitates changing the count information by an external device.
In some embodiments of the memory device, a predetermined storage in the memory device is configured to store count information for specifying a number of counts to cause the random number generator to generate a random number value. The self-test circuit is configured to read the count information from the storage and cause the random number generator to sequentially generate a plurality of random number values based on the count information.
According to such embodiments, the count information is stored in a predetermined storage in the memory device. The self-test circuit causes the random number generator to sequentially generate a plurality of random number values based on the count information read from the storage. A plurality of random number values sequentially generated by the random number generator is thus stored in the storage. The self-test circuit reads the plurality of random number values from the storage, so as to check irreproducibility of the random number values.
In some embodiments of the memory device, the self-test circuit is configured to start checking of the random number values on receipt of input of the count information, and on completion of checking, send a check result to the external device.
According to such embodiments, the self-test circuit starts checking of the random number values on receipt of input of the count information, and on completion of checking, sends a check result to the external device. This negates the need for test pattern to be produced and comparison with an expected value by the external device regarding a reliability test of the random number generator, and thus processing load of the external device is reduced.
In some embodiments of the memory device, the self-test circuit is configured to check whether identical random number values are consecutively generated by the random number generator, as an irreproducibility check of a random number value.
According to such embodiments, the self-test checks whether identical random number values are consecutively generated by the random number generator, as an irreproducibility check of a random number value. This achieves a simple check of presence or absence of repetition of a random number.
In some embodiments of the memory device, the self-test circuit is configured to check whether identical random number values are included in a plurality of random number values generated by the random number generator, as an irreproducibility check of a random number value.
According to such embodiments, the self-test circuit checks whether identical random number values are included in a plurality of random number values generated by the random number generator, as an irreproducibility check of a random number value. This achieves a simple check of presence or absence of periodicity of a random number.
In some embodiments of the memory device, the self-test circuit is configured to check whether appearance rates of “0” and “1” in a random number value generated by the random number generator are within a predetermined allowable range, as an irreproducibility check of a random number value.
According to such embodiments, the self-test circuit checks whether appearance rates of “0” and “1” in a random number value generated by the random number generator are within a predetermined allowable range, as an irreproducibility check of a random number value. This achieves a simple check of presence or absence of non-uniform distribution of “0” and “1” in each bit of random numbers.
According to an aspect of a method for testing reliability of a memory device, reliability test only on the memory array out of the memory array and the random number generator is performed on receipt of a first test command from an external device, while reliability test only on the random number generator out of the memory array and the random number generator is performed on receipt of a second test command from the external device. Separately performing the reliability test of the memory array independent from the random number value of the true random number and the reliability test of the random number generator dependent on the random number value of the true random number enables concurrently performed reliability tests on multiple memory devices with one external device. In consequence, concurrent reliability tests on multiple memory devices are realized for memory devices provided with a true random number generator, which increase productivity of pre-shipment inspection.
In another aspect, a semiconductor device includes a random number generator configured to generate a random number, and a memory controller connected the random number generator. The memory controller includes a self-test circuit configured to perform a reliability test of the random number generator. The self-test circuit is configured to input a predetermined control signal to the random number generator to cause the random number generator to generate a random number value, and check irreproducibility of the random number value generated by the random number generator.
According to such aspect, the self-test circuit inputs a predetermined control signal to the random number generator to cause the random number generator to generate a random number value, and checks irreproducibility of the random number value generated by the random number generator. The self test performed by the self-test circuit enables a simple and efficient reliability test of a random number generator. Limiting the reliability test of a random number generator to irreproducibility check of the random number values facilitates the test and reduces testing cost. Applying the embodiment of the present disclosure to a device whose uniformity of random numbers is assured in a separate processing block from the random number generator is particularly effective.
Some embodiments of the semiconductor device further include a storage (such as memory array, internal register of the memory controller, or RAM). The self-test circuit is configured to store a random number value generated by the random number generator in the storage, and check irreproducibility of the random number value generated by the random number generator based on the random number value read from the storage.
According to such embodiments, the self-test circuit stores a random number value generated by the random number generator in the storage, and checks irreproducibility of the random number value generated by the random number generator based on the random number value read from the storage. Storing the random number value previously generated by the random number generator in the storage enables the self-test circuit to check irreproducibility regarding, for example, repetition, periodicity, and non-uniform distribution of the random numbers based on the random number value read from the storage.
In some embodiments of the semiconductor device, count information for specifying a number of counts to cause the random number generator to generate a random number value is contained in a test command received from an external device by the semiconductor device. The self-test circuit is configured to extract the count information from the test command and cause the random number generator to sequentially generate a plurality of random number values based on the count information.
According to such embodiments, the self-test circuit extracts the count information from the second test command and causes the random number generator to sequentially generate a plurality of random number values based on the count information. A plurality of random number values sequentially generated by the random number generator is thus stored in the storage. The self-test circuit reads the plurality of random number values from the storage, so as to check irreproducibility of the random number values. Including the count information in the test command facilitates changing the count information by an external device.
In some embodiments of the semiconductor device, the count information for specifying a number of counts to cause the random number generator to generate a random number value is stored in a predetermined storage in the semiconductor device. The self-test circuit is configured to read the count information from the storage and cause the random number generator to sequentially generate a plurality of random number values based on the count information.
According to such embodiments, the count information is stored in a predetermined storage in the semiconductor device. The self-test circuit causes the random number generator to sequentially generate a plurality of random number values based on the count information read from the storage. A plurality of random number values sequentially generated by the random number generator is thus stored in the storage. The self-test circuit reads the plurality of random number values from the storage, so as to check irreproducibility of the random number values.
In some embodiments of the semiconductor device, the self-test circuit is configured to start checking of the random number values on receipt of input of the count information, and on completion of checking, send a check result to the external device.
According to such embodiments, the self-test circuit starts checking of the random number values on receipt of input of the count information, and on completion of checking, sends a check result to the external device. This negates the need for test pattern to be produced and comparison with an expected value by the external device regarding a reliability test of the random number generator, and thus processing load of the external device is reduced.
In some embodiments of the semiconductor device, the self-test circuit is configured to check whether identical random number values are consecutively generated by the random number generator, as an irreproducibility check of a random number value.
According to such embodiments, the self-test checks whether identical random number values are consecutively generated by the random number generator, as an irreproducibility check of a random number value. This achieves a simple check of presence or absence of repetition of a random number.
In some embodiments of the semiconductor device, the self-test circuit is configured to check whether identical random number values are included in a plurality of random number values generated by the random number generator, as an irreproducibility check of a random number value.
According to such embodiments, the self-test circuit checks whether identical random number values are included in a plurality of random number values generated by the random number generator, as an irreproducibility check of a random number value. This achieves a simple check of presence or absence of periodicity of a random number.
In some embodiments of the semiconductor device, the self-test circuit is configured to check whether appearance rates of “0” and “1” in a random number value generated by the random number generator are within a predetermined allowable range, as an irreproducibility check of a random number value.
According to such embodiments, the self-test circuit checks whether appearance rates of “0” and “1” in a random number value generated by the random number generator are within a predetermined allowable range, as an irreproducibility check of a random number value. This achieves a simple check of presence or absence of non-uniform distribution of “0” and “1” in each bit of random numbers.
In another aspect, a semiconductor memory includes a random number generator configured to generate a random number, a memory controller connected to the random number generator, and a storage. The memory controller includes a self-test circuit configured to perform a reliability test of the random number generator. The self-test circuit is configured to input a predetermined control signal to the random number generator to cause the random number generator to generate a random number value, store the random number value generated by the random number generator in the storage, and check irreproducibility of the random number value generated by the random number generator based on the random number value read from the storage.
According to such aspect, the self-test circuit inputs a predetermined control signal to the random number generator to cause the random number generator to generate a random number value, stores the random number value generated by the random number generator in the storage (such as memory array, internal register of the memory controller, or RAM), and checks irreproducibility of the random number value generated by the random number generator based on the random number value read from the storage. The self test performed by the self-test circuit enables a simple and efficient reliability test of a random number generator. Storing the random number value previously generated by the random number generator in the storage enables the self-test circuit to check irreproducibility regarding, for example, repetition, periodicity, and non-uniform distribution of the random numbers based on the random number value read from the storage. Limiting the reliability test of a random number generator to irreproducibility check of the random number values facilitates the test and reduces testing cost. Applying the embodiment of the present disclosure to a device whose uniformity of random numbers is assured in a separate processing block from the random number generator is particularly effective.
A method according to another aspect is a method for testing reliability of a semiconductor device, the semiconductor device including a random number generator configured to generate a random number, and a self-test circuit configured to perform a reliability test of the random number generator, the method including inputting a predetermined control signal to the random number generator by the self-test circuit to cause the random number generator to generate a random number value, and checking irreproducibility of the random number value generated by the random number generator by the self-test circuit.
According to such aspect, the self-test circuit inputs a predetermined control signal to the random number generator to cause the random number generator to generate a random number value, and checks irreproducibility of the random number value generated by the random number generator. The self test performed by the self-test circuit enables a simple and efficient reliability test of a random number generator. Limiting the reliability test of a random number generator to irreproducibility check of the random number values facilitates the test and reduces testing cost. Applying the embodiment of the present disclosure to a device whose uniformity of random numbers is assured in a separate processing block from the random number generator is particularly effective.
According to the present disclosure, concurrent reliability tests on multiple memory devices are realized for memory devices provided with a true random number generator, which increase productivity of pre-shipment inspection.
Some embodiments of the present disclosure enable a simple and efficient reliability test of a random number generator on a memory device provided with a random number generator.
Description of EmbodimentsEmbodiments of the present disclosure are described in detail below referring to the drawings. It should be noted that identical reference numerals throughout the drawings indicate identical or equivalent elements.
FIG. 1 is a diagram illustrating pre-shipment inspection conducted on asemiconductor memory1 according to an embodiment of the present disclosure.Multiple semiconductor memories1 are connected to onetesting device2, so that reliability test is concurrently performed on the multiple semiconductor memories (semiconductor devices)1. Thesemiconductor memory1 is, for example, a memory card configured to be detachably connected to a host device. Alternatively, an arbitrary memory device such as an optical disc or a magnetic disk can replace the memory card. In place of thetesting device2, an arbitrary external device such as a simple testing device or a host device having a test function may be employed to perform a reliability test of thesemiconductor memory1.
FIG. 2 is a diagram illustrating a configuration of thesemiconductor memory1. Thesemiconductor memory1 includes amemory controller11, arandom number generator12 that generates a true random number with an uncertain circuit, and amemory array13 with a NAND type flash memory.
FIG. 2 illustrates connections in thememory controller11 between an encryption/decryption unit21, a self-test unit22, aregister23, andselectors24 to26. The encryption/decryption unit21 and the self-test unit22 may comprise suitable logic, circuitry, interfaces and/or code.
FIG. 3 is a diagram illustrating memory regions of thememory array13. Thememory array13 includes a content data storage region R1 for storing content data and a test data storage region R2 for storing test data.
FIG. 4 is a flow chart illustrating the sequence of a reliability test on thesemiconductor memory1. In Step SP11, thetesting device2 performs a reliability test of the memory array13 (hereinafter, “memory test”). On completion of the memory test, in Step SP12, thetesting device2 performs a reliability test of the random number generator12 (hereinafter, “random number test”). In this way, the memory and the random number tests are performed separately and chronologically on thesemiconductor memory1. The order in which the memory and the random number tests are performed may be the opposite of the example illustrated inFIG. 4.
Reliability Test of Memory ArrayFIG. 5 is a flow chart illustrating the sequence of a memory test by thememory controller11. In a memory test in pre-shipment inspection, thetesting device2 firstly generates a predetermined fixed random number value to be used by the encryption/decryption unit21 in the memory test, and then generates a test pattern and its expected value. Thetesting device2 next stores the fixed random number value in a test command dedicated to instruct to perform a memory test (hereinafter, “memory test command”), and then encrypts the memory test command with a known cryptographic algorithm for a test mode. The encrypted memory test command is sent as data D1 to thesemiconductor memory1. Encryption of the memory test command may be omitted.
Referring toFIG. 5, inStep SP21, thememory controller11 receives the encrypted memory test command from thetesting device2. The received encrypted memory test command is decrypted with the cryptographic algorithm for the test mode by the encryption/decryption unit21. The encryption/decryption unit21 outputs the decrypted memory test command as data D2.
In Step SP22, thememory controller11 recognizes a receipt of the memory test command from thetesting device2 by a command ID, and switches the input terminal of theselectors24 to26 to “0” as inFIG. 2.
In Step SP23, thememory controller11 extracts the fixed random number value from the memory test command output from the encryption/decryption unit21 in Step SP21.
In Step SP24, thememory controller11 inputs the fixed random number value extracted in Step SP23 as data D3 to theregister23. The fixed random number value is thereby stored in theregister23.
In Step SP25, thememory controller11 inputs the fixed random number value stored in theregister23 to the encryption/decryption unit21 via theselector24. Thememory controller11 then initializes the encryption/decryption unit21 with the fixed random number value.
In Step SP26, thememory controller11 notifies thetesting device2 as a return value to the memory test command that the encryption/decryption unit21 has been initialized.
In Step SP27, thememory controller11 performs a reliability test of thememory array13 with the test pattern generated by thetesting device2. For example, thetesting device2 sends an encrypted test pattern encrypted with the fixed random number value to thesemiconductor memory1. Thememory controller11 decrypts the encrypted test pattern received from thetesting device2 by means of the encryption/decryption unit21 with the fixed random number value. Thememory controller11 inputs an address included in the decrypted test pattern as data D4 to thememory array13 via theselector26. Thememory controller11 inputs data D5 read from thememory array13 to the encryption/decryption unit21 via theselector25. Thememory controller11 encrypts the data D5 by means of the encryption/decryption unit21 with the fixed random number value, and sends the encrypted data to thetesting device2.
Thetesting device2 decrypts the encrypted data received from thesemiconductor memory1 with the fixed random number value. The value of the decrypted data is compared with the expected value of the test pattern generated above, so as to evaluate the reliability of thememory array13.
Description is given above of an example of sending a fixed random number value included in a memory test command from thetesting device2 to thesemiconductor memory1. Embodiments, however, are not limited to this example. In another example, a fixed random number value may be stored in an arbitrary storage (such as thememory array13, a RAM, a ROM, or a register) in thesemiconductor memory1 in advance. In this example, thememory controller11 receives a memory test command from thetesting device2, and then a fixed random number value is read from the storage and stored in theregister23.
Reliability Test of a Random Number Generator (First Example: Evaluation of Repetition of a Random Number)FIG. 6 is a flow chart illustrating the sequence of a random number test by thememory controller11. In a random number test in pre-shipment inspection, thetesting device2 firstly generates count information to specify the number of counts to obtain a random number value from therandom number generator12. Thetesting device2 next stores the count information in a test command dedicated to instruct to perform a random number test (hereinafter, “random number test command”), and then encrypts the random number test command with a known cryptographic algorithm for a test mode. The encrypted random number test command is sent as data D1 to thesemiconductor memory1. Encryption of the random number test command may be omitted.
Referring toFIG. 6, in Step SP31, thememory controller11 receives the encrypted random number test command from thetesting device2. The received encrypted random number test command is decrypted with the cryptographic algorithm for the test mode by the encryption/decryption unit21. The encryption/decryption unit21 outputs the decrypted random number test command as data D2.
In Step SP32, thememory controller11 recognizes a receipt of the random number test command from thetesting device2 by a command ID, and switches the input terminal of theselectors24 to26 to “1” as inFIG. 2.
In Step SP33, thememory controller11 extracts the count information from the random number test command output from the encryption/decryption unit21 in Step SP31.
In Step SP34, thememory controller11 inputs the count information extracted in Step SP33 as data D6 to the self-test unit22. The number of counts to obtain the random number value from therandom number generator12 is thereby specified to the self-test unit22.
In Step SP35, thememory controller11 inputs a control signal D7 to instruct therandom number generator12 to generate a random number value from the self-test unit22 to therandom number generator12. Therandom number generator12 receives the input of the control signal D7 and generates a random number value D8. Thememory controller11 then inputs the random number value D8 output from therandom number generator12 to the self-test unit22.
In Step SP36, thememory controller11 inputs an address D9 in the test data storage region R2 for storing the random number value D8 from the self-test unit22 via theselector26 to thememory array13. Thememory controller11 inputs the random number value D8 obtained in Step SP35 from the self-test unit22 to thememory array13. The random number value D8 obtained in Step SP35 is thereby stored at a specified address in the test data storage region R2.
In Step SP37, thememory controller11 reads the random number value D8 previously generated and stored in thememory array13 from thememory array13 to the self-test unit22. Thememory controller11 then compares the latest random number value D8 obtained in Step SP35 (hereinafter, “new random number value”) with the previous random number value D8 read from the memory array13 (hereinafter, “old random number value”) by means of the self-test unit22.
If the result of comparison in Step SP37 shows the new random number value D8 and the old random number value D8 are identical, in Step SP39, thememory controller11 inputs a check result indicating that identical random number values are consecutively generated by the random number generator12 (that is, a check result indicating occurrence of repetition of a random number) as data D10 from the self-test unit22 via theselector25 to the encryption/decryption unit21. Thememory controller11 encrypts the check result with the cryptographic algorithm for a test mode by means of the encryption/decryption unit21 and then sends it to thetesting device2. Thetesting device2 decrypts the encrypted check result received from thesemiconductor memory1 with the cryptographic algorithm for the test mode, and evaluates the reliability of the random number generator12 (in this case, occurrence of repetition of the random number).
If the result of comparison in Step SP37 shows the new random number value D8 and the old random number value D8 are not identical, in Step SP39, thememory controller11 determines whether the random number values D8 have been obtained for the number of counts specified by the count information by means of the self-test unit22.
If the random number values D8 have not been obtained for the specified number of counts, thememory controller11 repeats the processing from Step SP35 onward.
If the random number values D8 have been obtained for the specified number of counts, in Step SP39, thememory controller11 inputs a check result indicating no occurrence of repetition of a random number as data D10 from the self-test unit22 via theselector25 to the encryption/decryption unit21. Thememory controller11 encrypts the check result with the cryptographic algorithm of the test mode by means of the encryption/decryption unit21, and then sends it to thetesting device2. Thetesting device2 decrypts the encrypted check result received from thesemiconductor memory1 with the cryptographic algorithm for the test mode, and evaluates the reliability of the random number generator12 (in this case, no occurrence of the repetition of the random number).
Description is given above of an example of sending count information included in a random number test command from thetesting device2 to thesemiconductor memory1. Embodiments, however, are not limited to this example. In another example, count information may be stored in an arbitrary storage (such as thememory array13, a RAM, a ROM, or a register) in thesemiconductor memory1 in advance. In this example, thememory controller11 receives a random number test command from thetesting device2, and then count information is read from the storage and input to the self-test unit22. This is similarly applicable to second and third examples below.
Moreover, description is given above of an example of storing the old random number value D8 in the test data storage region R2 in thememory array13. Embodiments, however, are not limited to this example. The old random number value D8 may be stored in, for example, an internal register or RAM in thememory controller11. This is similarly applicable to second and third examples below.
Reliability Test of a Random Number Generator (Second Example: Evaluation of Periodicity of a Random Number)FIG. 7 is a flow chart illustrating the sequence of a random number test by thememory controller11. In a random number test in pre-shipment inspection, thetesting device2 firstly generates count information to specify the number of counts to obtain a random number value from therandom number generator12. Thetesting device2 next stores the count information in the random number test command, and then encrypts the random number test command with a known cryptographic algorithm for a test mode. The encrypted random number test command is sent as data D1 to thesemiconductor memory1. Encryption of the random number test command may be omitted.
Referring toFIG. 7, in Step SP51, thememory controller11 receives the encrypted random number test command from thetesting device2. The received encrypted random number test command is decrypted with the cryptographic algorithm for the test mode by the encryption/decryption unit21. The encryption/decryption unit21 outputs the decrypted random number test command as data D2.
In Step SP52, thememory controller11 recognizes a receipt of the random number test command from thetesting device2 by a command ID, and switches the input terminal of theselectors24 to26 to “1” as inFIG. 2.
In Step SP53, thememory controller11 extracts the count information from the random number test command output from the encryption/decryption unit21 in Step SP51.
In Step SP54, thememory controller11 inputs the count information extracted in Step SP53 as data D6 to the self-test unit22. The number of counts to obtain the random number value from therandom number generator12 is thereby specified to the self-test unit22.
In Step SP55, thememory controller11 inputs a control signal D7 to instruct therandom number generator12 to generate a random number value from the self-test unit22 to therandom number generator12. Therandom number generator12 receives the input of the control signal D7 and generates a random number value D8. Thememory controller11 then inputs the random number value D8 output from therandom number generator12 to the self-test unit22.
In Step SP56, thememory controller11 inputs an address D9 in the test data storage region R2 for storing the random number value D8 from the self-test unit22 via theselector26 to thememory array13. Thememory controller11 inputs the random number value D8 obtained in Step SP55 from the self-test unit22 to thememory array13. The random number value D8 obtained in Step SP55 is thereby stored at a specified address in the test data storage region R2.
In Step SP57, thememory controller11 reads all the random number values D8 stored in thememory array13 at that moment from thememory array13 to the self-test unit22. Thememory controller11 then compares the latest random number value D8 obtained in Step SP55 (hereinafter, “new random number value”) with the existing random number values D8 read from the memory array13 (hereinafter, “existing random number value”) by means of the self-test unit22.
If the result of comparison in Step SP57 shows the new random number value D8 is identical to any of the existing random number values D8, in Step SP59, thememory controller11 inputs a check result indicating that a random number value is duplicated by the random number generator12 (that is, a check result indicating occurrence of periodicity of a random number) as data D10 from the self-test unit22 via theselector25 to the encryption/decryption unit21. Thememory controller11 encrypts the check result with the cryptographic algorithm for a test mode by means of the encryption/decryption unit21 and then sends it to thetesting device2. Thetesting device2 decrypts the encrypted check result received from thesemiconductor memory1 with the cryptographic algorithm for the test mode, and evaluates the reliability of the random number generator12 (in this case, occurrence of periodicity of the random number).
If the result of comparison in Step SP57 shows the new random number value D8 is identical to none of the existing random number values D8, in Step SP58, thememory controller11 determines whether the random number values D8 have been obtained for the number of counts specified by the count information by means of the self-test unit22.
If the random number values D8 have not been obtained for the specified number of counts, thememory controller11 repeats the processing from Step SP55 onward.
If the random number values D8 have been obtained for the specified number of counts, in Step SP59, thememory controller11 inputs a check result indicating no occurrence of periodicity of a random number as data D10 from the self-test unit22 via theselector25 to the encryption/decryption unit21. Thememory controller11 encrypts the check result with the cryptographic algorithm for a test mode by means of the encryption/decryption unit21 and then sends it to thetesting device2. Thetesting device2 decrypts the encrypted check result received from thesemiconductor memory1 with the cryptographic algorithm for the test mode, and evaluates the reliability of the random number generator12 (in this case, no occurrence of the periodicity of the random number).
Reliability Test of a Random Number Generator (Third Example: Evaluation of Non-Uniform Distribution of Random Numbers)FIG. 8 is a flow chart illustrating the sequence of a random number test by thememory controller11. In a random number test in pre-shipment inspection, thetesting device2 firstly generates count information to specify the number of counts to obtain a random number value from therandom number generator12. Thetesting device2 next stores the count information in the random number test command, and then encrypts the random number test command with a known cryptographic algorithm for a test mode. The encrypted random number test command is sent as data D1 to thesemiconductor memory1. Encryption of the random number test command may be omitted.
Referring toFIG. 8, in Step SP71, thememory controller11 receives the encrypted random number test command from thetesting device2. The received encrypted random number test command is decrypted with the cryptographic algorithm for the test mode by the encryption/decryption unit21. The encryption/decryption unit21 outputs the decrypted random number test command as data D2.
In Step SP72, thememory controller11 recognizes a receipt of the random number test command from thetesting device2 by a command ID, and switches the input terminal of theselectors24 to26 to “1” inFIG. 2.
In Step SP73, thememory controller11 extracts the count information from the random number test command output from the encryption/decryption unit21 in Step SP71.
In Step SP74, thememory controller11 inputs the count information extracted in Step SP73 as data D6 to the self-test unit22. The number of counts to obtain the random number value from therandom number generator12 is thereby specified to the self-test unit22.
In Step SP75, thememory controller11 inputs a control signal D7 to instruct therandom number generator12 to generate a random number value from the self-test unit22 to therandom number generator12. Therandom number generator12 receives the input of the control signal D7 and generates a random number value D8. Thememory controller11 then inputs the random number value D8 output from therandom number generator12 to the self-test unit22.
In Step SP76, thememory controller11 inputs an address D9 in the test data storage region R2 for storing the random number value D8 from the self-test unit22 via theselector26 to thememory array13. Thememory controller11 inputs the random number value D8 obtained in Step SP75 from the self-test unit22 to thememory array13. The random number value D8 obtained in Step SP75 is thereby stored at a specified address in the test data storage region R2.
In Step SP77, thememory controller11 determines whether the random number values D8 have been obtained for the number of counts specified by the count information by means of the self-test unit22.
If the random number values D8 have not been obtained for the specified number of counts, thememory controller11 repeats the processing from Step SP75 onward.
If the random number values D8 have been obtained for the specified number of counts, in Step SP78, thememory controller11 reads all the random number values D8 stored in thememory array13 from thememory array13 to the self-test unit22. Thememory controller11 then checks whether non-uniform distribution of “0” and “1” occurs in each bit of the random number values D8 by means of the self-test unit22. For example, given that the bit length of each random number value D8 is 128 bits and the specified number of counts is64, the self-test unit22 determines that non-uniform distribution does not occur if the number of “0”s or “1”s among the total of 128×64 bits is within an allowable range of at least 50×64 and not more than 70×64, while determining that non-uniform distribution occurs if the number is out of the allowable range.
In Step SP79, thememory controller11 inputs a check result indicating whether non-uniform distribution of random numbers occur, as data D10 from the self-test unit22 via theselector25 to the encryption/decryption unit21. Thememory controller11 encrypts the check result with the cryptographic algorithm for a test mode by means of the encryption/decryption unit21 and then sends it to thetesting device2. Thetesting device2 decrypts the encrypted check result received from thesemiconductor memory1 with the cryptographic algorithm for the test mode, and evaluates the reliability of the random number generator12 (in this case, occurrence of non-uniform distribution of the random numbers).
Description is given above of an example of storing the random number value D8 in the specified number of counts in the test data storage region R2 in thememory array13. Embodiments, however, are not limited to this example. Storing the random number values D8 in thememory array13 may be omitted, by counting the bit number of “0”s or “1”s with the random number values D8 being stored in an internal register of thememory controller11 and accumulating count values every time a new random number value D8 is generated.
The first to third examples above regarding the reliability test of therandom number generator12 may be applicable in an arbitrary combination.
RecapitulationIn the semiconductor memory (semiconductor device)1 according to the present embodiment, thememory controller11 performs a reliability test only on the memory array13 (memory test) out of thememory array13 and therandom number generator12 on receipt of a memory test command from thetesting device2, while performing a reliability test only on the random number generator12 (random number test) out of thememory array13 and therandom number generator12 on receipt of a random number test command from thetesting device2. Separately performing the reliability test of thememory array13 independent from the random number value of the true random number and the reliability test of therandom number generator12 dependent on the random number value of the true random number enables concurrently performed reliability tests onmultiple semiconductor memories1 with onetesting device2. In consequence, concurrent reliability tests onmultiple semiconductor memories1 are realized for thesemiconductor memory1 provided with therandom number generator12 that generates true random number, which increases productivity of pre-shipment inspection.
In thesemiconductor memory1 according to the present embodiment, in the reliability test of thememory array13, thememory controller11 inputs a predetermined fixed random number value in place of a true random number generated by therandom number generator12 to the encryption/decryption unit21, and the encryption/decryption unit21 encrypts and decrypts signals (command and data) transmitted to and from thetesting device2 on the basis of the fixed random number value. Such use of a predetermined fixed random number value in place of a true random number makes encryption and decryption by the encryption/decryption unit21 in the reliability test of thememory array13 independent from a true random number generated by therandom number generator12. In consequence, employing a common fixed random number value formultiple semiconductor memories1 enables use of a common expected value, which enables concurrently performed reliability test of thememory array13 onmultiple semiconductor memories1.
In thesemiconductor memory1 according to the present embodiment, thememory controller11 extracts the fixed random number value from the memory test command(first test command) received from thetesting device2 and stores the fixed random number value in theregister23. Use of the fixed random number value stored in theregister23 enables the encryption/decryption unit21 to perform encryption and decryption independently from a true random number generated by therandom number generator12. Including the fixed random number value in the memory test command facilitates changing the fixed random number value by thetesting device2.
In thesemiconductor memory1 according to the present embodiment, the fixed random number value is stored in a predetermined storage in thesemiconductor memory1, and thememory controller11 stores the fixed random number value read from the storage in theregister23. Use of the fixed random number value stored in theregister23 enables the encryption/decryption unit21 to perform encryption and decryption independently from a true random number generated by therandom number generator12.
In thesemiconductor memory1 according to the present embodiment, the self-test unit22 inputs a predetermined control signal D7 to therandom number generator12 to cause therandom number generator12 to generate the random number value D8, store the random number value D8 generated by therandom number generator12 in a predetermined storage in the semiconductor memory1 (such asmemory array13, RAM, ROM, or register), and checks irreproducibility of the random number value D8 generated by therandom number generator12 on the basis of the random number value D8 read from the storage. The reliability test of therandom number generator12 dependent on the random number value of a true random number is performed as a self test for eachsemiconductor memory1 by the self-test unit22 of eachsemiconductor memory1, which enables concurrently performed reliability tests of a random number generator onmultiple semiconductor memories1. Limiting the reliability test of therandom number generator12 to irreproducibility check of the random number value facilitates the test and reduces testing cost.
General random number tests need to check whether a generated random number meets both irreproducibility and uniformity. Such complicated random number test at pre-shipment inspection increases testing cost. In thesemiconductor memory1 according to the present embodiment, the reliability test of therandom number generator12 is limited to the irreproducibility check of random number values, which facilitates the test and reduces testing cost. On the other hand, since uniformity check is not performed in the reliability test of therandom number generator12, applying the embodiment of the present disclosure to a device whose uniformity of random numbers is assured in a separate processing block from the random number generator is particularly effective. In thesemiconductor memory1 according to the present embodiment, the uniformity of random numbers can be assured by a cryptographic algorithm of the encryption/decryption unit21, so that the reliability test of therandom number generator12 may be limited to the irreproducibility check of random numbers.
In thesemiconductor memory1 according to the present embodiment, the self-test unit22 extracts count information from the random number test command (second test command), and causes therandom number generator12 to sequentially generate multiple random number values D8 on the basis of the count information. Multiple random number values D8 sequentially generated by therandom number generator12 are thus stored in the storage. The self-test unit22 reads the multiple random number values D8 from the storage, so as to check irreproducibility of the random number values. Including the count information in the random number test command facilitates changing the count information by thetesting device2.
In thesemiconductor memory1 according to the present embodiment, count information is stored in a predetermined storage in the semiconductor memory1 (such asmemory array13, RAM, ROM, or register). The self-test unit22 causes therandom number generator12 to sequentially generate multiple random number values D8, on the basis of the count information read from the storage. Multiple random number values D8 sequentially generated by therandom number generator12 are thus stored in the storage. The self-test unit22 reads the multiple random number values D8 from the storage, so as to check irreproducibility of the random number value.
In thesemiconductor memory1 according to the present embodiment, the self-test unit22 starts checking the random number value D8 on receipt of input of count information, and on completion of checking, sends a check result (data D10) to thetesting device2. This negates the need for test pattern to be produced and comparison with an expected value by thetesting device2 regarding a reliability test of therandom number generator12, and thus processing load of thetesting device2 is reduced.
In thesemiconductor memory1 according to the present embodiment, the self-test unit22 checks whether identical random number values are consecutively generated by therandom number generator12, as an irreproducibility check of random number values. This achieves a simple check of presence or absence of repetition of a random number.
In thesemiconductor memory1 according to the present embodiment, the self-test unit22 checks whether identical random number values are included in multiple random number values generated by therandom number generator12, as an irreproducibility check of random number values. This achieves a simple check of presence or absence of periodicity of a random number.
In thesemiconductor memory1 according to the present embodiment, the self-test unit22 checks whether appearance rates of “0” and “1” in a random number value generated by therandom number generator12 are within a predetermined allowable range, as an irreproducibility check of random number values. This achieves a simple check of presence or absence of non-uniform distribution of “0” and “1” in each bit of random numbers.
In thesemiconductor memory1 according to the present embodiment, the self-test unit22 stores the random number value D8 generated by therandom number generator12 in a storage (such asmemory array13, internal register of thememory controller11, or RAM), and checks irreproducibility of the random number value D8 generated by therandom number generator12 on the basis of the random number value D8 read from the storage. Storing the random number value D8 previously generated by therandom number generator12 in the storage enables the self-test unit22 to check irreproducibility regarding, for example, repetition, periodicity, and non-uniform distribution of random numbers, on the basis of the random number value D8 read from the storage.
In thesemiconductor memory1 according to the present embodiment, the random number value D8 generated by therandom number generator12 is stored in thememory array13. Without a need to prepare a large-capacity register or RAM for storing the multiple random number values D8 generated by therandom number generator12 inside or outside thememory controller11, circuit size is reduced.
While the invention has been described in detail, the foregoing description is in all aspects illustrative and not restrictive. It is understood that numerous other modifications and variations can be devised without departing from the scope of the invention.