The present invention relates to the field of electronic testing.
Electronic systems and devices have made a significant contribution towards the advancement of modern society and have facilitated increased productivity and reduced costs in analyzing and communicating information in a variety of business, science, education, and entertainment applications. These electronic systems and devices are typically tested to ensure proper operation. While testing of the systems and devices has made significant advances, traditional approaches are often limited in the ability to simulate real world operating conditions.
Testing devices often involves testing components (e.g., memories, storage devices, registers, etc.) associated with an address. Traditional random number generators for generating write addresses go through an entire range of addresses hitting each address once and without intervening repetition. This is usually good for maximum performance as far as checking each possible address in a range, but it does not typically mimic or provide a good replication of how a device may act or be utilized by a system (e.g., by a PC, server, etc.). The prior art approaches often randomly went through all numbers in a range without repeating any of the numbers until all of the numbers in the range had been generated once. However, this situation rarely occurs in the real world.
Presented embodiments facilitate efficient and effective flexible implementation of different types of testing procedures in a test system. Presented embodiments enable efficient and effective random generation of test input information. In one embodiment a method includes accessing a plurality of data values to write to a DUT, generating a plurality of addresses pseudo randomly and assigning the address to a respective one of the data values, wherein assignments of a particular address to different respective ones of the data values are randomly repeatable; and directing writing of the data values to the DUT in accordance with the plurality of addresses that are randomly generated and randomly repeated. The generating a plurality of addresses randomly can include normalization. Generating a plurality of addresses pseudo randomly and assigning the address to a respective one of the data values can include performing a confirmation check. The confirmation check can include checking if the addresses are within proper parameters.
In one embodiment, generating a plurality of addresses pseudo randomly and assigning the address to a respective one of the data values can include identifying parameter limitations, and providing notifications of the parameter limitations. The generating a plurality of addresses pseudo randomly and assigning the address to a respective one of the data values can include compensating to address physical constraints. In one exemplary implementation, generating the plurality of addresses pseudo randomly is implemented by random number generation digital signal processor (DSP) hardware. A portion of the DSP can be configured in a field programmable array (FPGA) component. The DUT can be a storage device. The DUT can be a solid state drive (SSD).
In one embodiment, a system includes a load board configured to couple with a plurality of devices under test (DUTs), test electronics configured to test the plurality of DUTs, wherein the test electronics are coupled to the load board, and a controller configured to direct testing of the plurality of DUTs at least in part based upon random selection of test input information, including random selection of respective address locations within the DUTs. The controller can be coupled to the testing electronics. The controller can include a test input control component configured to generate a plurality of addresses pseudo randomly and assign the addresses to a respective one of plurality of input data values. Assignments of a particular address to different respective ones of the data values can be randomly repeatable. In one exemplary implementation, the assignments of a particular address to different respective ones of the data values can be randomly repeatable until all possible addresses in a particular address range have been selected.
In one embodiment, a portion of the controller pseudo random number generation can be implemented in a field programmable array FPGA component. The controller can include random number generation digital signal processor (DSP) hardware. A portion of the DSP can be implemented in a field programmable array FPGA component. A portion of the DSP can be implemented in dedicated ASIC hardware. The DUT can be memory information storage device. The DUT can be a solid state drive (SSD).
The accompanying drawings, which are incorporated in and form a part of this specification, are included for exemplary illustration of the principles of the present invention and not intended to limit the present invention to the particular implementations illustrated therein. The drawings are not to scale unless otherwise specifically indicated.
Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be obvious to one ordinarily skilled in the art that the present invention may be practiced without these specific details. In other instances, well known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the current invention.
Presented embodiments enable efficient and effective random generation of test input information. In one embodiment, random number generation digital signal processor (DSP) systems and methods facilitate efficient and effective simulation testing. The simulation testing can approximate randomness of real-world conditions. In one embodiment, a random number generator circuit is efficiently and advantageously implemented within the digital signal processor (DSP) of a FPGA of a tester system. In one embodiment, random number generation digital signal processor (DSP) systems and methods pseudo randomly generate data/addresses. The pseudo random number generator is capable of repeat addresses (e.g., within a range of addresses, etc.) to better mimic real world conditions (e.g., how a PC actually operates, etc.).
In one exemplary implementation, it does not repeat particular test input values purposely, the repetition of the test input values is also random. For example, the selection of a particular repeated number and timing of the repeat can be random. The generation does not necessarily cover each and every address in the range. There may be two occurrences of a particular address and no occurrence of another particular address. This advantageously provides test results that give a better indication of actual performance for real world implementations. For example, read/write performance of SDDs appears better when each number/address is gone through sequentially, but does not necessarily give accurate indication of performance in real world conditions where a PC randomly repeats numbers/addresses.
In one embodiment, test equipment can include a test input control component. The test input control component can be included in a FPGA of the test equipment. In one exemplary implementation, a test input control component can randomly generate test input information (e.g., DUT addresses, input DUT test data, etc.). In one exemplary implementation, a test input control component can direct operations of primary test resources 131 and sideband resources 132 in accordance with randomly generated test input information.
The components of test input control component 210 cooperatively operate to provide test data input for test DUTs. In one embodiment, fixed control component 251 selects input data based upon a fixed selection scheme in which the order of the test inputs and the content of the test inputs are fixed. In one exemplary implementation, the order of the test inputs and the content of the test inputs are predetermined. In one embodiment, random control component 257 selects input data based upon a random selection scheme in which the order of the test inputs and the content of the test inputs are random. It is appreciated there are various degrees and types of randomness that can be utilized to implement test input control. Additional information on the degrees and types of randomness is presented in other portions of this specification. Address set 230 includes a range of possible DUT addresses that can be selected/chosen. Input value set 240 includes a first set of possible data values that can be selected/chosen. Input value set 240 includes a second set of possible data values that can be selected/chosen. Switches 291, 292, and 293 are configured to control which selection scheme (e.g., fixed, random, etc.) is use to select/choose possible DUT addresses and possible data values. Switch 294 is configured to select which input value set (e.g., 240, 270, etc.) provides the test input values.
In one embodiment, the output of a random control component can be forwarded directly as the selected address without going through an address set. In one exemplary implementation, the output of the random control component is the proper number and configuration of logical bits that correspond directly to a DUT address.
The components of test input control component 310 cooperatively operate to provide test data input for DUTs. In one embodiment, test input control component 310 is similar to test input control component 210. In one exemplary implementation, test input control component 310 can have a fixed control component (not shown) in addition to random control components 351 and 357. The fixed control component can be similar to fixed control component 251. Random control component 351 can select input data (e.g., DUT addresses, input values, etc.) based upon a first random selection scheme in which the order of the test inputs and the content of the test inputs are random. Random control component 357 can select input data based upon a random selection scheme in which the order of the test inputs and the content of the test inputs are random. Address set 330 includes a range of possible DUT addresses that can be selected/chosen. Input value set 340 includes a first set of possible data values that can be selected/chosen. Input value set 370 includes a second set of possible data values that can be selected/chosen. Switch 394 is configured to select which input value set (e.g., 340, 370, etc.) provides the test input values. Switches 391, 392, and 393 are configured to control which selection scheme (e.g., first random scheme, second random scheme, etc.) is use to select/choose possible addresses and possible data values. It is appreciated there are various degrees and types of test input control randomness that can be implemented.
It is appreciated addresses and test input values can be randomly selected in accordance various random selection schemes. In one embodiment, addresses and test input values are randomly selected and the address and test input values can be repeated. In one embodiment, addresses and test input values are randomly selected and the address are not repeated. In one exemplary implementation, DUT addresses and test input values are randomly selected until each of the addresses has been utilized as a test input.
The components of test equipment system 410 cooperatively operate to test DUTs (e.g., 430, 440, and 490, etc.), including providing test data input configured to test the DUTs. Test input control component 420 can control selection of addresses and test input values. In one embodiment, addresses and test input values can be randomly selected/chosen. In one exemplary implementation, test controller 415 is a field programmable gate array (PFGA) and test input controller component 420 is implemented in hardware. Test input controller component 420 is similar to other test input controller components in this specification (e.g., 220, 320, 520, etc.).
The components of test input control component 510 cooperatively operate to provide test data input for test DUTs. In one exemplary implementation, test input control component 510 is similar to test input control component 310. Random control component 551 can select input data (e.g., DUT addresses, input values, etc.) based upon a first random selection scheme in which the order of the test inputs and the content of the test inputs are random. Random control component 557 selects input data based upon a random selection scheme in which the order of the test inputs and the content of the test inputs are random.
It is appreciated there are various different types and content of test input information that can be implemented. In one embodiment, an address set (e.g., 230, 330, 530, etc.) can include a range of possible DUT addresses that can be selected/chosen and an input value set (e.g., 240, 540, 390, 590, etc.) includes a set of possible data values that can be selected/chosen. In one exemplary implementation, address set 530 can configured with a plurality of selection identifiers and corresponding address values, input value set 540 can configured with a plurality of selection identifiers and corresponding data values, and input value set 590 can configured with a plurality of selection identifiers and corresponding data values. A particular selection identifier can be selected/chosen based upon a random generation value corresponding to the selection identifier. Additional description of selection identifiers is presented in other portion of this specification.
A random selection component can be configured so that the selection identifiers are mapped to corresponding data values. In one embodiment, selection identifiers and corresponding data values can be mapped in a configuration similar to a table format. Address set 530 can have a plurality of selection identifiers in a first column 531 that correspond to a plurality of addresses in a second column 532. The selection identifiers in a first column 531 can be mapped respectively to addresses in a second column 532. Input data set 540 can have a plurality of selection identifiers in a first column 541 that correspond to a plurality of addresses in a second column 542. The selection identifiers in a first column 541 can be mapped respectively to addresses in a second column 542. Input data set 590 can have a plurality of selection identifiers in a first column 591 that correspond to a plurality of addresses in a second column 592. The selection identifiers in a first column 591 can be mapped respectively to addresses in a second column 592. The selection identifiers and corresponding data values can be different in respective different input value sets (e.g., 540, 590, etc.).
In one embodiment, it is appreciated addresses and test input values can be randomly selected in accordance various random selection schemes.
In one embodiment, at time T1A random selection component 551 randomly generates a value 010 that is used as a selection identification value 010. Address set 530 indicates selection identification value 010 corresponds to address 010, which is forwarded as the test address for the DUT. Input value set 590 indicates selection identification value 010 corresponds to input data value 10000, which is also forwarded to the DUT for storage in address location 010. The results are shown in
In one exemplary implementation, column 620 is associated with a second random selection scheme results, in which randomly selected and the address and test input values can be repeated. It is also possible that not every possible address has been selected/chosen. In column 620 random selection component 551 is used to randomly select an address from address set 530 and random selection component 557 is used to randomly select an input data value from value set 540. In one embodiment, at time T1B random selection component 551 randomly generates a value 010 that is used as a section identification value 010 and address set 520 indicates selection identification value 010 corresponds to address 010, which is forwarded as the test address for the DUT. Also, at time T1B random selection component 557 randomly generates a value 001 that is used as a section identification value 001 and input value set 540 indicates selection identification value 001 corresponds to input data value 101, which is also forwarded to the DUT for storage in storage locate 010.
It is appreciated that various selection schemes can be utilized. Selection schemes can include both fixed and random selection. Address selection can be random and input data values fixed selection. Input data value selection can be random and address selection fixed. In one embodiment, addresses and test input values are randomly selected and the addresses are not repeated. In one exemplary implementation, DUT addresses and test input values are randomly selected until each of the addresses has been utilized as a test input.
In one embodiment, a DSP hardware random number generation implementation can produce results similar to software random number generation applications (e.g., LINUX function does a certain algorithm called DRAND48).
There can be several additional modifications in the presented hardware random generation implementation over traditional approaches (e.g., pure software type implementations, software DRAND48, etc.) of random generation. The traditional applications typically have fractions, whereas the presented hardware implementations can include normalization to use digital logical 0 and 1. In one embodiment, after receiving the initial normalized number result, several confirmation checks are performed (e.g., is it still within an appropriate range, matches other criteria, is the step/jump size appropriate, is am address block size proper, etc.). In one embodiment, a presented hardware system and method includes compensations to address physical constraints of a test equipment components (e.g., a controller, a FPGA, etc.) while implementing the algorithm in hardware. In one exemplary implementation, the random number generation digital signal processor (DSP) systems and methods are implemented in the controller (e.g., FPGA, etc.). In one embodiment, the hardware implementation can identify and provide notifications of parameter limitations (e.g., including those that are different than the software implementation, etc.).
In block 1010, a plurality of data values are accessed for writing to a DUT.
In block 1020, a plurality of addresses are pseudo randomly generated. The plurality of address can be assigned to a respective one of the data values. The assignment of a particular address to different respective ones of the data values can be randomly repeatable. The generating a plurality of addresses pseudo randomly can include normalization.
In one embodiment, the method includes performing a confirmation check. The confirmation check can include checking if the addresses are within proper parameters. In one exemplary implementation, the method includes checking if a pseudo randomly generated address satisfies address parameter limitations, and providing notifications of the parameter limitations. The method can include compensating for address physical constraints.
In block 1030, writing of the data values to the DUT is directed in accordance with the plurality of addresses that are randomly generated and randomly repeated. A confirmation check can include checking if the addresses within proper parameters.
It is appreciated that method 1000 is compatible with various hardware configurations. In one embodiment, a portion of the DSP is implemented in a field programmable array FPGA component. A portion of the DSP can be implemented in dedicated ASIC hardware. A DUT can be a storage device. A DUT can be a solid state drive (SSD).
In one embodiment, random number generation digital signal processor (DSP) systems and methods can be implemented in a test system similar to the one shown in the
While the invention has been described in conjunction with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications, and equivalents. The description is not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible.
Thus, presented systems and methods allow both random generation and random repeatability of numbers within an address range. This random generation/repeatability facilitates testing that more closely mimics real world conditions than traditional testing systems and methods. Random number generation digital signal processor (DSP) systems and methods can help avoid misleading indications of how a component that utilizes addresses (e.g., SSD, memory, etc.) is going to perform (e.g., write speed, etc.) in real world in the field applications.
In one embodiment, random selection testing systems and methods can be implemented in test systems similar to the embodiments shown in the
It is appreciated that selectable testing systems and methods can be implemented in various testing system configurations or approaches.
In one embodiment, a test system includes device interface board and tester electronics that control testing operations. The tester electronics can be located in an enclosure which together are referred to as the primitive. The device interface board has a device under test access interface that allows physical manipulation of the devices under test (e.g., manual manipulation, robotic manipulation, etc.). A device under test can be independently manipulated physically with little or no interference or impacts on testing operations of another device under test. Device interface boards and their load boards can be conveniently setup to accommodate different device form factors. In one embodiment, load boards are configured with device under test interfaces and universal primitive interfaces. In one exemplary implementation, the device interface board can control an ambient environment of a device under test.
While the invention has been described in conjunction with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications, and equivalents. The description is not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible.
Some portions of the detailed descriptions are presented in terms of procedures, logic blocks, processing, and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means generally used by those skilled in data processing arts to effectively convey the substance of their work to others skilled in the art. A procedure, logic block, process, etc., is here, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps include physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic, optical, or quantum signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the discussions, it is appreciated that throughout the present application, discussions utilizing terms such as “processing”, “computing”, “calculating”, “determining”, “displaying” or the like, refer to the action and processes of a computer system, or similar processing device (e.g., an electrical, optical, or quantum, computing device), that manipulates and transforms data represented as physical (e.g., electronic) quantities. The terms refer to actions and processes of the processing devices that manipulate or transform physical quantities within a computer system's component (e.g., registers, memories, other such information storage, transmission or display devices, etc.) into other data similarly represented as physical quantities within other components.
It is appreciated that embodiments of the present invention can be compatible and implemented with a variety of different types of tangible memory or storage (e.g., RAM, DRAM, flash, hard drive, CD, DVD, etc.). The memory or storage, while able to be changed or rewritten, can be considered a non-transitory storage medium. By indicating a non-transitory storage medium, it is not intended to limit characteristics of the medium, and can include a variety of storage mediums (e.g., programmable, erasable, nonprogrammable, read/write, read only, etc.) and “non-transitory” computer-readable media comprises all computer-readable media, with the sole exception being a transitory, propagating signal.
It is appreciated that the description includes exemplary concepts or embodiments associated with the novel approach. It is also appreciated that the listing is not exhaustive and does not necessarily include all possible implementation. The concepts and embodiments can be implemented in hardware, firmware, software, and so on. In one embodiment, the methods or process describe operations performed by various processing components or units. In one exemplary implementation, instructions, or directions associated with the methods, processes, operations etc. can be stored in a memory and cause a processor to implement the operations, functions, actions, etc.
The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents. The listing of steps within method claims do not imply any particular order to performing the steps, unless explicitly stated in the claim.
This application claims the benefit of and priority to provisional application 63/002,854 entitled Random Number Generation Systems and Methods (Attorney Docket Number ATSY-0087-00.00US) filed Mar. 31, 2020, which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
63002854 | Mar 2020 | US |